8ae1d420751d9fd063da74349e807bf0ece5ae46
Author: José Lorenzo RodrÃguez
Date: 2009-04-29 15:21:43 -0430
diff --git a/app_model.php b/app_model.php
index 150e1cc..a1bd716 100755
--- a/app_model.php
+++ b/app_model.php
@@ -102,7 +102,5 @@ class AppModel extends Model{
function getParentCourse() {
return false;
}
-
-
}
?>
diff --git a/plugins/quiz/config/sql/schema.php b/plugins/quiz/config/sql/schema.php
index 002ddcf..0a6d8fc 100755
--- a/plugins/quiz/config/sql/schema.php
+++ b/plugins/quiz/config/sql/schema.php
@@ -102,7 +102,7 @@ class QuizSchema extends CakeSchema {
var $quiz_questions_tags = array(
'id' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'key' => 'primary'),
'question_id' => array('type' => 'integer', 'null' => false),
- 'tag_id' => array('type' => 'integer', 'null' => false),
+ 'tag_id' => array('type' => 'integer', 'null' => false),
'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1))
);
var $quiz_quizzes = array(
diff --git a/plugins/quiz/controllers/quizzes_controller.php b/plugins/quiz/controllers/quizzes_controller.php
index cf14341..87aaf0e 100755
--- a/plugins/quiz/controllers/quizzes_controller.php
+++ b/plugins/quiz/controllers/quizzes_controller.php
@@ -259,7 +259,11 @@ class QuizzesController extends QuizAppController {
)
);
if (!empty($this->data)) {
- if ($this->Quiz->QuizQuestion->save($this->data,true,array('header'))) {
+ if ($this->data = $this->Quiz->QuizQuestion->save($this->data,true,array('header'))) {
+ if ($this->RequestHandler->isAjax()) {
+ $this->set('isAjax',true);
+ return;
+ }
$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)
diff --git a/plugins/quiz/views/quizzes/edit.ctp b/plugins/quiz/views/quizzes/edit.ctp
index f82a6f5..8020492 100755
--- a/plugins/quiz/views/quizzes/edit.ctp
+++ b/plugins/quiz/views/quizzes/edit.ctp
@@ -3,6 +3,8 @@ $javascript->link(array(
'jquery/plugins/jquery.ui.core',
'jquery/plugins/jquery.ui.sortable',
'jquery/plugins/jquery.form',
+ 'jquery/plugins/jquery.jeditable',
+ 'jquery/plugins/jquery.jeditable.tinymce'
),false);
?>
<h1><?php echo sprintf(__('Edit %s %s', true), __('Quiz', true), $form->value('Quiz.name'));?></h1>
@@ -17,7 +19,7 @@ $javascript->link(array(
foreach ($this->data['Question'] as $index => $question) {
$number = $index + 1;
echo '<li class="quiz-question" id="'.$question['QuizQuestion']['id'].'">',
- '<div class="quiz-question-header">',
+ '<div class="quiz-question-header" id="qheader-'.$question['QuizQuestion']['id'].'">',
$question['QuizQuestion']['header'],
'</div>',
"<div class='quiz-question-number'>
@@ -41,7 +43,7 @@ $javascript->link(array(
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'));
+ array('class' => 'quiz-question-action question-edit-header'));
echo $this->element('previewing/'.Inflector::underscore($question['type']), array('question' => $question)) ,
' ',
'</li>';
@@ -169,6 +171,14 @@ $(document).ready(function(){
});
return false;
}
+
+ function editHeader() {
+ var link = $(this);
+ var container = link.parent('li').children('.quiz-question-header');
+ container.click();
+ return false;
+ }
+
$('#QuizEditForm.search').ajaxForm({
target: '#questions',
url: '<?php echo $html->url(array('action' => 'available_questions') + $this->params['pass'] + $this->params['named']); ?>',
@@ -191,6 +201,7 @@ $(document).ready(function(){
$('#questions .list ul li a.question-preview-link').live('click',questionPreview);
$('ol.quiz-question-list a.question-remove').live('click',removeQuestion);
$('ol.quiz-question-list a.question-move-up, ol.quiz-question-list a.question-move-down').live('click',moveQuestion);
+ $('ol.quiz-question-list a.question-edit-header').live('click',editHeader);
$(".quiz-question-list").sortable({
handle:'h3',
placeholder: 'quiz-question-placeholder quiz-question',
@@ -226,5 +237,20 @@ $(document).ready(function(){
}
}).find('li .question-header').addClass('movable');
+ $(".quiz-question-header").each(function(){
+ var url = $(this).parent('li').children('a.question-edit-header').attr('href');
+ $(this).editable(url,{
+ type : 'mce',
+ name: 'data[QuizQuestion][header]',
+ submit : 'OK',
+ indicator : "Saving...",
+ tooltip : 'Click to edit...',
+ width : '90%',
+ placeholder : '',
+ height : '100px'
+ });
+ });
+
});
-</script>
\ No newline at end of file
+</script>
+<?php echo $this->element('ui/editor',array('options' => array('mode' => 'none'))); ?>
\ No newline at end of file
diff --git a/plugins/quiz/views/quizzes/edit_question_header.ctp b/plugins/quiz/views/quizzes/edit_question_header.ctp
index ad2c7ac..80b79b6 100644
--- a/plugins/quiz/views/quizzes/edit_question_header.ctp
+++ b/plugins/quiz/views/quizzes/edit_question_header.ctp
@@ -1,3 +1,6 @@
+<?php if (!empty($isAjax)) :?>
+<?php echo $this->data['QuizQuestion']['header'];?>
+<?php else :?>
<div class="quiz">
<?php echo $form->create('QuizQuestion',array('url' => array(
'action' => $this->action,
@@ -15,4 +18,5 @@
</fieldset>
<?php echo $form->end(__('Submit', true));?>
<?php echo $this->element('ui/editor');?>
-</div>
\ No newline at end of file
+</div>
+<?php endif;?>
\ No newline at end of file
diff --git a/views/elements/ui/editor.ctp b/views/elements/ui/editor.ctp
index f571426..d101a20 100755
--- a/views/elements/ui/editor.ctp
+++ b/views/elements/ui/editor.ctp
@@ -5,7 +5,9 @@ if (!isset($options)) {
echo $javascript->link('tiny_mce/tiny_mce',null,null,false);
$this->_loadHelpers($this->helpers,array('TinyMce'));
$this->TinyMce = $this->helpers['TinyMce'];
+$widget = $this->TinyMce->widget($options);
+if (!isset($enclose) || $enclose == true) {
+ echo $javascript->codeBlock($widget);
+} else
+ echo $widget;
?>
-<script language="javascript" type="text/javascript">
-<?php echo $this->TinyMce->widget($options); ?>
-</script>
diff --git a/webroot/js/jquery/plugins/jquery.jeditable.tinymce.js b/webroot/js/jquery/plugins/jquery.jeditable.tinymce.js
new file mode 100644
index 0000000..c31d387
--- /dev/null
+++ b/webroot/js/jquery/plugins/jquery.jeditable.tinymce.js
@@ -0,0 +1,28 @@
+$.editable.addInputType('mce', {
+ element : function(settings, original) {
+ var textarea = $('<textarea id="'+$(original).attr("id")+'_mce"/>');
+ if (settings.rows) {
+ textarea.attr('rows', settings.rows);
+ } else {
+ textarea.height(settings.height);
+ }
+ if (settings.cols) {
+ textarea.attr('cols', settings.cols);
+ } else {
+ textarea.width(settings.width);
+ }
+ $(this).append(textarea);
+ return(textarea);
+ },
+ plugin : function(settings, original) {
+ tinyMCE.execCommand("mceAddControl", true, $(original).attr("id")+'_mce');
+ },
+ submit : function(settings, original) {
+ tinyMCE.triggerSave();
+ tinyMCE.execCommand("mceRemoveControl", true, $(original).attr("id")+'_mce');
+ },
+ reset : function(settings, original) {
+ tinyMCE.execCommand("mceRemoveControl", true, $(original).attr("id")+'_mce');
+ original.reset();
+ }
+});
\ No newline at end of file
