protected function commonSettingList(Request $request, $settingGroup = null) { $criteria = []; if (null !== $settingGroup) { $criteria = ['settingGroup' => $settingGroup]; } /* * Manage get request to filter list */ $listManager = $this->createEntityListManager('RZ\\Roadiz\\Core\\Entities\\Setting', $criteria, ['name' => 'ASC']); $listManager->handle(); $this->assignation['filters'] = $listManager->getAssignation(); $settings = $listManager->getEntities(); $this->assignation['settings'] = []; foreach ($settings as $setting) { $form = $this->buildShortEditForm($setting); $form->handleRequest($request); if ($form->isValid() && $form->getData()['id'] == $setting->getId()) { try { $this->editSetting($form->getData(), $setting); $msg = $this->getTranslator()->trans('setting.%name%.updated', ['%name%' => $setting->getName()]); $this->publishConfirmMessage($request, $msg); } catch (EntityAlreadyExistsException $e) { $this->publishErrorMessage($request, $e->getMessage()); } if (null !== $settingGroup) { return $this->redirect($this->generateUrl('settingGroupsSettingsPage', ['settingGroupId' => $settingGroup->getId()])); } else { return $this->redirect($this->generateUrl('settingsHomePage')); } } $document = null; if ($setting->getType() == NodeTypeField::DOCUMENTS_T) { $document = SettingsBag::getDocument($setting->getName()); } $this->assignation['settings'][] = ['setting' => $setting, 'form' => $form->createView(), 'document' => $document]; } return null; }
/** * @return array $assignation */ public function prepareBaseAssignation() { parent::prepareBaseAssignation(); /* * Use kernel DI container to delay API requuests */ $this->themeContainer = $this->getContainer(); $this->assignation['themeServices'] = $this->themeContainer; /* * Switch this to true to use uncompressed JS and CSS files */ $this->assignation['head']['backDevMode'] = false; //Settings $this->assignation['head']['siteTitle'] = SettingsBag::get('site_name') . ' backstage'; $this->assignation['head']['mapsStyle'] = SettingsBag::get('maps_style'); $this->assignation['head']['mainColor'] = SettingsBag::get('main_color'); $this->assignation['head']['googleClientId'] = SettingsBag::get('google_client_id') ? SettingsBag::get('google_client_id') : ""; $this->assignation['head']['themeName'] = static::$themeName; $this->themeContainer['nodeTree'] = function ($c) { if (is_object($this->getUser())) { $parent = $this->getUser()->getChroot(); } else { $parent = null; } return new NodeTreeWidget($this->getRequest(), $this, $parent); }; $this->themeContainer['tagTree'] = function ($c) { return new TagTreeWidget($this->getRequest(), $this); }; $this->themeContainer['folderTree'] = function ($c) { return new FolderTreeWidget($this->getRequest(), $this); }; $this->themeContainer['maxFilesize'] = function ($c) { return min(intval(ini_get('post_max_size')), intval(ini_get('upload_max_filesize'))); }; $this->themeContainer['grunt'] = function ($c) { return include dirname(__FILE__) . '/static/public/config/assets.config.php'; }; $this->themeContainer['settingGroups'] = function ($c) { return $this->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\SettingGroup')->findBy(['inMenu' => true], ['name' => 'ASC']); }; $this->themeContainer['adminImage'] = function ($c) { /* * Get admin image */ return SettingsBag::getDocument('admin_image'); }; $this->assignation['nodeStatuses'] = ['draft' => Node::DRAFT, 'pending' => Node::PENDING, 'published' => Node::PUBLISHED, 'archived' => Node::ARCHIVED, 'deleted' => Node::DELETED]; return $this; }