SumOfUs/Champaign

View on GitHub
app/views/pages/_campaigner_overlay.slim

Summary

Maintainability
Test Coverage
- if user_signed_in? && page.present?
  section role="contentinfo"
    .campaigner-overlay.mobile-hide class="#{page.published? ? 'campaigner-overlay--active no-print' : 'campaigner-overlay--inactive no-print'}" data-status="#{page.published? ? 'active' : 'inactive'}"
      .campaigner-overlay__close.fa.fa-close
      .campaigner-overlay__status.campaigner-overlay__info--active
        | Published
      .campaigner-overlay__status.campaigner-overlay__info--inactive
        | Not published
      .campaigner-overlay__message.campaigner-overlay__info--active
        | Anyone with the link can view.
      .campaigner-overlay__message.campaigner-overlay__info--inactive
        | Only campaigners can view.
      .campaigner-overlay__actions
        = form_for page, url: api_page_path(page), remote: true do |ff|
          / we have nested page[page][active] to match the massive nested form submitted with the one-form
          = ff.fields_for :page do |f|
            = f.hidden_field :publish_status, class: 'campaigner-overlay__publish-field', value: page.published? ? "unpublished" : "published"
            = f.submit "Publish", class: 'campaigner-overlay__toggle-publish campaigner-overlay__info--inactive'
            = f.submit "Unpublish", class: 'campaigner-overlay__toggle-publish campaigner-overlay__info--active', 'data-confirm' => "Are you sure you want to unpublish this page? It will become inaccessible except to logged-in campaigners."
        .campaigner-overlay__copy-url-link
          | Copy URL
        span.campaigner-overlay__copy-url-copied
          = "Copied!"
        = link_to 'Edit', edit_page_path(page), class: 'campaigner-overlay__edit-link'

  javascript:
    $(document).ready(function(){
      window.champaign.myCampaignerOverlay = new window.champaign.CampaignerOverlay();
      $('.campaigner-overlay__copy-url-link').on('click', function(e){
        const url = 'https://actions.sumofus.org/a/' + '#{@page.slug}';
             navigator.clipboard.writeText(url);

            // Hide the copy link text and show the copied! span
            $('.campaigner-overlay__copy-url-link').fadeOut(100, () => {
              $('.campaigner-overlay__copy-url-copied').show();
            });
            setTimeout(() => {
                $('.campaigner-overlay__copy-url-copied').fadeOut(100, () => {
                $('.campaigner-overlay__copy-url-link').fadeIn(200);
              });
            }, 3500);
    })
    });