|
|
|
@ -465,13 +465,12 @@ abstract class Question |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
$row = Database::fetch_array($res); |
|
|
|
|
if ($row['nb'] > 0) { |
|
|
|
|
$sql = "UPDATE $TBL_QUESTION_REL_CATEGORY SET category_id= $category_id WHERE question_id=$question_id AND c_id=".api_get_course_int_id( |
|
|
|
|
); |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
$sql = "UPDATE $TBL_QUESTION_REL_CATEGORY SET category_id= $category_id |
|
|
|
|
WHERE question_id=$question_id AND c_id=".api_get_course_int_id(); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} else { |
|
|
|
|
$sql = "INSERT INTO $TBL_QUESTION_REL_CATEGORY VALUES (".api_get_course_int_id( |
|
|
|
|
).", $question_id, $category_id)"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
$sql = "INSERT INTO $TBL_QUESTION_REL_CATEGORY VALUES (".api_get_course_int_id().", $question_id, $category_id)"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -548,10 +547,10 @@ abstract class Question |
|
|
|
|
/** |
|
|
|
|
* Adds a picture to the question |
|
|
|
|
* |
|
|
|
|
* @author - Olivier Brouckaert |
|
|
|
|
* @param - string $Picture - temporary path of the picture to upload |
|
|
|
|
* @param - string $PictureName - Name of the picture |
|
|
|
|
* @return - boolean - true if uploaded, otherwise false |
|
|
|
|
* @author Olivier Brouckaert |
|
|
|
|
* @param string $Picture - temporary path of the picture to upload |
|
|
|
|
* @param string $PictureName - Name of the picture |
|
|
|
|
* @return bool - true if uploaded, otherwise false |
|
|
|
|
*/ |
|
|
|
|
public function uploadPicture($Picture, $PictureName, $picturePath = null) |
|
|
|
|
{ |
|
|
|
@ -601,11 +600,11 @@ abstract class Question |
|
|
|
|
* Resizes a picture || Warning!: can only be called after uploadPicture, or if picture is already available in object. |
|
|
|
|
* |
|
|
|
|
* @author - Toon Keppens |
|
|
|
|
* @param - string $Dimension - Resizing happens proportional according to given dimension: height|width|any |
|
|
|
|
* @param - integer $Max - Maximum size |
|
|
|
|
* @return - boolean - true if success, false if failed |
|
|
|
|
* @param string $Dimension - Resizing happens proportional according to given dimension: height|width|any |
|
|
|
|
* @param integer $Max - Maximum size |
|
|
|
|
* @return boolean - true if success, false if failed |
|
|
|
|
*/ |
|
|
|
|
function resizePicture($Dimension, $Max) |
|
|
|
|
public function resizePicture($Dimension, $Max) |
|
|
|
|
{ |
|
|
|
|
global $picturePath; |
|
|
|
|
|
|
|
|
@ -664,12 +663,12 @@ abstract class Question |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* deletes the picture |
|
|
|
|
* Deletes the picture |
|
|
|
|
* |
|
|
|
|
* @author - Olivier Brouckaert |
|
|
|
|
* @return - boolean - true if removed, otherwise false |
|
|
|
|
* @author Olivier Brouckaert |
|
|
|
|
* @return boolean - true if removed, otherwise false |
|
|
|
|
*/ |
|
|
|
|
function removePicture() |
|
|
|
|
public function removePicture() |
|
|
|
|
{ |
|
|
|
|
global $picturePath; |
|
|
|
|
|
|
|
|
@ -688,10 +687,10 @@ abstract class Question |
|
|
|
|
* Exports a picture to another question |
|
|
|
|
* |
|
|
|
|
* @author - Olivier Brouckaert |
|
|
|
|
* @param - integer $questionId - ID of the target question |
|
|
|
|
* @return - boolean - true if copied, otherwise false |
|
|
|
|
* @param integer $questionId - ID of the target question |
|
|
|
|
* @return boolean - true if copied, otherwise false |
|
|
|
|
*/ |
|
|
|
|
function exportPicture($questionId, $course_info) |
|
|
|
|
public function exportPicture($questionId, $course_info) |
|
|
|
|
{ |
|
|
|
|
$course_id = $course_info['real_id']; |
|
|
|
|
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION); |
|
|
|
@ -706,9 +705,8 @@ abstract class Question |
|
|
|
|
$result = @copy($source_path.'/'.$this->picture, $destination_path.'/'.$picture) ? true : false; |
|
|
|
|
//If copy was correct then add to the database |
|
|
|
|
if ($result) { |
|
|
|
|
$sql = "UPDATE $TBL_QUESTIONS SET picture='".Database::escape_string( |
|
|
|
|
$picture |
|
|
|
|
)."' WHERE c_id = $course_id AND iid='".intval($questionId)."'"; |
|
|
|
|
$sql = "UPDATE $TBL_QUESTIONS SET picture='".Database::escape_string($picture)."' |
|
|
|
|
WHERE c_id = $course_id AND iid='".intval($questionId)."'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
$document_id = FileManager::add_document( |
|
|
|
@ -775,10 +773,10 @@ abstract class Question |
|
|
|
|
* Temporary pictures are used when we don't want to save a picture right after a form submission. |
|
|
|
|
* For example, if we first show a confirmation box. |
|
|
|
|
* |
|
|
|
|
* @author - Olivier Brouckaert |
|
|
|
|
* @return - boolean - true if moved, otherwise false |
|
|
|
|
* @author Olivier Brouckaert |
|
|
|
|
* @return boolean - true if moved, otherwise false |
|
|
|
|
*/ |
|
|
|
|
function getTmpPicture() |
|
|
|
|
public function getTmpPicture() |
|
|
|
|
{ |
|
|
|
|
global $picturePath; |
|
|
|
|
|
|
|
|
@ -803,8 +801,8 @@ abstract class Question |
|
|
|
|
* updates the question in the data base |
|
|
|
|
* if an exercise ID is provided, we add that exercise ID into the exercise list |
|
|
|
|
* |
|
|
|
|
* @author - Olivier Brouckaert |
|
|
|
|
* @param - integer $exerciseId - exercise ID if saving in an exercise |
|
|
|
|
* @author Olivier Brouckaert |
|
|
|
|
* @param integer $exerciseId - exercise ID if saving in an exercise |
|
|
|
|
*/ |
|
|
|
|
public function save($exerciseId = 0) |
|
|
|
|
{ |
|
|
|
@ -826,15 +824,15 @@ abstract class Question |
|
|
|
|
// Question already exists |
|
|
|
|
if (!empty($id)) { |
|
|
|
|
$sql = "UPDATE $TBL_QUESTIONS SET |
|
|
|
|
question ='".Database::escape_string($question)."', |
|
|
|
|
description ='".Database::escape_string($description)."', |
|
|
|
|
ponderation ='".Database::escape_string($weighting)."', |
|
|
|
|
position ='".Database::escape_string($position)."', |
|
|
|
|
type ='".Database::escape_string($type)."', |
|
|
|
|
picture ='".Database::escape_string($picture)."', |
|
|
|
|
extra ='".Database::escape_string($extra)."', |
|
|
|
|
level ='".Database::escape_string($level)."', |
|
|
|
|
parent_id = ".$this->parent_id." |
|
|
|
|
question ='".Database::escape_string($question)."', |
|
|
|
|
description ='".Database::escape_string($description)."', |
|
|
|
|
ponderation ='".Database::escape_string($weighting)."', |
|
|
|
|
position ='".Database::escape_string($position)."', |
|
|
|
|
type ='".Database::escape_string($type)."', |
|
|
|
|
picture ='".Database::escape_string($picture)."', |
|
|
|
|
extra ='".Database::escape_string($extra)."', |
|
|
|
|
level ='".Database::escape_string($level)."', |
|
|
|
|
parent_id = ".$this->parent_id." |
|
|
|
|
WHERE iid = '".Database::escape_string($id)."'"; |
|
|
|
|
//WHERE c_id = $c_id AND iid = '".Database::escape_string($id)."'"; |
|
|
|
|
|
|
|
|
@ -906,7 +904,12 @@ abstract class Question |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function search_engine_edit($exerciseId, $addQs = false, $rmQs = false) |
|
|
|
|
/** |
|
|
|
|
* @param $exerciseId |
|
|
|
|
* @param bool $addQs |
|
|
|
|
* @param bool $rmQs |
|
|
|
|
*/ |
|
|
|
|
public function search_engine_edit($exerciseId, $addQs = false, $rmQs = false) |
|
|
|
|
{ |
|
|
|
|
// update search engine and its values table if enabled |
|
|
|
|
if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) { |
|
|
|
@ -1035,7 +1038,7 @@ abstract class Question |
|
|
|
|
* @param integer $exerciseId - exercise ID |
|
|
|
|
* @param boolean $fromSave - coming from $this->save() or not |
|
|
|
|
*/ |
|
|
|
|
function addToList($exerciseId, $fromSave = false) |
|
|
|
|
public function addToList($exerciseId, $fromSave = false) |
|
|
|
|
{ |
|
|
|
|
$TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION); |
|
|
|
|
$id = $this->id; |
|
|
|
@ -1060,13 +1063,13 @@ abstract class Question |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* removes an exercise from the exercise list |
|
|
|
|
* Removes an exercise from the exercise list |
|
|
|
|
* |
|
|
|
|
* @author - Olivier Brouckaert |
|
|
|
|
* @param - integer $exerciseId - exercise ID |
|
|
|
|
* @return - boolean - true if removed, otherwise false |
|
|
|
|
* @author Olivier Brouckaert |
|
|
|
|
* @param integer $exerciseId - exercise ID |
|
|
|
|
* @return boolean - true if removed, otherwise false |
|
|
|
|
*/ |
|
|
|
|
function removeFromList($exerciseId) |
|
|
|
|
public function removeFromList($exerciseId) |
|
|
|
|
{ |
|
|
|
|
$TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION); |
|
|
|
|
|
|
|
|
@ -1084,24 +1087,20 @@ abstract class Question |
|
|
|
|
// deletes the position in the array containing the wanted exercise ID |
|
|
|
|
unset($this->exerciseList[$pos]); |
|
|
|
|
//update order of other elements |
|
|
|
|
$sql = "SELECT question_order FROM $TBL_EXERCICE_QUESTION WHERE c_id = $course_id AND question_id='".Database::escape_string( |
|
|
|
|
$id |
|
|
|
|
)."' AND exercice_id='".Database::escape_string($exerciseId)."'"; |
|
|
|
|
$sql = "SELECT question_order FROM $TBL_EXERCICE_QUESTION |
|
|
|
|
WHERE c_id = $course_id AND question_id='".Database::escape_string($id)."' AND exercice_id='".Database::escape_string($exerciseId)."'"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
if (Database::num_rows($res) > 0) { |
|
|
|
|
$row = Database::fetch_array($res); |
|
|
|
|
if (!empty($row['question_order'])) { |
|
|
|
|
$sql = "UPDATE $TBL_EXERCICE_QUESTION SET question_order = question_order-1 |
|
|
|
|
WHERE c_id = $course_id AND exercice_id='".Database::escape_string( |
|
|
|
|
$exerciseId |
|
|
|
|
)."' AND question_order > ".$row['question_order']; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
WHERE c_id = $course_id AND exercice_id='".Database::escape_string($exerciseId)."' AND question_order > ".$row['question_order']; |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$sql = "DELETE FROM $TBL_EXERCICE_QUESTION WHERE c_id = $course_id AND question_id='".Database::escape_string( |
|
|
|
|
$id |
|
|
|
|
)."' AND exercice_id='".Database::escape_string($exerciseId)."'"; |
|
|
|
|
$sql = "DELETE FROM $TBL_EXERCICE_QUESTION |
|
|
|
|
WHERE c_id = $course_id AND question_id='".Database::escape_string($id)."' AND exercice_id='".Database::escape_string($exerciseId)."'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
@ -1113,10 +1112,10 @@ abstract class Question |
|
|
|
|
* the parameter tells if the question is removed from all exercises (value = 0), |
|
|
|
|
* or just from one exercise (value = exercise ID) |
|
|
|
|
* |
|
|
|
|
* @author - Olivier Brouckaert |
|
|
|
|
* @param - integer $deleteFromEx - exercise ID if the question is only removed from one exercise |
|
|
|
|
* @author Olivier Brouckaert |
|
|
|
|
* @param integer $deleteFromEx - exercise ID if the question is only removed from one exercise |
|
|
|
|
*/ |
|
|
|
|
function delete($deleteFromEx = 0) |
|
|
|
|
public function delete($deleteFromEx = 0) |
|
|
|
|
{ |
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
|
|
|
|
@ -1198,7 +1197,7 @@ abstract class Question |
|
|
|
|
* @return int ID of the new question |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
function duplicate($course_info = null) |
|
|
|
|
public function duplicate($course_info = null) |
|
|
|
|
{ |
|
|
|
|
if (empty($course_info)) { |
|
|
|
|
$course_info = $this->course; |
|
|
|
@ -1208,11 +1207,6 @@ abstract class Question |
|
|
|
|
|
|
|
|
|
$question = $this->question; |
|
|
|
|
$description = $this->description; |
|
|
|
|
$weighting = $this->weighting; |
|
|
|
|
$position = $this->position; |
|
|
|
|
$type = $this->type; |
|
|
|
|
$level = intval($this->level); |
|
|
|
|
$extra = $this->extra; |
|
|
|
|
|
|
|
|
|
//Using the same method used in the course copy to transform URLs |
|
|
|
|
|
|
|
|
@ -1265,12 +1259,12 @@ abstract class Question |
|
|
|
|
return $new_question_id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function get_categories_from_question() |
|
|
|
|
public function get_categories_from_question() |
|
|
|
|
{ |
|
|
|
|
return Testcategory::getCategoryForQuestion($this->id); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function duplicate_category_question($question_id, $course_id) |
|
|
|
|
public function duplicate_category_question($question_id, $course_id) |
|
|
|
|
{ |
|
|
|
|
$question = Question::read($question_id, $course_id); |
|
|
|
|
$categories = $this->get_categories_from_question(); |
|
|
|
@ -1279,14 +1273,14 @@ abstract class Question |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function get_question_type_name() |
|
|
|
|
public function get_question_type_name() |
|
|
|
|
{ |
|
|
|
|
$key = self::$questionTypes[$this->type]; |
|
|
|
|
|
|
|
|
|
return get_lang($key[1]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static function get_question_type($type) |
|
|
|
|
public static function get_question_type($type) |
|
|
|
|
{ |
|
|
|
|
if ($type == ORAL_EXPRESSION && api_get_setting('enable_nanogong') != 'true') { |
|
|
|
|
return null; |
|
|
|
@ -1295,7 +1289,7 @@ abstract class Question |
|
|
|
|
return self::$questionTypes[$type]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static function get_question_type_list() |
|
|
|
|
public static function get_question_type_list() |
|
|
|
|
{ |
|
|
|
|
if (api_get_setting('enable_nanogong') != 'true') { |
|
|
|
|
self::$questionTypes[ORAL_EXPRESSION] = null; |
|
|
|
@ -1308,9 +1302,10 @@ abstract class Question |
|
|
|
|
/** |
|
|
|
|
* Returns an instance of the class corresponding to the type |
|
|
|
|
* @param integer $type the type of the question |
|
|
|
|
* @return an instance of a Question subclass (or of Questionc class by default) |
|
|
|
|
* @param \Exercise |
|
|
|
|
* @return \Question an instance of a Question subclass (or of Questionc class by default) |
|
|
|
|
*/ |
|
|
|
|
static function getInstance($type, Exercise $exercise = null) |
|
|
|
|
public static function getInstance($type, Exercise $exercise = null) |
|
|
|
|
{ |
|
|
|
|
if (!is_null($type)) { |
|
|
|
|
list($file_name, $class_name) = self::get_question_type($type); |
|
|
|
@ -1333,43 +1328,35 @@ abstract class Question |
|
|
|
|
* Creates the form to create / edit a question |
|
|
|
|
* A subclass can redifine this function to add fields... |
|
|
|
|
* |
|
|
|
|
* @param FormValidator $form the formvalidator instance (by reference) |
|
|
|
|
* @param \FormValidator $form the formvalidator instance (by reference) |
|
|
|
|
* @param array $fck_config |
|
|
|
|
*/ |
|
|
|
|
public function createForm(&$form, $fck_config = 0) |
|
|
|
|
public function createForm(&$form, $fck_config = array()) |
|
|
|
|
{ |
|
|
|
|
$maxCategories = 20; |
|
|
|
|
$url = api_get_path(WEB_AJAX_PATH).'exercise.ajax.php?1=1'; |
|
|
|
|
$js = null; |
|
|
|
|
|
|
|
|
|
if ($this->type != MEDIA_QUESTION) { |
|
|
|
|
$js = '<script> |
|
|
|
|
|
|
|
|
|
function check() { |
|
|
|
|
var counter = 0; |
|
|
|
|
$("#category_id option:selected").each(function() { |
|
|
|
|
var id = $(this).val(); |
|
|
|
|
var name = $(this).text(); |
|
|
|
|
if (id != "" ) { |
|
|
|
|
|
|
|
|
|
// if a media question was selected |
|
|
|
|
$("#parent_id option:selected").each(function() { |
|
|
|
|
var questionId = $(this).val(); |
|
|
|
|
if (questionId != 0) { |
|
|
|
|
$.ajax({ |
|
|
|
|
async: false, |
|
|
|
|
dataType: "json", |
|
|
|
|
url: "'.$url.'&a=get_categories_by_media&questionId='.$this->id.'&exerciseId='.$this->exercise->id.'", |
|
|
|
|
data: "mediaId="+questionId, |
|
|
|
|
success: function(data) { |
|
|
|
|
if (data.value == id) { |
|
|
|
|
//console.log(data.value); |
|
|
|
|
} else { |
|
|
|
|
alert("'.addslashes(get_lang('YouCantAddAnotherCategory')).'"); |
|
|
|
|
$(".holder li").each(function () { |
|
|
|
|
if ($(this).attr("rel") == id) { |
|
|
|
|
$(this).remove(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
//console.log(counter); |
|
|
|
|
//console.log(questionId); |
|
|
|
|
if (counter >= 1) { |
|
|
|
|
alert("'.addslashes(get_lang('YouCantAddAnotherCategory')).'"); |
|
|
|
|
$("#category_id").trigger("removeItem",[{ "value" : id}]); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
@ -1392,6 +1379,7 @@ abstract class Question |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
counter++; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1409,75 +1397,71 @@ abstract class Question |
|
|
|
|
newel: true |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// Change select media |
|
|
|
|
$("#parent_id").change(function(){ |
|
|
|
|
$("#parent_id option:selected").each(function() { |
|
|
|
|
var questionId = $(this).val(); |
|
|
|
|
$.ajax({ |
|
|
|
|
async: false, |
|
|
|
|
dataType: "json", |
|
|
|
|
url: "'.$url.'&a=get_categories_by_media&questionId='.$this->id.'&exerciseId='.$this->exercise->id.'", |
|
|
|
|
data: "mediaId="+questionId, |
|
|
|
|
success: function(data) { |
|
|
|
|
var all = $("#category_id").trigger("selectAll"); |
|
|
|
|
all.each(function(index, value) { |
|
|
|
|
var selected = $(value).find("option:selected"); |
|
|
|
|
selected.each(function( indexSelect, valueSelect) { |
|
|
|
|
valueToRemove = $(valueSelect).val(); |
|
|
|
|
$("#category_id").trigger("removeItem",[{ "value" : valueToRemove}]); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
if (questionId != 0) { |
|
|
|
|
$.ajax({ |
|
|
|
|
async: false, |
|
|
|
|
dataType: "json", |
|
|
|
|
url: "'.$url.'&a=get_categories_by_media&questionId='.$this->id.'&exerciseId='.$this->exercise->id.'", |
|
|
|
|
data: "mediaId="+questionId, |
|
|
|
|
success: function(data) { |
|
|
|
|
if (data != -1) { |
|
|
|
|
var all = $("#category_id").trigger("selectAll"); |
|
|
|
|
all.each(function(index, value) { |
|
|
|
|
var selected = $(value).find("option:selected"); |
|
|
|
|
selected.each(function( indexSelect, valueSelect) { |
|
|
|
|
valueToRemove = $(valueSelect).val(); |
|
|
|
|
$("#category_id").trigger("removeItem",[{ "value" : valueToRemove}]); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
if (data != 0) { |
|
|
|
|
$("#category_id").trigger("addItem",[{"title": data.title, "value": data.value}]); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
if (data != 0) { |
|
|
|
|
$("#category_id").trigger("addItem",[{"title": data.title, "value": data.value}]); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
// Removes all items |
|
|
|
|
var all = $("#category_id").trigger("selectAll"); |
|
|
|
|
all.each(function(index, value) { |
|
|
|
|
var selected = $(value).find("option:selected"); |
|
|
|
|
selected.each(function( indexSelect, valueSelect) { |
|
|
|
|
valueToRemove = $(valueSelect).val(); |
|
|
|
|
$("#category_id").trigger("removeItem", [{ "value" : valueToRemove}]); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// hub 13-12-2010 |
|
|
|
|
function visiblerDevisibler(in_id) { |
|
|
|
|
if (document.getElementById(in_id)) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (document.getElementById(in_id).style.display == "none") { |
|
|
|
|
document.getElementById(in_id).style.display = "block"; |
|
|
|
|
if (document.getElementById(in_id+"Img")) { |
|
|
|
|
document.getElementById(in_id+"Img").html = "'.addslashes(Display::return_icon('div_hide.gif')).'"; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
document.getElementById(in_id).style.display = "none"; |
|
|
|
|
if (document.getElementById(in_id+"Img")) { |
|
|
|
|
document.getElementById(in_id+"Img").html = "dsdsds'.addslashes(Display::return_icon('div_show.gif')).'"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</script>'; |
|
|
|
|
$form->addElement('html', $js); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$js .= '<script> |
|
|
|
|
|
|
|
|
|
function show_media(){ |
|
|
|
|
var my_display = document.getElementById(\'HiddenFCKquestionDescription\').style.display; |
|
|
|
|
if (my_display== \'none\' || my_display == \'\') { |
|
|
|
|
document.getElementById(\'HiddenFCKquestionDescription\').style.display = \'block\'; |
|
|
|
|
document.getElementById(\'media_icon\').innerHTML=\' '.Display::return_icon('looknfeelna.png').' '.get_lang('EnrichQuestion').'\'; |
|
|
|
|
} else { |
|
|
|
|
document.getElementById(\'HiddenFCKquestionDescription\').style.display = \'none\'; |
|
|
|
|
document.getElementById(\'media_icon\').innerHTML=\' '.Display::return_icon('looknfeel.png').' '.get_lang('EnrichQuestion').'\'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// hub 13-12-2010 |
|
|
|
|
function visiblerDevisibler(in_id) { |
|
|
|
|
if (document.getElementById(in_id)) { |
|
|
|
|
|
|
|
|
|
if (document.getElementById(in_id).style.display == "none") { |
|
|
|
|
document.getElementById(in_id).style.display = "block"; |
|
|
|
|
if (document.getElementById(in_id+"Img")) { |
|
|
|
|
document.getElementById(in_id+"Img").html = "'.addslashes(Display::return_icon('div_hide.gif')).'"; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
document.getElementById(in_id).style.display = "none"; |
|
|
|
|
if (document.getElementById(in_id+"Img")) { |
|
|
|
|
document.getElementById(in_id+"Img").html = "dsdsds'.addslashes(Display::return_icon('div_show.gif')).'"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</script>'; |
|
|
|
|
|
|
|
|
|
$form->addElement('html', $js); |
|
|
|
|
// question name |
|
|
|
|
$form->addElement('text', 'questionName', get_lang('Question'), array('class' => 'span6')); |
|
|
|
|
$form->addRule('questionName', get_lang('GiveQuestion'), 'required'); |
|
|
|
@ -2578,6 +2562,7 @@ abstract class Question |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Check if the media sent matches other medias sent before |
|
|
|
|
* @param int $exerciseId |
|
|
|
|
* @param int $mediaId |
|
|
|
|
* @return array |
|
|
|
|