Перейти к содержимому


Как сделать строку определенную строку в таблице ReadOnly true или false


Сообщений в теме: 23

#1 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 24 Октябрь 2012 - 10:27

Добрый день,

Как сделать строку определенную строку в таблице ReadOnly true или false

Заранее благодарен!

#2 Гость_Roman_*

  • Гости

Отправлено 24 Октябрь 2012 - 10:35

Такое возможно при использовании расширенной системы доступа.

#3 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 24 Октябрь 2012 - 19:17

Просмотр сообщенияRoman (24 Октябрь 2012 - 10:35) писал:

Такое возможно при использовании расширенной системы доступа.

Еще один вопрос уважаемый программист



У меня есть поле типа int и там только значение 1 и 0, типа boolean

как мне задать чтоб если поле = 1 то строку в таблице невозможно редактировать и если поле = 0 то можно редактировать?

#4 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 24 Октябрь 2012 - 22:20

Вы про какие таблицы? Про подчиненные я так понимаю.
Я пытался блокировать строку от изменения в зависимости от значения поля. Стандартными средствами - это не представляется возможным. Если это крайне необходимо, можете помудрить с jquery - удалить class="fast_edit_text" из всех полей строки при значении Вашего поля ReadOnly = 1. Но это делается на стороне клиента, а не сервера, следовательно может найтись умник, который обойдет Вашу защиту.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#5 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 25 Октябрь 2012 - 07:19

Просмотр сообщенияandibrag (24 Октябрь 2012 - 22:20) писал:

Вы про какие таблицы? Про подчиненные я так понимаю.
Я пытался блокировать строку от изменения в зависимости от значения поля. Стандартными средствами - это не представляется возможным. Если это крайне необходимо, можете помудрить с jquery - удалить class="fast_edit_text" из всех полей строки при значении Вашего поля ReadOnly = 1. Но это делается на стороне клиента, а не сервера, следовательно может найтись умник, который обойдет Вашу защиту.

Доброе утро, спасибо за ответ, а этот class="fast_edit_text" где находится? И можете пример привести?

#6 Гость_Roman_*

  • Гости

Отправлено 25 Октябрь 2012 - 08:42

Блокировать javascript-ом, конечно, можно, но как уже сказал andibrag, защищённости это не добавит. Самый идеальный вариант - использовать права доступа. Вместо 1 или 0, написать вычисление, которое бы меняло пользователя на администратора, соответственно шла бы смена прав к конкретной строке. Тем более данный способ не завист от вида таблицы, основная ли она или подчинённая.

#7 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 25 Октябрь 2012 - 08:51

Просмотр сообщенияRoman (25 Октябрь 2012 - 08:42) писал:

Блокировать javascript-ом, конечно, можно, но как уже сказал andibrag, защищённости это не добавит. Самый идеальный вариант - использовать права доступа. Вместо 1 или 0, написать вычисление, которое бы меняло пользователя на администратора, соответственно шла бы смена прав к конкретной строке. Тем более данный способ не завист от вида таблицы, основная ли она или подчинённая.

Уважаемый, Есть ли примеры или команды как это делать?

#8 Гость_Roman_*

  • Гости

Отправлено 25 Октябрь 2012 - 09:11

Для начала настраиваете группы доступа, так чтоб расширенные права действовали на запись. Затем создаёте в таблице поле типа пользователь или группа, настраиваете расширенные права в этом поле. По умолчанию в этом поле должен быть пользователь или группа, для которых доступно редактирование изначально. Если же наступают условия, пр которых должны сменится права, этот момент дополняется вычислением, например:
if ($line['Интерес'] == 'Нет') // Поле "интерес" стало равно "нет"
  {
    $line['Пользователь'] = 1; // Устанавливаем в поле "Пользователь" администратора
  }


#9 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 25 Октябрь 2012 - 09:57

Просмотр сообщенияRoman (25 Октябрь 2012 - 09:11) писал:

Для начала настраиваете группы доступа, так чтоб расширенные права действовали на запись. Затем создаёте в таблице поле типа пользователь или группа, настраиваете расширенные права в этом поле. По умолчанию в этом поле должен быть пользователь или группа, для которых доступно редактирование изначально. Если же наступают условия, пр которых должны сменится права, этот момент дополняется вычислением, например:
if ($line['Интерес'] == 'Нет') // Поле "интерес" стало равно "нет"
  {
	$line['Пользователь'] = 1; // Устанавливаем в поле "Пользователь" администратора
  }

