public function get_fieldinfo() { return array('id' => array('name' => 'ID', 'editable' => false, 'sortable' => false, 'in_admintable' => true, 'html_table_element' => 'value', 'html_table_element_param' => array('width' => '20px', 'align' => 'center')), 'user_name' => array('name' => 'Логин', 'editable' => true, 'sortable' => true, 'in_admintable' => true, 'html_edit_element' => 'edit', 'html_table_element' => 'editlink'), 'real_name' => array('name' => 'Настоящее имя', 'editable' => true, 'sortable' => true, 'in_admintable' => true, 'html_edit_element' => 'edit', 'html_table_element' => 'value'), 'state' => array('name' => 'Разрешен', 'editable' => true, 'sortable' => true, 'in_admintable' => true, 'editlink' => true, 'html_edit_element' => 'checkbox', 'html_table_element' => 'status_change', 'html_edit_element_param' => array('tooltip' => 'Активирован')), 'email' => array('name' => 'email адрес', 'editable' => true, 'in_admintable' => true, 'html_edit_element' => 'edit', 'html_table_element' => 'value', 'hide_on' => 'edit'), 'openid' => array('name' => 'Адрес OpenID', 'editable' => false, 'in_admintable' => true, 'html_edit_element' => 'edit', 'html_table_element' => 'value'), 'password' => array('name' => 'Пароль', 'editable' => true, 'in_admintable' => true, 'html_edit_element' => 'extra', 'html_edit_element_param' => array('call_from' => function ($user) { $name = $user->id ? 'new_password' : 'password'; return joosHtml::input(array('name' => $name, 'value' => '', 'class' => 'text_area')); }), 'html_table_element' => 'value'), 'group_multi' => array('name' => 'Состоит в группах', 'editable' => true, 'sortable' => true, 'in_admintable' => false, 'html_edit_element' => 'extra', 'html_edit_element_param' => array('call_from' => 'modelAdminUsers::get_users_group_multi'), 'hide_on' => 'create'), 'register_date' => array('name' => 'Дата регистрации', 'editable' => true, 'in_admintable' => true, 'html_edit_element' => 'value', 'html_table_element' => 'value', 'hide_on' => 'create'), 'lastvisit_date' => array('name' => 'Последнее посещение', 'editable' => true, 'sortable' => true, 'in_admintable' => true, 'html_edit_element' => 'value', 'html_table_element' => 'date_format', 'html_table_element_param' => array('date_format' => 'd F в H:m', 'width' => '200px', 'align' => 'center'), 'hide_on' => 'create'), 'activation' => array('name' => 'Код активации', 'editable' => false, 'in_admintable' => false, 'html_edit_element' => 'edit', 'html_table_element' => 'value')); }
public static function render($element_param, $key, $value, $obj_data, $params) { $element = array(); $element[] = $params['label_begin']; $element[] = joosHtml::label(array('for' => $key), $element_param['name']); $element[] = $params['label_end']; $element[] = $params['el_begin']; $element[] = joosHtml::input(array('name' => $key, 'class' => isset($element_param['html_edit_element_param']['class']) ? $element_param['html_edit_element_param']['class'] : 'input-xlarge', 'size' => 100, 'style' => isset($element_param['html_edit_element_param']['style']) ? $element_param['html_edit_element_param']['style'] : ''), $value); $element[] = $params['el_end']; return implode("\n", $element); }
private static function prepare_extra(joosModel $obj, array $extra_data) { if (self::$data === NULL) { $results = array(); $hidden_elements = array(); $wheres_filter = array('true'); $wheres_search = array(); foreach ($extra_data as $key => $value) { switch ($key) { case 'search': $results[] = joosHtml::label(array('for' => 'search_elements'), 'Поиск'); $search_value = joosSession::get_user_state_from_request("search-" . $obj->get_class_name(), 'search', false); $results[] = joosHtml::input(array('name' => 'search_elements', 'id' => 'search_elements'), $search_value); $hidden_elements[] = joosHtml::hidden('search', $search_value); if ($search_value !== false && joosString::trim($search_value) != '') { foreach ($value as $selected_value) { $wheres_search[] = sprintf('%s LIKE ( %s )', joosDatabase::instance()->get_name_quote($selected_value), joosDatabase::instance()->get_quoted("%" . $search_value . "%")); } } break; case 'filter': foreach ($value as $params_key => $params_value) { $field_name = $params_key; $field_title = $value[$field_name]['name']; $results[] = joosHtml::label(array('for' => 'filter_' . $field_name), $field_title); $datas_for_select = array(-1 => 'Всё сразу'); $datas_for_select += isset($value[$field_name]['call_from']) && is_callable($value[$field_name]['call_from']) ? call_user_func($value[$field_name]['call_from'], $obj, $params_key) : array(); $selected_value = joosSession::get_user_state_from_request('filter-' . '-' . $field_name . '-' . $obj->get_class_name(), $field_name, -1); $selected_value = $selected_value === '0' ? '0' : $selected_value; $results[] = joosHtml::dropdown(array('name' => 'filter_' . $field_name, 'data-obj-name' => $field_name, 'class' => 'filter_elements', 'selected' => $selected_value), $datas_for_select); $hidden_elements[] = joosHtml::hidden($field_name, $selected_value); if ($selected_value && $selected_value != -1 or $selected_value === '0') { $wheres_filter[] = sprintf('%s=%s', joosDatabase::instance()->get_name_quote($field_name), joosDatabase::instance()->get_quoted($selected_value)); } } break; case 'extrafilter': $datas_for_select = array(-1 => 'Всё сразу'); foreach ($value as $params_key => $params_value) { $field_name = $params_key; $datas_for_select += array($params_key => $value[$field_name]['name']); } $selected_value = joosSession::get_user_state_from_request("extrafilter-" . $obj->get_class_name(), 'filter_extrafilter', -1); $results[] = joosHtml::label(array('for' => 'filter_extrafilter'), 'Фильтр'); $results[] = joosHtml::dropdown(array('name' => 'filter_extrafilter_selector', 'class' => 'extrafilter_elements', 'options' => $datas_for_select, 'selected' => $selected_value)); $hidden_elements[] = joosHtml::hidden('filter_extrafilter', $selected_value); //self::$data_overload = ( $selected_value && isset($value[$selected_value]['call_from']) && is_callable($value[$selected_value]['call_from']) ) ? call_user_func($value[$selected_value]['call_from'], $obj) : array(); self::$data_overload = $selected_value && isset($value[$selected_value]['call_from']) && is_callable($value[$selected_value]['call_from']) ? $value[$selected_value]['call_from'] : array(); break; default: break; } } $wheres = array(implode(' AND ', $wheres_filter)); if (count($wheres_search) > 0) { $wheres[] = ' (' . implode(' OR ', $wheres_search) . ' )'; } self::$data = array('for_header' => $results, 'hidden_ellements' => implode("\n", $hidden_elements), 'wheres' => implode(' AND ', $wheres), 'data_overload' => self::$data_overload); } return self::$data; }
public static function checkbox($data, $value = '', $checked = FALSE, $extra = '') { if (!is_array($data)) { $data = array('name' => $data); } $data['type'] = 'checkbox'; if ($checked == TRUE or isset($data['checked']) and $data['checked'] == TRUE) { $data['checked'] = 'checked'; } else { unset($data['checked']); } return joosHtml::input($data, $value, $extra); }