search function

This commit is contained in:
Andreas Stephanides
2014-02-08 16:39:56 +01:00
parent 05dbffd4f6
commit d3ac7504dc
11 changed files with 122 additions and 38 deletions

View File

@@ -11,4 +11,19 @@ class HomeController < ApplicationController
def linksnotimplemented
render 'links_notimplemented'
end
def search
unless params['query'].nil? || params['query'].empty?
@neuigkeiten=Neuigkeit.search(params['query'])
@fetprofiles = Fetprofile.search(params['query'])
@themen=Thema.search(params['query'])
else
@neuigkeiten=[]
@fetprofiles=[]
@themen=[]
end
respond_to do |format|
format.html
format.js
end
end
end

View File

@@ -24,6 +24,7 @@ validates :desc, :presence=>true
validates :nachname, length:{minimum: 3},:presence=>true
validates :vorname, length:{minimum: 3},:presence=>true
has_many :users
scope :search, ->(query) {where("nachname like ? or vorname like ? or short like ?", "%#{query}%", "%#{query}%", "%#{query}%")}
accepts_nested_attributes_for :memberships, :reject_if=>lambda{|a| a[:typ].blank?|| a[:start].blank? ||a[:gremium_id].blank?}, :allow_destroy=>true

View File

@@ -24,9 +24,10 @@ class Neuigkeit < ActiveRecord::Base
has_many :calentries, as: :object
mount_uploader :picture, PictureUploader
scope :published, -> {where("datum <= ? AND datum IS NOT NULL", Time.now.to_date).order(:datum).reverse_order}
scope :recent, -> { published.where("updated_at >= ? ",Time.now - 7.days)}
scope :recent, -> { published.order(:datum).reverse_order.limit(15)}
scope :unpublished, -> {where("datum >= ? OR datum IS NULL", Date.today)}
scope :public, ->{includes(:rubrik).where("rubriken.public"=>:true)}
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
accepts_nested_attributes_for :calentries, :allow_destroy=>true , :reject_if=> lambda{|a| a[:start].blank?}
before_validation :sanitize
def datum_nilsave

View File

@@ -18,6 +18,7 @@ class Thema < ActiveRecord::Base
has_one :gremium
validates :themengruppe, :presence => true
validates :title, :presence => true
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
end

View File

@@ -0,0 +1,18 @@
<div class="media">
<span class="pull-left">
<%= image_tag fetprofile.picture.portrait.url %>
</span>
<div class="media-body">
<h2><%= fetprofile.name %></h2>
<p><%= fetprofile.fetmail %></p>
<% if false %>
<p><%= fetprofile.desc %></p>
<% end %>
</div>
</div>

View File

@@ -1,12 +1,4 @@
<div class="media">
<div class="pull-left">
<%= image_tag fetprofile.picture.portrait.url %>
</div>
<div class="media-body">
<h2><%= link_to fetprofile.name, fetprofile %></h2>
<p><%= fetprofile.fetmail %></p>
<p><%= fetprofile.desc.split(" ")[1..20].join(" ") %></p>
<p><%= fetprofile.active %> </p>
</div>
<%= link_to fetprofile, {class: :linkbox} do %>
<%= render :partial=>"fetprofiles/compact", :locals=>{:fetprofile=>fetprofile} %>
<% end %>

View File

@@ -0,0 +1,37 @@
<% unless @neuigkeiten.empty? %>
<h2>Neuigkeiten</h2>
<% end %>
<% @neuigkeiten.each do |neuigkeit| %>
<ul class="unstyled linkbox-list" style="max-width:70em">
<li>
<%= render neuigkeit %>
</li>
</ul>
<% end %>
<% unless @fetprofiles.empty? %>
<h2>Mitarbeiter</h2>
<% end %>
<% @fetprofiles.each do |fetprofile| %>
<ul class="unstyled linkbox-list" style="max-width:70em">
<li>
<%= render fetprofile %>
</li>
</ul>
<% end %>
<% unless @fetprofiles.empty? %>
<h2>Themen</h2>
<% end %>
<% @themen.each do |thema| %>
<ul class="unstyled linkbox-list" style="max-width:70em">
<li><%= link_to thema, {:class=>"linkbox"} do %>
<%= render :partial=>"themen/small", :object=>thema %>
<% end %>
</li>
</ul>
<% end %>

View File

@@ -0,0 +1,17 @@
<div class="content-wrap content-column">
<%= semantic_form_for :search,:remote=>true, :url=>search_home_index_path, :html=>{:id=>"search_form", :method=>'get'} do |f| %>
<%= f.input :query, :input_html => { :name => 'query' } %>
<% end %>
<script>
$( document ).ready(function() {
$("#search_query").bind("keyup", function(event){
$("#search_form").submit();
});
$("#search_query").value="df"
});
</script>
<div id="searchresults">
<%= render :partial=>"home/search_results" %>
</div>
</div>

View File

@@ -0,0 +1 @@
$("#searchresults").html("<%=escape_javascript( render :partial=>'home/search_results' )%>")

View File

@@ -0,0 +1,25 @@
<div class="media">
<div class="pull-left" href="#">
<p><br><%= image_tag neuigkeit.picture.thumb.url unless neuigkeit.picture.url.nil? %>
</p>
</div>
<div class="media-body">
<div>
<small><%= neuigkeit.rubrik.name %></small>
<small class="pull-right"> <%= "am "+ I18n.l(neuigkeit.try(:datum).try(:to_date)) unless neuigkeit.try(:datum).try(:to_date).nil? %></small>
</div>
<h1>
<%= neuigkeit.title%>
</h1>
<%= raw(neuigkeit.text_first_words) unless neuigkeit.text.nil?%>
</div>
<% if neuigkeit.has_calentries? %>
<div class="pull-right" href="#">
<%= image_tag("/iconnavy/time.png") %>
<%= neuigkeit.calentries.first.text %>
</div>
<% end %>
</div>

View File

@@ -1,28 +1,4 @@
<%= link_to [neuigkeit.rubrik,neuigkeit], {class: :linkbox} do %>
<div class="media">
<div class="pull-left" href="#">
<p><br><%= image_tag neuigkeit.picture.thumb.url unless neuigkeit.picture.url.nil? %>
</p>
</div>
<div class="media-body">
<div>
<small><%= neuigkeit.rubrik.name %></small>
<small class="pull-right"> <%= "am "+ I18n.l(neuigkeit.try(:datum).try(:to_date)) unless neuigkeit.try(:datum).try(:to_date).nil? %></small>
</div>
<h1>
<%= neuigkeit.title%>
</h1>
<%= raw(neuigkeit.text_first_words) unless neuigkeit.text.nil?%>
</div>
<% if neuigkeit.has_calentries? %>
<div class="pull-right" href="#">
<%= image_tag("/iconnavy/time.png") %>
<%= neuigkeit.calentries.first.text %>
</div>
<% end %>
</div>
<%= render :partial=>"neuigkeiten/compact",:locals=> {:neuigkeit=> neuigkeit} %>
<% end %>