Установление ограничения на доступ к полям формы, часть III

Первая часть
Вторая часть
   
Как и во второй части все примеры на основе созданного модуля 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.


Раздел: Веб-Разработка Рубрика: SugarCRM


Добавлена: 23-01-2009 | Изменена: 23-01-2009 | Пользователем: olga | Просмотров: 4573


Оставить комментарий



        
        

Капча *

                 Captcha
                          

        

Комментарий будет опубликован после проверки модератором

Для подсветки синтаксиса исходный код следует обрамлять следующими тэгами
<pre><code class="синтаксис" >код</code></pre>
Подерживаются следующие: cpp php javascript sql html-xml css ini