diff --git a/app/controllers/concerns/reportable.rb b/app/controllers/concerns/reportable.rb index e53469daf34c818bf66be44bec181984a47f26d5..d80b8f37763d7460df704d9932fde57dbfe047ee 100644 --- a/app/controllers/concerns/reportable.rb +++ b/app/controllers/concerns/reportable.rb @@ -2,12 +2,20 @@ module Reportable extend ActiveSupport::Concern included do + before_action :set_complaint_messages, only: :show + end + + def report_object + learning_object_repository.report current_user, @learning_object, message, description + end + + def set_complaint_messages @complaint = Complaint.new @messages = [ - Complaint.copyrights, - Complaint.ofensive_content, - Complaint.ofensive_user, - Complaint.fake_user + Complaint.copyrights, + Complaint.ofensive_content, + Complaint.ofensive_user, + Complaint.fake_user ] end diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb index 56a62abf89bf1d6edf9135656048a31699ed8eea..8d8df5118cd4aed245fd4e6d19d6dbf6c5a2f589 100644 --- a/app/controllers/learning_objects_controller.rb +++ b/app/controllers/learning_objects_controller.rb @@ -1,17 +1,11 @@ require 'uri' class LearningObjectsController < ApplicationController + include Reportable + before_action :set_learning_object, only: [:show, :edit, :update, :destroy, :like, :bookmarks, :collections] after_action :increment_learning_object_views, only: [:show] before_action :authenticate_user!, except: [:index, :show] - before_action :set_complaint_messages, only: :show - before_action :set_dspace_collection, :create_repositories, :process_params, :get_selected_subjects, only: :create - - # GET /learning_objects - # GET /learning_objects.json - def index - @learning_objects = learning_object_repository.all - end # GET /learning_objects/1 # GET /learning_objects/1.json @@ -24,6 +18,7 @@ class LearningObjectsController < ApplicationController @learning_object = LearningObject.new @school_levels = ['Educação Infantil', 'Ensino Fundamental', 'Ensino Médio'] @subjects = Subject.default_list + @types = learning_object_repository.types end # GET /learning_objects/1/edit @@ -33,66 +28,18 @@ class LearningObjectsController < ApplicationController # POST /learning_objects # POST /learning_objects.json def create - # Create the item inside Dspace - lo = DSpaceRest::Item.new({ - "name"=> learning_object_params[:name], - "type"=> learning_object_params[:type], - "last_modified"=> Time.now.to_s, - "metadata"=> [] - }) - dspace_keys = get_dspace_metadata_names("invert") - params[:learning_object].each do |k,v| - unless dspace_keys[k].nil? - if v.kind_of?(Array) - v.each do |item| - lo.add_metadata(dspace_keys[k],item,"pt-BR") - end - else - lo.add_metadata(dspace_keys[k], v, "pt-BR") - end - end - end - response = @col_repository.create_item_for(@collection, lo) - - - # Now upload the file to the created item in DSpace - strategy = DSpaceRest::Strategies::Uploads::RestStrategy.new(Dspace::Client.instance.rest_client) - file = params[:learning_object][:file] - bitstream_response = {} - bitstream_file = Struct.new(:name, :path, :description) - dspace_f = bitstream_file.new - dspace_f.path = URI.encode(file.tempfile.path) - dspace_f.name = URI.encode(file.original_filename) - dspace_f.description = 'file.description' - - dspace_bitstream_response = @item_repository.create_bitstream_for(response, dspace_f, strategy).as_json - dspace_bitstream_response.each do |v,k| - bitstream_response[v.camelize(:lower)] = k - end - - # Create the object inside OrientDB @learning_object = LearningObject.new(learning_object_params) - @learning_object.type = get_file_type file - @learning_object.id_dspace = response.id - @learning_object.subjects = @subjects - @learning_object.created_at = Time.now - @learning_object.last_modified = Time.now - @learning_object.publisher = current_user - @learning_object.metadata = lo.to_h[:metadata] - @learning_object.attachment = LearningObject::Attachment.new([bitstream_response]) respond_to do |format| if learning_object_repository.create @learning_object - learning_object_repository.create_relations @learning_object - format.html { redirect_to me_users_path, notice: 'Learning object was successfully created.' } + # go to file submission page + #format.html { redirect_to me_users_path, notice: 'Learning object was successfully created.' } else - format.html { render :new } + #format.html { redirect_to , notice: 'Learning object wasnt successfully created.' } end end end - - # PATCH/PUT /learning_objects/1 # PATCH/PUT /learning_objects/1.json def update @@ -115,10 +62,6 @@ class LearningObjectsController < ApplicationController end end - def report_object - learning_object_repository.report current_user, @learning_object, message, description - end - # POST /learning_objects/1/like def like if @learning_object.liked? current_user @@ -150,59 +93,11 @@ class LearningObjectsController < ApplicationController private - def get_selected_subjects - @subjects = [] - params[:learning_object][:subjects].each do |subject| - @subjects << subject_repository.find_by_name(subject) - end - end - - def process_params - params[:learning_object][:date_created] = Time.now - params[:learning_object][:date_available] = Time.now - params[:learning_object][:type] = get_file_type params[:learning_object][:file] - end - - def create_repositories - @col_repository = Dspace::Client.instance.repository.collection_repository - @item_repository = Dspace::Client.instance.repository.item_repository - end - - def set_dspace_collection - # create struct with the id of the collection - # Avoiding an unecessary request to the DSpace - collection_struct = Struct.new(:id) - @collection = collection_struct.new('4') - end - - def get_file_type(file) - type = file.content_type.split('/').first - case type - when 'video' - "VÃdeo" - when 'image' - "Imagem" - when 'audio' - "Ãudio" - else - "Outros" - end - end - - def get_dspace_metadata_names(invert=nil) - h = { - "dc.contributor.author" => "author", - "dc.date.accessioned" => "date_created", - "dc.date.available" => "date_available", - "dc.language" => "language", - "dc.title" => "name", - "dc.type" => "type", - "dc.subject.category" => "subjects" - } - if (invert != nil) - return h.invert + def build_subjects(subjects) + _subjects = [] + subjects.each do |subject| + _subjects << subject_repository.find_by_name(subject) end - h end # Use callbacks to share common setup or constraints between actions. @@ -212,7 +107,7 @@ class LearningObjectsController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def learning_object_params - params[:learning_object].permit(:author, :name, :type, :description, :subjects, :school_level) + params[:learning_object].permit(:author, :name, :type, :description, :school_level, :language, subjects: []) end def increment_learning_object_views @@ -221,14 +116,4 @@ class LearningObjectsController < ApplicationController end end - def set_complaint_messages - @complaint = Complaint.new - @messages = [ - Complaint.copyrights, - Complaint.ofensive_content, - Complaint.ofensive_user, - Complaint.fake_user - ] - end - end diff --git a/app/views/learning_objects/index.html.erb b/app/views/learning_objects/index.html.erb deleted file mode 100644 index e50c82b7582f253e8213718c33a1b5cbcfb4783d..0000000000000000000000000000000000000000 --- a/app/views/learning_objects/index.html.erb +++ /dev/null @@ -1,25 +0,0 @@ -<p id="notice"><%= notice %></p> - -<h1>Listing Learning Objects</h1> - -<table> - <thead> - <tr> - <th colspan="3"></th> - </tr> - </thead> - - <tbody> - <% @learning_objects.each do |learning_object| %> - <tr> - <td><%= link_to 'Show', learning_object %></td> - <td><%= link_to 'Edit', edit_learning_object_path(learning_object) %></td> - <td><%= link_to 'Destroy', learning_object, method: :delete, data: { confirm: 'Are you sure?' } %></td> - </tr> - <% end %> - </tbody> -</table> - -<br> - -<%= link_to 'New Learning object', new_learning_object_path %> diff --git a/app/views/learning_objects/index.json.jbuilder b/app/views/learning_objects/index.json.jbuilder deleted file mode 100644 index 6bcb70c3173cb9b75a2cdc32f829874ad1868728..0000000000000000000000000000000000000000 --- a/app/views/learning_objects/index.json.jbuilder +++ /dev/null @@ -1,4 +0,0 @@ -json.array!(@learning_objects) do |learning_object| - json.extract! learning_object, :id - json.url learning_object_url(learning_object, format: :json) -end