Class: Decidim::TimeTracker::AssigneeQuestionnaireController
- Inherits:
-
ApplicationController
- Object
- Components::BaseController
- ApplicationController
- Decidim::TimeTracker::AssigneeQuestionnaireController
- Includes:
- Forms::Concerns::HasQuestionnaire
- Defined in:
- app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb
Instance Method Summary collapse
- #after_answer_path ⇒ Object
-
#allow_answers? ⇒ Boolean
only allows answers if not in preview mode.
-
#answer ⇒ Object
overwrite this method to automatically accept TOS.
- #form_path ⇒ Object
-
#preview ⇒ Object
only allows answers if not in preview mode.
- #questionnaire_for ⇒ Object
-
#update_url ⇒ Object
Returns the path to answer this questionnaire for normal users If the questionnaire is rendered in a preview route, then just do nothing with the responses.
- #visitor_already_answered? ⇒ Boolean
-
#visitor_can_answer? ⇒ Boolean
Override so can answer only if is an assignation can view Also admins can preview it (but not answer).
Instance Method Details
#after_answer_path ⇒ Object
75 76 77 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 75 def after_answer_path Decidim::EngineRouter.main_proxy(current_component).root_path end |
#allow_answers? ⇒ Boolean
only allows answers if not in preview mode
43 44 45 46 47 48 49 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 43 def allow_answers? return false if current_user.blank? return true if params[:action] == "preview" && current_user.admin? current_component.published? end |
#answer ⇒ Object
overwrite this method to automatically accept TOS
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 17 def answer :answer, :questionnaire @form = form(Decidim::Forms::QuestionnaireForm).from_params(params, session_token: session_token, ip_hash: ip_hash) Decidim::Forms::AnswerQuestionnaire.call(@form, current_user, questionnaire) do on(:ok) do # i18n-tasks-use t("decidim.forms.questionnaires.answer.success") TosAcceptance.create!(assignee: Assignee.for(current_user), time_tracker: time_tracker) flash[:notice] = I18n.t("answer.success", scope: i18n_flashes_scope) redirect_to after_answer_path end on(:invalid) do # i18n-tasks-use t("decidim.forms.questionnaires.answer.invalid") flash.now[:alert] = I18n.t("answer.invalid", scope: i18n_flashes_scope) render template: "decidim/forms/questionnaires/show" end end end |
#form_path ⇒ Object
71 72 73 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 71 def form_path assignee_questionnaire_path end |
#preview ⇒ Object
only allows answers if not in preview mode
9 10 11 12 13 14 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 9 def preview return show if request.method == "GET" flash[":alert"] = I18n.t("questionnaire_in_preview_mode", scope: "decidim.time_tracker.time_tracker") redirect_to preview_assignee_questionnaire_path end |
#questionnaire_for ⇒ Object
38 39 40 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 38 def questionnaire_for time_tracker.assignee_data end |
#update_url ⇒ Object
Returns the path to answer this questionnaire for normal users If the questionnaire is rendered in a preview route, then just do nothing with the responses
65 66 67 68 69 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 65 def update_url return preview_assignee_questionnaire_path if params[:action] == "preview" answer_assignee_questionnaire_path end |
#visitor_already_answered? ⇒ Boolean
57 58 59 60 61 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 57 def visitor_already_answered? return false if params[:action] == "preview" && current_user.admin? questionnaire.answered_by?(current_user) end |
#visitor_can_answer? ⇒ Boolean
Override so can answer only if is an assignation can view Also admins can preview it (but not answer)
53 54 55 |
# File 'app/controllers/decidim/time_tracker/assignee_questionnaire_controller.rb', line 53 def visitor_can_answer? current_user.present? end |