From 51640423a77e703dd14c861c039b3ea01f8844dc Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 29 Apr 2013 16:06:45 +0800 Subject: [PATCH 01/19] survey module initial --- app/assets/javascripts/survey_form.js.erb | 56 ++++++++ .../back_end/surveys_answers_controller.rb | 29 ++++ .../survey/back_end/surveys_controller.rb | 86 ++++++++++++ .../survey/front_end/surveys_controller.rb | 78 +++++++++++ .../survey/app/models/survey.rb | 55 ++++++++ .../survey/app/models/survey_answer.rb | 7 + .../survey/app/models/survey_question.rb | 27 ++++ .../app/models/survey_question_option.rb | 7 + .../app/models/survey_question_radiogroup.rb | 7 + .../survey/back_end/surveys/_form.html.erb | 105 ++++++++++++++ .../surveys/_form_survey_question.html.erb | 130 ++++++++++++++++++ .../_form_survey_question_option.html.erb | 26 ++++ .../_form_survey_question_radiogroup.html.erb | 26 ++++ .../back_end/surveys/_sort_headers.html.erb | 6 + .../survey/back_end/surveys/_survey.html.erb | 30 ++++ .../back_end/surveys_answers/_answer.html.erb | 21 +++ .../back_end/surveys_answers/_filter.html.erb | 11 ++ .../surveys_answers/_sort_headers.html.erb | 7 + .../back_end/surveys_answers/index.html.erb | 23 ++++ .../back_end/surveys_answers/index.js.erb | 4 + .../front_end/surveys/answer_error.html.erb | 4 + .../front_end/surveys/answer_success.html.erb | 4 + .../survey/front_end/surveys/show.html.erb | 87 ++++++++++++ .../survey/config/locales/en.yml | 17 +++ .../survey/config/locales/zh_tw.yml | 46 +++++++ .../built_in_modules/survey/config/routes.rb | 23 ++++ vendor/built_in_modules/survey/init.rb | 52 +++++++ vendor/built_in_modules/survey/survey.json | 12 ++ 28 files changed, 986 insertions(+) create mode 100644 app/assets/javascripts/survey_form.js.erb create mode 100644 vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_answers_controller.rb create mode 100644 vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb create mode 100644 vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb create mode 100644 vendor/built_in_modules/survey/app/models/survey.rb create mode 100644 vendor/built_in_modules/survey/app/models/survey_answer.rb create mode 100644 vendor/built_in_modules/survey/app/models/survey_question.rb create mode 100644 vendor/built_in_modules/survey/app/models/survey_question_option.rb create mode 100644 vendor/built_in_modules/survey/app/models/survey_question_radiogroup.rb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_option.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_radiogroup.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_sort_headers.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_filter.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_sort_headers.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.js.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_success.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb create mode 100644 vendor/built_in_modules/survey/config/locales/en.yml create mode 100644 vendor/built_in_modules/survey/config/locales/zh_tw.yml create mode 100644 vendor/built_in_modules/survey/config/routes.rb create mode 100644 vendor/built_in_modules/survey/init.rb create mode 100644 vendor/built_in_modules/survey/survey.json diff --git a/app/assets/javascripts/survey_form.js.erb b/app/assets/javascripts/survey_form.js.erb new file mode 100644 index 00000000..b187b316 --- /dev/null +++ b/app/assets/javascripts/survey_form.js.erb @@ -0,0 +1,56 @@ +<%#= encoding: utf-8 %> +$(document).ready(function(){ + + $(document).on('click', '.survey_question_item a.remove_existing_record_question', function(){ + if(confirm("<%= I18n.t(:sure?)%>")){ + $(this).next('.should_destroy').val(1); + $(".survey_question_item#" + $(this).prev().attr('value')).hide(); + } + }); + + $(document).on('click', '.survey_question_option_item a.remove_existing_record_option', function(){ + if(confirm("<%= I18n.t(:sure?)%>")){ + $(this).next('.should_destroy').val(1); + $(".survey_question_option_item#" + $(this).prev().attr('value')).hide(); + } + }); + + $(document).on('click', '.survey_question_radiogroup_item a.remove_existing_record_radiogroup', function(){ + if(confirm("<%= I18n.t(:sure?)%>")){ + $(this).next('.should_destroy').val(1); + $(".survey_question_radiogroup_item#" + $(this).prev().attr('value')).hide(); + } + }); + + $('.survey_question_item .type-selector').live('change', function(){ + $item = $(this).parents('.survey_question_item'); + $item.find('.type-specify').hide(); + $item.find('.type-specify.type-' + $(this).val()).show(); + $item.find('.type-specify.hide-type-' + $(this).val()).hide(); + }); + + $('.survey_question_item .type-selector').trigger('change'); + + $('.survey_question_item .add_survey_question_option a.add').live('click', function(){ + var new_id = $(this).prev().attr('value'); + var old_id = new RegExp("new_survey_question_options", "g"); + $(this).prev().attr('value', parseInt(new_id) + 1); + $_new = $($(this).next().html().replace(old_id, new_id)); + $(this).parents('.survey_question_options_wrapper').find('tbody').append($_new); + $_new.find('a.delete_option').on('click', function(){ + $(this).parents('.survey_question_option_item').remove(); + }); + }); + + $('.survey_question_item .add_survey_question_radiogroup a.add').live('click', function(){ + var new_id = $(this).prev().attr('value'); + var old_id = new RegExp("new_survey_question_radiogroups", "g"); + $(this).prev().attr('value', parseInt(new_id) + 1); + $_new = $($(this).next().html().replace(old_id, new_id)); + $(this).parents('.survey_question_radiogroups_wrapper').find('tbody').append($_new); + $_new.find('a.delete_radiogroup').on('click', function(){ + $(this).parents('.survey_question_radiogroup_item').remove(); + }); + }); + +}); \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_answers_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_answers_controller.rb new file mode 100644 index 00000000..b61a5b5a --- /dev/null +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_answers_controller.rb @@ -0,0 +1,29 @@ +class Panel::Survey::BackEnd::SurveysAnswersController < OrbitBackendController + + include AdminHelper + include OrbitControllerLib::DivisionForDisable + + def initialize + super + @app_title = 'survey_answer' + end + + def index + @survey = ::Survey.find(params[:survey_id]) + @answers = (params[:sort]) ? get_sorted_and_filtered("@survey.survey_answers") : get_viewable("@survey.survey_answers") + respond_to do |format| + format.html # index.html.erb + format.xml { render :xml => @qas } + format.js + end + end + + def delete + @survey = ::Survey.find(params[:survey_id]) + if params[:ids] + answers = @survey.survey_answers.any_in(:_id => params[:ids]).destroy_all + end + redirect_to panel_survey_back_end_survey_answers_url(@survey, :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]) + end + +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb new file mode 100644 index 00000000..de3c1f84 --- /dev/null +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb @@ -0,0 +1,86 @@ +class Panel::Survey::BackEnd::SurveysController < OrbitBackendController + + include AdminHelper + include OrbitControllerLib::DivisionForDisable + + def initialize + super + @app_title = 'survey' + end + + def index + @surveys = (params[:sort]) ? get_sorted_and_filtered("survey") : get_viewable("survey") + + respond_to do |format| + format.html # index.html.erb + format.xml { render :xml => @qas } + format.js + end + end + + def new + @survey = ::Survey.new + + respond_to do |format| + format.html # new.html.erb + format.xml { render :xml => @survey } + end + end + + def create + @survey = ::Survey.new(params[:survey]) + + @survey.create_user_id = current_user.id + @survey.update_user_id = current_user.id + + respond_to do |format| + if @survey.save + format.html { redirect_to(panel_survey_back_end_surveys_url) } + format.xml { render :xml => @survey, :status => :created, :location => @survey } + else + format.html { render :action => "new" } + format.xml { render :xml => @survey.errors, :status => :unprocessable_entity } + end + end + end + + def edit + @survey = ::Survey.find(params[:id]) + end + + def update + @survey = ::Survey.find(params[:id]) + + @survey.update_user_id = current_user.id + + respond_to do |format| + if @survey.update_attributes(params[:survey]) + format.html { redirect_to(panel_survey_back_end_surveys_url(:page => params[:page])) } + format.xml { head :ok } + else + format.html { render :action => "edit" } + format.xml { render :xml => @survey.errors, :status => :unprocessable_entity } + end + end + end + + def destroy + @survey = ::Survey.find(params[:id]) + + @survey.destroy + + respond_to do |format| + + format.html { redirect_to(panel_survey_back_end_surveys_url) } + format.js + end + end + + def delete + if params[:ids] + surveys = ::Survey.any_in(:_id => params[:ids]).destroy_all + end + redirect_to panel_survey_back_end_surveys_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]) + end + +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb new file mode 100644 index 00000000..80b03c5b --- /dev/null +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb @@ -0,0 +1,78 @@ +class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController + + def initialize + super + @app_title = 'survey' + end + + def index + + end + + def show + @survey = ::Survey.find params[:id] + end + + def update + @survey = ::Survey.find params[:id] + answer = params[:answer] + + @answer_model = @survey.survey_answers.new + @survey.survey_questions.each do |question| + qid = question.id.to_s + if question.is_required && answer[qid].blank? + @answer_model.errors.add question.title, t('survey_question.required_error') + else + case question.type + when ::SurveyQuestion::Radio, ::SurveyQuestion::Select + if question.custom_option && answer[qid] == 'custom_option' + @answer_model[qid] = answer[qid + '_custom_option'] + else + if answer[qid] + @answer_model[qid] = question.survey_question_options.find(answer[qid]).name + end + end + when ::SurveyQuestion::Check + @answer_model[qid] = [] + if answer[qid] + answer[qid].each do |oid, value| + if value.to_i != 0 + if question.custom_option && oid == 'custom_option' + @answer_model[qid].push answer[qid + '_custom_option'] + else + @answer_model[qid].push question.survey_question_options.find(oid).name + end + end + end + end + when ::SurveyQuestion::Radiogroup + @answer_model[qid] = {} + options = Hash[question.survey_question_options.collect{|o| [ o.id.to_s, o.name ] }] + radiogroups = Hash[question.survey_question_radiogroups.collect{|rg| [ rg.id.to_s, rg.name] }] + if answer[qid] + answer[qid].each do |oid, value| + unless value.blank? + @answer_model[qid][options[oid]] = radiogroups[value] + else + if question.is_required + @answer_model.errors.add question.title, t('survey_question.required_error') + end + end + end + end + when ::SurveyQuestion::Oneline, ::SurveyQuestion::Multiline + @answer_model[qid] = answer[qid] + end + end + end + p @answer_model + if @answer_model.errors.empty? + @answer_model.save! + render :answer_success + else + @survey_answer_error = @answer_model.errors.full_messages.join(',') + render :answer_error + end + end + +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/models/survey.rb b/vendor/built_in_modules/survey/app/models/survey.rb new file mode 100644 index 00000000..3706947c --- /dev/null +++ b/vendor/built_in_modules/survey/app/models/survey.rb @@ -0,0 +1,55 @@ +# encoding: utf-8 + +class Survey + + include Mongoid::Document + include Mongoid::Timestamps + + scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) } + scope :can_display, where(is_hidden: false) + + field :title, :localize => true + field :description, :localize => true + + field :create_user_id + field :update_user_id + + field :postdate, :type => DateTime + field :deadline, :type => DateTime + + field :is_hidden, :type => Boolean, :default => false + + validates :title, :at_least_one => true + + has_many :survey_questions, :autosave => true, :dependent => :destroy + has_many :survey_answers, :dependent => :destroy + + accepts_nested_attributes_for :survey_questions, :allow_destroy => true + + before_save :check_deadline, :update_avliable_language + + def time_range + r = "#{self.postdate.to_date}" + r += "- #{self.deadline.to_date}" if self.deadline + r + end + + protected + + def check_deadline + if(!self.deadline.nil? and (self.deadline < self.postdate )) + self.deadline = nil + end + end + + def update_avliable_language + VALID_LOCALES.each do |locale| + if (title_translations[locale].blank? rescue true) + self["available_for_#{locale}".to_sym] = false + else + self["available_for_#{locale}".to_sym] = true + end + end + end + +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/models/survey_answer.rb b/vendor/built_in_modules/survey/app/models/survey_answer.rb new file mode 100644 index 00000000..94fa2158 --- /dev/null +++ b/vendor/built_in_modules/survey/app/models/survey_answer.rb @@ -0,0 +1,7 @@ +class SurveyAnswer + include Mongoid::Document + include Mongoid::Timestamps + + belongs_to :survey + +end diff --git a/vendor/built_in_modules/survey/app/models/survey_question.rb b/vendor/built_in_modules/survey/app/models/survey_question.rb new file mode 100644 index 00000000..9d1e3155 --- /dev/null +++ b/vendor/built_in_modules/survey/app/models/survey_question.rb @@ -0,0 +1,27 @@ +class SurveyQuestion + + Oneline = 0 + Multiline = 1 + Radio = 2 + Check = 3 + Select = 4 + Radiogroup = 5 + + include Mongoid::Document + include Mongoid::Timestamps + + field :title, :localize => true + field :description, :localize => true + field :is_required, :type => Boolean + field :type, :type => Integer + + # allow custom answer option + field :custom_option, :type => Boolean + + belongs_to :survey + embeds_many :survey_question_options + embeds_many :survey_question_radiogroups + + accepts_nested_attributes_for :survey_question_options, :allow_destroy => true + accepts_nested_attributes_for :survey_question_radiogroups, :allow_destroy => true +end diff --git a/vendor/built_in_modules/survey/app/models/survey_question_option.rb b/vendor/built_in_modules/survey/app/models/survey_question_option.rb new file mode 100644 index 00000000..22dfd0f5 --- /dev/null +++ b/vendor/built_in_modules/survey/app/models/survey_question_option.rb @@ -0,0 +1,7 @@ +class SurveyQuestionOption + include Mongoid::Document + + field :name, :localize => true + + embedded_in :survey_question +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/models/survey_question_radiogroup.rb b/vendor/built_in_modules/survey/app/models/survey_question_radiogroup.rb new file mode 100644 index 00000000..05d4fcf6 --- /dev/null +++ b/vendor/built_in_modules/survey/app/models/survey_question_radiogroup.rb @@ -0,0 +1,7 @@ +class SurveyQuestionRadiogroup + include Mongoid::Document + + field :name, :localize => true + + embedded_in :survey_question +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb new file mode 100644 index 00000000..0bd483a8 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb @@ -0,0 +1,105 @@ +<% # encoding: utf-8 %> +
+ + <%= f.error_messages %> + +
+
+
+ +
+

<%= t(:date_) %>

