public function render_editor($node) { $page = dynamic_cast($node, 'Page'); $data = array(); if (_POST('action') == 'save') { $this->def_save_node($data, $page); } $this->fill_def_form_data($data, $page); $avail_types = array('text' => Loc::get('page/type/text'), 'transfer' => Loc::get('page/type/transfer'), 'redirect' => Loc::get('page/type/redirect')); $data['rows'][] = array('id' => 'page_type', 'label' => Loc::get('page/label/page-type'), 'type' => 'dropdown', 'value' => $page->page_type, 'options' => $avail_types); $data['auto_submit'] = array('page_type'); switch ($page->page_type) { case 'transfer': $data['rows'][] = array('id' => 'transfer_path', 'label' => Loc::get('page/label/transfer-path'), 'type' => 'text', 'value' => $page->transfer_path); break; case 'redirect': $data['rows'][] = array('id' => 'redirect_url', 'label' => 'URL', 'type' => 'text', 'value' => $page->redirect_url); break; default: $data['rows'][] = array('id' => 'use_html_editor', 'label' => Loc::get('page/label/use-html-editor'), 'type' => 'checkbox', 'value' => $page->use_html_editor); $data['rows'][] = array('id' => 'content', 'label' => Loc::get('page/label/content'), 'type' => $page->use_html_editor ? 'editor' : 'textarea', 'value' => $page->content); $data['auto_submit'][] = 'use_html_editor'; break; } return $this->render_form($data); }
public function render_editor($node) { $node = dynamic_cast($node, 'User'); $data = array(); if (_POST('action') == 'save') { // TODO: сделать астоматическую чекалку на основе полей 'validate' в $data['rows'] if (strlen(_POST('_img_data')) && strlen(_POST('_chb_data')) && _POST('_img_data') != _POST('_chb_data')) { $data['errors']['_chb_data'] = Loc::get('user/should-be-same-as-password'); } if ((!isset($data['errors']) || !count($data['errors'])) && strlen(_POST('_img_data'))) { $node->pwd_hash = User::password_to_hash(_POST('_img_data')); $data['extra']['update_tree'] = true; } $this->def_save_node($data, $node); } $this->fill_def_form_data($data, $node, Loc::get('user/label/login'), BaseAdminModule::PATH_TYPE_NAME); if (!strlen($node->pwd_hash)) { $data['rows'][] = array('type' => 'html', 'value' => '<span class="err-row">' . Loc::get('user/empty-password') . '</span>'); } $data['rows'][] = array('id' => '_img_data', 'label' => Loc::get('user/label/password'), 'type' => 'password'); $data['rows'][] = array('id' => '_chb_data', 'label' => Loc::get('user/label/confirm-password'), 'type' => 'password', 'validate' => array(array('SValidators.compare', '_img_data'))); return $this->render_form($data); }
public function __wakeup() { $this->child_class = __CLASS__; $this->attr_accessors(array('data' => array('type' => 'keyvalue', 'trim' => true, 'label' => Loc::get('settings/root-title')))); }
public function __wakeup() { $this->child_class = 'CustomListItem'; $this->attr_accessors(array('fields' => array('type' => 'keyvalue', 'trim' => true, 'label' => Loc::get('custom-list/fields')))); }
public function get_new_node_name($node) { return Loc::get('custom-list/new-list'); }
public static function module_install() { self::def_module_install('Settings', Loc::get('settings/root-title'), 'settings', Node::Visible | Node::System); }
protected function check_login() { if (User::is_empty_users()) { return; } if (!_SESSION('logged', false) || _SESSION('logged_ip') != $_SERVER['REMOTE_ADDR']) { $this->vars['error'] = ''; if (_POST('enter')) { $username = strtolower(trim(_POST('data'))); $pwd_hash = User::password_to_hash(trim(_POST('value'))); $user = strlen($username) ? Node::get_by_model_path('User', $username) : null; if ($user != null && $user->pwd_hash == $pwd_hash) { $_SESSION['logged'] = true; $_SESSION['logged_ip'] = $_SERVER['REMOTE_ADDR']; $this->redirect($_SERVER['REQUEST_URI']); return; } else { $this->vars['error'] = Loc::get('cms/admin/invalid-login-or-password'); } } $this->template_name = dirname(__FILE__) . '/login.tpl'; $this->_flow = PAGE_FLOW_RENDER; return; } }
public function def_save_node(&$data, $node, $update_type = 0) { $prev_title = $node->title; $new_node_name = $node->name; if ($update_type != self::UPDATE_TYPE_NONE) { $node->title = trim(_POST('_title')); if ($node->title == '') { $data['errors']['_title'] = Loc::get('forms/validators/required'); } } if ($update_type == self::UPDATE_TYPE_ALL) { $new_node_name = strtolower(trim(_POST('_name'))); if ($new_node_name == '') { $new_node_name = Cms::title_to_name($node->title); } if ($node->title != '' && $new_node_name == '') { $data['errors']['_name'] = Loc::get('forms/validators/required'); } if ($new_node_name != '') { if (!Cms::node_name_is_valid($new_node_name)) { $data['errors']['_name'] = Loc::get('cms/admin/node/invalid_name'); } elseif (!$node->parent_node) { $data['errors']['_name'] = Loc::get('cms/admin/node/not_found_dunno', array($path_prepend)); } else { foreach ($node->parent_node->childs as $nd) { if ($nd->name == $new_node_name && $nd->id != $node->id) { $data['errors']['_name'] = Loc::get('cms/admin/node/exists'); break; } } } } } foreach ($node->accessors as $name => $opts) { if (isset($node->editable_fields[$name]['type']) && $node->editable_fields[$name]['type'] == 'keyvalue') { $do_trim = isset($node->editable_fields[$name]['trim']) && $node->editable_fields[$name]['trim']; $list = $node->{$name} == '' ? array() : SJson::deserialize($node->{$name}); $new_list = array(); for ($i = 0; $i < count($list); $i++) { if (!inPOST("{$name}_rm_{$i}")) { $key = trim(_POST("{$name}_k_{$i}")); if ($key != '') { $value = _POST("{$name}_v_{$i}"); if ($do_trim) { $value = trim($value); } $new_list[$key] = $value; } } } $key = trim(_POST("{$name}_nk")); if ($key != '') { $value = _POST("{$name}_nv"); if ($do_trim) { $value = trim($value); } $new_list[$key] = $value; } $node->{$name} = SJson::serialize($new_list); } elseif (inPOST($name)) { $node->{$name} = _POST($name); } } if (!isset($data['errors']) || !count($data['errors'])) { Node::lock(); $was_new_node = $node->is_new(); if (!$node->position) { $node->position = Node::get_max_position($node->path) + 1; } if ($update_type == self::UPDATE_TYPE_ALL && $new_node_name != $node->name) { $node->rename($new_node_name); $name_updated = true; } else { $node->save(); $name_updated = false; } Node::unlock(); $data['info'] = Loc::get('cms/admin/saved'); if ($node->title != $prev_title || $name_updated) { if ($was_new_node) { $_SESSION['s.cms.admin.just-saved'] = true; header('Location: ' . ROOT . "admin/module.php?node_id={$node->id}"); exit; } $data['extra']['update_tree'] = true; } $data['extra']['select_node'] = $node->id; } }