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 %> +
diff --git a/app/views/beispiele/_form.html.erb b/app/views/beispiele/_form.html.erb index bf0c027..26e018e 100755 --- a/app/views/beispiele/_form.html.erb +++ b/app/views/beispiele/_form.html.erb @@ -1,13 +1,25 @@ -<%= semantic_form_for @beispiel, :html => { :multipart => true } do |f| %> - <%= f.inputs do %> - <%= f.input :name %> - <%= f.input :desc %> - <%= f.file_field :beispieldatei %> - <%= f.hidden_field :beispieldatei_cache %> - <%= f.input :lva, :as=>:select, :collection => Lva.all%> - <% end %> - <%= f.actions do %> + <%= semantic_form_for @beispiel, :html => { :multipart => true } do |f| %> + + <%= f.inputs do %> + <%= f.hidden_field :beispieldatei_cache %> + + <%= f.file_field :beispieldatei, :wrapper_html=>{:class=>"span4"}%> +
+ <%= f.input :name, :wrapper_html=>{:class=>'span6'} %> + <%= f.input :lva, :as=>:select, :collection => Lva.all, :wrapper_html=>{:class=>'span6'}%> + + +
+ +
+ <%= f.input :desc %> +
+ <% end %> + + <%= f.actions do %> <%= f.action :submit, :as => :input %> - <% end %> -<% end %> + + <% end %> + + <% end %> diff --git a/app/views/beispiele/index.html.erb b/app/views/beispiele/index.html.erb index 89bee7d..a7f903a 100755 --- a/app/views/beispiele/index.html.erb +++ b/app/views/beispiele/index.html.erb @@ -1,4 +1,4 @@ -

<%= I18n.t("beispiele.list")

+

<%= I18n.t("beispiele.list") %>

+ + + + + <%= render 'layouts/pretty_toolbar' %> + diff --git a/app/views/modulgruppen/_form.html.erb b/app/views/modulgruppen/_form.html.erb index 8191af5..52a558e 100755 --- a/app/views/modulgruppen/_form.html.erb +++ b/app/views/modulgruppen/_form.html.erb @@ -1,13 +1,29 @@ <%= semantic_form_for @modulgruppe do |f| %> - <%= f.inputs do %> - <%= f.input :studium_id, :as =>:select, :collection => Studium.all %> - <%= f.input :typ ,:as => :radio, :collection=>["Pflicht","Vertiefungspflicht","Wahl"]%> - <%= f.input :phase,:as => :radio,:collection=>1..3 %> - <%= f.input :name %> - <%= f.input :desc,:input_html=>{:rows=> 3 }%> - <% end %> +<%= f.inputs do %> +
- <%= f.actions do %> - <%= f.action :submit, :as => :input %> +
+ <%= f.input :name, :wrapper_html=>{:class=>"span12"}%> +
+
+ <%= f.input :studium_id, :as =>:select, :collection => Studium.all, :wrapper_html=>{:class=>"span4"} %> + <%= f.input :typ, :collection=>["Pflicht","Vertiefungspflicht","Wahl"], :wrapper_html=>{:class=>"span4"}%> + <%= f.input :phase, :as=>:select, :collection=>1..3, :wrapper_html=>{:class=>"span4"} %> +
+ + +
+ <%= f.input :desc %> + +
+ +
+
+ <%= f.input :moduls, :as=>:check_boxes %> +
<% end %> +<%= f.actions do %> +<%= f.action :submit, :as => :input %> + +<% end %> <% end %> diff --git a/app/views/modulgruppen/_kurz.html.erb b/app/views/modulgruppen/_kurz.html.erb new file mode 100644 index 0000000..610f838 --- /dev/null +++ b/app/views/modulgruppen/_kurz.html.erb @@ -0,0 +1 @@ +<%=link_to modulgruppe.name, modulgruppe %> <%= ' ( ' + modulgruppe.studium.name + ')' unless modulgruppe.studium.nil? %> diff --git a/app/views/modulgruppen/_modulgruppe.html.erb b/app/views/modulgruppen/_modulgruppe.html.erb index e897957..0e3f9d4 100755 --- a/app/views/modulgruppen/_modulgruppe.html.erb +++ b/app/views/modulgruppen/_modulgruppe.html.erb @@ -8,10 +8,5 @@ <% link_to ''.html_safe+I18n.t("common.edit"), edit_modulgruppe_path(modulgruppe) %> - - - - - diff --git a/app/views/modulgruppen/show.html.erb b/app/views/modulgruppen/show.html.erb index b8a33b3..a127623 100755 --- a/app/views/modulgruppen/show.html.erb +++ b/app/views/modulgruppen/show.html.erb @@ -19,7 +19,7 @@ <% @modulgruppe.moduls.each do |modul| %> -<%= render modul%> +<%= render 'moduls/kurz', :modul=>modul%> <% end %> diff --git a/app/views/moduls/_modul.html.erb b/app/views/moduls/_modul.html.erb index eca542f..78ff8dc 100755 --- a/app/views/moduls/_modul.html.erb +++ b/app/views/moduls/_modul.html.erb @@ -1,26 +1,23 @@ -

