public function view() { if (isset($_POST['action']['submit'])) { $this->panelErrors = Extension_Dashboard::validatePanelOptions($this->panelType, $this->panelId); if (empty($this->panelErrors)) { $this->panelId = Extension_Dashboard::savePanel(array('id' => $this->panelId, 'label' => $this->panelLabel, 'placement' => $this->panelPlacement, 'type' => $this->panelType), $this->panelConfig); } } else { if (isset($_POST['action']['delete'])) { Extension_Dashboard::deletePanel($this->panelId); $this->_Result->setAttribute('id', $this->panelId); $this->_Result->setAttribute('placement', $this->panelPlacement); return; } } if (isset($this->panelId) && !empty($this->panelId)) { $this->panelConfig = Extension_Dashboard::getPanel($this->panelId); $this->panelLabel = $this->panelConfig['label']; $this->panelPlacement = $this->panelConfig['placement']; } if (isset($_POST['action']['submit']) && empty($this->panelErrors)) { $html = Extension_Dashboard::buildPanelHTML($this->panelConfig); $class = $html->getAttribute('class'); $html->setAttribute('class', $class . ' new-panel'); $this->_Result->setAttribute('id', $this->panelId); $this->_Result->setAttribute('placement', $this->panelPlacement); $this->_Result->setValue(sprintf('<![CDATA[%s]]>', $html->generate())); } else { $this->addHeaderToPage('Content-Type', 'text/html'); $container = new XMLElement('form'); $container->setAttribute('id', 'save-panel'); $container->appendChild(new XMLElement('div', NULL, array('class' => 'top'))); $heading = new XMLElement('h3', __('Configuration') . ' <span>' . (isset($this->panelLabel) ? $this->panelLabel : __('Untitled Panel')) . '<span>'); $container->appendChild($heading); $config_options = Extension_Dashboard::buildPanelOptions($this->panelType, $this->panelId, $this->panelErrors); $primary = new XMLElement('div', NULL, array('class' => 'panel-config')); $fieldset = new XMLElement('fieldset', NULL, array('class' => 'settings')); $legend = new XMLElement('legend', __('General')); $fieldset->appendChild($legend); $group = new XMLElement('div', NULL, array('class' => 'group')); $group->appendChild(Widget::Label(__('Name'), Widget::Input('label', $this->panelLabel))); $group->appendChild(Widget::Label(__('Placement'), Widget::Select('placement', array(array('primary', $this->panelPlacement == 'primary', __('Main content')), array('secondary', $this->panelPlacement == 'secondary', __('Sidebar')))))); $fieldset->appendChild($group); $primary->appendChild($fieldset); if ($config_options) { $primary->appendChild($config_options); } $actions = new XMLElement('div', NULL, array('class' => 'actions')); $actions->appendChild(Widget::Input('action[submit]', __('Save Panel'), 'submit', array('class' => 'button create'))); $actions->appendChild(Widget::Input('action[cancel]', __('Cancel'), 'submit')); if ($this->panelId) { $actions->appendChild(new XMLElement('button', __('Delete Panel'), array('class' => 'delete', 'name' => 'action[delete]'))); } $primary->appendChild($actions); $primary->appendChild(Widget::Input('id', $this->panelId, 'hidden')); $primary->appendChild(Widget::Input('type', $this->panelType, 'hidden')); $container->appendChild($primary); if (Symphony::isXSRFEnabled()) { $container->prependChild(XSRF::formToken()); } $this->_Result = $container; } }