/** * Converts only listViewDefs. * Old format contains only default fields, current - default and enabled. */ public function run() { if (!version_compare($this->from_version, '7.2', '<')) { return; } $sb = new StudioBrowser(); $sb->loadModules(); foreach ($sb->modules as $module => $defs) { if (!file_exists("custom/modules/{$module}/metadata/popupdefs.php")) { continue; } require "custom/modules/{$module}/metadata/popupdefs.php"; if (!isset($popupMeta['listviewdefs'])) { continue; } $popupDefaultFieldNames = array(); foreach ($popupMeta['listviewdefs'] as $key => $popupFieldDefs) { $popupDefaultFieldNames[] = isset($popupFieldDefs['name']) ? $popupFieldDefs['name'] : strtolower($key); } $sidecarParser = new SidecarListLayoutMetaDataParser(MB_SIDECARPOPUPVIEW, $module, null, 'base'); $panel = $sidecarParser->getOriginalPanelDefs(); $allFields = array_merge($sidecarParser->getAvailableFields(), $sidecarParser->getAdditionalFields()); // Sidecar originally enabled and default fields. $newPanelDef = $panel[0]['fields']; // Reset all defaul fields to save available. array_walk($newPanelDef, function (&$val) { $val['default'] = false; }); foreach ($popupDefaultFieldNames as $defaultFieldName) { // Populate with new default set. foreach ($newPanelDef as &$panelDef) { if ($panelDef['name'] == $defaultFieldName) { $panelDef['default'] = true; continue 2; } } // The field is hidden, populate the result defs with it. if (isset($allFields[$defaultFieldName])) { $newPanelDef[] = array_merge($allFields[$defaultFieldName], array('default' => true, 'enabled' => true, 'name' => $defaultFieldName)); } } $sidecarParser->setPanelFields($newPanelDef); $sidecarParser->handleSave(false); } }
public function action_listViewSave() { $GLOBALS['log']->info("action_listViewSave"); if (isset($_REQUEST['PORTAL'])) { $this->view = 'portallistview'; $parser = ParserFactory::getParser($this->view, $_REQUEST['view_module'], null, null, MB_PORTAL); //$parser->init ( $_REQUEST [ 'view_module' ] ) ; // removed init because MetaDataParsers don't use it } else { $packageName = isset($_REQUEST['view_package']) && strtolower($_REQUEST['view_package']) != 'studio' ? $_REQUEST['view_package'] : null; $subpanelName = !empty($_REQUEST['subpanel']) ? $_REQUEST['subpanel'] : null; $parser = ParserFactory::getParser($_REQUEST['view'], $_REQUEST['view_module'], $packageName, $subpanelName); $this->view = 'listView'; // To make sure that dashlets can render customized list views on BWC // modules, we need to save list customizations for BWC modules in // the new style as well. if (isModuleBWC($_REQUEST['view_module']) && empty($packageName) && empty($subpanelName)) { $sidecarListParser = new SidecarListLayoutMetaDataParser(MB_SIDECARLISTVIEW, $_REQUEST['view_module'], null, 'base'); $sidecarListParser->handleSave(); } } // for backwards compatibility we need to parse the subpanel the old way as well // TODO: Remove this when all BWC Modules are converted if ($parser instanceof SidecarSubpanelLayoutMetaDataParser) { require_once 'modules/ModuleBuilder/parsers/views/SubpanelMetaDataParser.php'; $oldSubpanelParser = new SubpanelMetaDataParser($subpanelName, $_REQUEST['view_module'], $packageName); $oldSubpanelParser->handleSave(); unset($oldSubpanelParser); } $parser->handleSave(); if (empty($packageName) && !empty($subpanelName)) { $rr = new RepairAndClear(); $rr->show_output = false; $rr->rebuildExtensions(); } // clear the cache for the linked module and requested module MetaDataManager::refreshModulesCache($parser->getAffectedModules()); }