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 @@
+
+
+
+
+
+ <% @registered_widgets.each do |rw| %>
+
+ <%= rw.name rescue "" %> |
+ <%= rw.widget_key %> |
+ <% if rw.approved %>
+ Approved |
+ <% else %>
+
+ <% if !rw.approved && current_user.is_admin? %>
+ Approve
+ <% elsif !rw.approved && !current_user.is_admin? %>
+ Approval Pending
+ <% else %>
+ Approved
+ <% end %>
+ |
+ <% end %>
+
+
+ |
+
+ <% 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'