diff --git a/app/assets/stylesheets/formtastic-changes.css.scss b/app/assets/stylesheets/formtastic-changes.css.scss
index 192ee43..298df07 100644
--- a/app/assets/stylesheets/formtastic-changes.css.scss
+++ b/app/assets/stylesheets/formtastic-changes.css.scss
@@ -5,8 +5,6 @@ form.formtastic textarea {
width:90%;
height:20em;
}
-
-
div.form-group {
border-width: 1px;
border-style: none;
@@ -17,4 +15,10 @@ div.verwalten-block {
border-width: 1px;
border-style: solid;
padding: 5px;
-}
\ No newline at end of file
+}
+
+form.formtastic .input label.control-label {
+font-weight:bold;
+font-size:125%;
+}
+
diff --git a/app/assets/stylesheets/lvas.css.scss b/app/assets/stylesheets/lvas.css.scss
index 797b72c..9084fc3 100755
--- a/app/assets/stylesheets/lvas.css.scss
+++ b/app/assets/stylesheets/lvas.css.scss
@@ -1,3 +1,27 @@
// Place all the styles related to the lvas controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
+
+div.lva-semester {
+border: solid;
+border-width: 1px;
+margin: 1px;
+padding: 5px;
+border-color: green;
+border-radius: 5px;
+}
+div.lva-sidebar {
+border:solid;
+border-width: 1px;
+margin: 2px;
+padding:5px;
+border-radius:5px;
+}
+div.lva-beispiele {
+border:solid;
+border-width: 1px;
+margin: 2px;
+padding:5px;
+border-radius:5px;
+border-color: green;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/studien.css.scss b/app/assets/stylesheets/studien.css.scss
index 7b5973a..5c788c2 100755
--- a/app/assets/stylesheets/studien.css.scss
+++ b/app/assets/stylesheets/studien.css.scss
@@ -1,3 +1,18 @@
// Place all the styles related to the studia controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
+div.verwalten-block {
+border-width: 1px;
+border-style: solid;
+padding: 5px;
+border-radius:10px;
+margin: 2px;
+}
+div.studien-semester {
+border-width: 1px;
+border-style: solid;
+padding: 5px;
+border-radius:10px;
+border-color: blue;
+margin: 2px;
+}
diff --git a/app/controllers/beispiele_controller.rb b/app/controllers/beispiele_controller.rb
index ac79ec3..b28c6e3 100755
--- a/app/controllers/beispiele_controller.rb
+++ b/app/controllers/beispiele_controller.rb
@@ -2,7 +2,6 @@ class BeispieleController < ApplicationController
# GET /beispiele
# GET /beispiele.json
def index
- @lva = params([:lva])
@beispiele = Beispiel.all
respond_to do |format|
@@ -14,7 +13,7 @@ class BeispieleController < ApplicationController
# GET /beispiele/1
# GET /beispiele/1.json
def show
- @lva = lva unless lva.nil?
+ # @lva = params([:lva]) unless params([:lva]).nil?
@beispiel = Beispiel.find(params[:id])
respond_to do |format|
@@ -46,6 +45,7 @@ class BeispieleController < ApplicationController
lvaid=params[:lva_id]
params.delete(:lva_id)
@beispiel = Beispiel.new(params[:beispiel])
+
respond_to do |format|
if @beispiel.save
format.html { redirect_to @beispiel, notice: 'Beispiel was successfully created.' }
diff --git a/app/controllers/lvas_controller.rb b/app/controllers/lvas_controller.rb
index 7b737dd..d2ee71f 100755
--- a/app/controllers/lvas_controller.rb
+++ b/app/controllers/lvas_controller.rb
@@ -16,14 +16,6 @@ class LvasController < ApplicationController
@toolbar_elements<<{:hicon=>'icon-plus-sign', :icon=>:plus, :text => "Neues Beispiel", :path=> new_beispiel_path(:lva_id =>@lva.id)}
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)}
- @topbar_elements =[{:hicon=>'icon-list', :text=>I18n.t("lva.list"), :path=>lvas_path}]
- for m in @lva.modul
- @topbar_elements << {:newline=>true}
- @topbar_elements << {:text=> '' + m.name + '', :path=>modul_path(m)}
- for mg in m.modulgruppen
- @topbar_elements << {:text => mg.studium.name + ' (' + mg.name + ')', :path=>studium_path(mg.studium)}
- end
- end
end
# GET /lvas/new
diff --git a/app/controllers/modulgruppen_controller.rb b/app/controllers/modulgruppen_controller.rb
index c69f8fe..d84de6f 100755
--- a/app/controllers/modulgruppen_controller.rb
+++ b/app/controllers/modulgruppen_controller.rb
@@ -51,15 +51,10 @@ class ModulgruppenController < ApplicationController
def create
@modulgruppe = Modulgruppe.new(params[:modulgruppe])
- if !params[:studium_id].nil?
- @studium=Studium.find_by_id(params[:studium_id])
- else
- @studium=Studium.find_by_id(params[:modulgruppe][:studium_id])
- end
respond_to do |format|
if @modulgruppe.save
- format.html { redirect_to @studium, notice: 'Modulgruppe was successfully created.' }
+ format.html { redirect_to @modulgruppe.studium, notice: 'Modulgruppe was successfully created.' }
else
format.html { render action: "new" }
diff --git a/app/controllers/semesters_controller.rb b/app/controllers/semesters_controller.rb
index 751a4b7..8a527c4 100755
--- a/app/controllers/semesters_controller.rb
+++ b/app/controllers/semesters_controller.rb
@@ -16,6 +16,7 @@ class SemestersController < ApplicationController
def edit
@semester = Semester.find(params[:id])
+ @studium = @semester.studium
end
def create
@@ -33,7 +34,7 @@ class SemestersController < ApplicationController
def update
@semester = Semester.find(params[:id])
-
+ @studium= @semester.studium
respond_to do |format|
if @semester.update_attributes(params[:semester])
format.html { redirect_to @semester, notice: 'Semester was successfully updated.' }
diff --git a/app/controllers/studien_controller.rb b/app/controllers/studien_controller.rb
index 603131e..0504b84 100755
--- a/app/controllers/studien_controller.rb
+++ b/app/controllers/studien_controller.rb
@@ -1,34 +1,32 @@
class StudienController < ApplicationController
-before_filter {@toolbar_elements =[]}
+ before_filter {@toolbar_elements =[]}
+ # before_filter :authorize, :only => :verwalten
+ def index
+ @studien = Studium.all
+ @topbar_elements=[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}]
+ @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
+ @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}
+ @toolbar_elements<<{:icon =>:plus, :hicon=>'icon-plus-sign', :text=> I18n.t('studien.new') ,:path=>new_studium_path }
+ # @toolbar_elements<<{:text=> I18n.t('modulgruppe.show.link') ,:path=>modulgruppen_path }
+ end
-def index
- @studien = Studium.all
- @topbar_elements=[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}]
- @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
- @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}
- @toolbar_elements<<{:icon =>:plus, :hicon=>'icon-plus-sign', :text=> I18n.t('studien.new') ,:path=>new_studium_path }
- # @toolbar_elements<<{:text=> I18n.t('modulgruppe.show.link') ,:path=>modulgruppen_path }
-end
+ def show
+ @studium= Studium.find(params[:id])
-def show
- @studium= Studium.find(params[:id])
- @text = 'Zu Semesteransicht wechseln'
- @path = studium_semesteransicht_path(@studium)
-
- @studienphasen=[]
- [1, 2 ,3].each do |ph|
- modulgruppen_phase=@studium.modulgruppen.where(:phase=>ph)
- if modulgruppen_phase.count==1
- opts={:width=>12, :slice=>1}
- elsif modulgruppen_phase.count <= 4
- opts={:width=>6, :slice=>2}
- else
- opts={:width=>4, :slice=>3}
- end
- modulgruppen =[]
- modulgruppen_phase.each_slice(opts[:slice]) do |s|
- modulgruppen<ph)
+ if modulgruppen_phase.count==1
+ opts={:width=>12, :slice=>1}
+ elsif modulgruppen_phase.count <= 4
+ opts={:width=>6, :slice=>2}
+ else
+ opts={:width=>4, :slice=>3}
+ end
+ modulgruppen =[]
+ modulgruppen_phase.each_slice(opts[:slice]) do |s|
+ modulgruppen<modulgruppen, :phase => ph}.merge(opts)
@@ -41,13 +39,14 @@ def show
@toolbar_modulgruppen =[ {:hicon=>'icon-plus-sign', :text=> I18n.t('modulgruppe.new'), :path=>new_studium_modulgruppe_path(@studium)},
{:hicon=>'icon-list', :text => I18n.t('modulgruppe.list'), :path=>modulgruppen_path}]
- @topbar_elements = [ {:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"), :path=>studien_path},
- {:text=>'Zur Semesteransicht wechseln', :path=>studium_semesteransicht_path(@studium)},
- {:newline=>true}]
- for i in Studium.all
- @topbar_elements << {:text=>i.name, :path=>studium_path(i)}
+ if params[:ansicht] != 'modulgruppenansicht'
+ @text = 'Zu Modulansicht wechseln'
+ @flip = 'modulgruppenansicht'
+ render 'semesteransicht'
+ else
+ @text = 'Zu Semesteransicht wechseln'
+ @flip = 'semesteransicht'
end
-
end
def new
@@ -85,31 +84,153 @@ def show
end
end
- def semesteransicht
- @sem = 'true'
- @studium = Studium.find(params[:id])
- if @studium.nil?
- @studium = Studium.first
- end
- @text = 'Zu Modulgruppenansicht wechseln'
- @path = studium_path(@studium)
- @topbar_elements = [ {:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"), :path=>studien_path},
- {:text=>'Zur Modulgruppenansicht wechseln', :path=>studium_path(@studium)},
- {:newline=>true}]
- for i in Studium.all
- @topbar_elements << {:text=>i.name, :path=>studium_semesteransicht_path(i)}
- end
-
-
-
- @toolbar_elements = [ {:icon=>:plus, :hicon =>'icon-plus-sign' ,:text=> I18n.t('studien.new') , :path => new_studium_path(@studium) },
- {:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('common.edit'),:path => edit_studium_path(@studium)},
- {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium), :method=> :delete,:confirm=>"Sure?" }]
- end
def destroy
@studium = Studium.find(params[:id])
@studium.destroy
redirect_to studien_url
end
+
+ def verwalten
+ @new_params={:std_verw=>params[:std_verw], :mg_verw=>params[:mg_verw], :m_verw=>params[:m_verw], :lva_verw=>params[:lva_verw], :b_verw=>params[:b_verw]}
+ if @new_params.values.compact.empty?
+ @studien=Studium.all
+ @modulgruppen=Modulgruppe.all
+ @module=Modul.all
+ @lvas=Lva.all
+ @beispiele=Beispiel.all
+ else
+ if !@new_params[:std_verw].nil?
+ @studien = [Studium.find(@new_params[:std_verw])]
+ else
+ @studien = Studium.all
+ end
+ if !@new_params[:mg_verw].nil?
+ @modulgruppen = [Modulgruppe.find(@new_params[:mg_verw])]
+ 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)}
+ end
+ if !@new_params[:m_verw].nil?
+ @module = [Modul.find(@new_params[:m_verw])]
+ 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_verw].nil?
+ @lvas = [Lva.find(@new_params[:lva_verw])]
+ 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[:b_verw].nil?
+ @beispiele = [Beispiel.find(@new_params[:b_verw])]
+ 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.errors.full_messages
+ @messages << ''
+ end
+ end
+ for mg in @modulgruppen
+
+ if mg.valid?
+ @messages << mg.name + ' hat kein Modul' if mg.moduls.count == 0
+ else
+ @messages << ''+mg.name + ': '
+ @messages << mg.errors.full_messages
+ @messages << ''
+ end
+ end
+ for m in @module
+
+ if m.valid?
+ @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.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.errors.full_messages
+ @messages << ''
+ end
+ end
+ for b in @beispiele
+ if b.valid?
+ @messages << b.name + ' hat keine Lva' if b.lva.nil?
+ else
+ @messages << ''+b.name + ': '
+ @messages << b.errors.full_messages
+ @messages << ''
+ end
+ end
+ render 'studien/verwalten'
+ end
+
+ def default_url_options
+ {:ansicht=> params[:ansicht],
+ :std_verw=> params[:std_verw],
+ :mg_verw=> params[:mg_verw],
+ :m_verw=>params[:m_verw],
+ :lva_verw=>params[:lva_verw],
+ :b_verw=>params[:b_verw]}.merge(super)
+
+ end
end
diff --git a/app/models/lva.rb b/app/models/lva.rb
index bf0b2e8..86d1c5c 100755
--- a/app/models/lva.rb
+++ b/app/models/lva.rb
@@ -35,7 +35,7 @@ class Lva < ActiveRecord::Base
# Diese Methode fügt die Instanz automatisch zu allen Studien als "Ohne Semesterempfehlung" (Semester 0) zu, bei denen die Instanz im Studium noch nicht vorkommt.
for m in self.modul
for mg in m.modulgruppen # Über alle Module und alle Modulgruppen iterieren
- hits = mg.studium.semester.all.map{|x| x.lvas}.collect{|x| x.find_by_id(self.id)}.compact # Alle einträge in allen semestern mit gleicher LVa-ID suchen und alle nils entfernen
+ hits = mg.studium.semester.all.map{|x| x.lvas}.map{|x| x.find_by_id(self.id)}.compact # Alle einträge in allen semestern mit gleicher LVa-ID suchen und alle nils entfernen
if hits.empty? # wurde gar kein eintrag gefunden ?
self.semester << mg.studium.semester.where(:nummer => 0) # auf nummer null eintragen
diff --git a/app/models/modul.rb b/app/models/modul.rb
index 028a86a..32c835d 100755
--- a/app/models/modul.rb
+++ b/app/models/modul.rb
@@ -18,7 +18,7 @@ class Modul < ActiveRecord::Base
has_and_belongs_to_many :modulgruppen
- validates :modulgruppen, :presence=>true # Ein Modul muss zu einer Modulgruppe gehören
+ validates :modulgruppen, :presence=>true # Ein Modul muss zu einer Modulgruppe gehören
validates :name, :presence=>true # Ein Modul muss einen Namen haben
translates :desc,:depend,:name, :versioning =>true, :fallbacks_for_empty_translations => true
diff --git a/app/models/modulgruppe.rb b/app/models/modulgruppe.rb
index dc3787b..236811c 100755
--- a/app/models/modulgruppe.rb
+++ b/app/models/modulgruppe.rb
@@ -13,7 +13,7 @@
#
class Modulgruppe < ActiveRecord::Base
- attr_accessible :name, :phase, :typ,:desc, :studium_id
+ attr_accessible :name, :phase, :typ,:desc, :studium_id, :modul_ids
belongs_to :studium, :foreign_key => "studium_id"
has_and_belongs_to_many :moduls
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/beispiele/_beispiel.html.erb b/app/views/beispiele/_beispiel.html.erb
index d15d58c..07c9cf9 100644
--- a/app/views/beispiele/_beispiel.html.erb
+++ b/app/views/beispiele/_beispiel.html.erb
@@ -1 +1,4 @@
-<%=link_to beispiel.name, beispiel.beispieldatei.url%>
+<%=link_to beispiel.name, beispiel.beispieldatei.url%>
+<%= beispiel.desc %>
+<%= I18n.t("beispiele.list")
+<%= I18n.t("beispiele.list") %>
<% @beispiele.each do |beispiel| %>
+ <%= @beispiel.lva.name %> +
<%= link_to 'Edit', edit_beispiel_path(@beispiel) %> | <%= link_to 'Back', beispiele_path %> diff --git a/app/views/layouts/_pretty_toolbar.html.erb b/app/views/layouts/_pretty_toolbar.html.erb index cb8514a..09c0a6c 100644 --- a/app/views/layouts/_pretty_toolbar.html.erb +++ b/app/views/layouts/_pretty_toolbar.html.erb @@ -1,3 +1,9 @@ + <% toolbar_elements = !pretty_toolbar.nil? ? pretty_toolbar : @toolbar_elements %> <%= I18n.t("common.actions")%>- <%= -if modul.name.nil? -name="" -else -name=modul.name -end -link_to "Modul "+name , modul_path(modul) %> -
+ +- <%= raw(modul.desc) %> + <%= raw(@modul.desc) %>
-LVAs: - -<%= notice %>
<%= render @modul %> <%= render 'layouts/pretty_toolbar' %> -<% # link_to 'Add LVA', %> -<% # link_to ''.html_safe+ I18n.t("common.edit") , edit_modul_path(@modul) %> -<% # link_to "Loeschen", [@modul],:method=>:delete ,:data => {:confirm =>"Are you sure" } %> diff --git a/app/views/semesters/_form.html.erb b/app/views/semesters/_form.html.erb index 710e4ea..7ff4d18 100755 --- a/app/views/semesters/_form.html.erb +++ b/app/views/semesters/_form.html.erb @@ -1,12 +1,11 @@ <%= semantic_form_for @semester do |f| %> <%= f.inputs do %> - <%= f.input :name %> - <%= f.input :nummer %> - <%= f.input :ssws %> - <%= f.input :lvas %> + <%= f.input :lvas, :as=>:check_boxes%> <% end %> <%= f.actions do %> <%= f.action :submit, :as => :input %> <% end %> <% end %> +<%= link_to 'Zurück',@studium, :class=>"btn"%> +x diff --git a/app/views/semesters/edit.html.erb b/app/views/semesters/edit.html.erb index 10925ec..bf39462 100755 --- a/app/views/semesters/edit.html.erb +++ b/app/views/semesters/edit.html.erb @@ -1,6 +1,3 @@ -<%= studium.typ%>
+Beschreibung:
+ <%= !(studium.desc.to_s == "") ? studium.desc.html_safe : I18n.t("keine.beschreibung")%>
<%= notice %>
-