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

Ticket #2816 - Usage in Courses. Bug fixing in Core.

AntonLV 6 лет назад
Родитель
Сommit
70a88a8050

+ 5 - 5
modules/base/groups/classes/BxBaseModGroupsGridConnections.php

@@ -94,15 +94,15 @@ class BxBaseModGroupsGridConnections extends BxDolGridConnections
             $sHtmlIdPrefix = str_replace('_', '-', $this->_sContentModule) . '-set-role-';
 
             $aMenuItems = array();
-            foreach($this->_aRoles as $iRole => $sRole)
+            foreach($this->_aRoles as $iRoleId => $sRoleTitle)
                 $aMenuItems[] = array(
-                    'id' => $sHtmlIdPrefix . $iRole, 
-                    'name' => $sHtmlIdPrefix . $iRole, 
+                    'id' => $sHtmlIdPrefix . $iRoleId, 
+                    'name' => $sHtmlIdPrefix . $iRoleId, 
                     'class' => '', 
                     'link' => 'javascript:void(0)', 
-                    'onclick' => $sJsObject . '.onClickSetRole(' . $iId . ', ' . $iRole . ')',
+                    'onclick' => $sJsObject . '.onClickSetRole(' . $iId . ', ' . $iRoleId . ')',
                     'target' => '_self', 
-                    'title' => $sRole, 
+                    'title' => $sRoleTitle, 
                     'active' => 1
                 );            
 

+ 4 - 0
modules/boonex/courses/classes/BxCoursesConfig.php

@@ -124,6 +124,7 @@ class BxCoursesConfig extends BxBaseModGroupsConfig
             'OBJECT_CONNECTIONS' => 'bx_courses_fans',
             'OBJECT_UPLOADERS_COVER' => array('bx_courses_cover_crop'),
             'OBJECT_UPLOADERS_PICTURE' => array('bx_courses_picture_crop'),
+            'OBJECT_PRE_LIST_ROLES' => 'bx_courses_roles',
 
             'BADGES_AVALIABLE' => true,
             
@@ -135,6 +136,7 @@ class BxCoursesConfig extends BxBaseModGroupsConfig
             'EMAIL_FAN_BECOME_ADMIN' => 'bx_courses_fan_become_admin',
             'EMAIL_ADMIN_BECOME_FAN' => 'bx_courses_admin_become_fan',
             'EMAIL_FAN_REMOVE' => 'bx_courses_fan_remove',
+            'EMAIL_FAN_SET_ROLE' => 'bx_courses_set_role',
             'EMAIL_JOIN_REJECT' => 'bx_courses_join_reject',
 
             'TRIGGER_MENU_PROFILE_VIEW_SUBMENU' => 'trigger_group_view_submenu',
@@ -205,11 +207,13 @@ class BxCoursesConfig extends BxBaseModGroupsConfig
         );
 
         $this->_aJsClasses = array(
+            'main' => 'BxCoursesMain',
             'manage_tools' => 'BxCoursesManageTools',
             'invite_popup' => 'BxCoursesInvitePopup'
         );
 
         $this->_aJsObjects = array(
+            'main' => 'oBxCoursesMain',
             'manage_tools' => 'oBxCoursesManageTools',
             'invite_popup' => 'oBxCoursesInvitePopup'
         );

+ 19 - 6
modules/boonex/courses/install/langs/en.xml

@@ -276,12 +276,14 @@
     <string name="_bx_courses_txt_account_pending"><![CDATA[This course is pending approval, please wait until it is activated.]]></string>
     <string name="_bx_courses_txt_account_suspended"><![CDATA[This course is suspended.]]></string>
     <string name="_bx_courses_txt_N_fans"><![CDATA[{0} students]]></string>
+    <string name="_bx_courses_txt_role"><![CDATA[Role]]></string>
     <string name="_bx_courses_txt_sample_single"><![CDATA[course]]></string>
     <string name="_bx_courses_txt_sample_single_with_article"><![CDATA[a course]]></string>
     <string name="_bx_courses_txt_sample_comment_single"><![CDATA[comment to course]]></string>
     <string name="_bx_courses_txt_sample_vote_single"><![CDATA[vote to course]]></string>
     <string name="_bx_courses_txt_sample_score_up_single"><![CDATA[score up vote to course]]></string>
     <string name="_bx_courses_txt_sample_score_down_single"><![CDATA[score down vote to course]]></string>
+    <string name="_bx_courses_txt_set_role"><![CDATA[Set Role]]></string>
     <string name="_bx_courses_txt_to_admins"><![CDATA[To Instructors]]></string>
     <string name="_bx_courses_txt_from_admins"><![CDATA[From Instructors]]></string>
     <string name="_bx_courses_txt_private_entry"><![CDATA[Private course]]></string>
