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