Просмотр исходного кода

Ticket #5425 - Tasks: Functionality improvements. Stage 2.

AntonLV 2 месяцев назад
Родитель
Сommit
e4b7d0efd3

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

@@ -74,7 +74,7 @@
     <string name="_bx_tasks_form_entry_input_sys_files"><![CDATA[Файлы]]></string>
     <string name="_bx_tasks_form_entry_input_files"><![CDATA[]]></string>
     <string name="_bx_tasks_form_entry_input_sys_allow_view_to"><![CDATA[Видимость]]></string>
-    <string name="_bx_tasks_form_entry_input_allow_view_to"><![CDATA[Видимость]]></string>
+    <string name="_bx_tasks_form_entry_input_allow_view_to"><![CDATA[Разместить в]]></string>
     <string name="_bx_tasks_form_entry_input_sys_date_added"><![CDATA[Создано]]></string>
     <string name="_bx_tasks_form_entry_input_date_added"><![CDATA[Создано]]></string>
     <string name="_bx_tasks_form_entry_input_sys_date_changed"><![CDATA[Обновлено]]></string>

+ 17 - 0
modules/boonex/tasks/classes/BxTasksFormEntry.php

@@ -36,7 +36,18 @@ class BxTasksFormEntry extends BxBaseModTextFormEntry
 
         parent::__construct($aInfo, $oTemplate);
 
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
         $this->_aProperties = $this->_oModule->_oConfig->getProperties();
+
+        if(($sKf = $CNF['FIELD_ALLOW_VIEW_TO'] ?? false) && isset($this->aInputs[$sKf])) {
+            if(!$this->_bIsApi) {
+                $this->aInputs[$sKf]['attrs'] ??= [];
+                $this->aInputs[$sKf]['attrs']['onchange'] = $this->_oModule->_oConfig->getJsObject('tasks') . '.changeAlloViewTo(this);';
+            }
+            else
+                $this->aInputs[$sKf]['request_url_change'] = $this->MODULE . '/process_task_form&params[]=';
+        }
     }
 
     public function setContextId($iContextId)
@@ -48,6 +59,12 @@ class BxTasksFormEntry extends BxBaseModTextFormEntry
 
         $this->_iContextId = $iContextId;
 
+        if(($sKf = 'FIELD_ALLOW_VIEW_TO') && isset($CNF[$sKf]) && isset($this->aInputs[$CNF[$sKf]]))
+            $this->aInputs[$CNF[$sKf]] = array_merge($this->aInputs[$CNF[$sKf]], [
+                'type' => 'hidden',
+                'value' => -$iContextId
+            ]);
+
         if(($sKf = 'FIELD_TASKLIST') && isset($CNF[$sKf]) && isset($this->aInputs[$CNF[$sKf]])) {
             $aLists = [['id' => 0, 'title' => _t('_bx_tasks_txt_list_inbox')]];
             if(($aListsAdd = $this->_oModule->_oDb->getLists($this->_iContextId)) && is_array($aListsAdd))

+ 2 - 2
modules/boonex/tasks/classes/BxTasksModule.php

@@ -281,7 +281,7 @@ class BxTasksModule extends BxBaseModTextModule implements iBxDolCalendarService
         return $this->_oDb->deleteList($iId);
     }
 