@@ -303,6 +305,11 @@
     <string name="_bx_courses_pre_lists_cats"><![CDATA[Course categories]]></string>
     <string name="_bx_courses_cat_General"><![CDATA[General]]></string>
 
+    <string name="_bx_courses_pre_lists_roles"><![CDATA[Course roles]]></string>
+    <string name="_bx_courses_role_regular"><![CDATA[Student]]></string>
+    <string name="_bx_courses_role_administrator"><![CDATA[Instructor]]></string>
+    <string name="_bx_courses_role_moderator"><![CDATA[Assistant]]></string>
+
     <string name="_bx_courses_email_join_request"><![CDATA[Course join request]]></string>
     <string name="_bx_courses_email_join_request_subject"><![CDATA[Request to join your course]]></string>
     <string name="_bx_courses_email_join_request_body"><![CDATA[{email_header}
@@ -327,21 +334,27 @@
 <p>Your profile was removed from <a href="{EntryUrl}">{EntryTitle}</a> course by the course admin.</p>
 {email_footer}]]></string>
 
-    <string name="_bx_courses_email_fan_become_admin"><![CDATA[Course admin status was granted]]></string>
-    <string name="_bx_courses_email_fan_become_admin_subject"><![CDATA[You are a course admin now]]></string>
+    <string name="_bx_courses_email_fan_become_admin"><![CDATA[Course instructor status was granted]]></string>
+    <string name="_bx_courses_email_fan_become_admin_subject"><![CDATA[You are a course instructor now]]></string>
     <string name="_bx_courses_email_fan_become_admin_body"><![CDATA[{email_header}
-<p>You are an admin of <a href="{EntryUrl}">{EntryTitle}</a> course now.</p>
+<p>You are an instructor of <a href="{EntryUrl}">{EntryTitle}</a> course now.</p>
 {email_footer}]]></string>
 
