From 529cd2080970ea6ba34d2f27db07cad2c8d1d28f Mon Sep 17 00:00:00 2001
From: Giovanne Marcelo <gms15@inf.ufpr.br>
Date: Thu, 3 Mar 2016 12:03:54 -0300
Subject: [PATCH] [WIP] Adding a tag in suspended object thumbnails and
 creating a list of suspended learning objects in mangement system

---
 .../learning_objects_controller.rb            |  6 +---
 .../management/learning_objects_controller.rb | 18 ++++++++++
 app/controllers/search_controller.rb          | 12 ++++---
 .../_learning_object_vertical.erb             | 19 +++++++----
 app/views/learning_objects/show.html.erb      |  3 +-
 .../learning_objects/index.html.erb           | 34 +++++++++++++++++++
 .../shared/management/_nav_menu.html.erb      |  2 ++
 config/routes.rb                              |  2 ++
 8 files changed, 79 insertions(+), 17 deletions(-)
 create mode 100644 app/controllers/management/learning_objects_controller.rb
 create mode 100644 app/views/management/learning_objects/index.html.erb

diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb
index 218c8c69..531a60de 100644
--- a/app/controllers/learning_objects_controller.rb
+++ b/app/controllers/learning_objects_controller.rb
@@ -19,10 +19,6 @@ class LearningObjectsController < ApplicationController
     authorize @learning_object
     @liked = !@learning_object.liked?(current_user) if user_signed_in?
     @reviews = Review.where(reviewable: @learning_object)
-    if @learning_object.state == 'suspended'
-      flash[:notice] = "Este objeto está suspenso!"
-      flash[:alert] = "Razões: #{Complaint.where(complaintable_id: @learning_object.id).map(&:reason).join(",")}"
-    end
   end
 
   # GET /learning_objects/new
@@ -143,7 +139,7 @@ class LearningObjectsController < ApplicationController
   def user_not_authorized
     flash[:notice] = "Este objeto está suspenso!"
     flash[:alert] = "Razões: #{Complaint.where(complaintable_id: @learning_object.id).map(&:reason).join(',').to_s}"
-    redirect_to(request.referrer || root_path)
+    redirect_to (root_path)
   end
 
 end
diff --git a/app/controllers/management/learning_objects_controller.rb b/app/controllers/management/learning_objects_controller.rb
new file mode 100644
index 00000000..f1405db7
--- /dev/null
+++ b/app/controllers/management/learning_objects_controller.rb
@@ -0,0 +1,18 @@
+class Management::LearningObjectsController < ManagementController
+
+
+  def index
+    @learning_objects = LearningObject.where(state: 'suspended')
+  end
+
+  def publish_object
+    @learning_object = LearningObject.find params[:object_id]
+    @learning_object.update(state: 'published')
+
+    respond_to do |format|
+      format.html { redirect_to :back, notice: 'Objeto publicado com sucesso.' }
+    end
+  end
+
+
+end
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index d16cb5e9..67c41f4f 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -90,11 +90,6 @@ class SearchController < ApplicationController
     hash.blank? ? nil : hash
   end
 
-  def validate_object
-    return 'published' if current_user.nil? || !current_user.is_admin?
-    return ['published', 'suspended', 'draft']
-  end
-
   def lo_order_hash(params)
     case params[:order]
     when 'author'
@@ -130,4 +125,11 @@ class SearchController < ApplicationController
     { name: :asc }
   end
 
+  private
+  
+  def validate_object
+    return 'published' if current_user.nil? || !current_user.is_admin?
+    return ['published', 'suspended', 'draft']
+  end
+
 end
diff --git a/app/views/learning_objects/_learning_object_vertical.erb b/app/views/learning_objects/_learning_object_vertical.erb
index 4ce5e32f..a0d249d2 100644
--- a/app/views/learning_objects/_learning_object_vertical.erb
+++ b/app/views/learning_objects/_learning_object_vertical.erb
@@ -2,18 +2,25 @@
   <div class="panel">
     <div class="learning-object-thumbnail">
       <%= link_to learning_object_path(id: learning_object.id) do
-        image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
+        if learning_object.state == 'published'
+          image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
+        end
+
       end %>
+      <% if learning_object.state == 'suspended' %>
+      <div style='position:relative; top:0px; left:0px;'>
+        <%= image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail" %>
+          <div style='position:absolute;width: 0;height: 0;top:-300px; left:-200px;'>
+            <img src=https://pixabay.com/static/uploads/photo/2012/05/04/09/06/banned-46789_960_720.png>
+          </div>
+        </div>"
+      <% end %>
       <% if user_signed_in? %>
           <%= render 'learning_objects/actions_buttons', learning_object: learning_object %>
       <% end %>
     </div>
     <div class="panel-body">
