Example #1
0
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->removeByName('Content');
     $fields->addFieldsToTab('Root.Main', $ddl = new DropdownField('SurveyTemplateID', 'Survey Template', SurveyTemplate::get()->filter(array('ClassName' => 'SurveyTemplate', 'Enabled' => true))->map('ID', 'Title')));
     $ddl->setEmptyString('-- Select a Survey Template');
     return $fields;
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $templateList = SurveyTemplate::get()->filter(array('ClassName' => 'SurveyTemplate'))->sort('Title')->map()->toArray();
     $templateSelect = DropdownField::create('TemplateID', 'Survey Template')->setSource($templateList);
     $fields->replaceField('TemplateID', $templateSelect);
     return $fields;
 }
 /**
  * @return SurveyTemplate|null
  */
 private function getCurrentSelectedSurveyTemplate()
 {
     $template_id = Session::get(sprintf("SurveyBuilder.%sStatistics.TemplateId", Session::get('SurveyBuilder.Statistics.ClassName')));
     $template = null;
     if (!empty($template_id)) {
         $template = SurveyTemplate::get()->byID(intval($template_id));
         if (!is_null($template) && $template->ClassName === 'EntitySurveyTemplate') {
             $template = EntitySurveyTemplate::get()->byID(intval($template_id));
         }
     }
     return $template;
 }
 public function init()
 {
     parent::init();
     $script = '
     var origin_fields =
     {
         "DeploymentSurvey" : [],
         "AppDevSurvey" : [],
         "Deployment" : []
     };
     ';
     foreach (DeploymentSurveyFields::toArray() as $key) {
         $script .= sprintf("origin_fields.DeploymentSurvey.push('%s');", $key);
     }
     foreach (AppDevSurveyFields::toArray() as $key) {
         $script .= sprintf("origin_fields.AppDevSurvey.push('%s');", $key);
     }
     foreach (DeploymentFields::toArray() as $key) {
         $script .= sprintf("origin_fields.Deployment.push('%s');", $key);
     }
     $path = ASSETS_PATH . "/survey.builder.origin.fields.js";
     $custom_script_file = fopen($path, "w") or die("Unable to open file!");
     fwrite($custom_script_file, $script);
     fclose($custom_script_file);
     Requirements::javascript('assets/survey.builder.origin.fields.js');
     $templates = SurveyTemplate::get();
     $script_data = 'var templates = {}; var origin_field_id = null;';
     foreach ($templates as $template) {
         $steps = $template->Steps()->filter('ClassName', 'SurveyRegularStepTemplate');
         $script_data .= "templates[{$template->ID}] = { questions : [] };";
         $questions = array();
         foreach ($steps as $step) {
             foreach ($step->getQuestions() as $question) {
                 if ($question instanceof SurveyLiteralContentQuestionTemplate) {
                     continue;
                 }
                 $questions[$question->ID] = $step->Name . ' -> ' . $question->Name;
                 $script_data .= "templates[{$template->ID}].questions.push({ id: {$question->ID}, name: '{$step->Name} -> {$question->Name}'});";
             }
         }
     }
     $path = ASSETS_PATH . "/templates.data.js";
     $custom_script_file = fopen($path, "w") or die("Unable to open file!");
     fwrite($custom_script_file, $script_data);
     fclose($custom_script_file);
     Requirements::javascript('assets/templates.data.js');
     Requirements::javascript('survey_builder/js/active_records/new.datamodel.survey.migration.mapping.js');
 }
 public function validate()
 {
     $result = parent::validate();
     if (intval($this->OriginSurveyID) <= 0) {
         $result->error('you need to specify a origin survey!');
     }
     if (intval($this->OriginFieldID) <= 0) {
         $result->error('you need to specify a origin field!');
     }
     $survey_id = isset($_REQUEST['survey_template_id']) ? intval($_REQUEST['survey_template_id']) : $this->TargetSurveyID;
     $current_template = SurveyTemplate::get()->byID($survey_id);
     $old_mapping = $current_template->MigrationMappings()->first();
     if (!is_null($old_mapping) && intval($old_mapping->OriginSurveyID) !== intval($this->OriginSurveyID)) {
         $result->error('you need to specify the same origin survey for all your mappings');
     }
     return $result;
 }
 public function getCMSFields()
 {
     $field = parent::getCMSFields();
     $field->addFieldToTab('Root.Main', new HiddenField('TargetSurveyID', 'TargetSurveyID'));
     $survey_id = isset($_REQUEST['survey_template_id']) ? intval($_REQUEST['survey_template_id']) : $this->TargetSurveyID;
     $template = SurveyTemplate::get()->filter('ID', $survey_id)->first();
     $steps = $template->Steps()->filter('ClassName', 'SurveyRegularStepTemplate');
     $questions = array();
     foreach ($steps as $step) {
         foreach ($step->getQuestions() as $question) {
             if ($question instanceof SurveyLiteralContentQuestionTemplate) {
                 continue;
             }
             $questions[$question->ID] = $step->Name . ' -> ' . $question->Name;
         }
     }
     $field->addFieldToTab('Root.Main', new DropdownField('TargetFieldID', 'Target Field', $questions));
     return $field;
 }
 public function getReport(SS_HTTPRequest $request)
 {
     if (!Director::is_ajax()) {
         return $this->forbiddenError();
     }
     $template_id = (int) $request->param('SURVEY_TEMPLATE_ID');
     $section_id = (int) $request->getVar('section_id');
     $filters = json_decode($request->getVar('filters'));
     try {
         $survey_template = SurveyTemplate::get_by_id('SurveyTemplate', $template_id);
         if (is_null($survey_template)) {
             return $this->httpError(404);
         }
         $section = $survey_template->Report()->Sections()->filter('ID', $section_id)->first();
         return $this->ok($section->mapSection($filters));
     } catch (Exception $ex) {
         return $ex->getMessage();
     }
 }
 private function ViewStatisticsSurveyBuilder(SS_HTTPRequest $request, $action, $class_name)
 {
     Requirements::javascript('themes/openstack/javascript/sangria/sangria.page.view.statistics.surveybuilder.js');
     Requirements::css('themes/openstack/css/sangria/sangria.page.view.statistics.surveybuilder.css');
     $qid = $request->requestVar('qid');
     $vid = $request->requestVar('vid');
     $clear_filters = $request->requestVar('clear_filters');
     $from = $request->requestVar('From');
     $to = $request->requestVar('To');
     $template_id = intval($request->requestVar('survey_template_id'));
     if (empty($template_id)) {
         $template = $this->SurveyBuilderSurveyTemplates($class_name)->last();
         $template_id = $template->ID;
     } else {
         Session::clear(sprintf("SurveyBuilder.%sStatistics.Filters", $class_name));
         Session::clear(sprintf("SurveyBuilder.%sStatistics.Filters_Questions", $class_name));
     }
     Session::set(sprintf("SurveyBuilder.%sStatistics.TemplateId", $class_name), $template_id);
     if (!empty($clear_filters)) {
         Session::clear(sprintf("SurveyBuilder.%sStatistics.Filters", $class_name));
         Session::clear(sprintf("SurveyBuilder.%sStatistics.Filters_Questions", $class_name));
         return Controller::curr()->redirect(Controller::curr()->Link($action));
     } else {
         if (empty($from) || empty($to)) {
             $template = SurveyTemplate::get()->byID(intval($template_id));
             if ($class_name === 'EntitySurveyTemplate') {
                 $template = $template->Parent();
             }
             $from = date('Y/m/d H:i', strtotime($template->StartDate));
             $to = date('Y/m/d H:i', strtotime($template->EndDate));
             $query_str = sprintf("?From=%s&To=%s", $from, $to);
             return Controller::curr()->redirect(Controller::curr()->Link($action) . $query_str);
         }
         if (!empty($qid) && !empty($vid)) {
             $qid = intval($qid);
             $vid = is_int($vid) ? intval($vid) : $vid;
             $filters = Session::get(sprintf('SurveyBuilder.%sStatistics.Filters', $class_name));
             $questions_filters = Session::get(sprintf('SurveyBuilder.%sStatistics.Filters_Questions', $class_name));
             $filters .= sprintf("%s:%s,", $qid, $vid);
             $questions_filters .= sprintf("%s,", $qid);
             Session::set(sprintf("SurveyBuilder.%sStatistics.Filters", $class_name), $filters);
             Session::set(sprintf("SurveyBuilder.%sStatistics.Filters_Questions", $class_name), $questions_filters);
             $query_str = '';
             if (!empty($from) && !empty($to)) {
                 $query_str = sprintf("?From=%s&To=%s", $from, $to);
             }
             return Controller::curr()->redirect(Controller::curr()->Link($action) . $query_str);
         }
     }
     return $this->owner->Customise(array('ClassName' => $class_name, 'Action' => $action))->renderWith(array('SangriaPage_ViewStatisticsSurveyBuilder', 'SangriaPage', 'SangriaPage'));
 }
 public static function getSurveys()
 {
     return SurveyTemplate::get()->filter('ClassName', 'SurveyTemplate');
 }
 protected function onBeforeDelete()
 {
     parent::onBeforeDelete();
 }
 function getSurveyTemplates()
 {
     $templates = SurveyTemplate::get('SurveyTemplate')->filter(array('ClassName' => 'SurveyTemplate'));
     return $templates;
 }