Browse Source

Fixing exercises in sessions bug when using the default visibility

Julio Montoya 12 years ago
parent
commit
a535d80408

+ 3 - 6
main/exercice/exercise.class.php

@@ -745,6 +745,7 @@ class Exercise {
 			// insert into the item_property table
 			api_item_property_update($this->course, TOOL_QUIZ, $this->id, 'QuizAdded', api_get_user_id());            
             api_set_default_visibility($this->id, TOOL_QUIZ);
+            
 			if (api_get_setting('search_enabled')=='true' && extension_loaded('xapian')) {
 				$this->search_engine_save();
 			}
@@ -3396,7 +3397,7 @@ class Exercise {
         
         //Checking visibility in the item_property table
         $visibility = api_get_item_visibility(api_get_course_info(), TOOL_QUIZ, $this->id, api_get_session_id()); 
-        
+                
         if ($visibility == 0) {        
             $this->active = 0;
         }
@@ -3457,11 +3458,7 @@ class Exercise {
         }
 		return array('value' => $is_visible, 'message' => $message);
 	}
-	
-	function save_attempt() {
-	
-	}
-	
+    
 	function added_in_lp() {
 		$TBL_LP_ITEM	= Database::get_course_table(TABLE_LP_ITEM);
 		$sql = "SELECT max_score FROM $TBL_LP_ITEM WHERE c_id = ".$this->course_id." AND item_type = '".TOOL_QUIZ."' AND path = '".$this->id."'";

+ 9 - 13
main/exercice/exercise_admin.php

@@ -27,7 +27,7 @@ if(!api_is_allowed_to_edit(null,true)) {
 	api_not_allowed(true);
 }
 
-$htmlHeadXtra[] = '<script type="text/javascript">
+$htmlHeadXtra[] = '<script>
 		function advanced_parameters() {
 			if(document.getElementById(\'options\').style.display == \'none\') {
 				document.getElementById(\'options\').style.display = \'block\';
@@ -132,15 +132,15 @@ $htmlHeadXtra[] = '<script type="text/javascript">
 		}
 		</script>';
 
-    // to correct #4029 Random and number of attempt menu empty added window.onload=advanced_parameters;
-$htmlHeadXtra[] = '<script type="text/javascript">
+// to correct #4029 Random and number of attempt menu empty added window.onload=advanced_parameters;
+$htmlHeadXtra[] = '<script>
 function setFocus(){
     $("#exercise_title").focus();
 }
 $(document).ready(function () {
     setFocus();
 }); 
-    window.onload=advanced_parameters;
+window.onload=advanced_parameters;
 </script>';
 
 // INIT EXERCISE
@@ -194,16 +194,12 @@ if ($form->validate()) {
 	} else {
 		if (!empty($_GET['lp_id']) || !empty($_POST['lp_id'])){		
 			if (!empty($_POST['lp_id'])){			
-				$lp_id=Security::remove_XSS($_POST['lp_id']);//TODO:this remains to be implemented after press the first post
-			}
-			else{
-				$lp_id=Security::remove_XSS($_GET['lp_id']);
-			}
-			
+				$lp_id = Security::remove_XSS($_POST['lp_id']);//TODO:this remains to be implemented after press the first post
+			} else {
+				$lp_id = Security::remove_XSS($_GET['lp_id']);
+			}			
 			echo "<a href=\"../newscorm/lp_controller.php?".api_get_cidreq()."&gradebook=&action=add_item&type=step&lp_id=".$lp_id."#resource_tab-2\">".Display::return_icon('back.png', get_lang("BackTo").' '.get_lang("LearningPaths"),'',ICON_SIZE_MEDIUM)."</a>";		
-		}	
-		else{
-			
+        } else {			
 	    	echo '<a href="exercice.php">' . Display :: return_icon('back.png', get_lang('BackToExercisesList'),'',ICON_SIZE_MEDIUM).'</a>';
 		}
 	}

+ 2 - 3
main/exercice/overview.php

@@ -174,11 +174,10 @@ if (!empty($attempts)) {
 		case EXERCISE_FEEDBACK_TYPE_EXAM:
 			$header_names = array(get_lang('Attempt'), get_lang('StartDate'), get_lang('Score'));
 			break;
-	}
-	$row = 0;
+	}	
 	$column = 0;
 	foreach ($header_names as $item) {
-		$table->setHeaderContents($row, $column, $item);
+		$table->setHeaderContents(0, $column, $item);
 		$column++;
 	}
 	$row = 1;

+ 19 - 2
main/inc/lib/main_api.lib.php

@@ -6075,7 +6075,24 @@ function api_set_default_visibility($item_id, $tool_id, $group_id = null) {
         }        
         if (empty($group_id)) {
             $group_id = api_get_group_id();
-        }        
-        api_item_property_update(api_get_course_info(), $original_tool_id, $item_id, $visibility, api_get_user_id(), $group_id, null, null, null, api_get_session_id());            
+        }
+        
+        api_item_property_update(api_get_course_info(), $original_tool_id, $item_id, $visibility, api_get_user_id(), $group_id, null, null, null, api_get_session_id());
+        
+        //Fixes default visibility for tests
+        
+        switch ($original_tool_id) {
+            case TOOL_QUIZ:
+                $objExerciseTmp = new Exercise();
+                $objExerciseTmp->read($item_id);
+                if ($visibility == 'visible') {
+                    $objExerciseTmp->enable();
+                    $objExerciseTmp->save();
+                } else {
+                    $objExerciseTmp->disable();
+                    $objExerciseTmp->save();
+                }
+                break;
+        }
     }
 }