00001 <?php
00002
00015 import('lib.pkp.classes.controllers.listbuilder.MultipleListsListbuilderHandler');
00016
00017 class BlockPluginsListbuilderHandler extends MultipleListsListbuilderHandler {
00021 function BlockPluginsListbuilderHandler() {
00022 parent::MultipleListsListbuilderHandler();
00023 $this->addRoleAssignment(
00024 ROLE_ID_PRESS_MANAGER,
00025 array('fetch')
00026 );
00027 }
00028
00032 function authorize(&$request, $args, $roleAssignments) {
00033 import('classes.security.authorization.OmpPressAccessPolicy');
00034 $this->addPolicy(new OmpPressAccessPolicy($request, $roleAssignments));
00035 return parent::authorize($request, $args, $roleAssignments);
00036 }
00037
00041 function initialize(&$request) {
00042 parent::initialize($request);
00043 AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
00044
00045
00046 $this->setTitle('manager.setup.layout.blockManagement');
00047 $this->setSaveFieldName('blocks');
00048
00049
00050 $nameColumn = new ListbuilderGridColumn($this, 'name', 'common.name');
00051
00052
00053 $this->addList(new ListbuilderList('leftContext', 'manager.setup.layout.leftSidebar'));
00054 $this->addList(new ListbuilderList('unselected', 'manager.setup.layout.unselected'));
00055 $this->addList(new ListbuilderList('rightContext', 'manager.setup.layout.rightSidebar'));
00056
00057 import('controllers.listbuilder.settings.BlockPluginsListbuilderGridCellProvider');
00058 $nameColumn->setCellProvider(new BlockPluginsListbuilderGridCellProvider());
00059 $this->addColumn($nameColumn);
00060 }
00061
00062
00063
00064
00065
00069 function setListsData($request, $filter) {
00070 $leftBlockPlugins = $disabledBlockPlugins = $rightBlockPlugins = array();
00071 $plugins =& PluginRegistry::loadCategory('blocks');
00072 foreach ($plugins as $key => $junk) {
00073 if (!$plugins[$key]->getEnabled() || $plugins[$key]->getBlockContext() == '') {
00074 if (count(array_intersect($plugins[$key]->getSupportedContexts(), array(BLOCK_CONTEXT_LEFT_SIDEBAR, BLOCK_CONTEXT_RIGHT_SIDEBAR))) > 0) $disabledBlockPlugins[$key] =& $plugins[$key];
00075 } else switch ($plugins[$key]->getBlockContext()) {
00076 case BLOCK_CONTEXT_LEFT_SIDEBAR:
00077 $leftBlockPlugins[$key] =& $plugins[$key];
00078 break;
00079 case BLOCK_CONTEXT_RIGHT_SIDEBAR:
00080 $rightBlockPlugins[$key] =& $plugins[$key];
00081 break;
00082 }
00083 }
00084
00085 $lists =& $this->getLists();
00086 $lists['leftContext']->setData($leftBlockPlugins);
00087 $lists['rightContext']->setData($rightBlockPlugins);
00088 $lists['unselected']->setData($disabledBlockPlugins);
00089 }
00090 }
00091
00092 ?>