ikuseiGmbH/smart-village-app-cms

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

Summary

Maintainability
Test Coverage
<%= fields_for :news_item, news_item do |f| %>
  <%= hidden_field_tag "news_item[id]", f.object.id if f.object.id.present? %>

  <!-- NOTE: Wird erstmal nicht benötigt
    <div class="row">
      <div class="col">
        <div class="form-group">
          <label for="description">Hauptüberschrift *</label>
          <%= f.text_field :title, class: "form-control" %>
        </div>
      </div>
    </div>
  -->

  <!-- NOTE: Wird erstmal nicht benötigt
    <div class="row">
      <div class="col">
        <div class="form-group">
          <label for="description">Autor*in</label>
          <%= f.text_field :author, class: "form-control" %>
        </div>
      </div>
    </div>
  -->

  <!-- NOTE: Wird erstmal nicht benötigt
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
          <label for="description">gewünschtes Veröffentlichungsdatum</label>
          <%= f.date_field :publication_date, class: "form-control", value: f.object.publication_date %>
        </div>
      </div>
  -->

  <%= hidden_field_tag "news_item[publication_date]", Time.now %>

  <!-- NOTE: Wird erstmal nicht benötigt
      <div class="col-lg-6">
        <div class="form-group">
          <label for="description">Veröffentlichungsdatum</label>
          <%= f.date_field :published_at, class: "form-control", value: f.object.published_at %>
        </div>
      </div>
    </div>
  -->

  <%= hidden_field_tag "news_item[published_at]", Time.now %>

  <div class="row">
    <div class="col">
      <h2 class="d-sm-flex align-items-center justify-content-between my-4">
        Kategorien
      </h2>
      <p>
        Jede Nachricht muss in einer oder mehreren Kategorien abgelegt werden.
      <p>
      <p>
        In der mobilen App wird hauptsächlich zwischen Nachrichten und Informationen unterschieden.
      </p>

      <%= render partial: "shared/partials/categories_form", locals: { record: news_item, record_type: "news_item", form: f, tag_filter: "news_item" } %>

      <%= link_to "#", class: "btn btn-sm btn-secondary", id: "nested-add-category" do %>
        <i class="fas fa-plus text-white mr-2"></i>
        Kategorie hinzufügen
      <% end %>
    </div>
  </div>

  <hr />

  <div class="row">
    <div class="col">
      <h2 class="d-sm-flex align-items-center justify-content-between my-4">
        Bereiche
      </h2>
      <p>
        Jede Nachricht kann aus einem oder mehreren Bereichen bestehen - so wie ein Buch aus verschiedenen Kapiteln besteht.
        Jeder Bereich kann eine Überschrift, einen Text und Bilder oder Video-/Audio-Elemente haben. Dabei sind all diese
        Elemente optional und müssen nicht in jedem Bereich enthalten sein. So können Sie aus den Zusammenspiel von mehreren Bereichen
        mit unterschiedlichen Inhaltsarten interessante und abwechslungreiche Texte erstellen.
      <p>
      <p>
        In der mobilen App wird aus einem Bereich erst der Titel mit eventueller Einleitung,
        dann die Bilder und dann der Text ausgespielt. Video- und Audio-Elemente werden als
        letztes nach dem Text erscheinen.
      </p>

      <%= render partial: "shared/partials/content_blocks_form", locals: { record: news_item, form: f } %>

      <%= link_to "#", class: "btn btn-sm btn-secondary", id: "nested-add-content-block" do %>
        <i class="fas fa-plus text-white mr-2"></i>
        Bereich hinzufügen
      <% end %>
    </div>
  </div>

  <!-- Wird erstmal nicht benötigt
    <div class="row">
      <div class="col">
        <h2 class="d-sm-flex align-items-center justify-content-between mb-4">
          Adresse
        </h2>
      </div>
    </div>
  -->

  <%#= f.fields_for :address do |fadd| %>
    <%#= render partial: "shared/partials/address_form", locals: { form: fadd, address: @news_item.address } %>
  <%# end %>

  <%= render partial: "shared/partials/web_url_form", locals: { record: news_item, record_type: "news_item", form: f, headline: "Quelle" } %>

  <% if visible_in_role?("role_push_notification") %>
    <div class="row">
      <div class="col-12">
        <h2 class="d-sm-flex align-items-center justify-content-between my-4">
          Push-Notification
        </h2>
        <p>
          Nach dem Erstellen dieser Nachricht kann eine Push-Notification an alle registrierten Geräte gesendet werden, mit dem Hinweis auf diese Nachricht.
          Aktivieren Sie dazu vor dem Speichern das folgende Kontrollkästchen.
          Bitte nutzen Sie diese Funktion sparsam, um die Aufmerksamkeit der Kunden nicht zu sehr zu beanspruchen.
        <p>
      </div>

      <div class="col-12">
        <div class="form-group">
          <%= check_box_tag "news_item[push_notification]", true, false %>
          <label for="news_item_push_notification">sende eine Push-Notification</label>
        </div>
      </div>

      <div class="col-12">
        <div class="alert alert-danger" role="alert">
          Nachdem für diese Nachricht Push-Notifications verschickt wurden, kann die Nachricht nicht mehr bearbeitet werden.
          Bitte überprüfen Sie im Vorfeld, ob alle Angaben vollständig und korrekt sind.
        </div>
      </div>
    </div>
  <% end %>

  <div class="row justify-content-center pb-4">
    <%= f.submit "Speichern", class: "btn btn-primary btn--big" %>
  </div>
<% end %>

<script>
  var pushNotificationCheckBox = document.getElementById('news_item_push_notification');
  var formSubmitButton = document.querySelector('input[type="submit"]');

  if (pushNotificationCheckBox) {
    pushNotificationCheckBox.addEventListener('change', function() {
      if (this.checked) {
        formSubmitButton.dataset.confirm = 'Sind Sie sicher, dass Sie die Bearbeitung abschließen und Push-Notifications versenden wollen?';
      } else {
        delete formSubmitButton.dataset.confirm;
      }
    });
  }
</script>