-    public function serviceProcessTaskForm($iContextId, $iListId)
+    public function serviceProcessTaskForm($iContextId, $iListId = 0)
     {
         if(!$this->isAllowAdd($iContextId))
             return [];
@@ -297,7 +297,7 @@ class BxTasksModule extends BxBaseModTextModule implements iBxDolCalendarService
 
         $oForm->initChecker();
         if($oForm->isSubmittedAndValid()) {
-            $iContentId = $oForm->insert([$CNF['FIELD_ALLOW_VIEW_TO'] => -$iContextId, $CNF['FIELD_TASKLIST'] => $iListId]);
+            $iContentId = $oForm->insert([$CNF['FIELD_TASKLIST'] => $iListId]);
             if($iContentId)
                 $this->onPublished($iContentId);
 

+ 45 - 0
modules/boonex/tasks/classes/BxTasksPrivacyView.php

@@ -0,0 +1,45 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Photos Photos
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxTasksPrivacyView extends BxTemplPrivacy
+{
+    protected $_sModule;
+    protected $_oModule;
+    
+    public function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+
+        $this->_sModule = 'bx_tasks';
+        $this->_oModule = BxDolModule::getInstance($this->_sModule);
+    }
+
+    protected function getGroups($iOwnerId = 0, $aParams = []) 
+    {
+        $aValues = [
+            ['key' => '', 'value' => _t('_sys_please_select')]
+        ];
+
+        return parent::addSpaces($aValues, $iOwnerId, $aParams);
+    }
+
+    public function addDynamicGroups($aValues, $iOwnerId, $aParams)
+    {
+        return $aValues;
+    }
+
+    public function addSpaces($aValues, $iOwnerId, $aParams)
+    {
+        return $aValues;
+    }
+}
+
+/** @} */

+ 1 - 1
modules/boonex/tasks/install/langs/en.xml

@@ -74,7 +74,7 @@
     <string name="_bx_tasks_form_entry_input_sys_files"><![CDATA[Files]]></string>
     <string name="_bx_tasks_form_entry_input_files"><![CDATA[]]></string>
     <string name="_bx_tasks_form_entry_input_sys_allow_view_to"><![CDATA[Visibility]]></string>
-    <string name="_bx_tasks_form_entry_input_allow_view_to"><![CDATA[Visibility]]></string>
+    <string name="_bx_tasks_form_entry_input_allow_view_to"><![CDATA[Post to]]></string>
     <string name="_bx_tasks_form_entry_input_sys_date_added"><![CDATA[Created]]></string>
     <string name="_bx_tasks_form_entry_input_date_added"><![CDATA[Created]]></string>
     <string name="_bx_tasks_form_entry_input_sys_date_changed"><![CDATA[Updated]]></string>

+ 2 - 0
modules/boonex/tasks/install/sql/enable-app.sql

@@ -3,6 +3,7 @@
 -- PAGES: config_api
 
 -- PAGES: active_api
+UPDATE `sys_pages_blocks` SET `active_api`=1 WHERE `object`='bx_tasks_create_entry' AND `module`='bx_tasks' AND `title`='_bx_tasks_page_block_title_create_entry';
 UPDATE `sys_pages_blocks` SET `active_api`=1 WHERE `object`='bx_tasks_edit_entry' AND `module`='bx_tasks' AND `title_system`='' AND `title`='_bx_tasks_page_block_title_edit_entry';
 UPDATE `sys_pages_blocks` SET `active_api`=1 WHERE `object`='bx_tasks_delete_entry' AND `module`='bx_tasks' AND `title_system`='' AND `title`='_bx_tasks_page_block_title_delete_entry';
 UPDATE `sys_pages_blocks` SET `active_api`=1 WHERE `object`='bx_tasks_view_entry' AND `module`='bx_tasks' AND `title_system`='' AND `title`='_bx_tasks_page_block_title_entry_text';
@@ -43,6 +44,7 @@ UPDATE `sys_pages_blocks` SET `active_api`=1 WHERE `object`='bx_tasks_context_se
 
 -- MENUS: active_api
 UPDATE `sys_menu_items` SET `active_api`=1 WHERE `set_name`='sys_site' AND `module`='bx_tasks' AND `name`='tasks-home';
+UPDATE `sys_menu_items` SET `active_api`=1 WHERE `set_name`='sys_add_content_links' AND `module`='bx_tasks' AND `name`='create-task';
 UPDATE `sys_menu_items` SET `active_api`=1 WHERE `set_name`='bx_tasks_view' AND `module`='bx_tasks' AND `name`='edit-task';
 UPDATE `sys_menu_items` SET `active_api`=1 WHERE `set_name`='bx_tasks_view' AND `module`='bx_tasks' AND `name`='edit-task-state';
 UPDATE `sys_menu_items` SET `active_api`=1 WHERE `set_name`='bx_tasks_view' AND `module`='bx_tasks' AND `name`='delete-task';

+ 4 - 4
modules/boonex/tasks/install/sql/enable.sql

@@ -174,9 +174,9 @@ INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `tit
 ('sys_site', 'bx_tasks', 'tasks-home', '_bx_tasks_menu_item_title_system_entries_home', '_bx_tasks_menu_item_title_entries_home', 'page.php?i=tasks-home', '', '', 'tasks', '', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
 
 -- MENU: add to "add content" menu
--- SET @iAddMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_add_content_links' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
--- INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
--- ('sys_add_content_links', 'bx_tasks', 'create-task', '_bx_tasks_menu_item_title_system_create_entry', '_bx_tasks_menu_item_title_create_entry', 'page.php?i=create-task', '', '', 'tasks', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
+SET @iAddMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_add_content_links' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_add_content_links', 'bx_tasks', 'create-task', '_bx_tasks_menu_item_title_system_create_entry', '_bx_tasks_menu_item_title_create_entry', 'page.php?i=create-task', '', '', 'tasks', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
 
 -- MENU: create task form attachments (link, photo, video, etc)
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
@@ -311,7 +311,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 -- PRIVACY 
 
 INSERT INTO `sys_objects_privacy` (`object`, `module`, `action`, `title`, `default_group`, `table`, `table_field_id`, `table_field_author`, `override_class_name`, `override_class_file`) VALUES
-('bx_tasks_allow_view_to', 'bx_tasks', 'view', '_bx_tasks_form_entry_input_allow_view_to', '3', 'bx_tasks_tasks', 'id', 'author', '', '');
+('bx_tasks_allow_view_to', 'bx_tasks', 'view', '_bx_tasks_form_entry_input_allow_view_to', '', 'bx_tasks_tasks', 'id', 'author', 'BxTasksPrivacyView', 'modules/boonex/tasks/classes/BxTasksPrivacyView.php');
 
 
 -- ACL

+ 25 - 24
modules/boonex/tasks/install/sql/install.sql

@@ -522,35 +522,36 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_tasks', 'bx_tasks', 'gh_issue_url', '', '', 0, 'value', '_bx_tasks_form_entry_input_sys_gh_issue_url', '_bx_tasks_form_entry_input_gh_issue_url', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0);
 
 INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
-('bx_tasks_entry_add', 'title', 2147483647, 1, 1),
-('bx_tasks_entry_add', 'text', 2147483647, 1, 2),
-('bx_tasks_entry_add', 'type', 2147483647, 1, 3),
-('bx_tasks_entry_add', 'priority', 2147483647, 1, 4),
-('bx_tasks_entry_add', 'estimate', 2147483647, 1, 5),
-('bx_tasks_entry_add', 'initial_members', 192, 1, 6),
-('bx_tasks_entry_add', 'due_date', 192, 1, 7),
-('bx_tasks_entry_add', 'stickers', 2147483647, 1, 8),
-('bx_tasks_entry_add', 'controls', 2147483647, 1, 9),
-('bx_tasks_entry_add', 'do_publish', 2147483647, 1, 10),
-('bx_tasks_entry_add', 'do_cancel', 2147483647, 1, 11),
+('bx_tasks_entry_add', 'allow_view_to', 2147483647, 1, 1),
+('bx_tasks_entry_add', 'title', 2147483647, 1, 2),
+('bx_tasks_entry_add', 'text', 2147483647, 1, 3),
+('bx_tasks_entry_add', 'type', 2147483647, 1, 4),
+('bx_tasks_entry_add', 'priority', 2147483647, 1, 5),
+('bx_tasks_entry_add', 'estimate', 2147483647, 1, 6),
+('bx_tasks_entry_add', 'stickers', 2147483647, 1, 7),
+('bx_tasks_entry_add', 'initial_members', 192, 1, 8),
+('bx_tasks_entry_add', 'due_date', 192, 1, 9),
+('bx_tasks_entry_add', 'controls', 2147483647, 1, 10),
+('bx_tasks_entry_add', 'do_publish', 2147483647, 1, 11),
+('bx_tasks_entry_add', 'do_cancel', 2147483647, 1, 12),
 
 ('bx_tasks_entry_delete', 'delete_confirm', 2147483647, 1, 1),
 ('bx_tasks_entry_delete', 'do_submit', 2147483647, 1, 2),
 
-('bx_tasks_entry_edit', 'title', 2147483647, 1, 1),
-('bx_tasks_entry_edit', 'text', 2147483647, 1, 2),
-('bx_tasks_entry_edit', 'attachments', 2147483647, 1, 3),
-('bx_tasks_entry_edit', 'pictures', 2147483647, 1, 4),
-('bx_tasks_entry_edit', 'videos', 2147483647, 1, 5),
-('bx_tasks_entry_edit', 'files', 2147483647, 1, 6),
-('bx_tasks_entry_edit', 'allow_view_to', 2147483647, 1, 7),
-('bx_tasks_entry_edit', 'cf', 2147483647, 1, 8),
-('bx_tasks_entry_edit', 'initial_members', 192, 1, 9),
-('bx_tasks_entry_edit', 'due_date', 192, 1, 10),
+('bx_tasks_entry_edit', 'allow_view_to', 2147483647, 1, 1),
+('bx_tasks_entry_edit', 'title', 2147483647, 1, 2),
+('bx_tasks_entry_edit', 'text', 2147483647, 1, 3),
+('bx_tasks_entry_edit', 'attachments', 2147483647, 1, 4),
+('bx_tasks_entry_edit', 'pictures', 2147483647, 1, 5),
+('bx_tasks_entry_edit', 'videos', 2147483647, 1, 6),
+('bx_tasks_entry_edit', 'files', 2147483647, 1, 7),
+('bx_tasks_entry_edit', 'type', 2147483647, 1, 8),
+('bx_tasks_entry_edit', 'priority', 2147483647, 1, 9),
+('bx_tasks_entry_edit', 'estimate', 2147483647, 1, 10),
 ('bx_tasks_entry_edit', 'stickers', 2147483647, 1, 11),
-('bx_tasks_entry_edit', 'type', 2147483647, 1, 12),
-('bx_tasks_entry_edit', 'priority', 2147483647, 1, 13),
-('bx_tasks_entry_edit', 'estimate', 2147483647, 1, 14),
+('bx_tasks_entry_edit', 'initial_members', 192, 1, 12),
+('bx_tasks_entry_edit', 'due_date', 192, 1, 13),
+('bx_tasks_entry_edit', 'cf', 2147483647, 1, 14),
 ('bx_tasks_entry_edit', 'controls_edit', 2147483647, 1, 15),
 ('bx_tasks_entry_edit', 'do_submit', 2147483647, 1, 16),
 ('bx_tasks_entry_edit', 'do_cancel_edit', 2147483647, 1, 17),

+ 7 - 0
modules/boonex/tasks/js/tasks.js

@@ -113,6 +113,13 @@ BxTasksView.prototype.processTaskEditProperty = function (iContentId, sProperty,
     });
 };
 
+BxTasksView.prototype.changeAlloViewTo = function (oSource) {
+    var iContext = parseInt($(oSource).val());
+
+    if(iContext && iContext < 0)
+        document.location = bx_append_url_params(document.location.href, {context: iContext});
+};
+
 BxTasksView.prototype.hidePopup = function (oData) {
     $(".bx-popup-applied:visible").dolPopupHide();
 };