docbrown/app/views/dashboards/_dashboard_article.html.erb
Mac Siri afa73e06e3
Replace Webpacker with Esbuild (#20470)
* Migrate to esbuild WIP

* Add exclude

* Remove redundant file

* Move file

* Move to javascript_include_tag

* Lint fix

* WIP

* WIP

* Add watch mode to esbuild WIP

* Get jest working

* Remove babel

* Revert "Remove babel"

This reverts commit 6da35260aa19d6f97f586deb66c0ecaf48433b73.

* More WIP

* Got image to load

* WIP

* Resolve audit

* Lint fix

* WIP

* Fix jest spec

* [CI] Remove asset-restore for test build stage

* Production compliant

* Temp disable sourcemap

* Update glob

* Add esbuild helper to stimulus

* Import fragment

* Temp disable coverage to see failing tests

* Fix broken spec

* Address lint

* Set proper es6 target

* Use esbuild for everything

* wait what

* Revert "Set proper es6 target"

This reverts commit 98f5278093421baa8ffe2ca580845b01c1a1eadf.

* Revert "Use esbuild for everything"

This reverts commit 0ac46738f07ffcb6af095ccb1ffa5e439b7fefa3.

* Replace uglifier with terser

* New compiled assets version

* Remvoe honeybadger-io/webpack

* Remove cypress coverage checks for now

* Update jsconfig.json

* Update docker-compose

* Remove public/packs-test from ci cache
2024-01-25 20:29:21 +00:00

108 lines
5.7 KiB
Text

<div class="js-dashboard-story single-article <%= "single-article-unpublished" unless article.published %> <%= "single-article-archived hidden" if article.archived %>">
<div class="dashboard-collection-org-details">
<% if article.organization_id %>
<span class="dashboard-top-pill"><%= article.organization&.name %></span>
<% end %>
<% if article.collection_id %>
<span class="dashboard-top-pill"><%= t("views.dashboard.article.series_html", series: article.series) %></span>
<% end %>
</div>
<div class="js-ellipsis-menu relative inline-block float-right">
<button id="ellipsis-menu-trigger-<%= article.id %>" aria-controls="ellipsis-menu-dropdown-<%= article.id %>" aria-expanded="false" aria-haspopup="true" class="crayons-btn crayons-btn--ghost crayons-btn--s crayons-btn--icon">
<%= crayons_icon_tag("overflow-horizontal", title: t("views.dashboard.article.more.icon")) %>
</button>
<div id="ellipsis-menu-dropdown-<%= article.id %>" class="crayons-dropdown top-100 right-0 z-10 align-left js-ellipsis-menu-dropdown">
<%= form_for(article, method: :patch, remote: true, authenticity_token: true, html: { "data-type": "json", class: "p-0 js-archive-toggle" }) do |f| %>
<%= f.hidden_field :archived, value: !article.archived %>
<%= f.hidden_field :from_dashboard, value: 1 %>
<button type="submit" class="crayons-link crayons-link--block w-100 border-0 bg-transparent">
<%= t("views.dashboard.article.#{article.archived ? 'unarchive' : 'archive'}") %>
</button>
<% end %>
</div>
</div>
<a href="<%= article.current_state_path %>"><h2>
<%= t("views.dashboard.article.heading.text_html",
archived: article.archived ? t("views.dashboard.article.heading.archived") : "",
title: article.title) %>
</h2></a>
<div class="dashboard-meta-details">
<% if article.published %>
<span>
<%= t("views.dashboard.article.published_html", date: tag.time(article.readable_publish_date, datetime: article.published_timestamp)) %>
</span>
<% if article.edited? %>
<span>
· <%= t("views.dashboard.article.edited_html", date: tag.time(article.readable_edit_date, datetime: article.edited_at.utc.iso8601)) %>
</span>
<% end %>
<% article.cached_tag_list_array.each do |tag| %>
<a href="/t/<%= tag %>"><span class="tag">#<%= tag %></span></a>
<% end %>
<% end %>
</div>
<div class="dashboard-actions">
<% if !article.published %>
<a href="<%= article.current_state_path %>" class="crayons-btn"><%= t("views.dashboard.article.draft") %></a>
<% end %>
<a href="<%= article.path %>/edit" class="crayons-btn"><%= t("views.dashboard.article.edit.text") %></a>
<% if manage_view %>
<a href="<%= article.path %>/delete_confirm" data-no-instant class="crayons-btn crayons-btn--danger"><%= t("views.dashboard.article.delete") %></a>
<% if article.profile_pins.any? %>
<%= form_for(article.profile_pins.first) do |f| %>
<button class="crayons-btn crayons-btn--secondary"><%= t("views.dashboard.article.unpin") %></button>
<% end %>
<% else %>
<%= form_for(ProfilePin.new) do |f| %>
<%= f.hidden_field :pinnable_id, value: article.id %>
<button class="crayons-btn"><%= t("views.dashboard.article.pin.button") %></button>
<% end %>
<% end %>
<% elsif article.published %>
<a href="<%= article.path %>/manage" class="crayons-btn"><%= t("views.dashboard.article.manage.text") %></a>
<% elsif @user == article.user %>
<a href="<%= article.path %>/delete_confirm" data-no-instant class="crayons-btn crayons-btn--danger"><%= t("views.dashboard.article.delete") %></a>
<% end %>
<a href="<%= article.path %>/stats" data-no-instant class="crayons-btn"><%= t("views.dashboard.article.stats") %></a>
<% if discussion_lock %>
<a href="<%= article.path %>/discussion_unlock_confirm" data-no-instant class="crayons-btn"><%= t("views.dashboard.article.unlock") %></a>
<% else %>
<a href="<%= article.path %>/discussion_lock_confirm" data-no-instant class="crayons-btn"><%= t("views.dashboard.article.lock") %></a>
<% end %>
<% if article.published %>
<span id="pageviews-<%= article.id %>" class="crayons-btn dashboard-pageviews-indicator" data-analytics-pageviews data-article-id="<%= article.id %>">
<span class="page-views-count">
<% pvs = article.page_views_count %>
<%= t("views.dashboard.article.views.text_html", count: pvs, scale: tag.span(pvs > 25 ? tag.span(pvs, class: %w[value]) : t("views.dashboard.article.views.u_25"), class: %w[value])) %>
</span>
//
<span class="reactions-count">
<% prs = article.public_reactions_count %>
<%= t("views.dashboard.article.reactions.text_html", count: prs, num: tag.span(prs, class: %w[value])) %>
</span>
//
<span class="comments-count">
<% pcs = article.comments_count %>
<%= t("views.dashboard.article.comments.text_html", count: pcs, num: tag.span(pcs, class: %w[value])) %>
</span>
</span>
<% end %>
</div>
<% if organization && org_admin %>
<%= form_for(article) do |f| %>
<%= f.hidden_field :from_dashboard, value: 1 %>
<input type="hidden" name="destination" value="/dashboard/organization/<%= organization.id %>" />
<%= t("views.dashboard.article.author_is") %><%= f.select(:user_id, options_for_select(organization.users.pluck(:name, :id), article.user_id)) %>
<%= f.submit t("views.dashboard.article.submit"), class: "crayons-btn crayons-btn--secondary" %>
<% end %>
<% end %>
</div>
<%= javascript_include_tag "dashboardDropdowns", defer: true %>