X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/465cb9225cce74600349239a295b1360ce2b0fa6..443f3228eb4c56849f77ae9c421dd1cc6fdbc5f1:/apps/workbench/app/controllers/application_controller.rb diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb index db3d43040c..5d8f1d8e1d 100644 --- a/apps/workbench/app/controllers/application_controller.rb +++ b/apps/workbench/app/controllers/application_controller.rb @@ -94,6 +94,7 @@ class ApplicationController < ActionController::Base # Fall back to the default-setting code later. end end + @starred_projects ||= [] @my_project_tree ||= [] @shared_project_tree ||= [] render_error(err_opts) @@ -444,6 +445,41 @@ class ApplicationController < ActionController::Base end end + def star + links = Link.where(tail_uuid: current_user.uuid, + head_uuid: @object.uuid, + link_class: 'star') + + if params['status'] == 'create' + # create 'star' link if one does not already exist + if !links.andand.any? + dst = Link.new(owner_uuid: @object.uuid, + tail_uuid: current_user.uuid, + head_uuid: @object.uuid, + link_class: 'star', + name: @object.uuid) + dst.save! + end + else # delete any existing 'star' links + if links.andand.any? + links.each do |link| + link.destroy + end + end + end + + show + end + + helper_method :is_starred + def is_starred + links = Link.where(tail_uuid: current_user.uuid, + head_uuid: @object.uuid, + link_class: 'star') + + return links.andand.any? + end + protected helper_method :strip_token_from_path @@ -833,6 +869,17 @@ class ApplicationController < ActionController::Base {collections: c, owners: own} end + helper_method :my_starred_projects + def my_starred_projects + return if @starred_projects + links = Link.filter([['tail_uuid', '=', current_user.uuid], + ['link_class', '=', 'star'], + ['head_uuid', 'is_a', 'arvados#group']]).select(%w(head_uuid)) + uuids =links.collect { |x| x.head_uuid } + starred_projects = Group.filter([['uuid', 'in', uuids]]).order('name') + @starred_projects = starred_projects.results + end + helper_method :my_project_tree def my_project_tree build_project_trees