class Decidim::Meetings::Admin::MeetingsPollController
def after_update_url
def after_update_url edit_meeting_poll_path(meeting_id: meeting.id) end
def answer_options
def answer_options respond_to do |format| format.json do question_id = params["id"] question = Decidim::Meetings::Question.find_by(id: question_id) render json: question.answer_options.map { |answer_option| AnswerOptionPresenter.new(answer_option).as_json } if question.present? end end end
def answer_options_url(params)
Returns the url to get the answer options json (for the display conditions form)
def answer_options_url(params) url_for([questionnaire.questionnaire_for, { action: :answer_options, format: :json, **params }]) end
def blank_answer_option
def blank_answer_option @blank_answer_option ||= Decidim::Meetings::Admin::AnswerOptionForm.new end
def blank_question
def blank_question @blank_question ||= Decidim::Meetings::Admin::QuestionForm.new end
def edit
def edit enforce_permission_to :update, :poll, meeting: meeting, poll: poll @form = form(Admin::QuestionnaireForm).from_model(questionnaire) render template: "decidim/meetings/admin/poll/edit" end
def edit_questionnaire_title
Implement this method in your controller to set the title
def edit_questionnaire_title t(:title, scope: "decidim.meetings.admin.meetings_poll.form", questionnaire_for: translated_attribute(meeting.try(:title))) end
def meeting
def meeting @meeting ||= Meeting.where(component: current_component).find(params[:meeting_id]) end
def poll
def poll @poll ||= Poll.find_or_initialize_by(meeting: meeting) end
def question_types
def question_types @question_types ||= Decidim::Meetings::Poll::QUESTION_TYPES.map do |question_type| [question_type, I18n.t("decidim.forms.question_types.#{question_type}")] end end
def questionnaire
def questionnaire @questionnaire ||= Decidim::Meetings::Questionnaire.find_or_initialize_by(questionnaire_for: questionnaire_for) end
def questionnaire_for
def questionnaire_for poll end
def update
def update enforce_permission_to :update, :poll, meeting: meeting, poll: poll @form = form(Admin::QuestionnaireForm).from_params(params) Admin::UpdateQuestionnaire.call(@form, questionnaire) do on(:ok) do # i18n-tasks-use t("decidim.forms.admin.questionnaires.update.success") flash[:notice] = I18n.t("update.success", scope: "decidim.meetings.admin.meetings_poll") redirect_to after_update_url end on(:invalid) do # i18n-tasks-use t("decidim.forms.admin.questionnaires.update.invalid") flash.now[:alert] = I18n.t("update.invalid", scope: "decidim.meetings.admin.meetings_poll") render template: "decidim/meetings/admin/poll/edit" end end end
def update_url
def update_url meeting_poll_path(meeting_id: meeting.id) end