- <%= -if modul.name.nil? -name="" -else -name=modul.name -end -link_to "Modul "+name , modul_path(modul) %> -

+ +

<%=@modul.name %>

+ + +

Beschreibung

- <%= raw(modul.desc) %> + <%= raw(@modul.desc) %>

-LVAs: - -
    - -<% modul.lvas.each do |lv| %> -
  • -<%= link_to lv.name.to_s, lva_path(lv.id) %> -
  • -<% end %> - -
- -<% # @toolbar_elements << {:icon=>:pencil,:text=>I18n.t("common.edit"),:path=> edit_modul_path(modul)} %> +

Lvas

+<% @modul.lvas.each_slice(3) do |row| %> +
+<% row.each do |lv| %> +
+<%= render 'lvas/lva_semester', :lva=>lv%>
+<% end %> +
+ +<% end %> +

Modulgruppen

+<% @modul.modulgruppen.each do |mg| %> +<%= render 'modulgruppen/kurz', :modulgruppe=>mg %>
+<% end %> diff --git a/app/views/moduls/index.html.erb b/app/views/moduls/index.html.erb index 385cfb6..d0e5e48 100755 --- a/app/views/moduls/index.html.erb +++ b/app/views/moduls/index.html.erb @@ -1,8 +1,11 @@ +
+ <%= render 'layouts/topbar' %>

<%= I18n.t("modul.list") %>

- +
<%= render :partial=>'moduls/lang', :collection=>@moduls, :as=>:modul%>
+
<%= render 'layouts/pretty_toolbar'%> - +
diff --git a/app/views/moduls/show.html.erb b/app/views/moduls/show.html.erb index 2bf73e9..8253a6b 100755 --- a/app/views/moduls/show.html.erb +++ b/app/views/moduls/show.html.erb @@ -1,9 +1,6 @@ -<%= render 'layouts/topbar'%> -<%= render 'layouts/topbar', :topbar=>@tb%> + +<%= render 'studien/tabs'%>

<%= 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 @@ -

Editing semester

+

<%=@semester.name%>

+ <%= render 'form' %> -<%= render 'form' %> - -<%= link_to 'Show', @semester %> | -<%= link_to 'Back', semesters_path %> diff --git a/app/views/studien/_form.html.erb b/app/views/studien/_form.html.erb index 0973ef5..9b52e38 100755 --- a/app/views/studien/_form.html.erb +++ b/app/views/studien/_form.html.erb @@ -1,7 +1,7 @@
<%= tinymce_assets %> <%= semantic_form_for @studium do |f| %> -
+ <%= f.inputs do %>
@@ -18,11 +18,12 @@
<%= f.input :desc, :as=>:tinymce_text %>
+ <% end %> <%= tinymce %> <%= f.actions do %> <%= f.action :submit, :as => :input %> <% end %> -
+ <% end %>
diff --git a/app/views/studien/_studium.html.erb b/app/views/studien/_studium.html.erb index 04a654a..68333a6 100644 --- a/app/views/studien/_studium.html.erb +++ b/app/views/studien/_studium.html.erb @@ -1,9 +1,6 @@
-