+
+
+ <%= f.datetime_picker :postdate, :picker_type => 'separated', :label => t('survey.postdate') %> +
+
+ <%= f.datetime_picker :deadline, :picker_type => 'separated', :label => t('survey.deadline') %> +
+
+
+
+ +
+
+ +
+ + <% @site_valid_locales.each_with_index do |locale, i| %> + +
"> +
+ <%= f.label :title , t('survey.title') %> + <%= f.fields_for :title_translations do |f| %> + <%= I18nVariable.from_locale(locale) %> + <%= f.text_field locale, :style=>"width:98%;", :class=>'post-title', :value => (@survey.title_translations[locale] rescue nil) %> + <% end %> +
+ +
+ <%= f.label :description ,t('survey.description') %> + <%= f.fields_for :description_translations do |f| %> + <%= I18nVariable.from_locale(locale) %> + <%= f.text_area locale, :rows => 5, :style=>"width:98%;", :value => (@survey.description_translations[locale] rescue nil) %> + <% end %> +
+ +
+ + <% end %> + +
+ +
+
+
+ <% @survey.survey_questions.each_with_index do |survey_question, i| %> + <%= f.fields_for :survey_questions, survey_question do |f| %> + <%= render :partial => 'form_survey_question', :object => survey_question, :locals => {:f => f, :i => i} %> + <% end %> + <% end %> +
+
+ <%= hidden_field_tag 'survey_question_field_count', @survey.survey_questions.count %> + <%= t(:add) %> <%= t('survey.question') %> +
+
+ +
+ +
+ +
+ <%= hidden_field_tag 'page', params[:page] if !params[:page].blank? %> + <%= f.submit t('submit'), :class=>'btn btn-primary' %> + <%= link_to t('cancel'), get_go_back, :class=>"btn" %> +
+ +
+ +
+ + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "survey_form" %> + +<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb new file mode 100644 index 00000000..4163991e --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb @@ -0,0 +1,130 @@ +<% # encoding: utf-8 %> + +
" class="survey_question_item clear"> +
+
+ +
+

<%= t('survey.question') %>

+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %> + +
"> + +
+ <%= f.label :title , t('survey_question.title') %> + <%= f.fields_for :title_translations do |f| %> + <%= I18nVariable.from_locale(locale) %> + <%= f.text_field locale, :style=>"width:98%;", :value => (form_survey_question.title_translations[locale] rescue nil) %> + <% end %> +
+ +
+ <%= f.label :description ,t('survey_question.description') %> + <%= f.fields_for :description_translations do |f| %> + <%= I18nVariable.from_locale(locale) %> + <%= f.text_area locale, :rows => 5, :style=>"width:98%;", :value => (form_survey_question.description_translations[locale] rescue nil) %> + <% end %> +
+ +
+ + <% end %> + +
+ <%= f.label :type, t('survey_question.type')%> + <%= f.select :type, { + t('survey_question.oneline') => SurveyQuestion::Oneline, + t('survey_question.multiline') => SurveyQuestion::Multiline, + t('survey_question.radio') => SurveyQuestion::Radio, + t('survey_question.check') => SurveyQuestion::Check, + t('survey_question.select') => SurveyQuestion::Select, + t('survey_question.radiogroup') => SurveyQuestion::Radiogroup + }, {}, :class => "type-selector input-medium" %> +
+ +
+ <%= f.label :is_required, t('survey_question.is_required')%> + <%= f.check_box :is_required %> +
+ +
+ <%= f.label :survey_question_options, t('survey_question.radiogroups_lists')%> + + + + + + + + + <% form_survey_question.survey_question_radiogroups.each_with_index do |survey_question_radiogroup, i| %> + <%= f.fields_for :survey_question_radiogroups, survey_question_radiogroup do |f| %> + <%= render :partial => 'form_survey_question_radiogroup', :object => survey_question_radiogroup, :locals => {:f => f, :i => i} %> + <% end %> + <% end %> + + + + + + +
<%= t('survey_question.radiogroup_label') %>
+
+ <%= f.hidden_field :survey_question_radiogroup_field_count, :value => form_survey_question.survey_question_radiogroups.count %> + <%= t(:add) %> + +
+
+
+ +
+ <%= f.label :survey_question_options, t('survey_question.options_lists')%> + + + + + + + + + <% form_survey_question.survey_question_options.each_with_index do |survey_question_option, i| %> + <%= f.fields_for :survey_question_options, survey_question_option do |f| %> + <%= render :partial => 'form_survey_question_option', :object => survey_question_option, :locals => {:f => f, :i => i} %> + <% end %> + <% end %> + + + + + + +
<%= t('survey_question.option') %>
+
+ <%= f.hidden_field :survey_question_option_field_count, :value => form_survey_question.survey_question_options.count %> + <%= t(:add) %> + +
+
+
+ <%= f.label :custom_option, t('survey_question.custom_option')%> + <%= f.check_box :custom_option %> +
+
+
+ <% if form_survey_question.new_record? %> + + <% else %> + <%= f.hidden_field :id %> + <%= hidden_field_tag :tr, (dom_id form_survey_question) %> + + <%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %> + <% end %> +
+
+
\ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_option.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_option.html.erb new file mode 100644 index 00000000..082767e7 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_option.html.erb @@ -0,0 +1,26 @@ +" class='survey_question_option_item'> + +
+ <% @site_valid_locales.each_with_index do |locale, i| %> +
"> + <%= f.fields_for :name_translations do |f| %> + <%= I18nVariable.from_locale(locale) %> + <%= f.text_field locale, :style=>"width:98%;", :value => (form_survey_question_option.name_translations[locale] rescue nil) %> + <% end %> +
+ <% end %> +
+ + + + <% if form_survey_question_option.new_record? %> + + <% else %> + <%= f.hidden_field :id %> + <%= hidden_field_tag :tr, (dom_id form_survey_question_option) %> + + <%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %> + <% end %> + + + \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_radiogroup.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_radiogroup.html.erb new file mode 100644 index 00000000..640e6404 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question_radiogroup.html.erb @@ -0,0 +1,26 @@ +" class='survey_question_radiogroup_item'> + +
+ <% @site_valid_locales.each_with_index do |locale, i| %> +
"> + <%= f.fields_for :name_translations do |f| %> + <%= I18nVariable.from_locale(locale) %> + <%= f.text_field locale, :style=>"width:98%;", :value => (form_survey_question_radiogroup.name_translations[locale] rescue nil) %> + <% end %> +
+ <% end %> +
+ + + + <% if form_survey_question_radiogroup.new_record? %> + + <% else %> + <%= f.hidden_field :id %> + <%= hidden_field_tag :tr, (dom_id form_survey_question_radiogroup) %> + + <%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %> + <% end %> + + + \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_sort_headers.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_sort_headers.html.erb new file mode 100644 index 00000000..9b556368 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_sort_headers.html.erb @@ -0,0 +1,6 @@ +<%= render_sort_bar(true, delete_panel_survey_back_end_surveys_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]), + ['title', 'title', 'span3', 'survey.title'], + ['postdate', 'postdate','span1', 'survey.postdate'], + ['deadline', 'deadline','span1', 'survey.deadline'], + ['results_count', 'results_count','span1', 'survey.results_count'], + ['update_user', 'update_user','span2', 'survey.update_user']).html_safe %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb new file mode 100644 index 00000000..eeaa50ea --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb @@ -0,0 +1,30 @@ + + + <% if (survey.create_user_id == current_or_guest_user.id) || is_manager? %> + <%= check_box_tag 'to_delete[]', survey.id, false, :class => "checkbox_in_list" %> + <% end -%> + + + <%= link_to survey.title, panel_survey_front_end_survey_path(survey) %> +
+ +
+ + + <%= (survey.postdate) ? display_date_time(survey.postdate): t(:no_deadline) %> + + + <%= (survey.deadline) ? display_date_time(survey.deadline): t(:no_deadline) %> + + + <%= survey.survey_answers.count %> + + <%= User.from_id(survey.update_user_id).name rescue ''%> + + diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb new file mode 100644 index 00000000..b70c5db3 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb @@ -0,0 +1,21 @@ + + + <%= check_box_tag 'to_delete[]', answer.id, false, :class => "checkbox_in_list" %> + + <% @survey.survey_questions.each do |question| %> + + <% qid = question.id %> + <% case question.type %> + <% when ::SurveyQuestion::Check %> + <%= answer[qid].join(', ') %> + <% when ::SurveyQuestion::Radiogroup %> + <%= answer[qid].map{|key, value| key + ': ' + value}.join('; ') unless answer[qid].blank? %> + <% else %> + <%= answer[qid] %> + <% end %> + + <% end %> + + <%= answer.created_at %> + + \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_filter.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_filter.html.erb new file mode 100644 index 00000000..0042d5c3 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_filter.html.erb @@ -0,0 +1,11 @@ + + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "sort_header" %> +<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_sort_headers.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_sort_headers.html.erb new file mode 100644 index 00000000..b4cb1477 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_sort_headers.html.erb @@ -0,0 +1,7 @@ +<% _sort_args = [] %> +<% @survey.survey_questions.each do |question| %> + <% _sort_args.push [question.id.to_s, question.id.to_s, 'span1', question.title] %> +<% end %> +<% _sort_args.push ['created_at', 'created_at','span1', 'created_at'] %> +<%= render_sort_bar(true, delete_panel_survey_back_end_survey_answers_path(@survey, :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]), + *_sort_args).html_safe %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.html.erb new file mode 100644 index 00000000..c30d7f60 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.html.erb @@ -0,0 +1,23 @@ +<%= render 'filter' %> + + + + + + <% @survey.survey_questions.each do |question| %> + + <% end %> + + + + + <%= render :partial => 'answer', :collection => @answers %> + +
+ +
+ <%= link_to t(:back) + t('survey.survey'), panel_survey_back_end_surveys_path, :class => 'btn btn-primary pull-right' %> +
+ <%= paginate @answers %> +
+
\ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.js.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.js.erb new file mode 100644 index 00000000..c199c634 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.js.erb @@ -0,0 +1,4 @@ +$("#delete_all").attr("action", "<%= delete_panel_survey_back_end_survey_answers_path(@survey, :direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>"); +$("#sort_headers").html("<%= j render 'sort_headers' %>"); +$("#tbody_survey_answers").html("<%= j render :partial => 'answer', :collection => @answers %>"); +$("#survey_answers_pagination").html("<%= j paginate @answers %>"); \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb new file mode 100644 index 00000000..67e73a44 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_success.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_success.html.erb new file mode 100644 index 00000000..d5e77ab3 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_success.html.erb @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb new file mode 100644 index 00000000..2e4cca6c --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb @@ -0,0 +1,87 @@ +<% # encoding: utf-8 %> +

<%= @survey.title %>

+<%= form_for :answer, :method => :put, :url => panel_survey_front_end_survey_path(@survey, :inner => true), :html => {:class => 'clear'} do |f| %> + <% @survey.survey_questions.each do |question| %> + <% label = question.title %> + <% label += ' (' + t('survey_question.required') + ')' if question.is_required %> + <%= f.label question.id, label %> +

<%= question.description %>

+ <% case question.type %> + <% when ::SurveyQuestion::Oneline %> + <%= f.text_field question.id, :required => question.is_required %> + <% when ::SurveyQuestion::Multiline %> + <%= f.text_area question.id, :rows => 5, :required => question.is_required %> + <% when ::SurveyQuestion::Radio %> + <% question.survey_question_options.each do |option| %> +

+ <%= f.radio_button question.id, option.id %> + <%= f.label "#{question.id}_#{option.id}", option.name, :style => "display:inline" %> +

+ <% end %> + <% if question.custom_option %> +

+ <%= f.radio_button question.id, 'custom_option' %> + <%= f.label "#{question.id}_custom_option", t('survey_question.use_custom_option') + ': ', :style => "display:inline" %> + <%= f.text_field "#{question.id}_custom_option" %> +

+ <% end %> + <% when ::SurveyQuestion::Check %> + <%= f.fields_for "#{question.id}" do |cf| %> + <% question.survey_question_options.each do |option| %> +

+ <%= cf.check_box option.id %> + <%= cf.label option.id, option.name, :style => "display:inline" %> +

+ <% end %> + <% if question.custom_option %> +

+ <%= cf.check_box 'custom_option' %> + <%= f.label "#{question.id}_custom_option", t('survey_question.use_custom_option') + ': ', :style => "display:inline" %> + <%= f.text_field "#{question.id}_custom_option" %> +

+ <% end %> + <% end %> + <% when ::SurveyQuestion::Select %> + <% options = question.survey_question_options.collect {|o| [ o.name, o.id ] } %> + <% if question.custom_option %> + <% options.push [t('survey_question.use_custom_option'), 'custom_option'] %> + <% end %> + <%= f.select question.id, options %> + <% if question.custom_option %> + <%= f.text_field "#{question.id}_custom_option" %> + <% end %> + <% when ::SurveyQuestion::Radiogroup %> + <%= f.fields_for "#{question.id}" do |rgf| %> + + + + + <% question.survey_question_radiogroups.each do |radiogroup| %> + + <% end %> + + + + <% question.survey_question_options.each do |option| %> + + + <% question.survey_question_radiogroups.each do |radiogroup| %> + + <% end %> + + <% end %> + +
+ <%= rgf.label radiogroup.id, radiogroup.name %> +
+ <%= rgf.label option.id, option.name %> + + <%= rgf.radio_button option.id, radiogroup.id %> +
+ <% end %> + <% end %> + <% end %> +

+ <%= f.submit t('submit') %> +

