diff --git a/Gemfile b/Gemfile index 12a6f4a..a83dee3 100755 --- a/Gemfile +++ b/Gemfile @@ -115,3 +115,4 @@ gem 'sunspot_solr' gem 'sitemap_generator' gem 'whenever' gem 'yaml_db' +gem 'etherpad-lite' \ No newline at end of file diff --git a/app/assets/javascripts/meetings.js.coffee b/app/assets/javascripts/meetings.js.coffee new file mode 100644 index 0000000..7615679 --- /dev/null +++ b/app/assets/javascripts/meetings.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/javascripts/meetingtyps.js.coffee b/app/assets/javascripts/meetingtyps.js.coffee new file mode 100644 index 0000000..7615679 --- /dev/null +++ b/app/assets/javascripts/meetingtyps.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/stylesheets/meetings.css.scss b/app/assets/stylesheets/meetings.css.scss new file mode 100644 index 0000000..6b149af --- /dev/null +++ b/app/assets/stylesheets/meetings.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the meetings controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/meetingtyps.css.scss b/app/assets/stylesheets/meetingtyps.css.scss new file mode 100644 index 0000000..94c9425 --- /dev/null +++ b/app/assets/stylesheets/meetingtyps.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the meetingtyps controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb new file mode 100644 index 0000000..dce8233 --- /dev/null +++ b/app/controllers/documents_controller.rb @@ -0,0 +1,134 @@ +class DocumentsController < ApplicationController +# require('etherpad-lite') + load_and_authorize_resource + def index + respond_to do |format| + format.html {redirect_to rubriken_path} + end + end + def new + @document=Document.new + @parent=params[:parent_type].constantize.find(params[:parent_id]) + @document.parent=@parent + + @document.typ = 1 + respond_to do |format| + format.js + end + end + def edit + @document = Document.find(params[:id]) + @parent=@document.parent + respond_to do |format| + format.js + end + end + + def dump_to_etherpad + @document = Document.find(params[:id]) + @document.dump_to_etherpad +@document.save +# author = ether.author('author_1') +# pad=group.pad(@document.etherpadkey) +# pad.html='
'+@document.text+'
' + redirect_to action: :show + end + def read_from_etherpad + @document = Document.find(params[:id]) + @document.read_from_etherpad + @document.save + render :show + end + + def write_etherpad + @document = Document.find(params[:id]) + + ether=Document.ether + author = Document.ether.author("fetsite_"+current_user.uid, :name => current_user.text) +author = Document.ether.author("author_1") + session[:ep_sessions]={} if session[:ep_sessions].nil? + group=@document.ep_group + + sess = session[:ep_sessions][group.id] ? ether.get_session(session[:ep_sessions][group.id]) : group.create_session(author, 60) + + if sess.expired? + sess.delete + sess = group.create_session(author, 60) + end + session[:ep_sessions][group.id] = sess.id + # Set the EtherpadLite session cookie. This will automatically be picked up by the jQuery plugin's iframe. + + cookies[:sessionID] = {:value => sess.id, :domain => "www.fet.at"} + #cookies[:sessionID] = {:value => sess.id} + cookies[:sessionID1]=sess.id +# cookies[:sdf]=sess.id + # pad=ether.pad(@document.etherpadkey) + # redirect_to "http://www.fet.at/etherpad/p/"+@document.ep_pad.id + #render :write + end + def write + @document = Document.find(params[:id]) + if @document.is_etherpad? + redirect_to action: :write_etherpad + else + @parent=@document.parent + respond_to do |format| + format.html + end + end + end + + def create + @document = Document.new(params[:document]) + + @parent=@document.parent + + respond_to do |format| + if @document.save + # format.html { redirect_to @document, notice: 'Document was successfully created.' } + #format.json { render json: @document, status: :created, location: @document } + format.js + else + # format.html { render action: "new" } + # format.json { render json: @document.errors, status: :unprocessable_entity } + format.js { render action: "new" } + end + end + end + + + def update + @document = Document.find(params[:id]) + @parent=@document.parent + + respond_to do |format| + if @document.update_attributes(params[:document]) + format.html { redirect_to @document, notice: 'Document was successfully updated.' } + format.json { head :no_content } + format.js + else + # format.html { render action: "edit" } + # format.json { render json: @document.errors, status: :unprocessable_entity } + format.js { render action: "edit"} + end + end + end + def destroy + logger.info("-------------delete------------------") + @document = Document.find(params[:id]) + + @parent=@document.parent + + @document_id = params[:id] + + @document.destroy + + respond_to do |format| + #format.html { redirect_to @object} + #format.json { head :no_content } + format.js + end + end + + +end diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 806822f..34725b2 100755 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -2,7 +2,8 @@ class HomeController < ApplicationController def index @beispiele = Beispiel.last([Beispiel.count, 3].min) @neuigkeiten = Neuigkeit.recent - + t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml") + @starttopic= @themen = Thema.where(:id=>t).first end def dev diff --git a/app/controllers/meetings_controller.rb b/app/controllers/meetings_controller.rb new file mode 100644 index 0000000..7bad531 --- /dev/null +++ b/app/controllers/meetings_controller.rb @@ -0,0 +1,132 @@ +class MeetingsController < ApplicationController + + + + + # load_and_authorize_resource + def index + parent=params[:parent_type].constantize.find(params[:parent_id]) + unless parent.nil? + #authorize! :show, parent + if params[:filter]=="upcomming" + @meetings=parent.meetings.includes(:calentry).where("calentries.start>?",1.hour.ago) + else + @meetings=parent.meetings + end + @parent=parent + end + respond_to do |format| + format.html {redirect_to rubriken_path} + format.js + end + end + def announce + m=Meeting.find(params[:id]) + m.create_announcement(current_user) + m.save + + respond_to do |format| + format.html {redirect_to m.parent} + format.js {render action: :show} + end + end + def show + m=Meeting.find(params[:id]) + respond_to do |format| + format.html {redirect_to m.parent} + format.js + + end +end + def new + @meeting=Meeting.new + @meeting.parent=params[:parent_type].constantize.find(params[:parent_id]) + @parent=@meeting.parent + @meeting.calentry=Calentry.new + @meeting.calentry.typ = 2 + respond_to do |format| + format.js + end + end + def create_protocol + @meeting = Meeting.find(params[:id]) + @meeting.create_protocol + @meeting.save + respond_to do |format| + format.js {render action: :show} + end + end + def create_agenda + @meeting = Meeting.find(params[:id]) + @meeting.create_agenda + + + respond_to do |format| + format.js {render action: :show} + end + end + def edit + @meeting = Meeting.find(params[:id]) + +@parent=@meeting.parent +respond_to do |format| + format.js + end + + end + + def create + @meeting = Meeting.new(params[:meeting]) + + @parent=@meeting.parent + #@meeting.assign_attributes(params[:meeting]) + + respond_to do |format| + if @meeting.save + # format.html { redirect_to @meeting, notice: 'Meeting was successfully created.' } + #format.json { render json: @meeting, status: :created, location: @meeting } + format.js + else + # format.html { render action: "new" } + # format.json { render json: @meeting.errors, status: :unprocessable_entity } + format.js { render action: "new" } + end + end + end + +def update + + @meeting = Meeting.find(params[:id]) + @parent=@meeting.parent + respond_to do |format| + if @meeting.update_attributes(params[:meeting]) + format.html { redirect_to @meeting, notice: 'Meeting was successfully updated.' } + format.json { head :no_content } + format.js + else + + # format.html + # format.json { render json: @meeting.errors, status: :unprocessable_entity } + format.js { render action: "edit" } + end + end + end + def destroy + logger.info("-------------delete------------------") + @meeting = Meeting.find(params[:id]) + + @parent=@meeting.parent + @meeting_id = params[:id] + @meeting.destroy + + respond_to do |format| + #format.html { redirect_to @object} + #format.json { head :no_content } + format.js + end + end + + + + +end diff --git a/app/controllers/meetingtyps_controller.rb b/app/controllers/meetingtyps_controller.rb new file mode 100644 index 0000000..b8884a1 --- /dev/null +++ b/app/controllers/meetingtyps_controller.rb @@ -0,0 +1,2 @@ +class MeetingtypsController < ApplicationController +end diff --git a/app/controllers/neuigkeiten_controller.rb b/app/controllers/neuigkeiten_controller.rb index 9bcdb5b..02da1fb 100755 --- a/app/controllers/neuigkeiten_controller.rb +++ b/app/controllers/neuigkeiten_controller.rb @@ -112,13 +112,13 @@ class NeuigkeitenController < ApplicationController end @calentries1=@neuigkeit.calentries - @nlink_search = Neuigkeit::LINKTYPES.clone + nlink_search = Neuigkeit::LINKTYPES.clone + nlink_search.collect!{|t| t.constantize} + # @nlink_search.collect!{|t| t.search(params[:query]).limit(2)} + @results= Sunspot.search nlink_search do + fulltext params[:query] + end - @nlink_search.collect!{|t| t.constantize} - @nlink_search.collect!{|t| t.search(params[:query]).limit(2)} - - - @nlink_search.flatten! respond_to do |format| format.html { render action:"show" } format.js diff --git a/app/controllers/rubriken_controller.rb b/app/controllers/rubriken_controller.rb index 8f8857b..88c6250 100755 --- a/app/controllers/rubriken_controller.rb +++ b/app/controllers/rubriken_controller.rb @@ -29,7 +29,7 @@ class RubrikenController < ApplicationController @rubrik = Rubrik.find(params[:id]) @moderatoren=User.with_role(:newsmoderator,@rubrik) - @calentries= @rubrik.calentries + @calentries= @rubrik.calendar.calentries if can?(:showunpublished, Neuigkeit) @neuigkeiten = @rubrik.neuigkeiten.page(params[:page]).per(3) else diff --git a/app/controllers/themen_controller.rb b/app/controllers/themen_controller.rb index b3d1ede..3490b13 100644 --- a/app/controllers/themen_controller.rb +++ b/app/controllers/themen_controller.rb @@ -11,7 +11,7 @@ class ThemenController < ApplicationController @toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("thema.manage"), :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 { redirect_to :controller=>'themengruppen', :id=>@thema.themengruppe.id, :action=>:show, :anchor=> "thema_"+params[:id].to_s @@ -40,6 +40,11 @@ class ThemenController < ApplicationController # @thema.text = @thema.text.sanitize render :edit end + def version + @thema = Thema.find(params[:id]) + + end + def verwalten @thema = Thema.find(params[:id]) @attachment=Attachment.new @@ -67,7 +72,7 @@ class ThemenController < ApplicationController def edit @thema = Thema.find(params[:id]) - + respond_to do |format| format.html format.js { @themen= @thema.themengruppe.themen } @@ -107,7 +112,14 @@ class ThemenController < ApplicationController format.js end end - def attachments + def documents + @thema = Thema.find(params[:id]) + @documents=@thema.documents + respond_to do |format| + format.js + end + end + def attachments @thema = Thema.find(params[:id]) @attachments=@thema.attachments @attachment=Attachment.new diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 32b5582..5395ac8 100755 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,7 +1,28 @@ module ApplicationHelper - def current_url1(overwrite={}) - url_for :params => params.merge(overwrite).except(:controller,:action,:ansicht) - end + + def strip_control_chars(value) + value.chars.inject("") do |str, char| + unless char.ascii_only? && (char.ord < 32 || char.ord == 127) + str << char + end + str + end + end + def convert_topic_to_meeting(t,mt) + m=Meeting.new_with_date_and_typ(t,t.title.to_date+16.hour,mt) + m.save + m.create_protocol + m.protocol.text=t.text + m.protocol.save + m.update_time_from_protocol +m.save + + t.meetings << m + t.save + end + def current_url1(overwrite={}) + url_for :params => params.merge(overwrite).except(:controller,:action,:ansicht) + end def switch_locale_url(target_locale) diff --git a/app/helpers/meetings_helper.rb b/app/helpers/meetings_helper.rb new file mode 100644 index 0000000..bdf5280 --- /dev/null +++ b/app/helpers/meetings_helper.rb @@ -0,0 +1,2 @@ +module MeetingsHelper +end diff --git a/app/helpers/meetingtyps_helper.rb b/app/helpers/meetingtyps_helper.rb new file mode 100644 index 0000000..544f299 --- /dev/null +++ b/app/helpers/meetingtyps_helper.rb @@ -0,0 +1,2 @@ +module MeetingtypsHelper +end diff --git a/app/models/ability.rb b/app/models/ability.rb index 7d49731..7bfcec3 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -114,10 +114,22 @@ class Ability unless user.has_role?("fetadmin") cannot :delete, Rubrik cannot :delete, Neuigkeit - end - + # Calendar + if( user.has_role?("fetuser") || user.has_role?("fetadmin")) + can :manage, Document + can :manage, Meeting + can :manage, Meetingtyp + end + unless user.has_role?( "fetadmin") + cannot :delete, Document + cannot :delete, Meeting + end + if user.has_role?( "fetadmin") + can :manage, Meetingtyp + +end # Rechteverwaltung Kalender can [:show, :index], Calendar, :public => true @@ -125,8 +137,6 @@ class Ability can [:show], Calentry if( user.has_role?("fetuser") || user.has_role?("fetadmin")) - - can [:show,:index], Calendar can [:edit, :update,:new,:create,:verwalten], Calendar can [:edit, :update,:new,:create,:verwalten,:delete], Calentry diff --git a/app/models/calentry.rb b/app/models/calentry.rb index 4c25840..8347a90 100644 --- a/app/models/calentry.rb +++ b/app/models/calentry.rb @@ -57,7 +57,7 @@ end end def name unless self.object.nil? - self.object.name + self.object.title else summary end diff --git a/app/models/document.rb b/app/models/document.rb new file mode 100644 index 0000000..bf3714a --- /dev/null +++ b/app/models/document.rb @@ -0,0 +1,64 @@ +class Document < ActiveRecord::Base + + attr_accessible :name, :parent, :text, :typ, :parent_id, :parent_type + + belongs_to :parent, :polymorphic => true + validate :name, :length=>{minimum:3} + validate :text, :presence=>true + validate :typ, :presence=>true + validate :parent, :presence=>true + has_paper_trail + TYPS = { 1=>"fet_docs", 10=>"protocol", 11=> "agenda"} + def self.new_divid_for(parent) + "document_new_parent_" + parent.class.to_s + "_" + parent.id.to_s + end + def divid + "document_"+self.id.to_s + end + def self.ether + EtherpadLite.connect('http://www.fet.at/etherpad', File.new('/home/andreas/www/APIKEY.txt')) + end + def ether + if @ep.nil? + @ep=Document.ether + end + @ep + end + def is_etherpad? + !(etherpadkey.nil? || etherpadkey.empty?) + end + def move_to_etherpad + unless self.is_etherpad? || self.id.nil? + self.etherpadkey="document_"+ self.id.to_s + self.ep_pad.html = '
'+self.text+'
' + end + end + def dump_to_etherpad + if self.is_etherpad? + self.ep_pad.html = '
'+self.text+'
' + else + self.move_to_etherpad + end + end + def read_from_etherpad + self.text=strip_control_chars(self.ep_pad.html) + + end + def ep_pad + self.ep_group.pad(self.etherpadkey) + end + def ep_group + t= (self.typ.nil?) ? 1 : self.typ + Document.ether.group(Document::TYPS[t]) + end + searchable do + text :text + text :name, :boost=>4.0 + if typ = 10 || typ=11 + text :meeting do + parent.text unless parent.nil? + end + end + end + +end diff --git a/app/models/gallery.rb b/app/models/gallery.rb index ac5855c..7c2079e 100644 --- a/app/models/gallery.rb +++ b/app/models/gallery.rb @@ -15,7 +15,11 @@ class Gallery < ActiveRecord::Base 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}%")} +# scope :search, ->(query) {where("name like ? or galleries.desc like ?", "%#{query}%", "%#{query}%")} + searchable do + text :desc + text :name, :boost=>3.0 + end def title name diff --git a/app/models/gremium.rb b/app/models/gremium.rb index aef3387..8fd3c7e 100644 --- a/app/models/gremium.rb +++ b/app/models/gremium.rb @@ -22,7 +22,11 @@ class Gremium < ActiveRecord::Base attr_accessible :desc, :name, :typ, :geschlecht,:thema_id, :memberships_attributes has_many :memberships, dependent: :destroy # Mitgliedschaften bei dem Gremium has_many :nlinks, as: :link, dependent: :destroy - scope :search, ->(query) {where("gremien.name like ? or gremien.desc like ?", "%#{query}%", "%#{query}%")} +# scope :search, ->(query) {where("gremien.name like ? or gremien.desc like ?", "%#{query}%", "%#{query}%")} + searchable do + text :desc + text :name, :boost=>4.0 + end 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 diff --git a/app/models/lva.rb b/app/models/lva.rb index c24cd22..c8752b4 100755 --- a/app/models/lva.rb +++ b/app/models/lva.rb @@ -47,7 +47,7 @@ class Lva < ActiveRecord::Base has_and_belongs_to_many :lecturers has_many :nlinks, as: :link - scope :search, ->(query) {where("name like ? or lvas.desc like ?", "%#{query}%", "%#{query}%")} +# 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? diff --git a/app/models/meeting.rb b/app/models/meeting.rb new file mode 100644 index 0000000..933ec2f --- /dev/null +++ b/app/models/meeting.rb @@ -0,0 +1,130 @@ +class Meeting < ActiveRecord::Base + belongs_to :parent, :polymorphic=>true + belongs_to :meetingtyp + + attr_accessible :desc, :intern, :name, :parent_id, :parent_type, :calentry,:calentry_attributes, :meetingtyp_id + + belongs_to :neuigkeit + has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent + has_one :agenda , :as=>:parent,:conditions=>{:typ=>11}, :class_name=>'Document' + has_one :calentry, as: :object + accepts_nested_attributes_for :calentry +# validate :agenda, :presence=>true +# validate :protocol, :presence=>true + validate :parent, :presence=>true + validate :calentry, :presence=>true + before_validation :fix_calentry + def title + self.text + end + def text + unless self.meetingtyp.try(:name).to_s.empty? + t = self.meetingtyp.name.to_s+", " + else + t="" + t = parent.title.to_s + ", " if self.name.empty? + end + t= t+ self.name.to_s + t = t + " " + I18n.l(self.calentry.start) unless self.calentry.nil? + t + end + def create_announcement(user) + n = Neuigkeit.new + + n.title=self.text + n.text ="Agenda im Anhang" + n.rubrik = self.meetingtyp.rubrik + n.author=user + self.neuigkeit= n + end + def fix_calentry + self.calentry.object=self unless self.calentry.nil? + end + def public? + ! (self.intern) + end + def create_protocol + if self.protocol.nil? + d=Document.new + d.typ=10 + d.name="Protokoll" + d.save + self.protocol=d + end + + end + def create_calentry + if self.calentry.nil? +ce =Calentry.new +ce.typ=2 +self.calentry=ce +end +end + def create_agenda + if self.agenda.nil? + d=Document.new + d.typ=11 + d.name="Agenda" + d.save + self.agenda=d + end + end + def self.new_with_date_and_typ(parent,start, typ) + m= Meeting.new + m.parent=parent + m.calentry=Calentry.new + m.calentry.typ=2 + m.calentry.start=start + m.calentry.dauer=4 + m.meetingtyp=typ + m + end + def self.new_divid_for(parent) + "meeting_new_parent_" + parent.class.to_s + "_" + parent.id.to_s + end + def divid + "meeting_"+self.id.to_s + end + + def update_time_from_protocol + st= /Beginn[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s + st= /Anfang[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s if st.empty? + self.calentry.start=(self.calentry.start.to_date.to_s + " " +st).to_datetime unless st.empty? + st= /Ende[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s + self.calentry.ende=(self.calentry.ende.to_date.to_s + " " +st).to_datetime unless st.empty? + end + def agenda_text + unless self.agenda.nil? + t= self.agenda.text + else + t= "" + end + t + end + def protocol_text + unless self.protocol.nil? + t= self.protocol.text + else + t= "" + end + t +end + + searchable do + text :text + text :name, :boost=>4.0 + + text :meetingtyp do + meetingtyp.name + end + text :protocol do + self.protocol_text + end + + text :agenda do + self.agenda_text + end + end + + +end diff --git a/app/models/meetingtyp.rb b/app/models/meetingtyp.rb new file mode 100644 index 0000000..9a1164a --- /dev/null +++ b/app/models/meetingtyp.rb @@ -0,0 +1,6 @@ +class Meetingtyp < ActiveRecord::Base + attr_accessible :agendaintern, :desc, :name, :protocolintern + belongs_to :rubrik + validate :rubrik, :presence=>true + +end diff --git a/app/models/neuigkeit.rb b/app/models/neuigkeit.rb index c23be25..daab01e 100755 --- a/app/models/neuigkeit.rb +++ b/app/models/neuigkeit.rb @@ -23,7 +23,7 @@ class Neuigkeit < ActiveRecord::Base has_many :calentries, as: :object has_many :nlinks - + has_one :meeting mount_uploader :picture, PictureUploader default_scope order(:datum).reverse_order @@ -38,7 +38,9 @@ class Neuigkeit < ActiveRecord::Base before_validation :sanitize - + def is_annoncement? + self.meeting.nil? + end def self.published where("datum <= ? AND datum IS NOT NULL", Time.now.to_date) end diff --git a/app/models/rubrik.rb b/app/models/rubrik.rb index 8d862fb..027156d 100755 --- a/app/models/rubrik.rb +++ b/app/models/rubrik.rb @@ -16,6 +16,7 @@ class Rubrik < ActiveRecord::Base has_many :published, :class_name => "Neuigkeit", :conditions=>["Neuigkeit.published"] has_many :calentries, :through => :neuigkeiten, :as=>:object resourcify + has_many :meetingtyps has_one :calendar validates :calendar , :presence=>true before_validation :sanitize diff --git a/app/models/studium.rb b/app/models/studium.rb index ceb73c6..a701f6a 100755 --- a/app/models/studium.rb +++ b/app/models/studium.rb @@ -29,7 +29,7 @@ class Studium < ActiveRecord::Base attr_accessible :desc, :name,:abkuerzung, :typ, :zahl, :semester, :picture, :picture_cache, :qualifikation,:struktur, :jobmoeglichkeiten, :lvas_attributes has_many :modulgruppen, inverse_of: :studium, :class_name => "Modulgruppe", :dependent => :destroy - scope :search, ->(query) {where("name like ? or studien.desc like ?", "%#{query}%", "%#{query}%")} +# 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 diff --git a/app/models/thema.rb b/app/models/thema.rb index 6635dd8..c993349 100644 --- a/app/models/thema.rb +++ b/app/models/thema.rb @@ -21,24 +21,24 @@ include Rails.application.routes.url_helpers validates :themengruppe, :presence => true validates :title, :presence => true validates :text, :presence => true + has_many :meetings, :as=>:parent + has_many :documents, :as=>:parent scope :public, where(:isdraft=>false).includes(:themengruppe).where("themengruppen.public"=>true) default_scope order("themen.priority").reverse_order - # scope :search, ->(query) {where("themen.text like ? or themen.title like ?", "%#{query}%", "%#{query}%")} - searchable do + # scope :search, ->(query) {where("themen.text like ? or themen.title like ?", "%#{query}%", "%#{query}%")} + searchable do text :text text :title, :boost=>4.0 end - - -scope :outdated, -> {includes(:translations).where("thema_translations.updated_atI18n.t.locale) -} + scope :outdated, -> {includes(:translations).where("thema_translations.updated_atI18n.t.locale) + } translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true def is_outdated? - unless translation.try(:updated_at).nil? - translation.updated_at < 2.month.ago - else - false - end + unless translation.try(:updated_at).nil? + translation.updated_at < 2.month.ago + else + false + end end def text_first_words @@ -48,16 +48,13 @@ scope :outdated, -> {includes(:translations).where("thema_translations.updated_a "...." else words[0..100].join(" ")+ " ..." unless words.nil? - end end - + def fix_links(host) - full_url= URI.parse(root_url(:host=>host)) + full_url= URI.parse(root_url(:host=>host)) self.text.gsub!(/src="[\.\/]*uploads\/attachment\/datei\/(\d+)\/thumb_big[^"]*"/){|s| full_url.path=Attachment.find($1.to_i).datei.thumb_big.url; 'src="'+full_url.to_s+'"'} self.text.gsub!(/src="[\.\/^"]*uploads\/attachment\/datei\/(\d+)\/[^"]*"/){|s| full_url.path=Attachment.find($1.to_i).datei.url; 'src="'+full_url.to_s+'"'} - self.text.gsub!(/href="[^"]*themen\/(\d+)[^"]*"/){|s| full_url.path=thema_path(Thema.find($1.to_i)); 'href="'+full_url.to_s+'"'} - end end diff --git a/app/views/attachments/_attachment.html.erb b/app/views/attachments/_attachment.html.erb index 0045f70..2b45971 100644 --- a/app/views/attachments/_attachment.html.erb +++ b/app/views/attachments/_attachment.html.erb @@ -1,4 +1,4 @@ - <% data_ext = attachment.datei.file.extension.downcase %> + <% data_ext = attachment.datei.file.try(:extension).try(:downcase) %> <% if (!["jpg","png","jpeg"].find_index(data_ext).nil?) %> diff --git a/app/views/calentries/_nested_fields.html.erb b/app/views/calentries/_nested_fields.html.erb index 6f1f97d..92d0b55 100644 --- a/app/views/calentries/_nested_fields.html.erb +++ b/app/views/calentries/_nested_fields.html.erb @@ -1,10 +1,15 @@
-
-<%= fa_icon("calendar 2x") %> - +
+
+ <%= fa_icon("calendar 2x") %> +
+
+ <%= f.input :start, :as => :datetimepicker %>
+ <%= f.input :dauer , :as => :string, :append=>"h" %>
+ <% f.input :typ %> +
+
+ <%= f.check_box :_destroy %> + <%= I18n.t 'common.delete' %> +
-
- <%= f.input :start, :as => :datetimepicker %>
- <%= f.input :dauer , :as => :string, :append=>"h" %>
- <% f.input :typ %>
<%= f.check_box :_destroy %> <%= I18n.t 'common.delete' %>
-
diff --git a/app/views/calentries/_nested_form.html.erb b/app/views/calentries/_nested_form.html.erb index 8421935..0add235 100644 --- a/app/views/calentries/_nested_form.html.erb +++ b/app/views/calentries/_nested_form.html.erb @@ -4,10 +4,15 @@ <%= semantic_form_for @calentry, :remote=>true, :html=>{:class=>"inline"} do |f| %> <%= f.input :start, :as => :datetimepicker %> - <%= f.input :dauer , :as => :string, :append=>"h" %> +<% if @calentry.typ==1 %> +<%= f.input :dauer , :as => :string, :append=>"h" %> +<% else %> + <%= f.input :ende, :as => :datetimepicker %> + +<% end %> <%= f.input :object_id , :as => :hidden %> <%= f.input :object_type , :as => :hidden %> -<%= f.input :typ , :as => :hidden %> + <%= f.input :typ , :as => :hidden %> <%= f.action :submit, :as => :input_ %> diff --git a/app/views/documents/_document.html.erb b/app/views/documents/_document.html.erb new file mode 100644 index 0000000..567a483 --- /dev/null +++ b/app/views/documents/_document.html.erb @@ -0,0 +1,9 @@ +
+ <% image_tag("/iconnavy/time.png") %> + + <%= fa_icon("file-text") %> +<%= link_to document.name, document %> + + <%= link_to "edit", edit_document_path(document),:remote=>true if can? :edit, document %> + <%= link_to 'Delete', document, method: :delete, data: { confirm: 'Are you sure?' } , remote: true if can? :delete, document %> +
diff --git a/app/views/documents/_form.html.erb b/app/views/documents/_form.html.erb new file mode 100644 index 0000000..1c2094d --- /dev/null +++ b/app/views/documents/_form.html.erb @@ -0,0 +1,7 @@ +<%= semantic_form_for @document, :html=>{:class=>""} do |f| %> + <%= f.input :text, :as=>:tinymce_text %> +<%= f.action :submit, :as => :input_ %> + +<% end %> +<%= tinymce %> + diff --git a/app/views/documents/_nested_form.html.erb b/app/views/documents/_nested_form.html.erb new file mode 100644 index 0000000..4390d36 --- /dev/null +++ b/app/views/documents/_nested_form.html.erb @@ -0,0 +1,13 @@ +<%= fa_icon("calendar 2x") %> +

