812c11f074f1284ce661aa2318b229d1fcafffeb
Author: José Lorenzo RodrÃguez
Date: 2009-04-27 16:47:14 -0430
diff --git a/plugins/quiz/config/sql/schema.php b/plugins/quiz/config/sql/schema.php
index 6fc6553..002ddcf 100755
--- a/plugins/quiz/config/sql/schema.php
+++ b/plugins/quiz/config/sql/schema.php
@@ -96,6 +96,7 @@ class QuizSchema extends CakeSchema {
'question_id' => array('type' => 'integer', 'null' => false),
'quiz_id' => array('type' => 'integer', 'null' => false),
'position' => array('type' => 'integer', 'null' => false, 'length' => 4),
+ 'header' => array('type' => 'text', 'null' => false),
'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1))
);
var $quiz_questions_tags = array(
diff --git a/plugins/quiz/controllers/quizzes_controller.php b/plugins/quiz/controllers/quizzes_controller.php
index 255f5fc..cf14341 100755
--- a/plugins/quiz/controllers/quizzes_controller.php
+++ b/plugins/quiz/controllers/quizzes_controller.php
@@ -249,6 +249,28 @@ class QuizzesController extends QuizAppController {
);
}
}
+
+ function edit_question_header($quizQuestion) {
+ $this->Quiz->QuizQuestion->id = $quizQuestion;
+ $question = $this->Quiz->QuizQuestion->find('first',array(
+ 'fields' => array('id','quiz_id','header'),
+ 'conditions' => array('QuizQuestion.id' => $quizQuestion),
+ 'recursive' => -1
+ )
+ );
+ if (!empty($this->data)) {
+ if ($this->Quiz->QuizQuestion->save($this->data,true,array('header'))) {
+ $this->Session->setFlash(__('The question header was edited', true), 'default', array('class' => 'success'));
+ $this->redirect(
+ array('controller' => 'quizzes', 'action' => 'edit',$question['QuizQuestion']['quiz_id'],'course_id' => $this->activeCourse)
+ );
+ } else {
+ $this->Session->setFlash(__('The question header could not be edited', true), 'default', array('class' => 'error'));
+ }
+ } else {
+ $this->data = $question;
+ }
+ }
function answer($id = null) {
if (!$id) {
diff --git a/plugins/quiz/models/quiz.php b/plugins/quiz/models/quiz.php
index 312c350..268a12d 100755
--- a/plugins/quiz/models/quiz.php
+++ b/plugins/quiz/models/quiz.php
@@ -54,8 +54,7 @@ class Quiz extends QuizAppModel {
'order' => array('QuizQuestion.position' => 'ASC')
)
);
-
-
+
function __construct($id = false, $table = null, $ds = null) {
$this->setErrorMessage(
'name.required', __('The name can not be empty',true)
diff --git a/plugins/quiz/vendors/css/quiz.css b/plugins/quiz/vendors/css/quiz.css
index 4f943c2..2e314bc 100755
--- a/plugins/quiz/vendors/css/quiz.css
+++ b/plugins/quiz/vendors/css/quiz.css
@@ -6,7 +6,7 @@
}
.quiz-preview {
- width:90%;
+ width:95%;
}
.quiz-preview .content {
@@ -24,13 +24,7 @@
background:#f5f5f5;
color:#333;
font-style:italic;
- clear:both;
-}
-
-.quiz-preview li{
- float: left;
- clear:both;
- margin-bottom:10px;
+ clear:right;
}
.droplist {
@@ -203,7 +197,7 @@
text-decoration:none;
}
-#questions .list ul li.question-list-element h4.loading, .quiz-question-list li h3.loading {
+#questions .list ul li.question-list-element h4.loading, .quiz-question-list li .loading {
background-image:url('../img/loading.gif');
background-position:right;
background-repeat:no-repeat;
@@ -423,6 +417,13 @@ div.textQuestion div.input.text input, div.textQuestion div.input.textarea texta
width:75%;
}
+ol.quiz-question-list li.quiz-question{
+ float: left;
+ clear:both;
+ margin-bottom:10px;
+ list-style:none;
+}
+
ol.quiz-question-list li {
width:100%;
}
@@ -441,4 +442,17 @@ ol.quiz-question-list li a.quiz-question-action.hidden {
.quiz-question-placeholder {
border:1px solid #FCEFA1;
background:#6EA6D5;
+ height:2em;
+}
+
+ol.quiz-question-list li .quiz-question-number {
+ float:left;
+ font-weight:bold;
+ margin:15px 20px 0 0;
+}
+ol.quiz-question-list li .quiz-question-header {
+ clear:both;
+}
+ol.quiz-question-list li .quiz-question-header *{
+ margin-bottom:0;
}
\ No newline at end of file
diff --git a/plugins/quiz/views/elements/listing/choice_question.ctp b/plugins/quiz/views/elements/listing/choice_question.ctp
index ac30ea5..ba8910e 100755
--- a/plugins/quiz/views/elements/listing/choice_question.ctp
+++ b/plugins/quiz/views/elements/listing/choice_question.ctp
@@ -10,7 +10,7 @@
}
$question = $question['ChoiceQuestion'];
?>
- <h4><?php echo $html->link($text->truncate($question['body'], 200), array(
+ <h4><?php echo $html->link($text->truncate(strip_tags($question['body']), 200), array(
'controller' => 'choice_questions',
'action' => 'preview',
$question['id'],
diff --git a/plugins/quiz/views/elements/listing/matching_question.ctp b/plugins/quiz/views/elements/listing/matching_question.ctp
index 8bdc249..e10a2ac 100755
--- a/plugins/quiz/views/elements/listing/matching_question.ctp
+++ b/plugins/quiz/views/elements/listing/matching_question.ctp
@@ -9,7 +9,7 @@
$num = __('%s Match item', true);
}
?>
- <h4><?php echo $html->link($text->truncate($question['body'], 200), array(
+ <h4><?php echo $html->link($text->truncate(strip_tags($question['body']), 200), array(
'controller' => 'matching_questions',
'action' => 'preview',
$question['id'],
diff --git a/plugins/quiz/views/elements/listing/ordering_question.ctp b/plugins/quiz/views/elements/listing/ordering_question.ctp
index 95ebb75..6d3a7f1 100755
--- a/plugins/quiz/views/elements/listing/ordering_question.ctp
+++ b/plugins/quiz/views/elements/listing/ordering_question.ctp
@@ -7,7 +7,7 @@
}
$question = $question['OrderingQuestion'];
?>
- <h4><?php echo $html->link($text->truncate($question['body'], 200), array(
+ <h4><?php echo $html->link($text->truncate(strip_tags($question['body']), 200), array(
'controller' => 'ordering_questions',
'action' => 'preview',
$question['id'],
diff --git a/plugins/quiz/views/elements/listing/text_question.ctp b/plugins/quiz/views/elements/listing/text_question.ctp
index fa2280a..1f239c5 100755
--- a/plugins/quiz/views/elements/listing/text_question.ctp
+++ b/plugins/quiz/views/elements/listing/text_question.ctp
@@ -2,7 +2,7 @@
$question = $question['TextQuestion'];
?>
<li class="question-list-element">
- <h4><?php echo $html->link($text->truncate($question['title'], 200), array(
+ <h4><?php echo $html->link($text->truncate(strip_tags($question['title']), 200), array(
'controller' => 'text_questions',
'action' => 'preview',
$question['id'],
diff --git a/plugins/quiz/views/quizzes/edit.ctp b/plugins/quiz/views/quizzes/edit.ctp
index 07e6874..f82a6f5 100755
--- a/plugins/quiz/views/quizzes/edit.ctp
+++ b/plugins/quiz/views/quizzes/edit.ctp
@@ -12,14 +12,20 @@ $javascript->link(array(
<h2>— <?php echo $form->value('Quiz.name') ?> —</h2>
<?php
unset($this->data['Quiz']);
- echo '<ol class="quiz-question-list">';
$total = count($this->data['Question']);
+ echo '<ol class="quiz-question-list">';
foreach ($this->data['Question'] as $index => $question) {
- echo
- "<li id='".$question['QuizQuestion']['id']."'",
- '<h3 class="question-header">' ,
+ $number = $index + 1;
+ echo '<li class="quiz-question" id="'.$question['QuizQuestion']['id'].'">',
+ '<div class="quiz-question-header">',
+ $question['QuizQuestion']['header'],
+ '</div>',
+ "<div class='quiz-question-number'>
+ $number.
+ </div>",
+ '<h3 class="question-header">',
__(Inflector::humanize(Inflector::underscore($question['type'])), true) ,
- '</h3>' ,
+ '</h3>',
$html->link(__('remove',true),
array('action' => 'remove_question',$question['QuizQuestion']['id']),
array('class' => 'quiz-question-action question-remove'));
@@ -33,6 +39,9 @@ $javascript->link(array(
echo $html->link(__('move up',true),
array('action' => 'move_question',$question['QuizQuestion']['id'],'up'),
array('class' => 'quiz-question-action question-move-up' .$hidden));
+ echo $html->link(__('edit header',true),
+ array('action' => 'edit_question_header',$question['QuizQuestion']['id']),
+ array('class' => 'quiz-question-action'));
echo $this->element('previewing/'.Inflector::underscore($question['type']), array('question' => $question)) ,
' ',
'</li>';
@@ -51,7 +60,7 @@ $(document).ready(function(){
(json.flash.params.class == 'success');
}
- function fixMoveButtons(question) {
+ function fixThings(question) {
question
.parent()
.children('li:first-child')
@@ -72,7 +81,13 @@ $(document).ready(function(){
.children('a.question-move-down').hide()
.end()
.prev()
- .children('a.question-move-down').show();
+ .children('a.question-move-down').show()
+ .end()
+ .end()
+ .end()
+ .children('li').each(function(i){
+ $(this).find('.quiz-question-number').html((i + 1) + '.');
+ });
}
function questionPreview() {
var link = $(this);
@@ -178,7 +193,7 @@ $(document).ready(function(){
$('ol.quiz-question-list a.question-move-up, ol.quiz-question-list a.question-move-down').live('click',moveQuestion);
$(".quiz-question-list").sortable({
handle:'h3',
- placeholder: 'quiz-question-placeholder',
+ placeholder: 'quiz-question-placeholder quiz-question',
opacity: 0.5,
axis: 'y',
cursor: 'move',
@@ -197,7 +212,7 @@ $(document).ready(function(){
dataType : 'json',
success : function(data,status) {
if (jsonSucces(data)) {
- fixMoveButtons(item);
+ fixThings(item);
item.data('position',position);
}
},
diff --git a/plugins/quiz/views/quizzes/edit_question_header.ctp b/plugins/quiz/views/quizzes/edit_question_header.ctp
new file mode 100644
index 0000000..ad2c7ac
--- /dev/null
+++ b/plugins/quiz/views/quizzes/edit_question_header.ctp
@@ -0,0 +1,18 @@
+<div class="quiz">
+<?php echo $form->create('QuizQuestion',array('url' => array(
+ 'action' => $this->action,
+ 'controller' => 'quizzes',
+ ) + $this->params['pass']
+ )
+ );
+?>
+ <fieldset>
+ <legend><?php echo __('Edit Question header', true);?></legend>
+ <?php
+ echo $form->input('id');
+ echo $form->input('header',array('type' => 'textarea'));
+ ?>
+ </fieldset>
+<?php echo $form->end(__('Submit', true));?>
+<?php echo $this->element('ui/editor');?>
+</div>
\ No newline at end of file
diff --git a/tmp/cache/models/.gitignore b/tmp/cache/models/.gitignore
old mode 100644
new mode 100755
diff --git a/tmp/cache/persistent/.gitignore b/tmp/cache/persistent/.gitignore
old mode 100644
new mode 100755
diff --git a/tmp/cache/views/.gitignore b/tmp/cache/views/.gitignore
old mode 100644
new mode 100755