<%= 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) %>
  • -
+

<%= link_to studium.name + " " + studium.zahl.to_s, studium_path(studium, :ansicht=>'semesteransicht')%>

<%= studium.typ%>

+

Beschreibung:
+ <%= !(studium.desc.to_s == "") ? studium.desc.html_safe : I18n.t("keine.beschreibung")%>

+
diff --git a/app/views/studien/_tabs.html.erb b/app/views/studien/_tabs.html.erb new file mode 100644 index 0000000..2760f1b --- /dev/null +++ b/app/views/studien/_tabs.html.erb @@ -0,0 +1,24 @@ + diff --git a/app/views/studien/_verwalten_menu.html.erb b/app/views/studien/_verwalten_menu.html.erb new file mode 100644 index 0000000..e69de29 diff --git a/app/views/studien/index.html.erb b/app/views/studien/index.html.erb index c67e6c9..0d58a99 100755 --- a/app/views/studien/index.html.erb +++ b/app/views/studien/index.html.erb @@ -1,14 +1,18 @@ -<%= render 'layouts/topbar' %> -

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

+
+ <%= render 'studien/tabs' %> +
+

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

-<% @studien.sort_by{|z| z[:zahl]}.each do |studium| %> -
    -
  • <%= render studium%>
  • -
-<% end %> + <% @studien.sort_by{|z| z[:zahl]}.each do |studium| %> +
+ <%= render studium%> +
+ <% end %> -
-<%= render :partial=>'layouts/pretty_toolbar'%> -<% #toolbar_html(@toolbar_elements) %> +
+ +
+ <%= render :partial=>'layouts/pretty_toolbar'%> +
diff --git a/app/views/studien/semesteransicht.html.erb b/app/views/studien/semesteransicht.html.erb index 22c82c2..e9f423a 100644 --- a/app/views/studien/semesteransicht.html.erb +++ b/app/views/studien/semesteransicht.html.erb @@ -1,17 +1,40 @@ -<%= 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 %> -
+ <%= render 'studien/tabs' %> +

<%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)

+
<%= link_to @text, studium_path(@studium, :ansicht=>@flip), :class=>"btn" %>
-<% end %> +
+ <%= raw(@studium.desc) %> -<%= render :partial=>'layouts/pretty_toolbar', :locals=>{:elements=>@toolbar_elements} %> + <% @studium.semester.each do |sem| %> +
+
+
+
+
+
+

<%= sem.name %>

+
+
<%= link_to 'Lvas hinzufügen/entfernen', edit_semester_path(sem), :class=>"btn"%>
+
+ <% sem.lvas.each_slice(4) do |row| %> +
+ <% row.each do |l| %> + +
+ <%= render :partial=>'lvas/lva_semester', :locals =>{:lva => l}%> +
+ <% end %> +
+ <% 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 index e813c9c..9b78f5d 100644 --- a/app/views/studien/show.html.erb +++ b/app/views/studien/show.html.erb @@ -1,23 +1,27 @@ -<%= render 'layouts/topbar'%> +
+ <%= render 'studien/tabs' %> +

<%= notice %>

-

<%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)

+

<%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)

+
<%= link_to @text, studium_path(@studium, :ansicht=>@flip), :class=>"btn" %>
+
-
- <%= raw(@studium.desc) %> - <% @studienphasen.each do |sp| %> - <% sp[:modulgruppen].each do |row| %> -
- <% row.each do |modulgruppe| %> -
- <%= render modulgruppe %> -
- <% end %> -
+
+ <%= raw(@studium.desc) %> + <% @studienphasen.each do |sp| %> + <% sp[:modulgruppen].each do |row| %> +
+ <% row.each do |modulgruppe| %> +
+ <%= render modulgruppe %> +
+ <% end %> +
+ <% end %> <% end %> - <% end %> - <%= render :partial=>'layouts/pretty_toolbar', :object=>@toolbar_modulgruppen %> -
+
+ <%= render :partial=>'layouts/pretty_toolbar', :object=>@toolbar_modulgruppen %>
<%= render 'layouts/pretty_toolbar' %>
diff --git a/app/views/studien/verwalten.html.erb b/app/views/studien/verwalten.html.erb new file mode 100644 index 0000000..a7b7d4b --- /dev/null +++ b/app/views/studien/verwalten.html.erb @@ -0,0 +1,171 @@ +
+ <%= render 'studien/tabs'%> +
+
+ +

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

