diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 80516ccf63d53c6152492ff84be80eb0433f00cd..ab180a93c9739f4987b9ca6bc1911d7fee3c15c9 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -137,7 +137,7 @@ header { // search .search-input { margin-top: 40px; - margin-bottom: 5px; + margin-bottom: 22px; text-align: right; // text input diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 42f9105d591600c7ab04af8fa37cb4a6a952f91d..106b97dbe9c01f0768f25cdb9a2df90a03e47bb6 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -4,11 +4,16 @@ class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :null_session + before_action :count_learning_objects before_action :configure_permitted_parameters, if: :devise_controller? before_action :set_current_user_collections, if: :user_signed_in? protected + def count_learning_objects + @learning_object_count = learning_object_repository.count_all + end + def set_current_user_collections @user_collections = collection_repository.all Collections::UserContext.new(current_user) end diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index b16e7f87be2c1315615a97d119329bb05a083ddb..def79d77fea07a842051ac311d4723dc0d806ce4 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -4,10 +4,9 @@ class SearchController < ApplicationController def index @types = learning_object_repository.types - @subjects = ['Arte', 'Biologia', 'Ciências', 'Educação FÃsica', 'Filosofia', 'FÃsica', 'Geografia', 'História', 'Matemática', 'Português', 'QuÃmica', 'Sociologia'] + @subjects = Subject.default_list - # 'Ensino Infantil' and 'Ensino Superior' will only exist after creation of new learning objects or update of the old ones - @school_levels = ['Ensino Infantil', 'Ensino Fundamental Inicial', 'Ensino Fundamental', 'Ensino Fundamental Final', 'Ensino Médio', 'Ensino Superior', 'Ensino Profissionalizante'] + @school_levels = ['Educação Infantil', 'Ensino Fundamental', 'Ensino Médio'] end def fetch diff --git a/app/models/subject.rb b/app/models/subject.rb index 78f8f4cebec2cf62d315f5bbe7889c2c7ed904cb..ca0c0852fdc3d5d1ed5767fdf560eabf93c66640 100644 --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -13,4 +13,8 @@ class Subject def subject_repository Portalmec::Application.repository.for :subject end + + def self.default_list + ['Arte', 'Biologia', 'Ciências', 'Educação FÃsica', 'Filosofia', 'FÃsica', 'Geografia', 'História', 'Matemática', 'Português', 'QuÃmica', 'Sociologia'] + end end diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index fba180810448f31eab2da116a1fd88b6115f23dc..11682635a4996a81b7e15e2b93c4b66cadbc5f65 100644 --- a/app/repositories/orient_db/learning_object_repository.rb +++ b/app/repositories/orient_db/learning_object_repository.rb @@ -13,7 +13,7 @@ module OrientDb def increment_views(user, learning_object) values = {date: sanitize_orientdb_values(Time.now)} - # If doesn't exist edges from user and learning object, create it and increment attribute + # If doesn't exist edges from user and learning object, create it and increment attribute if !edge_exists? "Views", user.rid, learning_object.id create_and_set_edge "Views", user.rid, learning_object.id, values learning_object.views = learning_object.views + 1 @@ -30,7 +30,7 @@ module OrientDb def download(user, learning_object) download_edge_class = 'Downloads' values = {date: sanitize_orientdb_values(Time.now)} - + create_and_set_edge download_edge_class, user.rid, learning_object.id, values learning_object.downloads = learning_object.downloads + 1 end @@ -57,7 +57,7 @@ module OrientDb if !liked? user, learning_object # The properties of edge. In this case, only date for edge 'Likes' values = {date: sanitize_orientdb_values(Time.now)} - + create_and_set_edge like_edge_class, user.rid, learning_object.id, values learning_object.likes = learning_object.likes + 1 end @@ -234,9 +234,12 @@ module OrientDb 'score DESC' end - query = "SELECT FROM LearningObject WHERE [name, description] LUCENE '#{qry}'" - query = query + " AND out('IsAbout') CONTAINS (name in ['" + params[:subject].join("','") + "'])" unless params[:subject].blank? - query = query + " AND out('IsAbout') CONTAINS (name in ['" + params[:school_level].join("','") + "'])" unless params[:school_level].blank? + query = "SELECT FROM LearningObject WHERE [name, description, author] LUCENE '#{qry}'" + query += " AND out('IsAbout') CONTAINS (name in ['" + params[:subject].join("','") + "'])" unless params[:subject].blank? + unless params[:school_level].blank? + params[:school_level] << 'Ensino Fundamental Inicial' << 'Ensino Fundamental Final' if params[:school_level].include? 'Ensino Fundamental' + query += " AND out('IsAbout') CONTAINS (name in ['" + params[:school_level].join("','") + "'])" + end query = "SELECT * FROM (" + query + ") WHERE " + fetch_types(params[:type]) unless params[:type].blank? query = "SELECT * FROM (" + query + ") WHERE " + fetch_year(params[:year]) unless params[:year].blank? query = "SELECT * FROM (" + query + ") ORDER BY #{order}" @@ -281,6 +284,17 @@ module OrientDb qry end + def count_all + Rails.cache.fetch('learning_object/count_all', expires_in: 6.hours) do + result = connection.query 'SELECT COUNT(*) as count FROM LearningObject', limit: 1 + result[0]["count"] + end + end + + def count_likes(learning_object) + get_in_edges_count "Likes", learning_object.id + end + def count_likes(learning_object) get_in_edges_count "Likes", learning_object.id end diff --git a/app/views/search/index.html.erb b/app/views/search/index.html.erb index f05dc2e30b57cb825a405c45516f0516ae425a20..05daf66b3ff69cc5ab6b41f9da91839d3e016743 100644 --- a/app/views/search/index.html.erb +++ b/app/views/search/index.html.erb @@ -1,7 +1,6 @@ <%= content_for(:body_attributes) do %> data-no-turbolink <% end %> <div class="row"> <div class="col-sm-3 search-sidebar" id="menu-left"> - <!-- <h2>Busca Avançada</h2> --> <div class="media filters"> <div class="media-left"> <%= image_tag 'icons/filter.png', width:'40px', height:'40px' %> @@ -22,239 +21,12 @@ <% end %> </div> - <!-- <div class="dropdown-element"> - <h4 class="dropdown">Arte<span class="caret caret-align-right"/></h4> - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="Pinturas">Conjuntos</option> - <option value="Historia">História Da Arte</option> - </select> - </div> - <h4 class="dropdown">Biologia<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <option value="Plantas">Plantas</option> - <option value="">...</option> - <option value="">...</option> - </select> - </div> - <h4 class="dropdown">Ciências<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">Educação FÃsica<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">Ensino Religioso<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">FÃsica<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">Filosofia<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">Geografia<span class="caret caret-align-right"/></h4> - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">História<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">História do Brasil</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown"> LÃngua estrangeira moderna <span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">LÃngua Portuguesa<span class="caret caret-align-right"/></h4> - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">Todos</option> - <optgroup label="Básico"> - <option value="">...</option> - <option value="">...</option> - </optgroup> - <optgroup label="Avançada"> - <option value="">...</option> - </optgroup> - </select> - </div> - <h4 class="dropdown">Matemática<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="Conjunto">Conjuntos</option> - <option value="Soma">Soma</option> - <option value="Algebra">Ãlgebra</option> - </select> - </div> - <h4 class="dropdown">QuÃmica<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">..</option> - <option value="">..</option> - <option value="">..</option> - </select> - </div> - <h4 class="dropdown">Sociologia<span class="caret caret-align-right"/></h4> - - <div> - <select class="select-tag-container filter-subject" multiple="multiple"> - <option value="">..</option> - <option value="">..</option> - <option value="">..</option> - </select> - </div> - </div> --> - <!--fim materias --> <% unless @types.blank? %> <h3 class="dropdown open">Conteúdo<span class="caret caret-align-right"/></h3><!--Tipo 1--> <div class="dropdown-element"> <% @types.each do |type| %> <label class="label-checkbox"><input value="<%= type %>" name="filter-type" type="checkbox"> <%= type %></label><br/> <% end %> - <!-- <table class="tipo1" style="width:100%"> - <tr> - <td><p>MÃdia</p></td> - <td></td> - </tr> - <tr> - <td><input value="Fotos" name="filter-type" type="checkbox"> Fotos</td> - <td><input value="Imagens" name="filter-type" type="checkbox"> Imagens</td> - </tr> - <tr> - <td><input value="Ãudio" name="filter-type" type="checkbox"> Ãudio</td> - <td><input value="VÃdeos" name="filter-type" type="checkbox"> VÃdeos</td> - </tr> - <tr> - <td><input value="Apresentações MultimÃdia" name="filter-type" type="checkbox"> Apresentações MultimÃdia</td> - <td><input value="Apps" name="filter-type" type="checkbox"> Apps</td> - </tr> - <tr> - <td></td> - <td></td> - </tr> - <tr> - <td><p>Textos</p></td> - <td></td> - </tr> - <tr> - <td><input value="Anais" name="filter-type" type="checkbox"> Anais</td> - <td><input value="Artigos Web" name="filter-type" type="checkbox"> Artigos Web</td> - </tr> - <tr> - <td><input value="CapÃtulos de Livros" name="filter-type" type="checkbox"> CapÃtulos de Livros</td> - <td><input value="Dissertações" name="filter-type" type="checkbox"> Dissertações</td> - </tr> - <tr> - <td><input value="Livros" name="filter-type" type="checkbox"> Livros</td> - <td><input value="Monografias" name="filter-type" type="checkbox"> Monografias</td> - </tr> - <tr> - <td><input value="Periódicos" name="filter-type" type="checkbox"> Periódicos</td> - <td><input value="Revistas" name="filter-type" type="checkbox"> Revistas</td> - </tr> - <tr> - <td><input value="Teses" name="filter-type" type="checkbox"> Teses</td> - </tr> - <tr> - <td></td> - <td></td> - </tr> - <tr> - <td><p>Outros</p></td> - <td></td> - </tr> - <tr> - <td><input value="Planos de Aula" name="filter-type" type="checkbox"> Planos de Aula</td> - </tr> - </table> --> </div> <% end %> @@ -266,54 +38,7 @@ <% end %> </div> </div> - <!-- fim div class="nestedAccordion"--> - - <!-- <div class="nestedAccordion"> - <h3 class="dropdown">Ano de Publicação<span class="caret caret-align-right"/></h3> - <div class="dropdown-element"> - <form id="filter-year"> - <input type="radio" name="year" value="single" checked>Ano:<br/> - <input type="text" name="singleYear" size="8"> - <br/> - <input type="radio" name="year" value="range">Intervalo:<br/> - <input type="text" name="startYear" size="8"> - <input type="text" name="endYear" size="8"> - <br/><br/> - <button type="submit" class="btn btn-default">Pesquisar</button> - </form> - </div> - - <h3 class="dropdown">Pesquisa Avançada<span class="caret caret-align-right"/></h3> - <form method="get" class="regex"> - <div class="dropdown-element"> - <table style="width:100%"> - <tr> - <td>Todas estas palavras:</td> - <td><input type="text" name="all" ></td> - </tr> - <tr> - <td>A frase exata:</td> - <td><input type="text" name="exact" ></td> - </tr> - <tr> - <td>Qualquer uma destas palavras:</td> - <td><input type="text" name="any"></td> - </tr> - <tr> - <td>Nenhuma destas palavras:</td> - <td><input type="text" name="none"></td> - </tr> - <tr> - <td></td> - <td align="right"><br> - <button type="submit" class="btn btn-default regex-submit">Pesquisar</button> - </td> - </tr> - </table> - </div> - </form> - </div>--> </div> - <!--/span col sm-4--> <!-- search results --> <div class="col-sm-9"> @@ -326,7 +51,7 @@ <div class="col-sm-6" style="text-align: right"> <form method="get"> <input type="hidden" name="qry" value="<%= params["qry"] %>"> - + <label class="result-info">ordenar por </label> <select class="order sort-dropdown" name="order"> <option value="">relevância</option> <option value="author">autores</option> diff --git a/app/views/shared/application/_header.html.erb b/app/views/shared/application/_header.html.erb index 189269e96931d1d56b22d4140085f330665d9c3a..7569168e486b5f8a2cf2bf6cddd5a3a3e7c1b388 100644 --- a/app/views/shared/application/_header.html.erb +++ b/app/views/shared/application/_header.html.erb @@ -37,17 +37,12 @@ <div class="search-input"> <form action="/search" method="get"> <div class="input-group" id="search"> - <input type="text" placeholder="buscar" class="form-control" name="query" id="main_search"> - - - - + <input type="text" placeholder="buscar em <%= number_with_delimiter(@learning_object_count, delimiter: ".") %> objetos educacionais" class="form-control" name="query" id="main_search"> <div class="input-group-btn"> <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button> </div> </div> </form> - <%= link_to 'busca avançada', search_path, class: 'search-label' %> </div> </div> @@ -119,4 +114,4 @@ </div> </div> </div> -</header> \ No newline at end of file +</header>