Still some bugs, but, hey, you can propose a survey and vote.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
$.fn.extend({
showQuestions: function(questions) {
var data = $('#question_base').tmpl(questions);
- this.children().remove();
+ this.empty();
data.appendTo(this);
return this;
},
/* Edition form */
+ prepareQuestions: function(questions) {
+ var data = $('#q_edit_new').tmpl(questions);
+ data.prependTo(this);
+ return this;
+ },
+
isQuestion: function() {
return this.hasClass('q_edit');
},
},
parentQuestion: function() {
- return this.closest('.q_edit');
+ return this.parent().closest('.q_edit');
},
childrenContainer: function() {
$.renumberQuestions();
return res;
},
+
+ buildParentsQuestions: function() {
+ var $this = $(this);
+ $.questions().each(function() {
+ var parent = $(this).parentQuestion();
+ if (!parent.isRootSection()) {
+ $('<input>', {
+ type: 'hidden',
+ name: 'q_edit[' + $(this).qid() + '][parent]',
+ value: parent.qid()
+ }).appendTo($this);
+ }
+ });
+ return $this;
+ }
});
})(jQuery);
{
$this->load('survey.inc.php');
- XDB::execute("DELETE FROM surveys");
-
- $survey = new Survey();
- $survey->id = null;
- $survey->shortname = "blah";
- $survey->title = "Blah";
- $survey->description = "Blih blih blih blih";
- $survey->uid = S::user()->id();
- $survey->begin = "09/09/2010";
- $survey->end = "30/12/2011";
-
- $qpage = $survey->newQuestion("section");
- $qpage->parameters = array('type' => 'page');
- $qpage->label = 'Première page';
-
- $question = $qpage->newQuestion("text");
- $question->label = "Super question";
- $question->flags = "mandatory";
- $question->parameters = array("type" => "text", "limit" => 256);
-
- $question = $qpage->newQuestion("text");
- $question->label = "Super question 2";
-
- $qpage = $survey->newQuestion("section");
- $qpage->parameters = array('type' => 'page');
- $qpage->label = 'Deuxième page';
-
- $survey->flags = 'validated';
- $survey->insert(true);
-
$page->changeTpl('survey/index.tpl');
$page->assign('active', Survey::iterActive());
}
$survey->id = null;
$survey->uid = S::user()->id();
}
- if (Post::has('save')) {
+ if (Post::has('valid')) {
+ $survey->title = Post::t('title');
+ $survey->shortname = Post::t('shortname');
+ $survey->description = Post::t('description');
+ $survey->begin = Post::t('begin');
+ $survey->end = Post::t('end');
+ $survey->flags = 'validated';
+ if (Post::b('anonymous')) {
+ $survey->flags->addFlag('anonymous');
+ }
+
+ $q_edit = Post::v('q_edit');
+ $qs = array();
+ foreach ($q_edit as $qid => $q_desc) {
+ if (isset($q_desc['parent'])) {
+ $parent = $qs[$q_desc['parent']];
+ } else {
+ $parent = $survey;
+ }
+ $question = $parent->newQuestion($q_desc['type']);
+ $question->label = $q_desc['label'];
+ unset($q_desc['type']);
+ unset($q_desc['parent']);
+ unset($q_desc['label']);
+ $question->parameters = $q_desc;
+ $qs[$qid] = $question;
+ }
+ $survey->insert('true');
}
$page->assign('survey', $survey);
}
{literal}
<script id="q_edit_new" type="text/x-jquery-tmpl">
- <div style="clear: both" class="q_edit" id="q_edit[${qid}]">
+ <div style="clear: both; padding-top: 1em" class="q_edit" id="q_edit[${qid}]">
<div>
<span class="q_edit_label" style="font-weight: bold">Question ${qid + 1}</span>
(<a onclick="$(this).removeQuestion()" style="text-decoration: none">
{/literal}{icon name="delete"}{literal} Supprimer
</a>)
</div>
+ Titre : <input type="text" name="q_edit[${qid}][label]"
+ value="{{if label}}${label}{{/if}}" /><br />
Type de question : <select name="q_edit[${qid}][type]">
<option value=""></option>
<option value="text" {{if type}}{{if type == 'text'}}selected="selected"{{/if}}{{/if}}>Texte</option>
- <option value="section" {{if type}}{{if type == 'section'}}selected="selected"{{/if}}{{/if}}>Section</option>
+ <option value="section"{{if type}}{{if type == 'section'}}selected="selected"{{/if}}{{/if}}>Section</option>
</select>
<div class="q_edit_form">
{{tmpl "#q_edit_base"}}
</script>
<script id="q_edit_text" type="text/x-jquery-tmpl">
- Question : <input type="text" name="q_edit[${qid}][label]" /><br />
</script>
<script id="q_edit_section" type="text/x-jquery-tmpl">
<div id="section_${qid}" style="padding-left: 4ex; border-left: 1px solid white">
+ {{if children}}
+ {{tmpl(children) "#q_edit_new"}}
+ {{/if}}
<div class="add_question">
<a onclick="$(this).addQuestion()" style="text-decoration: none">
{/literal}{icon name="add"}{literal} Ajouter une question
<h1>Edition de sondage</h1>
-<form action="survey/edit/{$survey->shortname}" method="post">
+<form action="survey/edit/{$survey->shortname}" method="post" id="form">
<fieldset>
<legend>Description du sondage</legend>
- Titre : <input type="text" name="title" /><br />
- Nom : <input type="text" name="shortname" /><br />
- Description :<br /><textarea name="description" style="width: 100%"></textarea>
+ Titre : <input type="text" name="title" value="{$survey->title}" /><br />
+ Nom : <input type="text" name="shortname" value="{$survey->shortname}" /><br />
+ Description :<br /><textarea name="description" style="width: 100%">{$survey->description}</textarea>
</fieldset>
<fieldset>
<legend>Paramètre du sondage</legend>
- Premier jour : <input type="text" class="datepicker" name="begin" /><br />
- Dernier jour : <input type="text" class="datepicker" name="end" /><br />
+ Premier jour : <input type="text" class="datepicker" name="begin" value="{$survey->begin}" /><br />
+ Dernier jour : <input type="text" class="datepicker" name="end" value="{$survey->end}" /><br />
Sondage anonyme : <label>Oui <input type="radio" name="anonymous" value="1" checked="checked" /></label>
<label><input type="radio" name="anonymous" value="0" /> Non</label>
</fieldset>
{include file="survey/vote.questions.tpl"}
{include file="survey/edit.questions.tpl"}
+{literal}
+<script type="text/javascript">
+ //<![CDATA[
+ var questions = {/literal}{$survey->exportQuestionsToJSON()|smarty:nodefaults}{literal};
+
+ $(function() {
+ $('#form').submit(function() {
+ $(this).buildParentsQuestions();
+ return true;
+ });
+ $('#questions').prepareQuestions(questions);
+ });
+ //]]>
+</script>
+{/literal}
+
{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *}
//<![CDATA[
var questions = {$survey->exportQuestionsToJSON()|smarty:nodefaults};
- $($("#questions").surveyQuestions(questions));
+ $($("#questions").showQuestions(questions));
//]]>
</script>