/** * Display the view * * @param string $tpl Template * * @return void */ public function display($tpl = null) { // Initialiase variables. $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->pluginFields = $this->get('PluginHTML'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new RuntimeException(implode("\n", $errors), 500); } $this->addToolbar(); FabrikAdminHelper::setViewLayout($this); $srcs = FabrikHelperHTML::framework(); $srcs['Fabrik'] = FabrikHelperHTML::mediaFile('fabrik.js'); $srcs['Namespace'] = 'administrator/components/com_fabrik/views/namespace.js'; $srcs['PluginManager'] = 'administrator/components/com_fabrik/views/pluginmanager.js'; $srcs['CronAdmin'] = 'administrator/components/com_fabrik/views/cron/admincron.js'; $shim = array(); $dep = new stdClass(); $dep->deps = array('admin/pluginmanager'); $shim['admin/cron/admincron'] = $dep; $opts = new stdClass(); $opts->plugin = $this->item->plugin; $js = array(); $js[] = "\twindow.addEvent('domready', function () {"; $js[] = "\t\tFabrik.controller = new CronAdmin(" . json_encode($opts) . ");"; $js[] = "\t})"; FabrikHelperHTML::iniRequireJS($shim); FabrikHelperHTML::script($srcs, implode("\n", $js)); parent::display($tpl); }
/** * Display the view * * @param string $tpl Template * * @return void */ public function display($tpl = null) { // Initialise variables. $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->pluginFields = $this->get('PluginHTML'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new RuntimeException(implode("\n", $errors), 500); } $this->addToolbar(); FabrikAdminHelper::setViewLayout($this); $source = FabrikHelperHTML::framework(); $source['Fabrik'] = FabrikHelperHTML::mediaFile('fabrik.js'); $source['Namespace'] = 'administrator/components/com_fabrik/views/namespace.js'; $source['PluginManager'] = 'administrator/components/com_fabrik/views/pluginmanager.js'; $source['AdminVisualization'] = 'administrator/components/com_fabrik/views/visualization/adminvisualization.js'; $shim = array(); $dep = new stdClass(); $dep->deps = array('admin/pluginmanager'); $shim['admin/visualization/adminvisualization'] = $dep; FabrikHelperHTML::iniRequireJS($shim); $opts = new stdClass(); $opts->plugin = $this->item->plugin; $js = "\n\tvar options = " . json_encode($opts) . ";\n\t\tFabrik.controller = new AdminVisualization(options);\n"; FabrikHelperHTML::script($source, $js, '-min.js'); parent::display($tpl); }
/** * Display the view * * @param string $tpl template * * @return void */ public function display($tpl = null) { // Initialise variables. $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->js = $this->get('Js'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new RuntimeException(implode("\n", $errors), 500); } $this->addToolbar(); FabrikAdminHelper::setViewLayout($this); // Set up the script shim $shim = array(); $dep = new stdClass(); $dep->deps = array('fab/fabrik'); $shim['admin/pluginmanager'] = $dep; FabrikHelperHTML::iniRequireJS($shim); $srcs = FabrikHelperHTML::framework(); $srcs['Fabrik'] = FabrikHelperHTML::mediaFile('fabrik.js'); $srcs['Namespace'] = 'administrator/components/com_fabrik/views/namespace.js'; $srcs['PluginManager'] = 'administrator/components/com_fabrik/views/pluginmanager.js'; FabrikHelperHTML::script($srcs, $this->js); parent::display($tpl); }
/** * Display the view * * @param string $tpl Template * * @return void */ public function display($tpl = null) { if ($this->getLayout() == 'confirmupdate') { $this->confirmupdate(); return; } // Initialiase variables. $model = $this->getModel(); $this->form = $model->getForm(); $this->item = $model->getItem(); $this->state = $model->getState(); $this->pluginFields = $model->getPluginHTML(); $this->js = $model->getJs(); // Check for errors. if (count($errors = $model->getErrors())) { throw new RuntimeException(implode("\n", $errors), 500); } $this->addToolbar(); $this->parent = $model->getParent(); FabrikAdminHelper::setViewLayout($this); JText::script('COM_FABRIK_ERR_ELEMENT_JS_ACTION_NOT_DEFINED'); $srcs = FabrikHelperHTML::framework(); $srcs['Fabrik'] = FabrikHelperHTML::mediaFile('fabrik.js'); $srcs['NameSpace'] = 'administrator/components/com_fabrik/views/namespace.js'; $srcs['fabrikAdminElement'] = 'administrator/components/com_fabrik/views/element/tmpl/adminelement.js'; $shim = array(); $dep = new stdClass(); $dep->deps = array('admin/pluginmanager'); $shim['admin/element/tmpl/adminelement'] = $dep; $shim['adminfields/tables'] = $dep; $plugManagerDeps = new stdClass(); $plugManagerDeps->deps = array('admin/namespace'); $shim['admin/pluginmanager'] = $plugManagerDeps; FabrikHelperHTML::iniRequireJS($shim); FabrikHelperHTML::script($srcs, $this->js); parent::display($tpl); }
/** * Get JS objects * * @param array $data list data * * @return void */ protected function getManagementJS($data = array()) { $input = $this->app->input; $itemId = FabrikWorker::itemId(); /** @var FabrikFEModelList $model */ $model = $this->getModel(); $params = $model->getParams(); $item = $model->getTable(); $listRef = $model->getRenderContext(); $listId = $model->getId(); $formModel = $model->getFormModel(); $elementsNotInTable = $formModel->getElementsNotInTable(); $toggleCols = (bool) $params->get('toggle_cols', false); $ajax = (int) $model->isAjax(); $ajaxLinks = (bool) $params->get('list_ajax_links', $ajax); $opts = new stdClass(); $pluginManager = FabrikWorker::getPluginManager(); if ($ajaxLinks) { $modalTitle = 'test'; $modalOpts = array('content' => '', 'id' => 'ajax_links', 'title' => JText::_($modalTitle), 'modal' => false, 'expandable' => true); FabrikHelperHTML::jLayoutJs('ajax_links', 'fabrik-modal', (object) $modalOpts); } // Advanced search if ($params->get('advanced-filter')) { $modalOpts = array('content' => '', 'id' => 'advanced-filter', 'title' => JText::_('COM_FABRIK_FIELD_ADVANCED_SEARCH_LABEL'), 'modal' => false, 'expandable' => true); FabrikHelperHTML::jLayoutJs('advanced-filter', 'fabrik-modal', (object) $modalOpts); } FabrikHelperHTML::jLayoutJs('modal-state-label', 'list.fabrik-filters-modal-state-label', $layoutData = (object) array('label' => '', 'displayValue' => '', 'key' => '')); $this->csvJS($opts, $model); if ($model->requiresSlimbox()) { FabrikHelperHTML::slimbox(); } if ($model->requiresSlideshow()) { FabrikHelperHTML::slideshow(); } $src = FabrikHelperHTML::framework(); $shim = array(); $dep = new stdClass(); $dep->deps = array(); $shim['fab/list'] = $dep; $src['FbList'] = FabrikHelperHTML::mediaFile('list.js'); $src['FbListFilter'] = FabrikHelperHTML::mediaFile('listfilter.js'); $src['ListPlugin'] = FabrikHelperHTML::mediaFile('list-plugin.js'); $src = $model->getPluginJsClasses($src, $shim); $pluginManager->runPlugins('loadJavascriptClassName', $model, 'list'); $pluginManager->data = array_filter($pluginManager->data, function ($v) { return $v !== ''; }); $model->getCustomJsAction($src); $tmpl = $model->getTmpl(); $this->tmpl = $tmpl; $model->getListCss(); // Check for a custom js file and include it if it exists $aJsPath = JPATH_SITE . '/components/com_fabrik/views/list/tmpl/' . $tmpl . '/javascript.js'; if (JFile::exists($aJsPath)) { $src['CustomJs'] = 'components/com_fabrik/views/list/tmpl/' . $tmpl . '/javascript.js'; } $origRows = $this->rows; $this->rows = array(array()); $tmpItemid = !isset($itemId) ? 0 : $itemId; $this->_row = new stdClass(); $script = array(); $params = $model->getParams(); $opts->admin = $this->app->isAdmin(); $opts->ajax = $ajax; $opts->ajax_links = $ajaxLinks; $opts->links = array('detail' => $params->get('detailurl', ''), 'edit' => $params->get('editurl', ''), 'add' => $params->get('addurl', '')); $opts->filterMethod = $this->filter_action; $opts->advancedFilters = $model->getAdvancedFilterValues(); $opts->resetFilters = (bool) FabrikWorker::getMenuOrRequestVar('resetfilters', 0, false, 'request'); $opts->form = 'listform_' . $listRef; $this->listref = $listRef; $opts->headings = $model->jsonHeadings(); $labels = $this->headings; foreach ($labels as &$l) { $l = strip_tags($l); } $opts->labels = $labels; $opts->primaryKey = $item->db_primary_key; $opts->Itemid = $tmpItemid; $opts->listRef = $listRef; $opts->formid = $model->getFormModel()->getId(); $opts->canEdit = $model->canEdit() ? '1' : '0'; $opts->canView = $model->canView() ? '1' : '0'; $opts->page = JRoute::_('index.php'); $opts->isGrouped = $this->isGrouped; $opts->toggleCols = $toggleCols; $opts->j3 = FabrikWorker::j3(); $opts->singleOrdering = (bool) $model->singleOrdering(); // Reset data back to original settings $this->rows = $origRows; $formEls = array(); foreach ($elementsNotInTable as $tmpElement) { $oo = new stdClass(); $oo->name = $tmpElement->name; $oo->label = $tmpElement->label; $formEls[] = $oo; } $opts->formels = $formEls; $opts->fabrik_show_in_list = $input->get('fabrik_show_in_list', array(), 'array'); $opts->popup_width = $params->get('popup_width', ''); $opts->popup_height = $params->get('popup_height', ''); $xOffset = $params->get('popup_offset_x', ''); $yOffset = $params->get('popup_offset_y', ''); if ($xOffset !== '') { $opts->popup_offset_x = (int) $xOffset; } if ($yOffset !== '') { $opts->popup_offset_y = (int) $yOffset; } /** * Added the $nodata object as we now weed something to pass in just to keep editLabel * and viewLabel happy, after adding placeholder replacement to the labels for a Pro user, * because the tooltips said we did that, which we never actually did. * * http://fabrikar.com/forums/index.php?threads/placeholders-in-list-links-and-labels.37726/#post-191081 * * However, this means that using placeholders will yield funky labels for the popups, as * this isn't per row. So we may need to not use editLabel / viewLabel here any more, * and just use the default COM_FABRIK_VIEW/EDIT. Or add YAFO's, ::sigh::. * * But for now, it's too corner case to worry about! */ $nodata = new stdClass(); $opts->popup_edit_label = $model->editLabel($nodata); $opts->popup_view_label = $model->viewLabel($nodata); $opts->popup_add_label = $model->addLabel(); $opts->limitLength = $model->limitLength; $opts->limitStart = $model->limitStart; $opts->tmpl = $tmpl; $opts->data = $data; $opts->groupByOpts = new stdClass(); $opts->groupByOpts->isGrouped = (bool) $this->isGrouped; $opts->groupByOpts->collapseOthers = (bool) $params->get('group_by_collapse_others', false); $opts->groupByOpts->startCollapsed = (bool) $params->get('group_by_start_collapsed', false); $opts->groupByOpts->bootstrap = FabrikWorker::j3(); // If table data starts as empty then we need the html from the row // template otherwise we can't add a row to the table ob_start(); $this->_row = new stdClass(); $this->_row->id = ''; $this->_row->class = 'fabrik_row'; echo $this->loadTemplate('row'); $opts->itemTemplate = ob_get_contents(); ob_end_clean(); // $$$rob if you are loading a table in a window from a form db join select record option // then we want to know the id of the window so we can set its showSpinner() method $opts->winid = $input->get('winid', ''); $this->jsText(); $script[] = "window.addEvent('domready', function () {"; $script[] = "\tvar list = new FbList('{$listId}',"; $script[] = "\t" . json_encode($opts); $script[] = "\t);"; $script[] = "\tFabrik.addBlock('list_{$listRef}', list);"; // Add in plugin objects $pluginManager->runPlugins('onLoadJavascriptInstance', $model, 'list'); $aObjs = $pluginManager->data; if (!empty($aObjs)) { $script[] = "list.addPlugins([\n"; $script[] = "\t" . implode(",\n ", $aObjs); $script[] = "]);"; } // @since 3.0 inserts content before the start of the list render (currently on f3 tmpl only) $pluginManager->runPlugins('onGetContentBeforeList', $model, 'list'); $this->pluginBeforeList = $pluginManager->data; $script[] = $model->filterJs; $script[] = $this->getModel()->getElementJs($src); // End domready wrapper $script[] = '})'; $script = implode("\n", $script); FabrikHelperHTML::iniRequireJS($shim); FabrikHelperHTML::script($src, $script); }
/** * Display the list * * @param string $tpl template * * @return void */ public function display($tpl = null) { // Initialise variables. $model = $this->getModel(); $this->form = $this->get('Form'); $this->item = $this->get('Item'); $formModel = $this->get('FormModel'); $formModel->setId($this->item->form_id); $this->state = $this->get('State'); $this->js = $model->getJs(); $this->addToolbar(); if ($this->item->id == 0) { $this->order_by = array(FText::_('COM_FABRIK_AVAILABLE_AFTER_SAVE')); $this->group_by = FText::_('COM_FABRIK_AVAILABLE_AFTER_SAVE'); } else { $this->order_by = array(); $feListModel = $formModel->getListModel(); $orderBys = $feListModel->getOrderBys(); foreach ($orderBys as $orderBy) { $this->order_by[] = $formModel->getElementList('order_by[]', $orderBy, true, false, false, 'id'); } if (empty($this->order_by)) { $this->order_by[] = $formModel->getElementList('order_by[]', '', true, false, false, 'id'); } $orderDir[] = JHTML::_('select.option', 'ASC', FText::_('COM_FABRIK_ASCENDING')); $orderDir[] = JHTML::_('select.option', 'DESC', FText::_('COM_FABRIK_DESCENDING')); $orderdirs = FabrikWorker::JSONtoData($this->item->order_dir, true); $this->order_dir = array(); $attribs = 'class="inputbox" size="1" '; foreach ($orderdirs as $orderdir) { $this->order_dir[] = JHTML::_('select.genericlist', $orderDir, 'order_dir[]', $attribs, 'value', 'text', $orderdir); } if (empty($this->order_dir)) { $this->order_dir[] = JHTML::_('select.genericlist', $orderDir, 'order_dir[]', $attribs, 'value', 'text', ''); } $this->group_by = $formModel->getElementList('group_by', $this->item->group_by, true, false, false); } FabrikAdminHelper::setViewLayout($this); $srcs = FabrikHelperHTML::framework(); $srcs['Fabrik'] = FabrikHelperHTML::mediaFile('fabrik.js'); $srcs['NameSpace'] = 'administrator/components/com_fabrik/views/namespace.js'; $srcs['PluginManager'] = 'administrator/components/com_fabrik/views/pluginmanager.js'; $srcs['AdminList'] = 'administrator/components/com_fabrik/views/list/tmpl/adminlist.js'; $srcs['ListForm'] = 'administrator/components/com_fabrik/views/listform.js'; $srcs['adminFilters'] = 'administrator/components/com_fabrik/views/list/tmpl/admin-filters.js'; $shim = array(); $dep = new stdClass(); $dep->deps = array('admin/pluginmanager'); $shim['admin/list/tmpl/adminlist'] = $dep; $shim['adminfields/tables'] = $dep; FabrikHelperHTML::iniRequireJS($shim); FabrikHelperHTML::script($srcs, $this->js); parent::display($tpl); }