8 Fakoli::usingFile(
"/cms/components/questionnaire/abstract_questionnaire_manager.inc");
20 function AbstractQuestionnaireDashboardManager($item)
28 abstract function getComponentName();
36 abstract function getCreateManager($item);
38 abstract function getResultsManager($item);
41 abstract function getSendManager($item);
46 function getTitleField()
55 function getCloneFields()
70 function getQuestionnaireFormIdentifier()
72 return "{$this->item->table}_form";
90 function getCloneDialog()
92 return "clone_{$this->item->table}_dialog";
95 function getQuestionnaireViewDialog()
97 return "{$this->item->table}_view";
110 function getQuestionnaireDeleteHandler()
112 $class = codify(strtolower($this->item->prettifyClassName()));
113 return "{$class}_delete";
116 function getResponseFormIdentifier()
118 return "{$this->item->table}_response_form";
121 function getResultsPageIdentifier()
123 return "{$this->item->table}_responses";
126 function buildCloneForm()
129 $title_field = $this->getTitleField();
130 $itemPk = $item->getPrimaryKey();
131 $cloneDialog = $this->getCloneDialog();
132 $component_name = $this->getComponentName();
134 $item->$title_field = preg_replace(
"/'/",
"''", $item->$title_field);
138 $item->$title_field =
"Copy of " .$item->$title_field;
139 }
while ($item->exists(
"WHERE {$title_field}='{$item->$title_field}'"));
141 $item->title = preg_replace(
"/''/",
"'", $item->$title_field);
143 $item->filter =
new InclusionFilter($title_field);
144 $form =
new AutoForm($item,
"POST",
"/action/{$component_name}/{$cloneDialog}?{$itemPk}={$item->$itemPk}",
"CloneQuestionnaire_form");
145 $form->ajaxSubmit(
"function(result) {questionnaireMgr.cloneQuestionnaireResult(result);}",
"function() {document.id('{$form->id}_error').set('text','Failed to communicate with server'); }");
146 $form->required($title_field);
147 $form->unique($title_field);
148 $form->button(
"Cancel",
"questionnaireMgr.closeDialog()",
null,
true);
154 function getDashboardActions()
160 "public_view" =>
"Respondent's View",
161 "clone" =>
"Save As...",
162 "view_results" =>
"View Results",
163 "delete" =>
"Delete",
176 function cloneQuestionnaire()
178 $mgr = $this->getCreateManager($this->item);
179 return $mgr->cloneQuestionnaire($this->getTitleField(), $this->getCloneFields());
195 function formatActions($item)
197 $mgr = $this->getResultsManager($item);
198 $pk = $item->getPrimaryKey();
200 $responseCount =
$mgr->getResponseCount();
202 $mgr = $this->getCreateManager($item);
203 $actions = $this->getDashboardActions();
204 $mgr->filterActions($actions);
206 $sendMgr = $this->getSendManager($item);
209 $sendActions =
$sendMgr->getSendActions();
210 if(count($sendActions))
219 if($responseCount == 0)
221 unset($actions[
"view_results"]);
224 $itemPk = $item->getPrimaryKey();
226 $html .= $item->format(
"<span id='action_result_{{$pk}}' class='dashboard_action_result'></span><select id='action_{{$pk}}' style='width: 80px' onchange=\"questionnaireMgr.handleQuestionnaireAction(this, {{$pk}}); return false;\">");
231 $html .=
"<option value='$value'>$label</option>";
233 $html .=
"</select>\n";
238 function formatTitleLink($item)
240 $form_id = $this->getQuestionnaireFormIdentifier($item);
241 $itemPk = $item->getPrimaryKey();
242 $title_field = $this->getTitleField();
244 return $item->format(
"<a href=\"{$form_id}?$itemPk={$item->$itemPk}\">{{$title_field}}</a>\n");
254 function getProgressBar($item)
256 $resultsMgr = $this->getResultsManager($item);
257 return $resultsMgr->getProgressBar();
270 function writeScript()
273 $itemPk = $item->getPrimaryKey();
274 $component_name = $this->getComponentName();
275 $item_label = $item->prettifyClassName();
276 $clone_dialog = $this->getCloneDialog();
277 $questionnaire_form_identifier = $this->getQuestionnaireFormIdentifier();
278 $item_delete_handler = $this->getQuestionnaireDeleteHandler();
279 $item_view_dialog = $this->getQuestionnaireViewDialog();
280 $response_form_identifier = $this->getResponseFormIdentifier();
281 $results_page_identifier = $this->getResultsPageIdentifier();
283 $sendMgr = $this->getSendManager($this->item);
291 <script type=
"text/javascript" src=
"/components/questionnaire/js/questionnaire_dashboard.js"></script>
292 <script type=
"text/javascript">
294 var questionnaireMgr;
296 window.addEvent(
'domready',
function()
299 '<?php echo $itemPk ?>',
300 '<?php echo $component_name ?>',
301 '<?php echo $item_label ?>',
302 '<?php echo $clone_dialog ?>',
303 '<?php echo $questionnaire_form_identifier ?>',
304 '<?php echo $item_delete_handler ?>',
305 '<?php echo $item_view_dialog ?>',
306 '<?php echo $response_form_identifier ?>',
307 '<?php echo $results_page_identifier ?>');
309 if(questionnaireSendMgr)
311 questionnaireMgr.questionnaireSendMgr = questionnaireSendMgr;
Questionnaire/Survey Implementation instructions.
static using()
Import the datamodels, views and manifest for the specified component(s).
static usingFile()
Uses the specified framework file(s) from the framework directory.