Procházet zdrojové kódy

Adding new announcement UI see BT#7815

Julio Montoya před 11 roky
rodič
revize
3febc10e3a

+ 15 - 7
main/announcements/announcements.inc.php

@@ -572,20 +572,27 @@ class AnnouncementManager
             $to_already_selected = array();
         }
 
-        echo "<table id=\"recipient_list\" style=\"display: none;\">";
+        echo "<table id=\"recipient_list\" >";
         echo '<tr>';
+        echo '<td>';
+        echo '<label><input type="checkbox" id="send_to_all_users">'.get_lang('SendToAllUsers') . "</label>";
+        echo "</td>";
+        echo '</tr>';
+        echo '<tr>';
+
 
         // the form containing all the groups and all the users of the course
         echo '<td>';
         echo "<strong>" . get_lang('Users') . "</strong><br />";
+
         self::construct_not_selected_select_form($group_list, $user_list, $to_already_selected);
         echo "</td>";
 
         // the buttons for adding or removing groups/users
         echo '<td valign="middle">';
-        echo '<button class="arrowr" type="button" onClick="javascript: move(this.form.elements[0], this.form.elements[3])" onClick="javascript: move(this.form.elements[0], this.form.elements[3])"></button>';
+        echo '<button class="arrowr" type="button" onClick="javascript: move(this.form.elements[1], this.form.elements[4])" onClick="javascript: move(this.form.elements[1], this.form.elements[4])"></button>';
         echo '<br /> <br />';
-        echo '<button class="arrowl" type="button" onClick="javascript: move(this.form.elements[3], this.form.elements[0])" onClick="javascript: move(this.form.elements[3], this.form.elements[0])"></button>';
+        echo '<button class="arrowl" type="button" onClick="javascript: move(this.form.elements[4], this.form.elements[1])" onClick="javascript: move(this.form.elements[4], this.form.elements[1])"></button>';
         echo "</td>";
 
         echo "<td>";
