132 lines
6.7 KiB
Plaintext
132 lines
6.7 KiB
Plaintext
<% content_for(:title) { @book.title } %>
|
|
<% @layout_class = "book" %>
|
|
|
|
<% content_for :head do %>
|
|
<%= tag.meta property: "og:title", content: @book.title %>
|
|
<%= tag.meta property: "og:description", content: @book.subtitle %>
|
|
<%= tag.meta property: "og:image", content: @book.cover.blank? ? asset_url("covers/cover-#{@book.theme}-og.png") : "#{root_url}#{url_for(@book.cover)}" %>
|
|
<%= tag.meta property: "og:url", content: book_slug_url(@book) %>
|
|
|
|
<%= tag.meta property: "twitter:title", content: @book.title %>
|
|
<%= tag.meta property: "twitter:description", content: @book.subtitle %>
|
|
<%= tag.meta property: "twitter:image", content: @book.cover.blank? ? asset_url("covers/cover-#{@book.theme}-og.png") : "#{root_url}#{url_for(@book.cover)}" %>
|
|
<%= tag.meta property: "twitter:card", content: "summary_large_image" %>
|
|
<% end %>
|
|
|
|
<% content_for :header do %>
|
|
<nav class="book__navbar">
|
|
<%= link_to root_path, class: "btn" do %>
|
|
<%= image_tag "arrow-left.svg", aria: { hidden: true }, size: 24 %>
|
|
<span class="for-screen-reader">Go back</span>
|
|
<% end %>
|
|
|
|
<span class="btn btn--placeholder placeholder-start" aria-hidden="true"></span>
|
|
|
|
<div class="breadcrumbs">
|
|
<%= render "books/index_link" %>
|
|
<span class="flex-item-no-shrink">▸</span>
|
|
<strong><%= @book.title %></strong>
|
|
</div>
|
|
|
|
<%= link_to_first_leafable(@leaves) %>
|
|
|
|
<span class="btn btn--placeholder placeholder-end" aria-hidden="true"></span>
|
|
|
|
<button class="btn fullscreen" data-action="fullscreen#toggle" data-fullscreen-target="button">
|
|
<%= image_tag "expand.svg", aria: { hidden: true }, size: 24 %>
|
|
<span class="for-screen-reader">Enter fullscreen</span>
|
|
</button>
|
|
|
|
<% if @book.editable? %>
|
|
<%= link_to edit_book_path(@book), class: "btn settings" do %>
|
|
<%= image_tag "settings.svg", aria: { hidden: true }, size: 24 %>
|
|
<span class="for-screen-reader">Edit book settings</span>
|
|
<% end %>
|
|
<% end %>
|
|
</nav>
|
|
<% end %>
|
|
|
|
<% cache [ @book, @book.editable? ] do %>
|
|
<aside class="txt-align-center margin-block">
|
|
<div class="book__sidebar <%= "theme--#{@book&.theme}" unless @book.cover.attached? %>">
|
|
<% if @book.cover.attached? %>
|
|
<%= link_to rails_blob_path(@book.cover, disposition: "attachment", only_path: true), data: { action: "lightbox#open:prevent", lightbox_target: "image", lightbox_url_value: rails_blob_path(@book.cover, disposition: "attachment", only_path: true) } do %>
|
|
<%= image_tag @book.cover, alt: "Cover for #{ @book.title }", class: "book__cover margin-block-none center" %>
|
|
<% end %>
|
|
<% else %>
|
|
<span class="book__cover-wrapper">
|
|
<%= image_tag "empty-cover.png", alt: "Book cover", class: "book__cover margin-block-none center" %>
|
|
<span class="book__title overflow-line-clamp pad txt-align-start txt-tight-lines"" style="--lines: 6" aria-hidden="true"><%= @book.title %></span>
|
|
</span>
|
|
<% end %>
|
|
|
|
<% if @book.editable? %>
|
|
<%= turbo_frame_tag @book, :publication do %>
|
|
<%= render "books/publications/publication", book: @book %>
|
|
<% end %>
|
|
<% end %>
|
|
|
|
<span data-controller="edit-mode" data-edit-mode-editing-class="edit-mode" />
|
|
</div>
|
|
</aside>
|
|
|
|
<%= arrangement_tag @book, class: "arrangement__container toc__container full-width txt-align-center" do %>
|
|
<h1 class="flex flex-column txt-tight-lines txt-align-start margin-block-end">
|
|
<strong class="book__title txt-x-large--responsive"><%= @book.title %></strong>
|
|
<span class="txt-large--responsive txt-normal"><%= @book.subtitle %></span>
|
|
<span class="txt-large--responsive txt-normal"><%= @book.author %></span>
|
|
</h1>
|
|
|
|
<div class="book__toolbar fill-white flex gap-half pad-block margin-block-end-half justify-center <%= "position-sticky" if @book.editable? %>" data-controller="toc-view" data-toc-view-id-value="<%= dom_id(@book) %>">
|
|
<label class="btn txt-medium disable-when-empty">
|
|
<input type="radio" name="view" id="toc-list" value="list" data-toc-view-target="switch" data-toc-view-type-value="list" data-action="toc-view#saveViewPref">
|
|
<%= image_tag "view-list.svg", aria: { hidden: true }, size: 24 %>
|
|
<span class="for-screen-reader">List view</span>
|
|
</label>
|
|
|
|
<label class="btn txt-medium flex-item-justify-start disable-when-empty">
|
|
<input type="radio" name="view" id="toc-grid" value="grid" checked="checked" data-toc-view-target="switch" data-toc-view-type-value="grid" data-action="toc-view#saveViewPref">
|
|
<%= image_tag "view-grid.svg", aria: { hidden: true }, size: 24 %>
|
|
<span class="for-screen-reader">Page view</span>
|
|
</label>
|
|
|
|
<% if @book.editable? %>
|
|
<%= render "books/create_buttons", book: @book %>
|
|
<%= render "books/mode_buttons", book: @book %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<div class="position-relative">
|
|
<% if @book.editable? %>
|
|
<div class="toc__blank-slate align-center justify-start">
|
|
<%= image_tag "blank-slate-arrows.svg", aria: { hidden: true }, size: 60, class: "colorize--black" %>
|
|
<span class="flex align-center gap-half"><span>🇺🇸</span> <span>Pick a page type to get started</span></span>
|
|
<span class="flex align-center gap-half"><span>🇪🇸</span> <span>Elige un tipo de página para comenzar</span></span>
|
|
<span class="flex align-center gap-half"><span>🇫🇷</span> <span>Choisissez un type de page pour commencer</span></span>
|
|
<span class="flex align-center gap-half"><span>🇮🇳</span> <span>शुरू करने के लिए एक पृष्ठ प्रकार चुनें</span></span>
|
|
<span class="flex align-center gap-half"><span>🇩🇪</span> <span>Wählen Sie einen Seitentyp, um zu beginnen</span></span>
|
|
<span class="flex align-center gap-half"><span>🇧🇷</span> <span>Escolha um tipo de página para começar</span></span>
|
|
</div>
|
|
<% end %>
|
|
|
|
<menu class="toc margin-none" tabindex="0" data-arrangement-target="container" data-action="<%= arrangement_actions %>">
|
|
<%= turbo_frame_tag :leaves, data: { arrangement_target: "list" } do -%>
|
|
<%= render partial: "leaves/leaf", collection: @leaves, as: :leaf -%>
|
|
<% end -%>
|
|
</menu>
|
|
|
|
<div data-arrangement-target="layer" class="toc"></div>
|
|
<div data-arrangement-target="dragImage" class="arrangement-drag-image"></div>
|
|
</div>
|
|
<% end %>
|
|
<% end %>
|
|
|
|
<% content_for :footer do %>
|
|
<nav class="book__nav flex align-center justify-center">
|
|
<a href="https://once.com/writebook" class="product__wordmark btn btn--plain txt-medium" target="_blank">
|
|
<%= image_tag "writebook-icon.svg", aria: { hidden: true }, size: 24 %>
|
|
<span>Made with Writebook</span>
|
|
</a>
|
|
</nav>
|
|
<% end %>
|