diff --git a/lib/ext/person.rb b/lib/ext/person.rb index 45d23a9..7eacd04 100644 --- a/lib/ext/person.rb +++ b/lib/ext/person.rb @@ -12,22 +12,22 @@ class Person like_sql = "" values = [] - unless name.nil? and name.blank? - like_sql << "name ILIKE ? AND " - values << "%#{name}%" + unless name.blank? + like_sql << "name ILIKE ? OR identifier ILIKE ? AND " + values << "%#{name}%" << "%#{name}%" end - unless state.nil? and state.blank? + unless state.blank? like_sql << "data ILIKE ? AND " values << "%:state: %#{state}%" end - unless city.nil? and city.blank? + unless city.blank? like_sql << "data ILIKE ? AND " values << "%:city: %#{city}%" end - unless email.nil? and email.blank? + unless email.blank? like_sql << "email ILIKE ? AND " values << "%#{email}%" end diff --git a/lib/mpog_software_plugin.rb b/lib/mpog_software_plugin.rb index 355a785..2fe39a4 100644 --- a/lib/mpog_software_plugin.rb +++ b/lib/mpog_software_plugin.rb @@ -131,9 +131,9 @@ class MpogSoftwarePlugin < Noosfero::Plugin end def search_controller_filters - block = proc do + community_block = proc do results = [] - if params[:action] == "communities" and params[:type] == "Software" + if params[:type] == "Software" softwares = SoftwareInfo.search(params[:name], params[:database_description][:id], params[:programming_language][:id], params[:operating_system][:id], params[:license_info][:id], params[:e_ping], params[:e_mag], params[:internacionalizable], @@ -144,20 +144,42 @@ class MpogSoftwarePlugin < Noosfero::Plugin communities << s.community end results = communities + results = results.paginate(:per_page => 24, :page => params[:page]) + @searches[@asset] = {:results => results} + @search = results + + render :action => :communities end + end + + people_block = proc do + results = [] + + results = environment.people.search(name = params[:name], + state = params[:state], + city = params[:city], + email = params[:email] + ) results = results.paginate(:per_page => 24, :page => params[:page]) @searches[@asset] = {:results => results} @search = results - render :action => :communities + render :action => :people end + [{ :type => "before_filter", + :method_name => "search_person_filters", + :options => { :only=>:people }, + :block => people_block + }, + { + :type => "before_filter", :method_name => "search_software_filters", :options => { :only=>:communities }, - :block => block + :block => community_block }] end @@ -399,24 +421,6 @@ class MpogSoftwarePlugin < Noosfero::Plugin end end - def custom_search params - #:params => {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>"1", "programming_language"=>"1", "operating_system"=>"1", "controlled_vocabulary"=>"Administration", "license_info"=>{"id"=>""}, "e_ping"=>"any", "e_mag"=>"any", "icp_brasil"=>"any", "e_arq"=>"any", "internacionalizable"=>"any", "commit"=>"Search", "controller"=>"search", "action"=>"communities"} - - if params[:action] == "people" - Person.search(params[:name], - params[:state], - params[:city], - params[:email] - ) - elsif params[:action] == "communities" and params[:type] == "Institution" - - elsif params[:action] == "communities" and params[:type] == "Software" - # Replaced by noosfero before_filter instead of hotspot - else - [] # An empty list will trigger noosfero's default communities search - end - end - def controlled_vocabulary_transaction ControlledVocabulary.transaction do context.profile.software_info.controlled_vocabulary.update_attributes!(context.params[:controlled_vocabulary]) -- libgit2 0.21.2