Merge remote-tracking branch 'thomasb/master'

Conflicts:
	app/assets/stylesheets/formtastic-changes.css.scss
	app/controllers/beispiele_controller.rb
	app/views/lvas/show.html.erb
	app/views/studien/_form.html.erb
	config/locales/de.yml
	config/routes.rb
	db/schema.rb
This commit is contained in:
Andreas Stephanides
2013-08-12 11:11:59 +02:00
44 changed files with 791 additions and 245 deletions

View File

@@ -5,8 +5,6 @@ form.formtastic textarea {
width:90%;
height:20em;
}
div.form-group {
border-width: 1px;
border-style: none;
@@ -18,3 +16,9 @@ border-width: 1px;
border-style: solid;
padding: 5px;
}
form.formtastic .input label.control-label {
font-weight:bold;
font-size:125%;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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.' }

View File

@@ -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=> '<b>' + m.name + '</b>', :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

View File

@@ -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" }

View File

@@ -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.' }

View File

@@ -1,20 +1,18 @@
class StudienController < ApplicationController
before_filter {@toolbar_elements =[]}
before_filter {@toolbar_elements =[]}
# before_filter :authorize, :only => :verwalten
def index
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
end
def show
def show
@studium= Studium.find(params[:id])
@text = 'Zu Semesteransicht wechseln'
@path = studium_semesteransicht_path(@studium)
@studienphasen=[]
[1, 2 ,3].each do |ph|
@@ -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 << '<font color="red"><b>'+s.name + ': '
@messages << s.errors.full_messages
@messages << '</font></b>'
end
end
for mg in @modulgruppen
if mg.valid?
@messages << mg.name + ' hat kein Modul' if mg.moduls.count == 0
else
@messages << '<font color="red"><b>'+mg.name + ': '
@messages << mg.errors.full_messages
@messages << '</font></b>'
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 << '<font color="red"><b>'+m.name + ': '
@messages << m.errors.full_messages
@messages << '</font></b>'
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 << '<font color="red"><b>'+lva.name + ': '
@messages << lva.errors.full_messages
@messages << '</font></b>'
end
end
for b in @beispiele
if b.valid?
@messages << b.name + ' hat keine Lva' if b.lva.nil?
else
@messages << '<font color="red"><b>'+b.name + ': '
@messages << b.errors.full_messages
@messages << '</font></b>'
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

View File

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

View File

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

View File

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

View File

@@ -1 +1,4 @@
<%=link_to beispiel.name, beispiel.beispieldatei.url%>
<div class="lva-beispiele">
<h4><%=link_to beispiel.name, beispiel.beispieldatei.url%></h4>
<%= beispiel.desc %>
</div>

View File

@@ -1,13 +1,25 @@
<%= semantic_form_for @beispiel, :html => { :multipart => true } do |f| %>
<%= 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%>
<%= f.file_field :beispieldatei, :wrapper_html=>{:class=>"span4"}%>
<div class="row-fluid">
<%= f.input :name, :wrapper_html=>{:class=>'span6'} %>
<%= f.input :lva, :as=>:select, :collection => Lva.all, :wrapper_html=>{:class=>'span6'}%>
</div>
<div class="row-fluid">
<%= f.input :desc %>
</div>
<% end %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<% end %>
<% end %>
<% end %>

View File

@@ -1,4 +1,4 @@
<h1><%= I18n.t("beispiele.list")</h1>
<h1><%= I18n.t("beispiele.list") %></h1>
<ul>
<% @beispiele.each do |beispiel| %>
<li>

View File

@@ -10,7 +10,9 @@
<%= @beispiel.desc %>
<%= @beispiel.beispieldatei.url %>
</p>
<p>
<%= @beispiel.lva.name %>
</p>
<%= link_to 'Edit', edit_beispiel_path(@beispiel) %> |
<%= link_to 'Back', beispiele_path %>

View File

@@ -1,3 +1,9 @@
<!--
Verwendung: Aufruf mit
< % = render 'layouts/pretty_toolbar % > verwendet die Elemente die im Controller per @toolbar_elements vorgegeben werden. Sonst kann man über
< % = render :partial=>'layouts/pretty_toolbar', :object=>@foo % > einen beliebigen array @foo übergeben
-->
<% toolbar_elements = !pretty_toolbar.nil? ? pretty_toolbar : @toolbar_elements %>
<span class="label"><%= I18n.t("common.actions")%></span>
<div class="btn-group">

View File

@@ -1,3 +1,11 @@
<!--
Verwendung: Aufruf mit
< % = render 'layouts/topbar % > verwendet die Elemente die im Controller per @topbar_elements vorgegeben werden. Sonst kann man über
< % = render :partial=>'layouts/topbar', :object=>@foo % > einen beliebigen array @foo übergeben
-->
<% topbar = !topbar.nil? ? topbar : @topbar_elements %>
<ul class="breadcrumb">
<% topbar.each do |tb| %>

View File

@@ -1,14 +1,43 @@
<%= 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 %>
<%= f.input :stunden %>
<%= f.input :desc %>
<%= f.input :lvanr %>
<% end %>
<%= semantic_form_for @lva do |f| %>
<div class="row-fluid">
<%= f.inputs do %>
<div class="span9">
<div class="row-fluid">
<div class="span9">
<div class="form-group">
<div class="row-fluid">
<%= f.input :name, :wrapper_html=>{:class=>'span5'}%>
<div class="span7"%>
<div class="row-fluid">
<%= f.input :lvanr, :wrapper_html=>{:class=>'span4'}%>
<%= f.input :ects, :wrapper_html=>{:class=>'span4'} %>
<%= f.input :stunden, :wrapper_html=>{:class=>'span4'} %>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="row-fluid">
<%= f.input :desc %>
</div></div>
</div>
<div class="span3">
<h1> BILD </h1>
<%= f.input :modul, :as=>:check_boxes%>
</div>
</div>
</div>
<div class="span3">
<%= f.input :semester, :as=>:check_boxes%>
</div>
<% end %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<% end %>

View File

@@ -1,10 +1,9 @@
<p class="lva_semester">
<div class="lva-semester">
<b><%= link_to lva.name, lva_path(lva)%></b><br>
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 %>
<br>
<%="LVa-Nr " + lva.lvanr.to_s %>
<%= lva.ects %> ECTS / <%= lva.stunden %> Std <% " / " + lva.beispiele.count.to_s + " Beispiele"%> <br>
<%= link_to "Edit", edit_lva_path(lva) %> | <%= link_to "Beispiel hinzufügen", new_beispiel_path(:lva_id=>lva.id) %>
</p class="lva_semester">
<% #toolbar_html(@toolbar_elements) %>
</div class="lva-semester">

View File

@@ -1,8 +1,10 @@
<div class="container-fluid">
<%= render :partial=>'layouts/topbar', :object=>@tb %>
<h1><%= I18n.t("lva.list")%></h1>
<ul>
<div class="row-fluid">
<% @lvas.each do |l| %>
<li><%= render :partial => 'lvas/lva_semester', :locals=> {:lva => l} %>
<div><%= render :partial => 'lvas/lva_semester', :locals=> {:lva => l} %></div>
<%end%>
</ul>
</div>
<%= render 'layouts/pretty_toolbar' %>
</div>

View File

@@ -1,10 +1,17 @@
<%= render 'layouts/topbar'%>
<p id="notice"><%= notice %></p>
<p>
<div class="container-fluid">
<%= render 'studien/tabs'%>
<p id="notice"><%= notice %></p>
<h2><%= @lva.lvanr %><%= @lva.name %> <%= @lva.ects %> ECTS/ <%= @lva.stunden %> Std</h2>
<div class="row-fluid">
<div class="span8">
<h1><%= @lva.name %></h1>
</p>
<h2>Beschreibung</h2>
<div class="lva-beschreibung">
<%= @lva.desc %>
</div>
<div class="row-fluid">
<h2>Beispiele</h2>
<p><h4>Beschreibung</h4>
<%= @lva.desc %>
@@ -15,22 +22,35 @@
<ul>
<% @lva.beispiele.each do |b|%>
<li><%= render b%></li>
<%= render b%>
<% end %>
</ul>
<h4>Module</h4>
<ul>
</div>
</div>
<div class="span4">
<div class="lva-sidebar">
<ul>
<li><b>LVA-Nummer:</b> <%=@lva.lvanr %></li>
<li><b>ECTS:</b> <%=@lva.ects %></li>
<li><b>Stunden:</b> <%=@lva.ects %></li>
</ul>
<h2>Module</h2>
<ul>
<% @lva.modul.each do |modul| %>
<li><b><%= link_to modul.name , modul_path(modul)%></b>
<ul>
<% modul.modulgruppen.each do |g| %>
<li><%= link_to g.studium.name , studium_semesteransicht_path(g.studium)%> (<%=link_to g.name, modulgruppe_path(g)%>)</li>
<li><%= link_to g.studium.name , studium_path(g.studium)%> (<%=link_to g.name, modulgruppe_path(g)%>)</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
<%= render 'layouts/pretty_toolbar' %>
</ul>
</div>
</div>
</div>
<%= render 'layouts/pretty_toolbar' %>
</div>

View File

@@ -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 %>
<div class="span8">
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<div class="row-fluid">
<%= f.input :name, :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= 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"} %>
</div>
<div class="row-fluid">
<%= f.input :desc %>
</div>
</div>
<div class="span4">
<%= f.input :moduls, :as=>:check_boxes %>
</div>
<% end %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<% end %>
<% end %>

View File

@@ -0,0 +1 @@
<b><%=link_to modulgruppe.name, modulgruppe %></b> <%= ' ( ' + modulgruppe.studium.name + ')' unless modulgruppe.studium.nil? %>

View File

@@ -8,10 +8,5 @@
<% link_to '<i class="icon-pencil"></i>'.html_safe+I18n.t("common.edit"), edit_modulgruppe_path(modulgruppe) %>
<!-- dropdown menu links -->
</ul>
</span>
</div>

View File

@@ -19,7 +19,7 @@
<% @modulgruppe.moduls.each do |modul| %>
<%= render modul%>
<%= render 'moduls/kurz', :modul=>modul%>
<% end %>
</div>

View File

@@ -1,26 +1,23 @@
<div style="border: solid 1px; padding:2px"><p>
<b><%=
if modul.name.nil?
name=""
else
name=modul.name
end
link_to "Modul "+name , modul_path(modul) %> </b>
</p>
<h1><%=@modul.name %></h1>
<h2>Beschreibung </h2>
<p>
<%= raw(modul.desc) %>
<%= raw(@modul.desc) %>
</p>
LVAs:
<ul>
<% modul.lvas.each do |lv| %>
<li>
<%= link_to lv.name.to_s, lva_path(lv.id) %>
</li>
<% end %>
</ul>
<% # @toolbar_elements << {:icon=>:pencil,:text=>I18n.t("common.edit"),:path=> edit_modul_path(modul)} %>
<h2>Lvas</h2>
<% @modul.lvas.each_slice(3) do |row| %>
<div class="row-fluid">
<% row.each do |lv| %>
<div class="span4">
<%= render 'lvas/lva_semester', :lva=>lv%>
</div>
<% end %>
</div>
<% end %>
<h2>Modulgruppen</h2>
<% @modul.modulgruppen.each do |mg| %>
<%= render 'modulgruppen/kurz', :modulgruppe=>mg %><br>
<% end %>

View File

@@ -1,8 +1,11 @@
<div class="container-fluid">
<%= render 'layouts/topbar' %>
<h1><%= I18n.t("modul.list") %></h1>
<div class="fluid-row">
<%= render :partial=>'moduls/lang', :collection=>@moduls, :as=>:modul%>
<br>
</div>
<%= render 'layouts/pretty_toolbar'%>
</div>

View File

@@ -1,9 +1,6 @@
<%= render 'layouts/topbar'%>
<%= render 'layouts/topbar', :topbar=>@tb%>
<%= render 'studien/tabs'%>
<p id="notice"><%= notice %></p>
<%= render @modul %>
<%= render 'layouts/pretty_toolbar' %>
<% # link_to 'Add LVA', %>
<% # link_to '<i class="icon-pencil"></i>'.html_safe+ I18n.t("common.edit") , edit_modul_path(@modul) %>
<% # link_to "Loeschen", [@modul],:method=>:delete ,:data => {:confirm =>"Are you sure" } %>

View File

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

View File

@@ -1,6 +1,3 @@
<h1>Editing semester</h1>
<h1><%=@semester.name%></h1>
<%= render 'form' %>
<%= render 'form' %>
<%= link_to 'Show', @semester %> |
<%= link_to 'Back', semesters_path %>

View File

@@ -1,7 +1,7 @@
<div class="container-fluid">
<%= tinymce_assets %>
<%= semantic_form_for @studium do |f| %>
<div class="span9">
<%= f.inputs do %>
<div class="row-fluid">
@@ -18,11 +18,12 @@
<div class="row-fluid">
<%= f.input :desc, :as=>:tinymce_text %>
</div>
<% end %>
<%= tinymce %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<% end %>
</div>
<% end %>
</div>

View File

@@ -1,9 +1,6 @@
<div class="studium">
<h2><%= link_to studium.name + " " + studium.zahl.to_s, studium_semesteransicht_path(studium)%></h2>
<ul>
<li><b><%= studium.typ%> </b></li>
<li><b>Beschreibung:</b><br>
<%= !(studium.desc.to_s == "") ? studium.desc.html_safe : I18n.t("keine.beschreibung")%></li>
<li><%=link_to "Link zur Modulgruppenansicht",studium_path(studium) %> </li>
</ul>
<h2><%= link_to studium.name + " " + studium.zahl.to_s, studium_path(studium, :ansicht=>'semesteransicht')%></h2> <p><b><%= studium.typ%> </b></p>
<p><b>Beschreibung:</b><br>
<%= !(studium.desc.to_s == "") ? studium.desc.html_safe : I18n.t("keine.beschreibung")%></p>
</div>

View File

@@ -0,0 +1,24 @@
<ul class="nav nav-tabs">
<% if request.fullpath == studien_path%>
<li class="active">
<% else %>
<li>
<% end %>
<%= link_to "Alle Studien", studien_path %> </li>
<% for s in Studium.all %>
<% if !@studium.nil? && s == @studium %>
<li class="active">
<%= link_to s.name, s %>
</li>
<% else %>
<li> <%= link_to s.name, s %></li>
<% end %>
<% end %>
<% if request.fullpath == studien_verwalten_path %>
<li class="active">
<% else %>
<li>
<% end %>
<%= link_to "Verwaltung", studien_verwalten_path %>
</li>
</ul>

View File

@@ -1,14 +1,18 @@
<%= render 'layouts/topbar' %>
<h1><%= I18n.t("studien.list") %></h1>
<div class="container-fluid">
<%= render 'studien/tabs' %>
<div class="row-fluid">
<h1><%= I18n.t("studien.list") %></h1>
<% @studien.sort_by{|z| z[:zahl]}.each do |studium| %>
<ul>
<li><%= render studium%></li>
</ul>
<% end %>
<% @studien.sort_by{|z| z[:zahl]}.each do |studium| %>
<div class="span5">
<%= render studium%>
</div>
<% end %>
<br>
<%= render :partial=>'layouts/pretty_toolbar'%>
<% #toolbar_html(@toolbar_elements) %>
<br>
</div>
<%= render :partial=>'layouts/pretty_toolbar'%>
</div>

View File

@@ -1,17 +1,40 @@
<%= render :partial=>'layouts/topbar'%>
<h1><%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)</h1>
<%= raw(@studium.desc) %>
<% @studium.semester.each do |sem| %>
<div class="container-fluid">
<div class="row-fluid">
<h2><%= sem.name %></h2>
<div class="span<%= sem[:width]%> min-width:13em;">
<ul>
<% sem.lvas.sort_by{|n| n[:name]}.each do |l| %>
<li><%= render :partial=>'lvas/lva_semester', :locals =>{:lva => l}%>
<% end %>
</ul>
<%= render 'studien/tabs' %>
<div class="span6"> <h1><%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)</h1></div>
<div class="span3 pull-right"><div class="pull-right"> <%= link_to @text, studium_path(@studium, :ansicht=>@flip), :class=>"btn" %></div>
</div>
<% end %>
</div>
<%= raw(@studium.desc) %>
<%= render :partial=>'layouts/pretty_toolbar', :locals=>{:elements=>@toolbar_elements} %>
<% @studium.semester.each do |sem| %>
<div class="row-fluid">
<div class="span12">
<div class="studien-semester">
<div class="container-fluid">
<div class="row-fluid">
<div class="span8">
<h2><%= sem.name %></h2>
</div>
<div class="span4"><div class="pull-right"><%= link_to 'Lvas hinzufügen/entfernen', edit_semester_path(sem), :class=>"btn"%></div>
</div></div>
<% sem.lvas.each_slice(4) do |row| %>
<div class="row-fluid">
<% row.each do |l| %>
<div class="span3">
<%= render :partial=>'lvas/lva_semester', :locals =>{:lva => l}%>
</div>
<% end %>
</div>
<% end %>
</div>
</div>
</div>
</div>
<% end %>
<%= render :partial=>'layouts/pretty_toolbar', :locals=>{:elements=>@toolbar_elements} %>
</div>

