diff --git a/app/controllers/neuigkeiten_controller.rb b/app/controllers/neuigkeiten_controller.rb index 31d371e..f08759a 100755 --- a/app/controllers/neuigkeiten_controller.rb +++ b/app/controllers/neuigkeiten_controller.rb @@ -9,6 +9,11 @@ class NeuigkeitenController < ApplicationController def show @neuigkeit = Neuigkeit.find(params[:id]) @rubrik=@neuigkeit.rubrik + if can?(:shownonpublic, Rubrik) + @rubriken = Rubrik.all + else + @rubriken = Rubrik.where(:public=>true) + end 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 }) diff --git a/app/controllers/rubriken_controller.rb b/app/controllers/rubriken_controller.rb index 0ff05ff..4e44a20 100755 --- a/app/controllers/rubriken_controller.rb +++ b/app/controllers/rubriken_controller.rb @@ -2,14 +2,25 @@ class RubrikenController < ApplicationController before_filter {@toolbar_elements=[]} load_and_authorize_resource def index - @rubriken = Rubrik.all - @neuigkeiten = Neuigkeit.recent - @calentries= Calentry.public + if can?(:shownonpublic, Rubrik) + @rubriken = Rubrik.all + else + @rubriken = Rubrik.where(:public=>true) + end + @neuigkeiten = @rubriken.collect(&:neuigkeiten).map(&:recent).flatten + @calentries= @rubriken.collect(&:calendar).collect(&:calentries).flatten end def show + if can?(:shownonpublic, Rubrik) + @rubriken = Rubrik.all + else + @rubriken = Rubrik.where(:public=>true) + end + @rubrik = Rubrik.find(params[:id]) @moderatoren=User.with_role(:newsmoderator,@rubrik) + @calentries= @rubrik.calentries if can?(:showunpublished, Neuigkeit) @neuigkeiten = @rubrik.neuigkeiten else diff --git a/app/models/ability.rb b/app/models/ability.rb index 1dcb42b..86f364a 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -76,6 +76,7 @@ class Ability if user.has_role?("newsadmin") || user.has_role?( "fetadmin") || user.has_role?( "fetuser") can :manage, Rubrik can :manage, Neuigkeit + can :shownonpublic, Rubrik can :showunpublished, Neuigkeit end diff --git a/app/models/lva.rb b/app/models/lva.rb index 5ca8e97..5a0f5d5 100755 --- a/app/models/lva.rb +++ b/app/models/lva.rb @@ -36,14 +36,18 @@ class Lva < ActiveRecord::Base ERLAUBTE_TYPEN = ['VO', 'UE', 'VU', 'LU', 'SE', 'andere']; + has_paper_trail :ignore=>[:desc, :pruefungsinformation]# Versionsverfolgung + translates :desc,:pruefungsinformation, :fallbacks_for_empty_translations => true, :versioning=>true + attr_accessible :desc, :ects, :lvanr, :name, :stunden, :modul_ids, :semester_ids, :pruefungsinformation, :lernaufwand, :typ, :lecturer_ids + has_and_belongs_to_many :modul,:uniq=>true # Gehört zu einem Modul has_and_belongs_to_many :semester - #Gehört zu einem Semester( derzeit nicht implementiert) has_many :beispiele , :class_name => "Beispiel" has_and_belongs_to_many :lecturers - translates :desc,:pruefungsinformation, :fallbacks_for_empty_translations => true, :versioning=>true + has_many :nlinks, as: :link + scope :search, ->(query) {where("name like ? or lvas.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 @@ -53,7 +57,7 @@ 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 diff --git a/app/views/rubriken/_tabs.html.erb b/app/views/rubriken/_tabs.html.erb index 99d7f09..4478b08 100644 --- a/app/views/rubriken/_tabs.html.erb +++ b/app/views/rubriken/_tabs.html.erb @@ -1,7 +1,7 @@