+<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/config/locales/en.yml b/vendor/built_in_modules/survey/config/locales/en.yml new file mode 100644 index 00000000..d2ce8eb7 --- /dev/null +++ b/vendor/built_in_modules/survey/config/locales/en.yml @@ -0,0 +1,17 @@ +en: + + survey: + survey: Survey + title: Title + description: Description + postdate: Start Date + deadline: End Date + no_postdate: No Start Date + no_deadline: No Start Date + results_count: Results Count + update_user: Update User + question: Question + + survey_question: + title: Question + description: Description \ No newline at end of file diff --git a/vendor/built_in_modules/survey/config/locales/zh_tw.yml b/vendor/built_in_modules/survey/config/locales/zh_tw.yml new file mode 100644 index 00000000..f099acb1 --- /dev/null +++ b/vendor/built_in_modules/survey/config/locales/zh_tw.yml @@ -0,0 +1,46 @@ +zh_tw: + + survey: + survey: 問卷調查 + title: 問卷標題 + description: 問卷說明 + postdate: 開始時間 + deadline: 結束時間 + start_deadline: 開始/結束時間 + no_postdate: 沒有開始時間 + no_deadline: 沒有結束時間 + results_count: 回覆數 + update_user: 最後更新者 + question: 問題 + + answer_success: 問卷填寫成功,現在跳回 + answer_error: 問卷填寫錯誤 + + answers: 結果 + + default_widget: + title: 問卷標題 + time_range: 問卷期間 + + frontend: + survey: 問卷調查前台 + + survey_question: + title: 題目 + description: 說明 + type: 作答方式 + is_required: 設為必填 + required: 必填 + required_error: 沒有回答 + oneline: 單行文字 + multiline: 多行文字 + radio: 單選按鈕 + check: 多選方塊 + select: 下拉選單 + radiogroup: 格狀呈現 + options_lists: 選項清單 + radiogroup_label: 橫欄 + radiogroups_lists: 橫欄清單 + option: 選項 + custom_option: 允許自定回答選項 + use_custom_option: 其他 diff --git a/vendor/built_in_modules/survey/config/routes.rb b/vendor/built_in_modules/survey/config/routes.rb new file mode 100644 index 00000000..aeae5f5b --- /dev/null +++ b/vendor/built_in_modules/survey/config/routes.rb @@ -0,0 +1,23 @@ +Rails.application.routes.draw do + + namespace :panel do + namespace :survey do + namespace :back_end do + resources :surveys do + collection do + get 'delete' + end + resources :answers, :controller => :surveys_answers do + collection do + get 'delete' + end + end + end + end + namespace :front_end do + resources :surveys + end + end + end + match "/appfront/*path" => redirect("/panel/*path") +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/init.rb b/vendor/built_in_modules/survey/init.rb new file mode 100644 index 00000000..f1c3deb7 --- /dev/null +++ b/vendor/built_in_modules/survey/init.rb @@ -0,0 +1,52 @@ +module Faq + OrbitApp.registration "Survey",:type=> 'ModuleApp' do + module_label 'survey.survey' + base_url File.expand_path File.dirname(__FILE__) + # personal_plugin :enable => true,:path=>"panel/faq/plugin/profile",:i18n=>'admin.faq' + + version "0.1" + organization "Rulingcom" + author "RD dep" + intro "I am intro" + update_info 'some update_info' + + front_end do + app_page 'survey' do + frontend_i18n "survey.frontend.survey" + end + end + + data_count 1..20 + + widgets do + default_widget do + enable ["typeA"] + query 'Survey.any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now, :postdate.lte => Time.now} )' + link_field :title,{:method => 'panel_survey_front_end_survey_path',:args=>:self} + field :time_range + link_to_more 'panel_survey_front_end_survey_path',:title_i18n=> 'faq.default_widget.to_more' + end + end + + + side_bar do + head_label_i18n 'survey.survey',:icon_class=>"icons-pie" + available_for [:admin,:manager,:sub_manager] + active_for_controllers ({:private=>['surveys', 'surveys_answers']}) + + head_link_path "panel_survey_back_end_surveys_path" + + context_link 'list_', + :link_path=>"panel_survey_back_end_surveys_path" , + :priority=>1, + :active_for_action=>{:surveys=>:index}, + :available_for => [:all] + + context_link 'add', + :link_path=>"new_panel_survey_back_end_survey_path" , + :priority=>2, + :active_for_action=>{:surveys=>:new}, + :available_for => [:sub_manager] + end + end +end diff --git a/vendor/built_in_modules/survey/survey.json b/vendor/built_in_modules/survey/survey.json new file mode 100644 index 00000000..92faea8e --- /dev/null +++ b/vendor/built_in_modules/survey/survey.json @@ -0,0 +1,12 @@ +{ + "title": "survey", + "version": "0.1", + "organization": "Rulingcom", + "author": "RD dep", + "intro": "survey", + "update_info": "Some info", + "create_date": "04-18-2013", + "widgets": ["index"], + "category": [], + "enable_frontend": true +} From 32c259ac9e41dd00b47a90f8d90e8d9cc68ab33f Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 29 Apr 2013 21:33:43 +0800 Subject: [PATCH 02/19] survey: remain stuff --- vendor/built_in_modules/survey/.gitignore | 7 + vendor/built_in_modules/survey/Gemfile | 17 ++ vendor/built_in_modules/survey/MIT-LICENSE | 20 ++ vendor/built_in_modules/survey/README.rdoc | 3 + vendor/built_in_modules/survey/Rakefile | 38 +++ .../app/controllers/application_controller.rb | 23 ++ .../survey/back_end/surveys/_filter.html.erb | 11 + .../survey/back_end/surveys/destroy.js.erb | 1 + .../survey/back_end/surveys/edit.html.erb | 5 + .../survey/back_end/surveys/index.html.erb | 24 ++ .../survey/back_end/surveys/index.js.erb | 4 + .../survey/back_end/surveys/new.html.erb | 7 + vendor/built_in_modules/survey/lib/survey.rb | 2 + .../survey/lib/survey/version.rb | 3 + .../survey/lib/tasks/survey_tasks.rake | 4 + vendor/built_in_modules/survey/survey.gemspec | 22 ++ .../survey/test/dummy/README.rdoc | 261 ++++++++++++++++++ .../survey/test/dummy/Rakefile | 7 + .../app/assets/javascripts/application.js | 15 + .../app/assets/stylesheets/application.css | 13 + .../app/controllers/application_controller.rb | 3 + .../dummy/app/helpers/application_helper.rb | 2 + .../survey/test/dummy/app/mailers/.gitkeep | 0 .../survey/test/dummy/app/models/.gitkeep | 0 .../app/views/layouts/application.html.erb | 14 + .../survey/test/dummy/config.ru | 4 + .../survey/test/dummy/config/application.rb | 59 ++++ .../survey/test/dummy/config/boot.rb | 10 + .../survey/test/dummy/config/database.yml | 25 ++ .../survey/test/dummy/config/environment.rb | 5 + .../dummy/config/environments/development.rb | 37 +++ .../dummy/config/environments/production.rb | 67 +++++ .../test/dummy/config/environments/test.rb | 37 +++ .../initializers/backtrace_silencers.rb | 7 + .../dummy/config/initializers/inflections.rb | 15 + .../dummy/config/initializers/mime_types.rb | 5 + .../dummy/config/initializers/secret_token.rb | 7 + .../config/initializers/session_store.rb | 8 + .../config/initializers/wrap_parameters.rb | 14 + .../survey/test/dummy/config/locales/en.yml | 5 + .../survey/test/dummy/config/routes.rb | 58 ++++ .../survey/test/dummy/lib/assets/.gitkeep | 0 .../survey/test/dummy/log/.gitkeep | 0 .../survey/test/dummy/public/404.html | 26 ++ .../survey/test/dummy/public/422.html | 26 ++ .../survey/test/dummy/public/500.html | 25 ++ .../survey/test/dummy/public/favicon.ico | 0 .../survey/test/dummy/script/rails | 6 + .../survey/test/survey_test.rb | 7 + .../survey/test/test_helper.rb | 15 + 50 files changed, 974 insertions(+) create mode 100644 vendor/built_in_modules/survey/.gitignore create mode 100644 vendor/built_in_modules/survey/Gemfile create mode 100644 vendor/built_in_modules/survey/MIT-LICENSE create mode 100644 vendor/built_in_modules/survey/README.rdoc create mode 100644 vendor/built_in_modules/survey/Rakefile create mode 100644 vendor/built_in_modules/survey/app/controllers/application_controller.rb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_filter.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/destroy.js.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/edit.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.js.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/new.html.erb create mode 100644 vendor/built_in_modules/survey/lib/survey.rb create mode 100644 vendor/built_in_modules/survey/lib/survey/version.rb create mode 100644 vendor/built_in_modules/survey/lib/tasks/survey_tasks.rake create mode 100644 vendor/built_in_modules/survey/survey.gemspec create mode 100644 vendor/built_in_modules/survey/test/dummy/README.rdoc create mode 100644 vendor/built_in_modules/survey/test/dummy/Rakefile create mode 100644 vendor/built_in_modules/survey/test/dummy/app/assets/javascripts/application.js create mode 100644 vendor/built_in_modules/survey/test/dummy/app/assets/stylesheets/application.css create mode 100644 vendor/built_in_modules/survey/test/dummy/app/controllers/application_controller.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/app/helpers/application_helper.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/app/mailers/.gitkeep create mode 100644 vendor/built_in_modules/survey/test/dummy/app/models/.gitkeep create mode 100644 vendor/built_in_modules/survey/test/dummy/app/views/layouts/application.html.erb create mode 100644 vendor/built_in_modules/survey/test/dummy/config.ru create mode 100644 vendor/built_in_modules/survey/test/dummy/config/application.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/boot.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/database.yml create mode 100644 vendor/built_in_modules/survey/test/dummy/config/environment.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/environments/development.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/environments/production.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/environments/test.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/initializers/backtrace_silencers.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/initializers/inflections.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/initializers/mime_types.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/initializers/secret_token.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/initializers/session_store.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/initializers/wrap_parameters.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/config/locales/en.yml create mode 100644 vendor/built_in_modules/survey/test/dummy/config/routes.rb create mode 100644 vendor/built_in_modules/survey/test/dummy/lib/assets/.gitkeep create mode 100644 vendor/built_in_modules/survey/test/dummy/log/.gitkeep create mode 100644 vendor/built_in_modules/survey/test/dummy/public/404.html create mode 100644 vendor/built_in_modules/survey/test/dummy/public/422.html create mode 100644 vendor/built_in_modules/survey/test/dummy/public/500.html create mode 100644 vendor/built_in_modules/survey/test/dummy/public/favicon.ico create mode 100755 vendor/built_in_modules/survey/test/dummy/script/rails create mode 100644 vendor/built_in_modules/survey/test/survey_test.rb create mode 100644 vendor/built_in_modules/survey/test/test_helper.rb diff --git a/vendor/built_in_modules/survey/.gitignore b/vendor/built_in_modules/survey/.gitignore new file mode 100644 index 00000000..1dfe31e6 --- /dev/null +++ b/vendor/built_in_modules/survey/.gitignore @@ -0,0 +1,7 @@ +.bundle/ +log/*.log +pkg/ +test/dummy/db/*.sqlite3 +test/dummy/log/*.log +test/dummy/tmp/ +test/dummy/.sass-cache diff --git a/vendor/built_in_modules/survey/Gemfile b/vendor/built_in_modules/survey/Gemfile new file mode 100644 index 00000000..e57f76df --- /dev/null +++ b/vendor/built_in_modules/survey/Gemfile @@ -0,0 +1,17 @@ +source "http://rubygems.org" + +# Declare your gem's dependencies in survey.gemspec. +# Bundler will treat runtime dependencies like base dependencies, and +# development dependencies will be added by default to the :development group. +gemspec + +# jquery-rails is used by the dummy application +gem "jquery-rails" + +# Declare any dependencies that are still in development here instead of in +# your gemspec. These might include edge Rails or gems from your path or +# Git. Remember to move these dependencies to your gemspec before releasing +# your gem to rubygems.org. + +# To use debugger +# gem 'debugger' diff --git a/vendor/built_in_modules/survey/MIT-LICENSE b/vendor/built_in_modules/survey/MIT-LICENSE new file mode 100644 index 00000000..5146945d --- /dev/null +++ b/vendor/built_in_modules/survey/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright 2013 YOURNAME + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/built_in_modules/survey/README.rdoc b/vendor/built_in_modules/survey/README.rdoc new file mode 100644 index 00000000..e5883aac --- /dev/null +++ b/vendor/built_in_modules/survey/README.rdoc @@ -0,0 +1,3 @@ += Survey + +This project rocks and uses MIT-LICENSE. \ No newline at end of file diff --git a/vendor/built_in_modules/survey/Rakefile b/vendor/built_in_modules/survey/Rakefile new file mode 100644 index 00000000..55c452f6 --- /dev/null +++ b/vendor/built_in_modules/survey/Rakefile @@ -0,0 +1,38 @@ +#!/usr/bin/env rake +begin + require 'bundler/setup' +rescue LoadError + puts 'You must `gem install bundler` and `bundle install` to run rake tasks' +end +begin + require 'rdoc/task' +rescue LoadError + require 'rdoc/rdoc' + require 'rake/rdoctask' + RDoc::Task = Rake::RDocTask +end + +RDoc::Task.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'Survey' + rdoc.options << '--line-numbers' + rdoc.rdoc_files.include('README.rdoc') + rdoc.rdoc_files.include('lib/**/*.rb') +end + + + + +Bundler::GemHelper.install_tasks + +require 'rake/testtask' + +Rake::TestTask.new(:test) do |t| + t.libs << 'lib' + t.libs << 'test' + t.pattern = 'test/**/*_test.rb' + t.verbose = false +end + + +task :default => :test diff --git a/vendor/built_in_modules/survey/app/controllers/application_controller.rb b/vendor/built_in_modules/survey/app/controllers/application_controller.rb new file mode 100644 index 00000000..307a4acd --- /dev/null +++ b/vendor/built_in_modules/survey/app/controllers/application_controller.rb @@ -0,0 +1,23 @@ +class ApplicationController < ActionController::Base + protect_from_forgery + before_filter :set_locale + + # Set I18n.locale + def set_locale + # update session if passed + session[:locale] = params[:locale] if params[:locale] + + # set locale based on session or default + begin + # check if locale is valid for non site pages + if !VALID_LOCALES.include?(session[:locale]) + I18n.locale = I18n.default_locale + else + I18n.locale = session[:locale] + end + rescue + I18n.locale = I18n.default_locale + end + end + +end diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_filter.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_filter.html.erb new file mode 100644 index 00000000..0042d5c3 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_filter.html.erb @@ -0,0 +1,11 @@ + + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "sort_header" %> +<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/destroy.js.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/destroy.js.erb new file mode 100644 index 00000000..c492e91c --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/destroy.js.erb @@ -0,0 +1 @@ +$("#<%= dom_id @survey %>").remove(); \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/edit.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/edit.html.erb new file mode 100644 index 00000000..1996c7cf --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/edit.html.erb @@ -0,0 +1,5 @@ +

<%= t('survey.editing_survey') %>

+ +<%= form_for @survey, :url => panel_survey_back_end_survey_path(@survey), :html => {:class => 'clear'} do |f| %> + <%= render :partial => 'form', :locals => {:f => f} %> +<% end %> diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.html.erb new file mode 100644 index 00000000..2144c19a --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.html.erb @@ -0,0 +1,24 @@ +<%= render 'filter' %> + + + + + + + + + + + + + + <%= render :partial => 'survey', :collection => @surveys %> + +
+ +
+ <%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:add), new_panel_survey_back_end_survey_path, :class => 'btn btn-primary pull-right' if (is_manager? rescue nil) %> +
+ <%= paginate @surveys %> +
+
\ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.js.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.js.erb new file mode 100644 index 00000000..548f381e --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/index.js.erb @@ -0,0 +1,4 @@ +$("#delete_all").attr("action", "<%= delete_panel_survey_back_end_surveys_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>"); +$("#sort_headers").html("<%= j render 'sort_headers' %>"); +$("#tbody_surveys").html("<%= j render :partial => 'survey', :collection => @surveys %>"); +$("#survey_pagination").html("<%= j paginate @surveys %>"); \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/new.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/new.html.erb new file mode 100644 index 00000000..cb9ee207 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/new.html.erb @@ -0,0 +1,7 @@ +<%= flash_messages %> +
+

<%= t('survey.new_survey') %>

