Admin Admin
Сообщения : 74 Очки : 71 Дата регистрации : 2010-08-23
| Тема: Установление ограничения на доступ к полям формы, часть III Ср Сен 08, 2010 6:58 pm | |
| Как и во второй части все примеры на основе созданного модуля new_Lt. 1. В файле vardefs.php вставляем следующий код: - Код:
-
'date_sub' => array ( 'name' => 'date_sub', 'vname' => 'LBL_DATE_MODIFIED', 'type' => 'varchar', 'massupdate'=>false, 'len' =>'25', 'function' => array('name'=>'GetHtmlDateModified', 'returns'=>'html', 'include'=>'modules/new_Lt/new_LtRole.php'), ), 2. Т.к. в предыдущем файле идет ссылка на функцию файла 'modules/new_Lt/new_LtRole.php', то создаем такой файл со следующим содержимым: - Код:
-
function GetHtmlDateModified($focus, $field, $value, $view) { global $role_to_check; if (isset($_REQUEST['date_sub'])) { $focus->date_sub = $_REQUEST['date_sub']; }
global $current_user; require_once("modules/ACLRoles/ACLRole.php"); $acl_role_obj = new ACLRole(); $user_roles = $acl_role_obj->getUserRoles($current_user->id); $user_in_role = FALSE;
foreach ($user_roles as $role) { if ($role == $role_to_check) { $user_in_role = TRUE; break; } }
if (!isset($focus->date_sub)) $focus->date_sub = date("d.m.Y"); if($view == 'EditView' || $view == 'MassUpdate') { if ($user_in_role) { // показываем стандартное поле $html .= '<input autocomplete="off" name="date_sub" id="date_sub" value="'.$focus->date_sub.'" title="" size="11" maxlength="10" tabindex="1" type="text"> <img src="themes/default/images/jscalendar.gif" alt="Enter Date" id="date_sub_trigger" align="absmiddle" border="0"> <script type="text/javascript" language="javascript"> Calendar.setup ({ inputField : "date_sub", daFormat : "%d.%m.%Y %H:%M", button : "date_sub_trigger", singleClick : true, dateStr : "", step : 1 } ); </script>'; } else{ //Здесь Ваш html $html = "Доступ закрыт";} return $html; } return $focus->date_sub; }
3. В файл New_Lt.php добавляем: - Код:
-
var $date_sub;
На форму поле выносим стандартным образом. Либо через студию, либо в editviewdefs.php добавляем: - Код:
-
1 => array ( 'name' => 'date_sub', 'label' => 'LBL_DATE_MODIFIED', ),
То же и с формой просмотра. 4. Repair модуля И так, в базе поле будет полем типа varchar. Если сделать его типом date, то шуга будет сообщение об ограничении прав доступа показывать внутри поля date на форме. Если надо работать в базе именно с датой (а не просто показывать введенную), то есть следующее решение: создать еще одно поле (типа date) и туда присваивать данные из поля date_sub(varchar), но для этого в файле New_Lt.php придется писать процедуру обработки даты из типа шуги в тип mysql. | |
|