diff --git a/.gitignore b/.gitignore
index 864b11d..9679a17 100755
--- a/.gitignore
+++ b/.gitignore
@@ -15,8 +15,8 @@
/log/*.log
/tmp
/config/initializers/devise.rb
-
-/console
+/app/doc/*
+console
/server
/public/uploads/
-*~
\ No newline at end of file
+
diff --git a/.rspec b/.rspec
new file mode 100644
index 0000000..4e1e0d2
--- /dev/null
+++ b/.rspec
@@ -0,0 +1 @@
+--color
diff --git a/Gemfile b/Gemfile
index 3fb298c..7fce64e 100755
--- a/Gemfile
+++ b/Gemfile
@@ -70,4 +70,8 @@ gem 'haml'
#gem 'gollum'
gem 'awesome_nested_set'
gem 'annotate', ">=2.5.0"
-gem 'carrierwave'
\ No newline at end of file
+gem 'carrierwave'
+group :development, :test do
+gem 'factory_girl_rails'
+gem 'rspec-rails'
+end
diff --git a/Gemfile.lock b/Gemfile.lock
index 9508763..2f98cfb 100755
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -56,9 +56,15 @@ GEM
orm_adapter (~> 0.1)
railties (~> 3.1)
warden (~> 1.2.1)
+ diff-lcs (1.2.4)
erubis (2.7.0)
execjs (1.4.0)
multi_json (~> 1.0)
+ factory_girl (4.2.0)
+ activesupport (>= 3.0.0)
+ factory_girl_rails (4.2.1)
+ factory_girl (~> 4.2.0)
+ railties (>= 3.0.0)
formtastic (2.2.1)
actionpack (>= 3.0)
formtastic-bootstrap (2.0.0)
@@ -123,6 +129,17 @@ GEM
json (~> 1.4)
ref (1.0.2)
rolify (3.2.0)
+ rspec-core (2.14.4)
+ rspec-expectations (2.14.0)
+ diff-lcs (>= 1.1.3, < 2.0)
+ rspec-mocks (2.14.1)
+ rspec-rails (2.14.0)
+ actionpack (>= 3.0)
+ activesupport (>= 3.0)
+ railties (>= 3.0)
+ rspec-core (~> 2.14.0)
+ rspec-expectations (~> 2.14.0)
+ rspec-mocks (~> 2.14.0)
sass (3.2.5)
sass-rails (3.2.6)
railties (~> 3.2.0)
@@ -165,6 +182,7 @@ DEPENDENCIES
coffee-rails (~> 3.2.1)
devise (~> 2.2.3)
execjs (~> 1.4.0)
+ factory_girl_rails
formtastic (~> 2.2.1)
formtastic-bootstrap
git
@@ -175,6 +193,7 @@ DEPENDENCIES
paperclip (~> 3.4.0)
rails (= 3.2.9)
rolify
+ rspec-rails
sass-rails (~> 3.2.3)
sqlite3
therubyracer
diff --git a/app/controllers/beispiele_controller.rb b/app/controllers/beispiele_controller.rb
index 48b7856..ac79ec3 100755
--- a/app/controllers/beispiele_controller.rb
+++ b/app/controllers/beispiele_controller.rb
@@ -2,6 +2,7 @@ class BeispieleController < ApplicationController
# GET /beispiele
# GET /beispiele.json
def index
+ @lva = params([:lva])
@beispiele = Beispiel.all
respond_to do |format|
@@ -13,6 +14,7 @@ class BeispieleController < ApplicationController
# GET /beispiele/1
# GET /beispiele/1.json
def show
+ @lva = lva unless lva.nil?
@beispiel = Beispiel.find(params[:id])
respond_to do |format|
@@ -26,7 +28,7 @@ class BeispieleController < ApplicationController
def new
@beispiel = Beispiel.new
@beispiel.lva = Lva.find(params[:lva_id])
-
+
respond_to do |format|
format.html # new.html.erb
format.json { render json: @beispiel }
diff --git a/app/controllers/lvas_controller.rb b/app/controllers/lvas_controller.rb
index 974b089..7b737dd 100755
--- a/app/controllers/lvas_controller.rb
+++ b/app/controllers/lvas_controller.rb
@@ -3,23 +3,36 @@ class LvasController < ApplicationController
before_filter {@toolbar_elements =[]}
def index
@lvas = Lva.all
-
+ @toolbar_elements=[{:hicon=>'icon-plus-sign',:text =>I18n.t('lva.add'),:path => new_lva_path}]
+ @tb=[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path},
+ {:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path},
+ {:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}]
end
# GET /lvas/1
def show
@lva = Lva.find_by_id(params[:id])
- @toolbar_elements<<{:icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)}
+
+ @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
# GET /lvas/new.json
def new
@lva = Lva.new
- modul=Modul.find(params[:modul_id])
- @lva.modul<'icon-plus-sign', :text=>I18n.t("modul.add"), :path=>new_modul_path}]
+ @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}
+
respond_to do |format|
format.html # index.html.erb
format.json { render json: @moduls }
end
end
+
end
# GET /moduls/1
# GET /moduls/1.json
def show
@modul = Modul.find(params[:id])
+ @toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("lva.add"), :path=>new_lva_path(:modul_id =>@modul.id)}]
+ @toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t("modul.edit"), :path=>edit_modul_path(@modul)}
+ @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t("common.delete"),:path=>@modul , :method=>:delete , :data=>{:confirm =>'Are you sure'}}
- respond_to do |format|
+
+ @topbar_elements = [{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}]
+ @tb=[]
+ for i in @modul.modulgruppen
+
+ if !i.studium.nil?
+ name =i.studium.name
+ id = i.studium.id
+ else
+ s.name = 'Kein Studium vorhanden'
+ s.id = nil
+ end
+ @tb <<{:text=> i.name + ' ('+i.studium.name + ')', :path=>modulgruppe_path(i)}
+ end
+ respond_to do |format|
format.html # show.html.erb
format.json { render json: @modul }
end
@@ -31,7 +54,7 @@ class ModulsController < ApplicationController
@modul = Modul.new
modulgruppe=Modulgruppe.find_by_id(params[:modulgruppen_id])
if !modulgruppe.nil?
- @modul.modulgruppen<:plus, :text=> I18n.t('studien.new') ,:path=>new_studium_path }
- @toolbar_elements<<{:text=> I18n.t('modulgruppe.show.link') ,:path=>modulgruppen_path }
- @toolbar_elements<<{:text=> I18n.t('modul.show.link') ,:path=>moduls_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])
- @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<modulgruppen, :phase => ph}.merge(opts)
- end
- @toolbar_elements=[{:icon =>:plus ,:text=> I18n.t('studien.new') , :path => new_studium_modulgruppe_path(@studium) }]
- @toolbar_elements<<{:icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_studium_path(@studium)}
- @toolbar_elements<<{:text=> I18n.t('common.delete'),:path => studium_path(@studium), :method=> :delete,:confirm=>"Sure?" }
- end
+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<modulgruppen, :phase => ph}.merge(opts)
+ 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?" }]
+
+ @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)}
+ end
+
+ end
-
def new
@studium = Studium.new
end
def edit
@studium = Studium.find(params[:id])
- @toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }]
- @toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)}
+ @toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }]
+ @toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)}
end
def create
@studium = Studium.new(params[:studium])
+
respond_to do |format|
if @studium.save
+ @studium.batch_add_semester
format.html { redirect_to url_for(@studium), notice: 'Studium was successfully created.' }
else
format.html { render action: "new" }
@@ -57,19 +76,40 @@ class StudienController < ApplicationController
def update
@studium = Studium.find(params[:id])
+
+ if @studium.update_attributes(params[:studium])
+ redirect_to url_for(@studium), notice: 'Studium was successfully updated.'
+ else
+ render action: "edit"
+
+ end
- if @studium.update_attributes(params[:studium])
- redirect_to url_for(@studium), notice: 'Studium was successfully updated.'
- else
- render action: "edit"
-
- 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
+ @studium = Studium.find(params[:id])
+ @studium.destroy
+ redirect_to studien_url
end
end
diff --git a/app/models/beispiel.rb b/app/models/beispiel.rb
index 5a8700f..2ad10de 100755
--- a/app/models/beispiel.rb
+++ b/app/models/beispiel.rb
@@ -19,4 +19,9 @@ class Beispiel < ActiveRecord::Base
attr_accessible :desc, :name, :lva_id, :beispieldatei, :beispieldatei_cache
belongs_to :lva
mount_uploader :beispieldatei, BeispieldateiUploader
+ validates :beispieldatei, :presence => true
+ validates :name, :presence => true
+ validates :lva_id, :presence => true
+ validates :lva, :presence => true
+
end
diff --git a/app/models/lva.rb b/app/models/lva.rb
index 279af18..bf0b2e8 100755
--- a/app/models/lva.rb
+++ b/app/models/lva.rb
@@ -17,39 +17,52 @@
class Lva < ActiveRecord::Base
has_paper_trail # Versionsverfolgung
- attr_accessible :desc, :ects, :lvanr, :name, :stunden, :modul_ids
-
+ attr_accessible :desc, :ects, :lvanr, :name, :stunden, :modul_ids, :semester_ids
has_and_belongs_to_many :modul # Gehört zu einem Modul
- has_and_belongs_to_many :semester # Gehört zu einem Semester( derzeit nicht implementiert)
+ has_and_belongs_to_many :semester
+ #Gehört zu einem Semester( derzeit nicht implementiert)
has_many :beispiele , :class_name => "Beispiel"
translates :desc, :fallbacks_for_empty_translations => true
- validates :lvanr,:format=>{ :with => /^[0-9][0-9][0-9]\.[0-9][0-9][0-9]$/} # , :uniqueness=>true # LVA-Nummer muss das Format 000.000 besitzen (uniqueness?) oder 000 für nicht existent
-
+ validates :lvanr,:format=>{ :with => /^[0-9][0-9][0-9]\.[0-9][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?
- validates_presence_of :name # Name Eingetragen?
+ validates :name, :presence=>true
+ validates :name, :uniqueness=>true# Name Eingetragen?
validates_presence_of :stunden # Stunden Eingetragen?
validates_presence_of :modul # Zugehöriges Modul eingetragen? (zumindest eines)
-private
+ def add_semesters
+ # 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
-##
-# Lade Daten aus TISS und füge diese in die Datenbank ein.
-def load_tissdata
- url= "https://tiss.tuwien.ac.at/api/course/"+ self.lvanr.to_s+"-2012W"
- begin
- @hash=Hash.from_xml(open(url).read)["tuvienna"]
- @person=[]
- if @hash["course"]["lecturers"]["oid"].is_a? String
- @person = @hash["course"]["lecturers"]["oid"]
- else
- @hash["course"]["lecturers"]["oid"].each do |pid|
- @person << Hash.from_xml(open("https://tiss.tuwien.ac.at/adressbuch/adressbuch/person_via_oid/" + pid.to_s + ".xml").read)["tuvienna"]["person"]
+ if hits.empty? # wurde gar kein eintrag gefunden ?
+ self.semester << mg.studium.semester.where(:nummer => 0) # auf nummer null eintragen
+ end
end
end
- rescue OpenURI::HTTPError => e
- end
-end
+
+ end
+ private
+
+ ##
+ # Lade Daten aus TISS und füge diese in die Datenbank ein.
+ def load_tissdata
+ url= "https://tiss.tuwien.ac.at/api/course/"+ self.lvanr.to_s+"-2012W"
+ begin
+ @hash=Hash.from_xml(open(url).read)["tuvienna"]
+ @person=[]
+ if @hash["course"]["lecturers"]["oid"].is_a? String
+ @person = @hash["course"]["lecturers"]["oid"]
+ else
+ @hash["course"]["lecturers"]["oid"].each do |pid|
+ @person << Hash.from_xml(open("https://tiss.tuwien.ac.at/adressbuch/adressbuch/person_via_oid/" + pid.to_s + ".xml").read)["tuvienna"]["person"]
+ end
+ end
+ rescue OpenURI::HTTPError => e
+ end
+ end
diff --git a/app/models/modul.rb b/app/models/modul.rb
index f6939d4..028a86a 100755
--- a/app/models/modul.rb
+++ b/app/models/modul.rb
@@ -17,6 +17,7 @@ class Modul < ActiveRecord::Base
has_and_belongs_to_many :lvas
has_and_belongs_to_many :modulgruppen
+
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 47fa049..dc3787b 100755
--- a/app/models/modulgruppe.rb
+++ b/app/models/modulgruppe.rb
@@ -21,8 +21,8 @@ class Modulgruppe < ActiveRecord::Base
validates :studium_id, :presence => true # Bei der Abfrage ist student_id entscheidend
validates :studium, :presence => true # Wird gesetzt, um das richtige Feld zu melden bei Fehlern
- validates :name, :uniqueness =>{:scope => :studium}, :presence=>true # Funktioniert leider nicht
+ validates :name, :uniqueness =>{:scope => :studium_id}, :presence=>true # Pro Studium darf ein Name nur einmal vorkommen
validates :phase, :inclusion => {:in => [1, 2, 3, 4]}
validates :typ, :inclusion => {:in => ["Pflicht","Vertiefungspflicht","Wahl"] }
- translates :name,:desc, :versioning =>true,:fallbacks_for_empty_translations => true
+ translates :desc, :versioning =>true,:fallbacks_for_empty_translations => true
end
diff --git a/app/models/semester.rb b/app/models/semester.rb
index ca866b6..913a370 100755
--- a/app/models/semester.rb
+++ b/app/models/semester.rb
@@ -1,3 +1,4 @@
+
# == Schema Information
#
# Table name: semesters
@@ -12,6 +13,9 @@
#
class Semester < ActiveRecord::Base
+ attr_accessible :name, :nummer, :ssws, :lva_ids
has_and_belongs_to_many :lvas
- attr_accessible :name, :nummer, :ss, :ws
+ belongs_to :studium, :foreign_key => "studium_id"
+ validates :name, :presence => true
+ validates :nummer, :presence => true
end
diff --git a/app/models/studium.rb b/app/models/studium.rb
index dea3dae..94177f9 100755
--- a/app/models/studium.rb
+++ b/app/models/studium.rb
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
# == Schema Information
#
# Table name: studien
@@ -10,14 +11,36 @@
# typ :string(255)
# created_at :datetime not null
# updated_at :datetime not null
-#
-
class Studium < ActiveRecord::Base
attr_accessible :desc, :name, :typ, :zahl
- has_many :modulgruppen, inverse_of: :studium, :class_name => "Modulgruppe"
+ has_many :modulgruppen, inverse_of: :studium, :class_name => "Modulgruppe", :dependent => :destroy
+ has_many :semester, :dependent => :destroy
validates :typ, :inclusion => {:in => ["Bachelor","Master"] }
validates :name, :uniqueness => true, :presence=>true
- validates :zahl, :uniqueness => true, :presence=>true
+ validates :zahl, :presence=>true, :format=>{:with=>/^0(33|66)[0-9]{3}$/}, :uniqueness => true
translates :desc,:shortdesc, :versioning =>true,:fallbacks_for_empty_translations => true
+
+ def batch_add_semester
+ # Semester automatisch zu Studien hinzufügen
+ if self.typ == "Bachelor"
+ length = 6
+ else
+ length = 4
+ end
+ for i in 1..length
+ semester =Semester.new()
+ semester.name = i.to_s + '. ' + self.name
+ semester.nummer = i
+ semester.ssws = ((i % 2 == 0) ? "SS" : "WS")
+ semester.save
+ self.semester << semester
+ end
+ semester = Semester.new()
+ semester.name = 'Ohne Zuordnung (' + self.name + ')'
+ semester.nummer = 0
+ semester.ssws = "WS"
+ semester.save
+ self.semester << semester
+ end
end
diff --git a/app/views/beispiele/_beispiel_list.html.erb b/app/views/beispiele/_beispiel_list.html.erb
new file mode 100644
index 0000000..b739e54
--- /dev/null
+++ b/app/views/beispiele/_beispiel_list.html.erb
@@ -0,0 +1,19 @@
+
+
+
+ <%=link_to beispiel.name, beispiel.beispieldatei.url%>
+
+
+ Beschreibung:
+
+ <%= beispiel.desc %>
+
+
+
+ LVA: <%=link_to beispiel.lva.name, lva_path(beispiel.lva.id)%>
+
+
+ <%= link_to 'Show', beispiel %>
+ <%= link_to 'Edit', edit_beispiel_path(beispiel) %>
+ <%= link_to 'Destroy', beispiel, method: :delete, data: { confirm: 'Are you sure?' } %>
+
diff --git a/app/views/beispiele/_form.html.erb b/app/views/beispiele/_form.html.erb
index dca1eb9..bf0c027 100755
--- a/app/views/beispiele/_form.html.erb
+++ b/app/views/beispiele/_form.html.erb
@@ -4,7 +4,7 @@
<%= f.input :desc %>
<%= f.file_field :beispieldatei %>
<%= f.hidden_field :beispieldatei_cache %>
- <%= f.input :lva, :as=>:radio, :collection => Lva.all%>
+ <%= f.input :lva, :as=>:select, :collection => Lva.all%>
<% end %>
<%= f.actions do %>
diff --git a/app/views/beispiele/index.html.erb b/app/views/beispiele/index.html.erb
index aca1b90..89bee7d 100755
--- a/app/views/beispiele/index.html.erb
+++ b/app/views/beispiele/index.html.erb
@@ -1,25 +1,10 @@
-Listing beispiele
-
-
-
- | Name |
- Desc |
- |
- |
- |
-
-
+<%= I18n.t("beispiele.list")
+
<% @beispiele.each do |beispiel| %>
-
- | <%= beispiel.name %> |
- <%= beispiel.desc %> |
- <%= link_to 'Show', beispiel %> |
- <%= link_to 'Edit', edit_beispiel_path(beispiel) %> |
- <%= link_to 'Destroy', beispiel, method: :delete, data: { confirm: 'Are you sure?' } %> |
-
+-
+<%= render :partial=> "beispiele/beispiel_list", :object => beispiel, :as=>:beispiel%>
<% end %>
-
-
-
+
+
<%= link_to 'New Beispiel', new_beispiel_path %>
diff --git a/app/views/layouts/_link_all.html.erb b/app/views/layouts/_link_all.html.erb
new file mode 100755
index 0000000..0108206
--- /dev/null
+++ b/app/views/layouts/_link_all.html.erb
@@ -0,0 +1,11 @@
+
+
+ - <%= link_to_unless_current ''.html_safe+ I18n.t("studien.allestudien"), studien_path,:raw=>true %>
+ /
+
+ - <%= link_to_unless_current ''.html_safe+ I18n.t("modul.list"), moduls_path,:raw=>true %>
+ /
+ - <%= link_to_unless_current ''.html_safe+ I18n.t("lva.list"), lvas_path,:raw=>true %>
+ /
+
+
diff --git a/app/views/layouts/_pretty_toolbar.html.erb b/app/views/layouts/_pretty_toolbar.html.erb
new file mode 100644
index 0000000..cb8514a
--- /dev/null
+++ b/app/views/layouts/_pretty_toolbar.html.erb
@@ -0,0 +1,7 @@
+<% toolbar_elements = !pretty_toolbar.nil? ? pretty_toolbar : @toolbar_elements %>
+<%= I18n.t("common.actions")%>
+
+<% toolbar_elements.each do |t| %>
+ <%= link_to ''.html_safe+t[:text], t[:path], :method=>t[:method], :confirm=>t[:confirm].to_s, :data=>t[:data], :class=>"btn" %>
+ <% end %>
+
diff --git a/app/views/layouts/_topbar.html.erb b/app/views/layouts/_topbar.html.erb
new file mode 100755
index 0000000..2a4c0de
--- /dev/null
+++ b/app/views/layouts/_topbar.html.erb
@@ -0,0 +1,11 @@
+<% topbar = !topbar.nil? ? topbar : @topbar_elements %>
+
+ <% topbar.each do |tb| %>
+ <% if tb[:newline]%>
+
+ <% else %>
+ -
+ <%= link_to_unless_current ''.html_safe+ tb[:text].html_safe, tb[:path] %>/
+ <% end %>
+ <% end %>
+
diff --git a/app/views/lvas/_form.html.erb b/app/views/lvas/_form.html.erb
index 488b048..49bbb78 100755
--- a/app/views/lvas/_form.html.erb
+++ b/app/views/lvas/_form.html.erb
@@ -1,5 +1,6 @@
<%= semantic_form_for @lva do |f| %>
<%= f.inputs do %>
+ <%= f.input :semester, :collection=>Semester.all.sort_by{|n| [:name]}%>
<%= f.input :modul %>
<%= f.input :name %>
<%= f.input :ects %>
diff --git a/app/views/lvas/_lva.html.erb b/app/views/lvas/_lva.html.erb
new file mode 100755
index 0000000..e78e1f7
--- /dev/null
+++ b/app/views/lvas/_lva.html.erb
@@ -0,0 +1,28 @@
+<% @lva.modul.each do |modul| %>
+<% modul.modulgruppen.each do |g| %>
+
+- <%= link_to g.studium.name , studium_path(g.studium)%>
+
+- <%= link_to g.name , modulgruppe_path(g)%>/
+- <%= link_to modul.name , modul_path(modul)%>
+<% end %>
+
+<% end %>
+
+<%= notice %>
+
+ <%= @lva.lvanr %>
+ <%= @lva.name %> <%= @lva.ects %> ECTS/ <%= @lva.stunden %> Std
+
+
+
+ <%= @lva.desc %>
+
+
+<% @lva.beispiele.each do |b|%>
+
+- <%= render b%>
+
+<% end %>
+
+<%= toolbar_html(@toolbar_elements) %>
diff --git a/app/views/lvas/_lva_semester.html.erb b/app/views/lvas/_lva_semester.html.erb
new file mode 100755
index 0000000..a60029d
--- /dev/null
+++ b/app/views/lvas/_lva_semester.html.erb
@@ -0,0 +1,10 @@
+
+
+ <%= link_to lva.name, lva_path(lva)%>
+ Module: /<% lva.modul.each do |m| %> <%= link_to m.name + ' / ', modul_path(m) unless m.modulgruppen.map{|x| x.studium}.index(@studium).nil? && !@studium.nil? %><% end %>
+
+ <%="LVa-Nr " + lva.lvanr.to_s %>
+ <%= lva.ects %> ECTS / <%= lva.stunden %> Std <% " / " + lva.beispiele.count.to_s + " Beispiele"%>
+ <%= link_to "Edit", edit_lva_path(lva) %> | <%= link_to "Beispiel hinzufügen", new_beispiel_path(:lva_id=>lva.id) %>
+
+<% #toolbar_html(@toolbar_elements) %>
diff --git a/app/views/lvas/index.html.erb b/app/views/lvas/index.html.erb
index c09b08a..eb1a57b 100755
--- a/app/views/lvas/index.html.erb
+++ b/app/views/lvas/index.html.erb
@@ -1,31 +1,8 @@
-Listing lvas
-
-
-
- | Name |
- Desc |
- Ects |
- Lvanr |
- Stunden |
- |
- |
- |
-
-
-<% @lvas.each do |lva| %>
-
- | <%= lva.name %> |
- <%= lva.desc %> |
- <%= lva.ects %> |
- <%= lva.lvanr %> |
- <%= lva.stunden %> |
- <%= link_to 'Show', lva %> |
- <%= link_to 'Edit', edit_lva_path(lva) %> |
- <%= link_to 'Destroy', lva, method: :delete, data: { confirm: 'Are you sure?' } %> |
-
-<% end %>
-
-
-
-
-<%= link_to 'New Lva', new_lva_path %>
+<%= render :partial=>'layouts/topbar', :object=>@tb %>
+<%= I18n.t("lva.list")%>
+
+<% @lvas.each do |l| %>
+- <%= render :partial => 'lvas/lva_semester', :locals=> {:lva => l} %>
+<%end%>
+
+<%= render 'layouts/pretty_toolbar' %>
diff --git a/app/views/lvas/show.html.erb b/app/views/lvas/show.html.erb
index f7a4bc7..04038ea 100755
--- a/app/views/lvas/show.html.erb
+++ b/app/views/lvas/show.html.erb
@@ -1,30 +1,36 @@
-<% @lva.modul.each do |modul| %>
-<% modul.modulgruppen.each do |g| %>
-
-- <%= link_to g.studium.name , studium_path(g.studium)%>
-/
-- <%= link_to g.name , modulgruppe_path(g)%>/
-- <%= link_to modul.name , modul_path(modul)%>
-<% end %>
-
-<% end %>
-
+<%= render 'layouts/topbar'%>
<%= notice %>
- <%= @lva.lvanr %>
- <%= @lva.name %> <%= @lva.ects %> ECTS/ <%= @lva.stunden %> Std
-
+
+
<%= @lva.lvanr %><%= @lva.name %> <%= @lva.ects %> ECTS/ <%= @lva.stunden %> Std
+
-
+
+
Beschreibung
<%= @lva.desc %>
<%= link_to "Beispiel neu" , new_beispiel_path(:lva_id=>@lva.id) %>
+Beispiele
-<% @lva.beispiele.each do |b|%>
+ <% @lva.beispiele.each do |b|%>
-- <%= render b%>
+ - <%= render b%>
-<% end %>
+ <% end %>
-<%= toolbar_html(@toolbar_elements) %>
+Module
+
+ <% @lva.modul.each do |modul| %>
+ - <%= link_to modul.name , modul_path(modul)%>
+
+ <% modul.modulgruppen.each do |g| %>
+
+ - <%= link_to g.studium.name , studium_semesteransicht_path(g.studium)%> (<%=link_to g.name, modulgruppe_path(g)%>)
+ <% end %>
+
+
+
+ <% end %>
+
+<%= render 'layouts/pretty_toolbar' %>
diff --git a/app/views/modulgruppen/index.html.erb b/app/views/modulgruppen/index.html.erb
index 871c406..fb37c87 100755
--- a/app/views/modulgruppen/index.html.erb
+++ b/app/views/modulgruppen/index.html.erb
@@ -1,29 +1,9 @@
<%= I18n.t("modulgruppe.show.title")%>
-
-
- | Type |
- Phase |
- Studium |
- Name |
- |
- |
- |
-
<% @modulgruppen.sort_by{|n| n[:name]}.each do |modulgruppe| %>
-
- | <%= modulgruppe.typ %> |
- <%= modulgruppe.phase %> |
- <%= modulgruppe.studium.name unless modulgruppe.studium.nil? %> |
- <%= modulgruppe.name %> |
- <%= link_to 'Show', modulgruppe %> |
- <%= link_to 'Edit', edit_modulgruppe_path(modulgruppe) %> |
- <%= link_to 'Destroy', modulgruppe, method: :delete, data: { confirm: 'Are you sure?' } %> |
-
+ <%= render modulgruppe%>
<% end %>
-
-
<% if !@studium.nil? %>
<%= link_to 'New Modulgruppe', new_studium_modulgruppe_path(@studium) %>
diff --git a/app/views/moduls/_form.html.erb b/app/views/moduls/_form.html.erb
index fd67fc1..fb6b68b 100755
--- a/app/views/moduls/_form.html.erb
+++ b/app/views/moduls/_form.html.erb
@@ -1,7 +1,8 @@
<%= semantic_form_for @modul do |f| %>
<%= f.inputs do %>
- <%= f.input :modulgruppen,:as => :select, :collection => Hash[Modulgruppe.all.map{|m| [m.studium.name + " " + m.name,m.id]}] %>
+ <% # f.input :modulgruppen,:as => :select, :collection => Hash[Modulgruppe.all.map{|m| [m.studium.name + " " + m.name,m.id]}] %>
+ <%= f.input :modulgruppen %>
<%= f.input :name ,:hint=>true%>
<%= f.input :desc, :as=>:tinymce_text %>
<%= f.input :depend %>
diff --git a/app/views/moduls/_lang.html.erb b/app/views/moduls/_lang.html.erb
new file mode 100755
index 0000000..1dbb929
--- /dev/null
+++ b/app/views/moduls/_lang.html.erb
@@ -0,0 +1,32 @@
+
+ <%=
+if modul.name.nil?
+name=""
+else
+name=modul.name
+end
+link_to "Modul "+name , modul_path(modul) %>
+
+
+ <%= raw(modul.desc) %>
+
+LVAs:
+
+
+
+<% modul.lvas.each do |lv| %>
+-
+<%= link_to lv.name.to_s, lva_path(lv.id) %>
+
+<% end %>
+
+
+
+Modulgruppen:
+
+<% modul.modulgruppen.each do |mg| %>
+- <%=mg.name%> (<%= mg.studium.name unless mg.studium.nil?%>)
+<%end%>
+
+<% # @toolbar_elements << {:icon=>:pencil,:text=>I18n.t("common.edit"),:path=> edit_modul_path(modul)} %>
+
diff --git a/app/views/moduls/index.html.erb b/app/views/moduls/index.html.erb
index 933d4a7..385cfb6 100755
--- a/app/views/moduls/index.html.erb
+++ b/app/views/moduls/index.html.erb
@@ -1,39 +1,8 @@
-<%= I18n.t("modul.show.title") %>
+<%= render 'layouts/topbar' %>
+<%= I18n.t("modul.list") %>
-
-
- | Modulgruppe (Studium) |
- Name |
- Desc |
- |
- |
- |
-
+<%= render :partial=>'moduls/lang', :collection=>@moduls, :as=>:modul%>
-<% @moduls.sort_by{|n| n[:name]}.each do |modul| %>
-
-
- <%modul.modulgruppen.sort_by{|n| n[:name]}.each do |m|%>
-
-
- <%=m.name unless m.nil? %> (<%=m.studium.name unless m.studium.nil? %>)
-
-
- <% end %>
-
- |
-
- <%= modul.name %> |
- <%= modul.desc %> |
- <%= link_to 'Show', modul_path(modul) %> |
- <%= link_to 'Edit', edit_modul_path(modul) %> |
- <%= link_to 'Destroy', [modul], method: :delete, data: { confirm: 'Are you sure?' } %> |
-
-<% end %>
-
-
-
-<% #if !@studium.nil? %>
-<%= link_to 'New Modul', new_modul_path() %>
-<% #end%>
+
+<%= render 'layouts/pretty_toolbar'%>
diff --git a/app/views/moduls/show.html.erb b/app/views/moduls/show.html.erb
index 5190cfc..2bf73e9 100755
--- a/app/views/moduls/show.html.erb
+++ b/app/views/moduls/show.html.erb
@@ -1,16 +1,9 @@
-
-<% @modul.modulgruppen.each do |g| %>
-
--
-<%= link_to g.studium.name , studium_path(g.studium)%> /
-- <%= link_to g.name , modulgruppe_path(g)%>
-<%end%>
-
-
+<%= render 'layouts/topbar'%>
+<%= render 'layouts/topbar', :topbar=>@tb%>
<%= notice %>
<%= render @modul %>
-
-<%= link_to 'Add LVA', new_lva_path(:modul_id =>@modul.id) %>
-<%= link_to ''.html_safe+ I18n.t("common.edit") , edit_modul_path(@modul) %>
-<%= link_to "Loeschen", [@modul],:method=>:delete ,:data => {:confirm =>"Are you sure" } %>
+<%= 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 85a79e6..710e4ea 100755
--- a/app/views/semesters/_form.html.erb
+++ b/app/views/semesters/_form.html.erb
@@ -2,8 +2,8 @@
<%= f.inputs do %>
<%= f.input :name %>
<%= f.input :nummer %>
- <%= f.input :ws %>
- <%= f.input :ss %>
+ <%= f.input :ssws %>
+ <%= f.input :lvas %>
<% end %>
<%= f.actions do %>
diff --git a/app/views/semesters/index.html.erb b/app/views/semesters/index.html.erb
index 1a62a2f..3ec5688 100755
--- a/app/views/semesters/index.html.erb
+++ b/app/views/semesters/index.html.erb
@@ -15,8 +15,8 @@
| <%= semester.name %> |
<%= semester.nummer %> |
- <%= semester.ws %> |
- <%= semester.ss %> |
+ <%= semester.ssws %> |
+ <% %> |
<%= link_to 'Show', semester %> |
<%= link_to 'Edit', edit_semester_path(semester) %> |
<%= link_to 'Destroy', semester, method: :delete, data: { confirm: 'Are you sure?' } %> |
diff --git a/app/views/semesters/show.html.erb b/app/views/semesters/show.html.erb
index b6607ef..c06ceee 100755
--- a/app/views/semesters/show.html.erb
+++ b/app/views/semesters/show.html.erb
@@ -1,25 +1,20 @@
<%= notice %>
- Name:
- <%= @semester.name %>
+ Name: <%= @semester.name %>
- Nummer:
- <%= @semester.nummer %>
+ Nummer: <%= @semester.nummer %>
+
- Ws:
- <%= @semester.ws %>
+ WS/SS?: <%= @semester.ssws %>
-
- Ss:
- <%= @semester.ss %>
+<%= render :partial =>'lvas/lva_semester', :collection=>@semester.lvas, :as=>:lva%>
-
<%= link_to 'Edit', edit_semester_path(@semester) %> |
<%= link_to 'Back', semesters_path %>
diff --git a/app/views/studien/_navigation.html.erb b/app/views/studien/_navigation.html.erb
new file mode 100755
index 0000000..b2c8012
--- /dev/null
+++ b/app/views/studien/_navigation.html.erb
@@ -0,0 +1,20 @@
+
+
+ - <%= link_to ''.html_safe+ I18n.t("studien.allestudien"), studien_path,:raw=>true %>
+ /
+ - <%= link_to @text, @path%>
+ /
+
+ <% Studium.all.each do |s| %>
+ -
+ <% if @sem=='true' %>
+ <%= link_to_unless_current s.name, studium_semesteransicht_path(s) %>
+ <% else %>
+ <%= link_to_unless_current s.name, studium_path(s) %>
+ <% end %>
+ /
+
+<% end %>
+
+
+
diff --git a/app/views/studien/_studium.html.erb b/app/views/studien/_studium.html.erb
new file mode 100644
index 0000000..04a654a
--- /dev/null
+++ b/app/views/studien/_studium.html.erb
@@ -0,0 +1,9 @@
+
+
<%= link_to studium.name + " " + studium.zahl.to_s, studium_semesteransicht_path(studium)%>
+
+ - <%= studium.typ%>
+ - Beschreibung:
+ <%= !(studium.desc.to_s == "") ? studium.desc.html_safe : I18n.t("keine.beschreibung")%>
+ - <%=link_to "Link zur Modulgruppenansicht",studium_path(studium) %>
+
+
diff --git a/app/views/studien/edit.html.erb b/app/views/studien/edit.html.erb
index 766d5b2..a2f6ed9 100755
--- a/app/views/studien/edit.html.erb
+++ b/app/views/studien/edit.html.erb
@@ -1,6 +1,6 @@
-Editing studium
+<%= I18n.t("studien.edit")%>
<%= render 'form' %>
<%= link_to 'Show', @studium %> |
-<%= link_to 'Back', studien_path %>
\ No newline at end of file
+<%= link_to 'Back', studien_path %>
diff --git a/app/views/studien/index.html.erb b/app/views/studien/index.html.erb
index 52068d1..c67e6c9 100755
--- a/app/views/studien/index.html.erb
+++ b/app/views/studien/index.html.erb
@@ -1,15 +1,14 @@
+<%= render 'layouts/topbar' %>
<%= I18n.t("studien.list") %>
<% @studien.sort_by{|z| z[:zahl]}.each do |studium| %>
-
-
- <%= link_to studium.zahl + " "+ studium.typ+" " + studium.name, studium_path(studium) %>
-
+
<% end %>
-
-<% link_to I18n.t("studien.new"), new_studium_path %>
-<% link_to I18n.t("modulgruppe.show"), modulgruppen_path %>
-<%= toolbar_html(@toolbar_elements) %>
+
+<%= render :partial=>'layouts/pretty_toolbar'%>
+<% #toolbar_html(@toolbar_elements) %>
diff --git a/app/views/studien/semesteransicht.html.erb b/app/views/studien/semesteransicht.html.erb
new file mode 100644
index 0000000..22c82c2
--- /dev/null
+++ b/app/views/studien/semesteransicht.html.erb
@@ -0,0 +1,17 @@
+<%= render :partial=>'layouts/topbar'%>
+
+<%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)
+<%= raw(@studium.desc) %>
+<% @studium.semester.each do |sem| %>
+
+
<%= sem.name %>
+
+
+ <% sem.lvas.sort_by{|n| n[:name]}.each do |l| %>
+ - <%= render :partial=>'lvas/lva_semester', :locals =>{:lva => l}%>
+ <% end %>
+
+
+<% end %>
+
+<%= render :partial=>'layouts/pretty_toolbar', :locals=>{:elements=>@toolbar_elements} %>
diff --git a/app/views/studien/show.html.erb b/app/views/studien/show.html.erb
old mode 100755
new mode 100644
index 6c755c2..e813c9c
--- a/app/views/studien/show.html.erb
+++ b/app/views/studien/show.html.erb
@@ -1,33 +1,23 @@
+<%= render 'layouts/topbar'%>
-
-
<%= notice %>
-
- <%= link_to '
'.html_safe+ I18n.t("studien.allestudien"), studien_path,:raw=>true %>
-
-
<%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)
-
- <%= raw(@studium.desc) %>
- <% @studienphasen.each do |sp| %>
- <% sp[:modulgruppen].each do |row| %>
-
- <% row.each do |modulgruppe| %>
-
- <%= render modulgruppe %>
-
- <% end %>
-
- <% end %>
+
+
<%= notice %>
+
<%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)
+
+
+ <%= raw(@studium.desc) %>
+ <% @studienphasen.each do |sp| %>
+ <% sp[:modulgruppen].each do |row| %>
+
+ <% row.each do |modulgruppe| %>
+
+ <%= render modulgruppe %>
+
<% end %>
-
-
-
-
-<%= link_to ''.html_safe+I18n.t("studien.newmodulgroup"), new_studium_modulgruppe_path(@studium),:class=>"btn" %> |
-<%= link_to ''.html_safe+I18n.t("common.edit"), edit_studium_path(@studium) ,:class=>"btn"%>
-<%= link_to 'Destroy', @studium, method: :delete, data: { confirm: 'Are you sure?' } %>
-
+
+ <% end %>
+ <% end %>
+ <%= render :partial=>'layouts/pretty_toolbar', :object=>@toolbar_modulgruppen %>
+
+ <%= render 'layouts/pretty_toolbar' %>
-
-
-
-<%= toolbar_html(@toolbar_elements) %>
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 97cc3af..84fa7a6 100755
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -10,20 +10,26 @@ de:
list: "Studien der Fakultät Elektrotechnik"
anzeigen: "Studium anzeigen"
new: "Neues Studium"
- newmodulgroup: "Neue Modulgruppe"
allestudien: "Alle Studien"
+ loeschen: "Dieses Studium löschen"
+ edit: "Studium bearbeiten"
modul:
- edit:
- title: "Bearbeite Modul"
- show:
- title: "Auflistung aller Module"
- link: "Alle Module auflisten"
-
+ edit: "Modul bearbeiten"
+ list: "Alle Module"
+ add: "Neues Modul"
+ keine:
+ beschreibung: "Keine Beschreibung vorhanden"
+ lva:
+ add: "Lva hinzufügen"
+ list: "Alle Lvas"
+ semester:
+ ohne: "Ohne Semesterzuordnung"
modulgruppe:
typ: "Typ"
addmodul: "Neues Modul hinzufügen"
studium: "Studium"
new: "Neue Modulgruppe"
+ list: "Alle Modulgruppen auflisten"
show:
title: "Auflistung aller Modulgruppen"
link: "Modulgruppen auflisten"
@@ -85,4 +91,17 @@ de:
blank: "Geben Sie die Stunden der LVA an"
lvanr:
invalid: "Geben Sie eine LVA-Nummer in richtigem Format an. Wenn die LVA noch keine Nummer hat, so geben sie 000 an."
+ studium:
+ attributes:
+ zahl:
+ blank: "Geben Sie die Studienkennzahl an"
+ invalid: "Die eingegebene Form stimmt nicht (beginnend mit 033 oder 066, dann 3 Stellen)"
+ taken: "Die Kennzahl wird bereits verwendet"
+ name:
+ blank: "Geben Sie den Namen des Studiums ein"
+ taken: "Der Name ist bereits vergeben"
+ typ:
+ inclusion: 'Wählen Sie "Bachelor" oder "Master" aus'
+
+
diff --git a/config/routes.rb b/config/routes.rb
index 4e4ed7d..2603420 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,42 +1,41 @@
Fetsite::Application.routes.draw do
+
+ devise_for :users
+ resources :home, :only=>[:index]
+ #get 'home',:controller=>home,:action=>:index,:as=>"home_index"
+ scope '(:locale)/admin' do
+ resources :users
+ get 'config',:controller=>:config,:action=>:index , :as => 'config'
+ get 'config/get_git_update',:controller=>:config,:action=>:get_git_update, :as=>'config_getgitupdate'
+ get 'config/get_git_update',:controller=>:config,:action=>:get_git_update
+ end
+ devise_for :users
-
-
- devise_for :users
- resources :home, :only=>[:index]
- #get 'home',:controller=>home,:action=>:index,:as=>"home_index"
- scope '(:locale)/admin' do
- resources :users
- get 'config',:controller=>:config,:action=>:index , :as => 'config'
- get 'config/get_git_update',:controller=>:config,:action=>:get_git_update, :as=>'config_getgitupdate'
- get 'config/get_git_update',:controller=>:config,:action=>:get_git_update
-
-
-end
-
-devise_for :users
-
-resources :pages, :except => [:index] do
- member do
- post 'preview'
- end
-end
-get 'pages', :to =>'pages#show'
-scope '(:locale)' do
+ resources :pages, :except => [:index] do
+ member do
+ post 'preview'
+ end
+ end
+ get 'pages', :to =>'pages#show'
+ scope '(:locale)' do
+
resources :studien, :only=>[:show,:new,:edit,:update,:destroy]
resources :modulgruppen,:only =>[:create,:index]
+
resources :studien,:except=>[:show,:new,:edit,:update,:destroy], :shallow=>true do
resources :modulgruppen, :path => "(:locale)/modulgruppen"
+
end
+ get 'studien/:id/semesteransicht', :controller=>:studien, :action=>:semesteransicht, :as=>'studium_semesteransicht'
resources :semesters
resources :moduls
resources :lvas
resources :neuigkeiten
get 'rubriken/verwalten', :controller=>:rubriken, :action=>:alle_verwalten, :as=>'alle_verwalten_rubrik'
-
+
resources :rubriken do
- resources :neuigkeiten, :only=>[:new, :show]
+ resources :neuigkeiten, :only=>[:new, :show]
end
put 'rubriken/(:id)/addmoderator',:controller=>:rubriken,:action=>:addmoderator
get 'rubriken/:id/verwalten',:controller=>:rubriken,:action=>:verwalten, :as=>'verwalten_rubrik'
@@ -44,7 +43,7 @@ scope '(:locale)' do
get 'home/dev', :controller=>:home, :action=>:dev, :as=>'home_dev'
resources :beispiele
- end
+ end
# The priority is based upon order of creation:
# first created -> highest priority.
@@ -96,7 +95,7 @@ scope '(:locale)' do
# You can have the root of your site routed with "root"
# just remember to delete public/index.html.
- root :to => 'home#index'
+ root :to => 'home#index'
# See how all your routes lay out with "rake routes"
diff --git a/db/migrate/20130729085446_create_lva_semester_join_table.rb b/db/migrate/20130729085446_create_lva_semester_join_table.rb
new file mode 100644
index 0000000..cd29e07
--- /dev/null
+++ b/db/migrate/20130729085446_create_lva_semester_join_table.rb
@@ -0,0 +1,14 @@
+class CreateLvaSemesterJoinTable < ActiveRecord::Migration
+ def self.up
+ create_table :lvas_semesters, :id=>false do |t|
+ t.integer :lva_id
+ t.integer :semester_id
+ end
+ add_index :lvas_semesters, [:lva_id, :semester_id]
+ add_index :lvas_semesters, :semester_id
+ end
+
+ def self.down
+ drop_table :lvas_semesters
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index e41f87b..6a96d37 100755
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,17 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20130214233723) do
-
- create_table "beispiel_translations", :force => true do |t|
- t.string "locale"
- t.text "desc"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.integer "beispiele_id"
- end
-
- add_index "beispiel_translations", ["locale"], :name => "index_beispiel_translations_on_locale"
+ActiveRecord::Schema.define(:version => 20130729085446) do
create_table "beispiele", :force => true do |t|
t.string "name"
@@ -60,6 +50,11 @@ ActiveRecord::Schema.define(:version => 20130214233723) do
t.integer "modul_id"
end
+ create_table "lvas_semesters", :force => true do |t|
+ t.integer "lva_id"
+ t.integer "semester_id"
+ end
+
create_table "modul_translations", :force => true do |t|
t.integer "modul_id"
t.string "locale"
diff --git a/spec/factories/beispiele.rb b/spec/factories/beispiele.rb
new file mode 100644
index 0000000..f9cfcdf
--- /dev/null
+++ b/spec/factories/beispiele.rb
@@ -0,0 +1,6 @@
+# Read about factories at https://github.com/thoughtbot/factory_girl
+
+FactoryGirl.define do
+ factory :beispiel do
+ end
+end
diff --git a/spec/factories/lvas.rb b/spec/factories/lvas.rb
new file mode 100644
index 0000000..7a0091b
--- /dev/null
+++ b/spec/factories/lvas.rb
@@ -0,0 +1,6 @@
+# Read about factories at https://github.com/thoughtbot/factory_girl
+
+FactoryGirl.define do
+ factory :lva do
+ end
+end
diff --git a/spec/factories/modulgruppen.rb b/spec/factories/modulgruppen.rb
new file mode 100644
index 0000000..90946d0
--- /dev/null
+++ b/spec/factories/modulgruppen.rb
@@ -0,0 +1,15 @@
+# Read about factories at https://github.com/thoughtbot/factory_girl
+
+FactoryGirl.define do
+ factory :modulgruppe do
+ typ "Pflicht"
+ phase 1
+ name "Pflichtmodule 1"
+ desc "ASDFASDF"
+ factory :other_modulgruppe do
+ name "PFlichtmodule 2"
+ desc "sdafaswdfsfr"
+ end
+ end
+
+end
diff --git a/spec/factories/moduls.rb b/spec/factories/moduls.rb
new file mode 100644
index 0000000..ef48c30
--- /dev/null
+++ b/spec/factories/moduls.rb
@@ -0,0 +1,6 @@
+# Read about factories at https://github.com/thoughtbot/factory_girl
+
+FactoryGirl.define do
+ factory :modul do
+ end
+end
diff --git a/spec/factories/studien.rb b/spec/factories/studien.rb
new file mode 100644
index 0000000..5677904
--- /dev/null
+++ b/spec/factories/studien.rb
@@ -0,0 +1,19 @@
+# Read about factories at https://github.com/thoughtbot/factory_girl
+
+
+FactoryGirl.define do
+ factory :studium do
+ zahl "066506"
+ name "Automatisierung"
+ desc "TEST DESC"
+ typ "Master"
+
+ factory :other_studium do
+ name "Telecommunication"
+ desc "frueher Telekommungikation"
+ zahl "066507"
+ typ "Master"
+ end
+ end
+
+end
diff --git a/spec/factories/studium_factory.rb b/spec/factories/studium_factory.rb
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/spec/factories/studium_factory.rb
@@ -0,0 +1 @@
+
diff --git a/spec/models/beispiel_spec.rb b/spec/models/beispiel_spec.rb
new file mode 100644
index 0000000..cfaeb19
--- /dev/null
+++ b/spec/models/beispiel_spec.rb
@@ -0,0 +1,5 @@
+require 'spec_helper'
+
+describe Beispiel do
+ pending "add some examples to (or delete) #{__FILE__}"
+end
diff --git a/spec/models/lva_spec.rb b/spec/models/lva_spec.rb
new file mode 100644
index 0000000..4209553
--- /dev/null
+++ b/spec/models/lva_spec.rb
@@ -0,0 +1,5 @@
+require 'spec_helper'
+
+describe Lva do
+ pending "add some examples to (or delete) #{__FILE__}"
+end
diff --git a/spec/models/modul_spec.rb b/spec/models/modul_spec.rb
new file mode 100644
index 0000000..c4af626
--- /dev/null
+++ b/spec/models/modul_spec.rb
@@ -0,0 +1,5 @@
+require 'spec_helper'
+
+describe Modul do
+ pending "add some examples to (or delete) #{__FILE__}"
+end
diff --git a/spec/models/modulgruppe_spec.rb b/spec/models/modulgruppe_spec.rb
new file mode 100644
index 0000000..3a863e3
--- /dev/null
+++ b/spec/models/modulgruppe_spec.rb
@@ -0,0 +1,46 @@
+require 'spec_helper'
+
+describe Modulgruppe do
+ it "should not be valid without studium" do
+ mg=FactoryGirl.build(:modulgruppe)
+ mg.should_not be_valid
+ mg.should have(1).errors_on(:studium_id)
+ end
+ it "should be valid with studium" do
+ s=FactoryGirl.create(:studium)
+ mg=FactoryGirl.build(:modulgruppe)
+ mg.studium=s
+ mg.should be_valid
+ end
+ it "should not be valid without name" do
+ s=FactoryGirl.create(:studium)
+ mg=FactoryGirl.build(:modulgruppe)
+ mg.studium=s
+ mg.name=nil
+ mg.should_not be_valid
+ mg.should have_at_least(1).errors_on(:name)
+ end
+ xit "should not be valid with dubble name" do
+ s=FactoryGirl.create(:studium)
+ mg=FactoryGirl.build(:modulgruppe, name: "Gruppe 1", desc: "132")
+ mg.studium=s
+ mg.save
+ mg=FactoryGirl.build(:modulgruppe, name: "Gruppe 2", desc: "133")
+ mg.studium=s
+ mg.should_not be_valid
+ mg.should have_at_least(1).errors_on(:name)
+ end
+
+ it "should be valid with same name on different studien" do
+ s=FactoryGirl.create(:studium)
+ s2=FactoryGirl.create(:other_studium)
+ mg=FactoryGirl.build(:modulgruppe, name: "Gruppe")
+ mg.studium=s
+ mg.save
+ mg=FactoryGirl.build(:other_modulgruppe, name: "Gruppe")
+ mg.studium=s2
+ mg.should be_valid
+
+ end
+
+end
diff --git a/spec/models/studium_spec.rb b/spec/models/studium_spec.rb
new file mode 100644
index 0000000..0297604
--- /dev/null
+++ b/spec/models/studium_spec.rb
@@ -0,0 +1,27 @@
+require 'spec_helper'
+
+describe Studium do
+ [:name, :zahl].each do |attr|
+ it "should not be valid without #{attr}" do
+ s = FactoryGirl.build(:studium, attr=>nil)
+ s.should_not be_valid
+ end
+ end
+ it "should create studium with valid data" do
+ s=FactoryGirl.build(:studium)
+ lambda {
+ s.save!}.should change {Studium.count()}.by(1)
+ end
+ it "should not accept double entrys" do
+ FactoryGirl.create(:studium)
+ s=FactoryGirl.build(:studium)
+ s.should_not be_valid
+ s.should have_at_least(1).error_on(:name)
+ s.should have_at_least(1).error_on(:zahl)
+ end
+ it "should expect zahl to be 000.000" do
+ s=FactoryGirl.build(:studium, :zahl=>"000000")
+ s.should_not be_valid
+ s.should have_at_least(1).error_on(:zahl)
+ end
+end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
new file mode 100644
index 0000000..d2cbea7
--- /dev/null
+++ b/spec/spec_helper.rb
@@ -0,0 +1,38 @@
+# This file is copied to spec/ when you run 'rails generate rspec:install'
+ENV["RAILS_ENV"] ||= 'test'
+require File.expand_path("../../config/environment", __FILE__)
+require 'rspec/rails'
+require 'rspec/autorun'
+
+# Requires supporting ruby files with custom matchers and macros, etc,
+# in spec/support/ and its subdirectories.
+Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
+
+RSpec.configure do |config|
+ # ## Mock Framework
+ #
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
+ #
+ # config.mock_with :mocha
+ # config.mock_with :flexmock
+ # config.mock_with :rr
+
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
+
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
+ # examples within a transaction, remove the following line or assign false
+ # instead of true.
+ config.use_transactional_fixtures = true
+
+ # If true, the base class of anonymous controllers will be inferred
+ # automatically. This will be the default behavior in future versions of
+ # rspec-rails.
+ config.infer_base_class_for_anonymous_controllers = false
+
+ # Run specs in random order to surface order dependencies. If you find an
+ # order dependency and want to debug it, you can fix the order by providing
+ # the seed, which is printed after each run.
+ # --seed 1234
+ config.order = "random"
+end