Browse Source

[svn r19958] Logic change - Implemented alphabetic scroll of alphabet letters to select courses when you register them into a session - partial FS#3909

Cristian Fasanando 16 years ago
parent
commit
de443ff000
1 changed files with 91 additions and 26 deletions
  1. 91 26
      main/admin/add_courses_to_session.php

+ 91 - 26
main/admin/add_courses_to_session.php

@@ -78,17 +78,35 @@ if (!api_is_platform_admin()) {
 	}
 }
 
-function search_courses($needle)
+function search_courses($needle,$type)
 {
 	global $tbl_course, $tbl_session_rel_course, $id_session;
 	
 	$xajax_response = new XajaxResponse();
-	$return = '';
-	if(!empty($needle)) {
+	$return = '';	
+	if(!empty($needle) && !empty($type)) {
 		// xajax send utf8 datas... datas in db can be non-utf8 datas
 		$charset = api_get_setting('platform_charset');
 		$needle = mb_convert_encoding($needle, $charset, 'utf-8');
 		
+		$cond_course_code = '';
+		if (!empty($id_session)) {
+		$id_session = Database::escape_string($id_session);
+			// check course_code from session_rel_course table
+			$sql = 'SELECT course_code FROM '.$tbl_session_rel_course.' WHERE id_session ="'.(int)$id_session.'"';
+			$res = api_sql_query($sql,__FILE__,__LINE__);
+			$course_codes = '';
+			if (Database::num_rows($res) > 0) {
+				while ($row = Database::fetch_row($res)) {
+					$course_codes .= '\''.$row[0].'\',';					
+				}
+				$course_codes = substr($course_codes,0,(strlen($course_codes)-1));
+											
+				$cond_course_code = ' AND course.code NOT IN('.$course_codes.') ';
+			}				
+		}
+		
+		if ($type=='single') {
 		// search users where username or firstname or lastname begins likes $needle
 		$sql = 'SELECT course.code, course.visual_code, course.title, session_rel_course.id_session
 				FROM '.$tbl_course.' course
@@ -97,33 +115,63 @@ function search_courses($needle)
 					AND session_rel_course.id_session = '.intval($id_session).'
 				WHERE course.visual_code LIKE "'.$needle.'%"
 				OR course.title LIKE "'.$needle.'%"';
+		} else {			
+						
+		$sql = 'SELECT course.code, course.visual_code, course.title
+				FROM '.$tbl_course.' course				
+				WHERE course.visual_code LIKE "'.$needle.'%" '.$cond_course_code.' ORDER BY course.code ';	
+		}
 				
-		global $_configuration;	
+		global $_configuration;
 		if ($_configuration['multiple_access_urls']==true) {		
 			$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);	
 			$access_url_id = api_get_current_access_url_id();
 			if ($access_url_id != -1){
-				$sql = 'SELECT course.code, course.visual_code, course.title, session_rel_course.id_session
-					FROM '.$tbl_course.' course
-					LEFT JOIN '.$tbl_session_rel_course.' session_rel_course
-						ON course.code = session_rel_course.course_code
-						AND session_rel_course.id_session = '.intval($id_session).' 	
-					INNER JOIN '.$tbl_course_rel_access_url.' url_course ON (url_course.course_code=course.code)					
-					WHERE access_url_id = '.$access_url_id.' AND (course.visual_code LIKE "'.$needle.'%"
-					OR course.title LIKE "'.$needle.'%" )';				
+				
+				if ($type=='single') { 
+					$sql = 'SELECT course.code, course.visual_code, course.title, session_rel_course.id_session
+							FROM '.$tbl_course.' course
+							LEFT JOIN '.$tbl_session_rel_course.' session_rel_course
+								ON course.code = session_rel_course.course_code
+								AND session_rel_course.id_session = '.intval($id_session).' 	
+							INNER JOIN '.$tbl_course_rel_access_url.' url_course ON (url_course.course_code=course.code)					
+							WHERE access_url_id = '.$access_url_id.' AND (course.visual_code LIKE "'.$needle.'%"
+							OR course.title LIKE "'.$needle.'%" )';
+				} else {
+					$sql = 'SELECT course.code, course.visual_code, course.title
+							FROM '.$tbl_course.' course, '.$tbl_course_rel_access_url.' url_course							 													
+							WHERE url_course.course_code=course.code AND access_url_id = '.$access_url_id.' 
+							AND course.visual_code LIKE "'.$needle.'%" '.$cond_course_code.' ORDER BY course.code ';
+				}					
 			}
 		}
 					
-		$rs = api_sql_query($sql, __FILE__, __LINE__);
+		$rs = api_sql_query($sql, __FILE__, __LINE__);		
 		$course_list = array();
-		while($course = Database :: fetch_array($rs)) {	
-			$course_list[] = $course['code'];
-			$course_title=str_replace("'","\'",$course_title);					
-			$return .= '<a href="#" onclick="add_course_to_session(\''.$course['code'].'\',\''.$course_title.' ('.$course['visual_code'].')'.'\')">'.$course['title'].' ('.$course['visual_code'].')</a><br />';
+		if ($type=='single') {
+			
+			while($course = Database :: fetch_array($rs)) {	
+				$course_list[] = $course['code'];
+				$course_title=str_replace("'","\'",$course_title);					
+				$return .= '<a href="#" onclick="add_course_to_session(\''.$course['code'].'\',\''.$course_title.' ('.$course['visual_code'].')'.'\')">'.$course['title'].' ('.$course['visual_code'].')</a><br />';
+			}
+			
+			$xajax_response -> addAssign('ajax_list_courses_single','innerHTML',utf8_encode($return));
+			
+		} else {
+	
+			$return .= '<select id="origin" name="NoSessionCoursesList[]" multiple="multiple" size="20" style="width:300px;">';
+			while($course = Database :: fetch_array($rs)) {	
+				$course_list[] = $course['code'];
+				$course_title=str_replace("'","\'",$course_title);				
+				$return .= '<option value="'.$course['code'].'">'.$course['title'].' ('.$course['visual_code'].')</option>';				
+			}
+			$return .= '</select>';
+			
+			$xajax_response -> addAssign('ajax_list_courses_multiple','innerHTML',utf8_encode($return));			
 		}
-	}
-	$_SESSION['course_list'] = $course_list;
-	$xajax_response -> addAssign('ajax_list_courses','innerHTML',utf8_encode($return));
+	}	
+	$_SESSION['course_list'] = $course_list;	
 	return $xajax_response;
 }
 $xajax -> processRequests();
