anthonymidili/Recipedia

View on GitHub
app/views/recipes/show.html.haml

Summary

Maintainability
Test Coverage
- provide(:title, @recipe.name)

%div{id: "recipe_#{@recipe.id}", data: { recipe_id: @recipe.id }}
  .hide-on-print
    .row
      .col-8
        = render 'recipes/share', recipe: @recipe
      - if is_author?(@recipe.user)
        .col-4
          %ul.edit_menu
            %li.nav-item
              = link_to edit_recipe_path(@recipe), class: "nav-link" do
                %i.fas.fa-edit
                Edit
            %li.nav-item
              = link_to @recipe, class: 'red-text nav-link',
              data: { turbo_method: :delete, turbo_confirm: 'Are you sure?' } do
                %i.fas.fa-trash
    - if is_author?(@recipe.user) && !@recipe.published?
      .row
        .col-12
          .center-text= render 'recipes/publish_form', recipe: @recipe
    .row
      .col-12
        %p.callout-transparent
          %b Assigned Categories:
          = links_to_categories(@recipe)
  .row
    .col-12
      .hide-on-print
        %h3
          %nav.nav
            .nav-link
              - if user_signed_in? && !is_author?(@recipe.user)
                = render 'recipes/favor_form', recipe: @recipe
              - elsif !user_signed_in?
                = link_to log_in_recipe_path(@recipe), class: 'favor_form_button' do
                  %i.gray-text.far.fa-heart
            .nav-link
              %div{id: "recipe_likes_count_#{@recipe.id}"}
                = render 'recipes/likes_count', recipe: @recipe
            .nav-link
              = link_to recipe_path(@recipe, anchor: "reviews_header") do
                = render 'reviews/count', recipe: @recipe
      %h1.center-on-print= @recipe.name
  .row.mb-3
    .col-md-7.col-print-8
      .callout-transparent
        .center-text.left-on-print
          .row
            .col-lg-6
              .row
                .col-12
                  = link_to @recipe.user do
                    Posted by:
                    %b= @recipe.user.username
              .row
                .col-12
                  = render 'users/profile_stats', user: @recipe.user, size: 100
            .col-lg-6
              .hide-on-print.center-vertical
                .row
                  .col-12
                    = render 'relationships/form', user: @recipe.user, recipe: @recipe
      - if @recipe.source?
        .row
          .col-12
            %p
              %b Source:
              = @recipe.source
      .row
        .col-12
          %b Description:
          = @recipe.description
    .col-md-5.col-print-4
      .center
        = turbo_frame_tag "main_recipe_image" do
          .mb-1
            - if @recipe_image.try(:image).try(:attached?)
              = render @recipe_image
            - else
              .hide-on-print
              = image_tag "default_recipe_image.svg", size: "800x800",
              class: "img-thumbnail show-for-medium"
        .hide-on-print
          .add-image-link
            = link_to new_recipe_recipe_image_path(@recipe),
            class: 'img-thumbnail mb-1' do
              %i.fas.fa-plus-circle
              Image
          - if @recipe.recipe_images.any?
            - @recipe.recipe_images.by_original_first.first(9).each do |recipe_image|
              - if recipe_image.image.attached?
                = link_to recipe_path(@recipe, image: recipe_image.id),
                data: { turbo_frame: "main_recipe_image" } do
                  = image_tag avatar_image(recipe_image.image, 80), class: 'img-thumbnail mb-1'
  .row
    .col-12
      - if @recipe.ingredients.any?
        %h4 Ingredients:
        .callout
          - @recipe.parts.each do |part|
            .mb-3
              - if @recipe.parts.count > 1
                %h4= part.name
              = render part.ingredients
      - if @recipe.steps.any?
        %h4 Steps:
        .callout
          - @recipe.parts.each do |part|
            .mb-3
              - if @recipe.parts.count > 1
                %h4= part.name
              - part.steps.each_with_index do |step, index|
                .row
                  .col.mb-2
                    .float-start.red-text.me-1= "#{index += 1}."
                    .trix-img-max
                      = step.description
  .hide-on-print
    .row
      .col-12
        %ul.nav-links
          %li= link_to 'All Recipes', recipes_path
    = render 'reviews/reviews', recipe: @recipe, review: @review