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 index bfff993..07b59cf 100644 --- a/app/controllers/documents_controller.rb +++ b/app/controllers/documents_controller.rb @@ -57,7 +57,7 @@ def update logger.info("-------------delete------------------") @document = Document.find(params[:id]) @document_id = params[:id] - @object=@document.object + @document.destroy respond_to do |format| diff --git a/app/controllers/meetings_controller.rb b/app/controllers/meetings_controller.rb new file mode 100644 index 0000000..1592388 --- /dev/null +++ b/app/controllers/meetings_controller.rb @@ -0,0 +1,92 @@ +class MeetingsController < ApplicationController + + + + load_and_authorize_resource + def index + respond_to do |format| + format.html {redirect_to rubriken_path} + end + end + def new + @meeting=Meeting.new + @meeting.parent=params[:parent_typ].constantize.find(params[:parent_id]) + @meeting.typ = 1 + 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]) + respond_to do |format| + format.js + end + + end + + def create + @meeting = Meeting.new(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]) + + 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 { render action: "edit" } + # 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]) + @meeting_id = params[:id] + @object=@meeting.object + @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/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 1cc4986..ef57a19 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -116,7 +116,12 @@ class Ability cannot :delete, Neuigkeit end - + # Calendar + if( user.has_role?("fetuser") || user.has_role?("fetadmin")) + can :manage, Document + can :manage, Meeting + can :manage, Meetingtyp + end # Rechteverwaltung Kalender diff --git a/app/models/document.rb b/app/models/document.rb index e7fa2f7..f0fa762 100644 --- a/app/models/document.rb +++ b/app/models/document.rb @@ -1,3 +1,9 @@ class Document < ActiveRecord::Base attr_accessible :etherpadkey, :name, :parent, :text, :typ + belongs_to :parent, :polymorphic => true + validate :name, :length=>{minimum:3} + validate :text, :presence=>true + validate :typ, :presence=>true + validate :parent, :presence=>true + end diff --git a/app/models/meeting.rb b/app/models/meeting.rb new file mode 100644 index 0000000..ccab3c0 --- /dev/null +++ b/app/models/meeting.rb @@ -0,0 +1,32 @@ +class Meeting < ActiveRecord::Base + belongs_to :parent, :polymorphic=>true + belongs_to :meetingtyp + attr_accessible :desc, :intern, :name + has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent + has_one :agenda , :as=>:parent,:conditions=>{:typ=>11}, :class_name=>'Document' + validate :agenda, :presence=>true + validate :protocol, :presence=>true + has_one :calentry, :as=>:object + 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_agenda + if self.agenda.nil? + d=Document.new + d.typ=11 + d.name="Agenda" + d.save + self.agenda=d + end + end +end diff --git a/app/models/meetingtyp.rb b/app/models/meetingtyp.rb new file mode 100644 index 0000000..f610170 --- /dev/null +++ b/app/models/meetingtyp.rb @@ -0,0 +1,3 @@ +class Meetingtyp < ActiveRecord::Base + attr_accessible :agendaintern, :desc, :name, :protocolintern +end diff --git a/app/models/thema.rb b/app/models/thema.rb index 997b88c..ade616e 100644 --- a/app/models/thema.rb +++ b/app/models/thema.rb @@ -21,6 +21,8 @@ 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}%")} 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/documents/_document.html.erb b/app/views/documents/_document.html.erb index d76b082..c92c245 100644 --- a/app/views/documents/_document.html.erb +++ b/app/views/documents/_document.html.erb @@ -1,8 +1,8 @@
<%= notice %>
-<%= semantic_form_for @calentry, :remote=>true, :html=>{:class=>"inline"} do |f| %> +<%= semantic_form_for @document, :remote=>true, :html=>{:class=>""} do |f| %> - <%= f.input :start, :as => :datetimepicker %> - <%= f.input :dauer , :as => :string, :append=>"h" %> - <%= f.input :object_id , :as => :hidden %> - <%= f.input :object_type , :as => :hidden %> -<%= f.input :typ , :as => :hidden %> - - - <%= f.action :submit, :as => :input_ %> + <%= f.input :name %> + <%= f.action :submit, :as => :input_ %> <% end %> diff --git a/app/views/meetings/_meeting.html.erb b/app/views/meetings/_meeting.html.erb new file mode 100644 index 0000000..93d6943 --- /dev/null +++ b/app/views/meetings/_meeting.html.erb @@ -0,0 +1,8 @@ +