Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 public function __wakeup()
 {
     $this->child_class = __CLASS__;
     $this->attr_accessors(array('data' => array('type' => 'keyvalue', 'trim' => true, 'label' => Loc::get('settings/root-title'))));
 }
Esempio n. 4
0
 public function __wakeup()
 {
     $this->child_class = 'CustomListItem';
     $this->attr_accessors(array('fields' => array('type' => 'keyvalue', 'trim' => true, 'label' => Loc::get('custom-list/fields'))));
 }
Esempio n. 5
0
 public function get_new_node_name($node)
 {
     return Loc::get('custom-list/new-list');
 }
Esempio n. 6
0
 public static function module_install()
 {
     self::def_module_install('Settings', Loc::get('settings/root-title'), 'settings', Node::Visible | Node::System);
 }
Esempio n. 7
0
 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;
     }
 }