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

Ticket #2816 - Multi - Roles in Spaces.

AntonLV 6 лет назад
Родитель
Сommit
065d49e87d

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

@@ -9,6 +9,8 @@
     <string name="_bx_spaces_option_per_page_browse"><![CDATA[Количество элементов на странице]]></string>
     <string name="_bx_spaces_option_num_rss"><![CDATA[Количество элементов в ленте RSS]]></string>
     <string name="_bx_spaces_option_searchable_fields"><![CDATA[Поля для поиска]]></string>
+    <string name="_bx_spaces_option_members_mode"><![CDATA[Спец. режим для членов пространства]]></string>
+    <string name="_bx_spaces_option_members_mode_multi_roles"><![CDATA[Множественные роли]]></string>
 
     <string name="_bx_spaces_form_profile"><![CDATA[Пространства]]></string>
     <string name="_bx_spaces_form_profile_display_add"><![CDATA[Добавление пространства]]></string>

+ 3 - 0
modules/boonex/spaces/classes/BxSpacesConfig.php

@@ -76,6 +76,8 @@ class BxSpacesConfig extends BxBaseModGroupsConfig
             'PARAM_PER_PAGE_BROWSE_SHOWCASE' => 'bx_spaces_per_page_browse_showcase',
             'PARAM_PER_PAGE_BROWSE_RECOMMENDED' => 'bx_spaces_per_page_browse_recommended',
 
+            'PARAM_MMODE' => 'bx_spaces_members_mode',
+
             // objects
             'OBJECT_STORAGE' => 'bx_spaces_pics',
             'OBJECT_STORAGE_COVER' => 'bx_spaces_pics',
@@ -176,6 +178,7 @@ class BxSpacesConfig extends BxBaseModGroupsConfig
                 'txt_ntfs_join_request' => '_bx_spaces_txt_ntfs_join_request',
                 'txt_ntfs_fan_added' => '_bx_spaces_txt_ntfs_fan_added',
                 'txt_ntfs_timeline_post_common' => '_bx_spaces_txt_ntfs_timeline_post_common',
+                'option_members_mode_multi_roles' => '_bx_spaces_option_members_mode_multi_roles',
                 'form_field_author' => '_bx_spaces_form_entry_input_author',
                 'menu_item_title_befriend_sent' => '_bx_spaces_menu_item_title_befriend_sent',
                 'menu_item_title_unfriend_cancel_request' => '_bx_spaces_menu_item_title_unfriend_cancel_request',

+ 11 - 1
modules/boonex/spaces/classes/BxSpacesModule.php

@@ -22,7 +22,17 @@ 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();

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

@@ -8,6 +8,8 @@
 	<string name="_bx_spaces_option_per_page_browse"><![CDATA[Number of items per page]]></string>
 	<string name="_bx_spaces_option_num_rss"><![CDATA[Number of items in RSS feed]]></string>
 	<string name="_bx_spaces_option_searchable_fields"><![CDATA[Searchable fields]]></string>
+        <string name="_bx_spaces_option_members_mode"><![CDATA[Special mode for space members]]></string>
+        <string name="_bx_spaces_option_members_mode_multi_roles"><![CDATA[Multi Roles]]></string>
 
 	<string name="_bx_spaces_form_profile"><![CDATA[Spaces]]></string>
 	<string name="_bx_spaces_form_profile_display_add"><![CDATA[Add Space]]></string>

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

@@ -17,7 +17,8 @@ INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `e
 ('bx_spaces_num_rss', '10', @iCategId, '_bx_spaces_option_num_rss', 'digit', '', '', '', 12),
 ('bx_spaces_per_page_browse_showcase', '32', @iCategId, '_sys_option_per_page_browse_showcase', 'digit', '', '', '', 15),
 ('bx_spaces_per_page_browse_recommended', '10', @iCategId, '_sys_option_per_page_browse_recommended', 'digit', '', '', '', 16),
-('bx_spaces_searchable_fields', 'space_name,space_desc', @iCategId, '_bx_spaces_option_searchable_fields', 'list', 'a:2:{s:6:"module";s:9:"bx_spaces";s:6:"method";s:21:"get_searchable_fields";}', '', '', 30);
+('bx_spaces_searchable_fields', 'space_name,space_desc', @iCategId, '_bx_spaces_option_searchable_fields', 'list', 'a:2:{s:6:"module";s:9:"bx_spaces";s:6:"method";s:21:"get_searchable_fields";}', '', '', 30),
+('bx_spaces_members_mode', '', @iCategId, '_bx_spaces_option_members_mode', 'select', 'a:2:{s:6:"module";s:9:"bx_spaces";s:6:"method";s:24:"get_options_members_mode";}', '', '', 40);
 
 
 -- PAGES

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

@@ -196,6 +196,7 @@ CREATE TABLE IF NOT EXISTS `bx_spaces_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`)
 );
@@ -343,7 +344,7 @@ INSERT INTO `sys_form_pre_values`(`Key`, `Value`, `Order`, `LKey`, `LKey2`) VALU
 ('bx_spaces_cats', '6', 6, '_bx_spaces_cat_Uncategorised', '');
 
 INSERT INTO `sys_form_pre_lists`(`key`, `title`, `module`, `use_for_sets`) VALUES
-('bx_spaces_roles', '_bx_spaces_pre_lists_roles', 'bx_spaces', '0');
+('bx_spaces_roles', '_bx_spaces_pre_lists_roles', 'bx_spaces', '1');
 
 INSERT INTO `sys_form_pre_values`(`Key`, `Value`, `Order`, `LKey`, `LKey2`) VALUES
 ('bx_spaces_roles', '0', 1, '_bx_spaces_role_regular', ''),

+ 14 - 0
modules/boonex/spaces/js/main.js

@@ -26,4 +26,18 @@ BxSpacesMain.prototype.onClickSetRole = function(iFanProfileId, iRole) {
         glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {role: iRole}, '', false, false);
 };
 
+BxSpacesMain.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/spaces/template/set_role_popup.html

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