diff --git a/app/controllers/taskbar_controller.rb b/app/controllers/taskbar_controller.rb new file mode 100644 index 000000000..7f77c9030 --- /dev/null +++ b/app/controllers/taskbar_controller.rb @@ -0,0 +1,56 @@ +class TaskbarController < ApplicationController + before_filter :authentication_check + + def index + + current_user_tasks = Taskbar.where(:user_id=>current_user.id) + model_index_render_result(current_user_tasks) + + end + + def show + taskbar = Taskbar.find(params[:id]) + + if taskbar.user_id != current_user.id + render :json => { :error => 'Not allowed to show this task.' }, :status => :unprocessable_entity + return + end + + model_show_render_item(taskbar) + end + + def create + + params[:user_id] = current_user.id + model_create_render(taskbar,params) + + end + + def update + params[:user_id] = current_user.id + taskbar = Taskbar.find(params[:id]) + + if taskbar.user_id != current_user.id + render :json => { :error => 'Not allowed to update this task.' }, :status => :unprocessable_entity + return + end + + model_update_render_item(taskbar, params) + + end + + def destroy + + params[:user_id] = current_user.id + taskbar = Taskbar.find(params[:id]) + + if taskbar.user_id != current_user.id + render :json => { :error => 'Not allowed to delete this task.' }, :status => :unprocessable_entity + return + end + + model_destory_render_item(taskbar) + taskbar.destroy + + end +end diff --git a/app/models/taskbar.rb b/app/models/taskbar.rb new file mode 100644 index 000000000..e0c4226c6 --- /dev/null +++ b/app/models/taskbar.rb @@ -0,0 +1,11 @@ +class Taskbar < ApplicationModel + +store :state, :params +before_create :update_time +before_update :update_time + +private + def update_last_contact + self.last_contact = Time.now + end +end \ No newline at end of file diff --git a/config/routes/taskbar.rb b/config/routes/taskbar.rb new file mode 100644 index 000000000..c965055ec --- /dev/null +++ b/config/routes/taskbar.rb @@ -0,0 +1,10 @@ +module ExtraRoutes + def add(map) + map.match '/api/taskbar', :to => 'taskbar#index', :via => :get + map.match '/api/taskbar/:id', :to => 'taskbar#show', :via => :get + map.match '/api/taskbar', :to => 'taskbar#create', :via => :post + map.match '/api/taskbar/:id', :to => 'taskbar#update', :via => :put + map.match '/api/taskbar/:id', :to => 'taskbar#destroy', :via => :delete + end + module_function :add +end diff --git a/db/migrate/20130529124443_task_manager_states.rb b/db/migrate/20130529124443_task_manager_states.rb new file mode 100644 index 000000000..994bfe34c --- /dev/null +++ b/db/migrate/20130529124443_task_manager_states.rb @@ -0,0 +1,17 @@ +class TaskManagerStates < ActiveRecord::Migration + def up + create_table :taskbars do |t| + t.column :user_id, :integer, :null => false + t.column :last_contact, :datetime, :null => false + t.column :client_id, :string, :null => false + t.column :state, :string, :limit => 8000,:null => true + t.column :params, :string, :limit => 2000,:null => true + t.timestamps + end + + end + + def down + drop_table :taskbars + end +end