diff --git a/app/controllers/modulgruppen_controller.rb b/app/controllers/modulgruppen_controller.rb index 6c2e6f8..0a3a0aa 100755 --- a/app/controllers/modulgruppen_controller.rb +++ b/app/controllers/modulgruppen_controller.rb @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- class ModulgruppenController < ApplicationController - # GET /modulgruppen - - + before_filter :find_modulgruppe, :only=>[:show, :delete] + before_filter :load_toolbar_show, :only=>[:show] # Toolbar für show erstellen load_and_authorize_resource + def index @modulgruppen = Modulgruppe.all if !params[:studium_id].nil? @@ -14,17 +14,12 @@ class ModulgruppenController < ApplicationController end # GET /modulgruppen/1 - def show @modulgruppe = Modulgruppe.find(params[:id]) @studium = Studium.find(@modulgruppe.studium_id) if !params[:studium_id].nil? @studium=Studium.find(params[:studium_id]) end - @toolbar_elements = [ {:text=>'Zurück', :path=>studium_path(@studium, :ansicht=>:modulgruppenansicht)}] - @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodul'), :path=>new_modul_path(@modulgruppe)} - @toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t('modulgruppe.edit'), :path=>edit_modulgruppe_path(@modulgruppe)} - @toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium, :ansicht=>:modulgruppenansicht), :method=> :delete,:confirm=>'Sure?' } end # GET /modulgruppen/new @@ -38,7 +33,6 @@ class ModulgruppenController < ApplicationController end respond_to do |format| format.html # new.html.erb - format.json { render json: @modulgruppe } end end @@ -51,13 +45,15 @@ class ModulgruppenController < ApplicationController end end + + + + # POST /modulgruppen def create @modulgruppe = Modulgruppe.new(params[:modulgruppe]) - respond_to do |format| - if @modulgruppe.save format.html { redirect_to @modulgruppe.studium, notice: 'Modulgruppe was successfully created.' } @@ -93,4 +89,20 @@ class ModulgruppenController < ApplicationController end end + + private + def find_modulgruppe + @modulgruppe = Modulgruppe.find(params[:id]) + + end + def load_toolbar_show + @toolbar_elements = [ {:text=>'Zurück', :path=>studium_path(@modulgruppe.studium, :ansicht=>:modulgruppenansicht)}] + @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodule'), :path=>new_bulk_moduls_path(:modulgruppen_id=>@modulgruppe.id)} + + @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodul'), :path=>new_modul_path(:modulgruppen_id=>@modulgruppe.id)} + @toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t('modulgruppe.edit'), :path=>edit_modulgruppe_path(@modulgruppe)} + @toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => modulgruppe_path(@modulgruppe, :ansicht=>:modulgruppenansicht), :method=> :delete,:confirm=>'Sure?' } + + end + end diff --git a/app/controllers/moduls_controller.rb b/app/controllers/moduls_controller.rb index 3398a66..0b71ae9 100755 --- a/app/controllers/moduls_controller.rb +++ b/app/controllers/moduls_controller.rb @@ -2,10 +2,11 @@ class ModulsController < ApplicationController # GET /moduls # GET /moduls.json - before_filter :find_modul, :only=>[:show,:update_lvas,:edit_lvas,:load_tiss,:show_tiss] # @modul laden + before_filter :find_modul, :only=>[:show,:update,:update_lvas,:edit_lvas,:load_tiss,:show_tiss] # @modul laden before_filter :load_toolbar_show, :only=>[:show] # Toolbar für show erstellen before_filter :load_toolbar_index, :only=>[:index] # Toolbar für index erstellen load_and_authorize_resource + def index @moduls = Modul.all if @moduls @@ -31,6 +32,7 @@ class ModulsController < ApplicationController end end + # GET /moduls/new # GET /moduls/new.json def new @@ -43,11 +45,59 @@ class ModulsController < ApplicationController format.html # new.html.erb end end - def edit_lvas - @lvas = @modul.lvas - @semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq + def new_bulk + @moduls= [] + @modulgruppe=Modulgruppe.find(params[:modulgruppen_id]) + 10.times {@moduls << Modul.new(:modulgruppen=>[@modulgruppe])} end + + def edit + @modul = Modul.find(params[:id]) + if !params[:studium_id].nil? + @studium=Studium.find(params[:studium_id]) + end + end + + def edit_bulk + unless params[:modulgruppen_id].nil? + @moduls=Modulgruppe.find(params[:modulgruppen_id]).moduls + else + @moduls=Modul.all + end + @moduls << Modul.new + end + + def edit_lvas + @lvas = @modul.lvas + @semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq + end + + def update + + respond_to do |format| + if @modul.update_attributes(params[:modul]) + for i in @modul.lvas + i.add_semesters + end + format.html { redirect_to url_for(@modul), notice: 'Modul was successfully updated.' } + else + format.html { render action: "edit" } + end + end + end + + def update_bulk + @moduls=Modul.update_multiple(params[:moduls]) + if @moduls.map(&:valid?).all? + redirect_to @moduls.first.modulgruppen.first, :notice=>"Erfolgreich Module geändert" + else + render :edit_bulk + end + end + + + def update_lvas @semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq @newlvas=Lva.update_multiple_with_modul(params["lvas"],@modul) @@ -59,14 +109,13 @@ class ModulsController < ApplicationController render "edit_lvas" end end + def load_tiss - @lvas = @modul.lvas - end + def show_tiss @lvas=[]; - @semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq params["lvas"].to_a.each do |l| unless l.last["lvanr"].empty? @@ -80,13 +129,8 @@ class ModulsController < ApplicationController end render 'edit_lvas' end + # GET /moduls/1/edit - def edit - @modul = Modul.find(params[:id]) - if !params[:studium_id].nil? - @studium=Studium.find(params[:studium_id]) - end - end # POST /moduls # POST /moduls.json @@ -98,10 +142,8 @@ class ModulsController < ApplicationController i.add_semesters end format.html { redirect_to modulgruppe_path(@modul.modulgruppen.first), notice: 'Modul was successfully created.' } - format.json { render json: @modul, status: :created, location: @modul } else format.html { render action: "new" } - format.json { render json: @modul.errors, status: :unprocessable_entity } end end @@ -109,27 +151,9 @@ class ModulsController < ApplicationController # PUT /moduls/1 # PUT /moduls/1.json - def update - @modul = Modul.find(params[:id]) - - respond_to do |format| - if @modul.update_attributes(params[:modul]) - for i in @modul.lvas - i.add_semesters - end - format.html { redirect_to url_for(@modul), notice: 'Modul was successfully updated.' } - format.json { head :no_content } - else - format.html { render action: "edit" } - format.json { render json: @modul.errors, status: :unprocessable_entity } - end - end - end - # DELETE /moduls/1 # DELETE /moduls/1.json def destroy - @modul = Modul.find(params[:id]) modulgruppe=@modul.modulgruppen.first for i in @modul.lvas @@ -140,22 +164,24 @@ class ModulsController < ApplicationController end private + def find_modul - @modul = Modul.find(params[:id]) + @modul = Modul.find(params[:id]) end - def load_toolbar_show - @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=>"Lvas bearbeiten", :path=>edit_lvas_modul_path(@modul)} - @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>load_tiss_modul_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'}} - @topbar_elements = [{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}] - @tb=[] + + def load_toolbar_show + @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=>"Lvas bearbeiten", :path=>edit_lvas_modul_path(@modul)} + @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>load_tiss_modul_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'}} + @topbar_elements = [{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}] + @tb=[] end - - def load_toolbar_index + + def load_toolbar_index @toolbar_elements = [{:hicon=>'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}] diff --git a/app/models/modul.rb b/app/models/modul.rb index 2ca6f9b..4cb136a 100755 --- a/app/models/modul.rb +++ b/app/models/modul.rb @@ -12,14 +12,33 @@ # class Modul < ActiveRecord::Base - attr_accessible :desc,:name, :depend, :studium_id, :modulgruppe_ids + attr_accessible :desc,:name, :depend, :studium_id, :modulgruppen has_and_belongs_to_many :lvas , :uniq=>true 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 + def self.update_multiple(hash) + m= [] + hash.each_entry do |h| + if h["id"].to_i == 0 + unless h["name"].empty? + md=Modul.new(:name=>h["name"],:desc=>h["desc"],:depend=>h["depend"]) + md.modulgruppen=Modulgruppe.where(:id => h["modulgruppe_ids"].map(&:to_i)) + md.save + m << md + end + else + md=Modul.find(h["id"].to_i) + md.name=h["name"] + md.modulgruppen=Modulgruppe.where(:id => h["modulgruppe_ids"].map(&:to_i)) + m << md + end + end + m + end end diff --git a/app/views/moduls/_form_bulk.html.erb b/app/views/moduls/_form_bulk.html.erb new file mode 100644 index 0000000..e3eaebc --- /dev/null +++ b/app/views/moduls/_form_bulk.html.erb @@ -0,0 +1,29 @@ +<%= semantic_form_for "moduls[]", :url=>update_bulk_moduls_path do |ff| %> +
| Modulname | Modulgruppen | Beschreibung | Voraussetzungen |
|---|---|---|---|
| +<%= f.input :id, :label=>false, :hint=>"" ,:as=>:hidden%> +<%= f.input :name, :label=>false, :hint=>"" %> | ++<%= f.input :modulgruppen, :label=>false, :hint=>"" , :collection=>Modulgruppe.all %> + | ++<%= f.input :desc, :label=>false, :hint=>"" ,:input_html=>{:class=>"row-fluid"} %> + | + ++<%= f.input :depend, :label=>false, :hint=>"" ,:input_html=>{:class=>"row-fluid"} %> + | +