vinc/pi.ctu.re

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

Summary

Maintainability
Test Coverage
<%= form_for(picture) do |f| %>
  <% if picture.errors.any? %>
    <div class="alert alert-danger" role="alert">
      <h4 class="alert-heading"><%= form_errors_heading(picture) %></h4>

      <ul>
        <% picture.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <% unless picture.persisted? %>
    <div class="form-group">
      <%= f.label :image %>
      <div class="custom-file">
        <%= f.file_field :image, class: 'custom-file-input', accept: 'image/jpeg' %>
        <label class="custom-file-label" for="picture_image">Choose file...</label>
      </div>
    </div>
  <% end %>

  <div class="form-group">
    <%= f.label :description %>
    <%= f.text_area :description, placeholder: 'Add a description to your picture', rows: 3, maxlength: Picture::CAPTION_LENGTH_MAX, class: "form-control #{"is-invalid" if picture.errors[:description].any?}" %>
  </div>

  <div class="form-group">
    <%= f.label :album_ids, 'Albums' %>
    <%= f.collection_select :album_ids, current_user.albums, :id, :title, { selected: picture.album_ids }, { class: 'form-control', multiple: true } %>
  </div>

  <div class="form-group">
    <%= f.label :privacy_setting %>
    <%= f.select :privacy_setting, Picture.privacy_settings.keys.to_a, {}, { class: 'custom-select' } %>
  </div>

  <% if picture.persisted? %>
    <div class="form-check form-group <%= 'd-none' unless picture.protected_setting? %>">
      <%= f.check_box :regenerate_secret, class: 'form-check-input' %>
      <%= f.label :regenerate_secret, class: 'form-check-label' %>
    </div>
  <% end %>

  <div class="">
    <% if picture.persisted? %>
      <%= link_to 'Delete', picture, method: :delete, data: { confirm: 'This picture will be deleted, are you sure?' }, class: 'btn btn-link text-danger pull-right', role: 'button' %>
    <% else %>
      <%= link_to t('.upload_many_pictures'), import_pictures_path, class: 'btn btn-link pull-right px-0', role: 'button' %>
    <% end %>

    <%= f.submit class: 'btn btn-primary', disabled: picture.new_record? && current_user.balance.negative? %>
  </div>
<% end %>