pairwise_plugin_profile_controller.rb
4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
class PairwisePluginProfileController < ProfileController
append_view_path File.join(File.dirname(__FILE__) + '/../../views')
def prompt
prompt_id = params[:prompt_id]
@pairwise_content = find_content(params)
embeded = params.has_key?("embeded")
source = params[:source]
locals = {:source => source, :pairwise_content => @pairwise_content, :embeded => embeded, :source => source, :prompt_id => prompt_id }
if embeded
render 'content_viewer/prompt', :layout => "embeded", :locals => locals
else
render 'content_viewer/prompt', :locals => locals
end
end
#FIXME reuse
def load_prompt
@pairwise_content = find_content(params)
if request.xhr?
render 'content_viewer/load_prompt.rjs'
else
redirect_to after_action_url
end
end
def choose
@pairwise_content = find_content(params)
vote = @pairwise_content.vote_to(params[:prompt_id], params[:direction], user_identifier, params[:appearance_id])
if request.xhr?
render 'content_viewer/load_prompt.rjs'
else
redirect_to after_action_url
end
end
def skip_prompt
raise _('Invalid request') unless params.has_key?('prompt_id')
raise _('Invalid request') unless params.has_key?('appearance_id')
@pairwise_content = find_content(params)
reason = params[:reason]
skip = @pairwise_content.skip_prompt(params[:prompt_id], user_identifier, params[:appearance_id], reason)
if request.xhr?
render 'content_viewer/load_prompt.rjs'
else
redirect_to after_action_url
end
end
def result
@embeded = params.has_key?("embeded")
@page = @pairwise_content = find_content(params)
if request.xhr?
render 'content_viewer/load_result.rjs'
else
render 'pairwise_plugin_profile/result'
end
end
def prompt_tab
@embeded = params.has_key?("embeded")
@pairwise_content = find_content(params)
render 'content_viewer/prompt_tab', :locals => {:pairwise_content => @pairwise_content}
end
def suggest_idea
flash_target = request.xhr? ? flash.now : flash
if user.nil?
flash_target[:error] = _("Only logged user could suggest new ideas")
else
@page = @pairwise_content = find_content(params)
@embeded = params.has_key?("embeded")
@source = params[:source]
begin
if @page.add_new_idea(params[:idea][:text], user_identifier)
flash_target[:notice] = _("Thanks for your contributtion!")
else
if(@page.allow_new_ideas?)
flash_target[:error] = _("Unfortunatelly, we are not able to register your idea.")
else
flash_target[:notice] = _("Unfortunatelly, new ideas are not allowed anymore.")
end
end
rescue Exception => e
flash_target[:error] = _(e.message)
end
end
if request.xhr?
render 'suggestion_form'
else
redirect_to after_action_url
end
end
protected
def find_content(params)
@pairwise_content ||= profile.articles.find(params[:id])
end
def after_action_url(prompt_id = nil)
if params.has_key?("embeded")
redirect_target = {
:controller => :pairwise_plugin_profile,
:action => 'prompt',
:id => find_content(params).id,
:question_id => find_content(params).pairwise_question_id,
:prompt_id => params[:prompt_id],
:embeded => 1
}
if params.has_key?("source")
redirect_target.merge!(:source => params[:source])
end
redirect_target
else
find_content(params).url
end
end
def is_external_vote
params.has_key?("source") && !params[:source].empty?
end
def external_source
params[:source]
end
def user_identifier
if user.nil?
is_external_vote ? "#{external_source}-#{request.session_options[:id]}" : "participa-#{request.session_options[:id]}"
else
user.identifier
end
end
def process_error_message message
message
end
def redirect_to_error_page(message)
message = URI.escape(CGI.escape(process_error_message(message)),'.')
redirect_to "/profile/#{profile.identifier}/plugin/pairwise/error_page?message=#{message}"
end
end