-    <string name="_bx_courses_email_admin_become_fan"><![CDATA[Course admin status was revoked]]></string>
-    <string name="_bx_courses_email_admin_become_fan_subject"><![CDATA[Your course admin status was revoked]]></string>
+    <string name="_bx_courses_email_admin_become_fan"><![CDATA[Course instructor status was revoked]]></string>
+    <string name="_bx_courses_email_admin_become_fan_subject"><![CDATA[Your course instructor status was revoked]]></string>
     <string name="_bx_courses_email_admin_become_fan_body"><![CDATA[{email_header}
-<p>Your admin status was revoked from <a href="{EntryUrl}">{EntryTitle}</a> course.</p>
+<p>Your instructor status was revoked from <a href="{EntryUrl}">{EntryTitle}</a> course.</p>
 {email_footer}]]></string>
 
     <string name="_bx_courses_email_invitation"><![CDATA[Invitation to course]]></string>
     <string name="_bx_courses_email_invitation_subject"><![CDATA[Invitation to "{EntryTitle}" course]]></string>
     <string name="_bx_courses_email_invitation_body"><![CDATA[{email_header}
 <p><a href="{InviterUrl}">{InviterDisplayName}</a> invited you to <a href="{EntryUrl}">{EntryTitle} course</a>.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_courses_email_set_role"><![CDATA[Course member status was changed]]></string>
+    <string name="_bx_courses_email_set_role_subject"><![CDATA[Your course status was changed]]></string>
+    <string name="_bx_courses_email_set_role_body"><![CDATA[{email_header}
+<p>Your status in <a href="{EntryUrl}">{EntryTitle}</a> course was changed to <b>{Role}</b>.</p>
 {email_footer}]]></string>
 </resources>

+ 6 - 4
modules/boonex/courses/install/sql/enable.sql

@@ -248,7 +248,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_courses_view_actions_all', 'bx_courses', 'profile-fan-remove', '_bx_courses_menu_item_title_system_leave_entry', '', '', '', '', '', '', '', 0, 2147483647, '', 1, 0, 20),
 ('bx_courses_view_actions_all', 'bx_courses', 'profile-subscribe-add', '_bx_courses_menu_item_title_system_subscribe', '', '', '', '', '', '', '', 0, 2147483647, '', 1, 0, 30),
 ('bx_courses_view_actions_all', 'bx_courses', 'profile-subscribe-remove', '_bx_courses_menu_item_title_system_unsubscribe', '', '', '', '', '', '', '', 0, 2147483647, '', 1, 0, 40),
-('bx_courses_view_actions_all', 'bx_courses', 'profile-set-badges', '_sys_menu_item_title_system_set_badges', '', '', '', '', '', '', '', 0, 192, 'a:2:{s:6:"module";s:9:"bx_events";s:6:"method";s:19:"is_badges_avaliable";}', 1, 0, 50),
+('bx_courses_view_actions_all', 'bx_courses', 'profile-set-badges', '_sys_menu_item_title_system_set_badges', '', '', '', '', '', '', '', 0, 192, 'a:2:{s:6:"module";s:10:"bx_courses";s:6:"method";s:19:"is_badges_avaliable";}', 1, 0, 50),
 ('bx_courses_view_actions_all', 'bx_courses', 'comment', '_sys_menu_item_title_system_va_comment', '', '', '', '', '', '', '', 0, 2147483647, '', 0, 0, 200),
 ('bx_courses_view_actions_all', 'bx_courses', 'view', '_sys_menu_item_title_system_va_view', '', '', '', '', '', '', '', 0, 2147483647, '', 1, 0, 210),
 ('bx_courses_view_actions_all', 'bx_courses', 'vote', '_sys_menu_item_title_system_va_vote', '', '', '', '', '', '', '', 0, 2147483647, '', 1, 0, 220),
@@ -459,12 +459,13 @@ INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `fie
 
 INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `order`) VALUES
 ('bx_courses_fans', 'name', '_sys_name', '50%', '', 10),
-('bx_courses_fans', 'actions', '', '50%', '', 20);
+('bx_courses_fans', 'role', '_bx_courses_txt_role', '10%', '', 15),
+('bx_courses_fans', 'actions', '', '40%', '', 20);
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 ('bx_courses_fans', 'single', 'accept', '_sys_accept', '', 0, 10),
-('bx_courses_fans', 'single', 'to_admins', '_bx_courses_txt_to_admins', '', 0, 20),
-('bx_courses_fans', 'single', 'from_admins', '_bx_courses_txt_from_admins', '', 0, 30),
+('bx_courses_fans', 'single', 'set_role', '_bx_courses_txt_set_role', '', 0, 20),
+('bx_courses_fans', 'single', 'set_role_submit', '', '', 0, 21),
 ('bx_courses_fans', 'single', 'delete', '', 'remove', 1, 40);
 
 
@@ -555,6 +556,7 @@ INSERT INTO `sys_email_templates` (`Module`, `NameSystem`, `Name`, `Subject`, `B
 ('bx_courses', '_bx_courses_email_fan_remove', 'bx_courses_fan_remove', '_bx_courses_email_fan_remove_subject', '_bx_courses_email_fan_remove_body'),
 ('bx_courses', '_bx_courses_email_fan_become_admin', 'bx_courses_fan_become_admin', '_bx_courses_email_fan_become_admin_subject', '_bx_courses_email_fan_become_admin_body'),
 ('bx_courses', '_bx_courses_email_admin_become_fan', 'bx_courses_admin_become_fan', '_bx_courses_email_admin_become_fan_subject', '_bx_courses_email_admin_become_fan_body'),
+('bx_courses', '_bx_courses_email_set_role', 'bx_courses_set_role', '_bx_courses_email_set_role_subject', '_bx_courses_email_set_role_body'),
 ('bx_courses', '_bx_courses_email_invitation', 'bx_courses_invitation', '_bx_courses_email_invitation_subject', '_bx_courses_email_invitation_body');
 
 -- UPLOADERS

+ 8 - 0
modules/boonex/courses/install/sql/install.sql

@@ -175,6 +175,7 @@ CREATE TABLE IF NOT EXISTS `bx_courses_admins` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `group_profile_id` int(10) unsigned NOT NULL,
   `fan_id` int(10) unsigned NOT NULL,
+  `role` int(10) unsigned NOT NULL default '0',
   PRIMARY KEY (`id`),
   UNIQUE KEY `admin` (`group_profile_id`,`fan_id`)
 );
@@ -314,6 +315,13 @@ INSERT INTO `sys_form_pre_values`(`Key`, `Value`, `Order`, `LKey`, `LKey2`) VALU
 ('bx_courses_cats', '', 0, '_sys_please_select', ''),
 ('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');
+
+INSERT INTO `sys_form_pre_values`(`Key`, `Value`, `Order`, `LKey`, `LKey2`) VALUES
+('bx_courses_roles', '0', 1, '_bx_courses_role_regular', ''),
+('bx_courses_roles', '1', 2, '_bx_courses_role_administrator', ''),
+('bx_courses_roles', '2', 3, '_bx_courses_role_moderator', '');
 
 -- COMMENTS
 INSERT INTO `sys_objects_cmts` (`Name`, `Module`, `Table`, `CharsPostMin`, `CharsPostMax`, `CharsDisplayMax`, `Html`, `PerView`, `PerViewReplies`, `BrowseType`, `IsBrowseSwitch`, `PostFormPosition`, `NumberOfLevels`, `IsDisplaySwitch`, `IsRatable`, `ViewingThreshold`, `IsOn`, `RootStylePrefix`, `BaseUrl`, `ObjectVote`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldAuthor`, `TriggerFieldTitle`, `TriggerFieldComments`, `ClassName`, `ClassFile`) VALUES

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

@@ -27,7 +27,7 @@ DELETE FROM `sys_form_display_inputs` WHERE `display_name` IN('bx_course_add', '
 
 DELETE FROM `sys_form_pre_lists` WHERE `module` = 'bx_courses';
 
-DELETE FROM `sys_form_pre_values` WHERE `Key` IN('bx_courses_cats');
+DELETE FROM `sys_form_pre_values` WHERE `Key` IN('bx_courses_cats', 'bx_courses_roles');
 
 -- COMMENTS
 DELETE FROM `sys_objects_cmts` WHERE `Name` = 'bx_courses';

+ 6 - 1
modules/boonex/courses/template/css/main.css

@@ -1 +1,6 @@
-@import url(../../../../base/groups/template/css/main.css);
+@import url(../../../../base/groups/template/css/main.css);
+
+/*-- Cource Roles --*/
+#bx-courses-set-role-popup .bx-menu-ver {
+    margin: 0;
+}

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

@@ -276,12 +276,14 @@
     <string name="_bx_courses_txt_account_pending"><![CDATA[Этот курс ожидает одобрения. Пожалуйста, дождитесь его активации.]]></string>
     <string name="_bx_courses_txt_account_suspended"><![CDATA[Этот курс заблокирован.]]></string>
     <string name="_bx_courses_txt_N_fans"><![CDATA[{0} студентов]]></string>
+    <string name="_bx_courses_txt_role"><![CDATA[Роль]]></string>
     <string name="_bx_courses_txt_sample_single"><![CDATA[курс]]></string>
     <string name="_bx_courses_txt_sample_single_with_article"><![CDATA[курс]]></string>
     <string name="_bx_courses_txt_sample_comment_single"><![CDATA[комментарий к курсу]]></string>
     <string name="_bx_courses_txt_sample_vote_single"><![CDATA[голос за курс]]></string>
     <string name="_bx_courses_txt_sample_score_up_single"><![CDATA[голос за курс]]></string>
     <string name="_bx_courses_txt_sample_score_down_single"><![CDATA[голос против курса]]></string>
+    <string name="_bx_courses_txt_set_role"><![CDATA[Задать роль]]></string>
     <string name="_bx_courses_txt_to_admins"><![CDATA[В преподаватели]]></string>
     <string name="_bx_courses_txt_from_admins"><![CDATA[Из преподавателей]]></string>
     <string name="_bx_courses_txt_private_entry"><![CDATA[Приватный курс]]></string>
@@ -303,6 +305,11 @@
     <string name="_bx_courses_pre_lists_cats"><![CDATA[Категории курсов]]></string>
     <string name="_bx_courses_cat_General"><![CDATA[Обобщение]]></string>
 
+    <string name="_bx_courses_pre_lists_roles"><![CDATA[Роли на курсах]]></string>
+    <string name="_bx_courses_role_regular"><![CDATA[Студент]]></string>
+    <string name="_bx_courses_role_administrator"><![CDATA[Преподаватель]]></string>
+    <string name="_bx_courses_role_moderator"><![CDATA[Помощник]]></string>
+
     <string name="_bx_courses_email_join_request"><![CDATA[Запрос на присоединение к курсу]]></string>
     <string name="_bx_courses_email_join_request_subject"><![CDATA[Запрос на присоединение к курсу]]></string>
     <string name="_bx_courses_email_join_request_body"><![CDATA[{email_header}
@@ -343,5 +350,11 @@
     <string name="_bx_courses_email_invitation_subject"><![CDATA[Приглашение на курс "{EntryTitle}"]]></string>
     <string name="_bx_courses_email_invitation_body"><![CDATA[{email_header}
 <p><a href="{InviterUrl}">{InviterDisplayName}</a> пригласил Вас на курс <a href="{EntryUrl}">{EntryTitle}</a>.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_courses_email_set_role"><![CDATA[Изменение статуса на курсе]]></string>
+    <string name="_bx_courses_email_set_role_subject"><![CDATA[Ваш статус на курсе был изменен]]></string>
+    <string name="_bx_courses_email_set_role_body"><![CDATA[{email_header}
+<p>Ваш статус на курсе <a href="{EntryUrl}">{EntryTitle}</a> был изменен на <b>{Role}</b>.</p>
 {email_footer}]]></string>
 </resources>