Forráskód Böngészése

#15 - Developer Module Problems.

AntonLV 13 éve
szülő
commit
648e714b7e

+ 18 - 0
modules/boonex/developer/classes/BxDevBuilderPage.php

@@ -202,6 +202,22 @@ class BxDevBuilderPage extends BxTemplStudioBuilderPage {
         return array('popup' => $sContent);
     }
 
+	protected function actionBlockDelete() {
+        $sJsObject = $this->getPageJsObject();
+        $iId = (int)bx_get('id');
+
+        $aBlock = array();
+        $this->oDb->getBlocks(array('type' => 'by_id', 'value' => $iId), $aBlock, false);
+        if(empty($aBlock) || !is_array($aBlock))
+            return array('msg' => _t('_bx_dev_bp_err_block_not_found'));
+
+        if(!$this->oDb->deleteBlocks(array('type' => 'by_id', 'value' => $iId)))
+            return array('msg' => _t('_bx_dev_bp_err_block_delete'));
+
+        $this->onBlockDelete($aBlock);
+        return array('eval' => $sJsObject . '.onDeleteBlock(' . $iId . ', oData)');
+    }
+
     protected function getSettingsOptions($bInputsOnly = false) {
         $aForm = array(
             'form_attrs' => array(
@@ -399,7 +415,9 @@ class BxDevBuilderPage extends BxTemplStudioBuilderPage {
         $aBlock['visible_for_levels'] = $oForm->aInputs['visible_for_levels']['value'];
 
         $oForm->aInputs = $this->addInArray($oForm->aInputs, 'visible_for_levels', $this->getBlockContent($aBlock));
+
         $oForm->aInputs['controls'][0]['value'] = _t('_bx_dev_bp_btn_block_save');
+        $oForm->aInputs['controls'][2]['attrs']['onclick'] = $this->getPageJsObject() . ".deleteBlock(" . $aBlock['id'] . ")";
 
         if($aBlock['type'] == BX_DOL_STUDIO_BP_BLOCK_SERVICE)
             $aBlock['content'] = BxDevFunctions::unserializeString($aBlock['content']);

+ 20 - 0
modules/boonex/developer/classes/BxDevFormView.php

@@ -0,0 +1,20 @@
+<? defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ * 
+ * @defgroup    Developer Developer
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+bx_import('BxTemplStudioFormView');
+
+class BxDevFormView extends BxTemplStudioFormView {
+    function BxDevFormView($aInfo, $oTemplate = false) {
+        parent::BxTemplStudioFormView($aInfo, $oTemplate);
+    }
+}
+
+/** @} */

+ 3 - 0
modules/boonex/developer/install/langs/en.xml

@@ -343,6 +343,7 @@
     <string name="_bx_dev_bp_txt_block_edit_popup"><![CDATA[Edit "{0}" Block]]></string>
     <string name="_bx_dev_bp_err_block_edit"><![CDATA[Cannot update page]]></string>
     <string name="_bx_dev_bp_err_block_not_found"><![CDATA[Block was not found]]></string>
+    <string name="_bx_dev_bp_err_block_delete"><![CDATA[Cannot delete block]]></string>
     <string name="_bx_dev_bp_txt_block_form"><![CDATA[Block in Page Builder]]></string>
     <string name="_bx_dev_bp_txt_block_display_edit"><![CDATA[Edit]]></string>
     <string name="_bx_dev_bp_txt_sys_block_id"><![CDATA[ID]]></string>
@@ -377,6 +378,8 @@
     <string name="_bx_dev_bp_btn_block_save"><![CDATA[Save]]></string>
     <string name="_bx_dev_bp_btn_sys_block_cancel"><![CDATA[Cancel]]></string>
     <string name="_bx_dev_bp_btn_block_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_dev_bp_btn_sys_block_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_dev_bp_btn_block_delete"><![CDATA[Delete]]></string>
 
 	<!-- Polyglot -->
     <string name="_bx_dev_pgt_txt_manage_gl_title"><![CDATA[Module]]></string>

+ 14 - 12
modules/boonex/developer/install/sql/install.sql

@@ -76,7 +76,7 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `conf
 -- Forms Builder -> Forms.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_forms_form', @sName, '_bx_dev_frm_txt_forms_form', '', '', 'do_submit', 'sys_objects_form', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_forms_form', @sName, '_bx_dev_frm_txt_forms_form', '', '', 'do_submit', 'sys_objects_form', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_forms_form_add', @sName, 'mod_dev_forms_form', '_bx_dev_frm_txt_forms_display_add', 0),
@@ -143,7 +143,7 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 -- Forms Builder -> Displays.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_forms_display', @sName, '_bx_dev_frm_txt_displays_diplay', '', '', 'do_submit', 'sys_form_displays', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_forms_display', @sName, '_bx_dev_frm_txt_displays_diplay', '', '', 'do_submit', 'sys_form_displays', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_forms_display_add', @sName, 'mod_dev_forms_display', '_bx_dev_frm_txt_displays_display_add', 0),
@@ -183,7 +183,7 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 -- Forms Builder -> Pre Lists.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_forms_prelist', @sName, '_bx_dev_frm_txt_prelists_prelist', '', '', 'do_submit', 'sys_form_pre_lists', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_forms_prelist', @sName, '_bx_dev_frm_txt_prelists_prelist', '', '', 'do_submit', 'sys_form_pre_lists', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_forms_prelist_add', @sName, 'mod_dev_forms_prelist', '_bx_dev_frm_txt_prelists_display_add', 0),
@@ -219,7 +219,7 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 -- Forms Builder -> Pre Values.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_forms_prevalue', @sName, '_bx_dev_frm_txt_prevalues_prevalue', '', '', 'do_submit', 'sys_form_pre_values', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_forms_prevalue', @sName, '_bx_dev_frm_txt_prevalues_prevalue', '', '', 'do_submit', 'sys_form_pre_values', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_forms_prevalue_add', @sName, 'mod_dev_forms_prevalue', '_bx_dev_frm_txt_prevalues_display_add', 0),
@@ -300,7 +300,7 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `conf
 -- Navigation Builder -> Menus.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_nav_menu', @sName, '_bx_dev_nav_txt_menus_menu', '', '', 'do_submit', 'sys_objects_menu', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_nav_menu', @sName, '_bx_dev_nav_txt_menus_menu', '', '', 'do_submit', 'sys_objects_menu', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_nav_menu_add', @sName, 'mod_dev_nav_menu', '_bx_dev_nav_txt_menus_display_add', 0),
@@ -349,7 +349,7 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 -- Navigation Builder -> Sets.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_nav_set', @sName, '_bx_dev_nav_txt_sets_set', '', '', 'do_submit', 'sys_menu_sets', 'set_name', '', '', '', 0, 1, '', '');
+('mod_dev_nav_set', @sName, '_bx_dev_nav_txt_sets_set', '', '', 'do_submit', 'sys_menu_sets', 'set_name', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_nav_set_add', @sName, 'mod_dev_nav_set', '_bx_dev_nav_txt_sets_display_add', 0),
@@ -384,7 +384,7 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 -- Navigation Builder -> Items.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_nav_item', @sName, '_bx_dev_nav_txt_items_item', '', '', 'do_submit', 'sys_menu_items', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_nav_item', @sName, '_bx_dev_nav_txt_items_item', '', '', 'do_submit', 'sys_menu_items', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_nav_item_add', @sName, 'mod_dev_nav_item', '_bx_dev_nav_txt_items_display_add', 0),
@@ -442,7 +442,7 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 -- Page Builder -> Page.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_bp_page', @sName, '_bx_dev_bp_txt_page_form', '', '', 'do_submit', 'sys_objects_page', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_bp_page', @sName, '_bx_dev_bp_txt_page_form', '', '', 'do_submit', 'sys_objects_page', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_bp_page_add', @sName, 'mod_dev_bp_page', '_bx_dev_bp_txt_page_display_add', 0);
@@ -481,7 +481,7 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 -- Page Builder -> Block.
 --
 INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
-('mod_dev_bp_block', @sName, '_bx_dev_bp_txt_block_form', '', '', 'do_submit', 'sys_pages_blocks', 'id', '', '', '', 0, 1, '', '');
+('mod_dev_bp_block', @sName, '_bx_dev_bp_txt_block_form', '', '', 'do_submit', 'sys_pages_blocks', 'id', '', '', '', 0, 1, 'BxDevFormView', 'modules/boonex/developer/classes/BxDevFormView.php');
 
 INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
 ('mod_dev_bp_block_edit', @sName, 'mod_dev_bp_block', '_bx_dev_bp_txt_block_display_edit', 0);
@@ -496,9 +496,10 @@ INSERT INTO `sys_form_inputs` (`object`, `module`, `name`, `value`, `values`, `c
 ('mod_dev_bp_block', @sName, 'visible_for_levels', '', '', 0, 'checkbox_set', '_bx_dev_bp_txt_sys_block_visible_for_levels', '_bx_dev_bp_txt_block_visible_for_levels', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 0, 0),
 ('mod_dev_bp_block', @sName, 'deletable', '1', '', 0, 'checkbox', '_bx_dev_bp_txt_sys_block_deletable', '_bx_dev_bp_txt_block_deletable', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 0, 0),
 ('mod_dev_bp_block', @sName, 'copyable', '1', '', 0, 'checkbox', '_bx_dev_bp_txt_sys_block_copyable', '_bx_dev_bp_txt_block_copyable', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 0, 0),
-('mod_dev_bp_block', @sName, 'controls', '', 'do_submit,cancel', 0, 'input_set', '', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
+('mod_dev_bp_block', @sName, 'controls', '', 'do_submit,cancel,delete', 0, 'input_set', '', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
 ('mod_dev_bp_block', @sName, 'do_submit', '_bx_dev_bp_btn_block_add', '', 0, 'submit', '_bx_dev_bp_btn_sys_block_add', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
-('mod_dev_bp_block', @sName, 'cancel', '_bx_dev_bp_btn_block_cancel', '', 0, 'button', '_bx_dev_bp_btn_sys_block_cancel', '', '', 0, 0, 0, 'a:2:{s:7:"onclick";s:45:"$(''.bx-popup-applied:visible'').dolPopupHide()";s:5:"class";s:22:"bx-def-margin-sec-left";}', '', '', '', '', '', '', '', 0, 0);
+('mod_dev_bp_block', @sName, 'cancel', '_bx_dev_bp_btn_block_cancel', '', 0, 'button', '_bx_dev_bp_btn_sys_block_cancel', '', '', 0, 0, 0, 'a:2:{s:7:"onclick";s:45:"$(''.bx-popup-applied:visible'').dolPopupHide()";s:5:"class";s:22:"bx-def-margin-sec-left";}', '', '', '', '', '', '', '', 0, 0),
+('mod_dev_bp_block', @sName, 'delete', '_bx_dev_bp_btn_block_delete', '', 0, 'button', '_bx_dev_bp_btn_sys_block_delete', '', '', 0, 0, 0, 'a:1:{s:5:"class";s:22:"bx-def-margin-sec-left";}', '', '', '', '', '', '', '', 0, 0);
 
 INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES
 ('mod_dev_bp_block_edit', 'id', 2147483647, 1, 1),
@@ -512,7 +513,8 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 ('mod_dev_bp_block_edit', 'copyable', 2147483647, 1, 9),
 ('mod_dev_bp_block_edit', 'controls', 2147483647, 1, 10),
 ('mod_dev_bp_block_edit', 'do_submit', 2147483647, 1, 11),
-('mod_dev_bp_block_edit', 'cancel', 2147483647, 1, 12);
+('mod_dev_bp_block_edit', 'cancel', 2147483647, 1, 12),
+('mod_dev_bp_block_edit', 'delete', 2147483647, 1, 13);
 
 --
 -- Polyglot -> Grid descriptors

+ 1 - 0
modules/boonex/english/data/langs/system.xml

@@ -2339,6 +2339,7 @@ Please click "Continue" below to navigate to the home page of the site.]]></stri
     <string name="_adm_bp_err_block_edit"><![CDATA[Cannot update block]]></string>
     <string name="_adm_bp_err_block_delete"><![CDATA[Cannot delete block]]></string>
     <string name="_adm_bp_err_block_not_found"><![CDATA[The requested block cannot be found.]]></string>
+    <string name="_adm_bp_err_block_not_deletable"><![CDATA[The requested block cannot be deleted.]]></string>
     <string name="_adm_bp_err_block_remove_old_image"><![CDATA[Cannot remove an old image]]></string>
     <string name="_adm_bp_txt_block_title"><![CDATA[Title]]></string>
     <string name="_adm_bp_dsc_block_title"><![CDATA[Short name for the block, visible in block header.]]></string>

+ 2 - 3
studio/classes/BxDolStudioForm.php

@@ -49,8 +49,7 @@ class BxDolStudioForm extends BxBaseFormView {
         return $mixedResult;
     }
 
-    function processImageUploaderSave($sName, $iValue = 0) {
-        $iId = 0;
+    function processImageUploaderSave($sName, $iId = 0) {
         if($this->aInputs[$sName]['type'] != 'image_uploader')
             return $iId;
 
@@ -62,7 +61,7 @@ class BxDolStudioForm extends BxBaseFormView {
             $sStorage = isset($aInput['storage_object']) && $aInput['storage_object'] != '' ? $aInput['storage_object'] : BX_DOL_STORAGE_OBJ_IMAGES;
             $oStorage = BxDolStorage::getObjectInstance($sStorage);
 
-            if((int)$iValue != 0 && !$oStorage->deleteFile($iValue))
+            if((int)$iId != 0 && !$oStorage->deleteFile($iId))
                 return _t('_adm_err_form_view_iu_delete');
 
             $iId = $oStorage->storeFileFromForm($_FILES[$aInput['name']], false, $iProfileId); 

+ 14 - 11
studio/template/scripts/BxBaseStudioBuilderPage.php

@@ -833,15 +833,6 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage {
                             'onclick' => "$('.bx-popup-applied:visible').dolPopupHide()",
                             'class' => 'bx-def-margin-sec-left',
                         ),
-                    ),
-                    array (
-                        'type' => 'reset',
-                        'name' => 'close',
-                        'value' => _t('_adm_bp_btn_block_delete'),
-                        'attrs' => array(
-                            'onclick' => $this->getPageJsObject() . ".deleteBlock(" . $aBlock['id'] . ")",
-                            'class' => 'bx-def-margin-sec-left',
-                        ),
                     )
                 )
             )
@@ -856,6 +847,17 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage {
 
         $aForm['inputs'] = $this->addInArray($aForm['inputs'], 'visible_for_levels', $this->getBlockContent($aBlock));
 
+        if((int)$aBlock['deletable'] != 0)
+        	$aForm['inputs']['controls'][] = array (
+				'type' => 'reset',
+				'name' => 'close',
+				'value' => _t('_adm_bp_btn_block_delete'),
+				'attrs' => array(
+					'onclick' => $this->getPageJsObject() . ".deleteBlock(" . $aBlock['id'] . ")",
+					'class' => 'bx-def-margin-sec-left',
+				),
+			);
+
         $oForm = new BxTemplStudioFormView($aForm);
         $oForm->initChecker();
 
@@ -886,6 +888,9 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage {
         if(empty($aBlock) || !is_array($aBlock))
             return array('msg' => _t('_adm_bp_err_block_not_found'));
 
+		if((int)$aBlock['deletable'] == 0)
+            return array('msg' => _t('_adm_bp_err_block_not_deletable'));
+
         if(!$this->oDb->deleteBlocks(array('type' => 'by_id', 'value' => $iId)))
             return array('msg' => _t('_adm_bp_err_block_delete'));
 
@@ -1302,8 +1307,6 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage {
                 break;
 
             case BX_DOL_STUDIO_BP_BLOCK_IMAGE:
-                $aForm['form_attrs']['enctype'] = 'multipart/form-data';
-
                 $iImageId = $sImageAlign = '';
                 if($aBlock['content'] != '')
                     list($iImageId, $sImageAlign) = explode($this->sParamsDivider, $aBlock['content']);