+<%= form_for @survey, :url => panel_survey_back_end_surveys_path, :html => {:class => 'clear'} do |f| %> + <%= render :partial => 'form', :locals => {:f => f} %> +<% end %> +
\ No newline at end of file diff --git a/vendor/built_in_modules/survey/lib/survey.rb b/vendor/built_in_modules/survey/lib/survey.rb new file mode 100644 index 00000000..05d2f076 --- /dev/null +++ b/vendor/built_in_modules/survey/lib/survey.rb @@ -0,0 +1,2 @@ +module Survey +end diff --git a/vendor/built_in_modules/survey/lib/survey/version.rb b/vendor/built_in_modules/survey/lib/survey/version.rb new file mode 100644 index 00000000..b6eb241e --- /dev/null +++ b/vendor/built_in_modules/survey/lib/survey/version.rb @@ -0,0 +1,3 @@ +module Survey + VERSION = "0.0.1" +end diff --git a/vendor/built_in_modules/survey/lib/tasks/survey_tasks.rake b/vendor/built_in_modules/survey/lib/tasks/survey_tasks.rake new file mode 100644 index 00000000..7fcf4ea0 --- /dev/null +++ b/vendor/built_in_modules/survey/lib/tasks/survey_tasks.rake @@ -0,0 +1,4 @@ +# desc "Explaining what the task does" +# task :survey do +# # Task goes here +# end diff --git a/vendor/built_in_modules/survey/survey.gemspec b/vendor/built_in_modules/survey/survey.gemspec new file mode 100644 index 00000000..16a67c13 --- /dev/null +++ b/vendor/built_in_modules/survey/survey.gemspec @@ -0,0 +1,22 @@ +$:.push File.expand_path("../lib", __FILE__) + +# Maintain your gem's version: +require "survey/version" + +# Describe your gem and declare its dependencies: +Gem::Specification.new do |s| + s.name = "survey" + s.version = Survey::VERSION + s.authors = ["TODO: Your name"] + s.email = ["TODO: Your email"] + s.homepage = "TODO" + s.summary = "TODO: Summary of Survey." + s.description = "TODO: Description of Survey." + + s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"] + s.test_files = Dir["test/**/*"] + + s.add_dependency "rails", "~> 3.2.12" + + s.add_development_dependency "sqlite3" +end diff --git a/vendor/built_in_modules/survey/test/dummy/README.rdoc b/vendor/built_in_modules/survey/test/dummy/README.rdoc new file mode 100644 index 00000000..7c36f235 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/README.rdoc @@ -0,0 +1,261 @@ +== Welcome to Rails + +Rails is a web-application framework that includes everything needed to create +database-backed web applications according to the Model-View-Control pattern. + +This pattern splits the view (also called the presentation) into "dumb" +templates that are primarily responsible for inserting pre-built data in between +HTML tags. The model contains the "smart" domain objects (such as Account, +Product, Person, Post) that holds all the business logic and knows how to +persist themselves to a database. The controller handles the incoming requests +(such as Save New Account, Update Product, Show Post) by manipulating the model +and directing data to the view. + +In Rails, the model is handled by what's called an object-relational mapping +layer entitled Active Record. This layer allows you to present the data from +database rows as objects and embellish these data objects with business logic +methods. You can read more about Active Record in +link:files/vendor/rails/activerecord/README.html. + +The controller and view are handled by the Action Pack, which handles both +layers by its two parts: Action View and Action Controller. These two layers +are bundled in a single package due to their heavy interdependence. This is +unlike the relationship between the Active Record and Action Pack that is much +more separate. Each of these packages can be used independently outside of +Rails. You can read more about Action Pack in +link:files/vendor/rails/actionpack/README.html. + + +== Getting Started + +1. At the command prompt, create a new Rails application: + rails new myapp (where myapp is the application name) + +2. Change directory to myapp and start the web server: + cd myapp; rails server (run with --help for options) + +3. Go to http://localhost:3000/ and you'll see: + "Welcome aboard: You're riding Ruby on Rails!" + +4. Follow the guidelines to start developing your application. You can find +the following resources handy: + +* The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html +* Ruby on Rails Tutorial Book: http://www.railstutorial.org/ + + +== Debugging Rails + +Sometimes your application goes wrong. Fortunately there are a lot of tools that +will help you debug it and get it back on the rails. + +First area to check is the application log files. Have "tail -f" commands +running on the server.log and development.log. Rails will automatically display +debugging and runtime information to these files. Debugging info will also be +shown in the browser on requests from 127.0.0.1. + +You can also log your own messages directly into the log file from your code +using the Ruby logger class from inside your controllers. Example: + + class WeblogController < ActionController::Base + def destroy + @weblog = Weblog.find(params[:id]) + @weblog.destroy + logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") + end + end + +The result will be a message in your log file along the lines of: + + Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1! + +More information on how to use the logger is at http://www.ruby-doc.org/core/ + +Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are +several books available online as well: + +* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe) +* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide) + +These two books will bring you up to speed on the Ruby language and also on +programming in general. + + +== Debugger + +Debugger support is available through the debugger command when you start your +Mongrel or WEBrick server with --debugger. This means that you can break out of +execution at any point in the code, investigate and change the model, and then, +resume execution! You need to install ruby-debug to run the server in debugging +mode. With gems, use sudo gem install ruby-debug. Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.all + debugger + end + end + +So the controller will accept the action, run the first line, then present you +with a IRB prompt in the server window. Here you can do things like: + + >> @posts.inspect + => "[#nil, "body"=>nil, "id"=>"1"}>, + #"Rails", "body"=>"Only ten..", "id"=>"2"}>]" + >> @posts.first.title = "hello from a debugger" + => "hello from a debugger" + +...and even better, you can examine how your runtime objects actually work: + + >> f = @posts.first + => #nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + +Finally, when you're ready to resume execution, you can enter "cont". + + +== Console + +The console is a Ruby shell, which allows you to interact with your +application's domain model. Here you'll have all parts of the application +configured, just like it is when the application is running. You can inspect +domain models, change values, and save to the database. Starting the script +without arguments will launch it in the development environment. + +To start the console, run rails console from the application +directory. + +Options: + +* Passing the -s, --sandbox argument will rollback any modifications + made to the database. +* Passing an environment name as an argument will load the corresponding + environment. Example: rails console production. + +To reload your controllers and models after launching the console run +reload! + +More information about irb can be found at: +link:http://www.rubycentral.org/pickaxe/irb.html + + +== dbconsole + +You can go to the command line of your database directly through rails +dbconsole. You would be connected to the database with the credentials +defined in database.yml. Starting the script without arguments will connect you +to the development database. Passing an argument will connect you to a different +database, like rails dbconsole production. Currently works for MySQL, +PostgreSQL and SQLite 3. + +== Description of Contents + +The default directory structure of a generated Ruby on Rails application: + + |-- app + | |-- assets + | |-- images + | |-- javascripts + | `-- stylesheets + | |-- controllers + | |-- helpers + | |-- mailers + | |-- models + | `-- views + | `-- layouts + |-- config + | |-- environments + | |-- initializers + | `-- locales + |-- db + |-- doc + |-- lib + | `-- tasks + |-- log + |-- public + |-- script + |-- test + | |-- fixtures + | |-- functional + | |-- integration + | |-- performance + | `-- unit + |-- tmp + | |-- cache + | |-- pids + | |-- sessions + | `-- sockets + `-- vendor + |-- assets + `-- stylesheets + `-- plugins + +app + Holds all the code that's specific to this particular application. + +app/assets + Contains subdirectories for images, stylesheets, and JavaScript files. + +app/controllers + Holds controllers that should be named like weblogs_controller.rb for + automated URL mapping. All controllers should descend from + ApplicationController which itself descends from ActionController::Base. + +app/models + Holds models that should be named like post.rb. Models descend from + ActiveRecord::Base by default. + +app/views + Holds the template files for the view that should be named like + weblogs/index.html.erb for the WeblogsController#index action. All views use + eRuby syntax by default. + +app/views/layouts + Holds the template files for layouts to be used with views. This models the + common header/footer method of wrapping views. In your views, define a layout + using the layout :default and create a file named default.html.erb. + Inside default.html.erb, call <% yield %> to render the view using this + layout. + +app/helpers + Holds view helpers that should be named like weblogs_helper.rb. These are + generated for you automatically when using generators for controllers. + Helpers can be used to wrap functionality for your views into methods. + +config + Configuration files for the Rails environment, the routing map, the database, + and other dependencies. + +db + Contains the database schema in schema.rb. db/migrate contains all the + sequence of Migrations for your schema. + +doc + This directory is where your application documentation will be stored when + generated using rake doc:app + +lib + Application specific libraries. Basically, any kind of custom code that + doesn't belong under controllers, models, or helpers. This directory is in + the load path. + +public + The directory available for the web server. Also contains the dispatchers and the + default HTML files. This should be set as the DOCUMENT_ROOT of your web + server. + +script + Helper scripts for automation and generation. + +test + Unit and functional tests along with fixtures. When using the rails generate + command, template test files will be generated for you and placed in this + directory. + +vendor + External libraries that the application depends on. Also includes the plugins + subdirectory. If the app has frozen rails, those gems also go here, under + vendor/rails/. This directory is in the load path. diff --git a/vendor/built_in_modules/survey/test/dummy/Rakefile b/vendor/built_in_modules/survey/test/dummy/Rakefile new file mode 100644 index 00000000..36458522 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/Rakefile @@ -0,0 +1,7 @@ +#!/usr/bin/env rake +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require File.expand_path('../config/application', __FILE__) + +Dummy::Application.load_tasks diff --git a/vendor/built_in_modules/survey/test/dummy/app/assets/javascripts/application.js b/vendor/built_in_modules/survey/test/dummy/app/assets/javascripts/application.js new file mode 100644 index 00000000..9097d830 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/app/assets/javascripts/application.js @@ -0,0 +1,15 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// +// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD +// GO AFTER THE REQUIRES BELOW. +// +//= require jquery +//= require jquery_ujs +//= require_tree . diff --git a/vendor/built_in_modules/survey/test/dummy/app/assets/stylesheets/application.css b/vendor/built_in_modules/survey/test/dummy/app/assets/stylesheets/application.css new file mode 100644 index 00000000..3192ec89 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/app/assets/stylesheets/application.css @@ -0,0 +1,13 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the top of the + * compiled file, but it's generally better to create a new file per style scope. + * + *= require_self + *= require_tree . + */ diff --git a/vendor/built_in_modules/survey/test/dummy/app/controllers/application_controller.rb b/vendor/built_in_modules/survey/test/dummy/app/controllers/application_controller.rb new file mode 100644 index 00000000..e8065d95 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/app/controllers/application_controller.rb @@ -0,0 +1,3 @@ +class ApplicationController < ActionController::Base + protect_from_forgery +end diff --git a/vendor/built_in_modules/survey/test/dummy/app/helpers/application_helper.rb b/vendor/built_in_modules/survey/test/dummy/app/helpers/application_helper.rb new file mode 100644 index 00000000..de6be794 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/vendor/built_in_modules/survey/test/dummy/app/mailers/.gitkeep b/vendor/built_in_modules/survey/test/dummy/app/mailers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/vendor/built_in_modules/survey/test/dummy/app/models/.gitkeep b/vendor/built_in_modules/survey/test/dummy/app/models/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/vendor/built_in_modules/survey/test/dummy/app/views/layouts/application.html.erb b/vendor/built_in_modules/survey/test/dummy/app/views/layouts/application.html.erb new file mode 100644 index 00000000..4cab2684 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + Dummy + <%= stylesheet_link_tag "application", :media => "all" %> + <%= javascript_include_tag "application" %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/vendor/built_in_modules/survey/test/dummy/config.ru b/vendor/built_in_modules/survey/test/dummy/config.ru new file mode 100644 index 00000000..1989ed8d --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config.ru @@ -0,0 +1,4 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) +run Dummy::Application diff --git a/vendor/built_in_modules/survey/test/dummy/config/application.rb b/vendor/built_in_modules/survey/test/dummy/config/application.rb new file mode 100644 index 00000000..35ed7dfc --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/application.rb @@ -0,0 +1,59 @@ +require File.expand_path('../boot', __FILE__) + +require 'rails/all' + +Bundler.require +require "survey" + +module Dummy + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + # Custom directories with classes and modules you want to be autoloadable. + # config.autoload_paths += %W(#{config.root}/extras) + + # Only load the plugins named here, in the order given (default is alphabetical). + # :all can be used as a placeholder for all plugins not explicitly named. + # config.plugins = [ :exception_notification, :ssl_requirement, :all ] + + # Activate observers that should always be running. + # config.active_record.observers = :cacher, :garbage_collector, :forum_observer + + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + # config.time_zone = 'Central Time (US & Canada)' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + # config.i18n.default_locale = :de + + # Configure the default encoding used in templates for Ruby 1.9. + config.encoding = "utf-8" + + # Configure sensitive parameters which will be filtered from the log file. + config.filter_parameters += [:password] + + # Enable escaping HTML in JSON. + config.active_support.escape_html_entities_in_json = true + + # Use SQL instead of Active Record's schema dumper when creating the database. + # This is necessary if your schema can't be completely dumped by the schema dumper, + # like if you have constraints or database-specific column types + # config.active_record.schema_format = :sql + + # Enforce whitelist mode for mass assignment. + # This will create an empty whitelist of attributes available for mass-assignment for all models + # in your app. As such, your models will need to explicitly whitelist or blacklist accessible + # parameters by using an attr_accessible or attr_protected declaration. + config.active_record.whitelist_attributes = true + + # Enable the asset pipeline + config.assets.enabled = true + + # Version of your assets, change this if you want to expire all your assets + config.assets.version = '1.0' + end +end + diff --git a/vendor/built_in_modules/survey/test/dummy/config/boot.rb b/vendor/built_in_modules/survey/test/dummy/config/boot.rb new file mode 100644 index 00000000..eba06813 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/boot.rb @@ -0,0 +1,10 @@ +require 'rubygems' +gemfile = File.expand_path('../../../../Gemfile', __FILE__) + +if File.exist?(gemfile) + ENV['BUNDLE_GEMFILE'] = gemfile + require 'bundler' + Bundler.setup +end + +$:.unshift File.expand_path('../../../../lib', __FILE__) \ No newline at end of file diff --git a/vendor/built_in_modules/survey/test/dummy/config/database.yml b/vendor/built_in_modules/survey/test/dummy/config/database.yml new file mode 100644 index 00000000..51a4dd45 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/database.yml @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +development: + adapter: sqlite3 + database: db/development.sqlite3 + pool: 5 + timeout: 5000 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + adapter: sqlite3 + database: db/test.sqlite3 + pool: 5 + timeout: 5000 + +production: + adapter: sqlite3 + database: db/production.sqlite3 + pool: 5 + timeout: 5000 diff --git a/vendor/built_in_modules/survey/test/dummy/config/environment.rb b/vendor/built_in_modules/survey/test/dummy/config/environment.rb new file mode 100644 index 00000000..3da5eb91 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/environment.rb @@ -0,0 +1,5 @@ +# Load the rails application +require File.expand_path('../application', __FILE__) + +# Initialize the rails application +Dummy::Application.initialize! diff --git a/vendor/built_in_modules/survey/test/dummy/config/environments/development.rb b/vendor/built_in_modules/survey/test/dummy/config/environments/development.rb new file mode 100644 index 00000000..82c74d15 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/environments/development.rb @@ -0,0 +1,37 @@ +Dummy::Application.configure do + # Settings specified here will take precedence over those in config/application.rb + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Log error messages when you accidentally call methods on nil. + config.whiny_nils = true + + # Show full error reports and disable caching + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Don't care if the mailer can't send + config.action_mailer.raise_delivery_errors = false + + # Print deprecation notices to the Rails logger + config.active_support.deprecation = :log + + # Only use best-standards-support built into browsers + config.action_dispatch.best_standards_support = :builtin + + # Raise exception on mass assignment protection for Active Record models + config.active_record.mass_assignment_sanitizer = :strict + + # Log the query plan for queries taking more than this (works + # with SQLite, MySQL, and PostgreSQL) + config.active_record.auto_explain_threshold_in_seconds = 0.5 + + # Do not compress assets + config.assets.compress = false + + # Expands the lines which load the assets + config.assets.debug = true +end diff --git a/vendor/built_in_modules/survey/test/dummy/config/environments/production.rb b/vendor/built_in_modules/survey/test/dummy/config/environments/production.rb new file mode 100644 index 00000000..bdac56a7 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/environments/production.rb @@ -0,0 +1,67 @@ +Dummy::Application.configure do + # Settings specified here will take precedence over those in config/application.rb + + # Code is not reloaded between requests + config.cache_classes = true + + # Full error reports are disabled and caching is turned on + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Disable Rails's static asset server (Apache or nginx will already do this) + config.serve_static_assets = false + + # Compress JavaScripts and CSS + config.assets.compress = true + + # Don't fallback to assets pipeline if a precompiled asset is missed + config.assets.compile = false + + # Generate digests for assets URLs + config.assets.digest = true + + # Defaults to nil and saved in location specified by config.assets.prefix + # config.assets.manifest = YOUR_PATH + + # Specifies the header that your server uses for sending files + # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # See everything in the log (default is :info) + # config.log_level = :debug + + # Prepend all log lines with the following tags + # config.log_tags = [ :subdomain, :uuid ] + + # Use a different logger for distributed setups + # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + + # Use a different cache store in production + # config.cache_store = :mem_cache_store + + # Enable serving of images, stylesheets, and JavaScripts from an asset server + # config.action_controller.asset_host = "http://assets.example.com" + + # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) + # config.assets.precompile += %w( search.js ) + + # Disable delivery errors, bad email addresses will be ignored + # config.action_mailer.raise_delivery_errors = false + + # Enable threaded mode + # config.threadsafe! + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation can not be found) + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners + config.active_support.deprecation = :notify + + # Log the query plan for queries taking more than this (works + # with SQLite, MySQL, and PostgreSQL) + # config.active_record.auto_explain_threshold_in_seconds = 0.5 +end diff --git a/vendor/built_in_modules/survey/test/dummy/config/environments/test.rb b/vendor/built_in_modules/survey/test/dummy/config/environments/test.rb new file mode 100644 index 00000000..f1a48141 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/environments/test.rb @@ -0,0 +1,37 @@ +Dummy::Application.configure do + # Settings specified here will take precedence over those in config/application.rb + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Configure static asset server for tests with Cache-Control for performance + config.serve_static_assets = true + config.static_cache_control = "public, max-age=3600" + + # Log error messages when you accidentally call methods on nil + config.whiny_nils = true + + # Show full error reports and disable caching + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment + config.action_controller.allow_forgery_protection = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Raise exception on mass assignment protection for Active Record models + config.active_record.mass_assignment_sanitizer = :strict + + # Print deprecation notices to the stderr + config.active_support.deprecation = :stderr +end diff --git a/vendor/built_in_modules/survey/test/dummy/config/initializers/backtrace_silencers.rb b/vendor/built_in_modules/survey/test/dummy/config/initializers/backtrace_silencers.rb new file mode 100644 index 00000000..59385cdf --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/vendor/built_in_modules/survey/test/dummy/config/initializers/inflections.rb b/vendor/built_in_modules/survey/test/dummy/config/initializers/inflections.rb new file mode 100644 index 00000000..5d8d9be2 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/initializers/inflections.rb @@ -0,0 +1,15 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format +# (all these examples are active by default): +# ActiveSupport::Inflector.inflections do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end +# +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/vendor/built_in_modules/survey/test/dummy/config/initializers/mime_types.rb b/vendor/built_in_modules/survey/test/dummy/config/initializers/mime_types.rb new file mode 100644 index 00000000..72aca7e4 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/initializers/mime_types.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf +# Mime::Type.register_alias "text/html", :iphone diff --git a/vendor/built_in_modules/survey/test/dummy/config/initializers/secret_token.rb b/vendor/built_in_modules/survey/test/dummy/config/initializers/secret_token.rb new file mode 100644 index 00000000..891dd391 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/initializers/secret_token.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +Dummy::Application.config.secret_token = 'a44b80336f20b60a74c02239bc72f40d7213684ab512c9e3a2514408ee15b31042decfdd671d4cf118561fa1780e47b0728270c100eb4b7f805d0d4101b3a146' diff --git a/vendor/built_in_modules/survey/test/dummy/config/initializers/session_store.rb b/vendor/built_in_modules/survey/test/dummy/config/initializers/session_store.rb new file mode 100644 index 00000000..952473ff --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/initializers/session_store.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +Dummy::Application.config.session_store :cookie_store, key: '_dummy_session' + +# Use the database for sessions instead of the cookie-based default, +# which shouldn't be used to store highly confidential information +# (create the session table with "rails generate session_migration") +# Dummy::Application.config.session_store :active_record_store diff --git a/vendor/built_in_modules/survey/test/dummy/config/initializers/wrap_parameters.rb b/vendor/built_in_modules/survey/test/dummy/config/initializers/wrap_parameters.rb new file mode 100644 index 00000000..999df201 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. +# +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# Disable root element in JSON by default. +ActiveSupport.on_load(:active_record) do + self.include_root_in_json = false +end diff --git a/vendor/built_in_modules/survey/test/dummy/config/locales/en.yml b/vendor/built_in_modules/survey/test/dummy/config/locales/en.yml new file mode 100644 index 00000000..179c14ca --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/locales/en.yml @@ -0,0 +1,5 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +en: + hello: "Hello world" diff --git a/vendor/built_in_modules/survey/test/dummy/config/routes.rb b/vendor/built_in_modules/survey/test/dummy/config/routes.rb new file mode 100644 index 00000000..eb8579be --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/config/routes.rb @@ -0,0 +1,58 @@ +Dummy::Application.routes.draw do + # The priority is based upon order of creation: + # first created -> highest priority. + + # Sample of regular route: + # match 'products/:id' => 'catalog#view' + # Keep in mind you can assign values other than :controller and :action + + # Sample of named route: + # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase + # This route can be invoked with purchase_url(:id => product.id) + + # Sample resource route (maps HTTP verbs to controller actions automatically): + # resources :products + + # Sample resource route with options: + # resources :products do + # member do + # get 'short' + # post 'toggle' + # end + # + # collection do + # get 'sold' + # end + # end + + # Sample resource route with sub-resources: + # resources :products do + # resources :comments, :sales + # resource :seller + # end + + # Sample resource route with more complex sub-resources + # resources :products do + # resources :comments + # resources :sales do + # get 'recent', :on => :collection + # end + # end + + # Sample resource route within a namespace: + # namespace :admin do + # # Directs /admin/products/* to Admin::ProductsController + # # (app/controllers/admin/products_controller.rb) + # resources :products + # end + + # You can have the root of your site routed with "root" + # just remember to delete public/index.html. + # root :to => 'welcome#index' + + # See how all your routes lay out with "rake routes" + + # This is a legacy wild controller route that's not recommended for RESTful applications. + # Note: This route will make all actions in every controller accessible via GET requests. + # match ':controller(/:action(/:id))(.:format)' +end diff --git a/vendor/built_in_modules/survey/test/dummy/lib/assets/.gitkeep b/vendor/built_in_modules/survey/test/dummy/lib/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/vendor/built_in_modules/survey/test/dummy/log/.gitkeep b/vendor/built_in_modules/survey/test/dummy/log/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/vendor/built_in_modules/survey/test/dummy/public/404.html b/vendor/built_in_modules/survey/test/dummy/public/404.html new file mode 100644 index 00000000..9a48320a --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/public/404.html @@ -0,0 +1,26 @@ + + + + The page you were looking for doesn't exist (404) + + + + + +
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+ + diff --git a/vendor/built_in_modules/survey/test/dummy/public/422.html b/vendor/built_in_modules/survey/test/dummy/public/422.html new file mode 100644 index 00000000..83660ab1 --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/public/422.html @@ -0,0 +1,26 @@ + + + + The change you wanted was rejected (422) + + + + + +
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+ + diff --git a/vendor/built_in_modules/survey/test/dummy/public/500.html b/vendor/built_in_modules/survey/test/dummy/public/500.html new file mode 100644 index 00000000..f3648a0d --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/public/500.html @@ -0,0 +1,25 @@ + + + + We're sorry, but something went wrong (500) + + + + + +
+