Спасибо огромное, еще один момент у меня в поле таблице "Кто добавил" , "Использовать права доступа" неактивно, чтоб я мог настраивать расширенные права в этом поле. Что делать?

#10 Гость_Roman_*

  • Гости

Отправлено 25 Октябрь 2012 - 10:01

Сначала включите расширенные права в настройках групп доступа.

#11 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 25 Октябрь 2012 - 10:29

Просмотр сообщенияRoman (25 Октябрь 2012 - 09:11) писал:

Для начала настраиваете группы доступа, так чтоб расширенные права действовали на запись. Затем создаёте в таблице поле типа пользователь или группа, настраиваете расширенные права в этом поле. По умолчанию в этом поле должен быть пользователь или группа, для которых доступно редактирование изначально. Если же наступают условия, пр которых должны сменится права, этот момент дополняется вычислением, например:
if ($line['Интерес'] == 'Нет') // Поле "интерес" стало равно "нет"
  {
	$line['Пользователь'] = 1; // Устанавливаем в поле "Пользователь" администратора
  }
Вариант со сменой пользователя и, как следствие, прав мной тоже рассматривался. Стоит тогда упомянуть, что необходимо также поле, которое будет хранить в себе допущенных пользователей из поля Пользователь из Вашего примера. Иначе процесс будет односторонним - если Админ захочет вернуть права на редакцию - возвращать будет некому.
Кроме того, для всех таблиц в базе настройка этих прав крайне утомительная процедура. Особенно, если структура временами меняется.
Javascript более универсальное решение, но действительно незащищенное. Если целью является закрыть поля от случайного редактирование - его вполне хватит, если цель - защита от несанкционированного изменения - стоит повозиться с правами доступа.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#12 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 25 Октябрь 2012 - 10:50

Просмотр сообщенияRoman (25 Октябрь 2012 - 10:01) писал:

Сначала включите расширенные права в настройках групп доступа.

Спсибо огромное, еще один вопрос $line['Пользователь'] = 1; тут 1 это что?

#13 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 25 Октябрь 2012 - 10:58

Просмотр сообщенияTim (25 Октябрь 2012 - 10:50) писал:

Спсибо огромное, еще один вопрос $line['Пользователь'] = 1; тут 1 это что?

Все спасибо я понял!

#14 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 25 Октябрь 2012 - 11:43

Просмотр сообщенияRoman (25 Октябрь 2012 - 10:01) писал:

Сначала включите расширенные права в настройках групп доступа.




Создал 2 группа доступа

1) Администратор - вставил все галочки
2) Менеджеры - убрал все галочки вставил только для просмотра

Создал поле группа тип поля группа в таблице.

В таблице "Кто добавил" поставил фильтр по группе "администратор" и в "Использовать права доступа: " поставил все галочки

В событий кнопки ok в дополнительном написал код

$line['Запрет'] = 'да';

if ($line['Запрет'] == 'Да')
{
$line['Группа'] = 2; // менеджер
}

У меня не получается насчет запрет на редактирование, может где то я что-то пропустил?

Сообщение отредактировал Tim: 25 Октябрь 2012 - 12:00


#15 Гость_Roman_*

  • Гости

Отправлено 25 Октябрь 2012 - 13:32

Во-первых, расширенные права должны стоять там, где пользователь или группа меняется. В Вашем случае в поле "Кто добавил" смены пользователя или группы нет. Права должны быть на поле "Группа". Другой момент заключается в том, что в коде доп. действия по-разному написано слово "Да", регистр здесь имеет значение. Хотя и код можно упростить.
$line['Запрет'] = 'Да';
$line['Группа'] = 2;
Нет смысла проверять значение поля "Запрет", если оно в том же коде выше явно обозночается.

#16 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 25 Октябрь 2012 - 17:02

Просмотр сообщенияRoman (25 Октябрь 2012 - 13:32) писал:

Во-первых, расширенные права должны стоять там, где пользователь или группа меняется. В Вашем случае в поле "Кто добавил" смены пользователя или группы нет. Права должны быть на поле "Группа". Другой момент заключается в том, что в коде доп. действия по-разному написано слово "Да", регистр здесь имеет значение. Хотя и код можно упростить.
 $line['Запрет'] = 'Да'; $line['Группа'] = 2; 
