diff --git a/.gitignore b/.gitignore index 55a9769..2210f4a 100755 --- a/.gitignore +++ b/.gitignore @@ -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 @@ -25,3 +30,6 @@ console /server /public/uploads/ /vendor/* +/bak/* +*# + diff --git a/Gemfile b/Gemfile index b532080..9bde7ec 100755 --- a/Gemfile +++ b/Gemfile @@ -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' + diff --git a/Gemfile.lock b/Gemfile.lock index 47be881..f01eff7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 3492931..50fb36d 100755 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -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'}) + ""); +// } +// else { +// tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "" + name +""); +// } + + if ( img_ext.indexOf(ext) > -1) { - tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + ""); + tinymce.activeEditor.execCommand('mceInsertContent', false, ""); } else { - tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "" + name +""); + tinymce.activeEditor.execCommand('mceInsertContent', false, "" + name +""); } + + } diff --git a/app/assets/stylesheets/application.css.scss b/app/assets/stylesheets/application.css.scss index 9b7217f..9cd5a40 100755 --- a/app/assets/stylesheets/application.css.scss +++ b/app/assets/stylesheets/application.css.scss @@ -42,8 +42,9 @@ $sansFontFamily: Helvetica, Arial; @import 'bootstrap-responsive'; @import 'bootstrap/image-gallery'; +@import 'font-awesome'; -h1 { +h1 { font-size: 23px } diff --git a/app/assets/stylesheets/themes/2003/application.css.scss b/app/assets/stylesheets/themes/2003/application.css.scss index c21efd0..d45d70e 100755 --- a/app/assets/stylesheets/themes/2003/application.css.scss +++ b/app/assets/stylesheets/themes/2003/application.css.scss @@ -58,7 +58,7 @@ $sansFontFamily: Helvetica, Arial; @import 'bootstrap/image-gallery'; @import 'neuigkeiten'; - +@import 'font-awesome'; div.header { display: block; diff --git a/app/assets/stylesheets/themes/blue1/application.css.scss b/app/assets/stylesheets/themes/blue1/application.css.scss index c733110..fe7a383 100755 --- a/app/assets/stylesheets/themes/blue1/application.css.scss +++ b/app/assets/stylesheets/themes/blue1/application.css.scss @@ -56,7 +56,7 @@ $sansFontFamily: Helvetica, Arial; @import 'bootstrap'; @import 'bootstrap-responsive'; @import 'bootstrap/image-gallery'; - +@import 'font-awesome'; @import 'neuigkeiten'; diff --git a/app/assets/stylesheets/themes/darkblue/application.css.scss b/app/assets/stylesheets/themes/darkblue/application.css.scss index 36fce0c..2057e79 100755 --- a/app/assets/stylesheets/themes/darkblue/application.css.scss +++ b/app/assets/stylesheets/themes/darkblue/application.css.scss @@ -56,7 +56,7 @@ $sansFontFamily: Helvetica, Arial; @import 'bootstrap'; @import 'bootstrap-responsive'; @import 'bootstrap/image-gallery'; - +@import 'font-awesome'; @import 'neuigkeiten'; diff --git a/app/assets/stylesheets/themes/white_1/application.css.scss b/app/assets/stylesheets/themes/white_1/application.css.scss index 99793a5..8cbca33 100644 --- a/app/assets/stylesheets/themes/white_1/application.css.scss +++ b/app/assets/stylesheets/themes/white_1/application.css.scss @@ -41,7 +41,7 @@ $sansFontFamily: Helvetica, Arial; @import 'bootstrap'; @import 'bootstrap-responsive'; @import 'bootstrap/image-gallery'; - +@import 'font-awesome'; @import 'neuigkeiten'; div.header { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f7c7c86..cdd3a1f 100755 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -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 diff --git a/app/controllers/beispiele_controller.rb b/app/controllers/beispiele_controller.rb index ef93f78..286e91e 100755 --- a/app/controllers/beispiele_controller.rb +++ b/app/controllers/beispiele_controller.rb @@ -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 diff --git a/app/controllers/fetprofiles_controller.rb b/app/controllers/fetprofiles_controller.rb index 2f8a654..ad61588 100644 --- a/app/controllers/fetprofiles_controller.rb +++ b/app/controllers/fetprofiles_controller.rb @@ -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| diff --git a/app/controllers/gremien_controller.rb b/app/controllers/gremien_controller.rb index 966cc4c..497163f 100644 --- a/app/controllers/gremien_controller.rb +++ b/app/controllers/gremien_controller.rb @@ -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 } diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 4333ec6..019cff1 100755 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -6,6 +6,8 @@ class HomeController < ApplicationController end def dev + end + def kontakt end def startdev render 'setup_fetsite_dev' diff --git a/app/controllers/lvas_controller.rb b/app/controllers/lvas_controller.rb index 8919adb..8ad623e 100755 --- a/app/controllers/lvas_controller.rb +++ b/app/controllers/lvas_controller.rb @@ -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 - # POST /lvas - # POST /lvas.json + + def compare_tiss + @lva = Lva.find_by_id(params[:id]) + @lvatiss = Lva.new + @lvatiss.lvanr=@lva.lvanr + @lvatiss.load_tissdata("-2013W") + + end + + 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 diff --git a/app/controllers/modulgruppen_controller.rb b/app/controllers/modulgruppen_controller.rb index 42d0502..0a3a0aa 100755 --- a/app/controllers/modulgruppen_controller.rb +++ b/app/controllers/modulgruppen_controller.rb @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- class ModulgruppenController < ApplicationController - # GET /modulgruppen - - + before_filter :find_modulgruppe, :only=>[:show, :delete] + before_filter :load_toolbar_show, :only=>[:show] # Toolbar für show erstellen load_and_authorize_resource + def index @modulgruppen = Modulgruppe.all if !params[:studium_id].nil? @@ -14,17 +14,12 @@ class ModulgruppenController < ApplicationController end # GET /modulgruppen/1 - def show @modulgruppe = Modulgruppe.find(params[:id]) @studium = Studium.find(@modulgruppe.studium_id) if !params[:studium_id].nil? @studium=Studium.find(params[:studium_id]) end - @toolbar_elements = [ {:text=>'Zurück', :path=>studium_path(@studium, :ansicht=>:modulgruppenansicht)}] - @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodul'), :path=>new_modul_path(@modulgruppe)} - @toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t('modulgruppe.edit'), :path=>edit_modulgruppe_path(@modulgruppe)} - @toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium, :ansicht=>:modulgruppenansicht), :method=> :delete,:confirm=>"Sure?" } end # GET /modulgruppen/new @@ -38,7 +33,6 @@ class ModulgruppenController < ApplicationController end respond_to do |format| format.html # new.html.erb - format.json { render json: @modulgruppe } end end @@ -51,13 +45,15 @@ class ModulgruppenController < ApplicationController end end + + + + # POST /modulgruppen def create @modulgruppe = Modulgruppe.new(params[:modulgruppe]) - respond_to do |format| - if @modulgruppe.save format.html { redirect_to @modulgruppe.studium, notice: 'Modulgruppe was successfully created.' } @@ -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 diff --git a/app/controllers/moduls_controller.rb b/app/controllers/moduls_controller.rb index 624d536..9934e86 100755 --- a/app/controllers/moduls_controller.rb +++ b/app/controllers/moduls_controller.rb @@ -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<"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<'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 diff --git a/app/controllers/neuigkeiten_controller.rb b/app/controllers/neuigkeiten_controller.rb index df2bd33..31d371e 100755 --- a/app/controllers/neuigkeiten_controller.rb +++ b/app/controllers/neuigkeiten_controller.rb @@ -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 diff --git a/app/controllers/rubriken_controller.rb b/app/controllers/rubriken_controller.rb index 79e1d6b..0ff05ff 100755 --- a/app/controllers/rubriken_controller.rb +++ b/app/controllers/rubriken_controller.rb @@ -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 diff --git a/app/controllers/studien_controller.rb b/app/controllers/studien_controller.rb index 3b2fe05..35f80d3 100755 --- a/app/controllers/studien_controller.rb +++ b/app/controllers/studien_controller.rb @@ -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 diff --git a/app/controllers/themen_controller.rb b/app/controllers/themen_controller.rb index 4435ec6..2f5fa51 100644 --- a/app/controllers/themen_controller.rb +++ b/app/controllers/themen_controller.rb @@ -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 @@ -51,19 +62,22 @@ class ThemenController < ApplicationController # POST /themen.json 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.' } diff --git a/app/controllers/themengruppen_controller.rb b/app/controllers/themengruppen_controller.rb index aba10ca..f639b42 100644 --- a/app/controllers/themengruppen_controller.rb +++ b/app/controllers/themengruppen_controller.rb @@ -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 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f34ec3d..b2acb74 100755 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -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) diff --git a/app/models/ability.rb b/app/models/ability.rb index 38a73c6..1dcb42b 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -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 diff --git a/app/models/calentry.rb b/app/models/calentry.rb index 1689d1d..f7f0699 100644 --- a/app/models/calentry.rb +++ b/app/models/calentry.rb @@ -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 diff --git a/app/models/fetprofile.rb b/app/models/fetprofile.rb index 92bfb28..787c175 100644 --- a/app/models/fetprofile.rb +++ b/app/models/fetprofile.rb @@ -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 diff --git a/app/models/gallery.rb b/app/models/gallery.rb index ae4afde..ac5855c 100644 --- a/app/models/gallery.rb +++ b/app/models/gallery.rb @@ -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 + diff --git a/app/models/gremium.rb b/app/models/gremium.rb index ebc571d..28af8bd 100644 --- a/app/models/gremium.rb +++ b/app/models/gremium.rb @@ -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 + diff --git a/app/models/lecturer.rb b/app/models/lecturer.rb index f860542..8195633 100644 --- a/app/models/lecturer.rb +++ b/app/models/lecturer.rb @@ -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 diff --git a/app/models/lva.rb b/app/models/lva.rb index 241b4b6..5ca8e97 100755 --- a/app/models/lva.rb +++ b/app/models/lva.rb @@ -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]+"

"+hash["course"]["teachingContent"][I18n.locale.to_s] self.typ=hash["course"]["courseType"] self.stunden=hash["course"]["weeklyHours"] - end - + #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?) ? "
" : descr + lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i)) + lva.stunden=l["stunden"] + pr =l["pruefungsinformation"] + lva.pruefungsinformation= (pr.empty?) ? "
" : pr + lva.lernaufwand=l["lernaufwand"] + lva.typ=l["typ"] + lva.save + newlvas<l["lvanr"]).first if lva.nil? + lva=Lva.new(l) if lva.nil? + lva.modul<" : descr + lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i)) + lva.stunden=l["stunden"] + pr =l["pruefungsinformation"] + lva.pruefungsinformation= (pr.empty?) ? "
" : pr + lva.lernaufwand=l["lernaufwand"] + lva.typ=l["typ"] + lva.save + newlvas<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 diff --git a/app/models/modulgruppe.rb b/app/models/modulgruppe.rb index 236811c..7e45fd7 100755 --- a/app/models/modulgruppe.rb +++ b/app/models/modulgruppe.rb @@ -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 diff --git a/app/models/neuigkeit.rb b/app/models/neuigkeit.rb index 2a0f582..e5b710b 100755 --- a/app/models/neuigkeit.rb +++ b/app/models/neuigkeit.rb @@ -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 = /

(?[\w\s,\.!\?]*)/.match self.text + md = /

(?[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p']) words=md[:text].split(" ") unless md.nil? if words.nil? || words.empty? "...." diff --git a/app/models/nlink.rb b/app/models/nlink.rb new file mode 100644 index 0000000..368cc4e --- /dev/null +++ b/app/models/nlink.rb @@ -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 diff --git a/app/models/semester.rb b/app/models/semester.rb index 2adb3aa..1f556b6 100755 --- a/app/models/semester.rb +++ b/app/models/semester.rb @@ -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 diff --git a/app/models/studium.rb b/app/models/studium.rb index 4cd722d..51afdf1 100755 --- a/app/models/studium.rb +++ b/app/models/studium.rb @@ -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 = /

(?[\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 diff --git a/app/models/thema.rb b/app/models/thema.rb index 58097ac..c32149c 100644 --- a/app/models/thema.rb +++ b/app/models/thema.rb @@ -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 = /

(?[^\<\>]*)/.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 diff --git a/app/models/themengruppe.rb b/app/models/themengruppe.rb index 5a6b973..ca42007 100644 --- a/app/models/themengruppe.rb +++ b/app/models/themengruppe.rb @@ -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 diff --git a/app/views/beispiele/show.html.erb b/app/views/beispiele/show.html.erb deleted file mode 100755 index 49501a7..0000000 --- a/app/views/beispiele/show.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -

<%= notice %>

- -

- Name: - <%= @beispiel.name %> -

- -

- Desc: - <%= @beispiel.desc %> - <%= @beispiel.beispieldatei.url %> -

-

- <%= @beispiel.lva.name %> -

- -<%= link_to 'Edit', edit_beispiel_path(@beispiel) %> | -<%= link_to 'Back', beispiele_path %> diff --git a/app/views/calentries/_calentry.html.erb b/app/views/calentries/_calentry.html.erb index 7d2ec02..a187212 100644 --- a/app/views/calentries/_calentry.html.erb +++ b/app/views/calentries/_calentry.html.erb @@ -1,5 +1,7 @@
-<%= 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 diff --git a/app/views/calentries/_nested_fields.html.erb b/app/views/calentries/_nested_fields.html.erb index b29f4fe..e4fc987 100644 --- a/app/views/calentries/_nested_fields.html.erb +++ b/app/views/calentries/_nested_fields.html.erb @@ -1,6 +1,7 @@
-<%= image_tag("/icon_kalender_small.png") %> +<%= fa_icon("calendar 2x") %> +
<%= f.input :start, :as => :datepicker %>
diff --git a/app/views/fetprofiles/_nlink.html.erb b/app/views/fetprofiles/_nlink.html.erb new file mode 100644 index 0000000..b3362c1 --- /dev/null +++ b/app/views/fetprofiles/_nlink.html.erb @@ -0,0 +1 @@ +

<%= nlink.title %>

diff --git a/app/views/fetprofiles/index.html.erb b/app/views/fetprofiles/index.html.erb index a36b5b2..d80a255 100644 --- a/app/views/fetprofiles/index.html.erb +++ b/app/views/fetprofiles/index.html.erb @@ -41,7 +41,7 @@
- <%= link_to I18n.t('fetprofiles.new'), new_fetprofile_path %> + <%= link_to I18n.t('profile.new_profile'), new_fetprofile_path %>
diff --git a/app/views/galleries/_nlink.html.erb b/app/views/galleries/_nlink.html.erb new file mode 100644 index 0000000..72f2216 --- /dev/null +++ b/app/views/galleries/_nlink.html.erb @@ -0,0 +1,21 @@ + diff --git a/app/views/galleries/index.html.erb b/app/views/galleries/index.html.erb index 68a8a8f..ed4bb87 100644 --- a/app/views/galleries/index.html.erb +++ b/app/views/galleries/index.html.erb @@ -25,6 +25,27 @@

+ <% end %> <% end %> diff --git a/app/views/gremien/index.html.erb b/app/views/gremien/index.html.erb index 3bbbb1d..6ea21ef 100644 --- a/app/views/gremien/index.html.erb +++ b/app/views/gremien/index.html.erb @@ -12,7 +12,7 @@
  • <%= link_to g do %>

    <%= g.name %>

    -

    <%= g.desc %>

    +

    <%= g.desc.html_safe %>

    <% end %>
  • <% end %> diff --git a/app/views/gremien/show.html.erb b/app/views/gremien/show.html.erb index fe7b2e2..5880e93 100644 --- a/app/views/gremien/show.html.erb +++ b/app/views/gremien/show.html.erb @@ -11,7 +11,11 @@ <%= @gremium.desc.html_safe %>

    <% unless @gremium.thema.nil? %> -

    <%= link_to "Mehr zum Gremium lesen ..." ,themengruppe_path(@gremium.thema.themengruppe , {:thema=>@gremium.thema.id})%>

    +

    +<%= link_to thema_path(@gremium.thema) do%> +<%= fa_icon "book 2x border" %> Mehr über <%=@gremium.fall4 %> erfahren +<% end %> +

    <% end %> diff --git a/app/views/gremien/verwalten.html.erb b/app/views/gremien/verwalten.html.erb index 3348678..38a339e 100644 --- a/app/views/gremien/verwalten.html.erb +++ b/app/views/gremien/verwalten.html.erb @@ -39,7 +39,7 @@
    <%= render 'layouts/pretty_toolbar' %> -<%= link_to 'New Gremium', new_gremium_path %> + diff --git a/app/views/home/_search_results.html.erb b/app/views/home/_search_results.html.erb index 9989e84..b4153fb 100644 --- a/app/views/home/_search_results.html.erb +++ b/app/views/home/_search_results.html.erb @@ -28,10 +28,11 @@ <% end %> <% @themen.each do |thema| %> -

    -<%= link_to "FET Login", user_omniauth_authorize_path(:ldap) %> +<%= link_to I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %>

    Beta Test

    @@ -23,12 +23,12 @@

    <%= link_to "Steuerelemente und Komponenten", "http://getbootstrap.com/2.3.2/index.html" %>

    Um bei der Entwicklung mitzuhelfen braucht nur Ruby on Rails installiert werden

    -

    <%= link_to "Getting Started" , home_startdev_path%>

    +

    <%= link_to "Getting Started" , startdev_home_index_path %>

    Das Kalender Feature wird überarbeitet, in Zukunft soll folgender Link nicht mehr funktionieren <%= link_to "Kalender", calendars_path %>

    - <%= link_to "Entwicklungsstatus" , home_dev_path %> + <%= link_to "Entwicklungsstatus" , dev_home_index_path %> <%= render 'beispiele' %> Verschiedene Styles diff --git a/app/views/home/kontakt.html.erb b/app/views/home/kontakt.html.erb new file mode 100644 index 0000000..48cb162 --- /dev/null +++ b/app/views/home/kontakt.html.erb @@ -0,0 +1 @@ +<%= I18n.t "home.kontakt" %> diff --git a/app/views/home/search.html.erb b/app/views/home/search.html.erb index a22bf16..e45c142 100644 --- a/app/views/home/search.html.erb +++ b/app/views/home/search.html.erb @@ -1,6 +1,6 @@
    -<%= 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 %>