module PairwisePlugin::Helpers::ViewerHelper
def choose_link(direction, pairwise_content, question, prompt, embeded = false, source = nil, appearance_id = nil)
link_target = { :controller => 'pairwise_plugin_profile',
:profile => pairwise_content.profile.identifier,
:action => 'choose', :id => pairwise_content.id, :question_id => question.id , :prompt_id => prompt.id,
:choice_id => prompt.send("#{direction}_choice_id"), :direction => direction, :appearance_id => appearance_id}
link_target.merge!(:embeded => 1) if embeded
link_target.merge!(:source => source) if source
loading_javascript = pairwise_spinner_show_function_call(pairwise_content) + pairwise_hide_skip_call(pairwise_content)
content_tag(:div, prompt.send("#{direction}_choice_text"), :class => 'choice-text') +
link_to_remote(_('Vote'), :loading => loading_javascript, :url => link_target, :html => {:class => 'vote-link'})
end
def choose_right_link(pairwise_content, question, prompt, embeded = false, source = nil, appearance_id = nil)
choose_link('right', pairwise_content, question, prompt, embeded, source, appearance_id)
end
def choose_left_link(pairwise_content, question, prompt, embeded = false, source = nil, appearance_id = nil)
choose_link('left', pairwise_content, question, prompt, embeded, source, appearance_id)
end
def skip_vote_open_function(pairwise_content)
link_to_function _('Skip vote'), "jQuery('#skip_vote_reasons_#{pairwise_content.id}').slideToggle()"
end
def skip_vote_link(pairwise_content, question, prompt, embeded = false, source = nil, appearance_id = nil, reason = nil)
link_target = {:controller => 'pairwise_plugin_profile',
:profile => pairwise_content.profile.identifier,
:action => 'skip_prompt', :id => pairwise_content.id,:question_id => question.id , :prompt_id => prompt.id,
:appearance_id => appearance_id}
link_target.merge!(:embeded => 1) if embeded
link_target.merge!(:source => source) if source
link_target.merge!(:appearance_id => appearance_id) if appearance_id
link_target.merge!(:reason => reason) if reason
link_text = reason ? reason : _('Skip vote')
if reason
loading_javascript = pairwise_spinner_show_function_call(pairwise_content) + pairwise_hide_skip_call(pairwise_content)
"
" + link_to_remote(link_text, :loading => loading_javascript, :url => link_target) + ""
else
link_to_remote(link_text, link_target)
end
end
def pairwise_spinner_id(pairwise_content)
return "pairwise_spinner#{pairwise_content.id}"
end
def pairwise_spinner(pairwise_content)
text = content_tag :h5, _('Processing... please wait.')
content_tag :div, text, :class => "spinner", :id => pairwise_spinner_id(pairwise_content)
end
def pairwise_spinner_show_function_call(pairwise_content)
pairwise_spinner_show_function_name(pairwise_content) + "();"
end
def pairwise_hide_skip_call(pairwise_content)
"jQuery('#skip_vote_reasons_#{pairwise_content.id}').hide();"
end
def pairwise_spinner_show_function_name(pairwise_content)
"jQuery('##{pairwise_spinner_id(pairwise_content)}').fadeIn"
end
def pairwise_spinner_hide_function_call(pairwise_content)
pairwise_spinner_hide_function_name(pairwise_content) + "();"
end
def pairwise_spinner_hide_function_name(pairwise_content)
"jQuery('##{pairwise_spinner_id(pairwise_content)}').fadeOut"
end
def pairwise_user_identifier(user)
if user.nil?
is_external_vote ? "#{params[:source]}-#{request.session_options[:id]}" : "participa-#{request.session_options[:id]}"
else
user.identifier
end
end
def pairwise_embeded_code(pairwise_content)
embeded_url = url_for({:controller => "pairwise_plugin_profile",
:profile => pairwise_content.profile.identifier,
:action => "prompt",
:id => pairwise_content.id,
:question_id => pairwise_content.question.id,
:embeded => 1,
:source => "SOURCE_NAME",
:only_path => false})
embeded_code = ""
label = "
"
label += content_tag :h5, _('Pairwise Embeded')
textarea = text_area_tag 'embeded_code', embeded_code, {:style => "width: 100%; background-color: #ccc; font-weight:bold", :rows => 7}
hint = content_tag :quote, _("You can put this iframe in your site. Replace source param with your site address and make any needed adjusts in width and height.")
label + textarea + hint + "
"
end
def pairwise_edit_link(label, pairwise_content)
link_target = myprofile_path(:controller => :cms, :profile => pairwise_content.profile.identifier, :action => :edit, :id => pairwise_content.id)
link_to label, link_target
end
def pairwise_result_link(label, pairwise_content, embeded = false, options = {})
link_target = pairwise_content.result_url
link_target.merge!(:embeded => 1) if embeded
link_to label, link_target, options
end
def pairwise_tab_remote_link(label, link_target, pairwise_content, embeded = false, options = {})
link_target.merge!(:embeded => 1) if embeded
loading_javascript = pairwise_spinner_show_function_call(pairwise_content) + pairwise_hide_skip_call(pairwise_content)
link_to_remote label, :loading => loading_javascript, :url => link_target, :html => options
end
def pairwise_suggestion_url(question, embeded = false, source = nil)
target = { :controller => :pairwise_plugin_profile, :profile => question.profile.identifier,:action => 'suggest_idea', :id => question.id }
target.merge!({ :embeded => 1 }) if embeded
target.merge!({ :source => source }) if source
target
end
def is_external_vote
params.has_key?("source") && !params[:source].empty?
end
def ideas_management_link(label, pairwise_content, user)
return "" unless user
return "" unless pairwise_content.allow_edit?(user)
link_to label, :controller => :pairwise_plugin_suggestions, :profile => pairwise_content.profile.identifier, :action => :index, :id => pairwise_content.id
end
def has_param_pending_choices?
params.has_key?("pending") && "1".eql?(params[:pending])
end
def has_param_reproved_choices?
params.has_key?("reproved") && "1".eql?(params[:reproved])
end
def choices_showing_text
ideas_or_suggestions_text = has_param_pending_choices? ? "Suggestions" : "Ideas"
_("Showing") + " " + ideas_or_suggestions_text
end
def pairwise_span_arrow(index)
content_tag :span, '', :class => (index == 0 ? 'active' : '')
end
def pairwise_group_row_classes(index)
index == 0 ? 'row' : 'row secondary'
end
def pairwise_group_content_body(index, pairwise_content, prompt_id = nil)
style = (index > 0) ? 'display:none' : ''
content_tag :div, :class => "pairwise_inner_body", :id => "pairwise_inner_body_#{pairwise_content.id}", :style => style do
render :partial => 'content_viewer/prompt_body',
:locals => {
:embeded => params[:embeded],
:source => params[:source],
:pairwise_content => pairwise_content,
:question => nil
}
end
end
end