lujanfernaud/prevy

View on GitHub
app/views/events/_form.html.erb

Summary

Maintainability
Test Coverage
<%= form_for [group, event], html: { multipart: true } do |f| %>
  <%= render "error_messages", object: event %>

  <div class="form-group box p-4 mt-2rem mb-2rem">
    <h3 class="mb-4">1. Event info</h3>

    <div class="form-group">
      <%= f.label :title %>
      <small class="text-muted">Required *</small>
      <%= f.text_field :title, class: "form-control",
        required: true %>
    </div>

    <div class="form-group">
      <%= f.label :description %>
      <small class="text-muted">Required *</small>
      <%= f.hidden_field :description, required: true %>
      <trix-editor input="event_description" class="form-control">
      </trix-editor>
    </div>

    <div class="form-group mb-0">
      <%= f.label :website %>
      <%= f.text_field :website, placeholder: "https://www.eventwebsite.com",
      class: "form-control" %>
    </div>
  </div>

  <div class="form-group box p-4 mb-2rem">
    <h3 class="mb-4">2. Location</h3>

    <%= f.fields_for :address do |address_form| %>
      <div class="form-group">
        <%= address_form.label :place_name %>
        <%= address_form.text_field :place_name, class: "form-control" %>
      </div>

      <div class="form-group">
        <%= address_form.label :street1, "Address 1" %>
        <small class="text-muted">Required *</small>
        <%= address_form.text_field :street1, class: "form-control",
          required: true  %>
      </div>

      <div class="form-group">
        <%= address_form.label :street2, "Address 2" %>
        <%= address_form.text_field :street2, class: "form-control" %>
      </div>

      <div class="form-group">
        <%= address_form.label :city %>
        <small class="text-muted">Required *</small>
        <%= address_form.text_field :city, class: "form-control",
          required: true  %>
      </div>

      <div class="form-group">
        <%= address_form.label :state %>
        <%= address_form.text_field :state, class: "form-control" %>
      </div>

      <div class="form-group">
        <%= address_form.label :post_code %>
        <small class="text-muted">Required *</small>
        <%= address_form.text_field :post_code, class: "form-control",
          required: true  %>
      </div>

      <div class="form-group mb-0">
        <%= address_form.label :country %>
        <small class="text-muted">Required *</small>
        <%= address_form.country_select :country,
          { include_blank: true,
            selected: event.country || request.location.country_code },
          class: "form-control custom-select",
          required: true  %>
      </div>
    <% end %>
  </div>

  <div class="form-group box p-4 mb-2rem">
    <h3 class="mb-4">3. Date</h3>

    <div class="form-group event-start-date row">
      <div class="col">
        <%= f.label :start_date, class: "event-date-label" %>
        <small class="text-muted">Required *</small>
      </div>
      <div class="col-md-auto">
        <%= f.datetime_select :start_date, default: event.default_start_date,
          start_year: Time.now.year, end_year: Time.now.year + 1,
          class: "form-control custom-select",
          required: true  %>
      </div>
    </div>

    <div class="form-group row mb-0">
      <div class="col">
        <%= f.label :end_date, class: "event-date-label" %>
        <small class="text-muted">Required *</small>
      </div>
      <div class="col-md-auto">
        <%= f.datetime_select :end_date, default: event.default_end_date,
          start_year: Time.now.year, end_year: Time.now.year + 1,
          class: "form-control custom-select" %>
      </div>
    </div>
  </div>

  <div class="form-group box p-4 mb-2rem">
    <h3 class="mb-4">
      4. Image
      <small class="text-muted ml-010rem">Required *</small>
    </h3>

    <div class="form-group mb-0">
      <%= f.label :image, hidden: true %>

      <% if event.image? %>
        <%= image_tag(event.image_url,
          srcset: "#{event.image_url(:medium)} 510w, #{event.image_url(:thumb)} 350w",
          class: "img-fluid mb-2rem") %>
      <% end %>

      <%= f.file_field :image %>
      <%= f.hidden_field :image_cache %>
    </div>
  </div>

  <% if current_user == event.organizer && action_name == "edit" %>
    <div class="form-group box p-4 mb-2rem">
      <h3 class="mb-4">4. Danger zone</h3>

      <div class="form-group mb-0">
        <p class="font-italic mb-4">
          This action is not reversible.
        </p>
        <%= link_to "Delete event",
          group_event_path(group, event, user_id: current_user.id),
          data: { confirm: "Are you sure you want to delete this event?" },
            method: :delete, class: "btn btn-danger btn-lg" %>
      </div>
    </div>
  <% end %>

  <%= f.button yield(:button_text),
    class: "btn btn-primary btn-block btn-lg btn-3d mt-4 mb-4",
    data: { disable_with: "Saving... #{render 'spinner'}" } %>
<% end %>