-      <% if learning_object.state == "suspended" %>
-        <h4 class="media-heading"><%= "[OBJETO SUSPENSO] #{learning_object_title(learning_object)}" %></h4>
-      <% else %>
-        <h4 class="media-heading"><%= learning_object_title(learning_object) %></h4>
-      <% end %>
+      <h4 class="media-heading"><%= learning_object_title(learning_object) %></h4>
       <i class="fa fa-eye" data-toggle="tooltip" data-placement="bottom" title="Visualizações"><%= learning_object.views.size %></i>&nbsp;
       <i class="fa fa-star votes-count" data-id="<%= learning_object.id %>" data-toggle="tooltip" data-placement="bottom" title="Curtidas"><%= learning_object.likes.size %></i>&nbsp;
       <span class="author-label">Por <%= learning_object.get_metadata_value_of("dc.contributor.author") %></span>
diff --git a/app/views/learning_objects/show.html.erb b/app/views/learning_objects/show.html.erb
index c3f3ca11..2dd9f610 100644
--- a/app/views/learning_objects/show.html.erb
+++ b/app/views/learning_objects/show.html.erb
@@ -1,4 +1,5 @@
 <% content_for(:body_attributes) do %>data-no-turbolink="true"<% end %>
+
 <div class="row learning-object">
   <div class="col-md-7">
     <div class="view">
@@ -10,7 +11,7 @@
 
     </div>
     <br/><br/>
-    <h2 class="title"><%= @learning_object.name %></h2>
+    <h2 class="title"><%= learning_object_title(@learning_object) %></h2>
     <% unless @learning_object.description.nil? %>
       <p class="description"><%= @learning_object.description %></p>
     <% end %>
diff --git a/app/views/management/learning_objects/index.html.erb b/app/views/management/learning_objects/index.html.erb
new file mode 100644
index 00000000..875e0015
--- /dev/null
+++ b/app/views/management/learning_objects/index.html.erb
@@ -0,0 +1,34 @@
+<h1 class="ls-title-intro ls-ico-bullhorn">Conteúdos Suspensos</h1>
+
+<div class="ls-clearfix"></div>
+
+<div class="ls-board-box">
+
+  <div id="sending-stats" class="row ls-box-group">
+    <div class="col-sm-12 col-lg-7">
+      <div class="ls-box">
+        <div class="ls-box-head">
+          <h6 class="ls-title-4">Total de conteúdos denunciados</h6>
+        </div>
+        <div class="ls-box-body">
+          <strong class="ls-color-theme"><%= @learning_objects.size %></strong>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <% @learning_objects.sort{|x,y| x.name <=> y.name}.each do |learning_object| %>
+  <div class="ls-list">
+    <header class="ls-list-header">
+      <div class="ls-list-title col-md-9">
+        <%= link_to "#{learning_object.name}", learning_object_path(id: learning_object.id) %></a>
+        <small><%= learning_object.description %>  </small>
+      </div>
+      <div class="col-md-3 ls-txt-right">
+        <%= link_to 'Publicar Objeto', management_complaint_publish_object_path(complaint_id: Complaint.where(complaintable_id: learning_object.id).first, object_id: learning_object.id), {method: :post, data: {confirm: 'Tem certeza que deseja publicar este objeto?'}, title: 'Suspender Objeto', class: 'ls-btn-primary ls-btn-sm', role: 'option'} %>
+      </div>
+    </header>
+  </div>
+  <% end %>
+
+  </div>
diff --git a/app/views/shared/management/_nav_menu.html.erb b/app/views/shared/management/_nav_menu.html.erb
index 142c1071..72c3fc1b 100644
--- a/app/views/shared/management/_nav_menu.html.erb
+++ b/app/views/shared/management/_nav_menu.html.erb
@@ -29,9 +29,11 @@
       <ul role="menu">
         <li><%= link_to "Denúncias", management_complaints_path, class: 'ls-submenu-item' %>
         <li><%= link_to "Razões", management_complaint_reasons_path, class: 'ls-submenu-item' %>
+        <li><%= link_to "Conteúdos suspensos", management_learning_objects_path, class: 'ls-submenu-item' %>  
       </ul>
     </li>
 
+
     <li> <%= link_to "Voltar ao Portal", root_path, class: 'ls-ico-chevron-left' %> </li>
   </ul>
 
diff --git a/config/routes.rb b/config/routes.rb
index 66838964..2d62f841 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -11,6 +11,7 @@ Rails.application.routes.draw do
     root 'welcome#index'
     resources :complaints do
       post '/suspend_object/:object_id', as: :suspend_object, action: :suspend_object
+      post '/publish_object/:object_id', as: :publish_object, action: :publish_object
     end
     resources :institutions do
       member do
@@ -22,6 +23,7 @@ Rails.application.routes.draw do
     resources :complaint_reasons
     resources :highlights
     resources :carousels
+    resources :learning_objects, only: [:index]
 
     resources :statistics do
       collection do
-- 
GitLab