View File

@@ -1,10 +1,14 @@
<%= render 'layouts/topbar'%>
<div class="container-fluid">
<div class="row-fluid">
<%= render 'studien/tabs' %>
<p id="notice"><%= notice %></p>
<h1><%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)</h1>
<div class="span6"> <h1><%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)</h1></div>
<div class="span3 pull-right"><div class="pull-right"><%= link_to @text, studium_path(@studium, :ansicht=>@flip), :class=>"btn" %></div>
</div>
<div>
</div>
<div class="row-fluid">
<%= raw(@studium.desc) %>
<% @studienphasen.each do |sp| %>
<% sp[:modulgruppen].each do |row| %>
@@ -17,7 +21,7 @@
</div>
<% end %>
<% end %>
<%= render :partial=>'layouts/pretty_toolbar', :object=>@toolbar_modulgruppen %>
</div>
<%= render :partial=>'layouts/pretty_toolbar', :object=>@toolbar_modulgruppen %><br>
<%= render 'layouts/pretty_toolbar' %>
</div>

View File

@@ -0,0 +1,171 @@
<div class="container-fluid">
<%= render 'studien/tabs'%>
<div class="row-fluid">
<div class="span9">
<h1><%= I18n.t("studien.verwaltung") %></h1> <%= 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 %>
<h2>Studien </h2>
<div class="verwalten-block">
|
<% @studien.each do |s| %>
<%= link_to s.name, s %> <%= (s.valid?) ? "Gültig" : "Problemfall" %> | <% end %>
<div class="btn-toolbar">
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
<%= params[:std_verw].nil? ? I18n.t("filter.studium") : Studium.find(params[:std_verw]).name %>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li> <%= link_to 'Alle Studien', studien_verwalten_path(:std_verw=>nil) %></li>
<% for s in @studien %>
<li> <%= link_to s.name, studien_verwalten_path(:std_verw=>s)%> </li>
<% end %>
</ul>
</div>
<%= link_to 'Neues Studium', new_studium_path, :class=>'btn'%>
</div>
</div>
<div class="row-fluid">
<div class="span4">
<h2>Modulgruppen </h2>
<div class="verwalten-block">
<% @modulgruppen.each do |mg| %>
<%= link_to mg.name, mg %> | <%= (mg.valid?) ? "Gültig" : "Problemfall" %><br>
<% end %>
<div class="btn-toolbar">
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
<%= params[:mg_verw].nil? ? I18n.t("filter.modulgruppe") : Modulgruppe.find(params[:mg_verw]).name %>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li> <%= link_to 'Alle Modulgruppen', studien_verwalten_path(:mg_verw=>nil) %></li>
<% for mg in @modulgruppen %>
<li> <%= link_to mg.name, studien_verwalten_path(:mg_verw=>mg)%> </li>
<% end %>
</ul>
</div>
<%= link_to "Neue Modulgruppe", new_studium_modulgruppe_path(Studium.first), :class=>"btn" unless Studium.first.nil?%>
</div>
</div>
</div>
<div class="span4">
<h2>Module </h2>
<div class="verwalten-block">
<% @module.each do |m| %>
<%= link_to m.name, m %>
| <%= (m.valid?) ? "Gültig" : "Problemfall" %><br>
<% end %>
<div class="btn-toolbar">
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
<%= params[:m_verw].nil? ? I18n.t("filter.modul") : Modul.find(params[:m_verw]).name %>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li> <%= link_to 'Alle Module', studien_verwalten_path(:m_verw=>nil) %></li>
<% for m in @module %>
<li> <%= link_to m.name, studien_verwalten_path(:m_verw=>m)%> </li>
<% end %>
</ul>
</div>
<%= link_to "Neues Modul", new_modul_path, :class=>"btn"%>
</div>
</div>
</div>
<div class="span4">
<h2>Lvas </h2>
<div class="verwalten-block">
<% @lvas.each do |lva| %>
<%= link_to lva.name, lva %> |
<%= (lva.valid?) ? "Gültig" : "Problemfall" %><br>
<% end %>
<div class="btn-toolbar">
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
<%= params[:lva_verw].nil? ? I18n.t("filter.lva") : Lva.find(params[:lva_verw]).name %>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li> <%= link_to 'Alle Lvas', studien_verwalten_path(:lva_verw=>nil) %></li>
<% for lva in @lvas %>
<li> <%= link_to lva.name, studien_verwalten_path(:lva_verw=>lva)%> </li>
<% end %>
</ul>
</div>
<%= link_to "Neue LVa", new_lva_path, :class=>'btn'%>
</div>
</div>
</div>
</div>
</div>
<div class="span3">
<h2>Error Log</h2>
<ul>
<li><b>Red</b>: Error, Solve immediately</li>
<li><b>Black</b>: Warning, should be solved</li>
<li><b>Green</b>: Everything is fine</li>
</ul>
<div class="verwalten-block">
<ul>
<% @messages.flatten.each do |m| %>
<% if !m.strip.empty? %>
<li><%= m.html_safe %></li>
<% end %>
<% end %>
</ul>
<b><font color="green"><%= I18n.t("verwalten.fehler.keine").html_safe if @messages.empty?%></font></b>
</div>
<h2>Beispiele </h2>
<div class="verwalten-block">
<% @beispiele.each do |b| %>
<%= link_to b.name, b %>
<% end %>
<div class="btn-toolbar">
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
<%= params[:b_verw].nil? ? I18n.t("filter.beispiel") : Beispiel.find(params[:b_verw]).name %>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li> <%= link_to 'Alle Beispiele', studien_verwalten_path(:b_verw=>nil) %></li>
<% for b in @beispiele %>
<li> <%= link_to b.name, studien_verwalten_path(:b_verw=>b)%> </li>
<% end %>
</ul>
</div>
<%= link_to "Neues Beispiel", new_beispiel_path, :class=>"btn"%>
</div>
</div>
</div>
</div>
</div>

View File

@@ -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:
@@ -102,6 +106,24 @@ de:
taken: "Der Name ist bereits vergeben"
typ:
inclusion: 'Wählen Sie "Bachelor" oder "Master" aus'
modul:
attributes:
modulgruppen:
blank: "Wählen Sie zumindest eine Modulgruppe aus"
filter:
explanation: "Per Dropdown-Menü kann nach einzelnen Objekten gefiltert werden. Die Filter können kombiniert werden, wobei nur erlaubte Kombinationen möglich sind. <b>Solange validation-Fehler (im Log rot und fett) auftreten, keine Filter verwenden</b>"
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:

View File

@@ -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'

View File

@@ -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"

View File

@@ -2,5 +2,9 @@
FactoryGirl.define do
factory :modul do
name ""
factory :other_modul do
name "Modul 1"
end
end
end

View File

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