<%= link_to I18n.t("filter.reset"), studien_verwalten_path(:std_verw=>nil, :mg_verw=>nil, :m_verw=>nil, :lva_verw=>nil, :b_verw=>nil), :class=>"btn" %> + <%= I18n.t("filter.explanation").html_safe %> +

Studien

+
+ + | + <% @studien.each do |s| %> + <%= link_to s.name, s %> <%= (s.valid?) ? "Gültig" : "Problemfall" %> | <% end %> +
+
+ + <%= params[:std_verw].nil? ? I18n.t("filter.studium") : Studium.find(params[:std_verw]).name %> + + + + +
+ <%= link_to 'Neues Studium', new_studium_path, :class=>'btn'%> +
+ +
+
+ +
+

Modulgruppen

+
+ <% @modulgruppen.each do |mg| %> + <%= link_to mg.name, mg %> | <%= (mg.valid?) ? "Gültig" : "Problemfall" %>
+ <% end %> +
+
+ + <%= params[:mg_verw].nil? ? I18n.t("filter.modulgruppe") : Modulgruppe.find(params[:mg_verw]).name %> + + + + + +
+ <%= link_to "Neue Modulgruppe", new_studium_modulgruppe_path(Studium.first), :class=>"btn" unless Studium.first.nil?%> +
+ + +
+
+
+

Module

+
+ + + <% @module.each do |m| %> + <%= link_to m.name, m %> + | <%= (m.valid?) ? "Gültig" : "Problemfall" %>
+ <% end %> +
+
+ + <%= params[:m_verw].nil? ? I18n.t("filter.modul") : Modul.find(params[:m_verw]).name %> + + + + + +
+ <%= link_to "Neues Modul", new_modul_path, :class=>"btn"%> +
+
+
+
+

Lvas

+
+ + + <% @lvas.each do |lva| %> + <%= link_to lva.name, lva %> | + <%= (lva.valid?) ? "Gültig" : "Problemfall" %>
+ + <% end %> +
+
+ + <%= params[:lva_verw].nil? ? I18n.t("filter.lva") : Lva.find(params[:lva_verw]).name %> + + + + + +
+ <%= link_to "Neue LVa", new_lva_path, :class=>'btn'%> +
+
+
+ + + + +
+
+
+

Error Log

+
    +
  • Red: Error, Solve immediately
  • +
  • Black: Warning, should be solved
  • +
  • Green: Everything is fine
  • +
+
+
    + <% @messages.flatten.each do |m| %> + <% if !m.strip.empty? %> +
  • <%= m.html_safe %>
  • + <% end %> + <% end %> +
+ <%= I18n.t("verwalten.fehler.keine").html_safe if @messages.empty?%> +
+

Beispiele

