diff --git a/app/controllers/studien_controller.rb b/app/controllers/studien_controller.rb index a438c9f..4d0a0b3 100755 --- a/app/controllers/studien_controller.rb +++ b/app/controllers/studien_controller.rb @@ -99,74 +99,76 @@ class StudienController < ApplicationController @module=Modul.all @lvas=Lva.all @beispiele=Beispiel.all + else + if !@new_params[:studium].nil? + @studien = [Studium.find(@new_params[:studium])] else - if !@new_params[:studium].nil? - @studien = [Studium.find(@new_params[:studium])] - else - @studien = Studium.all - end - if !@new_params[:modulgruppe].nil? - @modulgruppen = [Modulgruppe.find(@new_params[:modulgruppe])] - temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien - @studien=@studien.select{|k| temp.include?(k)} + @studien = Studium.all + end + if !@new_params[:modulgruppe].nil? + @modulgruppen = [Modulgruppe.find(@new_params[:modulgruppe])] + temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien + @studien=@studien.select{|k| temp.include?(k)} - else - @modulgruppen = Modulgruppe.all - temp = @studien.map{|x| x.modulgruppen}.flatten.uniq # Studien forcen Modulgruppen - @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} + else + @modulgruppen = Modulgruppe.all + temp = @studien.map{|x| x.modulgruppen}.flatten.uniq # Studien forcen Modulgruppen + @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} + end + if !@new_params[:modul].nil? + @module = [Modul.find(@new_params[:modul])] + temp = @module.map{|x| x.modulgruppen}.flatten.uniq # Force Modulgruppen + @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} + temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien + @studien=@studien.select{|k| temp.include?(k)} + + else + @module = Modul.all + temp = @modulgruppen.map{|x| x.moduls}.flatten.uniq + @module=@module.select{|k| temp.include?(k)} + end + if !@new_params[:lva].nil? + @lvas = [Lva.find(@new_params[:lva])] + temp = @lvas.map{|x| x.modul}.flatten.uniq + @module=@module.select{|k| temp.include?(k)} + temp = @module.map{|x| x.modulgruppen}.flatten.uniq # Force Modulgruppen + @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} + temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien + @studien=@studien.select{|k| temp.include?(k)} + else + @lvas = Lva.all + temp = @module.map{|x| x.lvas}.flatten.uniq #Force Module + @lvas=@lvas.select{|k| temp.include?(k)} + end + if !@new_params[:beispiel].nil? + @beispiele = [Beispiel.find(@new_params[:beispiel])] + temp = @lvas.map{|x| x.beispiele}.flatten.uniq #Force Force Lvas + @lvas=@lvas.select{|k| temp.include?(k)} + temp = @module.map{|x| x.lvas}.flatten.uniq #Force Module + @module=@module.select{|k| temp.include?(k)} + temp = @module.map{|x| x.modulgruppen}.flatten.uniq # Force Modulgruppen + @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} + temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien + @studien=@studien.select{|k| temp.include?(k)} + + + else + @beispiele = Beispiel.all + temp = @lvas.map{|x| x.beispiele}.flatten.uniq # Force beispiel + @beispiele=@beispiele.select{|k| temp.include?(k)} + end end - if !@new_params[:modul].nil? - @module = [Modul.find(@new_params[:modul])] - temp = @module.map{|x| x.modulgruppen}.flatten.uniq # Force Modulgruppen - @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} - temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien - @studien=@studien.select{|k| temp.include?(k)} - - else - @module = Modul.all - temp = @modulgruppen.map{|x| x.moduls}.flatten.uniq - @module=@module.select{|k| temp.include?(k)} - end - if !@new_params[:lva].nil? - @lvas = [Lva.find(@new_params[:lva])] - temp = @lvas.map{|x| x.modul}.flatten.uniq - @module=@module.select{|k| temp.include?(k)} - temp = @module.map{|x| x.modulgruppen}.flatten.uniq # Force Modulgruppen - @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} - temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien - @studien=@studien.select{|k| temp.include?(k)} - else - @lvas = Lva.all - temp = @module.map{|x| x.lvas}.flatten.uniq #Force Module - @lvas=@lvas.select{|k| temp.include?(k)} - end - if !@new_params[:beispiel].nil? - @beispiele = [Beispiel.find(@new_params[:beispiel])] - temp = @lvas.map{|x| x.beispiele}.flatten.uniq #Force Force Lvas - @lvas=@lvas.select{|k| temp.include?(k)} - temp = @module.map{|x| x.lvas}.flatten.uniq #Force Module - @module=@module.select{|k| temp.include?(k)} - temp = @module.map{|x| x.modulgruppen}.flatten.uniq # Force Modulgruppen - @modulgruppen = @modulgruppen.select{|k| temp.include?(k)} - temp = @modulgruppen.map{|x| x.studium}.flatten.uniq # Force Studien - @studien=@studien.select{|k| temp.include?(k)} - - - else - @beispiele = Beispiel.all - temp = @lvas.map{|x| x.beispiele}.flatten.uniq # Force beispiel - @beispiele=@beispiele.select{|k| temp.include?(k)} - end -end @messages = [] for s in @studien if s.valid? @messages << s.name + ' hat keine Modulgruppe' if s.modulgruppen.count == 0 + else - @messages << s.name + ': ' + @messages << ''+s.name + ': ' @messages << s.errors.full_messages + @messages << '' end end for mg in @modulgruppen @@ -174,8 +176,9 @@ end if mg.valid? @messages << mg.name + ' hat kein Modul' if mg.moduls.count == 0 else - @messages << mg.name + ': ' + @messages << ''+mg.name + ': ' @messages << mg.errors.full_messages + @messages << '' end end for m in @module @@ -184,31 +187,43 @@ end @messages << m.name + ' hat keine Modulgruppe' if m.modulgruppen.count == 0 @messages << m.name + ' hat keine Lvas' if m.lvas.count == 0 else - @messages << m.name + ': ' + @messages << ''+m.name + ': ' @messages << m.errors.full_messages + @messages << '' end end for lva in @lvas if lva.valid? @messages << lva.name + ' hat keine Module' if lva.modul.count == 0 - + for s in @studien + stu_sem = s.semester.map{|l| l.lvas}.flatten.uniq.index(lva) + stu_mod = s.modulgruppen.map{|m| m.moduls}.flatten.map{|l| l.lvas}.flatten.uniq.index(lva) + if (stu_sem.nil? && !stu_mod.nil?) + @messages << lva.name + ' erscheint nicht in der Semesteransicht von ' +s.name + ' aber in der Modulgruppenansicht' + end + if (!stu_sem.nil? && stu_mod.nil?) + @messages << lva.name + ' erscheint in der Semesteransicht von ' +s.name + ' aber nicht in der Modulgruppenansicht' + end + end else - @messages << lva.name + ': ' + @messages << ''+lva.name + ': ' @messages << lva.errors.full_messages + @messages << '' end end for b in @beispiele if b.valid? @messages << b.name + ' hat keine Lva' if lva.moduls else - @messages << b.name + ': ' + @messages << ''+b.name + ': ' @messages << b.errors.full_messages + @messages << '' end end render 'studien/verwalten' end - + def default_url_options {:ansicht=> params[:ansicht], :studium=> params[:studium], diff --git a/app/models/studium.rb b/app/models/studium.rb index 94177f9..8a204dc 100755 --- a/app/models/studium.rb +++ b/app/models/studium.rb @@ -12,7 +12,7 @@ # created_at :datetime not null # updated_at :datetime not null class Studium < ActiveRecord::Base - attr_accessible :desc, :name, :typ, :zahl + attr_accessible :desc, :name, :typ, :zahl, :semester has_many :modulgruppen, inverse_of: :studium, :class_name => "Modulgruppe", :dependent => :destroy has_many :semester, :dependent => :destroy diff --git a/app/views/studien/_verwalten_menu.html.erb b/app/views/studien/_verwalten_menu.html.erb index a646743..0c37f91 100644 --- a/app/views/studien/_verwalten_menu.html.erb +++ b/app/views/studien/_verwalten_menu.html.erb @@ -1,7 +1,7 @@
- <%= params[:studium].nil? ? "Studium" : Studium.find(params[:studium]).name %> + <%= params[:studium].nil? ? I18n.t("filter.studium") : Studium.find(params[:studium]).name %>
- <%= params[:modulgruppe].nil? ? "Modulgruppe" : Modulgruppe.find(params[:modulgruppe]).name %> + <%= params[:modulgruppe].nil? ? I18n.t("filter.modulgruppe") : Modulgruppe.find(params[:modulgruppe]).name %> @@ -26,7 +26,7 @@
- <%= params[:modul].nil? ? "Modul" : Modul.find(params[:modul]).name %> + <%= params[:modul].nil? ? I18n.t("filter.modul") : Modul.find(params[:modul]).name %> @@ -39,7 +39,7 @@
- <%= params[:lva].nil? ? "LVA" : Lva.find(params[:lva]).name %> + <%= params[:lva].nil? ? I18n.t("filter.lva") : Lva.find(params[:lva]).name %> @@ -51,7 +51,7 @@
- <%= params[:beispiel].nil? ? "Beispiele" : Beispiel.find(params[:beispiel]).name %> + <%= params[:beispiel].nil? ? I18n.t("filter.beispiel") : Beispiel.find(params[:beispiel]).name %> @@ -62,6 +62,7 @@ <% end %>
- <%= link_to 'Alle Filter Löschen', studien_verwalten_path(:studium=>nil, :modulgruppe=>nil, :modul=>nil, :lva=>nil, :beispiel=>nil), :class=>"btn" %> -
+ <%= link_to I18n.t("filter.reset"), studien_verwalten_path(:studium=>nil, :modulgruppe=>nil, :modul=>nil, :lva=>nil, :beispiel=>nil), :class=>"btn" %> + + diff --git a/app/views/studien/verwalten.html.erb b/app/views/studien/verwalten.html.erb index 9674023..ca64fe5 100644 --- a/app/views/studien/verwalten.html.erb +++ b/app/views/studien/verwalten.html.erb @@ -1,63 +1,89 @@
<%= render 'studien/tabs'%>
-
-

