Alex Trofimov 6 лет назад
Родитель
Сommit
5c32735247

+ 5 - 0
inc/classes/BxDolWiki.php

@@ -163,6 +163,11 @@ class BxDolWiki extends BxDolFactory implements iBxDolFactoryObject
         $oAcl = BxDolAcl::getInstance();
         return $oAcl->isMemberLevelInSet($this->_aObject[$aTypes[$sType]], $iProfileId); 
     }
+
+    public function actionEdit ()
+    {
+        return array('code' => 0, 'msg' => "TODO: Success! block = [" . bx_get('block_id') . "]");
+    }
 }
 
 /** @} */

+ 7 - 1
inc/js/classes/BxDolWiki.js

@@ -32,7 +32,13 @@ BxDolWiki.prototype.bindEvents = function () {
 };
 
 BxDolWiki.prototype.onEdit = function () {
-    console.log("onEdit2:" + this._sObject);
+
+    var sActionUrl = sUrlRoot + 'r.php?_q=wiki-action/edit';
+    $.getJSON(sActionUrl, {
+        block_id: this._oOptions.block_id
+    }, function (data) {
+        alert(JSON.stringify(data));
+    });
 };
 
 BxDolWiki.prototype.onDeleteVersion = function () {

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

@@ -2629,7 +2629,14 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_menu_title_switch_language_inline"><![CDATA[Language Switch (inline)]]></string>
 	<string name="_sys_menu_title_switch_template"><![CDATA[Switch Template]]></string>
 	<string name="_sys_menu_title_snippet_meta"><![CDATA[Snippet Meta Info]]></string>
-        <string name="_sys_menu_title_vote_reactions_do"><![CDATA[Do Reaction Vote]]></string>
+    <string name="_sys_menu_title_vote_reactions_do"><![CDATA[Do Reaction Vote]]></string>
+  <string name="_sys_menu_title_wiki"><![CDATA[Wiki]]></string>
+  <string name="_sys_menu_set_title_sys_wiki"><![CDATA[Wiki]]></string>
+  <string name="_sys_menu_item_title_wiki_edit"><![CDATA[Edit]]></string>
+  <string name="_sys_menu_item_title_wiki_delete_version"><![CDATA[Delete Version]]></string>
+  <string name="_sys_menu_item_title_wiki_delete_block"><![CDATA[Delete Block]]></string>
+  <string name="_sys_menu_item_title_wiki_translate"><![CDATA[Translate]]></string>
+  <string name="_sys_menu_item_title_wiki_history"><![CDATA[History]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter1_caption_default"><![CDATA[hidden]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter1_caption_profile_default"><![CDATA[unapproved]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter2_caption_default"><![CDATA[reported]]></string>
@@ -3093,5 +3100,6 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_wiki_system_title"><![CDATA[System WIKI]]></string>
 	<string name="_sys_wiki_error_page_exists"><![CDATA[Page with such name({0}) already exists]]></string>
 	<string name="_sys_wiki_error_missing_wiki_object"><![CDATA[Wiki object ({0}) wasn't found]]></string>
+    <string name="_sys_wiki_error_action_not_allowed"><![CDATA[Wiki object ({1}) action ({0}) isn't allowed]]></string>
 	
 </resources>

+ 9 - 1
modules/boonex/russian/data/langs/system/ru.xml

@@ -2616,7 +2616,14 @@
 	<string name="_sys_menu_title_switch_language_inline"><![CDATA[Переключатель языка (встроенный)]]></string>
 	<string name="_sys_menu_title_switch_template"><![CDATA[Переключить тему]]></string>
 	<string name="_sys_menu_title_snippet_meta"><![CDATA[Мета информация в карточке]]></string>
-        <string name="_sys_menu_title_vote_reactions_do"><![CDATA[Отреагировать - Меню]]></string>
+    <string name="_sys_menu_title_vote_reactions_do"><![CDATA[Отреагировать - Меню]]></string>
+  <string name="_sys_menu_title_wiki"><![CDATA[Вики]]></string>
+  <string name="_sys_menu_set_title_sys_wiki"><![CDATA[Вики]]></string>
+  <string name="_sys_menu_item_title_wiki_edit"><![CDATA[Редактировать]]></string>
+  <string name="_sys_menu_item_title_wiki_delete_version"><![CDATA[Удалить версию]]></string>
+  <string name="_sys_menu_item_title_wiki_delete_block"><![CDATA[Удалить блок]]></string>
+  <string name="_sys_menu_item_title_wiki_translate"><![CDATA[Перевести]]></string>
+  <string name="_sys_menu_item_title_wiki_history"><![CDATA[История]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter1_caption_default"><![CDATA[спрятано]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter1_caption_profile_default"><![CDATA[неодобрено]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter2_caption_default"><![CDATA[жалоб]]></string>
@@ -3075,5 +3082,6 @@
 	<string name="_sys_wiki_system_title"><![CDATA[Системная Вики]]></string>
 	<string name="_sys_wiki_error_page_exists"><![CDATA[Страница с таким именем ({0}) уже существует]]></string>
     <string name="_sys_wiki_error_missing_wiki_object"><![CDATA[Вики объект ({0}) не найден]]></string>
+    <string name="_sys_wiki_error_action_not_allowed"><![CDATA[Не разрешенное действие ({0}) для вики объекта ({1})]]></string>
 
 </resources>

+ 2 - 1
modules/boonex/wiki/install/sql/enable.sql

@@ -12,7 +12,8 @@ INSERT INTO `sys_permalinks` (`standard`, `permalink`, `check`, `compare_by_pref
 -- Rewrite rules
 
 INSERT INTO `sys_rewrite_rules` (`preg`, `service`, `active`) VALUES
-('^wiki/(.*)$', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:9:"wiki_page";s:6:"params";a:2:{i:0;s:4:"wiki";i:1;s:3:"{1}";}s:5:"class";s:16:"TemplServiceWiki";}', 1);
+('^wiki/(.*)$', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:9:"wiki_page";s:6:"params";a:2:{i:0;s:4:"wiki";i:1;s:3:"{1}";}s:5:"class";s:16:"TemplServiceWiki";}', 1),
+('^wiki-action/(.*)$', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"wiki_action";s:6:"params";a:2:{i:0;s:4:"wiki";i:1;s:3:"{1}";}s:5:"class";s:16:"TemplServiceWiki";}', '1');
 
 -- MENU: add to site menu
 

+ 37 - 1
template/scripts/BxBaseServiceWiki.php

@@ -64,6 +64,40 @@ class BxBaseServiceWiki extends BxDol
 
     }
 
+    /**
+     * @page service Service Calls
+     * @section bx_system_general System Services 
+     * @subsection bx_system_general-wiki Wiki
+     * @subsubsection bx_system_general-wiki_action wiki_action
+     * 
+     * @code bx_srv('system', 'wiki_action', [...], 'TemplServiceWiki'); @endcode
+     * 
+     * Perform WIKI action.
+     * @param $sUri categories object name
+     * 
+     * @see BxBaseServiceWiki::serviceWikiAction
+     */
+    /** 
+     * @ref bx_system_general-wiki_action "wiki_action"
+     */
+    public function serviceWikiAction ($sWikiObjectUri, $sAction)
+    {
+        $oWiki = BxDolWiki::getObjectInstanceByUri($sWikiObjectUri);
+        if (!$oWiki) {
+            echoJson(array('code' => 1, 'msg' => _t('_sys_wiki_error_missing_wiki_object', $sWikiObjectUri)));
+            return;
+        }
+
+        $sMethod = 'action' . bx_gen_method_name($sAction, array('-'));
+        if (!method_exists($oWiki, $sMethod) || !$oWiki->isAllowed($sAction)) {
+            echoJson(array('code' => 2, 'msg' => _t('_sys_wiki_error_action_not_allowed', $sAction, $sWikiObjectUri)));
+            return;
+        }
+        
+        $a = $oWiki->$sMethod();
+        echoJson($a);
+    }
+
     /**
      * @page service Service Calls
      * @section bx_system_general System Services 
@@ -97,7 +131,9 @@ class BxBaseServiceWiki extends BxDol
             'block_id' => $sBlockId,
             'menu' => $oMenu->getCode(),
             'info' => bx_time_js($aWikiVer['added']), // 'TODO: On right - Last modified time and List of missing and outdated translations. History and Last modified time should be controlled by regular menu privacy, while other actions should have custom privacy for particular wiki object',
-            'options' => json_encode(array()),
+            'options' => json_encode(array(
+                'block_id' => $sBlockId,
+            )),
         ));
     }