/** * Edit an element */ function edit() { global $_PROFILER; JDEBUG ? $_PROFILER->mark('edit: start') : null; $app =& JFactory::getApplication(); $user =& JFactory::getUser(); $db =& JFactory::getDBO(); $acl =& JFactory::getACL(); $model =& JModel::getInstance('element', 'FabrikModel'); if ($this->_task == 'edit') { $cid = JRequest::getVar('cid', array(0), 'method', 'array'); $cid = array((int) $cid[0]); } else { $cid = array(0); } $model->setId($cid[0]); $row =& $model->getElement(); if ($cid) { $row->checkout($user->get('id')); } // get params definitions $params =& $model->getParams(); require_once JPATH_COMPONENT . DS . 'views' . DS . 'element.php'; $pluginManager =& JModel::getInstance('Pluginmanager', 'FabrikModel'); $db->setQuery("SELECT COUNT(*) FROM #__fabrik_groups"); $total = $db->loadResult(); if ($total == 0) { $app->redirect("index.php?option=com_fabrik&c=group&task=new", JText::_('PLEASE CREATE A GROUP BEFORE CREATING AN ELEMENT')); return; } $lists = array(); if ($cid[0] != '0') { $aEls = array(); $aGroups = array(); $db->setQuery("SELECT form_id FROM #__fabrik_formgroup AS fg\n" . "WHERE fg.group_id = {$row->group_id}"); $formrow = $db->loadObject(); if (is_null($formrow)) { $aEls[] = $aGroups[] = JText::_('GROUP MUST BE IN A FORM'); } else { $formModel = JModel::getInstance('form', 'FabrikModel'); $formModel->setId($formrow->form_id); //get available element types $groups =& $formModel->getGroupsHiarachy(); foreach ($groups as $groupModel) { $group =& $groupModel->getGroup(); $o = new stdClass(); $o->label = $group->name; $o->value = "fabrik_trigger_group_group" . $group->id; $aGroups[] = $o; $elementModels =& $groupModel->getMyElements(); foreach ($elementModels as $elementModel) { $o = new stdClass(); $element =& $elementModel->getElement(); $o->label = FabrikString::getShortDdLabel($element->label); $o->value = "fabrik_trigger_element_" . $elementModel->getFullName(false, true, false); $aEls[] = $o; } } } asort($aEls); $o = new StdClass(); $o->groups = $aGroups; $o->elements = array_values($aEls); $lists['elements'] = $o; } else { // set the publish default to 1 $row->state = '1'; $lists['elements'] = array(JText::_('AVAILABLE ONCE SAVED')); } JDEBUG ? $_PROFILER->mark('edit: after element types') : null; $pluginManager->getPlugInGroup('validationrule'); $pluginManager->loadPlugInGroup('element'); $j = new JRegistry(); $lists['jsActions'] = $model->getJSActions(); //merge the js attribs back into the array foreach ($lists['jsActions'] as $js) { $j->loadINI($js->attribs); $a = $j->toArray(); foreach ($a as $k => $v) { $js->{$k} = $v; } unset($js->attribs); } $no_html = JRequest::getBool('no_html', 0); // Create the form $form = new fabrikParams('', JPATH_COMPONENT . DS . 'models' . DS . 'element.xml'); $form->bind($row); $form->loadINI($row->attribs); $row->parent_id = (int) $row->parent_id; if ($row->parent_id === 0) { $lists['parent'] = 0; } else { $sql = "SELECT * FROM #__fabrik_elements WHERE id = " . (int) $row->parent_id; $db->setQuery($sql); $parent = $db->loadObject(); if (is_null($parent)) { //perhaps the parent element was deleted? $lists['parent'] = 0; $row->parent_id = 0; } else { $lists['parent'] = $parent; } } JDEBUG ? $_PROFILER->mark('view edit: start') : null; if ($no_html != 1) { FabrikViewElement::edit($row, $pluginManager, $lists, $params, $form); } }