示例#1
0
 public function edit_home_page($id = null)
 {
     if ($this->is_back()) {
         return false;
     }
     $counts = 5;
     $all_clearances = array('' => '---') + array_flip(Base_AclCommon::get_clearance(true));
     $home_pages = array('' => '---');
     $current_clearance = 0;
     $form = $this->init_module('Libs_QuickForm');
     $theme = $this->init_module('Base_Theme');
     $theme->assign('labels', array('and' => '<span class="joint">' . __('and') . '</span>', 'or' => '<span class="joint">' . __('or') . '</span>', 'caption' => $id ? __('Edit Home Page') : __('Add Home Page'), 'clearance' => __('Clearance requried'), 'fields' => __('Fields allowed'), 'crits' => __('Criteria required'), 'add_clearance' => __('Add clearance'), 'add_or' => __('Add criteria (or)'), 'add_and' => __('Add criteria (and)')));
     $tmp = Base_HomePageCommon::get_home_pages();
     $home_pages = array();
     foreach ($tmp as $k => $v) {
         $home_pages[$k] = _V($k);
     }
     // ****** - translating home_page options
     $form->addElement('select', 'home_page', __('Target Home Page'), array('' => '---') + $home_pages);
     if ($id) {
         $page = DB::GetOne('SELECT home_page FROM base_home_page WHERE id=%d', array($id));
         $form->setDefaults(array('home_page' => $page));
     }
     $form->addRule('home_page', __('Field required'), 'required');
     for ($i = 0; $i < $counts; $i++) {
         $form->addElement('select', 'clearance_' . $i, __('Clearance'), $all_clearances);
     }
     $i = 0;
     $clearances = DB::GetAssoc('SELECT id, clearance FROM base_home_page_clearance WHERE home_page_id=%d', array($id));
     foreach ($clearances as $v) {
         $form->setDefaults(array('clearance_' . $i => $v));
         $i++;
     }
     $current_clearance = max($i - 1, 0);
     if ($form->validate()) {
         DB::StartTrans();
         $vals = $form->exportValues();
         $clearances = array();
         for ($i = 0; $i < $counts; $i++) {
             if ($vals['clearance_' . $i]) {
                 $clearances[] = $vals['clearance_' . $i];
             }
         }
         if ($id !== null) {
             DB::Execute('DELETE FROM base_home_page_clearance WHERE home_page_id=%d', array($id));
             DB::Execute('UPDATE base_home_page SET home_page=%s WHERE id=%d', array($vals['home_page'], $id));
         } else {
             $prio = DB::GetOne('SELECT MAX(priority) FROM base_home_page') + 1;
             DB::Execute('INSERT INTO base_home_page (home_page,priority) VALUES (%s, %d)', array($vals['home_page'], $prio));
             $id = DB::Insert_ID('base_home_page', 'id');
         }
         foreach ($clearances as $c) {
             DB::Execute('INSERT INTO base_home_page_clearance (home_page_id, clearance) VALUES (%d, %s)', array($id, $c));
         }
         DB::CompleteTrans();
         return false;
     }
     $form->add_error_closing_buttons();
     $form->assign_theme('form', $theme);
     $theme->assign('counts', $counts);
     $theme->display('edit_home_pages');
     load_js('modules/Base/HomePage/edit_home_pages.js');
     eval_js('base_home_page__init_clearance(' . $current_clearance . ', ' . $counts . ')');
     eval_js('base_home_page__initialized = true;');
     Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href());
     Base_ActionBarCommon::add('delete', __('Cancel'), $this->create_back_href());
     return true;
 }