From b531c73c39071a9b80ba71075abb06a33c27a02f Mon Sep 17 00:00:00 2001
From: Mauricio Giacomini Girardello <mgg12@inf.ufpr.br>
Date: Thu, 24 Mar 2016 10:28:20 -0300
Subject: [PATCH] improve download button

---
 app/helpers/learning_objects_helper.rb   | 71 +++++++++++++++++-------
 app/models/object_type.rb                |  8 ---
 app/views/learning_objects/show.html.erb |  6 +-
 3 files changed, 55 insertions(+), 30 deletions(-)

diff --git a/app/helpers/learning_objects_helper.rb b/app/helpers/learning_objects_helper.rb
index 390b4110..b72128dd 100644
--- a/app/helpers/learning_objects_helper.rb
+++ b/app/helpers/learning_objects_helper.rb
@@ -2,10 +2,14 @@ module LearningObjectsHelper
 
   def display_object_type(learning_object)
     case learning_object.default_attachment.mime_type
-    when /audio\/*/i then audio_tag(learning_object.cache_link, controls: true)
-    when /video\/mp4/i then video_tag(learning_object.cache_link.to_s, autobuffer: true, poster: learning_object_thumbnail(learning_object))
-    when /application\/(x-)?pdf/i then "<iframe src=\"/pdfjs/web/viewer.html?file=#{learning_object.retrieve_link }\" style=\"border: 0 \" width=\"125%\" height=\"280\" frameborder=\"0\" scrolling=\"no\"></iframe>".html_safe
-    else image_tag learning_object_thumbnail(learning_object, 'large'), alt: learning_object_title(learning_object), class: 'thumbnail'
+      when /audio\/*/i then
+        audio_tag(learning_object.cache_link, controls: true)
+      when /video\/mp4/i then
+        video_tag(learning_object.cache_link.to_s, autobuffer: true, poster: learning_object_thumbnail(learning_object))
+      when /application\/(x-)?pdf/i then
+        "<iframe src=\"/pdfjs/web/viewer.html?file=#{learning_object.retrieve_link }\" style=\"border: 0 \" width=\"125%\" height=\"280\" frameborder=\"0\" scrolling=\"no\"></iframe>".html_safe
+      else
+        image_tag learning_object_thumbnail(learning_object, 'large'), alt: learning_object_title(learning_object), class: 'thumbnail'
     end
   end
 
@@ -19,13 +23,20 @@ module LearningObjectsHelper
 
     unless learning_object.object_type.blank?
       case learning_object.object_type.name
-      when 'Vídeo' then return 'video.png'
-      when 'Imagem' then return 'image.png'
-      when 'Hipertexto' then return 'text.png'
-      when 'Animação/simulação' then return 'animation.png'
-      when 'Software Educacional' then return 'software.png'
-      when 'Áudio' then return 'audio.png'
-      when 'Experimento prático' then return 'simulator.png'
+        when 'Vídeo' then
+          return 'video.png'
+        when 'Imagem' then
+          return 'image.png'
+        when 'Hipertexto' then
+          return 'text.png'
+        when 'Animação/simulação' then
+          return 'animation.png'
+        when 'Software Educacional' then
+          return 'software.png'
+        when 'Áudio' then
+          return 'audio.png'
+        when 'Experimento prático' then
+          return 'simulator.png'
       end
     end
 
@@ -38,22 +49,44 @@ module LearningObjectsHelper
 
   def render_learning_object(orientation, learning_object)
     case (orientation)
-    when 'vertical' then render 'learning_objects/learning_object_vertical', learning_object: learning_object
-    when 'horizontal' then render 'learning_objects/learning_object_horizontal', learning_object: learning_object
-    else render 'learning_objects/learning_object_horizontal', learning_object: learning_object
+      when 'vertical' then
+        render 'learning_objects/learning_object_vertical', learning_object: learning_object
+      when 'horizontal' then
+        render 'learning_objects/learning_object_horizontal', learning_object: learning_object
+      else
+        render 'learning_objects/learning_object_horizontal', learning_object: learning_object
     end
   end
 
+  def display_download_button(learning_object)
+    return external_website_btn(learning_object) if learning_object.has_url_reference?
+    download_btn learning_object
+  end
+
   def social_share(learning_object)
     set_meta_tags og: {
-      title: learning_object.name,
-      type: 'website',
-      description: learning_object.description,
-      image: learning_object.default_thumbnail
+        title: learning_object.name,
+        type: 'website',
+        description: learning_object.description,
+        image: learning_object.default_thumbnail
     }
 
     set_meta_tags fb: {
-      app_id: '745857965514514'
+        app_id: '745857965514514'
     }
   end
+
+  def external_website_btn(learning_object)
+    highlighted_btn learning_object.url_reference, 'Acessar website', 'fa-external-link'
+  end
+
+  def download_btn(learning_object)
+    highlighted_btn download_learning_object_path(learning_object), 'Download', 'fa-download'
+  end
+
+  def highlighted_btn(url, _label = nil, _class = nil)
+    link_to url, class: 'download btn btn-success', target: "_blank" do
+      "<i class='fa #{_class}'></i> #{_label}"
+    end
+  end
 end
diff --git a/app/models/object_type.rb b/app/models/object_type.rb
index 1153bd9c..0aedd137 100644
--- a/app/models/object_type.rb
+++ b/app/models/object_type.rb
@@ -1,11 +1,3 @@
-# == Schema Information
-#
-# Table name: object_types
-#
-#  id   :integer          not null, primary key
-#  name :string
-#
-
 class ObjectType < ActiveRecord::Base
   has_many :learning_objects
   has_and_belongs_to_many :mime_types
diff --git a/app/views/learning_objects/show.html.erb b/app/views/learning_objects/show.html.erb
index 4c487f1c..3b7ccf6c 100644
--- a/app/views/learning_objects/show.html.erb
+++ b/app/views/learning_objects/show.html.erb
@@ -60,11 +60,11 @@
       <div class="rating-panel">
         <% if user_signed_in? %>
             <div class="actions">
+
               <div class="action download">
-                <%= link_to download_learning_object_path, class: 'download btn btn-success', target: "_blank" do %>
-                    <i class="fa fa-download"></i>FAZER DOWNLOAD
-                <%end%>
+                <%= display_download_button(@learning_object) %>
               </div>
+
               <div class="action">
                 <%= link_to like_learning_object_path(id: @learning_object.id), class: 'vote btn btn-primary',method: :post, remote: true do %>
                     <% if @liked %>
-- 
GitLab