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

Ticket #2816 - Multi - Roles in Courses. Core refactoring.

AntonLV 6 лет назад
Родитель
Сommit
851ed5d2df

+ 0 - 1
modules/base/groups/classes/BxBaseModGroupsModule.php

@@ -81,7 +81,6 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
         return array(
             array('key' => '', 'value' => _t('_None')),
             array('key' => BX_BASE_MOD_GROUPS_MMODE_MULTI_ROLES, 'value' => _t($CNF['T']['option_members_mode_' . BX_BASE_MOD_GROUPS_MMODE_MULTI_ROLES])),
-            array('key' => BX_BASE_MOD_GROUPS_MMODE_PAID_JOIN, 'value' => _t($CNF['T']['option_members_mode_' . BX_BASE_MOD_GROUPS_MMODE_PAID_JOIN]))
         );
     }
 

+ 2 - 1
modules/boonex/courses/classes/BxCoursesConfig.php

@@ -69,10 +69,10 @@ class BxCoursesConfig extends BxBaseModGroupsConfig
 
             'PARAM_NUM_RSS' => 'bx_courses_num_rss',
             'PARAM_NUM_CONNECTIONS_QUICK' => 'bx_courses_num_connections_quick',
-
             'PARAM_SEARCHABLE_FIELDS' => 'bx_courses_searchable_fields',
             'PARAM_PER_PAGE_BROWSE_SHOWCASE' => 'bx_courses_per_page_browse_showcase',
             'PARAM_PER_PAGE_BROWSE_RECOMMENDED' => 'bx_courses_per_page_browse_recommended',
+            'PARAM_MMODE' => 'bx_courses_members_mode',
             'PARAM_USE_IN' => 'bx_courses_internal_notifications',
 
             // objects
@@ -176,6 +176,7 @@ class BxCoursesConfig extends BxBaseModGroupsConfig
                 'txt_ntfs_join_request' => '_bx_courses_txt_ntfs_join_request',
                 'txt_ntfs_fan_added' => '_bx_courses_txt_ntfs_fan_added',
                 'txt_ntfs_timeline_post_common' => '_bx_courses_txt_ntfs_timeline_post_common',
+                'option_members_mode_multi_roles' => '_bx_courses_option_members_mode_multi_roles',
                 'form_field_author' => '_bx_courses_form_entry_input_author',
                 'menu_item_title_befriend_sent' => '_bx_courses_menu_item_title_befriend_sent',
                 'menu_item_title_unfriend_cancel_request' => '_bx_courses_menu_item_title_unfriend_cancel_request',

+ 2 - 0
modules/boonex/courses/install/langs/en.xml

@@ -7,6 +7,8 @@
     <string name="_bx_courses_option_per_page_browse"><![CDATA[Number of items per page]]></string>
     <string name="_bx_courses_option_num_rss"><![CDATA[Number of items in RSS feed]]></string>
     <string name="_bx_courses_option_searchable_fields"><![CDATA[Searchable fields]]></string>
+    <string name="_bx_courses_option_members_mode"><![CDATA[Special mode for course members]]></string>
+    <string name="_bx_courses_option_members_mode_multi_roles"><![CDATA[Multi Roles]]></string>
     <string name="_bx_courses_option_internal_notifications"><![CDATA[Use internal notifications]]></string>
 
     <string name="_bx_courses_form_profile"><![CDATA[Courses]]></string>

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