@@ -603,10 +610,10 @@ class AnnouncementManager
      */
     public static function show_to_form_group($group_id)
     {
-        echo "<table id=\"recipient_list\" style=\"display: none;\">";
+        echo "<table id=\"recipient_list\" >";
         echo "<tr>";
         echo "<td>";
-        echo "<select name=\"not_selected_form[]\" size=5 style=\"width:200px\" multiple>";
+        echo "<select id=\"not_selected_form\" name=\"not_selected_form[]\" size=5 style=\"width:200px\" multiple>";
         $group_users = GroupManager::getStudentsAndTutors($group_id);
         foreach ($group_users as $user) {
             echo '<option value="' . $user['user_id'] . '" title="' . sprintf(get_lang('LoginX'), $user['username']) . '" >' .
@@ -637,7 +644,7 @@ class AnnouncementManager
      */
     public static function construct_not_selected_select_form($group_list = null, $user_list = null, $to_already_selected)
     {
-        echo '<select name="not_selected_form[]" size="7" class="span4" multiple>';
+        echo '<select id="not_selected_form" name="not_selected_form[]" size="7" class="span4" multiple>';
         // adding the groups to the select form
         if ($group_list) {
             foreach ($group_list as $this_group) {
@@ -658,7 +665,8 @@ class AnnouncementManager
         if ($user_list) {
             foreach ($user_list as $this_user) {
                 if (is_array($to_already_selected)) {
-                    if (!in_array("USER:" . $this_user['user_id'], $to_already_selected)) { // $to_already_selected is the array containing the users (and groups) that are already selected
+                    if (!in_array("USER:" . $this_user['user_id'], $to_already_selected)) {
+                        // $to_already_selected is the array containing the users (and groups) that are already selected
                         echo "<option value=\"USER:" . $this_user['user_id'] . "\" title='" . sprintf(get_lang('LoginX'), $this_user['username']) . "'>",
                         "", api_get_person_name($this_user['firstname'], $this_user['lastname']),
                         "</option>";

+ 5 - 7
main/announcements/announcements.php

@@ -53,7 +53,6 @@ $length 	= '36';
 // Database Table Definitions
 $tbl_courses			= Database::get_main_table(TABLE_MAIN_COURSE);
 $tbl_sessions			= Database::get_main_table(TABLE_MAIN_SESSION);
-
 $tbl_announcement		= Database::get_course_table(TABLE_ANNOUNCEMENT);
 $tbl_item_property  	= Database::get_course_table(TABLE_ITEM_PROPERTY);
 
@@ -607,12 +606,11 @@ if ($display_form) {
 	if (empty($group_id)) {
 		echo '	<div class="control-group">
 					<label class="control-label">'.
-						Display::return_icon('group.png', get_lang('ModifyRecipientList'), array ('align' => 'absmiddle'),ICON_SIZE_SMALL).'<a href="#" onclick="toggle_sendto();">'.get_lang('SentTo').'</a>
+						Display::return_icon('group.png', get_lang('ModifyRecipientList'), array ('align' => 'absmiddle'),ICON_SIZE_SMALL).' '.get_lang('SentTo').'
 					</label>
 					<div class="controls">';
-		if (isset($_GET['id']) && is_array($to)) {
-			echo '<span id="recipient_overview">&nbsp;</span>';
-		} elseif (isset($_GET['remind_inactive'])) {
+
+		if (isset($_GET['remind_inactive'])) {
 			$email_ann = '1';
 			$_SESSION['select_groupusers']="show";
 			$content_to_modify = sprintf(get_lang('RemindInactiveLearnersMailContent'), api_get_setting('siteName'), 7);
@@ -642,7 +640,7 @@ if ($display_form) {
 				$content_to_modify = get_lang('YourAccountIsActiveYouCanLoginAndCheckYourCourses');
 			}
 		} else {
-			echo '<span id="recipient_overview">' . get_lang('Everybody') . '</span>';
+			//echo '<span id="recipient_overview">' . get_lang('Everybody') . '</span>';
 		}
 		AnnouncementManager::show_to_form($to);
 		echo '		</div>
@@ -741,7 +739,7 @@ if ($display_form) {
 	if (empty($group_id)) {
 		echo '<input type="hidden" name="submitAnnouncement" value="OK">';
 		echo '<input type="hidden" name="sec_token" value="'.$stok.'" />';
-		echo '<button class="btn save" type="button"  value="'.'  '.get_lang('Send').'  '.'" onclick="selectAll(this.form.elements[3],true)" >'.get_lang('ButtonPublishAnnouncement').'</button><br /><br />';
+		echo '<button class="btn save" type="button"  value="'.'  '.get_lang('Send').'  '.'" onclick="selectAll(this.form.elements[4],true)" >'.get_lang('ButtonPublishAnnouncement').'</button><br /><br />';
 	} else {
 		echo '<input type="hidden" name="submitAnnouncement" value="OK">';
 		echo '<input type="hidden" name="sec_token" value="'.$stok.'" />';

+ 58 - 28
main/announcements/resources/js/main.js

@@ -8,6 +8,35 @@ $(function() {
     $('.resizable-vertical').resizable({
         handles: "n, s"
     });
+
+    $('#send_to_all_users').click(function() {
+        var checked = $(this).attr('checked');
+
+        if (!checked) {
+            $('#selectedform option').each(function() {
+                var val = $(this).val();
+                var text = $(this).text();
+                if (val.substr(0 , 4) == 'USER') {
+                    $('#selectedform').find('[value="'+val+'"]').remove();
+                    $('#not_selected_form').append(new Option(text, val));
+                }
+            });
+        }
+
+        $('#not_selected_form option').each(function() {
+            var val = $(this).val();
+            var text = $(this).text();
+            if (val.substr(0 , 4) == 'USER') {
+                if (checked) {
+                    // Add
+                    $('#selectedform').append(new Option(text, val));
+                    $('#not_selected_form').find('[value="'+val+'"]').remove();
+                }
+            }
+        });
+
+
+    });
 });
 
 var Announcement = {};
@@ -66,7 +95,7 @@ function move_selected_option(from, to){
 }
 
 function update_hidden_field(name){
-    
+
     var select = $('#' + name + '_selected');
     var options = $("option", select)
     //update hidden field
@@ -77,7 +106,7 @@ function update_hidden_field(name){
         keys.push(option.val());
     });
     keys = keys.join(',');
-    
+
     var hidden = $('#' + name);
     hidden.val(keys);
 }
@@ -96,9 +125,9 @@ function toggle_list_selector(name)
         list.hide();
         overview.show();
     }
-    
+
     var select = $('#' + name + '_selected');
-    
+
     //update overview
     var content = [];
     var options = $("option", select)
@@ -107,16 +136,17 @@ function toggle_list_selector(name)
         option = $(option);
         content.push(option.text());
     });
-    
+
     content = content.join(', ');
     content = (content == '') ? lang.Everybody : content;
     overview.text(content);
 }
 
 
+
 function toggle_sendto()
 {
-    var list = $('#recipient_list');
+    /*var list = $('#recipient_list');
     var overview = $('#recipient_overview');
     if(list.css('display') == 'none'){
         list.show();
@@ -127,11 +157,11 @@ function toggle_sendto()
         list.hide();
         overview.show();
     }
-    
+
     var selected = $('#selectedform');
     var content = list_box_content(selected[0])
     content = (content == '') ? lang.Everybody : content;
-    overview.text(content);
+    overview.text(content);*/
 }
 
 function list_box_content(box)
@@ -158,7 +188,7 @@ function move(fbox, tbox) {
     var arrFboxIsDisabled = []; // if this from checkbox after move is disabled or not
     var arrTboxIsDisabled = []; // if this to checkbox after move is disabled or not
     var key_value = "";         // key for arrays arrFboxIsDisabled and arrTboxIsDisabled, use associative array key_value is the value of the array element (eg : GROUP:1 or USER:24)
-    
+
     var i;
     for (i = 0; i < tbox.options.length; i++) {
         arrLookup[tbox.options[i].text] = tbox.options[i].value;
@@ -178,8 +208,8 @@ function move(fbox, tbox) {
         {
             arrTbox[tLength] = fbox.options[i].text;
             tLength++;
-        } 
-        else 
+        }
+        else
         {
             arrFbox[fLength] = fbox.options[i].text;
             key_value = fbox.options[i].value;
@@ -187,14 +217,14 @@ function move(fbox, tbox) {
             fLength++;
         }
     }
-    
+
     arrFbox.sort();
     arrTbox.sort();
-    
+
     var arrFboxGroup = [];
     var arrFboxUser = [];
     var prefix_x;
-    
+
     var x;
     for (x = 0; x < arrFbox.length; x++) {
         prefix_x = arrFbox[x].substring(0, 2);
@@ -204,15 +234,15 @@ function move(fbox, tbox) {
             arrFboxUser.push(arrFbox[x]);
         }
     }
-    
+
     arrFboxGroup.sort();
     arrFboxUser.sort();
     arrFbox = arrFboxGroup.concat(arrFboxUser);
-    
+
     var arrTboxGroup = [];
     var arrTboxUser = [];
     var prefix_y;
-    
+
     var y;
     for (y = 0; y < arrTbox.length; y++) {
         prefix_y = arrTbox[y].substring(0, 2);
@@ -222,16 +252,16 @@ function move(fbox, tbox) {
             arrTboxUser.push(arrTbox[y]);
         }
     }
-    
+
     arrTboxGroup.sort();
     arrTboxUser.sort();
     arrTbox = arrTboxGroup.concat(arrTboxUser);
-    
+
     fbox.length = 0;
     tbox.length = 0;
-    
+
     var c;
-    for (c = 0; c < arrFbox.length; c++) 
+    for (c = 0; c < arrFbox.length; c++)
     {
         var no = new Option();
         no.value = arrLookup[arrFbox[c]];
@@ -242,7 +272,7 @@ function move(fbox, tbox) {
         }
         fbox[c] = no;
     }
-    for (c = 0; c < arrTbox.length; c++) 
+    for (c = 0; c < arrTbox.length; c++)
     {
         var no = new Option();
         no.value = arrLookup[arrTbox[c]];
@@ -250,12 +280,12 @@ function move(fbox, tbox) {
         key_value = no.value;
         if (arrTboxIsDisabled[key_value]) {
             no.disabled = "disabled";
-        }        
+        }
         tbox[c] = no;
     }
 }
 
-function validate() 
+function validate()
 {
     "use strict";
     var f = document.new_calendar_item;
@@ -266,7 +296,7 @@ function validate()
 
 function selectAll(cbList, bSelect, showwarning) {
     "use strict";
-    
+
     if (document.getElementById('emailTitle').value == '') {
         document.getElementById('msg_error').innerHTML = lang.FieldRequired;
         document.getElementById('msg_error').style.display = 'block';
@@ -286,11 +316,11 @@ function selectAll(cbList, bSelect, showwarning) {
     }
 }
 
-function reverseAll(cbList) 
+function reverseAll(cbList)
 {
     "use strict";
     var i;
-    for (i = 0; i < cbList.length; i++) 
+    for (i = 0; i < cbList.length; i++)
     {
         cbList[i].checked = !(cbList[i].checked);
         cbList[i].selected = !(cbList[i].selected);
@@ -308,4 +338,4 @@ function plus_attachment() {
         document.getElementById('plus').innerHTML = '&nbsp;<img style="vertical-align:middle;" src="../img/div_show.gif" alt="" />&nbsp;' + lang.AddAnAttachment;
     }
 }
-// End
+// End