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; }