protected function getDownloadedList() { $sJsObject = $this->getPageJsObject(); $oTemplate = BxDolStudioTemplate::getInstance(); $sModules = $sUpdates = ""; $aProducts = $this->loadDownloaded(); //--- Prepare modules. foreach ($aProducts['modules'] as $aModule) { $sIcon = BxDolStudioUtils::getModuleIcon($aModule, 'store'); $bIcon = strpos($sIcon, '.') === false; $sModules .= $oTemplate->parseHtmlByName('str_product_v1.html', array('js_object' => $sJsObject, 'name' => $aModule['name'], 'bx_if:icon' => array('condition' => $bIcon, 'content' => array('icon' => $sIcon)), 'bx_if:image' => array('condition' => !$bIcon, 'content' => array('icon_url' => $sIcon)), 'title' => $aModule['title'], 'vendor' => $aModule['vendor'], 'version' => $aModule['version'], 'dir' => $aModule['dir'], 'bx_if:hide_install' => array('condition' => $aModule['installed'], 'content' => array()), 'bx_if:hide_installed' => array('condition' => !$aModule['installed'], 'content' => array()))); } //--- Prepare updates. foreach ($aProducts['updates'] as $aUpdate) { $sIcon = BxDolStudioUtils::getModuleIcon(array('type' => $aUpdate['module_type'], 'name' => $aUpdate['module_name'], 'dir' => $aUpdate['module_dir']), 'store'); $bIcon = strpos($sIcon, '.') === false; $sUpdates .= $oTemplate->parseHtmlByName('str_update_v1.html', array('js_object' => $sJsObject, 'name' => $aUpdate['module_name'], 'bx_if:icon' => array('condition' => $bIcon, 'content' => array('icon' => $sIcon)), 'bx_if:image' => array('condition' => !$bIcon, 'content' => array('icon_url' => $sIcon)), 'title' => $aUpdate['title'], 'vendor' => $aUpdate['vendor'], 'versions' => _t('_adm_str_txt_update_from_to', $aUpdate['version_from'], $aUpdate['version_to']), 'dir' => $aUpdate['dir'])); } $aTmplVars = array('js_object' => $sJsObject, 'bx_repeat:blocks' => array(array('caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_downloaded_modules'), 'actions' => array())), 'panel_top' => '', 'items' => $sModules, 'panel_bottom' => ''))); if (!empty($sUpdates)) { $aTmplVars['bx_repeat:blocks'][] = array('caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_downloaded_updates'), 'actions' => array())), 'panel_top' => '', 'items' => $sUpdates, 'panel_bottom' => ''); } return $oTemplate->parseHtmlByName('store.html', $aTmplVars); }
protected function actionBlockCreate() { $sJsObject = $this->getPageJsObject(); $oTemplate = BxDolStudioTemplate::getInstance(); $sSelected = BX_DOL_STUDIO_BP_SKELETONS; $aForm = array('form_attrs' => array('id' => 'adm-bp-block-create', 'action' => sprintf($this->sPageUrl, $this->sType, $this->sPage) . '&bp_action=' . $this->sActionBlockCreate, 'method' => 'post'), 'params' => array('db' => array('table' => 'sys_pages_blocks', 'key' => 'id', 'uri' => '', 'uri_title' => '', 'submit_name' => 'do_submit')), 'inputs' => array('blocks' => array('type' => 'custom', 'name' => 'blocks', 'content' => '', 'db' => array('pass' => 'Int')))); $aMenu = array(BX_DOL_STUDIO_BP_SKELETONS => array('name' => BX_DOL_STUDIO_BP_SKELETONS, 'icon' => 'qrcode', 'title' => '_sys_block_types_skeletons', 'selected' => $sSelected == BX_DOL_STUDIO_BP_SKELETONS), BX_DOL_STUDIO_MODULE_SYSTEM => array('name' => BX_DOL_STUDIO_MODULE_SYSTEM, 'icon' => 'cog', 'title' => '_sys_block_types_system', 'selected' => $sSelected == BX_DOL_STUDIO_MODULE_SYSTEM), BX_DOL_STUDIO_MODULE_CUSTOM => array('name' => BX_DOL_STUDIO_MODULE_CUSTOM, 'icon' => 'wrench', 'title' => '_sys_block_types_custom', 'selected' => $sSelected == BX_DOL_STUDIO_MODULE_CUSTOM)); bx_import('BxDolModuleQuery'); $aModules = BxDolModuleQuery::getInstance()->getModulesBy(array('type' => 'modules')); $aModulesWithBlocks = $this->oDb->getModulesWithCopyableBlocks(); foreach ($aModules as $aModule) { $sName = $aModule['name']; if (!in_array($sName, $aModulesWithBlocks)) { continue; } if (!empty($aMenu[$sName])) { $aMenu[$sName] = array_merge($aMenu[$sName], $aModule); } else { $aMenu[$sName] = $aModule; } if (empty($aMenu[$sName]['icon'])) { $aMenu[$sName]['icon'] = BxDolStudioUtils::getModuleIcon($aModule, 'menu', false); } } foreach ($aMenu as $sKey => $aItem) { $aMenu[$sKey]['onclick'] = $sJsObject . '.onChangeModule(\'' . $aItem['name'] . '\', this);'; } bx_import('BxTemplStudioMenu'); $oMenu = new BxTemplStudioMenu(array('template' => 'menu_side.html', 'menu_items' => $aMenu)); $aTmplParams = array('menu' => $oMenu->getCode(), 'html_block_lists_id' => $this->aHtmlIds['block_lists_id'], 'blocks' => $this->getBlockList($sSelected)); $aForm['inputs']['blocks']['content'] = $oTemplate->parseHtmlByName('bp_add_block_form.html', $aTmplParams); $oForm = new BxTemplStudioFormView($aForm); $oForm->initChecker(); if ($oForm->isSubmittedAndValid()) { $aIds = $oForm->getCleanValue('blocks'); $aBlocks = array(); $this->oDb->getBlocks(array('type' => 'by_ids', 'value' => $aIds), $aBlocks, false); bx_import('BxDolStudioLanguagesUtils'); $oLanguage = BxDolStudioLanguagesUtils::getInstance(); bx_import('BxDolStorage'); $oStorege = BxDolStorage::getObjectInstance(BX_DOL_STORAGE_OBJ_IMAGES); $bResult = true; foreach ($aBlocks as $aBlock) { $sTitleKey = $this->getSystemName($aBlock['title'] . '_' . time()); $sTitleValue = _t($aBlock['title']); unset($aBlock['id']); $aBlock['object'] = $this->sPage; $aBlock['cell_id'] = 1; $aBlock['module'] = $this->getBlockModule($aBlock); $aBlock['title'] = $sTitleKey; $aBlock['copyable'] = 0; $aBlock['deletable'] = 1; //--- Process Lang copy $sContentKey = $sContentValue = ""; if ($aBlock['type'] == BX_DOL_STUDIO_BP_BLOCK_LANG && $aBlock['content'] != '') { $sContentKey = $this->getSystemName($aBlock['content'] . '_' . time()); $sContentValue = _t($aBlock['content']); $aBlock['content'] = $sContentKey; $oLanguage->addLanguageString($sContentKey, $sContentValue); } //--- Process Image copy $iImageId = $sImageAlign = ""; if ($aBlock['type'] == BX_DOL_STUDIO_BP_BLOCK_IMAGE && $aBlock['content'] != '') { list($iImageId, $sImageAlign) = explode($this->sParamsDivider, $aBlock['content']); $aBlock['content'] = ""; if (is_numeric($iImageId) && (int) $iImageId != 0 && ($iImageId = $oStorege->storeFileFromStorage(array('id' => $iImageId))) !== false) { $aBlock['content'] = implode($this->sParamsDivider, array($iImageId, $sImageAlign)); } } if (!$this->oDb->insertBlock($aBlock)) { if ($sContentKey != "") { $oLanguage->deleteLanguageString($sContentKey); } if ($iImageId != "") { $oStorege->deleteFile((int) $iImageId, 0); } $bResult = false; break; } $oLanguage->addLanguageString($sTitleKey, $sTitleValue); } if ($bResult) { return array('eval' => $sJsObject . '.onCreateBlock(oData)'); } else { return array('msg' => _t('_adm_bp_err_block_added')); } } bx_import('BxTemplStudioFunctions'); $sContent = BxTemplStudioFunctions::getInstance()->popupBox($this->aHtmlIds['create_block_popup_id'], _t('_adm_bp_txt_new_block_popup'), $oTemplate->parseHtmlByName('bp_add_block.html', array('action' => 'create', 'form_id' => $aForm['form_attrs']['id'], 'form' => $oForm->getCode(true)))); return array('popup' => $sContent); }
protected function getModuleIcon($sName, $sType = 'menu', $bReturnAsUrl = true) { return BxDolStudioUtils::getModuleIcon($sName, $sType, $bReturnAsUrl); }