Class | PortalController |
In: |
app/controllers/portal_controller.rb
|
Parent: | ApplicationController |
ポータルを制御する。
ポータルの設定画面を表示する。
# File app/controllers/portal_controller.rb, line 19 19: def config 20: setup_portal 21: @screen = @portal.screen 22: @current_panes = @screen.panes 23: @groups = PortlettableGroup.find(:all) 24: @current_view = "view_m" 25: end
ポータルレイアウトで表示する。
# File app/controllers/portal_controller.rb, line 11 11: def index 12: setup_portal 13: @screen = @portal.screen 14: @panes = @screen.panes 15: @current_view = "view_m" 16: end
ポータルのレイアウトのペインを表示する。
# File app/controllers/portal_controller.rb, line 57 57: def pane 58: unless params[:pane] 59: render :nothing => true 60: return 61: end 62: pane = params[:pane].upcase.to_sym 63: setup_portal 64: @screen = @portal.screen 65: @current_panes = @screen.panes 66: @groups = PortlettableGroup.find(:all) 67: render :partial => "pane", :locals => {:pane => pane} 68: end
ポートレットの設定画面を表示する。
# File app/controllers/portal_controller.rb, line 28 28: def portlet_config 29: setup_portal 30: @portlet = Portlet.find(params[:portlet_id]) 31: @parent_view = "view_m" 32: @current_view = "view_pconfig" 33: end
グループごとのポートレッタブルの一覧を表示する。
# File app/controllers/portal_controller.rb, line 36 36: def portlettable_members 37: setup_portal 38: unless params[:group_id] 39: render :nothing => true 40: return 41: end 42: @group = PortlettableGroup.find(params[:group_id]) 43: @members = @group.portlettable_members.reject {|m| @portal.portlets.map(&:portlettable).include?(m.portlettable)} 44: render :partial => "portlettable_members" 45: end
ポータルのレイアウトのパターンを設定する。
# File app/controllers/portal_controller.rb, line 48 48: def update_pattern 49: if params[:pattern] 50: setup_portal 51: @portal.update_pattern params[:pattern] 52: end 53: render :nothing => true 54: end
ペイン内のポートレットを配置する。
# File app/controllers/portal_controller.rb, line 71 71: def update_portlets 72: return render(:nothing => true) unless params[:pane] =~ /\A[aAbBcC]\z/ 73: 74: kept, newbie = [], [] 75: key = "portlets_#{params[:pane].downcase}".to_sym 76: if params[key] 77: params[key].each_with_index do |x, i| 78: case x 79: when /\Aportlet_([0-9]+)\z/ 80: kept[$+.to_i] = i + 1 81: when /\Aportlettable_member_([0-9]+)\z/ 82: newbie << [$+.to_i, i + 1] 83: else 84: # nothing to do 85: end 86: end 87: end 88: 89: setup_portal 90: Portal.transaction do 91: pane = @portal.pane(params[:pane]) 92: # arrange or remove current portlets 93: @portal.portlets.each do |portlet| 94: if position = kept[portlet.id] 95: portlet.position = position 96: portlet.save 97: elsif portlet.pane == pane 98: portlet.destroy 99: end 100: end 101: # add new portlets 102: newbie.each do |member_id, position| 103: member = PortlettableMember.find(member_id) 104: begin 105: Portlet.create!(:portal_id => @portal.id, 106: :pane_id => pane.id, 107: :position => position, 108: :portlettable_id => member.portlettable_id, 109: :portlettable_type => member.portlettable_type) 110: rescue ActiveRecord::ActiveRecordError 111: flash[:warning] = s_("flash|notice|It is impossible to add a duplicate portlet in your portal.") 112: raise DuplicatePortlet, "" 113: end 114: end 115: end 116: render :nothing => true 117: end