+
+ + + <% @beispiele.each do |b| %> + <%= link_to b.name, b %> + <% end %> +
+
+ + <%= params[:b_verw].nil? ? I18n.t("filter.beispiel") : Beispiel.find(params[:b_verw]).name %> + + + + + +
+ <%= link_to "Neues Beispiel", new_beispiel_path, :class=>"btn"%> +
+ +
+
+ +
+
diff --git a/config/locales/de.yml b/config/locales/de.yml index 16f6956..aaa3c13 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" @@ -90,7 +91,10 @@ de: stunden: 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." + invalid: "Geben Sie eine Nummer im Format 000.000 an." + blank: "Geben sie eine Lva-Nr an" + taken: "Die Lva-Nummer ist bereits vergeben" + studium: attributes: zahl: @@ -101,8 +105,26 @@ de: blank: "Geben Sie den Namen des Studiums ein" taken: "Der Name ist bereits vergeben" typ: - inclusion: 'Wählen Sie "Bachelor" oder "Master" aus' - + 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" + support: + array: + two_words_connector: ', ' + date: abbr_day_names: - So diff --git a/config/routes.rb b/config/routes.rb index 5a7fbf6..1109d6d 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,8 +1,4 @@ Fetsite::Application.routes.draw do - - - - devise_for :users resources :home, :only=>[:index] #get 'home',:controller=>home,:action=>:index,:as=>"home_index" @@ -13,8 +9,6 @@ Fetsite::Application.routes.draw do get 'config/get_git_update',:controller=>:config,:action=>:get_git_update end - devise_for :users - resources :pages, :except => [:index] do member do post 'preview' diff --git a/db/schema.rb b/db/schema.rb index b8d0781..3d274f5 100755 --- a/db/schema.rb +++ b/db/schema.rb @@ -17,6 +17,7 @@ ActiveRecord::Schema.define(:version => 20130810214456) do t.string "name" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false +<<<<<<< HEAD end create_table "beispiel_translations", :force => true do |t| @@ -28,6 +29,10 @@ ActiveRecord::Schema.define(:version => 20130810214456) do end add_index "beispiel_translations", ["locale"], :name => "index_beispiel_translations_on_locale" +======= + t.integer "thema_id" + end +>>>>>>> thomasb/master create_table "beispiele", :force => true do |t| t.string "name" @@ -63,11 +68,29 @@ ActiveRecord::Schema.define(:version => 20130810214456) do t.datetime "updated_at", :null => false end +<<<<<<< HEAD +======= + create_table "frage_translations", :force => true do |t| + t.string "locale" + t.string "title" + t.text "text" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "fragen_id" + end + + add_index "frage_translations", ["locale"], :name => "index_frage_translations_on_locale" + +>>>>>>> thomasb/master create_table "fragen", :force => true do |t| t.string "title" t.text "text" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false +<<<<<<< HEAD +======= + t.integer "thema_id" +>>>>>>> thomasb/master end create_table "lva_translations", :force => true do |t| @@ -212,13 +235,45 @@ ActiveRecord::Schema.define(:version => 20130810214456) do add_index "studium_translations", ["locale"], :name => "index_studium_translations_on_locale" +<<<<<<< HEAD create_table "themen", :force => true do |t| +======= + create_table "thema_translations", :force => true do |t| + t.string "locale" +>>>>>>> thomasb/master t.string "title" t.text "text" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false +<<<<<<< HEAD end +======= + t.integer "themen_id" + end + + add_index "thema_translations", ["locale"], :name => "index_thema_translations_on_locale" + + create_table "themen", :force => true do |t| + t.string "title" + t.text "text" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "themengruppe_id" + end + + create_table "themengruppe_translations", :force => true do |t| + t.string "locale" + t.string "title" + t.text "text" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "themengruppen_id" + end + + add_index "themengruppe_translations", ["locale"], :name => "index_themengruppe_translations_on_locale" + +>>>>>>> thomasb/master create_table "themengruppen", :force => true do |t| t.string "title" t.text "text" diff --git a/spec/factories/moduls.rb b/spec/factories/moduls.rb index ef48c30..4bfd34f 100644 --- a/spec/factories/moduls.rb +++ b/spec/factories/moduls.rb @@ -2,5 +2,9 @@ FactoryGirl.define do factory :modul do + name "" + factory :other_modul do + name "Modul 1" + end end end diff --git a/spec/models/modul_spec.rb b/spec/models/modul_spec.rb index c4af626..2bc5894 100644 --- a/spec/models/modul_spec.rb +++ b/spec/models/modul_spec.rb @@ -1,5 +1,14 @@ require 'spec_helper' describe Modul do - pending "add some examples to (or delete) #{__FILE__}" + it "should not be valid without name" do + m = FactoryGirl.build(:modul) + m.should_not be_valid + m.should have(1).errors_on(:name) + end + it "should be valid with name" do + m = FactoryGirl.build(:modul) + m.name = "Grundlagen" + m.should be_valid + end end