@@ -134,7 +182,7 @@ $htmlHeadXtra[] = '
 function add_course_to_session (code, content) {
 
 	document.getElementById("course_to_add").value = "";
-	document.getElementById("ajax_list_courses").innerHTML = "";
+	document.getElementById("ajax_list_courses_single").innerHTML = "";
 	
 	destination = document.getElementById("destination");
 	
@@ -355,26 +403,43 @@ if(!empty($errorMsg))
   <td width="10%">&nbsp;</td>
   <td align="center" width="45%"><b><?php echo get_lang('CourseListInSession') ?> :</b></td>
 </tr>
+
+<?php if($add_type == 'multiple') { ?>
+<tr><td width="45%" align="center">
+ <?php echo get_lang('FirstLetterCourse'); ?> : 
+     <select name="firstLetterCourse" onchange = "xajax_search_courses(this.value,'multiple')">
+      <option value="%">--</option>
+      <?php
+      echo Display :: get_alphabet_options();
+      echo Display :: get_numeric_options(0,9,'');
+      ?> 
+     </select>
+</td>
+<td>&nbsp;</td></tr>
+<?php } ?>
+
 <tr>
   <td width="45%" align="center">
 
 <?php
-if($ajax_search){
+if(!($add_type == 'multiple')){
 	?>
-	<input type="text" id="course_to_add" onkeyup="xajax_search_courses(this.value)" />
-	<div id="ajax_list_courses"></div>
+	<input type="text" id="course_to_add" onkeyup="xajax_search_courses(this.value,'single')" />
+	<div id="ajax_list_courses_single"></div>
 	<?php
 }
 else
 {
-	?> <select id="origin" name="NoSessionCoursesList[]" multiple="multiple" size="20" style="width:300px;"> <?php
+	?> 
+	<div id="ajax_list_courses_multiple">
+	<select id="origin" name="NoSessionCoursesList[]" multiple="multiple" size="20" style="width:300px;"> <?php
 	foreach($nosessionCourses as $enreg)
 	{
 		?>
 		<option value="<?php echo $enreg['code']; ?>" <?php if(in_array($enreg['code'],$CourseList)) echo 'selected="selected"'; ?>><?php echo $enreg['title'].' ('.$enreg['visual_code'].')'; ?></option>
 		<?php
 	}
-	?>  </select> <?php
+	?>  </select></div> <?php
 }	
 unset($nosessionCourses);
 ?>