We're sorry, but something went wrong.

+
+ + diff --git a/vendor/built_in_modules/survey/test/dummy/public/favicon.ico b/vendor/built_in_modules/survey/test/dummy/public/favicon.ico new file mode 100644 index 00000000..e69de29b diff --git a/vendor/built_in_modules/survey/test/dummy/script/rails b/vendor/built_in_modules/survey/test/dummy/script/rails new file mode 100755 index 00000000..f8da2cff --- /dev/null +++ b/vendor/built_in_modules/survey/test/dummy/script/rails @@ -0,0 +1,6 @@ +#!/usr/bin/env ruby +# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. + +APP_PATH = File.expand_path('../../config/application', __FILE__) +require File.expand_path('../../config/boot', __FILE__) +require 'rails/commands' diff --git a/vendor/built_in_modules/survey/test/survey_test.rb b/vendor/built_in_modules/survey/test/survey_test.rb new file mode 100644 index 00000000..5dc2f862 --- /dev/null +++ b/vendor/built_in_modules/survey/test/survey_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class SurveyTest < ActiveSupport::TestCase + test "truth" do + assert_kind_of Module, Survey + end +end diff --git a/vendor/built_in_modules/survey/test/test_helper.rb b/vendor/built_in_modules/survey/test/test_helper.rb new file mode 100644 index 00000000..1e26a313 --- /dev/null +++ b/vendor/built_in_modules/survey/test/test_helper.rb @@ -0,0 +1,15 @@ +# Configure Rails Environment +ENV["RAILS_ENV"] = "test" + +require File.expand_path("../dummy/config/environment.rb", __FILE__) +require "rails/test_help" + +Rails.backtrace_cleaner.remove_silencers! + +# Load support files +Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } + +# Load fixtures from the engine +if ActiveSupport::TestCase.method_defined?(:fixture_path=) + ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) +end From adc15951bb89be4dc46edc8aff79f1e79526f51c Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 10 May 2013 13:04:56 +0800 Subject: [PATCH 03/19] questionnaire stuff Conflicts: vendor/built_in_modules/announcement/app/controllers/panel/announcement/front_end/bulletins_controller.rb vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/index.html.erb --- app/assets/stylesheets/questionnaire.css | 112 +++ app/assets/stylesheets/standalone.css | 52 + app/views/layouts/standalone.html.erb | 31 + config/routes.rb | 4 +- solr/conf/admin-extra.html | 31 - solr/conf/elevate.xml | 36 - solr/conf/mapping-ISOLatin1Accent.txt | 246 ----- solr/conf/protwords.txt | 21 - solr/conf/schema.xml | 238 ----- solr/conf/scripts.conf | 24 - solr/conf/solrconfig.xml | 934 ------------------ solr/conf/spellings.txt | 2 - solr/conf/stopwords.txt | 58 -- solr/conf/synonyms.txt | 31 - .../personal_journal/Gemfile.lock | 99 -- .../survey/back_end/surveys_controller.rb | 81 ++ .../survey/front_end/surveys_controller.rb | 37 +- .../survey/app/models/survey.rb | 47 + .../survey/app/models/survey_question.rb | 18 + .../app/models/survey_question_oneline.rb | 3 + .../app/models/survey_question_option.rb | 1 + .../surveys/_form_survey_question.html.erb | 2 +- .../survey/back_end/surveys/_survey.html.erb | 7 +- .../survey/back_end/surveys/chart.html.erb | 40 + .../survey/back_end/surveys/jump.html.erb | 56 ++ .../back_end/surveys/set_answers.html.erb | 34 + .../front_end/surveys/answer_error.html.erb | 2 +- .../surveys/redirect_standalone.html.erb | 3 + .../survey/front_end/surveys/result.html.erb | 49 + .../survey/front_end/surveys/show.html.erb | 238 +++-- .../survey/config/locales/en.yml | 56 +- .../survey/config/locales/zh_tw.yml | 26 +- .../built_in_modules/survey/config/routes.rb | 13 +- vendor/built_in_modules/survey/init.rb | 5 +- 34 files changed, 818 insertions(+), 1819 deletions(-) create mode 100644 app/assets/stylesheets/questionnaire.css create mode 100644 app/assets/stylesheets/standalone.css create mode 100644 app/views/layouts/standalone.html.erb delete mode 100644 solr/conf/admin-extra.html delete mode 100644 solr/conf/elevate.xml delete mode 100644 solr/conf/mapping-ISOLatin1Accent.txt delete mode 100644 solr/conf/protwords.txt delete mode 100644 solr/conf/schema.xml delete mode 100644 solr/conf/scripts.conf delete mode 100644 solr/conf/solrconfig.xml delete mode 100644 solr/conf/spellings.txt delete mode 100644 solr/conf/stopwords.txt delete mode 100644 solr/conf/synonyms.txt delete mode 100644 vendor/built_in_modules/personal_journal/Gemfile.lock create mode 100644 vendor/built_in_modules/survey/app/models/survey_question_oneline.rb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/jump.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/set_answers.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/redirect_standalone.html.erb create mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb diff --git a/app/assets/stylesheets/questionnaire.css b/app/assets/stylesheets/questionnaire.css new file mode 100644 index 00000000..eab2710b --- /dev/null +++ b/app/assets/stylesheets/questionnaire.css @@ -0,0 +1,112 @@ +.o-question { + font-size: 15px; +} +.o-question input[type=checkbox], .o-question input[type=radio] { + margin: 0; +} +.o-question textarea { + resize: vertical; +} +.o-question-topic { + font-size: 2em; + line-height: normal; + margin: 0; + padding: 0.5em 0; +} +.o-question-description { + font-size: 0.9em; + line-height: 1.5em; +} +.o-question-list { + clear: both; + margin: 40px 0; + padding: 0; + font-weight: bold; +} +.o-question-list > li { + margin: 0 0 0 40px; + padding: 16px 0; + border-top: solid 1px #eee; +} +.o-question-list > li:first-child { + border: 0; +} +.o-question-title { + font-weight: bold; +} +.o-question-title + input[type=text], .o-question-title + textarea, .o-question-title + select { + display: block; +} +.o-question-title + input[type=text], .o-question-title + textarea { + border: solid 1px #ccc; + padding: 6px; + margin: 20px 0; + line-height: 24px; +} +.o-question-title + input[type=text] { + width: 40%; +} +.o-question-title + textarea { + width: 70%; +} +.o-question-group { + margin: 20px 0; + padding: 0; +} +.o-question-option { + font-weight: normal; +} +.o-question-group.view-list { + list-style: none; +} +.o-question-group.view-list .o-question-option {} +.o-question-group.view-list > li { + margin-top: 8px; +} +.o-question-group.view-list > li:first-child { + margin: 0; +} +.o-question-group.view-list > li > * { + display: inline-block; + margin: 0; + padding: 0; + vertical-align: middle; +} +.o-question-group.view-list > li input + .o-question-option { + margin: 0 0 0 12px; +} +.o-question-group.view-dropdown { + height: 24px; + line-height: 24px; +} +.o-question-group.view-grid { + border-collapse: collapse; + max-width: 90%; + min-width: 50%; +} +.o-question-group.view-grid th, .o-question-group.view-grid td { + padding: 6px; +} +.o-question-group.view-grid thead th {} +.o-question-group.view-grid tbody th {} +.o-question-group.view-grid tbody .odd .o-question-title, .o-question-group.view-grid tbody .odd td { + background-color: #f6f6f6; +} +.o-question-group.view-grid tbody .odd .o-question-title { + background-color: transparent; +} +.o-question-group.view-grid tbody .odd td {} +.o-question-group.view-grid tbody tr:hover td { + background-color: #aaa; +} +.o-question-group.view-grid tbody td { + vertical-align: middle; + text-align: center; +} +.o-question-group.view-grid tbody td input { + vertical-align: baseline; +} +.o-question-action { + padding: 20px; + background-color: #f6f6f6; +} \ No newline at end of file diff --git a/app/assets/stylesheets/standalone.css b/app/assets/stylesheets/standalone.css new file mode 100644 index 00000000..c35ff4e9 --- /dev/null +++ b/app/assets/stylesheets/standalone.css @@ -0,0 +1,52 @@ +@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,700); +body { + margin: 0; + padding: 50px 0; + background-color: #eee; + font-family: 'Open Sans', sans-serif; +} + +.wrapper { + background-color: #FFFFFF; + box-shadow: 0 0 50px rgba(0, 0, 0, 0.1); + margin: 0 auto; + overflow: hidden; + width: 980px; +} + +.wrapper > h1 { + margin: 0; + padding: 20px; + font-family: 'Open Sans', sans-serif; + font-weight: bold; +} +section { + border-top: dashed 3px #eee; + padding: 40px; + overflow: hidden; +} +section:first-child { + border: 0; + padding-top: 0; +} +section > h2 { + font-size: 13px; + font-weight: bold; + border: solid 1px #ddd; + background-color: #2676C0; + color: #fff; + display: inline-block; + padding: 0 16px; + box-shadow: 0 1px 1px #fff, 0 2px 6px rgba(0,0,0,0.1); +} +.side { + float: right; + width: 189px; + padding-left: 20px; + border-left: solid 1px #eee; +} +.main { + float: left; + width: 710px; + padding-right: 20px; +} \ No newline at end of file diff --git a/app/views/layouts/standalone.html.erb b/app/views/layouts/standalone.html.erb new file mode 100644 index 00000000..faa592d9 --- /dev/null +++ b/app/views/layouts/standalone.html.erb @@ -0,0 +1,31 @@ + + + + + <%= page_title(@item).html_safe %> + "> + <%= page_metas(@item).html_safe %> + + <%= page_stylesheets(@item).html_safe %> + + <%= yield :page_stylesheets %> + <%= page_javascripts(@item).html_safe %> + <%= csrf_meta_tag %> + + +
+ <%= yield %> +
+ <% if flash[:error] %> + + + <% end -%> + + \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 2f084967..59c5e42b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -288,11 +288,11 @@ Orbit::Application.routes.draw do match '/panel/:app_name/front_end/:app_action/:id(/:controller_action)' => 'pages#show_from_link', :constraints => lambda { |request| - !request.query_string.include?("inner=true") + !request.query_string.include?("inner=true") && !request.query_string.include?("standalone=true") } match '/panel/:app_name/front_end/:app_action' => 'pages#index_from_link', :constraints => lambda { |request| - !request.query_string.include?("inner=true") + !request.query_string.include?("inner=true") && !request.query_string.include?("standalone=true") } match '/share/:model/:id' => 'application#render_share' diff --git a/solr/conf/admin-extra.html b/solr/conf/admin-extra.html deleted file mode 100644 index aa739da8..00000000 --- a/solr/conf/admin-extra.html +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/solr/conf/elevate.xml b/solr/conf/elevate.xml deleted file mode 100644 index 7630ebe2..00000000 --- a/solr/conf/elevate.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/solr/conf/mapping-ISOLatin1Accent.txt b/solr/conf/mapping-ISOLatin1Accent.txt deleted file mode 100644 index ede77425..00000000 --- a/solr/conf/mapping-ISOLatin1Accent.txt +++ /dev/null @@ -1,246 +0,0 @@ -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Syntax: -# "source" => "target" -# "source".length() > 0 (source cannot be empty.) -# "target".length() >= 0 (target can be empty.) - -# example: -# "À" => "A" -# "\u00C0" => "A" -# "\u00C0" => "\u0041" -# "ß" => "ss" -# "\t" => " " -# "\n" => "" - -# À => A -"\u00C0" => "A" - -# Á => A -"\u00C1" => "A" - -#  => A -"\u00C2" => "A" - -# à => A -"\u00C3" => "A" - -# Ä => A -"\u00C4" => "A" - -# Å => A -"\u00C5" => "A" - -# Æ => AE -"\u00C6" => "AE" - -# Ç => C -"\u00C7" => "C" - -# È => E -"\u00C8" => "E" - -# É => E -"\u00C9" => "E" - -# Ê => E -"\u00CA" => "E" - -# Ë => E -"\u00CB" => "E" - -# Ì => I -"\u00CC" => "I" - -# Í => I -"\u00CD" => "I" - -# Î => I -"\u00CE" => "I" - -# Ï => I -"\u00CF" => "I" - -# IJ => IJ -"\u0132" => "IJ" - -# Ð => D -"\u00D0" => "D" - -# Ñ => N -"\u00D1" => "N" - -# Ò => O -"\u00D2" => "O" - -# Ó => O -"\u00D3" => "O" - -# Ô => O -"\u00D4" => "O" - -# Õ => O -"\u00D5" => "O" - -# Ö => O -"\u00D6" => "O" - -# Ø => O -"\u00D8" => "O" - -# Œ => OE -"\u0152" => "OE" - -# Þ -"\u00DE" => "TH" - -# Ù => U -"\u00D9" => "U" - -# Ú => U -"\u00DA" => "U" - -# Û => U -"\u00DB" => "U" - -# Ü => U -"\u00DC" => "U" - -# Ý => Y -"\u00DD" => "Y" - -# Ÿ => Y -"\u0178" => "Y" - -# à => a -"\u00E0" => "a" - -# á => a -"\u00E1" => "a" - -# â => a -"\u00E2" => "a" - -# ã => a -"\u00E3" => "a" - -# ä => a -"\u00E4" => "a" - -# å => a -"\u00E5" => "a" - -# æ => ae -"\u00E6" => "ae" - -# ç => c -"\u00E7" => "c" - -# è => e -"\u00E8" => "e" - -# é => e -"\u00E9" => "e" - -# ê => e -"\u00EA" => "e" - -# ë => e -"\u00EB" => "e" - -# ì => i -"\u00EC" => "i" - -# í => i -"\u00ED" => "i" - -# î => i -"\u00EE" => "i" - -# ï => i -"\u00EF" => "i" - -# ij => ij -"\u0133" => "ij" - -# ð => d -"\u00F0" => "d" - -# ñ => n -"\u00F1" => "n" - -# ò => o -"\u00F2" => "o" - -# ó => o -"\u00F3" => "o" - -# ô => o -"\u00F4" => "o" - -# õ => o -"\u00F5" => "o" - -# ö => o -"\u00F6" => "o" - -# ø => o -"\u00F8" => "o" - -# œ => oe -"\u0153" => "oe" - -# ß => ss -"\u00DF" => "ss" - -# þ => th -"\u00FE" => "th" - -# ù => u -"\u00F9" => "u" - -# ú => u -"\u00FA" => "u" - -# û => u -"\u00FB" => "u" - -# ü => u -"\u00FC" => "u" - -# ý => y -"\u00FD" => "y" - -# ÿ => y -"\u00FF" => "y" - -# ff => ff -"\uFB00" => "ff" - -# fi => fi -"\uFB01" => "fi" - -# fl => fl -"\uFB02" => "fl" - -# ffi => ffi -"\uFB03" => "ffi" - -# ffl => ffl -"\uFB04" => "ffl" - -# ſt => ft -"\uFB05" => "ft" - -# st => st -"\uFB06" => "st" diff --git a/solr/conf/protwords.txt b/solr/conf/protwords.txt deleted file mode 100644 index 1dfc0abe..00000000 --- a/solr/conf/protwords.txt +++ /dev/null @@ -1,21 +0,0 @@ -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#----------------------------------------------------------------------- -# Use a protected word file to protect against the stemmer reducing two -# unrelated words to the same base word. - -# Some non-words that normally won't be encountered, -# just to test that they won't be stemmed. -dontstems -zwhacky - diff --git a/solr/conf/schema.xml b/solr/conf/schema.xml deleted file mode 100644 index 17a751ad..00000000 --- a/solr/conf/schema.xml +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - text - - - - diff --git a/solr/conf/scripts.conf b/solr/conf/scripts.conf deleted file mode 100644 index f58b262a..00000000 --- a/solr/conf/scripts.conf +++ /dev/null @@ -1,24 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -user= -solr_hostname=localhost -solr_port=8983 -rsyncd_port=18983 -data_dir= -webapp_name=solr -master_host= -master_data_dir= -master_status_dir= diff --git a/solr/conf/solrconfig.xml b/solr/conf/solrconfig.xml deleted file mode 100644 index 65c19607..00000000 --- a/solr/conf/solrconfig.xml +++ /dev/null @@ -1,934 +0,0 @@ - - - - - - ${solr.abortOnConfigurationError:true} - - - - - - - - - - - - - ${solr.data.dir:./solr/data} - - - - false - 10 - - - - 32 - - 10000 - 1000 - 10000 - - - - - - - - native - - - - - - false - 32 - 10 - - - - - - false - - true - - - - - - 1 - - 0 - - - - false - - - - - - - - - - - - - - - - - 1024 - - - - - - - - - - true - - - - - 20 - - 200 - - - - - - - - - - - - solr rocks - 0 - 10 - - - static firstSearcher warming query from solrconfig.xml - - - - - false - - 2 - - - - - - - - - - - - - - - - - - explicit - - - - - - - - - - - dismax - explicit - 0.01 - - text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 - - - text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9 - - - popularity^0.5 recip(price,1,1000,1000)^0.3 - - - id,name,price,score - - - 2<-1 5<-2 6<90% - - 100 - *:* - - text features name - - 0 - - name - regex - - - - - - - dismax - explicit - text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 - 2<-1 5<-2 6<90% - - incubationdate_dt:[* TO NOW/DAY-1MONTH]^2.2 - - - - inStock:true - - - - cat - manu_exact - price:[* TO 500] - price:[500 TO *] - - - - - - textSpell - - default - name - ./spellchecker - - - - - - - - - false - - false - - 1 - - - spellcheck - - - - - - - true - - - tvComponent - - - - - - - - default - - org.carrot2.clustering.lingo.LingoClusteringAlgorithm - - 20 - - - stc - org.carrot2.clustering.stc.STCClusteringAlgorithm - - - - - true - default - true - - name - id - - features - - true - - - - false - - - clusteringComponent - - - - - - - text - true - ignored_ - - true - links - ignored_ - - - - - - - true - - - termsComponent - - - - - - string - elevate.xml - - - - - explicit - - - elevator - - - - - - - - - - - - - - - - - - standard - solrpingquery - all - - - - - - explicit - - true - - - - - - - - 100 - - - - - - - 70 - - 0.5 - - [-\w ,/\n\"']{20,200} - - - - - - ]]> - ]]> - - - - - - - - - 5 - - - - - - solr - - - - - 1 - 2 - - - diff --git a/solr/conf/spellings.txt b/solr/conf/spellings.txt deleted file mode 100644 index d7ede6f5..00000000 --- a/solr/conf/spellings.txt +++ /dev/null @@ -1,2 +0,0 @@ -pizza -history \ No newline at end of file diff --git a/solr/conf/stopwords.txt b/solr/conf/stopwords.txt deleted file mode 100644 index b5824da3..00000000 --- a/solr/conf/stopwords.txt +++ /dev/null @@ -1,58 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#----------------------------------------------------------------------- -# a couple of test stopwords to test that the words are really being -# configured from this file: -stopworda -stopwordb - -#Standard english stop words taken from Lucene's StopAnalyzer -a -an -and -are -as -at -be -but -by -for -if -in -into -is -it -no -not -of -on -or -s -such -t -that -the -their -then -there -these -they -this -to -was -will -with - diff --git a/solr/conf/synonyms.txt b/solr/conf/synonyms.txt deleted file mode 100644 index b0e31cb7..00000000 --- a/solr/conf/synonyms.txt +++ /dev/null @@ -1,31 +0,0 @@ -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#----------------------------------------------------------------------- -#some test synonym mappings unlikely to appear in real input text -aaa => aaaa -bbb => bbbb1 bbbb2 -ccc => cccc1,cccc2 -a\=>a => b\=>b -a\,a => b\,b -fooaaa,baraaa,bazaaa - -# Some synonym groups specific to this example -GB,gib,gigabyte,gigabytes -MB,mib,megabyte,megabytes -Television, Televisions, TV, TVs -#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming -#after us won't split it into two words. - -# Synonym mappings can be used for spelling correction too -pixima => pixma - diff --git a/vendor/built_in_modules/personal_journal/Gemfile.lock b/vendor/built_in_modules/personal_journal/Gemfile.lock deleted file mode 100644 index 70464db4..00000000 --- a/vendor/built_in_modules/personal_journal/Gemfile.lock +++ /dev/null @@ -1,99 +0,0 @@ -PATH - remote: . - specs: - personal_journal (0.0.1) - rails (~> 3.1.4) - -GEM - remote: http://rubygems.org/ - specs: - actionmailer (3.1.9) - actionpack (= 3.1.9) - mail (~> 2.3.3) - actionpack (3.1.9) - activemodel (= 3.1.9) - activesupport (= 3.1.9) - builder (~> 3.0.0) - erubis (~> 2.7.0) - i18n (~> 0.6) - rack (~> 1.3.6) - rack-cache (~> 1.2) - rack-mount (~> 0.8.2) - rack-test (~> 0.6.1) - sprockets (~> 2.0.4) - activemodel (3.1.9) - activesupport (= 3.1.9) - builder (~> 3.0.0) - i18n (~> 0.6) - activerecord (3.1.9) - activemodel (= 3.1.9) - activesupport (= 3.1.9) - arel (~> 2.2.3) - tzinfo (~> 0.3.29) - activeresource (3.1.9) - activemodel (= 3.1.9) - activesupport (= 3.1.9) - activesupport (3.1.9) - multi_json (>= 1.0, < 1.3) - arel (2.2.3) - builder (3.0.4) - erubis (2.7.0) - hike (1.2.1) - i18n (0.6.1) - jquery-rails (2.1.4) - railties (>= 3.0, < 5.0) - thor (>= 0.14, < 2.0) - json (1.7.6) - mail (2.3.3) - i18n (>= 0.4.0) - mime-types (~> 1.16) - treetop (~> 1.4.8) - mime-types (1.19) - multi_json (1.2.0) - polyglot (0.3.3) - rack (1.3.6) - rack-cache (1.2) - rack (>= 0.4) - rack-mount (0.8.3) - rack (>= 1.0.0) - rack-ssl (1.3.2) - rack - rack-test (0.6.2) - rack (>= 1.0) - rails (3.1.9) - actionmailer (= 3.1.9) - actionpack (= 3.1.9) - activerecord (= 3.1.9) - activeresource (= 3.1.9) - activesupport (= 3.1.9) - bundler (~> 1.0) - railties (= 3.1.9) - railties (3.1.9) - actionpack (= 3.1.9) - activesupport (= 3.1.9) - rack-ssl (~> 1.3.2) - rake (>= 0.8.7) - rdoc (~> 3.4) - thor (~> 0.14.6) - rake (10.0.3) - rdoc (3.12) - json (~> 1.4) - sprockets (2.0.4) - hike (~> 1.2) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sqlite3 (1.3.6) - thor (0.14.6) - tilt (1.3.3) - treetop (1.4.12) - polyglot - polyglot (>= 0.3.1) - tzinfo (0.3.35) - -PLATFORMS - ruby - -DEPENDENCIES - jquery-rails - personal_journal! - sqlite3 diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb index de3c1f84..d0286ab0 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb @@ -1,3 +1,5 @@ +require 'csv' + class Panel::Survey::BackEnd::SurveysController < OrbitBackendController include AdminHelper @@ -82,5 +84,84 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController end redirect_to panel_survey_back_end_surveys_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]) end + + def export + @survey = ::Survey.find(params[:id]) + @survey_questions = @survey.survey_questions.all + + respond_to do |format| + format.csv do + + csv = CSV.generate do |csv| + csv << @survey_questions.map(&:title) + @survey.survey_answers.each do |answer| + row = [] + @survey_questions.each do |question| + row << answer[question.id.to_s] + end + csv << row + end + + end + + render :text => csv + end + end + end + + def chart + @survey = ::Survey.find(params[:id]) + @chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data + end + + def set_answers + @survey = ::Survey.find(params[:id]) + end + + def jump + @survey = ::Survey.find(params[:id]) + @questions = @survey.survey_questions.all + + @jump_to_options = [[ t('survey.not_jump'), 0 ], [t('survey.jump_to_end'), 1]] + @jump_to_options += @questions.collect {|q| [ q.title, q.id.to_s ] } + end + + def duplicate_it + @survey = ::Survey.find(params[:id]) + + @new_survey = ::Survey.new + + @survey.attributes.each do |key, value| + unless ['_id', 'created_at', 'updated_at', 'update_user_id'].include? key + if @survey.respond_to?(key + '_translations') + @new_survey.send(key + '_translations=', value) + else + @new_survey.write_attribute(key, value) + end + end + end + @survey.survey_questions.all.each do |question| + new_question = @new_survey.survey_questions.new + question.attributes.each do |key, value| + unless ['_id', 'created_at', 'updated_at'].include? key + if @survey.respond_to?(key + '_translations') + new_question.send(key + '_translations=', value) + else + new_question.write_attribute(key, value) + end + end + end + end + + @new_survey.create_user_id = current_user.id + @new_survey.update_user_id = current_user.id + + @new_survey.save! + + respond_to do |format| + format.html { redirect_to(panel_survey_back_end_surveys_url) } + format.xml { render :xml => @survey, :status => :created, :location => @new_survey } + end + end end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb index 80b03c5b..0cf5d848 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb @@ -1,4 +1,5 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController + helper ApplicationHelper def initialize super @@ -6,11 +7,18 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController end def index - end def show - @survey = ::Survey.find params[:id] + redirect_standalone panel_survey_front_end_survey_path(params[:id], :standalone => 'true') do + @survey = ::Survey.find params[:id] + @questions = @survey.survey_questions.all + if @survey.jump_mode + @jumpable_questions = @questions.all.select{ |q| q.jumpable? && q.can_set_jump? } + + @jump_tos_map = @jumpable_questions.map(&:get_jump_tos).inject(:merge) + end + end end def update @@ -20,7 +28,7 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController @answer_model = @survey.survey_answers.new @survey.survey_questions.each do |question| qid = question.id.to_s - if question.is_required && answer[qid].blank? + if question.is_required && answer[qid].blank? && !@survey.jump_mode #&& (! @survey.jump_mode || ( @survey.jump_mode && question.jumpable? ) ) @answer_model.errors.add question.title, t('survey_question.required_error') else case question.type @@ -65,7 +73,6 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController end end end - p @answer_model if @answer_model.errors.empty? @answer_model.save! render :answer_success @@ -75,4 +82,26 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController end end + def result + redirect_standalone result_panel_survey_front_end_survey_path(params[:id], :standalone => 'true') do + @survey = ::Survey.find params[:id] + case @survey.result_type + when ::Survey::ResultChart + @chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data + end + end + end + + def redirect_standalone url + unless params[:standalone] == 'true' + @redirect_url = url + render :redirect_standalone + else + module_app = ModuleApp.first(:conditions => {:key => 'survey'}) + @item = Item.where(module_app_id: module_app.id, app_frontend_url: 'default_widget').first + yield + render :layout => 'standalone' + end + end + end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/models/survey.rb b/vendor/built_in_modules/survey/app/models/survey.rb index 3706947c..2491a4b5 100644 --- a/vendor/built_in_modules/survey/app/models/survey.rb +++ b/vendor/built_in_modules/survey/app/models/survey.rb @@ -5,6 +5,10 @@ class Survey include Mongoid::Document include Mongoid::Timestamps + ResultChart = 0 + ResultExtern = 1 + ResultFile = 2 + scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) } scope :can_display, where(is_hidden: false) @@ -18,6 +22,12 @@ class Survey field :deadline, :type => DateTime field :is_hidden, :type => Boolean, :default => false + + field :result_type, :type => Integer, :default => 0 + field :extern_link + mount_uploader :upload_file, AssetUploader + + field :jump_mode, :type => Boolean, :default => false validates :title, :at_least_one => true @@ -34,6 +44,43 @@ class Survey r end + def result + I18n.t 'survey.view_result' + end + + def generate_chart_data + survey_questions = self.survey_questions.all + survey_answers = self.survey_answers.all + + chart_data = {} + + survey_questions.each do |question| + qid = question.id.to_s + case question.type + when ::SurveyQuestion::Radio, ::SurveyQuestion::Select + chart_data[qid] = {} + answers = survey_answers.each do |answer| + if answer[qid] + chart_data[qid][answer[qid]] ||= 0 + chart_data[qid][answer[qid]] += 1 + end + end + when ::SurveyQuestion::Check + chart_data[qid] = {} + answers = survey_answers.each do |answer| + if answer[qid] + answer[qid].each do |option| + chart_data[qid][option] ||= 0 + chart_data[qid][option] += 1 + end + end + end + end + end + + [chart_data, survey_questions, survey_answers] + end + protected def check_deadline diff --git a/vendor/built_in_modules/survey/app/models/survey_question.rb b/vendor/built_in_modules/survey/app/models/survey_question.rb index 9d1e3155..c482a48a 100644 --- a/vendor/built_in_modules/survey/app/models/survey_question.rb +++ b/vendor/built_in_modules/survey/app/models/survey_question.rb @@ -24,4 +24,22 @@ class SurveyQuestion accepts_nested_attributes_for :survey_question_options, :allow_destroy => true accepts_nested_attributes_for :survey_question_radiogroups, :allow_destroy => true + + def jumpable? + case type + when SurveyQuestion::Radio, SurveyQuestion::Select + true + else + false + end + end + + def can_set_jump? + ( !custom_option ) + end + + def get_jump_tos + Hash[survey_question_options.select{ |o| !o.jump_to.blank? }.collect{ |o| [o.id.to_s, o.jump_to] }] + end + end diff --git a/vendor/built_in_modules/survey/app/models/survey_question_oneline.rb b/vendor/built_in_modules/survey/app/models/survey_question_oneline.rb new file mode 100644 index 00000000..4b5dab3c --- /dev/null +++ b/vendor/built_in_modules/survey/app/models/survey_question_oneline.rb @@ -0,0 +1,3 @@ +class SurveyQuestionOneline < SurveyQuestion + +end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/models/survey_question_option.rb b/vendor/built_in_modules/survey/app/models/survey_question_option.rb index 22dfd0f5..c6cc2ba5 100644 --- a/vendor/built_in_modules/survey/app/models/survey_question_option.rb +++ b/vendor/built_in_modules/survey/app/models/survey_question_option.rb @@ -2,6 +2,7 @@ class SurveyQuestionOption include Mongoid::Document field :name, :localize => true + field :jump_to, :default => 0 embedded_in :survey_question end \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb index 4163991e..9cfb1b67 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form_survey_question.html.erb @@ -111,7 +111,7 @@ -
+
<%= f.label :custom_option, t('survey_question.custom_option')%> <%= f.check_box :custom_option %>
diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb index eeaa50ea..09dde95a 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb @@ -10,7 +10,12 @@ diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb new file mode 100644 index 00000000..6356b183 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb @@ -0,0 +1,40 @@ +

