survey module initial
This commit is contained in:
parent
30824d1620
commit
51640423a7
|
@ -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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
|
@ -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
|
86
vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb
vendored
Normal file
86
vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb
vendored
Normal file
|
@ -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
|
78
vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb
vendored
Normal file
78
vendor/built_in_modules/survey/app/controllers/panel/survey/front_end/surveys_controller.rb
vendored
Normal file
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,7 @@
|
||||||
|
class SurveyAnswer
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
belongs_to :survey
|
||||||
|
|
||||||
|
end
|
|
@ -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
|
|
@ -0,0 +1,7 @@
|
||||||
|
class SurveyQuestionOption
|
||||||
|
include Mongoid::Document
|
||||||
|
|
||||||
|
field :name, :localize => true
|
||||||
|
|
||||||
|
embedded_in :survey_question
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
class SurveyQuestionRadiogroup
|
||||||
|
include Mongoid::Document
|
||||||
|
|
||||||
|
field :name, :localize => true
|
||||||
|
|
||||||
|
embedded_in :survey_question
|
||||||
|
end
|
105
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb
vendored
Normal file
105
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb
vendored
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<div id= "poststuff">
|
||||||
|
|
||||||
|
<%= f.error_messages %>
|
||||||
|
|
||||||
|
<div id="sub-wiget">
|
||||||
|
<div id="widget-date" class="widget-box widget-size-300">
|
||||||
|
<div class="widget-action clear tip" title="Set the announcement to start and end dates">
|
||||||
|
<a href="#" class="action"><i class="icon-exclamation-sign icon-white"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-calendar"></i><%= t(:date_) %></h3>
|
||||||
|
<div class="widget-content clear">
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.datetime_picker :postdate, :picker_type => 'separated', :label => t('survey.postdate') %>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.datetime_picker :deadline, :picker_type => 'separated', :label => t('survey.deadline') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="post-body">
|
||||||
|
<div id="post-body-content" class="clear">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||||
|
<li <%= ( i == 0 ) ? "class=active" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
|
||||||
|
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||||
|
|
||||||
|
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
|
||||||
|
<div class="title">
|
||||||
|
<%= 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 %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="description">
|
||||||
|
<%= 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 %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="main-widget">
|
||||||
|
<div id="survey_questions_wrapper">
|
||||||
|
<div id='survey_questions' class="survey_questions_block">
|
||||||
|
<% @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 %>
|
||||||
|
</div>
|
||||||
|
<div id='add_survey_question' class="info_input survey_questions_block">
|
||||||
|
<%= hidden_field_tag 'survey_question_field_count', @survey.survey_questions.count %>
|
||||||
|
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> <%= t(:add) %> <%= t('survey.question') %></span></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-actions">
|
||||||
|
<%= 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" %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "survey_form" %>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
$('#add_survey_question a.add').live('click', function(){
|
||||||
|
var new_id = $(this).prev().attr('value');
|
||||||
|
var old_id = new RegExp("new_survey_questions", "g");
|
||||||
|
$(this).prev().attr('value', parseInt(new_id) + 1);
|
||||||
|
$_new = $(("<%= escape_javascript(add_attribute 'form_survey_question', f, :survey_questions) %>").replace(old_id, new_id));
|
||||||
|
$('#survey_questions').append($_new);
|
||||||
|
$_new.find('a.delete_question').on('click', function(){
|
||||||
|
$(this).parents('.survey_question_item').remove();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,130 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
|
||||||
|
<div id="<%= "survey_question_#{form_survey_question.id}" if !form_survey_question.new_record? %>" class="survey_question_item clear">
|
||||||
|
<div id="widget-question" class="widget-box">
|
||||||
|
<div class="widget-action clear tip" title="a question">
|
||||||
|
<a class="action"><i class="icon-exclamation-sign icon-white"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-help"></i><%= t('survey.question') %></h3>
|
||||||
|
<div class="widget-content">
|
||||||
|
<div class="tab-content">
|
||||||
|
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||||
|
|
||||||
|
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
|
||||||
|
|
||||||
|
<div class="title">
|
||||||
|
<%= 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 %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="description">
|
||||||
|
<%= 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 %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div class="type">
|
||||||
|
<%= 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" %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="is_required">
|
||||||
|
<%= f.label :is_required, t('survey_question.is_required')%>
|
||||||
|
<%= f.check_box :is_required %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="survey_question_radiogroups_wrapper hide type-specify type-<%= SurveyQuestion::Radiogroup%>">
|
||||||
|
<%= f.label :survey_question_options, t('survey_question.radiogroups_lists')%>
|
||||||
|
<table class="table table-condensed">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><%= t('survey_question.radiogroup_label') %></th>
|
||||||
|
<th class="span1"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% 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 %>
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:center" colspan="2">
|
||||||
|
<div class="info_input add_survey_question_radiogroup">
|
||||||
|
<%= f.hidden_field :survey_question_radiogroup_field_count, :value => form_survey_question.survey_question_radiogroups.count %>
|
||||||
|
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> <%= t(:add) %></span></a>
|
||||||
|
<script type="text/template">
|
||||||
|
<%= add_attribute('form_survey_question_radiogroup', f, :survey_question_radiogroups) %>
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="survey_question_options_wrapper hide type-specify type-<%= SurveyQuestion::Radio%> type-<%= SurveyQuestion::Check%> type-<%= SurveyQuestion::Select%> type-<%= SurveyQuestion::Radiogroup%>">
|
||||||
|
<%= f.label :survey_question_options, t('survey_question.options_lists')%>
|
||||||
|
<table class="table table-condensed">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><%= t('survey_question.option') %></th>
|
||||||
|
<th class="span1"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% 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 %>
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:center" colspan="2">
|
||||||
|
<div class="info_input add_survey_question_option">
|
||||||
|
<%= f.hidden_field :survey_question_option_field_count, :value => form_survey_question.survey_question_options.count %>
|
||||||
|
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> <%= t(:add) %></span></a>
|
||||||
|
<script type="text/template">
|
||||||
|
<%= add_attribute('form_survey_question_option', f, :survey_question_options) %>
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
</table>
|
||||||
|
<div class="type-specify hide-type-<%= SurveyQuestion::Radiogroup%>">
|
||||||
|
<%= f.label :custom_option, t('survey_question.custom_option')%>
|
||||||
|
<%= f.check_box :custom_option %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% if form_survey_question.new_record? %>
|
||||||
|
<a class="btn delete_question"><i class="icon-remove"></i></a>
|
||||||
|
<% else %>
|
||||||
|
<%= f.hidden_field :id %>
|
||||||
|
<%= hidden_field_tag :tr, (dom_id form_survey_question) %>
|
||||||
|
<a class="btn remove_existing_record_question"><i class="icon-remove"></i></a>
|
||||||
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<tr id="<%= "survey_question_option_#{form_survey_question_option.id}" if !form_survey_question_option.new_record? %>" class='survey_question_option_item'>
|
||||||
|
<td>
|
||||||
|
<div class="tab-content">
|
||||||
|
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||||
|
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
|
||||||
|
<%= 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 %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span class="action">
|
||||||
|
<% if form_survey_question_option.new_record? %>
|
||||||
|
<a class="delete_option"><i class="icon-remove"></i></a>
|
||||||
|
<% else %>
|
||||||
|
<%= f.hidden_field :id %>
|
||||||
|
<%= hidden_field_tag :tr, (dom_id form_survey_question_option) %>
|
||||||
|
<a class="remove_existing_record_option"><i class="icon-remove"></i></a>
|
||||||
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<tr id="<%= "survey_question_radiogroup_#{form_survey_question_radiogroup.id}" if !form_survey_question_radiogroup.new_record? %>" class='survey_question_radiogroup_item'>
|
||||||
|
<td>
|
||||||
|
<div class="tab-content">
|
||||||
|
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||||
|
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
|
||||||
|
<%= 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 %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span class="action">
|
||||||
|
<% if form_survey_question_radiogroup.new_record? %>
|
||||||
|
<a class="delete_radiogroup"><i class="icon-remove"></i></a>
|
||||||
|
<% else %>
|
||||||
|
<%= f.hidden_field :id %>
|
||||||
|
<%= hidden_field_tag :tr, (dom_id form_survey_question_radiogroup) %>
|
||||||
|
<a class="remove_existing_record_radiogroup"><i class="icon-remove"></i></a>
|
||||||
|
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
|
@ -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 %>
|
30
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb
vendored
Normal file
30
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_survey.html.erb
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<tr id="<%= dom_id survey %>" class="with_action">
|
||||||
|
<td>
|
||||||
|
<% 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 -%>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= link_to survey.title, panel_survey_front_end_survey_path(survey) %>
|
||||||
|
<div class="quick-edit">
|
||||||
|
<ul class="nav nav-pills hide">
|
||||||
|
<%if at_least_module_manager %>
|
||||||
|
<li><%= link_to t('edit'), edit_panel_survey_back_end_survey_path(survey, :page => params[:page]) %></li>
|
||||||
|
<li><%= link_to t('survey.answers'), panel_survey_back_end_survey_answers_path(survey, :page => params[:page]) %></li>
|
||||||
|
<li><%= link_to t(:delete_), panel_survey_back_end_survey_path(survey), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||||
|
<% end -%>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= (survey.postdate) ? display_date_time(survey.postdate): t(:no_deadline) %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= (survey.deadline) ? display_date_time(survey.deadline): t(:no_deadline) %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= survey.survey_answers.count %>
|
||||||
|
</td>
|
||||||
|
<td><%= User.from_id(survey.update_user_id).name rescue ''%></td>
|
||||||
|
</tr>
|
||||||
|
|
21
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb
vendored
Normal file
21
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_answer.html.erb
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
<tr id="<%= dom_id answer %>" class="with_action">
|
||||||
|
<td>
|
||||||
|
<%= check_box_tag 'to_delete[]', answer.id, false, :class => "checkbox_in_list" %>
|
||||||
|
</td>
|
||||||
|
<% @survey.survey_questions.each do |question| %>
|
||||||
|
<td>
|
||||||
|
<% 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 %>
|
||||||
|
</td>
|
||||||
|
<% end %>
|
||||||
|
<td>
|
||||||
|
<%= answer.created_at %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
11
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_filter.html.erb
vendored
Normal file
11
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/_filter.html.erb
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<div id='filter' class="subnav">
|
||||||
|
<div class="filters accordion-group">
|
||||||
|
<div id="sort_headers" class="table-label">
|
||||||
|
<%= render 'sort_headers' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "sort_header" %>
|
||||||
|
<% end %>
|
|
@ -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 %>
|
23
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.html.erb
vendored
Normal file
23
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.html.erb
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<%= render 'filter' %>
|
||||||
|
|
||||||
|
<table class="table main-list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="span1"></th>
|
||||||
|
<% @survey.survey_questions.each do |question| %>
|
||||||
|
<th class="span1"></th>
|
||||||
|
<% end %>
|
||||||
|
<th class="span1"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="tbody_survey_answers" class="sort-holder">
|
||||||
|
<%= render :partial => 'answer', :collection => @answers %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="form-actions form-fixed pagination-right">
|
||||||
|
<%= link_to t(:back) + t('survey.survey'), panel_survey_back_end_surveys_path, :class => 'btn btn-primary pull-right' %>
|
||||||
|
<div id="survey_answers_pagination" class="paginationFixed">
|
||||||
|
<%= paginate @answers %>
|
||||||
|
</div>
|
||||||
|
</div>
|
4
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.js.erb
vendored
Normal file
4
vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys_answers/index.js.erb
vendored
Normal file
|
@ -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 %>");
|
|
@ -0,0 +1,4 @@
|
||||||
|
<script type="text/javascript">
|
||||||
|
alert("<%= t('survey.answer_error')%>: <%= @survey_answer_error %>");
|
||||||
|
window.location.href = "<%= panel_survey_front_end_survey_path(@survey, :clicked_field_name => 'title') %>";
|
||||||
|
</script>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<script type="text/javascript">
|
||||||
|
alert("<%= t('survey.answer_success')%>");
|
||||||
|
window.location.href = "<%= panel_survey_front_end_surveys_path %>";
|
||||||
|
</script>
|
87
vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb
vendored
Normal file
87
vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb
vendored
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
<% # encoding: utf-8 %>
|
||||||
|
<h1 class="h1"><%= @survey.title %></h1>
|
||||||
|
<%= 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 %>
|
||||||
|
<p><%= question.description %></p>
|
||||||
|
<% 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| %>
|
||||||
|
<p>
|
||||||
|
<%= f.radio_button question.id, option.id %>
|
||||||
|
<%= f.label "#{question.id}_#{option.id}", option.name, :style => "display:inline" %>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
||||||
|
<% if question.custom_option %>
|
||||||
|
<p>
|
||||||
|
<%= 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" %>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
||||||
|
<% when ::SurveyQuestion::Check %>
|
||||||
|
<%= f.fields_for "#{question.id}" do |cf| %>
|
||||||
|
<% question.survey_question_options.each do |option| %>
|
||||||
|
<p>
|
||||||
|
<%= cf.check_box option.id %>
|
||||||
|
<%= cf.label option.id, option.name, :style => "display:inline" %>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
||||||
|
<% if question.custom_option %>
|
||||||
|
<p>
|
||||||
|
<%= 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" %>
|
||||||
|
</p>
|
||||||
|
<% 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| %>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<% question.survey_question_radiogroups.each do |radiogroup| %>
|
||||||
|
<td>
|
||||||
|
<%= rgf.label radiogroup.id, radiogroup.name %>
|
||||||
|
</td>
|
||||||
|
<% end %>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% question.survey_question_options.each do |option| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= rgf.label option.id, option.name %>
|
||||||
|
</td>
|
||||||
|
<% question.survey_question_radiogroups.each do |radiogroup| %>
|
||||||
|
<td>
|
||||||
|
<%= rgf.radio_button option.id, radiogroup.id %>
|
||||||
|
</td>
|
||||||
|
<% end %>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<p>
|
||||||
|
<%= f.submit t('submit') %>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
|
@ -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
|
|
@ -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: 其他
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||||
|
}
|
Reference in New Issue