Explorar el Código

#2304 Wiki functionality: actions

Alex Trofimov hace 6 años
padre
commit
5c32735247

+ 5 - 0
inc/classes/BxDolWiki.php

@@ -163,6 +163,11 @@ class BxDolWiki extends BxDolFactory implements iBxDolFactoryObject
         $oAcl = BxDolAcl::getInstance();
         $oAcl = BxDolAcl::getInstance();
         return $oAcl->isMemberLevelInSet($this->_aObject[$aTypes[$sType]], $iProfileId); 
         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 () {
 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 () {
 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_language_inline"><![CDATA[Language Switch (inline)]]></string>
 	<string name="_sys_menu_title_switch_template"><![CDATA[Switch Template]]></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_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_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_counter1_caption_profile_default"><![CDATA[unapproved]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter2_caption_default"><![CDATA[reported]]></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_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_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_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>
 </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_language_inline"><![CDATA[Переключатель языка (встроенный)]]></string>
 	<string name="_sys_menu_title_switch_template"><![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_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_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_counter1_caption_profile_default"><![CDATA[неодобрено]]></string>
   <string name="_sys_menu_dashboard_manage_tools_addon_counter2_caption_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_system_title"><![CDATA[Системная Вики]]></string>
 	<string name="_sys_wiki_error_page_exists"><![CDATA[Страница с таким именем ({0}) уже существует]]></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_missing_wiki_object"><![CDATA[Вики объект ({0}) не найден]]></string>
+    <string name="_sys_wiki_error_action_not_allowed"><![CDATA[Не разрешенное действие ({0}) для вики объекта ({1})]]></string>
 
 
 </resources>
 </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
 -- Rewrite rules
 
 
 INSERT INTO `sys_rewrite_rules` (`preg`, `service`, `active`) VALUES
 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
 -- 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
      * @page service Service Calls
      * @section bx_system_general System Services 
      * @section bx_system_general System Services 
@@ -97,7 +131,9 @@ class BxBaseServiceWiki extends BxDol
             'block_id' => $sBlockId,
             'block_id' => $sBlockId,
             'menu' => $oMenu->getCode(),
             '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',
             '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,
+            )),
         ));
         ));
     }
     }