@@ -17,7 +17,8 @@ INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `e
 ('bx_courses_per_page_browse_showcase', '32', @iCategId, '_sys_option_per_page_browse_showcase', 'digit', '', '', '', 15),
 ('bx_courses_per_page_browse_recommended', '10', @iCategId, '_sys_option_per_page_browse_recommended', 'digit', '', '', '', 16),
 ('bx_courses_searchable_fields', 'name,desc', @iCategId, '_bx_courses_option_searchable_fields', 'list', 'a:2:{s:6:"module";s:10:"bx_courses";s:6:"method";s:21:"get_searchable_fields";}', '', '', 30),
-('bx_courses_internal_notifications', '', @iCategId, '_bx_courses_option_internal_notifications', 'checkbox', '', '', '', 40);
+('bx_courses_members_mode', '', @iCategId, '_bx_courses_option_members_mode', 'select', 'a:2:{s:6:"module";s:10:"bx_courses";s:6:"method";s:24:"get_options_members_mode";}', '', '', 40), 
+('bx_courses_internal_notifications', '', @iCategId, '_bx_courses_option_internal_notifications', 'checkbox', '', '', '', 50);
 
 -- PAGES
 

+ 2 - 1
modules/boonex/courses/install/sql/install.sql

@@ -176,6 +176,7 @@ CREATE TABLE IF NOT EXISTS `bx_courses_admins` (
   `group_profile_id` int(10) unsigned NOT NULL,
   `fan_id` int(10) unsigned NOT NULL,
   `role` int(10) unsigned NOT NULL default '0',
+  `added` int(11) unsigned NOT NULL default '0',
   PRIMARY KEY (`id`),
   UNIQUE KEY `admin` (`group_profile_id`,`fan_id`)
 );
@@ -316,7 +317,7 @@ INSERT INTO `sys_form_pre_values`(`Key`, `Value`, `Order`, `LKey`, `LKey2`) VALU
 ('bx_courses_cats', '1', 1, '_bx_courses_cat_General', '');
 
 INSERT INTO `sys_form_pre_lists`(`key`, `title`, `module`, `use_for_sets`) VALUES
-('bx_courses_roles', '_bx_courses_pre_lists_roles', 'bx_courses', '0');
+('bx_courses_roles', '_bx_courses_pre_lists_roles', 'bx_courses', '1');
 
 INSERT INTO `sys_form_pre_values`(`Key`, `Value`, `Order`, `LKey`, `LKey2`) VALUES
 ('bx_courses_roles', '0', 1, '_bx_courses_role_regular', ''),

+ 43 - 0
modules/boonex/courses/js/main.js

@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Courses Courses
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+function BxCoursesMain(oOptions) {
+    this._sActionsUrl = oOptions.sActionUrl;
+    this._sObjName = oOptions.sObjName == undefined ? 'oBxCoursesMain' : oOptions.sObjName;
+    this._sObjNameGrid = oOptions.sObjNameGrid == undefined ? '' : oOptions.sObjNameGrid;
+    
+    this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'fade' : oOptions.sAnimationEffect;
+    this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
+
+    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+}
+
+BxCoursesMain.prototype.onClickSetRole = function(iFanProfileId, iRole) {
+    $('.bx-popup-applied:visible').dolPopupHide();
+
+    if(glGrids[this._sObjNameGrid] != undefined)
+        glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {role: iRole}, '', false, false);
+};
+
+BxCoursesMain.prototype.onClickSetRoleMulti = function(oElement, iFanProfileId, iRole) {
+    if(!glGrids[this._sObjNameGrid])
+        return;
+
+    var oSiblings = $(oElement).parents('.bx-base-group-sr-role:first').siblings();
+    if(iRole == 0)
+        oSiblings.find('input:checked').removeAttr('checked');
+    else
+        oSiblings.find("input[value = '0']:checked").removeAttr('checked');
+
+    var sRoles = $(oElement).parents('.bx-base-group-sr-roles:first').find('input:checked').serialize();
+    glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {}, sRoles, false, false);
+};
+
+/** @} */

+ 1 - 0
modules/boonex/courses/template/set_role_popup.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/set_role_popup.html />

+ 10 - 0
modules/boonex/groups/classes/BxGroupsModule.php

@@ -20,6 +20,16 @@ class BxGroupsModule extends BxBaseModGroupsModule
 
         $this->_aSearchableNamesExcept[] = $this->_oConfig->CNF['FIELD_JOIN_CONFIRMATION'];
     }
+
+    public function serviceGetOptionsMembersMode()
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $aOptions = parent::serviceGetOptionsMembersMode();
+        $aOptions[] = array('key' => BX_BASE_MOD_GROUPS_MMODE_PAID_JOIN, 'value' => _t($CNF['T']['option_members_mode_' . BX_BASE_MOD_GROUPS_MMODE_PAID_JOIN]));
+
+        return $aOptions;
+    }
 }
 
 /** @} */

+ 2 - 0
modules/boonex/russian/data/langs/bx_courses/ru.xml

@@ -7,6 +7,8 @@
     <string name="_bx_courses_option_per_page_browse"><![CDATA[Количество элементов на странице]]></string>
     <string name="_bx_courses_option_num_rss"><![CDATA[Количество элементов в ленте RSS]]></string>
     <string name="_bx_courses_option_searchable_fields"><![CDATA[Поля для поиска]]></string>
+    <string name="_bx_courses_option_members_mode"><![CDATA[Спец. режим для членов пространства]]></string>
+    <string name="_bx_courses_option_members_mode_multi_roles"><![CDATA[Множественные роли]]></string>
     <string name="_bx_courses_option_internal_notifications"><![CDATA[Использовать встроенную нотификацию]]></string>
 
     <string name="_bx_courses_form_profile"><![CDATA[Курсы]]></string>

+ 0 - 10
modules/boonex/spaces/classes/BxSpacesModule.php

@@ -23,16 +23,6 @@ class BxSpacesModule extends BxBaseModGroupsModule
         $this->_aSearchableNamesExcept[] = $this->_oConfig->CNF['FIELD_JOIN_CONFIRMATION'];
     }
 
-    public function serviceGetOptionsMembersMode()
-    {
-        $CNF = &$this->_oConfig->CNF;
-
-        return array(
-            array('key' => '', 'value' => _t('_None')),
-            array('key' => BX_BASE_MOD_GROUPS_MMODE_MULTI_ROLES, 'value' => _t($CNF['T']['option_members_mode_' . BX_BASE_MOD_GROUPS_MMODE_MULTI_ROLES])),
-        );
-    }
-
     public function serviceGetSafeServices()
     {
         $a = parent::serviceGetSafeServices();