Exemplo n.º 1
0
 protected function _preSave()
 {
     $this->_bumpAddOnVersionId();
     $templateForHooks = $this->getExtraData(self::EXTRA_DATA_TEMPLATE_FOR_HOOKS);
     if ($templateForHooks !== null) {
         // this extra data has been set somehow
         $this->set('template_for_hooks', $templateForHooks);
     }
     if ($this->get('widget_id') and !empty($this->_newData['xf_widget'])) {
         WidgetFramework_Helper_LayoutEditor::keepWidgetChanges($this->get('widget_id'), $this, $this->_newData['xf_widget']);
     }
     parent::_preSave();
 }
Exemplo n.º 2
0
 protected function _addWidgets_addWidgetToWidgetsByGroup(array &$newWidget, array &$widgets, $groupPrefix = '')
 {
     $group = '';
     if (!empty($newWidget['tab_group'])) {
         $group = $newWidget['tab_group'];
         foreach ($widgets as &$widgetRef) {
             if (empty($widgetRef['name']) or !isset($widgetRef['widgets'])) {
                 // not a group
                 continue;
             }
             if ($group === $widgetRef['name']) {
                 $widgetRef['widgets'][$newWidget['widget_id']] =& $newWidget;
                 return true;
             } elseif (strpos($group, $widgetRef['name']) === 0) {
                 $added = $this->_addWidgets_addWidgetToWidgetsByGroup($newWidget, $widgetRef['widgets'], $widgetRef['name']);
                 if ($added) {
                     return true;
                 }
             }
         }
     }
     $preparedWidget = array('widgets' => array(), 'widget_id' => $newWidget['widget_id'], 'position' => $newWidget['position'], 'widget_page_id' => $newWidget['widget_page_id'], 'tab_group' => $newWidget['tab_group'], 'display_order' => $newWidget['display_order']);
     $groupWithoutPrefix = substr($group, strlen($groupPrefix));
     $groupWithoutPrefix = trim($groupWithoutPrefix, '/');
     if (empty($groupWithoutPrefix)) {
         $preparedWidget['name'] = $newWidget['tab_group'];
         $preparedWidget['widgets'][$newWidget['widget_id']] = $newWidget;
     } else {
         $groupPrefixParts = WidgetFramework_Helper_LayoutEditor::splitGroupParts($groupPrefix);
         $groupWithoutPrefixParts = WidgetFramework_Helper_LayoutEditor::splitGroupParts($groupWithoutPrefix);
         $groupPrefixParts[] = array_shift($groupWithoutPrefixParts);
         $groupPrefixAppended = implode('/', $groupPrefixParts);
         $preparedWidget['name'] = $groupPrefixAppended;
         $preparedWidget['tab_group'] = $groupPrefixAppended;
     }
     $nameParts = WidgetFramework_Helper_LayoutEditor::splitGroupParts($preparedWidget['name']);
     $nameLastPart = array_pop($nameParts);
     $preparedWidget['isColumns'] = strpos($nameLastPart, 'column') === 0;
     $preparedWidget['isRows'] = strpos($nameLastPart, 'row') === 0;
     $preparedWidget['isRandom'] = strpos($nameLastPart, 'random') === 0;
     $preparedWidget['isTabs'] = !$preparedWidget['isColumns'] && !$preparedWidget['isRows'] && !$preparedWidget['isRandom'];
     $widgets[$newWidget['widget_id']] = $preparedWidget;
     if (!empty($preparedWidget['widgets'])) {
         return true;
     } else {
         return $this->_addWidgets_addWidgetToWidgetsByGroup($newWidget, $widgets, $groupPrefix);
     }
 }
Exemplo n.º 3
0
 public function actionDelete()
 {
     $widgetId = $this->_input->filterSingle('widget_id', XenForo_Input::UINT);
     $widget = $this->_getWidgetOrError($widgetId);
     if ($this->isConfirmedPost()) {
         /** @var WidgetFramework_DataWriter_Widget $dw */
         $dw = XenForo_DataWriter::create('WidgetFramework_DataWriter_Widget');
         $dw->setExistingData($widgetId);
         $dw->delete();
         $link = XenForo_Link::buildAdminLink('widgets');
         $widgetPageId = $dw->getExisting('widget_page_id');
         if (!empty($widgetPageId)) {
             $link = XenForo_Link::buildAdminLink('widget-pages/edit', array('node_id' => $widgetPageId));
         }
         $notLink = XenForo_Link::buildAdminLink('full:widgets/delete', $widget);
         $link = $this->getDynamicRedirectIfNot($notLink, $link);
         if ($this->_input->filterSingle('_layoutEditor', XenForo_Input::UINT)) {
             $changedRenderedId = WidgetFramework_Helper_LayoutEditor::getChangedRenderedId($dw);
             $viewParams = array('changedRenderedId' => $changedRenderedId);
             return $this->responseView('WidgetFramework_ViewAdmin_Widget_Save', '', $viewParams);
         } else {
             return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $link);
         }
     } else {
         $viewParams = array('widget' => $widget, '_layoutEditor' => $this->_input->filterSingle('_layoutEditor', XenForo_Input::UINT));
         return $this->responseView('WidgetFramework_ViewAdmin_Widget_Delete', 'wf_widget_delete', $viewParams);
     }
 }
Exemplo n.º 4
0
 public function renderJson()
 {
     return XenForo_ViewRenderer_Json::jsonEncodeForOutput(array('hasRenderData' => count($this->_params['changedRenderedId']) > 0 ? 1 : 0, '_getRender' => 1, '_renderedIds' => implode(',', $this->_params['changedRenderedId']), 'saveMessage' => new XenForo_Phrase('wf_widget_saved_successfully'), 'changes' => WidgetFramework_Helper_LayoutEditor::getWidgetChanges()));
 }