/** * Edit User profile * * @return void */ public function _default() { // load dictionaries $this->dict->get_wordarray(array('form', 'login', 'users', 'profile')); // get object $user = new User_model(); $u = $user->get_by_id($_SESSION['xuid']); // build the form $fields = array(); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $u->id, 'name' => 'id'); $lmod = new Language_model(); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix"><div class="one-half xs-one-whole">'); $fields[] = array('label' => _LANGUAGE, 'type' => 'select', 'value' => $u->lang, 'options' => array($lmod->get_alanguages(1), 'code', 'language'), 'name' => 'lang', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half xs-one-whole">'); $fields[] = array('label' => _USERNAME, 'type' => 'text', 'value' => $u->username, 'name' => 'username', 'suggestion' => _USERNAME_RULE, 'rule' => 'required|alphanumeric|minlength§5', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<h4 class="acenter">' . _PASSWORD_CHANGE_MSG . '</h4>'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix"><div class="one-half xs-one-whole">'); $fields[] = array('label' => _PASSWORD, 'type' => 'password', 'value' => '', 'name' => 'password', 'suggestion' => _PASSWORD_RULE, 'rule' => 'alphanumeric|minlength§5', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half xs-one-whole">'); $fields[] = array('label' => _REPEAT_PASSWORD, 'type' => 'password', 'value' => '', 'name' => 'password2', 'rule' => 'equal-password', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); $fields[] = array('label' => _DESCRIPTION, 'type' => 'textarea', 'value' => $u->description, 'name' => 'description', 'sanitize' => 'string', 'rule' => 'required'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix"><div class="one-half xs-one-whole">'); $fields[] = array('label' => _EMAIL, 'type' => 'text', 'value' => $u->mail, 'name' => 'mail', 'rule' => 'required|mail', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half xs-one-whole">'); $fields[] = array('label' => _PHONE, 'type' => 'text', 'value' => $u->phone, 'name' => 'phone', 'rule' => 'phone', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); // if submitted if (X4Route_core::$post) { $e = X4Validation_helper::form($fields, 'profile'); if ($e) { $this->profiling($_POST); } else { $this->notice($fields); } die; } // get page $page = $this->get_page('profile'); // content $view = new X4View_core('container'); $view->content = new X4View_core('editor'); $view->content->close = false; $view->content->page = $page; // form builder $view->content->title = _EDIT_PROFILE; $view->content->form = '<div class="band"><div class="one-third push-one-third sm-one-whole sm-push-none">' . X4Form_helper::doform('profile', $_SERVER["REQUEST_URI"], $fields, array(_RESET, _SUBMIT, 'buttons'), 'post', '', 'onclick="setForm(\'profile\');"') . '</div></div>'; $view->render(TRUE); }
/** * Admin area home page * This page displays Notices and Bookmarks * * @param string $start_page URL of first page to load * @param string $start_title Title of first page to load * @return void */ public function start($start_page = 'home-dashboard', $start_title = 'Home') { // load dictionaries $this->dict->get_wordarray(array('home')); // get page $page = $this->get_page('home'); $view = new X4View_core(X4Utils_helper::set_tpl('x3ui')); $view->page = $page; $view->menus = $this->site->get_menus(1); $view->start_page = str_replace('-', '/', $start_page); $view->start_title = urldecode($start_title); // languages $mod = new Language_model(); $view->langs = $mod->get_alanguages($page->id_area); $view->render(TRUE); }
/** * Show dictionary words by Language code, Area name and key * * @param string $code Language code * @param string $area Area name * @param string $what Dictionary key * @return void */ public function keys($code = '', $area = 'public', $what = '', $str = '') { // load dictionary $this->dict->get_wordarray(array('dictionary')); $area_mod = new Area_model(); list($id_area, $areas) = $area_mod->get_my_areas(2); if ($id_area != 2) { $area = $area_mod->get_var($id_area, 'areas', 'name'); } if (empty($str)) { $code = empty($code) ? X4Route_core::$lang : $code; // get page $page = $this->get_page('dictionary/keys'); // content $view = new X4View_core('container'); $view->content = new X4View_core('languages/words'); $view->content->page = $page; // keys $dict = new Dictionary_model(); $keys = $dict->get_keys($code, $area); $view->content->keys = $keys; // check empty what if (empty($what) && !empty($keys)) { $what = $keys[0]->what; } $view->content->items = $dict->get_words($code, $area, $what); $view->content->what = $what; $view->content->str = ''; // area switcher $view->content->area = $area; $view->content->areas = $areas; // language switcher $view->content->lang = $code; $lang = new Language_model(); $view->content->langs = $lang->get_languages(); header('Content-Type: text/html; charset=utf-8'); $view->render(TRUE); } else { $this->search($code, $area, $what, $str); } }
/** * Show pages * As default display public area pages * Display all child pages of a given page * If the page is the home of the area, then you also view the home * * @param integer $id_area Area ID * @param string $lang language code * @param string $xfrom page URL of origin * @return void */ public function index($id_area, $lang = '', $xfrom = 'home') { $area = new Area_model(); list($id_area, $areas) = $area->get_my_areas($id_area); // initialize parameters $lang = empty($lang) ? X4Route_core::$lang : $lang; $xfrom = str_replace('§', '/', urldecode($xfrom)); // load dictionary $this->dict->get_wordarray(array('pages')); $view = new X4View_core('container'); // content $view->content = new X4View_core('pages/pages'); //$view->page = $this->get_page('pages'); // content $mod = new Page_model($id_area, $lang); $view->content->id_area = $id_area; $view->content->lang = $lang; $view->content->xfrom = $xfrom; $view->content->area = $mod->get_var($id_area, 'areas', 'name'); $obj = $mod->get_page($xfrom); $view->content->page = $obj ? $obj : new Page_obj($id_area, $lang); $page = $this->get_page('pages'); $navbar = array($this->site->get_bredcrumb($page), array('areas' => 'index')); $view->content->navbar = $navbar; // referer $view->content->referer = urlencode('pages/index/' . $id_area . '/' . $lang . '/' . $xfrom); // pages to show $view->content->pages = $mod->get_pages($xfrom, $view->content->page->deep); // available menus $mod = new Menu_model(); $view->content->menus = $mod->get_menus($id_area, '', 'id'); // language switcher $lang = new Language_model(); $view->content->langs = $lang->get_languages(); // area switcher $view->content->areas = $areas; $view->render(TRUE); }
/** * Change a language with another * If for whatever reason you need to exchange two languages you can call this script * Both languages have to been set in the system * /admin/languages/switch_languages/OLD_LANG/NEW_LANG * * @param string $old_lang Language code you want to replace * @param string $new_lang Language code you want to set * @return string */ public function switch_languages($old_lang, $new_lang) { // Comment the next row to enable the method die('Operation disabled!'); // extra tables // if you want to add extra table to change insert them in this this array $tables = array('articles', 'categories', 'contexts', 'dictionary', 'pages', 'users'); if ($old_lang != $new_lang) { $mod = new Language_model(); $chk1 = $mod->get_language_by_code($old_lang); $chk2 = $mod->get_language_by_code($new_lang); if ($chk1 && $chk2) { // get areas $areas = $mod->get_all('areas'); echo '<h1>START SWITCHING LANUAGES FROM ' . $old_lang . ' TO ' . $new_lang . '!</h1>'; $opt = array('FAILED', 'DONE'); foreach ($areas as $a) { echo '<p>AREA: ' . $a->name . '</p><ul>'; // here you can select an area to exclude foreach ($tables as $t) { $res = $mod->switch_languages($a->id, $t, $old_lang, $new_lang); echo '<li>TABLE: ' . $t . ' => ' . $res[1] . '</li>'; } echo '</ul>'; } echo '<h1>FINISHED!</h1>'; echo '<p>The changes on the database are applied.</p>'; echo '<p>The number after each table is the number of changes. Please check if there are errors.</p>'; // print instructions for manual changes echo '<p>NOTE: After this operation you could want to change the default language for each area.</p>'; } else { echo '<h1>WARNING!</h1>'; echo '<p>One or both languages are not in the languages table.</p>'; } } else { echo '<h1>WARNING!</h1>'; echo '<p>The old language "' . $old_lang . '" and the new language "' . $new_lang . '" are equal.</p>'; } die; }
/** * New / Edit article form * The form is simplified if site use simple editing * * @param integer $id_area Area ID * @param string $lang Language code * @param integer $code_context Context code * @param string $bid, the unique ID of articles * @param integer $id_page Page ID (for simple editing) * @param boolean $duplicate Duplicate article resetting bid * @return void */ public function edit($id_area = 2, $lang = '', $code_context = 0, $bid = 0, $id_page = 0, $duplicate = 0) { // set language $lang = empty($lang) ? X4Route_core::$lang : $lang; // load dictionaries $this->dict->get_wordarray(array('form', 'articles')); // referer $qs = X4Route_core::get_query_string(); $referer = isset($qs['ref']) ? $qs['ref'] : ''; $mod = new Article_model(); // simple editing if ($id_page && $bid != 'x3') { $bid = $mod->get_bid_by_id_page($id_page); } // get object $item = $bid && $bid != 'x3' ? $mod->get_by_bid($bid) : new Article_obj($id_area, $lang, $code_context); // dedicated page when called from composer if ($bid == 'x3') { $item->id_page = $id_page; } // if duplicate reset bid if ($duplicate) { $item->name = _COPY_OF . ' ' . $item->name; $item->bid = $mod->get_new_bid(); } // build the form $fields = array(); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band double-inner-pad clearfix"><div id="left-box" class="four-fifth md-three-fourth sm-two-third xs-one-whole">'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $referer, 'name' => 'from'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->bid, 'name' => 'bid'); $lmod = new Language_model(); if ($id_page == 0 || $bid == 'x3') { // advanced editing // area $amod = new Area_model(); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band clearfix"><div class="one-fourth sm-one-half pad-right xs-one-whole xs-pad-none">'); $fields[] = array('label' => _AREA, 'type' => 'select', 'value' => $item->id_area, 'options' => array($amod->get_areas(), 'id', 'name'), 'name' => 'id_area', 'extra' => 'class="large spinner spin2"'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => 'module|' . BASE_URL . 'articles/refresh_module|id_area', 'name' => 'spinner1_data'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-fourth sm-one-half pad-right xs-one-whole sm-pad-none">'); // language $fields[] = array('label' => _LANGUAGE, 'type' => 'select', 'value' => $item->lang, 'options' => array($lmod->get_languages(), 'code', 'language'), 'name' => 'lang', 'extra' => 'class="large spinner spin2"'); // value = id_to_update|url|ids_to_get $fields[] = array('label' => null, 'type' => 'hidden', 'value' => 'code_context|' . BASE_URL . 'articles/refresh_context|id_area|lang', 'name' => 'spinner2_data'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-fourth sm-one-half pad-right xs-one-whole xs-pad-none">'); // contexts $cmod = new Context_model(); $fields[] = array('label' => _CONTEXT, 'type' => 'select', 'value' => $item->code_context, 'options' => array($cmod->get_contexts($item->id_area, $item->lang), 'code', 'name'), 'name' => 'code_context', 'extra' => 'class="large spin2"'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->code_context, 'name' => 'old_context'); // value = id_to_update|url|ids_to_get $fields[] = array('label' => null, 'type' => 'hidden', 'value' => 'id_page|' . BASE_URL . 'articles/refresh_pages|id_area|lang|code_context', 'name' => 'spinner3_data'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-fourth sm-one-half xs-one-whole">'); $fields[] = array('label' => _PAGE, 'type' => 'select', 'value' => $item->id_page, 'options' => $item->id_page ? array($cmod->get_pages($item->id_area, $item->lang, 1), 'id', 'name') : array(), 'name' => 'id_page', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); } else { // simple editing // hidden fields $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->id_area, 'name' => 'id_area'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->lang, 'name' => 'lang'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->code_context, 'name' => 'code_context'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->code_context, 'name' => 'old_context'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->id_page, 'name' => 'id_page'); } // classification section $fields[] = array('label' => _NAME, 'type' => 'text', 'value' => stripslashes($item->name), 'name' => 'name', 'rule' => 'required', 'extra' => 'class="large"'); // content $fields[] = array('label' => _CONTENT, 'type' => 'textarea', 'value' => $item->content, 'name' => 'content'); if (EDITOR_SCRIPTS) { // content $fields[] = array('label' => _SCRIPT, 'type' => 'textarea', 'value' => htmlentities($item->js), 'name' => 'js', 'extra' => 'class="NoEditor"', 'suggestion' => _SCRIPT_MSG); } else { $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->js, 'name' => 'js'); } // plugin section $fields[] = array('label' => null, 'type' => 'html', 'value' => '<h3>' . _PLUGIN . '</h3> <div class="band clearfix"><div class="one-half pad-right">'); $plugin = new X4Plugin_model(); // for APC $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->module, 'name' => 'old_module'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->param, 'name' => 'old_param'); $fields[] = array('label' => _MODULE, 'type' => 'select', 'value' => $item->module, 'options' => array($plugin->get_modules($id_area, 0), 'name', 'description', ''), 'name' => 'module', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half pad-left">'); $fields[] = array('label' => _PARAM, 'type' => 'text', 'value' => $item->param, 'name' => 'param', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div></div> <div id="right-box" class="one-fifth md-one-fourth sm-one-third xs-one-whole xs-hidden">'); // time window section $fields[] = array('label' => null, 'type' => 'html', 'value' => '<h2>' . _TIME_WINDOW . '</h2><div class="band clearfix inner-pad"><div class="one-half sm-one-whole">'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $item->date_in, 'name' => 'old_date_in'); $fields[] = array('label' => _START_DATE, 'type' => 'text', 'value' => date('Y-m-d', $item->date_in), 'name' => 'date_in', 'rule' => 'required|date', 'extra' => 'class="date date_toggled large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half sm-one-whole">'); $fields[] = array('label' => _END_DATE, 'type' => 'text', 'value' => $item->date_out == 0 ? '' : date('Y-m-d', $item->date_out), 'name' => 'date_out', 'rule' => 'date', 'extra' => 'class="date date_toggled large"', 'suggestion' => _NO_END_MSG); // classification section $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div><h2>' . _ORGANIZATION . '</h2>'); // categories $camod = new Category_model(); $fields[] = array('label' => _CATEGORY, 'type' => 'select', 'value' => $item->category, 'options' => array($camod->get_categories($item->id_area, $item->lang), 'name', 'description', 0), 'name' => 'category', 'extra' => 'class="large"'); // xkeys $fields[] = array('label' => _KEYS, 'type' => 'text', 'value' => $item->xkeys, 'name' => 'xkeys', 'extra' => 'class="large"'); // tags $fields[] = array('label' => _TAGS, 'type' => 'text', 'value' => $item->tags, 'name' => 'tags', 'extra' => 'class="large"'); // author $fields[] = array('label' => _AUTHOR, 'type' => 'text', 'value' => empty($item->author) ? $_SESSION['mail'] : $item->author, 'name' => 'author', 'rule' => 'required', 'extra' => 'class="large"'); if (EDITOR_OPTIONS) { // options section $fields[] = array('label' => null, 'type' => 'html', 'value' => '<h2>' . _OPTIONS . '</h2> <div class="band clearfix"> <div class="one-half sm-one-whole">'); $fields[] = array('label' => _SHOW_AUTHOR, 'type' => 'checkbox', 'value' => $item->show_author, 'name' => 'show_author', 'checked' => $item->show_author); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half sm-one-whole">'); $fields[] = array('label' => _SHOW_DATE, 'type' => 'checkbox', 'value' => $item->show_date, 'name' => 'show_date', 'checked' => $item->show_date); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half sm-one-whole">'); $fields[] = array('label' => _SHOW_TAGS, 'type' => 'checkbox', 'value' => $item->show_tags, 'name' => 'show_tags', 'checked' => $item->show_tags); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half sm-one-whole">'); $fields[] = array('label' => _SHOW_ACTIONS, 'type' => 'checkbox', 'value' => $item->show_actions, 'name' => 'show_actions', 'checked' => $item->show_actions); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); } $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); /* // TODO: maybe in the future $fields[] = array( 'label' => _SCHEMA, 'type' => 'textarea', 'value' => $item->xschema, 'name' => 'xschema', 'extra' => 'class="mceNoEditor"' ); */ // if submitted if (X4Route_core::$post) { $e = X4Validation_helper::form($fields, 'editor'); if ($e) { $this->editing($item, $_POST); } else { $this->notice($fields); } die; } // content $view = new X4View_core('tabber'); $view->tabs = array(); $view->down = new X4View_core('editor'); $view->down->close = false; // Set the navbar $page = $this->get_page('articles/edit'); $ref = isset($_SESSION['referer']) ? $_SESSION['referer'] : 'index/' . $id_area . '/' . $lang; $navbar = array($this->site->get_bredcrumb($page), array('articles' => $ref)); $pmod = new Page_model(); if ($id_page && $bid != 'x3') { // simple editing $page = $pmod->get_by_id($id_page); $view->title = _CONTENT_EDITOR . ' <a class="bta" href="' . BASE_URL . 'pages/index/' . $page->id_area . '/' . $page->lang . '/' . $page->xfrom . '/1" title="' . _GO_BACK . '">' . stripslashes($page->name) . '</a>' . _TRAIT_ . $lang; $view->down->js = ''; } else { // generic back $back = '<a class="bta" href="' . BASE_URL . 'pages/index/' . $id_area . '/' . $lang . '/home/1" title="' . _GO_BACK . '">' . _PAGES . '</a>'; if ($bid) { if ($item->id_page) { // back to the right page $page = $pmod->get_by_id($item->id_page); $back = ADVANCED_EDITING ? '<a class="bta" href="' . BASE_URL . 'sections/compose/' . $page->id . '" title="' . _GO_BACK . '">' . stripslashes($page->name) . '</a>' : '<a class="bta" href="' . BASE_URL . 'pages/index/' . $page->id_area . '/' . $page->lang . '/' . $page->xfrom . '/1" title="' . _GO_BACK . '">' . stripslashes($page->name) . '</a>'; } $view->title = $back . _TRAIT_ . _EDIT_ARTICLE . _TRAIT_ . $lang; } else { $view->title = $back . _TRAIT_ . _ADD_ARTICLE . _TRAIT_ . $lang; } $view->down->js = ' <script> window.addEvent("domready", function() { if ($chk($("spinner1_data"))) { var sdata = $("spinner1_data").get("value").split("|"); spinnerize(sdata, ".spinner"); } if ($chk($("spinner2_data"))) { var sdata = $("spinner2_data").get("value").split("|"); spinnerize(sdata, ".spinner"); } if ($chk($("spinner3_data"))) { var sdata = $("spinner3_data").get("value").split("|"); spinnerize(sdata, ".spin2"); } }); </script> '; } $view->down->js .= ' <script> window.addEvent("domready", function() { X3.content("filters","articles/filter/' . $id_area . '/' . $lang . '", "' . addslashes(X4Utils_helper::navbar($navbar, ' . ')) . '"); buttonize("tabber", "bta", "topic"); pickerize(1); $("module").addEvent("change", function(event, target){ event.preventDefault(); v = this.get("value"); if (v.length == 0) { $("param").set("value", ""); } else { X3.modal("", "' . _ARTICLE_PARAM_SETTING . '", "' . BASE_URL . 'articles/param/' . $id_area . '/' . $lang . '/"+v); } }); $("param").addEvent("focus", function(event, target){ event.preventDefault(); m = $("module").get("value"); if (m != "") { v = this.get("value"); X3.modal("", "' . _ARTICLE_PARAM_SETTING . '", "' . BASE_URL . 'articles/param/' . $id_area . '/' . $lang . '/"+m+"/"+v); } }); }); </script>'; // form builder $view->down->form = X4Form_helper::doform('editor', $_SERVER["REQUEST_URI"], $fields, array(_RESET, _SUBMIT, 'buttons'), 'post', '', 'onclick="setForm(\'editor\', \'content\');"'); $view->down->tinymce = new X4View_core('tinymce'); $view->down->tinymce->id_area = $id_area; // rtl if ($lmod->rtl($lang)) { $view->down->tinymce->rtl = 1; } $view->render(TRUE); }
/** * New / Edit category form (use Ajax) * * @param integer $id_area Area ID * @param integer $id Category ID * @return void */ public function edit($id_area, $lang, $tag = '', $id = 0) { // load dictionaries $this->dict->get_wordarray(array('form', 'categories')); // handle id $chk = false; if ($id < 0) { $id = 0; $chk = true; } // get object $mod = new Category_model(); $m = $id ? $mod->get_by_id($id) : new Category_obj($id_area, $lang, $tag); // build the form $fields = array(); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $id, 'name' => 'id'); if (MULTIAREA) { $amod = new Area_model(); $fields[] = array('label' => _AREA, 'type' => 'select', 'value' => $m->id_area, 'options' => array($amod->get_areas(), 'id', 'name'), 'name' => 'id_area', 'extra' => 'class="large"'); } else { $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $m->id_area, 'name' => 'id_area'); } if (MULTILANGUAGE) { $lmod = new Language_model(); $fields[] = array('label' => _LANGUAGE, 'type' => 'select', 'value' => $m->lang, 'options' => array($lmod->get_languages(), 'code', 'language'), 'name' => 'lang', 'extra' => 'class="large"'); } else { $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $m->lang, 'name' => 'lang'); } $fields[] = array('label' => _TITLE, 'type' => 'text', 'value' => $m->title, 'name' => 'title', 'rule' => 'required', 'extra' => 'class="large"'); $fields[] = array('label' => _CATEGORY_TAG, 'type' => 'text', 'value' => $m->tag, 'name' => 'tag', 'extra' => 'class="large"', 'suggestion' => _CATEGORY_TAG_MSG); // if submitted if (X4Route_core::$post) { $e = X4Validation_helper::form($fields, 'editor'); if ($e) { $this->editing($id, $_POST); } else { $this->notice($fields); } die; } // content $view = new X4View_core('editor'); $view->title = $id ? _EDIT_CATEGORY : _ADD_CATEGORY; // form builder $view->form = X4Form_helper::doform('editor', $_SERVER["REQUEST_URI"], $fields, array(_RESET, _SUBMIT, 'buttons'), 'post', '', 'onclick="setForm(\'editor\');"'); $view->js = ''; if ($id > 0 || $chk) { $view->render(TRUE); } else { return $view->render(); } }
/** * New / Edit user form (use Ajax) * * @param integer $id User ID (if 0 then is a new item) * @param integer $id_group Group ID (if 0 then is a new item) * @return void */ public function edit($id, $id_group = 0) { // load dictionaries $this->dict->get_wordarray(array('form', 'login', 'users')); $lang = X4Route_core::$lang; // get object $user = new User_model(); $u = $id ? $user->get_by_id($id) : new User_obj($id_group, $lang); // get group $group = new Group_model(); $g = $group->get_by_id($u->id_group, 'groups', 'id_area, name'); // build the form $fields = array(); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $u->id_group, 'name' => 'id_group'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $g->id_area, 'name' => 'id_area'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<h4>' . _GROUP . ': ' . $g->name . '</h4>'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix"><div class="one-half xs-one-whole">'); // languages $lmod = new Language_model(); $fields[] = array('label' => ucfirst(_LANGUAGE), 'type' => 'select', 'value' => $u->lang, 'options' => array($lmod->get_languages(), 'code', 'language'), 'name' => 'lang', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half xs-one-whole">'); $fields[] = array('label' => _USERNAME, 'type' => 'text', 'value' => $u->username, 'name' => 'username', 'suggestion' => _USERNAME_RULE, 'rule' => 'required|minlength§6|alphanumeric', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); // password if ($id) { $fields[] = array('label' => null, 'type' => 'html', 'value' => '<h4 class="acenter zerom">' . _PASSWORD_CHANGE_MSG . '</h4>'); $rule = ''; } else { // for a new user you must insert a password $rule = 'required|'; } $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix"><div class="one-half xs-one-whole">'); $fields[] = array('label' => _PASSWORD, 'type' => 'password', 'value' => '', 'name' => 'password', 'suggestion' => _PASSWORD_RULE, 'rule' => $rule . 'minlength§6|alphanumeric', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half xs-one-whole">'); $fields[] = array('label' => _REPEAT_PASSWORD, 'type' => 'password', 'value' => '', 'name' => 'password2', 'rule' => $rule . 'equal-password', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); $fields[] = array('label' => _DESCRIPTION, 'type' => 'textarea', 'value' => $u->description, 'name' => 'description', 'sanitize' => 'string', 'rule' => 'required'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix"><div class="one-half xs-one-whole">'); $fields[] = array('label' => _EMAIL, 'type' => 'text', 'value' => $u->mail, 'name' => 'mail', 'rule' => 'required|mail', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half xs-one-whole">'); $fields[] = array('label' => _PHONE, 'type' => 'text', 'value' => $u->phone, 'name' => 'phone', 'rule' => 'phone', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div><div class="band inner-pad clearfix"><div class="one-half xs-one-whole">'); $fields[] = array('label' => _LEVEL, 'type' => 'select', 'value' => $u->level, 'options' => array($user->get_levels(), 'id', 'name'), 'name' => 'level', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div><div class="one-half xs-one-whole">'); // permissions on areas $perm = new Permission_model(); $area = new Area_model(); $fields[] = array('label' => _DOMAIN, 'type' => 'select', 'value' => X4Utils_helper::obj2array($perm->get_aprivs($id), null, 'id_area'), 'options' => array($area->get_areas($g->id_area, false), 'id', 'name'), 'multiple' => 4, 'name' => 'domain', 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div></div>'); // if submitted if (X4Route_core::$post) { $e = X4Validation_helper::form($fields, 'editor'); if ($e) { $this->editing($id, $_POST); } else { $this->notice($fields); } die; } // contents $view = new X4View_core('editor'); $view->title = $id ? _EDIT_USER : _ADD_USER; // form builder $view->form = X4Form_helper::doform('editor', $_SERVER["REQUEST_URI"], $fields, array(_RESET, _SUBMIT, 'buttons'), 'post', '', 'onclick="setForm(\'editor\');"'); $view->render(TRUE); }
/** * Register SEO form data * * @access private * @param integer $id_area Area ID * @param array $_post _POST array * @return void */ private function editing_seo_data($id_area, $_post) { $msg = null; // check permission $msg = AdmUtils_helper::chk_priv_level($_SESSION['xuid'], 'areas', $id_area, 2); if (is_null($msg)) { // handle _POST $c = 0; $post = array(); while (isset($_post['id_' . $c])) { $post[$_post['id_' . $c]] = array('title' => $_post['title_' . $c], 'description' => $_post['description_' . $c], 'keywords' => $_post['keywords_' . $c]); $c++; } // areas data relating to SEO are stored in 'alang' $mod = new Language_model(); // enable logs if (LOGS && DEVEL) { $mod->set_log(true); } $result = $mod->update_seo_data($post); $msg = AdmUtils_helper::set_msg($result); // set what update if ($result[1]) { $msg->update[] = array('element' => 'topic', 'url' => BASE_URL . 'areas/index/1', 'title' => null); } } $this->response($msg); }