actions['reoder_form'] = 'doReoderForm'; $this->actions['reoder_save'] = 'doReoderSave'; $this->actions['chng_showing_in_list'] = 'doChngShowingInList'; $this->DB_Grid($Page, $DBObj); } function _getNewForm() { $form = parent::_getNewForm(); $form->setDefaults(array('show_in_list' => 'y')); return $form; } function fieldValid($fields) { $errorMsgs = array(); $isValidValid = true; switch ($fields['type']) { case 'header': if (count($fields['valid'])){ $isValidValid = false; } break; case 'select': case 'checkboxes': case 'radioboxes': if (!isset($fields['value'])){ $errorMsgs['value'] = 'The valid options are required for this field type'; } case 'file': case 'checkbox': if (in_array('email', (array)$fields['valid']) ){ $isValidValid = false; } break; default: break; } if (!$isValidValid){ $errorMsgs['valid'] = 'This field type cannot be validated in this way'; } if (count($errorMsgs)){ return $errorMsgs; }else { return true; } } function _bindFormFields($form) { $form = parent::_bindFormFields($form); $form->addFormRule(array(&$this, 'fieldValid') ); $form->removeElement('sorter'); $form->removeElement('type'); // $form->addElement('header', 'label', 'Label'); require_once 'class/DB/Lang/DLang.php'; $DLang = new DLang(); $langList = $DLang->getList(); if (count($langList) > 1){ $form->addElement('header', 'title_header', 'Label'); } foreach ($langList as $lang){ if (count($langList) == 1){ $title_error = 'Label is required'; $title = 'Label'; }else{ $title_error = $lang['title'] . ' label is required'; $title = $lang['title']; } $name = "label[{$lang['name']}]"; $form->addElement('text', $name, $title, array('value' => $this->DBObj->getData($name)) ); $form->addRule($name, $title_error, 'required'); } $type = Form::createElement('select', 'type', 'Type', $this->DBObj->getTypes(), array('onChange' => 'showNode(this.value);') ); $type->setValue($this->DBObj->getData('type')); $form->addElement($type); $valid = Form::createElement('advmultiselect', 'valid', 'Validation', $this->DBObj->getValidators(), array('size' => 7) ); $template = ' {javascript} {label_2}  {label_3} {unselected} {add}
{remove}

{moveup}
{movedown} {selected} '; $valid->setElementTemplate($template); // $valid->setValue(array('one_of_set', 'email')); if (is_array($this->DBObj->getData('valid'))){ $valid->setValue((array)$this->DBObj->getData('valid')); } $form->addElement($valid); $form->removeElement('id_fm'); $form->addElement('hidden', 'id_fm', $this->DBObj->id_fm); $languageList = $DLang->getList(); if(count($languageList) > 1) { $arrTitle = $languageList; } else { $arrTitle = array(array('name'=>$DLang->getDefault(), 'title' => 'Values')); } $form->addElement('grid', 'value', 'Valid Options', $arrTitle, $this->DBObj->getData('value')); $form->removeElement('show_in_list'); $field_type = 'text'; if ($this->DBObj->getData('type')) { $field_type = $this->DBObj->getData('type'); } $show_in_list =& Form::createElement('advcheckbox', 'show_in_list', 'Show in list of submissions', '', null, array('n', 'y')); $show_in_list->setValue($this->DBObj->getData('show_in_list') ); $form->addElement($show_in_list); return $form; } function addLink() { $addLink = array( 'tpl' => 'center_link.tpl', 'link_list' => array( array('link' => Session::getData(PARENT_PAGE, 'back_path'), 'title' => '<< Back to Form Mail'), array('link' => Constant::get('BASE_URL').'/'.CURR_PAGE.'?action=reoder_form&id_fm='.$this->DBObj->id_fm, 'title' => 'Reorder '.$this->DBObj->itemName.'s', ), array('link' => Constant::get('BASE_URL').'/'.CURR_PAGE.'?action=new&id_fm='.$this->DBObj->id_fm, 'title' => 'Add new '.$this->DBObj->itemName,), ), ); $this->Doc->addContent($addLink); } function _doListBind(&$DB_List) { $DB_List->def_order_by = 'sorter'; $DB_List->urlVarNames[] = 'id_fm'; $DB_List->insertColLast('label', array('title' => 'Label', 'order_by' => 'label', 'width' => '150', 'tpl' => DB_LIST_CELL_TEXT, 'default_text' => "empty label", 'params' => array('label'), )); $DB_List->insertColLast('type', array('title' => 'Type' , 'order_by' => $this->DBObj->tableName.'.type', 'width' => '150', 'tpl' => DB_LIST_CELL_TEXT, 'default_text' => "empty type", 'params' => array('type'), )); $DB_List->insertColLast('show_in_list', array('title' => 'Show in list', 'order_by' => 'show_in_list', 'width' => '150', 'tpl' => DB_LIST_CELL_LINK, 'default_text' => "empty type", 'url' => CURR_PAGE.'?action=chng_showing_in_list&id=', 'params' => array('id', 'show_in_list_title'), )); $DB_List->insertColLast('options', array('title' => 'Options', 'width' => '150', 'tpl' => DB_LIST_CELL_EDIT_DEL, 'edit_link' => Constant::get('BASE_URL').'/'.CURR_PAGE.'?action=edit&id=', 'del_link' => Constant::get('BASE_URL').'/'.CURR_PAGE.'?action=del&id=', 'params' => array('id'), )); $DB_List->bind(); return true; } function _getReorderFrom() { $form = $this->_getBaseForm(); $list = array(); $list4Grid = $this->DBObj->getList4Grid(array('order_by' => 'sorter')); foreach ($list4Grid['list'] as $val) { $list[$val['id']] = $val['label']; } $orderList = Form::createElement('select_edit', 'order_list', false, $list); $orderList->delAction('add'); $orderList->delAction('del'); $orderList->delAction('edit'); $form->addElement($orderList) ; $form->addElement('hidden', 'id_fm', $this->DBObj->id_fm); return $form; } function doReoderForm() { $form = $this->_getReorderFrom(); $this->setFormTitle($form, 'Reorder '.$this->DBObj->itemName.'s'); $form->addElement('hidden', 'action', 'reoder_save') ; $form->exec(); } function doReoderSave() { $form = $this->_getReorderFrom(); $this->DBObj->reorder( $form->getElementValue('order_list') ); $this->doBack(); } function doChngShowingInList() { $this->DBObj->chngShowingInList(); $this->doBack(); } } ?>