| 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