<%= notice %>

+ +<%= semantic_form_for @document, :remote=>true, :html=>{:class=>""} do |f| %> + + <%= f.input :name %> + +<%= f.input :parent_id, :as=>:hidden %> +<%= f.input :parent_type, :as=>:hidden %> + + <%= f.action :submit, :as => :input_ %> + +<% end %> diff --git a/app/views/documents/create.js.erb b/app/views/documents/create.js.erb new file mode 100644 index 0000000..97b82dc --- /dev/null +++ b/app/views/documents/create.js.erb @@ -0,0 +1 @@ +$("#<%= Document.new_divid_for(@parent) %>").replaceWith("
\">
<%=escape_javascript( render :partial=>"document", :object=>@document)%>"); diff --git a/app/views/documents/destroy.js.erb b/app/views/documents/destroy.js.erb new file mode 100644 index 0000000..41b315b --- /dev/null +++ b/app/views/documents/destroy.js.erb @@ -0,0 +1 @@ +$("#document_<%= @document_id %>").remove(); diff --git a/app/views/documents/edit.js.erb b/app/views/documents/edit.js.erb new file mode 100644 index 0000000..98d6389 --- /dev/null +++ b/app/views/documents/edit.js.erb @@ -0,0 +1,7 @@ + +$("#<%= @document.divid %>").html("<%=escape_javascript( render :partial=>"nested_form" ,:object=>@document)%>"); + + + + + \ No newline at end of file diff --git a/app/views/documents/new.js.erb b/app/views/documents/new.js.erb new file mode 100644 index 0000000..1cf1117 --- /dev/null +++ b/app/views/documents/new.js.erb @@ -0,0 +1,5 @@ + +$("#<%= Document.new_divid_for(@parent) %>").replaceWith("
\"><%=escape_javascript( render :partial=>"nested_form" ,:object=>@document) %>
"); + + + \ No newline at end of file diff --git a/app/views/documents/show.html.erb b/app/views/documents/show.html.erb new file mode 100644 index 0000000..8939bf0 --- /dev/null +++ b/app/views/documents/show.html.erb @@ -0,0 +1,9 @@ +
  • <%= link_to "Back to parent" , @document.parent %>
  • +
  • <%= link_to ff_icon("icon-pencil") + "Edit", write_document_path(@document) %>
  • +
  • <%= link_to ff_icon("icon-refresh")+"Refresh from Etherpad", read_from_etherpad_document_path(@document) if @document.is_etherpad? %>
  • +
  • <%= link_to "Copy Document to Etherpad", dump_to_etherpad_document_path(@document) , confirm: "Sicher? Löscht alle Änderungen im Etherpad"%>
  • +

    <%= @document.name %>

    +
    +<%= raw(@document.text) %> +
    + diff --git a/app/views/documents/update.js.erb b/app/views/documents/update.js.erb new file mode 100644 index 0000000..f5986eb --- /dev/null +++ b/app/views/documents/update.js.erb @@ -0,0 +1 @@ +$("#document_<%= @document.id %>").replaceWith("<%=escape_javascript( render :partial=>"document", :object=>@document)%>"); diff --git a/app/views/documents/write.html.erb b/app/views/documents/write.html.erb new file mode 100755 index 0000000..e3ab18b --- /dev/null +++ b/app/views/documents/write.html.erb @@ -0,0 +1,6 @@ +

    Editing Dokument

    + +<%= render 'form' %> + +<%= link_to 'Show', @document %> | + diff --git a/app/views/documents/write_etherpad.html.erb b/app/views/documents/write_etherpad.html.erb new file mode 100644 index 0000000..3c33eb4 --- /dev/null +++ b/app/views/documents/write_etherpad.html.erb @@ -0,0 +1 @@ +<%= link_to "weiter" , "http://www.fet.at/etherpad/p/"+@document.ep_pad.id , target: :blank %> diff --git a/app/views/fragen/_form.html.erb b/app/views/fragen/_form.html.erb index 07f8b7d..dc4ef15 100644 --- a/app/views/fragen/_form.html.erb +++ b/app/views/fragen/_form.html.erb @@ -1,7 +1,7 @@ <%= tinymce_assets %> <%= semantic_form_for @frage do |f| %> <%= f.inputs do %> - <%= f.input :title %> + <%= f.input :title , :as=>:text %> <%= f.input :thema %> <%= f.input :text, :as=>:tinymce_text%> <% end %> diff --git a/app/views/fragen/_rform.html.erb b/app/views/fragen/_rform.html.erb index b772066..db2efe0 100644 --- a/app/views/fragen/_rform.html.erb +++ b/app/views/fragen/_rform.html.erb @@ -1,7 +1,7 @@ <%= tinymce_assets %> <%= semantic_form_for @frage , :remote=>true do |f| %> <%= f.inputs do %> - <%= f.input :title %> + <%= f.input :title, :as=>:text %> <%= f.input :thema %> <%= f.input :text, :as=>:tinymce_text%> <% end %> diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index 18c0747..da51049 100755 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -1,5 +1,6 @@
    -

    <%= I18n.t('home.willkommen') %>

    +

    <%= I18n.t('home.willkommen') %>

    +<%= render partial: "themen/small", object: @starttopic %>
    diff --git a/app/views/home/kontakt.html.erb b/app/views/home/kontakt.html.erb index 68ff483..764a481 100644 --- a/app/views/home/kontakt.html.erb +++ b/app/views/home/kontakt.html.erb @@ -3,8 +3,5 @@ <% @themen.each do |th| %> <%= render partial: "themen/small", object: th %> <% end %> - - -
    diff --git a/app/views/layouts/_login.html.erb b/app/views/layouts/_login.html.erb index 7a65018..133ed37 100644 --- a/app/views/layouts/_login.html.erb +++ b/app/views/layouts/_login.html.erb @@ -1,9 +1,17 @@ <% if user_signed_in? %> -
  • Logged in as : <%= current_user.email %> - <%= link_to('Logout', destroy_user_session_path, :method => :delete) %> -
  • - <% else %> -
  • - <%= link_to('Login', new_user_session_path) %> -
  • - <% end %> + +<% else %> +
  • + <%= link_to('Login', new_user_session_path) %> +
  • +<% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index b6c22ee..1318273 100755 Binary files a/app/views/layouts/application.html.erb and b/app/views/layouts/application.html.erb differ diff --git a/app/views/layouts/menu.html.erb b/app/views/layouts/menu.html.erb index 04b795c..9a6d97c 100644 --- a/app/views/layouts/menu.html.erb +++ b/app/views/layouts/menu.html.erb @@ -35,15 +35,18 @@ - + <%= render 'layouts/login' %> + + - +
    +
    diff --git a/app/views/meetings/_meeting.html.erb b/app/views/meetings/_meeting.html.erb new file mode 100644 index 0000000..9298e28 --- /dev/null +++ b/app/views/meetings/_meeting.html.erb @@ -0,0 +1,15 @@ +
    + +<%= link_to meeting.text, meeting %> +<%= link_to "Ankündigung", rubrik_neuigkeit_path(meeting.neuigkeit.rubrik, meeting.neuigkeit) unless meeting.neuigkeit.nil? %> +<%= link_to "ankündigen", announce_meeting_path(meeting), remote: true if meeting.neuigkeit.nil? %> +<%= link_to "edit", edit_meeting_path(meeting), remote: true %> +<%= link_to 'Delete', meeting, method: :delete, data: { confirm: 'Are you sure?' } , remote: true if can? :delete, meeting %> +<%= render meeting.calentry unless meeting.calentry.nil? %> +<%= link_to "Agenda" , create_agenda_meeting_path(meeting), :remote=>true if meeting.agenda.nil? %> +<%= link_to "Protokoll" , create_protocol_meeting_path(meeting),:remote=>true if meeting.protocol.nil? %> +<%= render meeting.agenda unless meeting.agenda.nil? %> +<%= render meeting.protocol unless meeting.protocol.nil? %> +
    + + diff --git a/app/views/meetings/_meeting_list.html.erb b/app/views/meetings/_meeting_list.html.erb new file mode 100644 index 0000000..1d17303 --- /dev/null +++ b/app/views/meetings/_meeting_list.html.erb @@ -0,0 +1,7 @@ +
    +<% unless meeting_list.empty? %> +<% meeting_list.each do |m| %> +<%= render m %> +<% end%> +<% end%> +
    diff --git a/app/views/meetings/_nested_form.html.erb b/app/views/meetings/_nested_form.html.erb new file mode 100644 index 0000000..db36946 --- /dev/null +++ b/app/views/meetings/_nested_form.html.erb @@ -0,0 +1,23 @@ +<%= fa_icon("calendar 2x") %> +

    <%= notice %>

    + +<%= semantic_form_for @meeting, :remote=>true, :html=>{:class=>""} do |f| %> + + <%= f.input :name %> + <%= f.input :meetingtyp %> + + <%= f.semantic_fields_for :calentry, @meeting.calentry do |ff| %> + <%= ff.input :start, :as => :datetimepicker %> + <%= ff.input :ende, :as => :datetimepicker %> + <%= ff.input :typ %> + <% ff.input :object_id, :as=>:hidden %> + <% ff.input :object_type %> + + <% end %> + +<%= f.input :parent_id, :as=>:hidden %> +<%= f.input :parent_type, :as=>:hidden %> + <%= f.action :submit, :as => :input_ %> + +<% end %> +<%= @meeting.calentry.to_yaml %> diff --git a/app/views/meetings/create.js.erb b/app/views/meetings/create.js.erb new file mode 100644 index 0000000..6e6be25 --- /dev/null +++ b/app/views/meetings/create.js.erb @@ -0,0 +1 @@ +$("#<%= Meeting.new_divid_for(@parent) %>").replaceWith("
    \">
    <%=escape_javascript( render :partial=>"meeting", :object=>@meeting)%>"); diff --git a/app/views/meetings/destroy.js.erb b/app/views/meetings/destroy.js.erb new file mode 100644 index 0000000..363a5a5 --- /dev/null +++ b/app/views/meetings/destroy.js.erb @@ -0,0 +1 @@ +$("#meeting_<%= @meeting_id %>").remove(); diff --git a/app/views/meetings/edit.js.erb b/app/views/meetings/edit.js.erb new file mode 100644 index 0000000..773307c --- /dev/null +++ b/app/views/meetings/edit.js.erb @@ -0,0 +1,5 @@ +$("#<%= @meeting.divid %>").html("<%=escape_javascript( render :partial=>"nested_form" ,:object=>@meeting)%>"); + + + + \ No newline at end of file diff --git a/app/views/meetings/index.js.erb b/app/views/meetings/index.js.erb new file mode 100644 index 0000000..91b9cd3 --- /dev/null +++ b/app/views/meetings/index.js.erb @@ -0,0 +1 @@ +$("#meetings_for_<%= @parent.class.to_s %>_<%= @parent.id.to_s %>").replaceWith("<%=escape_javascript( render :partial=>"meetings/meeting_list", object: @meetings, locals: {parent: @parent} ) %>"); diff --git a/app/views/meetings/new.js.erb b/app/views/meetings/new.js.erb new file mode 100644 index 0000000..a580664 --- /dev/null +++ b/app/views/meetings/new.js.erb @@ -0,0 +1,3 @@ +$("#<%= Meeting.new_divid_for(@parent) %>").replaceWith("
    \"><%=escape_javascript( render :partial=>"nested_form" ,:object=>@meeting) %>
    "); + + \ No newline at end of file diff --git a/app/views/meetings/show.js.erb b/app/views/meetings/show.js.erb new file mode 100644 index 0000000..24d02dc --- /dev/null +++ b/app/views/meetings/show.js.erb @@ -0,0 +1 @@ +$("#meeting_<%= @meeting.id %>").replaceWith("<%=escape_javascript( render :partial=>"meeting", :object=>@meeting)%>"); diff --git a/app/views/meetings/update.js.erb b/app/views/meetings/update.js.erb new file mode 100644 index 0000000..24d02dc --- /dev/null +++ b/app/views/meetings/update.js.erb @@ -0,0 +1 @@ +$("#meeting_<%= @meeting.id %>").replaceWith("<%=escape_javascript( render :partial=>"meeting", :object=>@meeting)%>"); diff --git a/app/views/neuigkeiten/_nlink_list_search_whole.html.erb b/app/views/neuigkeiten/_nlink_list_search_whole.html.erb index f2aefa1..fa9e393 100644 --- a/app/views/neuigkeiten/_nlink_list_search_whole.html.erb +++ b/app/views/neuigkeiten/_nlink_list_search_whole.html.erb @@ -1,5 +1,19 @@ diff --git a/app/views/neuigkeiten/show.html.erb b/app/views/neuigkeiten/show.html.erb index 62afa66..8e33317 100755 --- a/app/views/neuigkeiten/show.html.erb +++ b/app/views/neuigkeiten/show.html.erb @@ -50,6 +50,9 @@ end <%= render ce unless ce.nil? %> <% end %> +<% unless @neuigkeit.meeting.nil? %> +<%= render @neuigkeit.meeting %> +<% end%>
    <%= link_to "new Calentry", new_calentry_path(:object_id=>@neuigkeit.id, :object_type=>"Neuigkeit"), :remote=>true if can? :edit, @neuigkeit %>
    <%= render 'layouts/pretty_toolbar', :object=> @toolbar_elements %> diff --git a/app/views/rubriken/show.html.erb b/app/views/rubriken/show.html.erb index a74232b..c3b567b 100755 --- a/app/views/rubriken/show.html.erb +++ b/app/views/rubriken/show.html.erb @@ -1,4 +1,6 @@ <%= content_for :header do %> + + Fetsite - <%= @rubrik.name %> <% set_meta_tags :og => { :title => @rubrik.name.to_s, @@ -8,7 +10,9 @@ <%= display_meta_tags %> <% end %> + <%= render 'tabs' %> +<%= render 'layouts/pretty_toolbar', :object=> @toolbar_elements %>

    <%= notice %>

    @@ -52,7 +56,6 @@

    -<%= render 'layouts/pretty_toolbar', :object=> @toolbar_elements %>
    diff --git a/app/views/themen/_documents.html.erb b/app/views/themen/_documents.html.erb new file mode 100644 index 0000000..6183c01 --- /dev/null +++ b/app/views/themen/_documents.html.erb @@ -0,0 +1,16 @@ + +<% if can?(:edit,@thema)|| ! @thema.documents.empty? %> + +Dokumente +<%= link_to "Neues Dokument", new_document_path(:parent_id=>@thema.id, :parent_type=>"Thema"), :remote=>true %> +
    + +<% unless @documents.empty? %> + +<% @documents.each do |d| %> +<%= render d %> + +<% end%> +<% end%> +<% end%> + diff --git a/app/views/themen/_small.html.erb b/app/views/themen/_small.html.erb index cc9ad4a..af1d9ed 100644 --- a/app/views/themen/_small.html.erb +++ b/app/views/themen/_small.html.erb @@ -8,8 +8,8 @@ <% if small.isdraft %>
    <%= I18n.t("thema.isdraft") %>
    -<% end %> -<%= raw(small.text) %> +<% end %>
    +<%= raw(small.text) %>

    <%= raw("FAQs:") unless small.fragen.empty? %> @@ -20,6 +20,37 @@ <%= raw(frage.text) %>

    <% end %> + + +<% if can?(:edit,small) || !small.meetings.empty? %> +Treffen/Sitzungen +<%= link_to "Neues Meeting", new_meeting_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %> +
    +<%= link_to "All", meetings_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %> +<%= link_to "upcomming", meetings_path(:parent_id=>small.id, :parent_type=>"Thema",:filter=>"upcomming"), :remote=>true %> +<%= render :partial=>"meetings/meeting_list", object: small.meetings, locals: {parent: small} %> +<% end %> + + +<% if can?(:edit,small)|| ! small.documents.empty? %> + +Dokumente +<%= link_to "Neues Dokument", new_document_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %> +
    + +<% unless small.documents.empty? %> + +<% small.documents.each do |d| %> +<%= render d %> + +<% end%> +<% end%> +<% end%> + + + + + <% unless small.hideattachment %> <%= render partial: "themen/attachment_list", object: small.attachments, locals:{editor: false} unless small.attachments.empty? %> <% end %> diff --git a/app/views/themen/_verw_liste.html.erb b/app/views/themen/_verw_liste.html.erb index 920fef3..12713b2 100644 --- a/app/views/themen/_verw_liste.html.erb +++ b/app/views/themen/_verw_liste.html.erb @@ -9,6 +9,9 @@
  • <%= link_to sanitize_thema_path(thema),:remote=>true do %> <%= ff_icon('icon-leaf') %> Sanitize <% end %>
  • <%= link_to fragen_thema_path(thema),:remote=>true do %> Fragen <% end %>
  • +
  • <%= link_to documents_thema_path(thema),:remote=>true do %> Fragen <% end %>
  • +
  • <%= link_to meetings_thema_path(thema),:remote=>true do %> Fragen <% end %>
  • +
  • <%= link_to attachments_thema_path(thema),:remote=>true do %> Attachments <% end %>
  • diff --git a/app/views/themen/documents.js.erb b/app/views/themen/documents.js.erb new file mode 100644 index 0000000..3174d9a --- /dev/null +++ b/app/views/themen/documents.js.erb @@ -0,0 +1 @@ +$("#themaview").html("<%=escape_javascript( render :partial=>'themen/documents' )%>") \ No newline at end of file diff --git a/app/views/themes/blue1/home/index.html.erb b/app/views/themes/blue1/home/index.html.erb index e38d309..e6e922c 100644 --- a/app/views/themes/blue1/home/index.html.erb +++ b/app/views/themes/blue1/home/index.html.erb @@ -1,5 +1,8 @@
    -

    <%= I18n.t('home.willkommen') %>

    +

    <%= I18n.t('home.willkommen') %>

    +<%= raw(@starttopic.text) %> + +
    diff --git a/config/routes.rb b/config/routes.rb index a7c5835..713df3d 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -156,13 +156,34 @@ Fetsite::Application.routes.draw do get :verwalten get :sanitize get :is_updated + get :documents + get :meetings end resources :attachments end - + resources :calendars get 'verwalten/calendars', :controller=>:calendars, :action=>:verwalten, :as=>'calendars_verwalten' resources :calentries + resources :documents do + member do + get :write + get :write_etherpad + get :read_from_etherpad + get :dump_to_etherpad + end + end + resources :meetings do + member do + get :announce + get :create_protocol + get :create_agenda + end + + end + + + resources :meetingtyps end end root :to => 'home#index' diff --git a/db/migrate/20141119200355_create_documents.rb b/db/migrate/20141119200355_create_documents.rb new file mode 100644 index 0000000..027c7e9 --- /dev/null +++ b/db/migrate/20141119200355_create_documents.rb @@ -0,0 +1,15 @@ +class CreateDocuments < ActiveRecord::Migration + def change + create_table :documents do |t| + t.integer :typ, :default=>0 + t.string :name + t.text :text + t.string :etherpadkey, :default=>"" + t.references :parent,:polymorphic=>{:default=>'Thema'} + t.timestamps + end + add_index :documents, :parent_id + add_index :documents, :parent_type + + end +end diff --git a/db/migrate/20141126115125_create_meetingtyps.rb b/db/migrate/20141126115125_create_meetingtyps.rb new file mode 100644 index 0000000..02f1111 --- /dev/null +++ b/db/migrate/20141126115125_create_meetingtyps.rb @@ -0,0 +1,11 @@ +class CreateMeetingtyps < ActiveRecord::Migration + def change + create_table :meetingtyps do |t| + t.string :name + t.text :desc + t.boolean :agendaintern, :default=>false + t.boolean :protocolintern, :default=>true + t.timestamps + end + end +end diff --git a/db/migrate/20141126120610_create_meetings.rb b/db/migrate/20141126120610_create_meetings.rb new file mode 100644 index 0000000..8c23b80 --- /dev/null +++ b/db/migrate/20141126120610_create_meetings.rb @@ -0,0 +1,15 @@ +class CreateMeetings < ActiveRecord::Migration + def change + create_table :meetings do |t| + t.string :name + t.text :desc + t.boolean :intern, :default=>true + t.references :parent, :polymorphic=>{:default=>'Thema'} + t.references :meetingtyp + t.timestamps + end + add_index :meetings, :parent_id + add_index :meetings, :parent_type + add_index :meetings, :meetingtyp_id + end +end diff --git a/db/migrate/20141214132815_add_neuigkeit_to_meeting.rb b/db/migrate/20141214132815_add_neuigkeit_to_meeting.rb new file mode 100644 index 0000000..5dddd43 --- /dev/null +++ b/db/migrate/20141214132815_add_neuigkeit_to_meeting.rb @@ -0,0 +1,6 @@ +class AddNeuigkeitToMeeting < ActiveRecord::Migration + def change + add_column :meetings, :neuigkeit_id, :integer + add_column :meetingtyps, :rubrik_id, :integer + end +end diff --git a/spec/controllers/meetings_controller_spec.rb b/spec/controllers/meetings_controller_spec.rb new file mode 100644 index 0000000..7a4bfca --- /dev/null +++ b/spec/controllers/meetings_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe MeetingsController, :type => :controller do + +end diff --git a/spec/controllers/meetingtyps_controller_spec.rb b/spec/controllers/meetingtyps_controller_spec.rb new file mode 100644 index 0000000..4c5b03c --- /dev/null +++ b/spec/controllers/meetingtyps_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe MeetingtypsController, :type => :controller do + +end diff --git a/spec/factories/documents.rb b/spec/factories/documents.rb new file mode 100644 index 0000000..e7d4a9c --- /dev/null +++ b/spec/factories/documents.rb @@ -0,0 +1,10 @@ +FactoryGirl.define do + factory :document do + typ 1 +name "MyString" +text "MyText" +etherpadkey "MyString" +parent "" + end + +end diff --git a/spec/factories/meetings.rb b/spec/factories/meetings.rb new file mode 100644 index 0000000..8e0726f --- /dev/null +++ b/spec/factories/meetings.rb @@ -0,0 +1,10 @@ +FactoryGirl.define do + factory :meeting do + name "MyString" +desc "MyText" +parent nil +intern false +meetingtyp nil + end + +end diff --git a/spec/factories/meetingtyps.rb b/spec/factories/meetingtyps.rb new file mode 100644 index 0000000..6538467 --- /dev/null +++ b/spec/factories/meetingtyps.rb @@ -0,0 +1,9 @@ +FactoryGirl.define do + factory :meetingtyp do + name "MyString" +desc "MyText" +agendaintern false +protocolintern false + end + +end diff --git a/spec/helpers/meetings_helper_spec.rb b/spec/helpers/meetings_helper_spec.rb new file mode 100644 index 0000000..3276f26 --- /dev/null +++ b/spec/helpers/meetings_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the MeetingsHelper. For example: +# +# describe MeetingsHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe MeetingsHelper, :type => :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/helpers/meetingtyps_helper_spec.rb b/spec/helpers/meetingtyps_helper_spec.rb new file mode 100644 index 0000000..34541e2 --- /dev/null +++ b/spec/helpers/meetingtyps_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the MeetingtypsHelper. For example: +# +# describe MeetingtypsHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe MeetingtypsHelper, :type => :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/document_spec.rb b/spec/models/document_spec.rb new file mode 100644 index 0000000..d39f418 --- /dev/null +++ b/spec/models/document_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Document, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/meeting_spec.rb b/spec/models/meeting_spec.rb new file mode 100644 index 0000000..93d55f7 --- /dev/null +++ b/spec/models/meeting_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Meeting, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/meetingtyp_spec.rb b/spec/models/meetingtyp_spec.rb new file mode 100644 index 0000000..c55d7c0 --- /dev/null +++ b/spec/models/meetingtyp_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Meetingtyp, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end