Нет смысла проверять значение поля "Запрет", если оно в том же коде выше явно обозночается.


Есть 3 пользователя

1) администратор

2) пользователь1

3) запретить

Из начальное вставлено галочки на редактирование на поль-ей администратор и пользователь1, в строку "Группа" поле группа для запрета вставлено пользователя (запретить), когда захожу под пользователь1 у меня кнопка редактирование активно, как сделать что после запрета доступ на редактирование, права на редактирование было только у администратора?


Еще момент, вы можете написать как будет реализоваться код через javascript?

Сообщение отредактировал Tim: 26 Октябрь 2012 - 08:14


#17 Гость_Roman_*

  • Гости

Отправлено 26 Октябрь 2012 - 08:30

В поле "Группа" по умолчанию должна быть группа, которой доступно редактирование (в настройках поля это значение можно указать). Чтобы права остались только у администратора, меняете группу.
$line['Группа'] = 1;
1 - это группа доступа администратора. Расширенных прав в этой таблице можно администратору не назначать. Остальным группам необходимо включить расширенные права в настройках групп доступа, убрав галочки на запись. В настройках поля галочки на запись должны стоять.
Javascript выйдет очень большой и выходит за рамки поддержки на форуме.

#18 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 26 Октябрь 2012 - 14:25

Просмотр сообщенияRoman (26 Октябрь 2012 - 08:30) писал:

В поле "Группа" по умолчанию должна быть группа, которой доступно редактирование (в настройках поля это значение можно указать). Чтобы права остались только у администратора, меняете группу.
$line['Группа'] = 1;
1 - это группа доступа администратора. Расширенных прав в этой таблице можно администратору не назначать. Остальным группам необходимо включить расширенные права в настройках групп доступа, убрав галочки на запись. В настройках поля галочки на запись должны стоять.
Javascript выйдет очень большой и выходит за рамки поддержки на форуме.

Я все сделал как вы сказали но у меня идет запрет на весь список. В таблице есть несколько записей. Такой вопрос, поле запрет там значение (да и нет) тип поля (текст), когда поле равно (да) то запретить редактирование для всех пользователей кроме администратора, когда поле равно (нет) то менять всем у кого стоит галочки на редактирование.
Такое возможно с расширенными правами?
Заранее благодарен.

Сообщение отредактировал Tim: 26 Октябрь 2012 - 15:39


#19 Гость_Roman_*

  • Гости

Отправлено 29 Октябрь 2012 - 10:40

Поле типа "Пользователь" или "Группа" всё равно должно быть в таблице. Пишите вычисление на изменение поля "Запрет" по аналогии с доп. действием. Только всё-таки расширенные права у администратора должны быть включены и все галочки на чтение/запись должны стоять. А у группы пользователей должны стоять галочки только на чтение. Галочки на запись должны стоять только в поле, которое определяет расширенные права.

#20 Tim

    Активный участник

  • Пользователи
  • PipPipPip
  • 127 сообщений
  • Пол:Мужчина

Отправлено 29 Октябрь 2012 - 12:44

Просмотр сообщенияRoman (29 Октябрь 2012 - 10:40) писал:

Поле типа "Пользователь" или "Группа" всё равно должно быть в таблице. Пишите вычисление на изменение поля "Запрет" по аналогии с доп. действием. Только всё-таки расширенные права у администратора должны быть включены и все галочки на чтение/запись должны стоять. А у группы пользователей должны стоять галочки только на чтение. Галочки на запись должны стоять только в поле, которое определяет расширенные права.

Я написал в доп.дейс

$line['Запрет'] = 'да';

if ($line['Запрет'] == 'да'){
$line['users'] = 1;
}

У меня администратор и менеджер, в администратор вставлены галочки на расш. прав. в запись и чтение, а у менеджера у меня галочки только на чтение.
при нажатии на кнопку в доп.дейс у меня группа меняется на администратора, и когда я захожу с доступом менеджера у меня поля которые я не запретил тоже не редактируются. Я хочу только поле которую администратор запретил чтоб это поля не менялись. А другие редактировались.

Очень прошу разъяснить мне.
Ссылки на рис.

http://s2.uploads.ru/Fvgl5.jpg
http://s3.uploads.ru/xpcNn.jpg





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных