From a8401391a6ad3dbf5cf94395df35bbe77311b6e6 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Sat, 29 Mar 2014 11:30:46 +0100
Subject: [PATCH] Neuigkeiten Link
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Querverweise für Neuigkeiten
---
app/controllers/neuigkeiten_controller.rb | 58 ++++++++++++++-----
app/controllers/themengruppen_controller.rb | 7 +--
app/models/gallery.rb | 7 +++
app/models/gremium.rb | 4 +-
app/models/lva.rb | 7 ++-
app/models/neuigkeit.rb | 3 +
app/models/nlink.rb | 10 ++++
app/models/thema.rb | 2 +-
app/views/galleries/_nlink.html.erb | 21 +++++++
app/views/galleries/index.html.erb | 21 +++++++
app/views/home/search.html.erb | 2 +-
app/views/lvas/_nlink.html.erb | 3 +
app/views/neuigkeiten/_nlink_list.html.erb | 11 ++++
.../neuigkeiten/_nlink_list_search.html.erb | 12 ++++
app/views/neuigkeiten/show.html.erb | 22 +++++--
app/views/themen/_nlink.html.erb | 1 +
app/views/themengruppen/show.html.erb | 7 ++-
.../themes/2003/themengruppen/show.html.erb | 25 --------
config/routes.rb | 2 +
db/migrate/20140328200432_create_nlinks.rb | 13 +++++
spec/factories/nlinks.rb | 11 ++++
spec/models/nlink_spec.rb | 5 ++
22 files changed, 199 insertions(+), 55 deletions(-)
create mode 100644 app/models/nlink.rb
create mode 100644 app/views/galleries/_nlink.html.erb
create mode 100644 app/views/lvas/_nlink.html.erb
create mode 100644 app/views/neuigkeiten/_nlink_list.html.erb
create mode 100644 app/views/neuigkeiten/_nlink_list_search.html.erb
create mode 100644 app/views/themen/_nlink.html.erb
delete mode 100644 app/views/themes/2003/themengruppen/show.html.erb
create mode 100644 db/migrate/20140328200432_create_nlinks.rb
create mode 100644 spec/factories/nlinks.rb
create mode 100644 spec/models/nlink_spec.rb
diff --git a/app/controllers/neuigkeiten_controller.rb b/app/controllers/neuigkeiten_controller.rb
index df2bd33..575bb09 100755
--- a/app/controllers/neuigkeiten_controller.rb
+++ b/app/controllers/neuigkeiten_controller.rb
@@ -1,28 +1,16 @@
class NeuigkeitenController < ApplicationController
- before_filter {@toolbar_elements=[]}
+ before_filter :load_toolbar_elements, :only=>[:show,:find_link]
load_and_authorize_resource
def show
- @neuigkeit = Neuigkeit.find(params[:id])
+ @neuigkeit = Neuigkeit.find(params[:id])
@rubrik=@neuigkeit.rubrik
+
if !params[:version].nil?
@neuigkeit.assign_attributes(@neuigkeit.translation.versions.reverse[params[:version].to_i].reify.attributes.select{|k,v| @neuigkeit.translated_attribute_names.include? k.to_sym })
-
- # @neuigkeit=Neuigkeit.find(params[:id])
end
@calentries1=@neuigkeit.calentries
- @toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>"Sure?" } if can? :publish, @neuigkeit
- @toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>"Sure?" } if can?(:unpublish, @neuigkeit) && !@neuigkeit.published?
-
- @toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
- @versions= @neuigkeit.translation.versions.select([:created_at]).reverse
- @toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions}
-
- @toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit
-# @toolbar_elements << {:path=> add_calentry_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :text=>"Add Calentry", :icon=>:plus}
-
-
end
def new
@@ -45,7 +33,7 @@ class NeuigkeitenController < ApplicationController
@neuigkeit.calentry=ce
@neuigkeit.save
- render 'edit'
+ render 'edit'
end
def unpublish
@@ -74,6 +62,24 @@ class NeuigkeitenController < ApplicationController
@calentries<< Calentry.new
end
+ def find_link
+ @rubrik=@neuigkeit.rubrik
+ @calentries1=@neuigkeit.calentries
+ @nlink_search = Neuigkeit::LINKTYPES.clone
+
+ @nlink_search.collect!{|t| t.constantize}
+ @nlink_search.collect!{|t| t.search(params[:query]).limit(2)}
+
+
+@nlink_search.flatten!
+
+ render action:"show"
+ end
+ def create_link
+ Nlink.create(:link=>params[:link_type].constantize.find(params[:link_id]),:neuigkeit=>Neuigkeit.find(params[:id]))
+
+ redirect_to action:"show"
+ end
def create
@neuigkeit = Neuigkeit.new(params[:neuigkeit])
@@ -111,4 +117,24 @@ class NeuigkeitenController < ApplicationController
end
end
+
+private
+ def load_toolbar_elements
+ @neuigkeit=Neuigkeit.find(params[:id])
+ @toolbar_elements=[]
+ @toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:publish, @neuigkeit) && @neuigkeit.published?
+ @toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:unpublish, @neuigkeit) && !@neuigkeit.published?
+ @toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
+ @versions= @neuigkeit.translation.versions.select([:created_at]).reverse
+
+ @toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions}
+
+ @toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit
+
+ end
+
+
+
+
+
end
diff --git a/app/controllers/themengruppen_controller.rb b/app/controllers/themengruppen_controller.rb
index 223881d..6506015 100644
--- a/app/controllers/themengruppen_controller.rb
+++ b/app/controllers/themengruppen_controller.rb
@@ -21,14 +21,13 @@ class ThemengruppenController < ApplicationController
# GET /themengruppen/1.json
def show
@themengruppe = Themengruppe.find(params[:id])
- @themen = @themengruppe.themen.order(:priority).reverse
+ @themen = @themengruppe.themen.order(:priority).reverse
@toolbar_elements = []
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('thema.add'), :path=>new_themengruppe_thema_path(@themengruppe)} if can? :new, Themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('themengruppe.edit'), :path=>edit_themengruppe_path(@themengruppe)} if can? :edit, @themengruppe
- @toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.manage"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe
- @toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe
-
+ @toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.manage"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe
+ @toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe
respond_to do |format|
format.html # show.html.erb
diff --git a/app/models/gallery.rb b/app/models/gallery.rb
index ae4afde..bddea61 100644
--- a/app/models/gallery.rb
+++ b/app/models/gallery.rb
@@ -14,4 +14,11 @@ class Gallery < ActiveRecord::Base
WORD_COUNT = 20
attr_accessible :datum, :desc, :name
has_many :fotos
+ has_many :nlinks, as: :link
+ scope :search, ->(query) {where("name like ? or desc like ?", "%#{query}%", "%#{query}%")}
+
+ def title
+ name
+ end
end
+
diff --git a/app/models/gremium.rb b/app/models/gremium.rb
index ebc571d..c119b55 100644
--- a/app/models/gremium.rb
+++ b/app/models/gremium.rb
@@ -23,7 +23,9 @@ class Gremium < ActiveRecord::Base
belongs_to :thema # Gehört zu einem Thema
scope :tabs, -> { where(:typ => [1,3]).order(:typ).order(:name) } # Gremien die in Tabs angezeigt werden (Alle Anderen nur in der Liste
- # Gremium im 2. Fall für die Konstruktion "Mitglied des ... / der ... "
+ scope :search, ->(query) {where("name like ? or desc like ?", "%#{query}%", "%#{query}%")}
+
+ # Gremium im 2. Fall für die Konstruktion "Mitglied des ... / der ... "
accepts_nested_attributes_for :memberships, :reject_if=>lambda{|a| a[:typ].blank?|| a[:start].blank? ||a[:fetprofile_id].blank?}
def fall2
Gremium::ART2FALL[self.geschlecht.to_i].to_s+" "+ self.name.to_s+ ((self.geschlecht.to_i==1||self.geschlecht.to_i==0)? "s":"")
diff --git a/app/models/lva.rb b/app/models/lva.rb
index e963d0d..34b6ab0 100755
--- a/app/models/lva.rb
+++ b/app/models/lva.rb
@@ -44,6 +44,7 @@ class Lva < ActiveRecord::Base
has_many :beispiele , :class_name => "Beispiel"
has_and_belongs_to_many :lecturers
translates :desc,:pruefungsinformation, :fallbacks_for_empty_translations => true, :versioning=>true
+ scope :search, ->(query) {where("name like ? or desc like ?", "%#{query}%", "%#{query}%")}
validates :lvanr,:format=>{ :with => /^[0-9][0-9][0-9]\.[0-9A][0-9][0-9]$/}, :presence=>true, :uniqueness=>true # , :uniqueness=>true # LVA-Nummer muss das Format 000.000 besitzen (uniqueness?) oder 000 für nicht
validates_presence_of :ects # ECTS vorhanden?
@@ -52,6 +53,11 @@ class Lva < ActiveRecord::Base
validates_presence_of :stunden # Stunden Eingetragen?
validates_presence_of :modul # Zugehöriges Modul eingetragen?
# (zumindest eines)
+ has_many :nlinks, as: :link
+
+ def title
+ self.name
+ end
def full_name
return self.typ + ' ' + self.name
end
@@ -69,7 +75,6 @@ class Lva < ActiveRecord::Base
end
-
##
# Lade Daten aus TISS und füge diese in die Datenbank ein.
def tisshash(semester)
diff --git a/app/models/neuigkeit.rb b/app/models/neuigkeit.rb
index 1660869..ab3bdd9 100755
--- a/app/models/neuigkeit.rb
+++ b/app/models/neuigkeit.rb
@@ -28,8 +28,11 @@ class Neuigkeit < ActiveRecord::Base
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}%")}
+ LINKTYPES=["Thema", "Gallery", "Lva"]
accepts_nested_attributes_for :calentries, :allow_destroy=>true , :reject_if=> lambda{|a| a[:start].blank?}
before_validation :sanitize
+ has_many :nlinks
+
def datum_nilsave
self.datum.nil? ? Time.now + 42.years : self.datum
end
diff --git a/app/models/nlink.rb b/app/models/nlink.rb
new file mode 100644
index 0000000..c3130f9
--- /dev/null
+++ b/app/models/nlink.rb
@@ -0,0 +1,10 @@
+class Nlink < ActiveRecord::Base
+ attr_accessible :link_id, :link_type, :neuigkeit_id, :neuigkeit,:link, :sort, :title
+ belongs_to :neuigkeit
+ belongs_to :link, :polymorphic=>true
+ validates :neuigkeit, :presence=>true
+ validates :link, :presence=>true
+validates :link_id, :uniqueness=>{:scope=>[:neuigkeit_id]}
+
+
+end
diff --git a/app/models/thema.rb b/app/models/thema.rb
index 58097ac..c11e5f7 100644
--- a/app/models/thema.rb
+++ b/app/models/thema.rb
@@ -19,6 +19,6 @@ class Thema < ActiveRecord::Base
validates :themengruppe, :presence => true
validates :title, :presence => true
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
-
+ has_many :nlinks, as: :link
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
end
diff --git a/app/views/galleries/_nlink.html.erb b/app/views/galleries/_nlink.html.erb
new file mode 100644
index 0000000..72f2216
--- /dev/null
+++ b/app/views/galleries/_nlink.html.erb
@@ -0,0 +1,21 @@
+
diff --git a/app/views/galleries/index.html.erb b/app/views/galleries/index.html.erb
index 68a8a8f..ed4bb87 100644
--- a/app/views/galleries/index.html.erb
+++ b/app/views/galleries/index.html.erb
@@ -25,6 +25,27 @@
+
<% end %>
<% end %>
diff --git a/app/views/home/search.html.erb b/app/views/home/search.html.erb
index a22bf16..f0a0f2f 100644
--- a/app/views/home/search.html.erb
+++ b/app/views/home/search.html.erb
@@ -1,6 +1,6 @@
<%= 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' } %>
+<%= f.input :query, :input_html => { :name => 'query' } , :label=>false %>
<% end %>