<%= @survey.title %> <%= t('survey.chart') %>

+ +<% @survey_questions.each do |question| %> + +

<%= question.title %>

+ <% case question.type %> + <% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %> +
+ <% else %> +

<%= t('survey_question.have_not_chart') %>

+ <% end %> + +<% end %> + +
+ <%= link_to t('back'), get_go_back, :class=>"btn" %> +
+ +<% content_for :page_specific_javascript do %> + + +<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/jump.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/jump.html.erb new file mode 100644 index 00000000..a56c4c1e --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/jump.html.erb @@ -0,0 +1,56 @@ +

<%= @survey.title %> <%= t('survey.jump') %>

+ +<%= form_for @survey, :url => panel_survey_back_end_survey_path(@survey), :html => {:class => 'clear'} do |f| %> +
+
+
+ <%= f.label :jump_mode, t('survey.jump_mode')%> + <%= f.check_box :jump_mode %> +
+ + <% @questions.each_with_index do |question, i| %> + + <%= f.fields_for :survey_questions, question do |f| %> + +
" class="survey_question_item clear"> +
+

<%= question.title %>

+
+ <% if question.jumpable? %> + <% if question.can_set_jump? %> +
    + <% question.survey_question_options.each_with_index do |option, i| %> + + <%= f.fields_for :survey_question_options, option do |f| %> + +
  1. + <%= f.label :survey_question_options, option.name %> + <%= f.select :jump_to, @jump_to_options %> +
  2. + + <% end %> + + <% end %> +
