diff --git a/app/builders/language_builder.rb b/app/builders/language_builder.rb new file mode 100644 index 0000000000000000000000000000000000000000..7263a195a3557f50d561157e925a023892a44a18 --- /dev/null +++ b/app/builders/language_builder.rb @@ -0,0 +1,22 @@ +class LanguageBuilder < Builder + ## + # receive a list of ids and return a list of languages + # useful for create a new learning object + # + def self.build(objects = []) + super(language_repository, objects, true, 'rid') + end + + def self.build_from_orientdb(args = {}) + super(args) do + obj = Language.new( + id: args['@rid'], + name: args['name'], + code: args['code'] + ) + obj + end + end + + private +end diff --git a/app/builders/learning_object_builder.rb b/app/builders/learning_object_builder.rb index 8f7eec29af5b9cfda451a3dfe90c724cc185e485..16d0b2af8c5d00aa11c6de3938796b1aa069c8a4 100644 --- a/app/builders/learning_object_builder.rb +++ b/app/builders/learning_object_builder.rb @@ -35,11 +35,7 @@ class LearningObjectBuilder < Builder private def self.build_bitstreams_collection(bitstreams) - bitstreams.map do |bitstream| - hash = bitstream - hash = JSON.parse(bitstream) if bitstream.class == String - ::LearningObject::AttachmentBuilder.build_from_orientdb(hash) - end + bitstreams.map {|bitstream| ::LearningObject::AttachmentBuilder.build_from_orientdb(JSON.parse(bitstream)) } end end diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb index 2d009d4e25c5612d1ddbabc992daf12274f84b99..281440f028b375722cadec2fcb9bc12d5015735a 100644 --- a/app/controllers/learning_objects_controller.rb +++ b/app/controllers/learning_objects_controller.rb @@ -23,6 +23,7 @@ class LearningObjectsController < ApplicationController @school_levels = ['EducaçÃĢo Infantil', 'Ensino Fundamental', 'Ensino MÃĐdio'] @subjects = Subject.default_list @types = learning_object_repository.types + @languages = language_repository.all end # GET /learning_objects/1/edit diff --git a/app/models/language.rb b/app/models/language.rb new file mode 100644 index 0000000000000000000000000000000000000000..7f310cdc03027afcb2ad8d7d9acfec424f45e48f --- /dev/null +++ b/app/models/language.rb @@ -0,0 +1,8 @@ +class Language + include ActiveModel::Model + include RepositoriesProxy + include OrientDbSerializable + include Metadatable + + attr_accessor :id, :name, :code +end \ No newline at end of file diff --git a/app/repositories/orient_db/associations/languages_association.rb b/app/repositories/orient_db/associations/languages_association.rb new file mode 100644 index 0000000000000000000000000000000000000000..a84ad8f1c6dd19e3549d3602dc68d71d51aa52bb --- /dev/null +++ b/app/repositories/orient_db/associations/languages_association.rb @@ -0,0 +1,14 @@ +class OrientDb::Associations::LanguagesAssociation < OrientDb::Association + + def can_create? + true + end + + protected + + def execute + create_edge("HasLang", @object.id, @object.language) + end + +end + diff --git a/app/repositories/orient_db/associations/learning_object_associations.rb b/app/repositories/orient_db/associations/learning_object_associations.rb index 888f4cddf1de226b71831a0f6afacc56f8af0f56..f6ef622337f682ed65c7393c5b75a7a54d6e0b7e 100644 --- a/app/repositories/orient_db/associations/learning_object_associations.rb +++ b/app/repositories/orient_db/associations/learning_object_associations.rb @@ -4,7 +4,8 @@ class OrientDb::Associations::LearningObjectAssociations < OrientDb::Association [ OrientDb::Associations::SubjectsAssociation.new(object, connection), OrientDb::Associations::AttributesAssociation.new(object, connection), - OrientDb::Associations::PublisherAssociation.new(object, connection) + OrientDb::Associations::PublisherAssociation.new(object, connection), + OrientDb::Associations::LanguagesAssociation.new(object, connection) ] end diff --git a/app/repositories/orient_db/language_repository.rb b/app/repositories/orient_db/language_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..33b4b2228907b13bf72f3aa93a6e1a11dd42ab22 --- /dev/null +++ b/app/repositories/orient_db/language_repository.rb @@ -0,0 +1,14 @@ +require 'json' +module OrientDb + class LanguageRepository < Base + include OrientDb::Methods::SocialMethods + include OrientDb::Methods::EdgeMethods + include OrientDb::Methods::CountableMethods + include RepositoriesProxy + + def all + result = connection.query("Select from Language") + build_objects result + end + end +end diff --git a/app/views/learning_objects/_form.html.erb b/app/views/learning_objects/_form.html.erb index c82330503d3626ac311a5d29cae3ff31e0a9a9bd..ec7ba2976a3cc109b7fd988e9e737cd028b4cc9e 100644 --- a/app/views/learning_objects/_form.html.erb +++ b/app/views/learning_objects/_form.html.erb @@ -27,25 +27,26 @@ <%= f.label :description, "Descreva seu objeto" %> <%= f.text_area :description, class: "form-control" %><br> - <%= f.label :language, "Idioma do objeto" %> - <%= f.text_field :language, class: "form-control" %><br> - + <%= f.label :language, "Idioma do objeto" %><br> + <%= f.collection_select(:language, @languages, :id, :name,{ prompt: "Por favor informe o idioma do objeto "}, {class: "form-control"})%> + <br> <%= f.label :author, "Autor" %> <%= f.text_field :author, class: "form-control" %><br> <%= f.label :type, "Tipo do objeto" %> <% @types.each do |type| %> - <br><input type="radio" name="learning_object[type]" value="<%= type %>"> <%= type %> + <div class="radio"> + <label><input type="radio" name="learning_object[type]" value="<%= type %>"> <%= type %></label> + </div> <% end %> - <br><br> - <%= f.label :subjects, 'Assuntos (Selecione 1 ou mais assuntos)' %> + <%= f.label :subjects, 'Assuntos' %> <select id='subjectSelect' name="learning_object[subjects][]" multiple> <%= @subjects.each do |subject| %> <option value='<%= subject.id %>'><%= subject.name %></option> <% end %> </select> - <br><br> + <span class="help-block">Selecione um ou mais assuntos</span> <%= f.label :school_level, "NÃvel Escolar" %><br> <select name="learning_object[school_level]"> diff --git a/config/initializers/repositories.rb b/config/initializers/repositories.rb index 73115d23bec271f125d40c604098efbd202cb35c..2220f03bac40a4f6f3376350491e8956b19ff6b1 100644 --- a/config/initializers/repositories.rb +++ b/config/initializers/repositories.rb @@ -4,6 +4,7 @@ orientdb_client = OrientdbService.create_client repositories = { learning_object: OrientDb::LearningObjectRepository.new(orientdb_client), + language: OrientDb::LanguageRepository.new(orientdb_client), user: UserRepositoryProxy.new(OrientDb::UserRepository.new(orientdb_client)), subject: OrientDb::SubjectRepository.new(orientdb_client), institution: OrientDb::InstitutionRepository.new(orientdb_client),