Example #1
0
 public function createComponentFormNewMenuItem($name)
 {
     $form = new LiveForm($this, $name);
     $form->addGroup('Add new item');
     $form->addText('title', 'Title')->addRule(Form::FILLED, 'Please enter a name.');
     $form->addRadioList('link_type', 'Link type', array('internal' => 'internal', 'external' => 'external'))->setDefaultValue('internal');
     $pages = $this->model('pages')->getPairs();
     $temp = array();
     if (isset($pages[""])) {
         $temp = $pages[""];
         unset($pages[""]);
     }
     $pages = array('none' => $temp) + $pages;
     unset($temp);
     $categories = $this->model('categories')->getPairs('slug', 'title');
     $items = array('homepagelink' => 'Link to Homepage');
     foreach (array('none' => 'none') + $categories as $cat_slug => $cat_title) {
         if ($cat_title != 'none') {
             $items[$cat_slug] = 'cat: ' . $cat_title;
         }
         if (isset($pages[$cat_title])) {
             foreach ($pages[$cat_title] as $page_title => $data) {
                 if ($cat_title == 'none') {
                     $items[$data->page_slug] = 'page ' . $page_title;
                 } else {
                     $items[$cat_slug . '/' . $data->page_slug] = 'article in ' . $cat_title . ': ' . $page_title;
                 }
             }
         }
     }
     $form->addSelect('internal_url', 'Page', $items)->addRule(Form::FILLED, 'Please select a page.');
     $form->addText('external_url', 'Link')->addConditionOn($form['link_type'], Form::EQUAL, 'external')->addRule(Form::FILLED, 'Please enter a link')->addRule(Form::URL, 'Please enter a valid link');
     $items = $this->model('menuItems')->getByMenuId($this->menu->id)->fetchPairs('id_level', 'title');
     $items = array_merge(array('0;0' => 'none'), $items);
     $form->addSelect('parent_data', 'Parent', $items);
     $form->addButton('btnClose', 'Close');
     $form->addSubmit('save', 'Add')->onClick[] = array($this, 'formNewMenuItemSubmitted');
     $form['save']->getControlPrototype()->class('ajax');
     return $form;
 }