+ <% else %> + <%= t('survey.right_type_cant_jump') %> + <% end %> + <% else %> + <%= t('survey.wrong_type_cant_jump') %> + <% end %> +
+
+
+ + <% end %> + + <% end %> + +
+ <%= hidden_field_tag 'page', params[:page] if !params[:page].blank? %> + <%= f.submit t('submit'), :class=>'btn btn-primary' %> + <%= link_to t('cancel'), get_go_back, :class=>"btn" %> +
+
+
+<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/set_answers.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/set_answers.html.erb new file mode 100644 index 00000000..99c45fde --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/set_answers.html.erb @@ -0,0 +1,34 @@ +

<%= @survey.title %> <%= t('survey.set_answers') %>

+ +<%= form_for @survey, :url => panel_survey_back_end_survey_path(@survey), :html => {:class => 'clear'} do |f| %> +
+
+
+ <%= f.label :result_type, t('survey.result_type')%> + <%= f.select :result_type, { + t('survey.chart') => Survey::ResultChart, + t('survey.extern_link') => Survey::ResultExtern, + t('survey.upload_file') => Survey::ResultFile + }, {}, :class => "tinput-medium" %> +
+ +
+ <%= f.label :upload_file, t('survey.upload_file') %> + <%= f.file_field :upload_file %> + <% if @survey.upload_file? %> + <%= link_to t(:view), @survey.upload_file.url, {:class => 'for_preview btn', :target => '_blank', :title => t(:view), "data-trigger" => :hover} %> + <%= f.label :remove_upload_file, t('survey.remove_upload_file')%> + <%= f.check_box :remove_upload_file %> + <% end %> +
+
+ <%= hidden_field_tag 'page', params[:page] if !params[:page].blank? %> + <%= f.submit t('submit'), :class=>'btn btn-primary' %> + <%= link_to t('cancel'), get_go_back, :class=>"btn" %> +
+
+
+<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb index 67e73a44..0e5cff46 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/answer_error.html.erb @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/redirect_standalone.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/redirect_standalone.html.erb new file mode 100644 index 00000000..de9b2f49 --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/redirect_standalone.html.erb @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb new file mode 100644 index 00000000..b0aefc2f --- /dev/null +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb @@ -0,0 +1,49 @@ +<% case @survey.result_type %> +<% when ::Survey::ResultChart %> + +

<%= @survey.title %> <%= t('survey.chart') %>

+
+ <% @survey_questions.each do |question| %> + + <% case question.type %> + <% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %> +
+ <% end %> + + <% end %> +
+ + + +<% when ::Survey::ResultExtern %> + +<% when ::Survey::ResultFile %> +

<%= @survey.title %> <%= t('survey.upload_file') %>

+
+ <%= link_to t(:view), @survey.upload_file.url, {:class => 'for_preview btn', :target => '_blank', :title => t(:view), "data-trigger" => :hover} %> +
+<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb index 2e4cca6c..e2126998 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb @@ -1,87 +1,157 @@ <% # encoding: utf-8 %> -

<%= @survey.title %>

-<%= form_for :answer, :method => :put, :url => panel_survey_front_end_survey_path(@survey, :inner => true), :html => {:class => 'clear'} do |f| %> - <% @survey.survey_questions.each do |question| %> - <% label = question.title %> - <% label += ' (' + t('survey_question.required') + ')' if question.is_required %> - <%= f.label question.id, label %> -

<%= question.description %>

- <% case question.type %> - <% when ::SurveyQuestion::Oneline %> - <%= f.text_field question.id, :required => question.is_required %> - <% when ::SurveyQuestion::Multiline %> - <%= f.text_area question.id, :rows => 5, :required => question.is_required %> - <% when ::SurveyQuestion::Radio %> - <% question.survey_question_options.each do |option| %> -

- <%= f.radio_button question.id, option.id %> - <%= f.label "#{question.id}_#{option.id}", option.name, :style => "display:inline" %> -

- <% end %> - <% if question.custom_option %> -

- <%= f.radio_button question.id, 'custom_option' %> - <%= f.label "#{question.id}_custom_option", t('survey_question.use_custom_option') + ': ', :style => "display:inline" %> - <%= f.text_field "#{question.id}_custom_option" %> -

- <% end %> - <% when ::SurveyQuestion::Check %> - <%= f.fields_for "#{question.id}" do |cf| %> - <% question.survey_question_options.each do |option| %> -

- <%= cf.check_box option.id %> - <%= cf.label option.id, option.name, :style => "display:inline" %> -

- <% end %> - <% if question.custom_option %> -

- <%= cf.check_box 'custom_option' %> - <%= f.label "#{question.id}_custom_option", t('survey_question.use_custom_option') + ': ', :style => "display:inline" %> - <%= f.text_field "#{question.id}_custom_option" %> -

- <% end %> - <% end %> - <% when ::SurveyQuestion::Select %> - <% options = question.survey_question_options.collect {|o| [ o.name, o.id ] } %> - <% if question.custom_option %> - <% options.push [t('survey_question.use_custom_option'), 'custom_option'] %> - <% end %> - <%= f.select question.id, options %> - <% if question.custom_option %> - <%= f.text_field "#{question.id}_custom_option" %> - <% end %> - <% when ::SurveyQuestion::Radiogroup %> - <%= f.fields_for "#{question.id}" do |rgf| %> - - - - - <% question.survey_question_radiogroups.each do |radiogroup| %> - - <% end %> - - - - <% question.survey_question_options.each do |option| %> - - - <% question.survey_question_radiogroups.each do |radiogroup| %> - +

<%= @survey.title %>

+
+
+
+ <%= form_for :answer, :method => :put, :url => panel_survey_front_end_survey_path(@survey, :inner => true), :html => {:class => 'clear'} do |f| %> +
+ <%= @survey.description %> +
+
    + <% @questions.each_with_index do |question, i| %> +
  1. + <% label = question.title %> + <% label += ' (' + t('survey_question.required') + ')' if question.is_required %> + <%= f.label question.id, label, :class => "o-question-title" %> +
    + <%= question.description %> +
    + <% case question.type %> + <% when ::SurveyQuestion::Oneline %> + <%= f.text_field question.id, :required => question.is_required %> + <% when ::SurveyQuestion::Multiline %> + <%= f.text_area question.id, :rows => 5, :required => question.is_required %> + <% when ::SurveyQuestion::Radio %> + <% question.survey_question_options.each do |option| %> +

    + <%= f.radio_button question.id, option.id %> + <%= f.label "#{question.id}_#{option.id}", option.name, :style => "display:inline" %> +

    <% end %> -
