Пример #1
0
 /**
  * Get widget object.
  *
  * @return Widget||null
  */
 public function getWidget()
 {
     if ($this->type !== Manager::PACKAGE_TYPE_WIDGET) {
         return null;
     }
     $data = $this->getData();
     if (empty($data['widget_id'])) {
         return null;
     }
     return Widget::findFirstById($data['widget_id']);
 }
Пример #2
0
 /**
  * Widget options.
  *
  * @return void
  *
  * @Route("/widget-options", methods={"GET", "POST"}, name="admin-pages-widget-options")
  */
 public function widgetOptionsAction()
 {
     $widgetIndex = $this->request->get('widget_index', 'int', -1);
     if ($widgetIndex != '0' && intval($widgetIndex) == 0) {
         $widgetIndex = -1;
     }
     $currentPageWidgets = $this->session->get('admin-pages-manage', []);
     if ($widgetIndex == -1) {
         $widgetIndex = $this->session->get('admin-pages-widget-index');
         $currentPageWidgets[$widgetIndex] = ['widget_index' => $widgetIndex, 'id' => 0, 'layout' => $this->request->get('layout', 'string', 'middle'), 'widget_id' => $this->request->get('widget_id', 'int'), 'params' => []];
     }
     if (empty($currentPageWidgets[$widgetIndex])) {
         return;
     }
     $widgetData = $currentPageWidgets[$widgetIndex];
     $id = $widgetData['id'];
     $widgetParams = $widgetData['params'];
     $widgetParams['content_id'] = $id;
     $widget_id = $widgetData['widget_id'];
     $widgetMetadata = Widget::findFirstById($widget_id);
     $form = new CoreForm();
     // building widget form
     $adminForm = $widgetMetadata->admin_form;
     if (empty($adminForm)) {
         $form->addText('title');
     } elseif ($adminForm == 'action') {
         $widgetName = $widgetMetadata->name;
         if ($widgetMetadata->module !== null) {
             $widgetClass = '\\' . ucfirst($widgetMetadata->module) . '\\Widget\\' . $widgetName . '\\Controller';
         } else {
             $widgetClass = '\\Widget\\' . $widgetName . '\\Controller';
         }
         $widgetController = new $widgetClass();
         $widgetController->setDefaults($widgetName, ucfirst($widgetMetadata->module), $widgetParams);
         $widgetController->prepare();
         $form = $widgetController->adminAction();
     } else {
         $form = new $adminForm();
     }
     if ($widgetMetadata->is_paginated == 1) {
         $form->addText('count', 'Items count', null, 10);
         $form->setOrder('count', 1000);
     }
     if ($widgetMetadata->is_acl_controlled == 1) {
         $form->addMultiSelect('roles', 'Roles', null, Role::find(), null, ['using' => ['id', 'name']]);
         $form->setOrder('roles[]', 1001);
     }
     // set form values
     if (!empty($widgetParams)) {
         $form->setValues($widgetParams);
     }
     if (!$this->request->isPost() || !$form->isValid()) {
         $this->view->form = $form;
         $this->view->id = $id;
         $this->view->name = $widgetMetadata->name;
         return;
     }
     $currentPageWidgets[$widgetIndex]['params'] = $form->getValues();
     $this->resolveModal(['hide' => true, 'customJs' => 'setEditedWidgetIndex(' . $widgetIndex . ');']);
     $this->session->set('admin-pages-manage', $currentPageWidgets);
     $this->session->set('admin-pages-widget-index', ++$widgetIndex);
 }