From 9814b7c79c091770aa94dc827415f9cceea39faa Mon Sep 17 00:00:00 2001 From: bohung Date: Tue, 11 Oct 2022 23:16:34 +0800 Subject: [PATCH] Fix bug. Add feature that batch delete and change status. Add adjust display fields in backend table. --- app/assets/stylesheets/ask/ask.css | 27 +- app/controllers/admin/asks_controller.rb | 88 +++++- app/controllers/asks_controller.rb | 12 +- app/helpers/admin/asks_helper.rb | 2 +- app/models/ask_list_setting.rb | 26 ++ app/views/admin/asks/_ask_setting.html.erb | 11 +- .../admin/asks/_default_ask_setting.html.erb | 9 +- app/views/admin/asks/_index.html.erb | 265 +++++++++++++++--- .../admin/asks/backend_table_setting.html.erb | 47 ++++ .../admin/asks/list_table_setting.html.erb | 16 ++ app/views/asks/index.html.erb | 4 +- ask.gemspec | 54 ++-- config/locales/en.yml | 9 +- config/locales/zh_tw.yml | 7 + config/routes.rb | 4 + lib/ask/engine.rb | 12 + modules/ask/_ask_widget_form.html.erb | 6 +- 17 files changed, 487 insertions(+), 112 deletions(-) create mode 100644 app/models/ask_list_setting.rb create mode 100644 app/views/admin/asks/backend_table_setting.html.erb create mode 100644 app/views/admin/asks/list_table_setting.html.erb diff --git a/app/assets/stylesheets/ask/ask.css b/app/assets/stylesheets/ask/ask.css index 3dc5539..f468a9c 100644 --- a/app/assets/stylesheets/ask/ask.css +++ b/app/assets/stylesheets/ask/ask.css @@ -1,15 +1,20 @@ - -.form-horizontal { +.ask-question .control-group.col-sm-6:nth-child(2n+1) { + clear: left; +} +.ask-question .controls label.radio-inline{ + float: left; +} +.ask-question-form { background-color: #fdfdfd; padding: 2em; } -.form-horizontal .control-group { +.ask-question-form .control-group { margin-bottom: 1em; padding-bottom: 0.5em; } -.form-horizontal .control-label { +.ask-question-form .control-label { font-size: 1em; float: left; width: 10em; @@ -20,13 +25,13 @@ display: block; } -.form-horizontal .control-group .controls { +.ask-question-form .control-group .controls { margin-left: 13.5em; } -.form-horizontal input[type="text"], -.form-horizontal textarea, -.form-horizontal select { +.ask-question-form input[type="text"], +.ask-question-form textarea, +.ask-question-form select { height: 2.1em; line-height: 2.1em; width: 220px; @@ -35,17 +40,17 @@ border-radius: 0.3em; } -.form-horizontal textarea { +.ask-question-form textarea { width: 97%; height: 180px; } /*button*/ -.form-horizontal .form-actions { +.ask-question-form .form-actions { border-top: 1px solid #d7dadb; /*padding: 1em 0 0 20em;*/ } -.form-horizontal .form-actions input, .form-horizontal .form-actions a{ +.ask-question-form .form-actions input, .ask-question-form .form-actions a{ float: right; } /*驗證碼*/ diff --git a/app/controllers/admin/asks_controller.rb b/app/controllers/admin/asks_controller.rb index 12be007..b4db427 100644 --- a/app/controllers/admin/asks_controller.rb +++ b/app/controllers/admin/asks_controller.rb @@ -5,6 +5,7 @@ class Admin::AsksController < OrbitAdminController before_action ->(module_app = @app_title) { set_variables module_app } before_action :set_askquestion, only: [:edit, :destroy, :update, :print] layout :compute_layout + helper_method :ask_thead def compute_layout if action_name=='print' false @@ -18,8 +19,7 @@ class Admin::AsksController < OrbitAdminController end def print_setting @set = nil - @cats_relations = get_categories_info_for_ask - @category_id = (params[:category] || @cats_relations[0][0] rescue nil) + prepare_category_select if @category_id.blank? @set = AskPrintSetting.first else @@ -38,7 +38,7 @@ class Admin::AsksController < OrbitAdminController set = AskPrintSetting.first end set.update_attributes(print_format: params[:ask_print_setting][:print_format],save_name: params[:ask_print_setting][:save_name]) - redirect_to "/#{locale}/admin/asks" + redirect_to admin_asks_path(:locale=>locale) end def category_print_setting_save locale = I18n.locale @@ -47,11 +47,9 @@ class Admin::AsksController < OrbitAdminController set.update_attributes(print_format: params['print_format'],save_name: params['save_name'],category_id: params['category_id']) redirect_to "/#{locale}/admin/asks/category_setting" end - def filter_fields(categories, tags) + def filter_fields(categories, tags=[]) { - :situation=>[{:title=>"ask.is_waiting",:id=>"is_waiting"},{:title=>"ask.is_processed",:id=>"is_processed"},{:title=>"ask.is_referral",:id=>"is_referral"},{:title=>"ask.is_published",:id=>"is_published"}], - :category=>categories.map{|c| {:title=>(c.title.blank? ? " " : c.title), :id=>c.id}}, - :identity=>tags.map{|tag| {:title=>(tag.name.blank? ? " " : tag.name), :id=>tag.id}} + :situation=> AskTicketStatus.all.map{|s| {:title=> s.title, :id=>s.key}} } end @@ -79,6 +77,7 @@ class Admin::AsksController < OrbitAdminController end end def category_setting_save + # render :html => params and return locale = I18n.locale ask_setting = AskCategorySetting.where(category_id: params['category_id']).first ask_setting = AskCategorySetting.create(category_id: params['category_id']) if ask_setting.nil? @@ -90,6 +89,17 @@ class Admin::AsksController < OrbitAdminController @ask_setting = AskSetting.first @url = setting_save_admin_asks_path end + def backend_table_setting + category_id = params[:category_id].present? ? params[:category_id] : nil + @ask_list_setting = AskListSetting.where(:category_id=>category_id).first || AskListSetting.create(:category_id=>category_id) + @url = ask_list_setting_save_admin_asks_path + end + def ask_list_setting_save + @ask_list_setting = AskListSetting.find(params[:id]) + ask_list_setting_params = params.require('ask_list_setting').permit! + @ask_list_setting.update_attributes(ask_list_setting_params) + redirect_to admin_asks_path(:locale=>locale) + end def get_new_setting_index ask_setting_index = AskSettingIndex.first ask_setting_index = AskSettingIndex.create() if ask_setting_index.nil? @@ -137,11 +147,32 @@ class Admin::AsksController < OrbitAdminController def index AskPrintSetting.create() if AskPrintSetting.first.nil? @ask_setting = AskSetting.first - @tags = @module_app.tags + prepare_category_select + category_id = @category_id.present? ? @category_id : nil + @ask_list_setting = AskListSetting.where(:category_id=>category_id).first || AskListSetting.create(:category_id=>category_id) + # @tags = @module_app.tags @categories = @module_app.categories.enabled.sort_by{|category| (((@module_app.asc rescue true) ? category.sort_number.to_i : -category.sort_number.to_i) rescue category.id)} - @filter_fields = filter_fields(@categories, @tags) + @filter_fields = filter_fields(@categories) # 列表欄位 - @table_fields = ['ask.serial_number', :situation, :category, 'title' , 'ask.name', 'ask.phone', 'ask.appointment','ask.created_at','ask.ip'] + @table_fields_default_fields = @ask_list_setting.default_fields.select{|f| @ask_setting.default_setting[f].nil? || @ask_setting.default_setting[f] } + @table_fields = @table_fields_default_fields.map{|v| ['title'].include?(v) ? v : "ask.#{v}"} + if @category_id.present? + ask_setting = AskCategorySetting.where(:category_id=>@category_id).first + tmp = ask_setting.custom_fields + list_setting_custom_fields = @ask_list_setting.custom_fields_list + else + tmp = [] + default_setting = AskSetting.first + if default_setting + tmp += default_setting.custom_fields.map{|k,v| ["default@#{k}", v]} + end + AskCategorySetting.all.each do |ask_setting| + tmp += ask_setting.custom_fields.map{|k,v| ["custom@#{ask_setting.id}@#{k}", v]} + end + tmp = tmp.to_h + list_setting_custom_fields = (tmp.keys & @ask_list_setting.custom_fields) + end + @table_ext_fields = list_setting_custom_fields.map{|k| [k,tmp[k]]}.select{|k,v| v} # 列表排序 # debugger if filter2("situation").blank? and filter2("identity").blank? @@ -161,7 +192,7 @@ class Admin::AsksController < OrbitAdminController .any_in(:identity => filter2("identity")) .any_in(:situation => filter2("situation")) end - + @askquestions = @askquestions.where(:category_id=>category_id) # 分頁 @askquestions = search_data(@askquestions,[:title]).page(params[:page]).per(10) if request.xhr? @@ -307,10 +338,20 @@ class Admin::AsksController < OrbitAdminController @url = admin_ask_path(@ask_question) end + def batch_modify_status + AskQuestion.where(:id.in=>params[:ids]).update_all(:situation=>params[:status_key]) + render :body => nil, :status => 204 + end + + def delete + AskQuestion.where(:id.in=>params[:ids]).destroy + render :body => nil, :status => 204 + end + def destroy locale = I18n.locale @ask_question.destroy - redirect_to "/#{locale}/admin/asks" + redirect_to admin_asks_path(:locale=>locale) end def update @@ -351,7 +392,7 @@ class Admin::AsksController < OrbitAdminController build_email(@ask_question) end - redirect_to "/#{locale}/admin/asks", notice: t('ask.reply_success') + redirect_to admin_asks_path(:locale=>locale), notice: t('ask.reply_success') end def build_email(email_er) @@ -426,9 +467,12 @@ class Admin::AsksController < OrbitAdminController @ask_question = AskQuestion.find(params[:id]) end def order_fields + prepare_category_select + @disp_fields_infos = AskSetting.get_disp_fields_infos(false,@category_id) + end + def prepare_category_select @cats_relations = get_categories_info_for_ask @category_id = (params[:category] || @cats_relations[0][0] rescue nil) - @disp_fields_infos = AskSetting.get_disp_fields_infos(false,@category_id) end def update_order_fields ask_setting = AskCategorySetting.where(:category_id=>params[:category]).first @@ -439,6 +483,10 @@ class Admin::AsksController < OrbitAdminController default_setting = AskSetting.first ask_setting = AskCategorySetting.create(category_id: params[:category]) p1 = default_setting.get_attrs + p1['need_check_customs'] = [] + p1['agree_customs'] = p1['custom_fields'].keys rescue [] + p1['reject_customs'] = [] + p1['custom_fields'] = p1['custom_fields'].map{|k,v| ["default@#{k}", v]}.to_h rescue {} ask_setting.update_attributes(p1) ask_setting.update(:use_default => true) ask_setting_index = AskCategorySettingIndex.where(category_id: params[:category]).first @@ -555,4 +603,16 @@ class Admin::AsksController < OrbitAdminController end param_clone.merge({"custom_fields"=> custom_fields}) end + def ask_thead(field, trans,center=false) + sort = field.to_s.include?('.') ? field.to_s.split('.')[1] : field.to_s + active = params[:sort].eql? sort + order = active ? (["asc", "desc"]-[params[:order]]).first : "asc" + arrow = (order.eql? "desc") ? "" : "" + klass = field.eql?(:title) ? "span5" : "span2" + + th_data = "#{trans} #{active ? arrow : ""}" + + "#{th_data}".html_safe + end + end diff --git a/app/controllers/asks_controller.rb b/app/controllers/asks_controller.rb index 381fc52..1774bce 100644 --- a/app/controllers/asks_controller.rb +++ b/app/controllers/asks_controller.rb @@ -337,6 +337,7 @@ class AsksController < ApplicationController tmp_type = (ask_setting.class == AskSetting) ? 0 : 1 tmp_ask_cat_id = (tmp_type == 1) ? ask_setting.id.to_s : "" set_input_name_for_ask("ask_question") + has_ask_category_id = false disp_fields_infos.each do |field, info| if field.start_with?("default@") k = field[8..-1] @@ -360,14 +361,15 @@ class AsksController < ApplicationController end else if field == 'ask_category_id' + has_ask_category_id = true if show_categories || ask_setting.default_setting[field] if categories.count > 1 - defalt_fields = defalt_fields + [{'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>select_tag('ask_question[category_id]', options_for_select(categories.collect{|t| [ t.title, t.id ]}))}] + defalt_fields << {'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>select_tag('ask_question[category_id]', options_for_select(categories.collect{|t| [ t.title, t.id ]}))} else - defalt_fields = defalt_fields + [{'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>"#{(categories[0].title rescue '')}"+hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))}] + defalt_fields << {'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>"#{(categories[0].title rescue '')}"+hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))} end else - defalt_fields = defalt_fields + [{'style_html'=>'display: none;','label'=>'','content'=>hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))}] + defalt_fields << {'style_html'=>'display: none;','label'=>'','content'=>hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))} end else if ask_setting.default_setting[field] || field == "usage_rule" @@ -413,6 +415,9 @@ class AsksController < ApplicationController end end end + unless has_ask_category_id + defalt_fields << {'style_html'=>'display: none;','label'=>'','content'=>hidden_field_tag('ask_question[category_id]', (tmp_type == 1 ? ask_setting.category_id : (categories[0].id.to_s rescue '')))} + end defalt_fields end def cal_html(fields,token_tag,form_id,referer_url,is_hidden=true,ask_setting=None) @@ -495,6 +500,7 @@ class AsksController < ApplicationController default_idx = ask_settings[1..-1].to_a.map{|a| a.category_id.to_s}.index(categories[0].id.to_s) default_idx = default_idx.nil? ? 0 : default_idx + 1 end + @default_ask_setting ||= AskSetting.first switch_form = script_text + ask_settings.collect.with_index do |ask_setting,i| fields = cal_form_from_setting(ask_setting,categories,true) is_hidden = (i != default_idx) diff --git a/app/helpers/admin/asks_helper.rb b/app/helpers/admin/asks_helper.rb index 846a0be..d3db45f 100644 --- a/app/helpers/admin/asks_helper.rb +++ b/app/helpers/admin/asks_helper.rb @@ -30,7 +30,7 @@ module Admin::AsksHelper cats = cats.sort_by{|category| (-category.sort_number.to_i rescue category.id)} end cats_relations = cats.map{|c| [c.id.to_s, c.title]} - if include_all + if include_all && cats_relations.count != 1 cats_relations.insert(0, ["",t(:all)]) end cats_relations diff --git a/app/models/ask_list_setting.rb b/app/models/ask_list_setting.rb new file mode 100644 index 0000000..92d0291 --- /dev/null +++ b/app/models/ask_list_setting.rb @@ -0,0 +1,26 @@ +class AskListSetting + include Mongoid::Document + include Mongoid::Timestamps + DefaultFields = ['serial_number','situation','ask_category_id','title','name','sex','mail','phone','appointment','created_at','ip'] + DefaultEnabled = ['serial_number','situation','ask_category_id','title','name','phone','appointment','created_at','ip'] + field :default_fields, type: Array, default: [] + field :custom_fields, type: Array, default: [] + field :category_id + def default_fields + tmp = super() + return tmp if tmp.length>0 + self.class::DefaultEnabled + end + def custom_fields_list + locale = I18n.locale + default_setting = AskSetting.first + if self.category_id.blank? + fields = default_setting ? {I18n.t(:default) => default_setting.custom_fields.map{|k,v| ["default@#{k}",v['field'][locale]]}.to_h} : {} + cat_ids_map = Category.where(:id.in=> AskCategorySetting.all.pluck(:category_id),:disabled.ne=>true).map{|c| [c.id.to_s, c.title]}.to_h + fields = fields.merge(AskCategorySetting.where(:category_id.in => cat_ids_map.keys()).map{|c| [cat_ids_map[c.category_id] , c.custom_fields.select{|k,v| !(k.start_with?('default@'))}.map{|k,v| ["custom@#{c.id}@#{k}",v['field'][locale]]}]}.to_h) + else + fields = AskCategorySetting.where(:category_id=>self.category_id).to_a.map{|c| [(Category.find(c.category_id).title rescue ''), c.custom_fields.map{|k,v| [k,v['field'][locale]]}]}.to_h + end + fields + end +end diff --git a/app/views/admin/asks/_ask_setting.html.erb b/app/views/admin/asks/_ask_setting.html.erb index 4b8d68f..5a34562 100644 --- a/app/views/admin/asks/_ask_setting.html.erb +++ b/app/views/admin/asks/_ask_setting.html.erb @@ -244,8 +244,15 @@ <%= f.text_area "usage_rule",class: 'ckeditor' %> - <% ask_setting.custom_fields.each do |k,v| %> - <%= custom_field_block_for_ask(k,v).html_safe %> + <% if @default_custom_fields %> + <% ask_setting.custom_fields.each do |k,v| %> + <%= custom_field_block_for_ask("default@#{k}",v, false, (hidden_field_tag("#{f.object_name}[agree_customs][]", k))).html_safe %> + <% end %> + <%= f.hidden_field :use_default, :value => false %> + <% else %> + <% ask_setting.custom_fields.each do |k,v| %> + <%= custom_field_block_for_ask(k,v).html_safe %> + <% end %> <% end %> diff --git a/app/views/admin/asks/_default_ask_setting.html.erb b/app/views/admin/asks/_default_ask_setting.html.erb index 2f0c17a..a3ded9e 100644 --- a/app/views/admin/asks/_default_ask_setting.html.erb +++ b/app/views/admin/asks/_default_ask_setting.html.erb @@ -3,11 +3,16 @@ <%= render :partial => 'show_default_ask_setting' %>
- <%= form_for @default_ask_setting, method: 'post',url: @url,html: { class: 'form-horizontal main-forms previewable' } do |f| %> + <%= form_for @default_ask_setting, method: 'post',url: @url,html: { class: 'form-horizontal main-forms previewable fix_diabled_form' } do |f| %> <% f.object_name = 'ask_category_setting' %> <%= hidden_field_tag "not_clone_attrs", true , :class=> 'not_clone_attrs' %> <%= hidden_field_tag "category_id", @first_category_id , :class=> 'hidden_category_id' %> - <%= render partial: 'ask_setting',locals:{ask_setting: @default_ask_setting,f: f,submit_text: t('submit'), :@has_email_regex => false, :@has_switch_button => true} %> + <%= render partial: 'ask_setting',locals:{ask_setting: @default_ask_setting,f: f,submit_text: t('submit'), :@has_email_regex => false, :@has_switch_button => true, :@default_custom_fields => true } %> <% end %> +
\ No newline at end of file diff --git a/app/views/admin/asks/_index.html.erb b/app/views/admin/asks/_index.html.erb index 50a2ad4..3a97575 100644 --- a/app/views/admin/asks/_index.html.erb +++ b/app/views/admin/asks/_index.html.erb @@ -1,11 +1,180 @@ + +
+
+

<%= t(:category) %>

+ +
+
+ <% @table_fields.each do |f| %> <% tmp = f.to_s.gsub(/ask\./,'') %> - <% if true #@ask_setting.default_setting[tmp].nil? || @ask_setting.default_setting[tmp] %> - <%= thead(f) %> - <% end %> + <%= thead(f) %> + <% end %> + <% @table_ext_fields.each do |f, v| %> + <%= ask_thead(f, v['field'][I18n.locale.to_s]) %> <% end %> @@ -23,42 +192,56 @@ %> <% @askquestions.each do |b| %> - - - - - <% if @ask_setting.default_setting['name'].nil? || @ask_setting.default_setting['name'] %> - - <% end %> - <% if @ask_setting.default_setting['phone'] %> + <% is_editable = can_edit_or_delete?(b) %> + + <% @table_fields_default_fields.each do |f| %> + <% case f %> + <% when 'serial_number' %> + + <% when 'situation' %> + + <% when 'ask_category_id' %> + + <% when 'title' %> + + <% when 'name' %> + + <% when 'phone' %> - <% end %> - <% if @ask_setting.default_setting['appointment'] %> + <% when 'appointment' %> + <% when 'created_at' %> + + <% when 'ip' %> + + <% end %> + <% end %> + <% @table_ext_fields.each do |f, v| %> + <% end %> - - <% end %> @@ -67,5 +250,13 @@ <%= content_tag :div, class: "bottomnav clearfix" do content_tag :div, paginate(@askquestions), class: "pagination pagination-centered" + content_tag :div, link_to(I18n.t('ask.display_fields_setting'), backend_table_setting_admin_asks_path + (@category_id.present? ? "?category_id=#{@category_id}" : ''), :class=>'btn btn-primary' ) + link_to(t("ask.delete_selected"), "javascript:void(0)", :class=>"btn btn-danger delete_asks_btn hide", :style=>'margin-left: 0.5em;') + link_to(t("ask.batch_modify_status"), "javascript:void(0)", :class=>"btn btn-success batch_modify_status_btn hide", :style=>'margin-left: 0.5em;'), class: 'pull-right' end -%> \ No newline at end of file +%> + \ No newline at end of file diff --git a/app/views/admin/asks/backend_table_setting.html.erb b/app/views/admin/asks/backend_table_setting.html.erb new file mode 100644 index 0000000..bc2e396 --- /dev/null +++ b/app/views/admin/asks/backend_table_setting.html.erb @@ -0,0 +1,47 @@ +<% cat = Category.where(:id=>params[:category_id]).first %> +<%= form_for @ask_list_setting,method: 'post',url: @url,html: { class: 'form-horizontal main-forms prekiewable' } do |f| %> +
+

<%= t('ask.backend_table_setting') %> - <%= cat ? cat.title : t(:all) %>

+

+ <%= I18n.t("ask.default_head_for_table") %> +

+ <% tmp = AskListSetting::DefaultFields + %> + <% tmp.each do |k| %> + + + <%= f.label "default_fields_#{k}", I18n.t("ask.#{k}",default: I18n.t("mongoid.attributes.ask_question.#{k}")) %> + + + <%= f.check_box :default_fields, {:checked=> @ask_list_setting.default_fields.include?(k), :multiple=> true}, k, nil %> + <%= f.label "default_fields_#{k}", I18n.t(:enable), {:style=> 'display: inline-block'} %> + + + <% end %> + <% @ask_list_setting.custom_fields_list.each do |title, data| %> +

+ <%= title %> +

+ <% data.each do |k,name| %> + + + <%= f.label "custom_fields#{k}", name %> + + + <%= f.check_box :custom_fields, {:checked=> @ask_list_setting.custom_fields.include?(k), :multiple=> true}, k, nil %> + <%= f.label "custom_fields_#{k}", I18n.t(:enable), {:style=> 'display: inline-block'} %> + + + <% end %> + <% end %> + <%= hidden_field_tag :id, @ask_list_setting.id %> + + <%= f.submit t(:submit), class: 'btn btn-primary' %> + +
+ +<% end %> \ No newline at end of file diff --git a/app/views/admin/asks/list_table_setting.html.erb b/app/views/admin/asks/list_table_setting.html.erb new file mode 100644 index 0000000..be5a851 --- /dev/null +++ b/app/views/admin/asks/list_table_setting.html.erb @@ -0,0 +1,16 @@ +<%= form_for @ask_list_setting,method: 'post',url: @url,html: { class: 'form-horizontal main-forms previewable' } do |f| %> +
+ <% tmp = f.object.default_fields %> + <% tmp.each do |k| %> + <% f.fields_for :default_fields, tmp do |f| %> + <% f.fields_for k, tmp[k] do |f| %> + <%= f.label :key %> + <%= f.check_box :is_enabled %> + <% end %> + <% end %> + <% end %> +
+ <%= f.submit t(:submit), class: 'btn btn-primary' %> +
+
+<% end %> \ No newline at end of file diff --git a/app/views/asks/index.html.erb b/app/views/asks/index.html.erb index 1872726..63d7c67 100644 --- a/app/views/asks/index.html.erb +++ b/app/views/asks/index.html.erb @@ -53,8 +53,8 @@ width: 100%; display: inline-flex; flex-wrap: wrap; - align-items: center; - justify-content: center; + align-items: flex-start; + justify-content: flex-start; } .ask-question .ask-question-form.multi-col.form-horizontal div[data-list="fields"]{ float: left; diff --git a/ask.gemspec b/ask.gemspec index 38ce40c..09c8cf1 100644 --- a/ask.gemspec +++ b/ask.gemspec @@ -1,40 +1,22 @@ -$:.push File.expand_path("../lib", __FILE__) +# -*- encoding: utf-8 -*- +# stub: ask 0.0.1 ruby lib -# Maintain your gem's version: -require "ask/version" -bundle_update_flag = ARGV[0]=='update' || ARGV[0]=='install' -if bundle_update_flag - app_path = File.expand_path(__dir__) - template_path = ENV['PWD'] + '/app/templates' - all_template = Dir.glob(template_path+'/*/') - puts 'copying ask module' - all_template.each do |folder| - if folder.split('/')[-1] != 'mobile' - begin - system ('cp -r '+ app_path + '/modules/ ' + folder) - rescue - puts 'error copy' - end - end - end -end -#syst -# Describe your gem and declare its dependencies: Gem::Specification.new do |s| - s.name = "ask" - s.version = Ask::VERSION - s.authors = ["RulingDigital"] - s.email = ["orbit@rulingcom.com"] - s.homepage = "http://www.rulingcom.com" - s.summary = "Ask for orbit" - s.description = "Ask for orbit" - s.license = "MIT" + s.name = "ask".freeze + s.version = "0.0.1" - s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"] - s.test_files = Dir["test/**/*"] - s.metadata = { - "_require" => "#{File.expand_path("../app/models/ask_setting", __FILE__)}", - "global_hash" => "{last_ticket_key: (AskSetting.pluck(:last_ticket_key)[0].to_i rescue 0), last_serial_number: (AskSetting.pluck(:last_serial_number)[0].to_i rescue 0)}" - } - # s.add_dependency ~> "gotcha" + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.metadata = { "_require" => "/home/rulingcom/.rvm/gems/ruby-2.1.10/bundler/gems/ask-50f9c1b5f4c9/app/models/ask_setting", "global_hash" => "{last_ticket_key: (AskSetting.pluck(:last_ticket_key)[0].to_i rescue 0), last_serial_number: (AskSetting.pluck(:last_serial_number)[0].to_i rescue 0)}" } if s.respond_to? :metadata= + s.require_paths = ["lib".freeze] + s.authors = ["RulingDigital".freeze] + s.date = "2022-10-01" + s.description = "Ask for orbit".freeze + s.email = ["orbit@rulingcom.com".freeze] + s.files = ["MIT-LICENSE".freeze, "README.rdoc".freeze, "Rakefile".freeze, "app/assets/javascripts/admin/ask.js".freeze, "app/assets/javascripts/ask".freeze, "app/assets/javascripts/jquery.ui.datepicker.monthyearpicker.js".freeze, "app/assets/stylesheets/admin/ask.css".freeze, "app/assets/stylesheets/ask".freeze, "app/assets/stylesheets/ask/ask.css".freeze, "app/assets/stylesheets/custom_field.css".freeze, "app/assets/stylesheets/jquery-ui-timepicker-addon.css".freeze, "app/assets/stylesheets/yearpicker.css".freeze, "app/controllers/admin/ask_acknowledgements_controller.rb".freeze, "app/controllers/admin/ask_admins_controller.rb".freeze, "app/controllers/admin/asks_controller.rb".freeze, "app/controllers/asks_controller.rb".freeze, "app/helpers/admin/asks_helper.rb".freeze, "app/models/ask_acknowledgement.rb".freeze, "app/models/ask_admin.rb".freeze, "app/models/ask_category_print_setting.rb".freeze, "app/models/ask_category_setting.rb".freeze, "app/models/ask_category_setting_index.rb".freeze, "app/models/ask_file.rb".freeze, "app/models/ask_image.rb".freeze, "app/models/ask_print_setting.rb".freeze, "app/models/ask_question.rb".freeze, "app/models/ask_setting.rb".freeze, "app/models/ask_setting_index.rb".freeze, "app/models/ask_ticket_status.rb".freeze, "app/uploaders/ask_image_uploader.rb".freeze, "app/views/admin/ask_acknowledgements".freeze, "app/views/admin/ask_acknowledgements/index.html.erb".freeze, "app/views/admin/ask_admins".freeze, "app/views/admin/ask_admins/edit.html.erb".freeze, "app/views/admin/ask_admins/index.html.erb".freeze, "app/views/admin/asks".freeze, "app/views/admin/asks/_ask_setting.html.erb".freeze, "app/views/admin/asks/_category_print_setting.html.erb".freeze, "app/views/admin/asks/_category_setting_field.html.erb".freeze, "app/views/admin/asks/_default_ask_setting.html.erb".freeze, "app/views/admin/asks/_form.html.erb".freeze, "app/views/admin/asks/_index.html.erb".freeze, "app/views/admin/asks/_print_format_explain.html.erb".freeze, "app/views/admin/asks/_show_default_ask_setting.html.erb".freeze, "app/views/admin/asks/category_setting.html.erb".freeze, "app/views/admin/asks/edit.html.erb".freeze, "app/views/admin/asks/email.html.erb".freeze, "app/views/admin/asks/export.html.erb".freeze, "app/views/admin/asks/index.html.erb".freeze, "app/views/admin/asks/order_fields.html.erb".freeze, "app/views/admin/asks/print.html.erb".freeze, "app/views/admin/asks/print_format_explain.html.erb".freeze, "app/views/admin/asks/print_setting.html.erb".freeze, "app/views/admin/asks/setting.html.erb".freeze, "app/views/admin/asks/ticket_status.html.erb".freeze, "app/views/asks".freeze, "app/views/asks/email.html.erb".freeze, "app/views/asks/index.html.erb".freeze, "app/views/asks/published_index.erb".freeze, "app/views/asks/show.html.erb".freeze, "app/views/asks/sorry.html.erb".freeze, "app/views/asks/thank.html.erb".freeze, "app/views/layouts/back_end_with_jquery_first.html.erb".freeze, "config/locales/en.yml".freeze, "config/locales/zh_tw.yml".freeze, "config/routes.rb".freeze, "lib/ask".freeze, "lib/ask.rb".freeze, "lib/ask/engine.rb".freeze, "lib/ask/version.rb".freeze, "lib/tasks/ask_tasks.rake".freeze] + s.homepage = "http://www.rulingcom.com".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "3.0.8".freeze + s.summary = "Ask for orbit".freeze + + s.installed_by_version = "3.0.8" if s.respond_to? :installed_by_version end diff --git a/config/locales/en.yml b/config/locales/en.yml index e4f8b3a..db1a78d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2,6 +2,13 @@ en: situation: Status sex: Sex ask: + batch_modify_status: "Batch Modify Status" + delete_selected: "Delete Selected" + backend_table_setting: Backend Table Setting + ask_category_id: Category + default_head_for_table: Default Head for Table + situation: Status + display_fields_setting: Display Fields Setting go_back: "Go back" this_field_is_default_custom_fields: "This field is default custom fields(Not editable)" display_discard_fields: "Display discard fields" @@ -118,7 +125,7 @@ en: agree_usage: Agree related usage rule ask_category_id: Ask Category recaptcha: Recaptcha - sex: Sex + sex: Sex name: Name identity: Identity mail: Email diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index ff88fc0..4c5c146 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -6,6 +6,13 @@ zh_tw: errors: verification_failed: 驗證碼錯誤 ask: + batch_modify_status: "批次修改狀態" + delete_selected: "刪除所選" + backend_table_setting: 後台表格設定 + ask_category_id: 類別 + default_head_for_table: 表格預設表頭 + situation: 狀態 + display_fields_setting: 顯示欄位設定 go_back: "回上一頁" this_field_is_default_custom_fields: "此欄位為預設客製化欄位(不可修改)" display_discard_fields: "顯示捨棄的欄位" diff --git a/config/routes.rb b/config/routes.rb index 91ef03f..6d07d58 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -54,9 +54,12 @@ Rails.application.routes.draw do namespace :admin do #backend resources :asks do collection do + delete 'delete' + post 'batch_modify_status' get ':id/print', to: 'asks#print' get 'export' get 'setting' + get 'backend_table_setting' get 'category_setting' post 'get_category_setting_field' post 'category_setting_save' @@ -73,6 +76,7 @@ Rails.application.routes.draw do delete 'delete_ticket_status' post 'print_setting_save' post 'setting_save' + post 'ask_list_setting_save' post 'get_new_setting_index' post 'get_new_category_setting_index' post 'export', to: 'asks#do_export' diff --git a/lib/ask/engine.rb b/lib/ask/engine.rb index 20df664..0130022 100644 --- a/lib/ask/engine.rb +++ b/lib/ask/engine.rb @@ -26,6 +26,7 @@ module Ask end begin require File.expand_path('../../../app/models/ask_setting', __FILE__) + require File.expand_path('../../../app/models/ask_list_setting', __FILE__) require File.expand_path('../../../app/models/ask_category_setting', __FILE__) require File.expand_path('../../../app/models/ask_setting_index', __FILE__) if defined?(AskSetting) @@ -41,6 +42,16 @@ module Ask AskCategorySetting.all.update_all(email_regex_enable: ask_setting.email_regex_enable,email_regex: ask_setting.email_regex) end end + if defined?(AskListSetting) + ask_list_setting = AskListSetting.first + if ask_list_setting.nil? + ask_list_setting = AskListSetting.create() + elsif AskListSetting.count > 1 + AskListSetting.where(:category_id=>nil)[1..-1].each do |a| + a.destroy + end + end + end if defined?(AskSettingIndex) if AskSettingIndex.first.nil? AskSettingIndex.create() @@ -139,6 +150,7 @@ module Ask :priority=>10, :active_for_action=>{'admin/asks'=>'exports'}, :available_for => 'managers' + # context_link 'new_', # :link_path=>"new_admin_ask_path" , # :priority=>2, diff --git a/modules/ask/_ask_widget_form.html.erb b/modules/ask/_ask_widget_form.html.erb index 957310f..539e507 100644 --- a/modules/ask/_ask_widget_form.html.erb +++ b/modules/ask/_ask_widget_form.html.erb @@ -10,7 +10,7 @@ flex-wrap: wrap; display: flex; width: 100%; - align-items: center; + align-items: flex-start; } .ask-question .controls > *{ display: block; @@ -28,7 +28,7 @@ .ask-question .form-horizontal .control-group .controls{ margin: 0; display: inline-flex; - align-items: center; + align-items: flex-start; overflow: hidden; position: relative; min-width: 10em; @@ -36,7 +36,7 @@ padding-left: 0; width: 100%; padding: 0.5em; - justify-content: center; + justify-content: flex-start; } .ask-question .form-horizontal input[type="text"],.ask-question .form-horizontal select{ width: 97%;
<%= b.get_serial_number(last_serial_number, display_length) %> - <%= situation_trans[b.situation] %> - - <%= b.category.title rescue 'category not set' %> -
- -
-
- <% if b.situation == 'is_published' %> - <%= link_to b.title,((Page.where(:module=>'ask').first.url+"?item=#{b.id}") rescue "javascript:alert('#{t('ask.no_index_page')}')") %> - <% else %> - <%= b.title %> - <% end %> - - <%= b.name %> - <% if is_editable %><% end %><%= b.get_serial_number(last_serial_number, display_length) %> + <%= situation_trans[b.situation] %> + + <%= b.category.title rescue 'category not set' %> +
+ +
+
+ <% if b.situation == 'is_published' %> + <%= link_to b.title,((Page.where(:module=>'ask').first.url+"?item=#{b.id}") rescue "javascript:alert('#{t('ask.no_index_page')}')") %> + <% else %> + <%= b.title %> + <% end %> + + <%= b.name %> + <%= b.phone %><%= b.appointment.strftime("%Y-%m-%d %H:%M") rescue nil %><%= b.created_at.strftime("%Y-%m-%d %H:%M") rescue nil %><%= b.ip %> + <%= show_on_front(f,v,b.custom_values[f],true) %> + <%= b.created_at.strftime("%Y-%m-%d %H:%M") rescue nil %><%= b.ip %>