From a70110f787560e128df473603f87cfdba6ec9119 Mon Sep 17 00:00:00 2001 From: Fu Matthew Date: Thu, 3 Jan 2013 19:38:14 +0800 Subject: [PATCH] make default widget works without init --- app/controllers/default_widget_controller.rb | 45 ++++++++++++++++++++ app/models/module_app.rb | 6 +++ app/views/default_widget/typeA.html.erb | 19 +++++++++ app/views/default_widget/typeB.html.erb | 22 ++++++++++ app/views/default_widget/typeC.html.erb | 15 +++++++ config/routes.rb | 3 +- lib/tasks/migrate.rake | 6 +++ 7 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 app/controllers/default_widget_controller.rb create mode 100644 app/views/default_widget/typeA.html.erb create mode 100644 app/views/default_widget/typeB.html.erb create mode 100644 app/views/default_widget/typeC.html.erb diff --git a/app/controllers/default_widget_controller.rb b/app/controllers/default_widget_controller.rb new file mode 100644 index 00000000..77887e8e --- /dev/null +++ b/app/controllers/default_widget_controller.rb @@ -0,0 +1,45 @@ +class DefaultWidgetController< OrbitWidgetController + + def front_end_available(var) + @page_part = PagePart.find params[:part_id] + @page_part.module_app.enable_frontend? + end + + def default_widget + @tag_class = nil + + @default_widget = @page_part.module_app.get_default_widget + @widget_image_field = @default_widget[:image] + data_limit = @page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3) + @data = eval(@default_widget[:query]).limit(data_limit).includes(@widget_image_field) + @fields = @page_part.widget_field + +# binding.pry + + case params[:type] + when "typeA" + @tag_class = 'defulat_widget_typeA' + render "typeA" + when /typeB_/ + @tag_class = "defulat_widget_#{params[:type]}" + render "typeB" + when "typeC" + @tag_class = 'defulat_widget_typeC' + render "typeC" + end + + + + # {"inner"=>"true", + # "category_id"=>"false", + # "tag_id"=>"", + # "page"=>"", + # "search_query"=>"", + # "part_title"=>"", + # "part_id"=>"50ac426f83e75219d20000a7", + # "controller"=>"default_widget", + # "action"=>"default_widget", + # "type"=>"typeA"} + end + +end diff --git a/app/models/module_app.rb b/app/models/module_app.rb index 50a6c268..b3eb4f1b 100644 --- a/app/models/module_app.rb +++ b/app/models/module_app.rb @@ -30,6 +30,12 @@ class ModuleApp before_save :set_key + #>>>>>>>>>>>>> remove after app config applied + def get_default_widget + {:query=>'Bulletin.all',:image=>nil} + end + #<<<<<<<<<<<< + def is_manager?(user) managing_users.include?(user) end diff --git a/app/views/default_widget/typeA.html.erb b/app/views/default_widget/typeA.html.erb new file mode 100644 index 00000000..22422516 --- /dev/null +++ b/app/views/default_widget/typeA.html.erb @@ -0,0 +1,19 @@ +<%= content_tag :div,:class=>@tag_class do%> +
+ + + + <% @fields.each do |field|%> + + <% end %> + + + <% @data.each do |row_data| %> + + <% @fields.each do |field|%> + + <% end %> + + <% end %> +
<%= content_tag(:span,field[0],:class=>field[1])%>
<%= content_tag(:span,row_data.send(field[0]),:class=>field[1])%>
+ <% end %> diff --git a/app/views/default_widget/typeB.html.erb b/app/views/default_widget/typeB.html.erb new file mode 100644 index 00000000..8c3cc34e --- /dev/null +++ b/app/views/default_widget/typeB.html.erb @@ -0,0 +1,22 @@ +<%= content_tag :div,:class=>@tag_class do%> + +
more
+ <% end %> diff --git a/app/views/default_widget/typeC.html.erb b/app/views/default_widget/typeC.html.erb new file mode 100644 index 00000000..4fceefc3 --- /dev/null +++ b/app/views/default_widget/typeC.html.erb @@ -0,0 +1,15 @@ +<%= content_tag :div,:class=>@tag_class do%> +
+ <%= image_tag @data.first.send(@widget_image_field)%> +
+ +
more
+ <% end %> diff --git a/config/routes.rb b/config/routes.rb index 2c52f6ec..f97f4ae7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -241,7 +241,8 @@ Orbit::Application.routes.draw do match 'show_sitemap' => 'front#show_sitemap', :as => :front_show_sitemap end - + match '/panel/orbit_app/widget/:type' => 'default_widget#default_widget' + match '/panel/:app_name/front_end/:app_action/:id(/:controller_action)' => 'pages#show_from_link', :constraints => lambda { |request| !request.query_string.include?("inner=true") } diff --git a/lib/tasks/migrate.rake b/lib/tasks/migrate.rake index 74d1f53a..e8032542 100644 --- a/lib/tasks/migrate.rake +++ b/lib/tasks/migrate.rake @@ -350,4 +350,10 @@ namespace :migrate do ModuleApp.new.from_json(File.open("#{Rails.root}/vendor/built_in_modules/gallery/gallery.json").read).save end + task :make_default_widget_work_config => :environment do + a = ModuleApp.where(:key=>'announcement').first + a.widgets[:default_widget] = ['typeA','typeC','typeB_style2','typeB_style3','typeB_style4'] + a.widget_fields = ["title","bulletin_category","postdate"] + a.save + end end