From e6917a2e37cc5ac2468729dcf59439cc99eebc62 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Mon, 2 Feb 2015 16:06:45 +0530 Subject: [PATCH] added desktop widget mechanism --- .../register_desktop_widgets_controller.rb | 43 +++++++ app/models/registered_desktop_widget.rb | 24 ++++ .../_my_registered_widgets.html.erb | 119 ++++++++++++++++++ .../register_desktop_widgets/index.html.erb | 51 ++++++++ config/locales/en.yml | 4 + config/locales/zh_tw.yml | 6 +- config/routes.rb | 2 + lib/register_modules/engine.rb | 8 +- 8 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 app/controllers/admin/register_desktop_widgets_controller.rb create mode 100644 app/models/registered_desktop_widget.rb create mode 100644 app/views/admin/register_desktop_widgets/_my_registered_widgets.html.erb create mode 100644 app/views/admin/register_desktop_widgets/index.html.erb diff --git a/app/controllers/admin/register_desktop_widgets_controller.rb b/app/controllers/admin/register_desktop_widgets_controller.rb new file mode 100644 index 0000000..5e02e7c --- /dev/null +++ b/app/controllers/admin/register_desktop_widgets_controller.rb @@ -0,0 +1,43 @@ +class Admin::RegisterDesktopWidgetsController < OrbitAdminController + def index + @table_fields = table_fields + if current_user.is_admin? + @registered_widgets = RegisteredDesktopWidget.all.desc(:created_at) + else + @registered_widgets = RegisteredDesktopWidget.where(:create_user_id => current_user.id).desc(:created_at) + end + if request.xhr? + render :partial => "my_registered_widget" + end + end + def create + rdw = RegisteredDesktopWidget.new(registered_desktop_widget_params) + rdw.create_user_id = current_user.id + rdw.save + render :json => {"success" => true}.to_json + end + def table_fields + [:widget_name_, :widget_uid, :status, :actions] + end + def update + rdw = RegisteredDesktopWidget.find(params[:id]) rescue nil + if !rdw.nil? + rdw.update_attributes(registered_desktop_widget_params) + rdw.save + end + render :json => {"success" => true}.to_json + end + def approve_widget + rdw = RegisteredDesktopWidget.find(params[:id]) rescue nil + if !rdw.nil? + rdw.approved = true + rdw.save + end + redirect_to admin_register_desktop_widgets_path(:page => params[:page]) + end + + private + def registered_desktop_widget_params + params.require(:registered_widget).permit! + end +end \ No newline at end of file diff --git a/app/models/registered_desktop_widget.rb b/app/models/registered_desktop_widget.rb new file mode 100644 index 0000000..0c97ec3 --- /dev/null +++ b/app/models/registered_desktop_widget.rb @@ -0,0 +1,24 @@ +class RegisteredDesktopWidget + include Mongoid::Document + include Mongoid::Timestamps + include OrbitCategory::Categorizable + include OrbitTag::Taggable + include Slug + + field :name, as: :slug_title, localize: true + field :widget_key + field :create_user_id, type: BSON::ObjectId + field :update_user_id, type: BSON::ObjectId + field :approved, type: Boolean, :default => false + scope :approve, ->{ where(approved: true) } + + mount_uploader :widget, TemplateUploader + mount_uploader :icon, ImageUploader + + after_create :save_widget_key + + def save_widget_key + self.widget_key = self.name.parameterize + "-" + self.uid + self.save + end +end diff --git a/app/views/admin/register_desktop_widgets/_my_registered_widgets.html.erb b/app/views/admin/register_desktop_widgets/_my_registered_widgets.html.erb new file mode 100644 index 0000000..8c9c773 --- /dev/null +++ b/app/views/admin/register_desktop_widgets/_my_registered_widgets.html.erb @@ -0,0 +1,119 @@ + + + + <% @table_fields.each_with_index do |f,i| %> + <%= thead(f) %> + <% end %> + + + + <% @registered_widgets.each do |rw| %> + + + + <% if rw.approved %> + + <% else %> + + <% end %> + + + <% end %> + +
<%= rw.name rescue "" %><%= rw.widget_key %>Approved + <% if !rw.approved && current_user.is_admin? %> + Approve + <% elsif !rw.approved && !current_user.is_admin? %> + Approval Pending + <% else %> + Approved + <% end %> + +
+ + + + +
+
+ + \ No newline at end of file diff --git a/app/views/admin/register_desktop_widgets/index.html.erb b/app/views/admin/register_desktop_widgets/index.html.erb new file mode 100644 index 0000000..3437c18 --- /dev/null +++ b/app/views/admin/register_desktop_widgets/index.html.erb @@ -0,0 +1,51 @@ +<%= javascript_include_tag 'validator' %> +<%= javascript_include_tag "plugin/jquery.form.min" %> +<%#= render_filter @filter_fields, "index_table" %> + + <%= render 'my_registered_widgets'%> + +
+ + +
+ + diff --git a/config/locales/en.yml b/config/locales/en.yml index 5179cde..6b092ef 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4,14 +4,18 @@ en: status: Status permission: Access module_name_: Module Name + widget_name_: Widget Name + widget_uid: Widget UID developed_by: Developed By actions: Actions register_module: customization_log: Customization Log + desktop_widgets: Desktop Widgets register_module: Registered Modules admin_area: Admin Area all: All new_module: Register Module + new_widget: Register Widget my: My Modules email_not_confirmed: Email not confirmed. site_permission_revoked: Site permission revoked. diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index c14caee..81023f5 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -3,17 +3,21 @@ zh_tw: admin_email: Admin Email status: Status permission: Access - module_name_: Module Name + widget_name_: Widget Name + widget_uid: Widget UID developed_by: Developed By actions: Actions register_module: customization_log: Customization Log register_module: Registered Modules + desktop_widgets: Desktop Widgets all: All my: My Modules admin_area: Admin Area new_module: Register Module + new_widget: Register Widget + email_not_confirmed: Email not confirmed. site_permission_revoked: Site permission revoked. site_active: Site Active diff --git a/config/routes.rb b/config/routes.rb index 0ef33c1..e10bf60 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -14,8 +14,10 @@ Rails.application.routes.draw do post "/admin_modules/uninstall" => "admin_modules#uninstall_module" post "/admin_modules/revoke" => "admin_modules#revoke_module" post "/admin_modules/grant" => "admin_modules#grant_module" + get "/register_desktop_widgets/approve_widget" => "register_desktop_widgets#approve_widget" resources :register_modules resources :admin_modules + resources :register_desktop_widgets end end diff --git a/lib/register_modules/engine.rb b/lib/register_modules/engine.rb index c0f954c..5fe8f9e 100644 --- a/lib/register_modules/engine.rb +++ b/lib/register_modules/engine.rb @@ -20,9 +20,15 @@ module RegisterModules :active_for_action=>{'admin/register_modules'=>"index"}, :available_for => 'users' + context_link 'register_module.desktop_widgets', + :link_path=>"admin_register_desktop_widgets_path" , + :priority=>2, + :active_for_action=>{'admin/register_desktop_widgets'=>"index"}, + :available_for => 'users' + context_link 'register_module.admin_area', :link_path=>"admin_admin_modules_path" , - :priority=>2, + :priority=>3, :active_for_action=>{'admin/admin_modules'=>"index"}, :available_for => 'managers'