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 @@ +
+ <%= if nlink.desc.split.size > Gallery::WORD_COUNT + nlink.desc.split[0..Gallery::WORD_COUNT].join(" ") + " ..." + else + nlink.desc + end%> +
++ <%= if gallery.desc.split.size > Gallery::WORD_COUNT + gallery.desc.split[0..Gallery::WORD_COUNT].join(" ") + " ..." + else + gallery.desc + end%> +
+