This commit is contained in:
Sai
2014-04-11 11:54:49 +02:00
120 changed files with 1324 additions and 524 deletions

10
.gitignore vendored
View File

@@ -1,4 +1,9 @@
/db/.#initdebug.rb
/usergroup.ldif
/newuser.ldif
/passwd.ldif
/config/omniauth_secrets.yml
/config/database.yml
/config/initializers/omniauth_secrets.rb
# See http://help.github.com/ignore-files/ for more about ignoring files.
#
@@ -14,7 +19,7 @@
/db/schema.rb
/db/structure.sql
/config/initializers/devise.rb
Gemfile.lock
# Ignore all logfiles and tempfiles.
/log/*.log
/tmp
@@ -24,4 +29,5 @@
console
/server
/public/uploads/
/bak/*
*#

View File

@@ -33,7 +33,7 @@ gem 'jquery-rails'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# Deploy with Capistran
# gem 'capistrano'
# To use debugger
@@ -87,10 +87,10 @@ gem 'rmagick'
gem 'bootstrap-addons-rails'
gem "jquery-fileupload-rails"
gem "jquery-ui-rails","~> 4.1.1"
gem "font-awesome-rails"
# gem "jquery-sortable-rails"
gem "seed_dump", "~> 0.5.3"
#gem "themes_for_rails" ,:git =>'git://github.com/tkriplean/themes_for_rails.git'
#gem "themes_for_rails", :git=> 'git://github.com/lucasefe/themes_for_rails.git'
gem 'themes_for_rails'
gem 'remotipart', :git =>'git://github.com/JangoSteve/remotipart.git'

View File

@@ -1,9 +1,3 @@
GIT
remote: git://github.com/JangoSteve/remotipart.git
revision: aadc29e996c35096ee971bdc6cbf7ab148077a3a
specs:
remotipart (1.2.1)
GIT
remote: git://github.com/airblade/paper_trail.git
revision: 802b7d4ead71703860fcb9befc2c9b2ee05a8b9f
@@ -86,6 +80,8 @@ GEM
railties (>= 3.0.0)
faraday (0.8.8)
multipart-post (~> 1.2.0)
font-awesome-rails (4.0.3.1)
railties (>= 3.2, < 5.0)
formtastic (2.2.1)
actionpack (>= 3.0)
formtastic-bootstrap (2.1.3)
@@ -245,6 +241,7 @@ DEPENDENCIES
devise (~> 2.2.3)
execjs (~> 1.4.0)
factory_girl_rails
font-awesome-rails
formtastic (~> 2.2.1)
formtastic-bootstrap (~> 2.1.3)
git
@@ -261,6 +258,7 @@ DEPENDENCIES
paper_trail (>= 2.7.0)!
paperclip (~> 3.4.0)
rails (= 3.2.13)
remotipart!
rmagick
rolify
rspec-rails

View File

@@ -25,15 +25,25 @@
//= require bootstrap/load-image.min
//= require bootstrap/image-gallery.min
//= require jquery-fileupload
//= require jquery.remotipart
// require jquery.remotipart
function insertAttachment(url,name) {
var ext = url.split('.').pop().toLowerCase();
var img_ext = [ "jpg", "png", "bmp" , "jpeg" ];
// if ( img_ext.indexOf(ext) > -1) {
// tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<img src=\"" + url + "\" title=\"" + name + "\">");
// }
// else {
// tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<a href=\"" + url + "\">" + name +"</a>");
// }
if ( img_ext.indexOf(ext) > -1) {
tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<img src=\"" + url + "\" title=\"" + name + "\">");
tinymce.activeEditor.execCommand('mceInsertContent', false, "<img src=\"" + url + "\" title=\"" + name + "\">");
}
else {
tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<a href=\"" + url + "\">" + name +"</a>");
tinymce.activeEditor.execCommand('mceInsertContent', false, "<a href=\"" + url + "\">" + name +"</a>");
}
}

View File

@@ -42,6 +42,7 @@ $sansFontFamily: Helvetica, Arial;
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
h1 {
font-size: 23px

View File

@@ -58,7 +58,7 @@ $sansFontFamily: Helvetica, Arial;
@import 'bootstrap/image-gallery';
@import 'neuigkeiten';
@import 'font-awesome';
div.header {
display: block;

View File

@@ -56,7 +56,7 @@ $sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';

View File

@@ -56,7 +56,7 @@ $sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';

View File

@@ -41,7 +41,7 @@ $sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';
div.header {

View File

@@ -22,6 +22,6 @@ else
end
end
def default_url_options
{locale: I18n.locale, theme: theme_name}
{locale: I18n.locale, theme: theme_name, ansicht: nil}
end
end

View File

@@ -16,11 +16,7 @@ class BeispieleController < ApplicationController
def show
# @lva = params([:lva]) unless params([:lva]).nil?
@beispiel = Beispiel.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @beispiel }
end
redirect_to @beispiel.lva
end
# GET /beispiele/new

View File

@@ -28,7 +28,7 @@ class FetprofilesController < ApplicationController
@toolbar_elements << {:hicon=>'icon-pencil', :text=> I18n.t('common.edit'),:path => edit_fetprofile_path(@fetprofile) } if can? :edit, @fetprofile
@toolbar_elements << {:hicon=>'icon-minus', :text => I18n.t('common.delete'), :method=>:delete, :confirm=>"Sure"}
@toolbar_elements << {:hicon=>'icon-minus', :text => I18n.t('common.delete'), :method=>:delete, :confirm=>"Sure"} if can? :destroy,@fetprofile
respond_to do |format|

View File

@@ -6,7 +6,7 @@ class GremienController < ApplicationController
def verwalten
@gremien = Gremium.all
@gremientabs=Gremium.tabs
@toolbar_elements << {:text=>I18n.t('common.new'),:path=>new_gremium_path() ,:icon=>:plus} if can? :new, Gremium
@toolbar_elements << {:text=>I18n.t('gremium.new'),:path=>new_gremium_path() ,:icon=>:plus} if can? :new, Gremium
respond_to do |format|
format.html # index.html.erb
format.json { render json: @gremien }

View File

@@ -6,6 +6,8 @@ class HomeController < ApplicationController
end
def dev
end
def kontakt
end
def startdev
render 'setup_fetsite_dev'

View File

@@ -1,6 +1,6 @@
class LvasController < ApplicationController
# GET /lvas
before_filter {@toolbar_elements =[]}
before_filter :load_toolbar, :only => [:show]
load_and_authorize_resource
def index
@lvas = Lva.all
@@ -14,10 +14,7 @@ class LvasController < ApplicationController
def show
@lva = Lva.find_by_id(params[:id])
@beispiel=Beispiel.new
@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)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('common.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>'Sure?' }
@beispiel=Beispiel.new
end
# GET /lvas/new
@@ -33,52 +30,70 @@ class LvasController < ApplicationController
def edit
@lva = Lva.find(params[:id])
@semester = @lva.modul.map(&:modulgruppen).flatten.map(&:studium).map(&:semester).flatten.uniq
end
def compare_tiss
@lva = Lva.find_by_id(params[:id])
@lvatiss = Lva.new
@lvatiss.lvanr=@lva.lvanr
@lvatiss.load_tissdata("-2013W")
end
# POST /lvas
# POST /lvas.json
def load_tiss
@lva = Lva.find_by_id(params[:id])
@lva.load_tissdata("-2013W")
if @lva.save
redirect_to @lva , notice: 'Lva von TISS geladen.'
else
redirect_to @lva, action: :compare_tiss
end
end
def create
@lva = Lva.new(params[:lva])
respond_to do |format|
if @lva.save
@lva.add_semesters
@lva.add_semesters
format.html { redirect_to @lva, notice: 'Lva was successfully created.' }
else
format.html { render action: "new" }
end
end
end
# PUT /lvas/1
# PUT /lvas/1.json
def update
@lva = Lva.find(params[:id])
respond_to do |format|
if @lva.update_attributes(params[:lva])
@lva.add_semesters
format.html { redirect_to @lva, notice: 'Lva was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
# DELETE /lvas/1
# DELETE /lvas/1.json
def destroy
@lva = Lva.find(params[:id])
@lva.destroy
respond_to do |format|
format.html { redirect_to lvas_url }
end
end
private
def load_toolbar
@lva = Lva.find_by_id(params[:id])
@toolbar_elements =[]
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)} if can? :edit, @lva
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>"Tissvergleichladen", :path=> compare_tiss_lva_path(@lva)} if can? :compare_tiss, @lva
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('common.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>'Sure?' } if can? :delete, @lva
end
end

View File

@@ -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.' }
@@ -71,7 +67,6 @@ class ModulgruppenController < ApplicationController
def update
@modulgruppe = Modulgruppe.find(params[:id])
respond_to do |format|
if @modulgruppe.update_attributes(params[:modulgruppe])
format.html { redirect_to @modulgruppe, notice: 'Modulgruppe was successfully updated.' }
@@ -94,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

View File

@@ -1,21 +1,20 @@
# -*- coding: utf-8 -*-
class ModulsController < ApplicationController
# GET /moduls
# GET /moduls.json
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
if !params[:studium_id].nil?
@studium=Studium.find_by_id(params[:studium_id])
end
@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}]
@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
@@ -24,27 +23,8 @@ class ModulsController < ApplicationController
# 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=>"Lvas bearbeiten", :path=>modul_edit_lvas_path(@modul)}
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>modul_load_tiss_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=[]
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)}
@tb <<{:text=> i.long_name, :path=>modulgruppe_path(i)}
end
respond_to do |format|
format.html # show.html.erb
@@ -52,6 +32,7 @@ class ModulsController < ApplicationController
end
end
# GET /moduls/new
# GET /moduls/new.json
def new
@@ -62,70 +43,15 @@ class ModulsController < ApplicationController
end
respond_to do |format|
format.html # new.html.erb
format.json { render json: @modul }
end
end
def edit_lvas
@modul = Modul.find(params[:modul_id])
@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 update_lvas
params[:modul_id]=params[:id] if params[:modul_id].empty?
@modul = Modul.find(params[:modul_id])
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
@newlvas=[]
@lvas=[]
params["lvas"].each do |i,l|
#lva= Lva.find(l[:id].to_i)
lva=Lva.where(:lvanr=>l["lvanr"]).first if lva.nil?
lva=Lva.new(l) if lva.nil?
lva.modul<<@modul
lva.modul.uniq!
lva.name=l["name"]
lva.lvanr=l["lvanr"]
lva.ects=l["ects"]
lva.desc=l["desc"]
lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i))
lva.stunden=l["stunden"]
lva.pruefungsinformation=l["pruefungsinformation"]
lva.lernaufwand=l["lernaufwand"]
lva.typ=l["typ"]
lva.save
@newlvas<<lva
end
@lvas=@newlvas
if @newlvas.map(&:valid?).all?
redirect_to modul_path(@modul)
else
render "edit_lvas"
end
# end
end
def load_tiss
@modul = Modul.find(params[:modul_id])
@lvas = @modul.lvas
end
def show_tiss
@lvas=[];
@modul = Modul.find(params[:modul_id])
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
params["lvas"].to_a.each do |l|
unless l.last["lvanr"].empty?
l=l.last
lva=Lva.new
lva.lvanr=l["lvanr"]
lva.load_tissdata("-"+ l["sem"])
lva.modul<<@modul
@lvas<<lva
end
end
render 'edit_lvas'
end
# GET /moduls/1/edit
def edit
@modul = Modul.find(params[:id])
if !params[:studium_id].nil?
@@ -133,31 +59,26 @@ class ModulsController < ApplicationController
end
end
# POST /moduls
# POST /moduls.json
def create
@modul = Modul.new(params[:modul])
def edit_bulk
unless params[:modulgruppen_id].nil?
@moduls=Modulgruppe.find(params[:modulgruppen_id]).moduls
else
unless params[:studium_id].nil?
@moduls=Studium.find(params[:studium_id]).modulgruppen.collect(&:moduls).flatten
else
respond_to do |format|
if @modul.save
for i in @modul.lvas
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
@moduls=Modul.all
end
end
end
# PUT /moduls/1
# PUT /moduls/1.json
def edit_lvas
@lvas = @modul.lvas
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
end
def update
@modul = Modul.find(params[:id])
respond_to do |format|
if @modul.update_attributes(params[:modul])
@@ -165,27 +86,113 @@ class ModulsController < ApplicationController
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
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)
@lvas=@newlvas
if @newlvas.map(&:valid?).all?
redirect_to modul_path(@modul)
else
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?
l=l.last
lva=Lva.new
lva.lvanr=l["lvanr"]
lva.load_tissdata("-"+ l["sem"])
lva.modul<<@modul
@lvas<<lva #
end
end
render 'edit_lvas'
end
# GET /moduls/1/edit
# POST /moduls
# POST /moduls.json
def create
@modul = Modul.new(params[:modul])
respond_to do |format|
if @modul.save
for i in @modul.lvas
i.add_semesters
end
format.html { redirect_to modulgruppe_path(@modul.modulgruppen.first), notice: 'Modul was successfully created.' }
else
format.html { render action: "new" }
end
end
end
# PUT /moduls/1
# PUT /moduls/1.json
# DELETE /moduls/1
# DELETE /moduls/1.json
def destroy
@modul = Modul.find(params[:id])
modulgruppe=@modul.modulgruppen.first
for i in @modul.lvas
i.add_semesters
end
@modul.destroy
redirect_to modulgruppe_path(modulgruppe)
end
private
def find_modul
@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=[]
end
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}]
@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}
end
end
end

View File

@@ -1,28 +1,20 @@
class NeuigkeitenController < ApplicationController
before_filter {@toolbar_elements=[]}
before_filter :load_toolbar_elements, :only=>[:show,:find_link]
before_filter :load_toolbar_elements_edit, :only=>[:edit]
load_and_authorize_resource
def show
@neuigkeit = Neuigkeit.find(params[:id])
@neuigkeit = Neuigkeit.find(params[:id])
@rubrik=@neuigkeit.rubrik
if !params[:version].nil?
@neuigkeit.assign_attributes(@neuigkeit.translation.versions.reverse[params[:version].to_i].reify.attributes.select{|k,v| @neuigkeit.translated_attribute_names.include? k.to_sym })
# @neuigkeit=Neuigkeit.find(params[:id])
end
@calentries1=@neuigkeit.calentries
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>"Sure?" } if can? :publish, @neuigkeit
@toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>"Sure?" } if can?(:unpublish, @neuigkeit) && !@neuigkeit.published?
@toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
@versions= @neuigkeit.translation.versions.select([:created_at]).reverse
@toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit
# @toolbar_elements << {:path=> add_calentry_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :text=>"Add Calentry", :icon=>:plus}
end
def new
@@ -45,7 +37,7 @@ class NeuigkeitenController < ApplicationController
@neuigkeit.calentry=ce
@neuigkeit.save
render 'edit'
render 'edit'
end
def unpublish
@@ -69,11 +61,29 @@ class NeuigkeitenController < ApplicationController
def edit
@neuigkeit = Neuigkeit.find(params[:id])
@toolbar_elements << {:text=>I18n.t('common.show'),:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)} if can? :show, @neuigkeit
@calentries= @neuigkeit.calentries
@calentries<< Calentry.new
end
def find_link
@rubrik=@neuigkeit.rubrik
@calentries1=@neuigkeit.calentries
@nlink_search = Neuigkeit::LINKTYPES.clone
@nlink_search.collect!{|t| t.constantize}
@nlink_search.collect!{|t| t.search(params[:query]).limit(2)}
@nlink_search.flatten!
render action:"show"
end
def create_link
Nlink.create(:link=>params[:link_type].constantize.find(params[:link_id]),:neuigkeit=>Neuigkeit.find(params[:id]))
redirect_to action:"show"
end
def create
@neuigkeit = Neuigkeit.new(params[:neuigkeit])
@@ -111,4 +121,29 @@ class NeuigkeitenController < ApplicationController
end
end
private
def load_toolbar_elements
@neuigkeit=Neuigkeit.find(params[:id])
@toolbar_elements=[]
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:publish, @neuigkeit) && @neuigkeit.published?
@toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:unpublish, @neuigkeit) && !@neuigkeit.published?
@toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
@versions= @neuigkeit.translation.versions.select([:created_at]).reverse
@toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit
end
def load_toolbar_elements_edit
@neuigkeit = Neuigkeit.find(params[:id])
@toolbar_elements=[]
@toolbar_elements << {:text=>I18n.t('common.show'),:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)} if can? :show, @neuigkeit
end
end

View File

@@ -11,13 +11,12 @@ class RubrikenController < ApplicationController
@rubrik = Rubrik.find(params[:id])
@moderatoren=User.with_role(:newsmoderator,@rubrik)
if can?(:showunpublished, Neuigkeit)
@neuigkeiten = @rubrik.neuigkeiten
else
@neuigkeiten = @rubrik.neuigkeiten.published
end
@toolbar_elements << {:text=>I18n.t('neuigkeit.new.title'),:path=> new_rubrik_neuigkeit_path(@rubrik),:hicon=>'icon-plus-sign'} if can? :verwalten, @rubrik
@toolbar_elements << {:text=>I18n.t('common.verwalten'),:path=>verwalten_rubrik_path(@rubrik),:icon=>:pencil} if can? :verwalten, @rubrik
@neuigkeiten = @rubrik.neuigkeiten
else
@neuigkeiten = @rubrik.neuigkeiten.published
end
@toolbar_elements << {:text=>I18n.t('neuigkeit.new.title'), :path=> new_rubrik_neuigkeit_path(@rubrik),:hicon=>'icon-plus-sign'} if can? :verwalten, @rubrik
@toolbar_elements << {:text=>I18n.t('common.verwalten'), :path=>verwalten_rubrik_path(@rubrik),:icon=>:pencil} if can? :verwalten, @rubrik

View File

@@ -34,18 +34,16 @@ class StudienController < ApplicationController
@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?" }]
{: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}]
if params[:ansicht] != 'modulgruppenansicht'
@text = 'Zu Modulansicht wechseln'
@flip = 'modulgruppenansicht'
render 'semesteransicht'
case params[:ansicht]
when 'semesteransicht'
when 'infoansicht'
when 'qualifikationsprofil'
else
@text = 'Zu Semesteransicht wechseln'
@flip = 'semesteransicht'
params[:ansicht]="modulgruppenansicht"
end
end
@@ -242,14 +240,14 @@ class StudienController < ApplicationController
end
def default_url_options
{:ansicht=> params[:ansicht],
super.merge({: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],
:lec_verw=>params[:lec_verw]}.merge(super)
:lec_verw=>params[:lec_verw]})
end
end

View File

@@ -16,16 +16,27 @@ class ThemenController < ApplicationController
# GET /themen/1.json
def show
@thema = Thema.find(params[:id])
redirect_to :controller=>'themengruppen', :id=>@thema.themengruppe.id, :action=>:show, :anchor=> "thema_"+params[:id].to_s
@fragen=@thema.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>"Verwalten", :path=>verwalten_thema_path(@thema)}]
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
respond_to do |format|
format.html # show.html.erb
format.json { render json: @thema }
end
# respond_to do |format|
# format.html # show.html.erb
# format.json { render json: @thema }
# end
end
def verwalten
@thema = Thema.find(params[:id])
@fragen=@thema.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>"Verwalten", :path=>verwalten_thema_path(@thema)}]
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
end
# GET /themen/new
# GET /themen/new.json
def new
@@ -52,18 +63,21 @@ class ThemenController < ApplicationController
def create
@thema = Thema.new(params[:thema])
@themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format|
if @thema.save
format.html { redirect_to @thema, notice: 'Thema was successfully created.' }
format.json { render json: @thema, status: :created, location: @thema }
format.js {render action: "update"}
else
format.html { render action: "new" }
format.json { render json: @thema.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
def fragen
@thema = Thema.find(params[:thema_id])
@thema = Thema.find(params[:id])
@fragen=@thema.fragen
respond_to do |format|
format.js
@@ -73,7 +87,7 @@ class ThemenController < ApplicationController
# PUT /themen/1.json
def update
@thema = Thema.find(params[:id])
@themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format|
if @thema.update_attributes(params[:thema])
format.html { redirect_to @thema, notice: 'Thema was successfully updated.' }

View File

@@ -12,19 +12,22 @@ class ThemengruppenController < ApplicationController
format.json { render json: @themengruppen }
end
end
def faqs
@themengruppen = Themengruppe.order("themengruppen.priority").includes(:themen,{themen: :fragen}).order("themen.priority").reverse
end
# GET /themengruppen/1
# GET /themengruppen/1.json
def show
@themengruppe = Themengruppe.find(params[:id])
@themen = @themengruppe.themen.order(:priority).reverse
@themen = @themengruppe.themen.order(:priority).reverse
@toolbar_elements = []
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('thema.add'), :path=>new_themengruppe_thema_path(@themengruppe)} if can? :new, Themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('themengruppe.edit'), :path=>edit_themengruppe_path(@themengruppe)} if can? :edit, @themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.verwalten"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe
@toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.manage"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe
@toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe
respond_to do |format|
format.html # show.html.erb

View File

@@ -1,9 +1,11 @@
module ApplicationHelper
def current_url(overwrite={})
url_for :params => params.merge(overwrite).except(:controller,:action)
end
def current_url1(overwrite={})
url_for :params => params.merge(overwrite).except(:controller,:action,:ansicht)
end
def switch_locale_url(target_locale)
current_url({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/"
current_url1({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/"
end
def toolbar_html(elemente)

View File

@@ -36,7 +36,9 @@ class Ability
can [:show, :index], Modul
can [:show, :index], Lva
can [:show,:index], Gallery
can [:show, :index], Themengruppe
can [:show, :index,:faqs], Themengruppe
can [:show], Thema
can [:create], Beispiel
can [:show, :index], Fetprofile
can [:show, :index],Gremium
# Rechteverwaltung fuer Studien Modul
@@ -49,16 +51,16 @@ class Ability
can [:show], Calentry
if( user.has_role?("fetuser") || user.has_role?("fetadmin"))
can :manage,:all
can :manage, Modulgruppe
can :manage, Modulgruppe
can [:show,:index], Calendar
can [:edit, :update,:new,:create,:verwalten], Calendar
can [:edit, :update,:new,:create,:verwalten], Calentry
can [:show,:index], Calendar
can [:edit, :update,:new,:create,:verwalten], Calendar
can [:edit, :update,:new,:create,:verwalten], Calentry
end
if( user.has_role?("fetadmin"))
can [:delete],Calendar
can [:delete],Calentry
end
if( user.has_role?("fetadmin"))
can [:delete],Calendar
can [:delete],Calentry
end
# Rechteverwaltung fuer Neuigkeiten

View File

@@ -21,6 +21,7 @@ class Calentry < ActiveRecord::Base
validates :typ, :presence => true
before_save :get_public
belongs_to :object, polymorphic: true # Objekt zu dem der Calentry gehört (derzeit ein Newsartikel)
scope :upcoming, ->{ where("start >= ?", Time.now).order(:start)}
scope :recent,-> { where("start <= ?", Time.now).order(:start).reverse_order}
validate do |entry|
@@ -31,8 +32,8 @@ class Calentry < ActiveRecord::Base
resourcify
def get_public
self.public = (self.try(:object).nil?)? (self.calendar.try(:public)) : object.try(:public)
true
self.public = (self.try(:object).nil?)? (self.calendar.try(:public)) : object.try(:public)
true
end
def start_time
start

View File

@@ -27,7 +27,11 @@ validates :desc, :presence=>true
scope :search, ->(query) {where("nachname like ? or vorname like ? or short like ?", "%#{query}%", "%#{query}%", "%#{query}%")}
accepts_nested_attributes_for :memberships, :reject_if=>lambda{|a| a[:typ].blank?|| a[:start].blank? ||a[:gremium_id].blank?}, :allow_destroy=>true
has_many :nlinks, as: :link
def title
self.name
end
def name
[vorname, nachname, ((short.empty?)? "": ["(",short,")"].join)].join(" ")
end

View File

@@ -14,4 +14,11 @@ class Gallery < ActiveRecord::Base
WORD_COUNT = 20
attr_accessible :datum, :desc, :name
has_many :fotos
has_many :nlinks, as: :link
scope :search, ->(query) {where("name like ? or galleries.desc like ?", "%#{query}%", "%#{query}%")}
def title
name
end
end

View File

@@ -12,21 +12,28 @@
#
class Gremium < ActiveRecord::Base
TYPEN={1=>"offiziell", 2=>"offiziell-temporär", 3 => "inoffiziell",4=>"inoffiziell-tempo", 11=> "berufungskommission"} # Kategorien, im Wesentlichen wichtig für Listung oder nicht Listung
TYPEN={1=>"offiziell", 2=>"offiziell-temporär", 3 => "inoffiziell",4=>"inoffiziell-tempo", 11=> "berufungskommission",11=> "habilitationskommission" } # Kategorien, im Wesentlichen wichtig für Listung oder nicht Listung
GESCHLECHT={0=>"saechlich", 1 => "maennlich", 2 => "weiblich"} # Geschlecht des Gremiums zur richtige Deklination
ART2FALL={0=>"des", 1=>"des",2=>"der"} # Artikel 2.Fall abhängig vom Geschlecht
ART2FALL={0=>"des", 1=>"des",2=>"der"} # Artikel 2.Fall abhängig vom Geschlecht
ART4FALL={0=>"das", 1=>"den",2=>"die"} # Artikel 2.Fall abhängig vom Geschlecht
FILTER={11=>I18n.t("gremium.filter.berufung.title")}
TEXT={11=>I18n.t("gremium.filter.berufung.text")}
TEXT={11=>I18n.t("gremium.filter.berufung.text"),12=>"Habils"}
attr_accessible :desc, :name, :typ, :geschlecht,:thema_id, :memberships_attributes
has_many :memberships # Mitgliedschaften bei dem Gremium
belongs_to :thema # Gehört zu einem Thema
scope :tabs, -> { where(:typ => [1,3]).order(:typ).order(:name) } # Gremien die in Tabs angezeigt werden (Alle Anderen nur in der Liste
# Gremium im 2. Fall für die Konstruktion "Mitglied des ... / der ... "
scope :search, ->(query) {where("name like ? or desc like ?", "%#{query}%", "%#{query}%")}
# Gremium im 2. Fall für die Konstruktion "Mitglied des ... / der ... "
accepts_nested_attributes_for :memberships, :reject_if=>lambda{|a| a[:typ].blank?|| a[:start].blank? ||a[:fetprofile_id].blank?}
def fall2
Gremium::ART2FALL[self.geschlecht.to_i].to_s+" "+ self.name.to_s+ ((self.geschlecht.to_i==1||self.geschlecht.to_i==0)? "s":"")
end
def fall4
Gremium::ART4FALL[self.geschlecht.to_i].to_s+" "+ self.name.to_s+ ((self.geschlecht.to_i==1||self.geschlecht.to_i==0)? "":"")
end
end

View File

@@ -16,4 +16,16 @@ class Lecturer < ActiveRecord::Base
has_and_belongs_to_many :lvas
mount_uploader :picture, PictureUploader
resourcify
def load_tissdata
url= "https://tiss.tuwien.ac.at/adressbuch/adressbuch/person_via_oid/"+self.oid.to_s+".xml"
hash=Hash.from_xml(open(url).read)["tuvienna"]
self.name=hash["person"]["firstname"]+" "+hash["person"]["lastname"]
if hash["person"]["employee"]["employment"].is_a? Array
self.email= hash["person"]["employee"]["employment"].first["emails"]["email"].first
else
self.email= hash["person"]["employee"]["employment"]["emails"]["email"].first
end
self.link= "https://tiss.tuwien.ac.at/adressbuch/adressbuch/person_via_oid/"+self.oid.to_s
end
end

View File

@@ -36,14 +36,15 @@
class Lva < ActiveRecord::Base
ERLAUBTE_TYPEN = ['VO', 'UE', 'VU', 'LU', 'SE', 'andere'];
has_paper_trail # Versionsverfolgung
has_paper_trail :ignore=>[:desc, :pruefungsinformation]# Versionsverfolgung
attr_accessible :desc, :ects, :lvanr, :name, :stunden, :modul_ids, :semester_ids, :pruefungsinformation, :lernaufwand, :typ, :lecturer_ids
has_and_belongs_to_many :modul,:uniq=>true # Gehört zu einem Modul
has_and_belongs_to_many :semester
#Gehört zu einem Semester( derzeit nicht implementiert)
has_many :beispiele , :class_name => "Beispiel"
has_and_belongs_to_many :lecturers
translates :desc, :fallbacks_for_empty_translations => true
translates :desc,:pruefungsinformation, :fallbacks_for_empty_translations => true, :versioning=>true
scope :search, ->(query) {where("name like ? or lvas.desc like ?", "%#{query}%", "%#{query}%")}
validates :lvanr,:format=>{ :with => /^[0-9][0-9][0-9]\.[0-9A][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?
@@ -52,6 +53,11 @@ class Lva < ActiveRecord::Base
validates_presence_of :stunden # Stunden Eingetragen?
validates_presence_of :modul # Zugehöriges Modul eingetragen?
# (zumindest eines)
has_many :nlinks, as: :link
def title
self.name
end
def full_name
return self.typ + ' ' + self.name
end
@@ -69,13 +75,37 @@ class Lva < ActiveRecord::Base
end
##
# Lade Daten aus TISS und füge diese in die Datenbank ein.
def tisshash(semester)
url= "https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+semester
hash=Hash.from_xml(open(url).read)["tuvienna"]
end
def load_tissdata(semester)
url= "https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+semester
# begin
urlp="https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+"-"
begin
url= urlp+Time.now.year.to_s+"W"
hash=Hash.from_xml(open(url).read)["tuvienna"]
rescue OpenURI::HTTPError => e
begin
url= urlp+Time.now.year.to_s+"S"
hash=Hash.from_xml(open(url).read)["tuvienna"]
rescue OpenURI::HTTPError => e
begin
url= urlp+(Time.now.year-1).to_s+"W"
hash=Hash.from_xml(open(url).read)["tuvienna"]
rescue OpenURI::HTTPError => e
end
end
end
# begin
# person=[]
# if hash["course"]["lecturers"]["oid"].is_a? String
# person = @hash["course"]["lecturers"]["oid"]
@@ -84,15 +114,108 @@ class Lva < ActiveRecord::Base
# 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
self.name=hash["course"]["title"][I18n.locale.to_s]
self.pruefungsinformation= hash["course"]["examinationModalities"][I18n.locale.to_s]
self.desc= hash["course"]["objective"][I18n.locale.to_s]+hash["course"]["teachingContent"][I18n.locale.to_s]
self.name=hash["course"]["title"]["de"]
self.pruefungsinformation = hash["course"]["examinationModalities"][I18n.locale.to_s].to_s
self.desc= hash["course"]["objective"][I18n.locale.to_s]+"<p></p>"+hash["course"]["teachingContent"][I18n.locale.to_s]
self.typ=hash["course"]["courseType"]
self.stunden=hash["course"]["weeklyHours"]
#hash["course"]["url"]
if hash["course"]["lecturers"]["oid"].is_a? Array
hash["course"]["lecturers"]["oid"].each do |oid|
lecturer= self.lecturers.where(:oid=>oid).first
if lecturer.nil?
lecturer=Lecturer.where(:oid=>oid).first
if lecturer.nil?
logger.debug "Neuen Lecturer laden"
lecturer=Lecturer.new
lecturer.oid=oid
lecturer.load_tissdata
if lecturer.save
self.lecturers << lecturer
else
logger.fatal "Invaliden Lecturer erzeugt"
end
else
logger.debug "Lecturer hinzufügen"
self.lecturers << lecturer
end
end
end
else
oid= hash["course"]["lecturers"]["oid"]
lecturer= self.lecturers.where(:oid=>oid).first
if lecturer.nil?
lecturer=Lecturer.where(:oid=>oid).first
if lecturer.nil?
logger.info "Neuen Lecturer laden"
lecturer=Lecturer.new
lecturer.oid=oid
lecturer.load_tissdata
if lecturer.save
self.lecturers << lecturer
else
logger.fatal "Invaliden Lecturer erzeugt"
end
else
logger.info "Lecturer hinzufügen"
lecturer.load_tissdata
lecturer.save
self.lecturers << lecturer
end
end
end
end
def update_multiple(hash)
newlvas=[]
params["lvas"].each do |i,l|
lva=Lva.where(:lvanr=>l["lvanr"]).first if lva.nil?
lva=Lva.new(l) if lva.nil?
lva.name=l["name"]
lva.lvanr=l["lvanr"]
lva.ects=l["ects"]
descr = l["desc"]
lva.desc= (descr.empty?) ? "<div></div>" : descr
lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i))
lva.stunden=l["stunden"]
pr =l["pruefungsinformation"]
lva.pruefungsinformation= (pr.empty?) ? "<div></div>" : pr
lva.lernaufwand=l["lernaufwand"]
lva.typ=l["typ"]
lva.save
newlvas<<lva #
end
newlvas
end
def self.update_multiple_with_modul(hash,modul)
newlvas=[]
hash.each do |i,l|
lva=Lva.where(:lvanr=>l["lvanr"]).first if lva.nil?
lva=Lva.new(l) if lva.nil?
lva.modul<<modul
lva.modul.uniq!
lva.name=l["name"]
lva.lvanr=l["lvanr"]
lva.ects=l["ects"]
descr = l["desc"]
lva.desc= (descr.empty?) ? "<div></div>" : descr
lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i))
lva.stunden=l["stunden"]
pr =l["pruefungsinformation"]
lva.pruefungsinformation= (pr.empty?) ? "<div></div>" : pr
lva.lernaufwand=l["lernaufwand"]
lva.typ=l["typ"]
lva.save
newlvas<<lva #
end
newlvas
end
end

View File

@@ -12,14 +12,45 @@
#
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= []
if hash.is_a? Hash
hash.each do |i,h|
if i.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.desc=h["desc"]
md.depend=h["depend"]
md.modulgruppen=Modulgruppe.where(:id => h["modulgruppe_ids"].map(&:to_i))
m << md
end
end
else
hash.each do |h|
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
end
end
m
end
end

View File

@@ -16,13 +16,20 @@ class Modulgruppe < ActiveRecord::Base
attr_accessible :name, :phase, :typ,:desc, :studium_id, :modul_ids
belongs_to :studium, :foreign_key => "studium_id"
has_and_belongs_to_many :moduls
has_many :lvas, :through=>:moduls
resourcify
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_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 :desc, :versioning =>true,:fallbacks_for_empty_translations => true
def long_name
name + "(" + self.studium_name + ")"
end
def studium_name
self.studium.nil? ? "Kein Studium vorhanden" : self.studium.name
end
end

View File

@@ -24,12 +24,15 @@ class Neuigkeit < ActiveRecord::Base
has_many :calentries, as: :object
mount_uploader :picture, PictureUploader
scope :published, -> {where("datum <= ? AND datum IS NOT NULL", Time.now.to_date).order(:datum).reverse_order}
scope :recent, -> { published.order(:datum).reverse_order.limit(15)}
scope :recent, -> { published.limit(15)}
scope :unpublished, -> {where("datum >= ? OR datum IS NULL", Date.today)}
scope :public, ->{includes(:rubrik).where("rubriken.public"=>:true)}
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
LINKTYPES=["Thema", "Gallery", "Lva","Studium","Fetprofile"]
accepts_nested_attributes_for :calentries, :allow_destroy=>true , :reject_if=> lambda{|a| a[:start].blank?}
before_validation :sanitize
has_many :nlinks
def datum_nilsave
self.datum.nil? ? Time.now + 42.years : self.datum
end
@@ -50,7 +53,7 @@ class Neuigkeit < ActiveRecord::Base
self.title
end
def text_first_words
md = /<p>(?<text>[\w\s,\.!\?]*)/.match self.text
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
words=md[:text].split(" ") unless md.nil?
if words.nil? || words.empty?
"...."

10
app/models/nlink.rb Normal file
View File

@@ -0,0 +1,10 @@
class Nlink < ActiveRecord::Base
attr_accessible :link_id, :link_type, :neuigkeit_id, :neuigkeit,:link, :sort, :title
belongs_to :neuigkeit
belongs_to :link, :polymorphic=>true
validates :neuigkeit, :presence=>true
validates :link, :presence=>true
validates :link_id, :uniqueness=>{:scope=>[:neuigkeit_id]}
end

View File

@@ -22,7 +22,7 @@ class Semester < ActiveRecord::Base
if self.nummer == 0
return I18n.t("ohnezuordnung") + " (" + self.studium.name + ")"
else
return self.nummer.to_s + ". " + self.studium.name
return self.nummer.to_s + "."+I18n.t("semester.semester")+", " + self.studium.name
end
end
def name_kurz

View File

@@ -27,19 +27,26 @@
# created_at :datetime not null
# updated_at :datetime not null
class Studium < ActiveRecord::Base
attr_accessible :desc, :name,:abkuerzung, :typ, :zahl, :semester, :picture, :picture_cache
attr_accessible :desc, :name,:abkuerzung, :typ, :zahl, :semester, :picture, :picture_cache, :qualifikation,:struktur, :jobmoeglichkeiten
has_many :modulgruppen, inverse_of: :studium, :class_name => "Modulgruppe", :dependent => :destroy
scope :search, ->(query) {where("name like ? or studien.desc like ?", "%#{query}%", "%#{query}%")}
has_many :moduls, :through=>:modulgruppen
has_many :lvas, :through=>:moduls
has_many :semester, :dependent => :destroy
validates :abkuerzung, :length=>{:maximum=>5}, :format=>{:with=>/^[a-zA-z]{0,5}$/}
validates :typ, :inclusion => {:in => ["Bachelor","Master"] }
validates :name, :uniqueness => true, :presence=>true
validates :zahl, :presence=>true, :format=>{:with=>/^[0-9A-Z]{4,10}$/}, :uniqueness => true
mount_uploader :picture, PictureUploader
translates :desc,:shortdesc, :versioning =>true,:fallbacks_for_empty_translations => true
translates :desc,:shortdesc, :qualifikation,:struktur, :jobmoeglichkeiten, :versioning =>true,:fallbacks_for_empty_translations => true
def title_context
return self.abkuerzung.to_s.strip.empty? ? self.name : self.abkuerzung
end
has_many :nlinks, as: :link
def title
self.name
end
def batch_add_semester
# Semester automatisch zu Studien hinzufügen
if self.typ == "Bachelor"
@@ -65,7 +72,11 @@ class Studium < ActiveRecord::Base
def desc_first_words
md = /<p>(?<text>[\w\s,\.!\?]*)/.match self.desc
md[:text].split(" ")[0..100].join(" ")+ " ..." unless md.nil?
unless md.nil?
md[:text].split(" ")[0..100].join(" ")+ " ..."
else
""
end
end
end

View File

@@ -16,9 +16,22 @@ class Thema < ActiveRecord::Base
has_many :attachments
belongs_to :themengruppe, :foreign_key => "themengruppe_id"
has_one :gremium
has_many :nlinks, as: :link
validates :themengruppe, :presence => true
validates :title, :presence => true
validates :text, :presence => true
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
def text_first_words
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
words=md[:text].split(" ") unless md.nil?
if words.nil? || words.empty?
"...."
else
words[0..100].join(" ")+ " ..." unless words.nil?
end
end
end

View File

@@ -10,12 +10,14 @@
class Themengruppe < ActiveRecord::Base
WORD_COUNT = 50
attr_accessible :text, :title, :picture,:priority
attr_accessible :text, :title, :picture, :priority
has_many :themen, class_name: 'Thema'
has_many :fragen, through: :themen
mount_uploader :picture, PictureUploader
validates :title, :presence => true
validates :text, :presence => true
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
end

View File

@@ -1,18 +0,0 @@
<p id="notice"><%= notice %></p>
<p>
<b>Name:</b>
<%= @beispiel.name %>
</p>
<p>
<b>Desc:</b>
<%= @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,5 +1,7 @@
<div class="contentbox">
<%= image_tag("/iconnavy/time.png") %>
<% image_tag("/iconnavy/time.png") %>
<%= fa_icon("calendar 2x") %>
<% if calentry.start.to_date == calentry.ende.to_date
format=:timeonly
else

View File

@@ -1,6 +1,7 @@
<div class="row-fluid">
<div class="span1"></div><div class="span1">
<%= image_tag("/icon_kalender_small.png") %>
<%= fa_icon("calendar 2x") %>
</div>
<div class="span4">
<%= f.input :start, :as => :datepicker %></div><div class="span4">

View File

@@ -0,0 +1 @@
<h2><%= nlink.title %></h2>

View File

@@ -41,7 +41,7 @@
<div class="row-fluid">
<div class="span12">
<%= link_to I18n.t('fetprofiles.new'), new_fetprofile_path %>
<%= link_to I18n.t('profile.new_profile'), new_fetprofile_path %>
</div>
</div></div>
</div>

View File

@@ -0,0 +1,21 @@
<div class="media gallery-block">
<div class="pull-left" href="#">
<%= if(nlink.fotos.empty?)
image_tag "no_image_128.png", {:class => "img-rounded"}
else
image_tag nlink.fotos.sample.datei.big_thumb.url, {:class => "img-rounded"}
end %>
</div>
<div class="media-body">
<small class="pull-left"><%= nlink.fotos.size.to_s + " " + I18n.t('fotos.bilder')%> </small>
<small class="pull-right"><%=I18n.l(nlink.try(:datum).try(:to_date)) unless nlink.try(:datum).try(:to_date).nil? %></small></br>
<h1><%= nlink.name %></h1>
<p>
<%= if nlink.desc.split.size > Gallery::WORD_COUNT
nlink.desc.split[0..Gallery::WORD_COUNT].join(" ") + " ..."
else
nlink.desc
end%>
</p>
</div>
</div>

View File

@@ -25,6 +25,27 @@
</p>
</div>
</div>
<div class="media gallery-block">
<div class="pull-left" href="#">
<%= if(gallery.fotos.empty?)
image_tag "no_image_128.png", {:class => "img-rounded"}
else
image_tag gallery.fotos.sample.datei.big_thumb.url, {:class => "img-rounded"}
end %>
</div>
<div class="media-body">
<small class="pull-left"><%= gallery.fotos.size.to_s + " " + I18n.t('fotos.bilder')%> </small>
<small class="pull-right"><%=I18n.l(gallery.try(:datum).try(:to_date)) unless gallery.try(:datum).try(:to_date).nil? %></small></br>
<h1><%= gallery.name %></h1>
<p>
<%= if gallery.desc.split.size > Gallery::WORD_COUNT
gallery.desc.split[0..Gallery::WORD_COUNT].join(" ") + " ..."
else
gallery.desc
end%>
</p>
</div>
</div>
<% end %> <!-- end link -->
</div> <!-- close span6 -->
<% end %> <!-- end row -->

View File

@@ -12,7 +12,7 @@
<li>
<%= link_to g do %>
<h2><%= g.name %></h2>
<p><%= g.desc %></p>
<p><%= g.desc.html_safe %></p>
<% end %>
</li>
<% end %>

View File

@@ -11,7 +11,11 @@
<%= @gremium.desc.html_safe %>
</p>
<% unless @gremium.thema.nil? %>
<p><%= link_to "Mehr zum Gremium lesen ..." ,themengruppe_path(@gremium.thema.themengruppe , {:thema=>@gremium.thema.id})%></p>
<p>
<%= link_to thema_path(@gremium.thema) do%>
<%= fa_icon "book 2x border" %> Mehr über <%=@gremium.fall4 %> erfahren
<% end %>
</p>
<% end %>
</div>

View File

@@ -39,7 +39,7 @@
<br />
<%= render 'layouts/pretty_toolbar' %>
<%= link_to 'New Gremium', new_gremium_path %>

View File

@@ -28,10 +28,11 @@
<% end %>
<% @themen.each do |thema| %>
<ul class="unstyled linkbox-list" style="max-width:70em">
<li><%= link_to thema, {:class=>"linkbox"} do %>
<ul class="unstyled content-list" style="max-width:70em">
<li><%= link_to thema.title,thema %>
<div class="contentbox">
<%= render :partial=>"themen/small", :object=>thema %>
<% end %>
</div>
</li>
</ul>
<% end %>

View File

@@ -6,7 +6,7 @@
<% end %>
</ul>
<p>
<%= link_to "FET Login", user_omniauth_authorize_path(:ldap) %>
<%= link_to I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %>
</p>
<div class="alert">
<h2>Beta Test</h2>
@@ -22,12 +22,12 @@
</p>
<p><%= link_to "Steuerelemente und Komponenten", "http://getbootstrap.com/2.3.2/index.html" %></p>
<p>Um bei der Entwicklung mitzuhelfen braucht nur Ruby on Rails installiert werden</p>
<p><%= link_to "Getting Started" , home_startdev_path%></p>
<p><%= link_to "Getting Started" , startdev_home_index_path %></p>
<p> Das Kalender Feature wird überarbeitet, in Zukunft soll folgender Link nicht mehr funktionieren <%= link_to "Kalender", calendars_path %>
</p>
</div>
<%= link_to "Entwicklungsstatus" , home_dev_path %>
<%= link_to "Entwicklungsstatus" , dev_home_index_path %>
<%= render 'beispiele' %>
Verschiedene Styles

View File

@@ -0,0 +1 @@
<%= I18n.t "home.kontakt" %>

View File

@@ -1,6 +1,6 @@
<div class="content-wrap content-column">
<%= semantic_form_for :search,:remote=>true, :url=>search_home_index_path, :html=>{:id=>"search_form", :method=>'get'} do |f| %>
<%= f.input :query, :input_html => { :name => 'query' } %>
<%= semantic_form_for :search,:remote=>true, :url=>search_home_index_path, :html=>{:id=>"search_form",:class=>"navbar-search", :method=>'get'} do |f| %>
<%= f.input :query, :input_html => { :name => 'query' } , :label=>false, :class=>"search-query" %>
<% end %>
<script>
$( document ).ready(function() {

View File

@@ -17,13 +17,19 @@ Verwendung: Aufruf mit
Versionen<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li> <%= link_to "active", t[:path] %>
</li>
<% t[:versions].each_with_index do |v,i| %>
<li>
<%
uri= URI.parse(t[:path]);
uri.query= URI.encode_www_form(URI.decode_www_form(uri.query)<<["version",i.to_s])
%>
<%= link_to v[:created_at],uri.to_s ,:version=>v[:id]%>
<% unless t[:path].nil?
uri= URI.parse(t[:path]);
q=[];
q= q.merge(URI.decode_www_form(uri.query)) unless uri.query.nil?
uri.query= URI.encode_www_form(q<<["version",i.to_s])
%>
<%= link_to I18n.l(v[:created_at]).to_s,uri.to_s ,:version=>v[:id] %>
<% end %>
</li>
<% end %>
</ul>

View File

@@ -36,21 +36,27 @@
</div>
</div>
</div>
<div class="span1 "></div>
</div>
<div class="row-fluid">
<div class="span1">
</div>
<div class="span10" id="contentdiv">
<%= yield %>
<span class="pull-right"> <%= render 'layouts/login' %></span>
</div>
<div class="span1">
</div>
</div>
<div class="row-fluid">
<div class="span1">
</div>
<div class="span10" id="contentdiv">
<span class="pull-right"> <%= render 'layouts/login' %></span> Version 0.0.3a
</div>
<div class="span1">
</div>
</div>
</div>
</body>

View File

@@ -17,7 +17,8 @@
<li><%= link_to I18n.t('mitarbeiter',:scope=>'home' ),fetprofiles_path %></li>
<li><%= link_to I18n.t('fotos',:scope=>'home' ),galleries_path %></li>
<li><%= link_to I18n.t(:studien,:scope=>'home' ), studien_path %></li>
<li> <%= link_to I18n.t("home.search"), search_home_index_path %></li>
<li> <%= link_to I18n.t("home.search"), search_home_index_path %></li>
<li> <%= link_to I18n.t("home.kontakt"), kontakt_home_index_path %></li>
<li>
<%= link_to 'Admin' , config_path%>
</li>

View File

@@ -1,11 +1,11 @@
<div class="media">
<a class="pull-left" href="#">
<img class="media-object img" src="<%= lec_lva.picture.thumb.url %>"/>
</a>
<div class="media-body">
<h4><%= link_to lec_lva.name, lec_lva %></h4>
<a class="pull-left" href="#">
<img class="media-object img" src="<%= lec_lva.picture.thumb.url unless lec_lva.picture.nil? %>"/>
</a>
<div class="media-body">
<h4><%= lec_lva.name %></h4>
Email: <%= mail_to lec_lva.email %><br>
TISS: <%= link_to lec_lva.name, lec_lva.link %>
</div>
</div>
TISS: <%= link_to lec_lva.name, lec_lva.link, target: "_blank" %>
</div>
</div>

View File

@@ -16,7 +16,7 @@
<td><%= lecturer.name %></td>
<td><%= lecturer.email %></td>
<td><%= lecturer.oid %></td>
<td><%= lecturer.picture %></td>
<td><%= image_tag lecturer.picture.thumb %></td>
<td><%= link_to 'Show', lecturer %></td>
<td><%= link_to 'Edit', edit_lecturer_path(lecturer) %></td>
<td><%= link_to 'Destroy', lecturer, method: :delete, data: { confirm: 'Are you sure?' } %></td>

View File

@@ -1,5 +1,8 @@
<p id="notice"><%= notice %></p>
<%= render partial: "lec_lva", object: @lecturer %>
<p>
<b>Name:</b>
<%= @lecturer.name %>

View File

@@ -1,28 +1,25 @@
<% @lva.modul.each do |modul| %>
<% modul.modulgruppen.each do |g| %>
<ul class="breadcrumb">
<li><%= link_to g.studium.name , studium_path(g.studium)%>
<span class="divider"></span></li>
<li><%= link_to g.name , modulgruppe_path(g)%><span class="divider">/</span></li>
<li><%= link_to modul.name , modul_path(modul)%></li>
<% end %>
</ul>
<% end %>
<p id="notice"><%= notice %></p>
<p>
<%= @lva.lvanr %>
<b><%= @lva.name %> <%= @lva.ects %> ECTS/ <%= @lva.stunden %> Std</b>
<h1><%=lva.typ.to_s + ' ' + lva.name %></h1>
<h2>Prüfungsinformation</h2>
<div class="">
<%= lva.pruefungsinformation.to_s.html_safe %>
</div>
<h2>Lernaufwand</h2>
<div class="">
<%= lva.lernaufwand %>
</div>
<h2>Beschreibung</h2>
<div class="">
<%= lva.desc.to_s.html_safe %>
</div>
<p>
<%= lva.lvanr %>
<b><%= lva.name %> <%= lva.ects %> ECTS/ <%= lva.stunden %> Std</b>
</p>
<p>
<%= @lva.desc %>
</p>
<ul>
<% @lva.beispiele.each do |b|%>
<li><%= render b%></li>
<% end %>
</ul>
<%= toolbar_html(@toolbar_elements) %>

View File

@@ -0,0 +1,2 @@
<h2><%= nlink.title %></h2>
<% render :partial=> "lvas/lva", :object=>nlink %>

View File

@@ -0,0 +1,29 @@
<div class="container-fluid">
<div class="row-fluid">
<div class="span6">
<p>&nbsp;</p>
<p>&nbsp;</p>
<%= render partial: "lva", object: @lva %>
<h2> <%= I18n.t "lecturers.lecturers" %> </h2>
<% @lva.lecturers.each do |lec| %>
<%= render :partial=>'lecturers/lec_lva', :object=>lec %>
<% end %>
</div>
<div class="span6">
<p> Tiss Version</p>
<%= link_to "Von Tiss laden", load_tiss_lva_path(@lva) %>
<%= render partial: "lva", object: @lvatiss %>
<h2> <%= I18n.t "lecturers.lecturers" %> </h2>
<% @lvatiss.lecturers.each do |lec| %>
<%= render :partial=>'lecturers/lec_lva', :object=>lec %>
<% end %>
</div>
</div>
</div>

View File

@@ -4,10 +4,12 @@
<div class="row-fluid">
<div class="span8">
<h1><%=@lva.typ.to_s + ' ' + @lva.name %></h1>
<h2>Prüfungsinformation</h2>
<div class="">
<%= @lva.pruefungsinformation.html_safe %>
</div>
<h2>Lernaufwand</h2>
<div class="">
<%= @lva.lernaufwand %>
@@ -16,14 +18,13 @@
<div class="">
<%= @lva.desc.to_s.html_safe %>
</div>
<div class="row-fluid">
<h2>Beispiele</h2>
<% @lva.beispiele.each do |b| %>
<%= render b%>
<% end %>
<h2>Beispiele</h2>
<% @lva.beispiele.each do |b| %>
<%= render b%>
<% end %>
</div>
</div>
<div class="span4">
<div class="contentbox">
@@ -56,7 +57,30 @@
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<% unless @lva.nlinks.empty? %>
<h2>Neuigkeiten</h2>
<% @lva.nlinks.each do |l| %>
<%= render l.neuigkeit %>
<% end %>
<% end %>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= render 'layouts/pretty_toolbar' %>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= render 'beispiele/form_bulk' %>
</div>
</div>
<%= render 'layouts/pretty_toolbar' %>
</div>
<%= render 'beispiele/form_bulk' %>

View File

@@ -2,7 +2,7 @@
<h2><%= link_to modulgruppe.name, modulgruppe_path(modulgruppe) %>
</h2>
<%= modulgruppe.desc%><ul>
<%= modulgruppe.desc%><ul class="unstyled">
<%= render :partial=>'moduls/kurz', :collection=>modulgruppe.moduls, :as=>:modul%>
</ul>
<br>

View File

@@ -1,18 +1,23 @@
</ul><p id="notice"><%= notice %></p>
<%= render 'studien/tabs' %>
<div class="content-wrap content-column">
<p id="notice"><%= notice %></p>
<h1>
<%= @modulgruppe.name %>
</h1>
<p>
<!-- <b><%= link_to "Studium: "+@modulgruppe.studium.name, studium_path(@modulgruppe.studium) %></b>-->
</p><p>
</p>
<p>
<b><%= I18n.t "modulgruppe.typ"%>:</b>
<%= @modulgruppe.typ %>
</p>
<% @modulgruppe.moduls.each do |modul| %>
<%= render 'moduls/kurz', :modul=>modul%>
<% end %>
<ul class="unstyled">
<% @modulgruppe.moduls.each do |modul| %>
<%= render 'moduls/kurz', :modul=>modul%>
<% end %>
</ul>
<%= render 'layouts/pretty_toolbar' %>
</div>

View File

@@ -1,21 +1,29 @@
<div class="container-fluid">
<%= semantic_form_for @modul do |f| %>
<%= f.inputs do %>
<div class="row-fluid">
<div class="span9">
<%= f.input :name ,:hint=>true%>
<div class="row-fluid">
<div class="span8">
<%= f.input :desc, :as=>:tinymce_text %>
</div>
<div class="span4">
<%= f.input :depend %>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<%= f.input :name ,:hint=>true%>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= f.input :desc, :as=>:tinymce_text %>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= f.input :depend %>
</div>
</div>
</div>
</div>
<div class="span3">
<%= f.input :modulgruppen,:as => :check_boxes, :collection => Hash[Modulgruppe.all.map{|m| [m.studium.name + " " + m.name,m.id]}.sort] %>
<%= f.input :modulgruppen, :as => :check_boxes, :member_label=>:long_name, :collection => Modulgruppe.all %>
</div>
</div>

View File

@@ -0,0 +1,29 @@
<%= semantic_form_for "moduls[]", :url=>update_bulk_moduls_path do |ff| %>
<table>
<tr><th>Modulname</th><th>Modulgruppen</th><th>Beschreibung</th> <th>Voraussetzungen</th></tr>
<% @moduls.each do |m| %>
<%= semantic_fields_for "moduls[#{m.id}]", m do |f| %>
<tr><td>
<%= f.input :id, :label=>false, :hint=>"" ,:as=>:hidden %>
<%= f.input :name, :label=>false, :hint=>"" %></td>
<td>
<%= f.input :modulgruppen, :label=>false, :hint=>"" , :collection=>Modulgruppe.all %>
</td>
<td>
<%= f.input :desc, :label=>false, :hint=>"" ,:input_html=>{:class=>"row-fluid"} %>
</td>
<td>
<%= f.input :depend, :label=>false, :hint=>"" ,:input_html=>{:class=>"row-fluid"} %>
</td>
</tr>
<% end %>
<% end %>
</table>
<%= ff.actions do %>
<%= ff.action :submit, :label=>"Save", :as=>:button %>
<%= ff.action :cancel, :as => :link %>
<% end %>
<% end %>

View File

@@ -1,6 +1,19 @@
<li><p>
<li>
<div class="contentbox">
<p>
<b><% if !modul.name.nil? %><%= link_to "Modul "+ modul.name , modul_path(modul) %> <%end%></b>
</p>
<ul>
<% modul.lvas.each do |lva| %>
<li> <%= render :partial=>'lvas/lva_semester', :locals =>{:lva => lva}%>
</li>
<% end %>
</ul>
<% link_to '<i class="icon-pencil"></i>'.html_safe+I18n.t("common.edit"), edit_modul_path(modul) %>
</div>
</li>

View File

@@ -5,31 +5,32 @@
<div class="row-fluid">
<div class="span8">
<h2><%=I18n.t("modul.desc")%></h2>
<p>
<%= raw(@modul.desc) %>
</p>
<h2><%=I18n.t("modul.lvas")%></h2>
<% @modul.lvas.each_slice(3) do |row| %>
<ul>
<% row.each do |lv| %>
<li>
<%= render 'lvas/lva_semester', :lva=>lv%>
</li>
<% end %>
</ul>
<% end %>
<h2><%=I18n.t("modul.desc")%></h2>
<p>
<%= raw(@modul.desc) %>
</p>
</div>
<div class="span4">
<div class="lva-sidebar">
<h2><%=I18n.t("modul.mgs")%></h2>
<ul>
<% @modul.modulgruppen.each do |mg| %>
<li>
<%= render 'modulgruppen/kurz', :modulgruppe=>mg %>
</li>
<% end %>
</ul>
</div>
</div>
</div>
<div class="span4">
<div class="lva-sidebar">
<h2><%=I18n.t("modul.mgs")%></h2>
<ul>
<% @modul.modulgruppen.each do |mg| %>
<li>
<%= render 'modulgruppen/kurz', :modulgruppe=>mg %>
</li>
<% end %>
</ul>
<h2><%=I18n.t("modul.lvas")%></h2>
<% @modul.lvas.each_slice(3) do |row| %>
<ul>
<% row.each do |lv| %>
<li>
<%= render 'lvas/lva_semester', :lva=>lv%>
</li>
<% end %>
</ul>
<% end %>
</div>
</div></div>

View File

@@ -0,0 +1 @@
<%= render :partial=>"form_bulk" %>

View File

@@ -1,4 +1,4 @@
<%= semantic_form_for "lvas[]", :url=>modul_update_lvas_path(@modul) do |ff|%>
<%= semantic_form_for "lvas[]", :url=>update_lvas_modul_path(@modul) do |ff|%>
<table>
<% i = 0 %>
<% @lvas.each do |lva|%>

View File

@@ -1,4 +1,4 @@
<%= semantic_form_for "lvas[]", :url=>modul_show_tiss_path(params[:modul_id]) do |ff|%>
<%= semantic_form_for "lvas[]", :url=>show_tiss_modul_path(params[:modul_id]) do |ff|%>
<% for i in 1..5 do %>
<%= semantic_fields_for "lvas[#{i}]" do |f| %>

View File

@@ -0,0 +1 @@
<%= render :partial=>"form_bulk" %>

View File

@@ -16,7 +16,7 @@
</div>
<% if neuigkeit.has_calentries? %>
<div class="pull-right" href="#">
<%= image_tag("/iconnavy/time.png") %>
<%= fa_icon("calendar 2x") %>
<% unless neuigkeit.calentries.upcoming.empty? %>
<%= neuigkeit.calentries.upcoming.first.text %>
<% else unless neuigkeit.calentries.recent.empty? %>

View File

@@ -0,0 +1,11 @@
<li>
<%= link_to nlink_list.link do %>
<div class="contentbox" >
<% p = nlink_list.link_type.downcase.pluralize+"/nlink" %>
<%= raw(strip_links(render :partial=>p, :object=>nlink_list.link )) %>
</div>
<% end %>
</li>

View File

@@ -0,0 +1,12 @@
<li>
<%= link_to nlink_list_search.title, nlink_list_search %>
<%= link_to "add:"+nlink_list_search.title, create_link_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit, :link_id=>nlink_list_search.id, :link_type=>nlink_list_search.class.to_s) %>
<div class="contentbox" >
<% p = nlink_list_search.class.to_s.downcase.pluralize+"/nlink" %>
<%= render :partial=>p, :object=>nlink_list_search %>
</div>
</li>

View File

@@ -11,22 +11,36 @@
</span>
<div class="media">
<div class="pull-left" href="#">
<p><br><%= link_to image_tag(@neuigkeit.picture.big_thumb.url),@neuigkeit.picture.url %>
<p><br><%= link_to image_tag(@neuigkeit.picture.big_thumb.url),@neuigkeit.picture.try(:url) %>
</p>
</div>
<div class="media-body">
<h1>
<%= @neuigkeit.title%>
<%= @neuigkeit.title%>
</h1>
</h1>
<%= raw(@neuigkeit.text) %>
<p></p>
</div>
</div>
<% @calentries1.each do |ce|%>
<%= render ce unless ce.nil? %>
<% end %>
<%= render 'layouts/pretty_toolbar', :object=> @toolbar_elements %>
</div>
Siehe auch:
<ul class="unstyled">
<div id="nlink_list">
<%= render partial: "nlink_list", collection: @neuigkeit.nlinks %>
</div>
<div id="nlink_list_search">
<%= render partial: "nlink_list_search", collection: @nlink_search %>
</div>
</ul>
<%= semantic_form_for :find_link, :url=>find_link_rubrik_neuigkeit_path(@rubrik,@neuigkeit), :html=>{:id=>"search_form", :method=>'get'} do |f| %>
<%= f.input :query, :input_html => { :name => 'query' },:label=>false %>
<% end %>
</div>

View File

@@ -15,6 +15,15 @@
<div class="row-fluid">
<%= f.input :desc, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= f.input :qualifikation, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= f.input :struktur, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= f.input :jobmoeglichkeiten, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<div class="span12">

View File

@@ -0,0 +1,21 @@
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<p><%= link_to "Qualifikationsprofil", studium_path( @studium, :ansicht=>"qualifikationsprofil")%> </p>
<%= raw(@studium.desc) %>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<ul class="unstyled">
<% @studium.nlinks.each do |l| %>
<li><%= render l.neuigkeit %></li>
<% end %>
</ul>
</div>
</div>
</div>

View File

@@ -0,0 +1,22 @@
<div class="container-fluid">
<div class="row-fluid">
<% if params[:info].true? %>
<%= raw(@studium.desc) %>
<% else %>
<%= @studium.desc_first_words %> <%= link_to I18n.t('studium.info'), studium_path(@studium, :ansicht=>params[:ansicht], :info=>true) %>
<% end %>
<% @studienphasen.each do |sp| %>
<% sp[:modulgruppen].each do |row| %>
<div class="row-fluid">
<% row.each do |modulgruppe| %>
<div class="span<%= sp[:width]%> min-width:13em;">
<%= render modulgruppe %>
</div>
<% end %>
</div>
<% end %>
<% end %>
</div>

View File

@@ -0,0 +1,2 @@
<h2><%= nlink.name %></h2>
<p><%= nlink.desc_first_words %></p>

View File

@@ -0,0 +1,34 @@
<div class="container-fluid">
<% if params[:info].true? %>
<%= raw(@studium.desc) %>
<% else %>
<%= @studium.desc_first_words %> <%= link_to I18n.t('studium.info'), studium_path(@studium, :ansicht=>params[:ansicht], :info=>true) %>
<% end %>
<% @studium.semester.each do |sem| %>
<div class="row-fluid">
<div class="span12">
<div class="contentbox">
<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 I18n.t("lva.addrem"), edit_semester_path(sem), :class=>"btn-small"%>
</div>
</div>
</div>
<% sem.lvas.each do |lva| %>
<div class="row-fluid">
<%= render :partial=>'lvas/lva_semester', :locals =>{:lva => lva}%>
</div>
<% end %>
</div>
</div>
</div>
</div>
<% end %>
<%= render :partial=>'layouts/pretty_toolbar', :locals=>{:elements=>@toolbar_elements} %>
</div>

View File

@@ -1,4 +1,4 @@
<%= link_to studium_path(studium, :ansicht=>'semesteransicht') ,{:class=>"linkbox"} do %>
<%= link_to studium_path(studium, {:ansicht=>'semesteransicht'}) ,{:class=>"linkbox"} do %>
<div class="media">
<div class="pull-left">
<%= image_tag studium.picture.big_thumb.url %>

View File

@@ -0,0 +1,25 @@
<%= render 'studien/tabs' %>
<div class="content-wrap content-column">
<div class="container-fluid">
<div class="row-fluid">
<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" %>
<%= link_to "Infoansicht", studium_path(@studium, :ansicht=>'infoansicht'), :class=>"btn" unless params[:ansicht]=='infoansicht'%>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= raw(@studium.desc) %>
</div>
</div>
</div>
</div>

View File

@@ -2,8 +2,14 @@
<div class="container-fluid">
<div class="row-fluid">
<%= 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 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" %>
<%= link_to "Infoansicht", studium_path(@studium, :ansicht=>'infoansicht'), :class=>"btn" unless params[:ansicht]=='infoansicht'%>
</div>
</div>
</div>

View File

@@ -1,32 +1,31 @@
<div class="container-fluid">
<div class="row-fluid">
<%= render 'studien/tabs' %>
<p id="notice"><%= notice %></p>
<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 class="row-fluid">
<% if params[:info].true? %>
<%= raw(@studium.desc) %>
<%= render 'studien/tabs' %>
<div class="content-wrap content-column">
<p id="notice"><%= notice %></p>
<h1><%= @studium.typ %> <%= @studium.name %> (<%= @studium.zahl %>)</h1>
<p>
<div class="pull-right">
<%= link_to I18n.t("studien.ansicht.semester"), studium_path(@studium, :ansicht=>"semesteransicht"), :class=>"btn" unless params[:ansicht]=='semesteransicht' %>
<%= link_to I18n.t("studien.ansicht.modulgruppe"), studium_path(@studium, :ansicht=>"modulgruppenansicht"), :class=>"btn" unless params[:ansicht]=='modulgruppenansicht' %>
<%= link_to I18n.t("studien.ansicht.info"), studium_path(@studium, :ansicht=>"infoansicht"), :class=>"btn" unless params[:ansicht]=='infoansicht' %>
</div>
</p>
<% if params[:ansicht]=='modulgruppenansicht' %>
<%= render partial: 'modulgruppenansicht' %>
<% else if params[:ansicht]=='infoansicht' %>
<%= render partial: 'infoansicht' %>
<% else if params[:ansicht]== 'qualifikationsprofil' %>
<h2>Qualifikationsprofil</h2>
<p>
<%= raw(@studium.qualifikation) %>
</p>
<% else %>
<%= @studium.desc_first_words %> <%= link_to I18n.t('studium.info'), studium_path(@studium, :ansicht=>params[:ansicht], :info=>true) %>
<% end %>
<%= render partial: 'semesteransicht' %>
<% @studienphasen.each do |sp| %>
<% sp[:modulgruppen].each do |row| %>
<div class="row-fluid">
<% row.each do |modulgruppe| %>
<div class="span<%= sp[:width]%> min-width:13em;">
<%= render modulgruppe %>
</div>
<% end %>
</div>
<% end %>
<% end %>
</div>
<% end %> <% end %> <% end %>
<%= render :partial=>'layouts/pretty_toolbar', :object=>@toolbar_modulgruppen %><br>
<%= render 'layouts/pretty_toolbar' %>
</div>

View File

@@ -21,7 +21,8 @@
</div>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<%= f.action :submit, :as => :button, :label=>"Sdf"+raw(fa_icon("save"))%>
<%= f.action :cancel, :as => :link %>
<% end %>
<% end %><% end %>

View File

@@ -0,0 +1,2 @@
<h2><%= nlink.title %></h2>
<p><%= raw(nlink.text_first_words) %></p>

View File

@@ -1,3 +1,6 @@
<a name="thema_<%=small.id%>" href="#<%=small.id%>">
<h2><%= small.title %></h2>
</a>
<%= raw(small.text) %>
<br/>
<%= raw("<b>FAQs:</b>") unless small.fragen.empty? %>
@@ -14,4 +17,4 @@
@small_elements = []
@small_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>small} if can? :edit, small
@small_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('thema.remove'), :path=>small, :method=>:delete,:confirm=>I18n.t('thema.sure')} if can? :delete, small %>
<%= render :partial=>'layouts/pretty_toolbar', :object=>@small_elements unless @small_elements.empty? %>
<% render :partial=>'layouts/pretty_toolbar', :object=>@small_elements unless @small_elements.empty? %>

View File

@@ -0,0 +1,3 @@
<% verw_liste.each do |thema| %>
<li id="themen_<%= thema.id %>" class="sort" ><div class="contentbox handle" ><h2><%= thema.title %></h2> </div> <%= link_to edit_thema_path(thema),:remote=>true do %> Edit <% end %> <%= link_to fragen_thema_path(thema),:remote=>true do %> Fragen <% end %></li>
<% end %>

View File

@@ -1,5 +1,6 @@
<h1>New thema</h1>
<div id="themaview">
<h1><%= I18n.t("thema.add") %></h1>
<%= render 'form' %>
</div>
<%= link_to 'Back', themen_path %>

View File

@@ -1,24 +1,9 @@
<p id="notice"><%= notice %></p>
<%= link_to "Zurück", @thema.themengruppe %>
<br>
<%= render :partial=>"themen/small", :object=>@thema %>
<h1><%= @thema.title %></h1>
<p>
<%= raw(@thema.text) %>
</p>
<!--
<%= link_to 'Edit', edit_thema_path(@thema) %> |
<%= link_to 'Back', themengruppe_path(@thema.themengruppe) %>
-->
<%= render :partial=>'layouts/pretty_toolbar' %>
<%= render :partial=>'themen/fragen' %>
<!--
<%= link_to 'Neue Frage', new_frage_path %> <br/>
-->
<br/>
<h2><%= I18n.t('attachment.title')%>:</h2>
<div id="attachmentform">
</div>
<%= link_to new_thema_attachment_path(@thema) ,:remote=>true do %> new Attachment <% end %>
<%= render :partial => "themen/select", :object => @thema, :locals=>{:editor => :false} %>

View File

@@ -1,2 +1,4 @@
alert('t');
$("#themaview").html("<%= escape_javascript(raw("<h2>Bearbeiten</h2>")+render(:partial=>"themen/small", :object=>@thema) )%>");
$("#themen").html("<%= escape_javascript(render(:partial=>"themen/verw_liste", :object=>@themen) )%>");

View File

@@ -0,0 +1,24 @@
<p id="notice"><%= notice %></p>
<h1><%= @thema.title %></h1>
<p>
<%= raw(@thema.text) %>
</p>
<!--
<%= link_to 'Edit', edit_thema_path(@thema) %> |
<%= link_to 'Back', themengruppe_path(@thema.themengruppe) %>
-->
<%= render :partial=>'layouts/pretty_toolbar' %>
<%= render :partial=>'themen/fragen' %>
<!--
<%= link_to 'Neue Frage', new_frage_path %> <br/>
-->
<br/>
<h2><%= I18n.t('attachment.title')%>:</h2>
<div id="attachmentform">
</div>
<%= link_to new_thema_attachment_path(@thema) ,:remote=>true do %> new Attachment <% end %>
<%= render :partial => "themen/select", :object => @thema, :locals=>{:editor => :false} %>

View File

@@ -8,6 +8,7 @@
<% end %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<%= f.action :submit, :as => :input %>
<%= f.action :cancel,:label => I18n.t("common.back"), :as => :link %>
<% end %>
<% end %>

View File

@@ -0,0 +1,19 @@
<% @themengruppen.each do |tg| %>
<a name="themengruppe_<%=tg.id.to_s%>">
<h2><%= tg.title%></h2></a>
<ul>
<% tg.themen.order(:priority).reverse.each do |t| %>
<li><%= t.title %>
<ul>
<% t.fragen.each do |f| %>
<li><b> <%= f.title %></b><p> <%= f.text %></p></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
<% end %>

View File

@@ -1,4 +1,5 @@
<div class="content-wrap content-column">
<p> <%= link_to "FAQS", faqs_themengruppen_path %></p>
<ul class="unstyled linkbox-list">
<li>
<% @themengruppen.each do |themengruppe| %>

View File

@@ -1,5 +1,6 @@
<div class="content-wrap content-column" >
<%= link_to fa_icon("arrow-circle-left 2x")+" Alle Themengruppen", themengruppen_path, :class=>"linkbox" %>
<%= link_to fa_icon("question 2x")+" Häufige Fragen", faqs_themengruppen_path(:anchor=>"themengruppe_"+@themengruppe.id.to_s), :class=>"linkbox" %>
<h1><%= @themengruppe.title %></h1>
<p>
<%= @themengruppe.text %>
@@ -8,15 +9,26 @@
<% @themengruppe.themen.each do |thema| %>
<li>
<div class="contentbox">
<a href="#<%=thema.id%>">
<h2><%= thema.title %></h2>
</a>
<% unless thema.gremium.nil? %>
<p>
<%= link_to "Zu dem Gremium ..." , thema.gremium %>
</p>
<% end %>
<%= render :partial => 'themen/small', :object => thema %>
tools:
<%
@small_elements2 = []
@small_elements2 << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('common.verwalten'), :path=>verwalten_thema_path(thema)} if can? :edit, thema
%>
<%= render :partial=>'layouts/pretty_toolbar', :object=>@small_elements2 unless @small_elements2.empty? %>
<ul class="unstyled">
<% unless thema.gremium.nil? %>
<li>
<%= link_to fa_icon("users 2x")+thema.gremium.name , thema.gremium,:class=>"linkbox" %>
</li>
<% end %>
<% thema.nlinks.each do |l| %>
<li><%= render l.neuigkeit %></li>
<% end %>
</ul>
</div>
</li>
<% end %>

View File

@@ -7,9 +7,7 @@
<div class="span4">
<ul id="themen" class="sort" >
<% @themen.each do |thema| %>
<li id="themen_<%= thema.id %>" class="sort" ><div class="contentbox handle" ><h2><%= thema.title %></h2> </div> <%= link_to edit_thema_path(thema),:remote=>true do %> Edit <% end %> <%= link_to thema_fragen_path(thema),:remote=>true do %> Fragen <% end %></li>
<% end %>
<%= render partial:"themen/verw_liste", object: @themen %>
</ul>
<%= link_to new_themengruppe_thema_path(@themengruppe),:remote=>true do %> New Thema <% end %>
</div>

View File

@@ -1,25 +0,0 @@
<div class="content-wrap content-column" >
<h1><%= @themengruppe.title %></h1>
<p>
<%= @themengruppe.text %>
</p>
<ul class="unstyled linkbox-list" >
<% @themen.each do |thema| %>
<li>
<div class="contentbox">
<a href="#<%=thema.id%>">
<h2><%= thema.title %></h2>
</a>
<% unless thema.gremium.nil? %>
<p>
<%= link_to "Zu dem Gremium ..." , thema.gremium %>
</p>
<% end %>
<%= render :partial => 'themen/small', :object => thema %>
</div>
</li>
<% end %>
</ul>
<%= render :partial=>'layouts/pretty_toolbar' unless @toolbar_elements.empty?%>
</div>

View File

@@ -0,0 +1 @@
Blue1 hat eine optisch schlankereKopfzeile und hat ein zentriertes Layout

Some files were not shown because too many files have changed in this diff Show More