+
+ function handler_edit(PlPage $page, $name = null)
+ {
+ $this->setup_page($page);
+ $page->changeTpl('survey/edit.tpl');
+
+ if (!is_null($name)) {
+ $survey = Survey::get($name);
+ } else {
+ $survey = new Survey();
+ $survey->id = null;
+ $survey->uid = S::user()->id();
+ }
+ 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';
+ $survey->flags->addFlag('anonymous', Post::b('anonymous'));
+
+ $q_edit = Post::v('q_edit');
+ $qs = array();
+ $survey->clearQuestions();
+ 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);
+ }