Пример #1
0
 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);
 }
Пример #2
0
 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);
 }
Пример #3
0
 protected function getModuleIcon($sName, $sType = 'menu', $bReturnAsUrl = true)
 {
     return BxDolStudioUtils::getModuleIcon($sName, $sType, $bReturnAsUrl);
 }