- <% end %> - -
- <%= rgf.label radiogroup.id, radiogroup.name %> -
- <%= rgf.label option.id, option.name %> - - <%= rgf.radio_button option.id, radiogroup.id %> -
+ <% if question.custom_option %> +

+ <%= f.radio_button question.id, 'custom_option' %> + <%= f.label "#{question.id}_custom_option", t('survey_question.use_custom_option') + ': ', :style => "display:inline" %> + <%= f.text_field "#{question.id}_custom_option" %> +

+ <% end %> + <% when ::SurveyQuestion::Check %> + <%= f.fields_for "#{question.id}" do |cf| %> + <% question.survey_question_options.each do |option| %> +

+ <%= cf.check_box option.id %> + <%= cf.label option.id, option.name, :style => "display:inline" %> +

+ <% end %> + <% if question.custom_option %> +

+ <%= cf.check_box 'custom_option' %> + <%= f.label "#{question.id}_custom_option", t('survey_question.use_custom_option') + ': ', :style => "display:inline" %> + <%= f.text_field "#{question.id}_custom_option" %> +

+ <% end %> + <% end %> + <% when ::SurveyQuestion::Select %> + <% options = question.survey_question_options.collect {|o| [ o.name, o.id ] } %> + <% if question.custom_option %> + <% options.push [t('survey_question.use_custom_option'), 'custom_option'] %> + <% end %> + <%= f.select question.id, options %> + <% if question.custom_option %> + <%= f.text_field "#{question.id}_custom_option", :class => 'custom_option' %> + <% end %> + <% when ::SurveyQuestion::Radiogroup %> + <%= f.fields_for "#{question.id}" do |rgf| %> + + + + + <% question.survey_question_radiogroups.each do |radiogroup| %> + + <% end %> + + + + <% question.survey_question_options.each_with_index do |option, j| %> + > + + <% question.survey_question_radiogroups.each do |radiogroup| %> + + <% end %> + + <% end %> + +
+ <%= radiogroup.name %> +
+ <%= option.name %> + + <%= rgf.radio_button option.id, radiogroup.id %> +
+ <% end %> + <% end %> + + <% end %> + +
+ <%= f.submit t('submit'), :class => 'survey-submit' %> +
<% end %> - <% end %> - <% end %> -

- <%= f.submit t('submit') %> -

-<% end %> \ No newline at end of file +
+ + +<% content_for :page_stylesheets do %> + +<% end %> + \ No newline at end of file diff --git a/vendor/built_in_modules/survey/config/locales/en.yml b/vendor/built_in_modules/survey/config/locales/en.yml index d2ce8eb7..440af263 100644 --- a/vendor/built_in_modules/survey/config/locales/en.yml +++ b/vendor/built_in_modules/survey/config/locales/en.yml @@ -7,11 +7,63 @@ en: postdate: Start Date deadline: End Date no_postdate: No Start Date - no_deadline: No Start Date + no_deadline: No End Date results_count: Results Count update_user: Update User question: Question + result_type: Result Type (Frontend) + extern_link: Extern Link + upload_file: Uploaded File + + remove_upload_file: Remove Uploaded File + + answer_success: Successfully answered,jump back now + answer_error: Unsuccessful answer + + answers_list: Answers List + export_csv: Export CSV + chart: Chart + set_answers: Set Answers + duplicate_it: Duplicate It + + view_result: View Result + + jump: Jump-To + jump_mode: Jump-To Mode + wrong_type_cant_jump: Only radio or select can set jump-to + right_type_cant_jump: Custom option allowed can't set jump-to + not_jump: Not Jump + jump_to_end: End of Survey + + must_answer: Must be Answered + + default_widget: + title: Title + time_range: Date Range + result: Result + + frontend: + survey: Survey Frontend + survey_question: title: Question - description: Description \ No newline at end of file + description: Description + type: Type + is_required: Is Required + required: Required + required_error: Can't not be empty + oneline: Oneline + multiline: Multi-line + radio: Radio + check: Check + select: Select + radiogroup: Radio Group + options_lists: Options List + radiogroup_label: Radio Group Label + radiogroups_lists: Radio Groups List + option: Option + custom_option: Allow Custom Option + use_custom_option: Other + + have_not_chart: This type of question havn't chart \ No newline at end of file diff --git a/vendor/built_in_modules/survey/config/locales/zh_tw.yml b/vendor/built_in_modules/survey/config/locales/zh_tw.yml index f099acb1..9e691286 100644 --- a/vendor/built_in_modules/survey/config/locales/zh_tw.yml +++ b/vendor/built_in_modules/survey/config/locales/zh_tw.yml @@ -13,14 +13,36 @@ zh_tw: update_user: 最後更新者 question: 問題 + result_type: 前端結果表示方式 + extern_link: 外部連結 + upload_file: 結果文件 + + remove_upload_file: 移除存在的結果文件 + answer_success: 問卷填寫成功,現在跳回 answer_error: 問卷填寫錯誤 - answers: 結果 + answers_list: 結果清單 + export_csv: 匯出CSV + chart: 結果圖表 + set_answers: 設定結果 + duplicate_it: 複製問卷 + + view_result: 查看結果 + + jump: 跳題 + jump_mode: 設爲跳題方式回答 + wrong_type_cant_jump: 不是單選或下拉無法使用跳題 + right_type_cant_jump: 允許自定回答的問題無法使用跳題 + not_jump: 依據試卷列出所有問題數 + jump_to_end: 結束問題 + + must_answer: 必須回答這個問題 default_widget: title: 問卷標題 time_range: 問卷期間 + result: 結果 frontend: survey: 問卷調查前台 @@ -44,3 +66,5 @@ zh_tw: option: 選項 custom_option: 允許自定回答選項 use_custom_option: 其他 + + have_not_chart: 此種類型問題不含結果圖表 diff --git a/vendor/built_in_modules/survey/config/routes.rb b/vendor/built_in_modules/survey/config/routes.rb index aeae5f5b..fa9b1168 100644 --- a/vendor/built_in_modules/survey/config/routes.rb +++ b/vendor/built_in_modules/survey/config/routes.rb @@ -7,6 +7,13 @@ Rails.application.routes.draw do collection do get 'delete' end + member do + get 'export' + get 'chart' + get 'set_answers' + get 'jump' + get 'duplicate_it' + end resources :answers, :controller => :surveys_answers do collection do get 'delete' @@ -15,7 +22,11 @@ Rails.application.routes.draw do end end namespace :front_end do - resources :surveys + resources :surveys do + member do + get 'result' + end + end end end end diff --git a/vendor/built_in_modules/survey/init.rb b/vendor/built_in_modules/survey/init.rb index f1c3deb7..6ba276d4 100644 --- a/vendor/built_in_modules/survey/init.rb +++ b/vendor/built_in_modules/survey/init.rb @@ -22,9 +22,10 @@ module Faq default_widget do enable ["typeA"] query 'Survey.any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now, :postdate.lte => Time.now} )' - link_field :title,{:method => 'panel_survey_front_end_survey_path',:args=>:self} + link_field :title, {:method => 'panel_survey_front_end_survey_path',:args=>:self} + link_field :result, {:method => 'result_panel_survey_front_end_survey_path', :args=>:self} field :time_range - link_to_more 'panel_survey_front_end_survey_path',:title_i18n=> 'faq.default_widget.to_more' + link_to_more 'panel_survey_front_end_survey_path', :title_i18n=> 'faq.default_widget.to_more' end end From 515185d87c0a6b99c7185fc0fa339702b2bf3016 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 10 May 2013 17:15:55 +0800 Subject: [PATCH 04/19] ques: fix submit --- .../survey/back_end/surveys_controller.rb | 35 +++++++++++++++++-- .../survey/front_end/surveys_controller.rb | 2 +- .../survey/app/models/survey_question.rb | 1 - 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb index d0286ab0..72b91e82 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb @@ -97,7 +97,12 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController @survey.survey_answers.each do |answer| row = [] @survey_questions.each do |question| - row << answer[question.id.to_s] + if question.type == ::SurveyQuestion::Radiogroup + options = Hash[question.survey_question_options.collect{|o| [ o.id.to_s, o.name ] }] + row << Hash[answer[question.id.to_s].map {|o, g| [options[o], g]}] + else + row << answer[question.id.to_s] + end end csv << row end @@ -143,14 +148,38 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController @survey.survey_questions.all.each do |question| new_question = @new_survey.survey_questions.new question.attributes.each do |key, value| - unless ['_id', 'created_at', 'updated_at'].include? key - if @survey.respond_to?(key + '_translations') + unless ['_id', 'survey_id'].include? key + if question.respond_to?(key + '_translations') new_question.send(key + '_translations=', value) else new_question.write_attribute(key, value) end end end + question.survey_question_options.all.each do |option| + new_option = new_question.survey_question_options.new + option.attributes.each do |key, value| + unless ['_id', 'survey_question_id'].include? key + if option.respond_to?(key + '_translations') + new_option.send(key + '_translations=', value) + else + new_option.write_attribute(key, value) + end + end + end + end + question.survey_question_radiogroups.all.each do |radiogroup| + new_radiogroup = new_question.survey_question_radiogroups.new + radiogroup.attributes.each do |key, value| + unless ['_id', 'survey_question_id'].include? key + if radiogroup.respond_to?(key + '_translations') + new_radiogroup.send(key + '_translations=', value) + else + new_radiogroup.write_attribute(key, value) + end + end + end + end end @new_survey.create_user_id = current_user.id diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb index 0cf5d848..25e2c9a7 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb @@ -60,7 +60,7 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController if answer[qid] answer[qid].each do |oid, value| unless value.blank? - @answer_model[qid][options[oid]] = radiogroups[value] + @answer_model[qid][oid] = radiogroups[value] else if question.is_required @answer_model.errors.add question.title, t('survey_question.required_error') diff --git a/vendor/built_in_modules/survey/app/models/survey_question.rb b/vendor/built_in_modules/survey/app/models/survey_question.rb index c482a48a..bb0c9004 100644 --- a/vendor/built_in_modules/survey/app/models/survey_question.rb +++ b/vendor/built_in_modules/survey/app/models/survey_question.rb @@ -8,7 +8,6 @@ class SurveyQuestion Radiogroup = 5 include Mongoid::Document - include Mongoid::Timestamps field :title, :localize => true field :description, :localize => true From b659c7021ddff2259cce29838a9aa6d8290cfcd5 Mon Sep 17 00:00:00 2001 From: Lukas Date: Sat, 11 May 2013 13:52:27 +0800 Subject: [PATCH 05/19] bug fix and add feature --- .../survey/back_end/surveys_controller.rb | 5 -- .../survey/front_end/surveys_controller.rb | 1 + .../survey/app/models/survey.rb | 11 +++++ .../survey/back_end/surveys/_survey.html.erb | 2 +- .../survey/back_end/surveys/chart.html.erb | 40 ---------------- .../back_end/surveys_answers/_answer.html.erb | 5 +- .../survey/front_end/surveys/result.html.erb | 46 +++++++++++++++---- .../survey/config/locales/zh_tw.yml | 2 +- .../built_in_modules/survey/config/routes.rb | 1 - 9 files changed, 54 insertions(+), 59 deletions(-) delete mode 100644 vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb index 72b91e82..b262116d 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb @@ -114,11 +114,6 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController end end - def chart - @survey = ::Survey.find(params[:id]) - @chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data - end - def set_answers @survey = ::Survey.find(params[:id]) end diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb index 25e2c9a7..5d83101e 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb @@ -85,6 +85,7 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController def result redirect_standalone result_panel_survey_front_end_survey_path(params[:id], :standalone => 'true') do @survey = ::Survey.find params[:id] + @survey.result_type = ::Survey::ResultChart if params[:force_chart] case @survey.result_type when ::Survey::ResultChart @chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data diff --git a/vendor/built_in_modules/survey/app/models/survey.rb b/vendor/built_in_modules/survey/app/models/survey.rb index 2491a4b5..295658c9 100644 --- a/vendor/built_in_modules/survey/app/models/survey.rb +++ b/vendor/built_in_modules/survey/app/models/survey.rb @@ -75,6 +75,17 @@ class Survey end end end + when ::SurveyQuestion::Radiogroup + chart_data[qid] = {} + answers = survey_answers.each do |answer| + if answer[qid] + answer[qid].each do |option, group| + chart_data[qid][option] ||= {} + chart_data[qid][option][group] ||= 0 + chart_data[qid][option][group] += 1 + end + end + end end end diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb index 09dde95a..762b7fc9 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb @@ -15,7 +15,7 @@
  • <%= link_to t('survey.set_answers'), set_answers_panel_survey_back_end_survey_path(survey, :page => params[:page]) %>
  • <%= link_to t('survey.answers_list'), panel_survey_back_end_survey_answers_path(survey, :page => params[:page]) %>
  • <%= link_to t('survey.export_csv'), export_panel_survey_back_end_survey_path(survey, :format => :csv), :target => '_blank' %>
  • -
  • <%= link_to t('survey.chart'), chart_panel_survey_back_end_survey_path(survey, :page => params[:page]) %>
  • +
  • <%= link_to t('survey.chart'), result_panel_survey_front_end_survey_path(survey, :force_chart => true, :standalone => true), :target => '_blank' %>
  • <%= link_to t(:delete_), panel_survey_back_end_survey_path(survey), :confirm => t('sure?'), :method => :delete, :remote => true %>
  • <% end -%> diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb deleted file mode 100644 index 6356b183..00000000 --- a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/chart.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -

    <%= @survey.title %> <%= t('survey.chart') %>

    - -<% @survey_questions.each do |question| %> - -

    <%= question.title %>

    - <% case question.type %> - <% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %> -
    - <% else %> -

    <%= t('survey_question.have_not_chart') %>

    - <% end %> - -<% end %> - -
    - <%= link_to t('back'), get_go_back, :class=>"btn" %> -
    - -<% content_for :page_specific_javascript do %> - - -<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb index b70c5db3..94a5e94e 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb @@ -7,9 +7,10 @@ <% qid = question.id %> <% case question.type %> <% when ::SurveyQuestion::Check %> - <%= answer[qid].join(', ') %> + <%= ( answer[qid] || [] ).join(', ') %> <% when ::SurveyQuestion::Radiogroup %> - <%= answer[qid].map{|key, value| key + ': ' + value}.join('; ') unless answer[qid].blank? %> + <% options = Hash[question.survey_question_options.collect{|o| [ o.id.to_s, o.name ] }] %> + <%= ( answer[qid] || {} ).map{|key, value| ( options[key] || key ) + ': ' + value}.join('; ') unless answer[qid].blank? %> <% else %> <%= answer[qid] %> <% end %> diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb index b0aefc2f..6db8b0c5 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/result.html.erb @@ -2,16 +2,32 @@ <% when ::Survey::ResultChart %>

    <%= @survey.title %> <%= t('survey.chart') %>

    -
    - <% @survey_questions.each do |question| %> +
    +
    +
    +
    + <%= t 'survey.results_count' %>: <%= @survey_questions.count %> +
    +
      + <% @survey_questions.each do |question| %> + <% case question.type %> + <% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %> +
    1. +
      +
    2. + <% when ::SurveyQuestion::Radiogroup %> + <% question.survey_question_options.each do |option| %> +
    3. +
      +
    4. + <% end %> + <% end %> - <% case question.type %> - <% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %> -
      - <% end %> - - <% end %> -
    + <% end %> + +
    +
    +