Verwaltung <%=@title%>

-
-
<%= render 'studien/verwalten_menu'%>
-
-
-
-
- <% @messages.flatten.each do |m| %>
- <%= m.to_s %> - <% end %> -
-
-
-

Studien <%= link_to "new", new_studium_path %>

- <% @studien.each do |s| %> - <%= link_to s.name, s %> <%= (s.valid?) ? "Gültig" : "Problemfall" %>
- <% end %> -
-
-

Modulgruppen <%= link_to 'new', new_studium_modulgruppe_path(Studium.first) unless Studium.first.nil? %>

- <% @modulgruppen.each do |mg| %> - <%= link_to mg.name, mg %><%=' ('+mg.studium.name.to_s+')' unless mg.studium.nil? %> <%= (mg.valid?) ? "Gültig" : "Problemfall" %>
- <% end %> -
-
-
-
-

Module <%= link_to "new", new_modul_path %>

- <% @module.each do |m| %> - <%= link_to m.name, m %> ( - <% m.modulgruppen.each do |mg| %> - <%=mg.name.to_s+ ' ' %> - <% end %> - ) | <%= (m.valid?) ? "Gültig" : "Problemfall" %>
- <% end %> - -
-
-

LVas <%= link_to "new", new_lva_path %>

- <% @lvas.each do |lva| %> - <%= link_to lva.name, lva %> | - <%= (lva.valid?) ? "Gültig" : "Problemfall" %>
- - <% end %> -
-
-

Beispiele <%= link_to "new", new_beispiel_path %>

- <% @beispiele.each do |b| %> - <%= link_to b.name, b %> - <% end %> +
+
+
+

<%= I18n.t("studien.verwaltung") %>

+ <%= I18n.t("filter.explanation").html_safe %> + <%= render 'studien/verwalten_menu' %> +
+ +
+
+

Studien <%= link_to "new", new_studium_path %>

+ <% @studien.each do |s| %> + <%= link_to s.name, s %> <%= (s.valid?) ? "Gültig" : "Problemfall" %>
+ <% end %> + +
+
+
+
+ +
+
+

Modulgruppen <%= link_to 'new', new_studium_modulgruppe_path(Studium.first) unless Studium.first.nil? %>

+ <% @modulgruppen.each do |mg| %> + <%= link_to mg.name, mg %> | <%= (mg.valid?) ? "Gültig" : "Problemfall" %>
+ <% end %> +
+
+
+
+

Module <%= link_to "new", new_modul_path %>

+ <% @module.each do |m| %> + <%= link_to m.name, m %> + | <%= (m.valid?) ? "Gültig" : "Problemfall" %>
+ <% end %> +
+
+
+
+

LVas <%= link_to "new", new_lva_path %>

+ <% @lvas.each do |lva| %> + <%= link_to lva.name, lva %> | + <%= (lva.valid?) ? "Gültig" : "Problemfall" %>
+ + <% end %> +
+
+
+
+

Beispiele <%= link_to "new", new_beispiel_path %>

+ <% @beispiele.each do |b| %> + <%= link_to b.name, b %> + <% end %> +
+
+ + + + +
+
+
+
+

Error Log

+
    +
  • Red: Error, Solve immediately
  • +
  • Black: Warning, should be solved
  • +
  • Green: Everything is fine
  • +
+
+
    + <% @messages.flatten.each do |m| %>
    +
  • <%= m.html_safe %>
  • + <% end %> +
+ <%= I18n.t("verwalten.fehler.keine").html_safe if @messages.empty?%> +
+
+
+
+
- - - - - +
diff --git a/config/locales/de.yml b/config/locales/de.yml index 84fa7a6..94ea21c 100755 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -13,6 +13,7 @@ de: allestudien: "Alle Studien" loeschen: "Dieses Studium löschen" edit: "Studium bearbeiten" + verwaltung: "Studien verwalten" modul: edit: "Modul bearbeiten" list: "Alle Module" @@ -102,6 +103,19 @@ de: taken: "Der Name ist bereits vergeben" typ: inclusion: 'Wählen Sie "Bachelor" oder "Master" aus' - - + modul: + attributes: + modulgruppen: + blank: "Wählen Sie zumindest eine Modulgruppe aus" + filter: + explanation: "Per Dropdown-Menü kann nach einzelnen Objekten gefiltert werden. Die Filter können kombiniert werden, wobei nur erlaubte Kombinationen möglich sind. Solange validation-Fehler (im Log rot und fett) auftreten, keine Filter verwenden" + studium: "Studium" + modulgruppe: "Modulgruppe" + modul: "Modul" + lva: "Lva" + beispiel: "Beispiel" + reset: "Alle Filter zurücksetzen" + verwalten: + fehler: + keine: "Keine Fehlermeldungen oder Warnungen"