From 65cb4001267c14919de431b67e0c771b7d78ee03 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Thu, 20 Nov 2014 11:40:49 +0100
Subject: [PATCH 01/14] documents
---
app/controllers/documents_controller.rb | 71 +++++++++++++++++++
app/models/document.rb | 3 +
app/views/documents/_document.html.erb | 8 +++
app/views/documents/_nested_form.html.erb | 15 ++++
app/views/documents/destroy.js.erb | 1 +
app/views/documents/edit.js.erb | 6 ++
app/views/documents/new.js.erb | 3 +
app/views/documents/update.js.erb | 1 +
db/migrate/20141119200355_create_documents.rb | 13 ++++
spec/factories/documents.rb | 10 +++
spec/models/document_spec.rb | 5 ++
11 files changed, 136 insertions(+)
create mode 100644 app/controllers/documents_controller.rb
create mode 100644 app/models/document.rb
create mode 100644 app/views/documents/_document.html.erb
create mode 100644 app/views/documents/_nested_form.html.erb
create mode 100644 app/views/documents/destroy.js.erb
create mode 100644 app/views/documents/edit.js.erb
create mode 100644 app/views/documents/new.js.erb
create mode 100644 app/views/documents/update.js.erb
create mode 100644 db/migrate/20141119200355_create_documents.rb
create mode 100644 spec/factories/documents.rb
create mode 100644 spec/models/document_spec.rb
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
new file mode 100644
index 0000000..bfff993
--- /dev/null
+++ b/app/controllers/documents_controller.rb
@@ -0,0 +1,71 @@
+class DocumentsController < ApplicationController
+
+ load_and_authorize_resource
+ def index
+ respond_to do |format|
+ format.html {redirect_to rubriken_path}
+ end
+ end
+ def new
+ @document=Document.new
+ @document.parent=params[:parent_typ].constantize.find(params[:parent_id])
+ @document.typ = 1
+ respond_to do |format|
+ format.js
+ end
+ end
+ def edit
+ @document = Document.find(params[:id])
+ respond_to do |format|
+ format.js
+ end
+
+ end
+
+ def create
+ @document = Document.new(params[:document])
+
+ 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])
+
+ 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])
+ @document_id = params[:id]
+ @object=@document.object
+ @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/models/document.rb b/app/models/document.rb
new file mode 100644
index 0000000..e7fa2f7
--- /dev/null
+++ b/app/models/document.rb
@@ -0,0 +1,3 @@
+class Document < ActiveRecord::Base
+ attr_accessible :etherpadkey, :name, :parent, :text, :typ
+end
diff --git a/app/views/documents/_document.html.erb b/app/views/documents/_document.html.erb
new file mode 100644
index 0000000..d76b082
--- /dev/null
+++ b/app/views/documents/_document.html.erb
@@ -0,0 +1,8 @@
+
+ <% image_tag("/iconnavy/time.png") %>
+ <% fa_icon("calendar 2x") %>
+
+ <%= document.title %>
+ <%= 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/_nested_form.html.erb b/app/views/documents/_nested_form.html.erb
new file mode 100644
index 0000000..8421935
--- /dev/null
+++ b/app/views/documents/_nested_form.html.erb
@@ -0,0 +1,15 @@
+<%= fa_icon("calendar 2x") %>
+<%= notice %>
+
+<%= semantic_form_for @calentry, :remote=>true, :html=>{:class=>"inline"} 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_ %>
+
+<% end %>
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..a63cb2c
--- /dev/null
+++ b/app/views/documents/edit.js.erb
@@ -0,0 +1,6 @@
+
+$("#document_<%= @document.id %>").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..28248bb
--- /dev/null
+++ b/app/views/documents/new.js.erb
@@ -0,0 +1,3 @@
+$("#document_new").replaceWith("<%=escape_javascript( render :partial=>"nested_form" ,:object=>@document) %>
");
+
+
\ No newline at end of file
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/db/migrate/20141119200355_create_documents.rb b/db/migrate/20141119200355_create_documents.rb
new file mode 100644
index 0000000..fc4d30e
--- /dev/null
+++ b/db/migrate/20141119200355_create_documents.rb
@@ -0,0 +1,13 @@
+class CreateDocuments < ActiveRecord::Migration
+ def change
+ create_table :documents do |t|
+ t.integer :typ
+ t.string :name
+ t.text :text
+ t.string :etherpadkey
+ t.references{polymorphic} :parent
+
+ t.timestamps
+ end
+ end
+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/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
From 741a3abb6d2806f35f66368019a9d852ba0e4d69 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Wed, 26 Nov 2014 20:36:04 +0100
Subject: [PATCH 02/14] meetings added, documents added
---
app/assets/javascripts/meetings.js.coffee | 3 +
app/assets/javascripts/meetingtyps.js.coffee | 3 +
app/assets/stylesheets/meetings.css.scss | 3 +
app/assets/stylesheets/meetingtyps.css.scss | 3 +
app/controllers/documents_controller.rb | 2 +-
app/controllers/meetings_controller.rb | 92 +++++++++++++++++++
app/controllers/meetingtyps_controller.rb | 2 +
app/helpers/meetings_helper.rb | 2 +
app/helpers/meetingtyps_helper.rb | 2 +
app/models/ability.rb | 7 +-
app/models/document.rb | 6 ++
app/models/meeting.rb | 32 +++++++
app/models/meetingtyp.rb | 3 +
app/models/thema.rb | 2 +
app/views/attachments/_attachment.html.erb | 2 +-
app/views/documents/_document.html.erb | 4 +-
app/views/documents/_nested_form.html.erb | 12 +--
app/views/meetings/_meeting.html.erb | 8 ++
app/views/meetings/show.js.erb | 1 +
app/views/themen/_small.html.erb | 21 ++++-
config/routes.rb | 10 +-
db/migrate/20141119200355_create_documents.rb | 10 +-
.../20141126115125_create_meetingtyps.rb | 11 +++
db/migrate/20141126120610_create_meetings.rb | 15 +++
spec/controllers/meetings_controller_spec.rb | 5 +
.../meetingtyps_controller_spec.rb | 5 +
spec/factories/meetings.rb | 10 ++
spec/factories/meetingtyps.rb | 9 ++
spec/helpers/meetings_helper_spec.rb | 15 +++
spec/helpers/meetingtyps_helper_spec.rb | 15 +++
spec/models/meeting_spec.rb | 5 +
spec/models/meetingtyp_spec.rb | 5 +
32 files changed, 304 insertions(+), 21 deletions(-)
create mode 100644 app/assets/javascripts/meetings.js.coffee
create mode 100644 app/assets/javascripts/meetingtyps.js.coffee
create mode 100644 app/assets/stylesheets/meetings.css.scss
create mode 100644 app/assets/stylesheets/meetingtyps.css.scss
create mode 100644 app/controllers/meetings_controller.rb
create mode 100644 app/controllers/meetingtyps_controller.rb
create mode 100644 app/helpers/meetings_helper.rb
create mode 100644 app/helpers/meetingtyps_helper.rb
create mode 100644 app/models/meeting.rb
create mode 100644 app/models/meetingtyp.rb
create mode 100644 app/views/meetings/_meeting.html.erb
create mode 100644 app/views/meetings/show.js.erb
create mode 100644 db/migrate/20141126115125_create_meetingtyps.rb
create mode 100644 db/migrate/20141126120610_create_meetings.rb
create mode 100644 spec/controllers/meetings_controller_spec.rb
create mode 100644 spec/controllers/meetingtyps_controller_spec.rb
create mode 100644 spec/factories/meetings.rb
create mode 100644 spec/factories/meetingtyps.rb
create mode 100644 spec/helpers/meetings_helper_spec.rb
create mode 100644 spec/helpers/meetingtyps_helper_spec.rb
create mode 100644 spec/models/meeting_spec.rb
create mode 100644 spec/models/meetingtyp_spec.rb
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 @@
<% image_tag("/iconnavy/time.png") %>
- <% fa_icon("calendar 2x") %>
+ <%= fa_icon("file-text 2x") %>
- <%= document.title %>
+ <%= document.name %>
<%= 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/_nested_form.html.erb b/app/views/documents/_nested_form.html.erb
index 8421935..6e045f3 100644
--- a/app/views/documents/_nested_form.html.erb
+++ b/app/views/documents/_nested_form.html.erb
@@ -1,15 +1,9 @@
<%= fa_icon("calendar 2x") %>
<%= 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 @@
+
+
Meeting: <%= meeting.name %>
+<%= render meeting.calentry %>
+<%= link_to "Agenda" , create_agenda_meeting_path(meeting), :remote=>true %>
+<%= link_to "Protokoll" , create_protocol_meeting_path(meeting),:remote=>true %>
+<%= render meeting.agenda unless meeting.agenda.nil? %>
+<%= render meeting.protocol unless meeting.protocol.nil? %>
+
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/themen/_small.html.erb b/app/views/themen/_small.html.erb
index cc9ad4a..ef43568 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,23 @@
<%= raw(frage.text) %>
<% end %>
+<% unless small.meetings.empty? %>
+Treffen/Sitzungen
+<% small.meetings.each do |m| %>
+<%= render m %>
+
+<% end%>
+<% end%>
+
+
+<% unless small.documents.empty? %>
+Dokumente
+<% small.documents.each do |d| %>
+<%= render d %>
+
+<% end%>
+<% end%>
+
<% unless small.hideattachment %>
<%= render partial: "themen/attachment_list", object: small.attachments, locals:{editor: false} unless small.attachments.empty? %>
<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index a7c5835..e5263fc 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -159,10 +159,18 @@ Fetsite::Application.routes.draw do
end
resources :attachments
end
-
+
resources :calendars
get 'verwalten/calendars', :controller=>:calendars, :action=>:verwalten, :as=>'calendars_verwalten'
resources :calentries
+ resources :documents
+ resources :meetings do
+ member do
+ 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
index fc4d30e..027c7e9 100644
--- a/db/migrate/20141119200355_create_documents.rb
+++ b/db/migrate/20141119200355_create_documents.rb
@@ -1,13 +1,15 @@
class CreateDocuments < ActiveRecord::Migration
def change
create_table :documents do |t|
- t.integer :typ
+ t.integer :typ, :default=>0
t.string :name
t.text :text
- t.string :etherpadkey
- t.references{polymorphic} :parent
-
+ 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/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/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/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
From c2ea1782ff58fe95ff24862b59ca7c8ae8025601 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Thu, 20 Nov 2014 11:40:49 +0100
Subject: [PATCH 03/14] documents
---
app/controllers/documents_controller.rb | 71 +++++++++++++++++++
app/models/document.rb | 3 +
app/views/documents/_document.html.erb | 8 +++
app/views/documents/_nested_form.html.erb | 15 ++++
app/views/documents/destroy.js.erb | 1 +
app/views/documents/edit.js.erb | 6 ++
app/views/documents/new.js.erb | 3 +
app/views/documents/update.js.erb | 1 +
db/migrate/20141119200355_create_documents.rb | 13 ++++
spec/factories/documents.rb | 10 +++
spec/models/document_spec.rb | 5 ++
11 files changed, 136 insertions(+)
create mode 100644 app/controllers/documents_controller.rb
create mode 100644 app/models/document.rb
create mode 100644 app/views/documents/_document.html.erb
create mode 100644 app/views/documents/_nested_form.html.erb
create mode 100644 app/views/documents/destroy.js.erb
create mode 100644 app/views/documents/edit.js.erb
create mode 100644 app/views/documents/new.js.erb
create mode 100644 app/views/documents/update.js.erb
create mode 100644 db/migrate/20141119200355_create_documents.rb
create mode 100644 spec/factories/documents.rb
create mode 100644 spec/models/document_spec.rb
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
new file mode 100644
index 0000000..bfff993
--- /dev/null
+++ b/app/controllers/documents_controller.rb
@@ -0,0 +1,71 @@
+class DocumentsController < ApplicationController
+
+ load_and_authorize_resource
+ def index
+ respond_to do |format|
+ format.html {redirect_to rubriken_path}
+ end
+ end
+ def new
+ @document=Document.new
+ @document.parent=params[:parent_typ].constantize.find(params[:parent_id])
+ @document.typ = 1
+ respond_to do |format|
+ format.js
+ end
+ end
+ def edit
+ @document = Document.find(params[:id])
+ respond_to do |format|
+ format.js
+ end
+
+ end
+
+ def create
+ @document = Document.new(params[:document])
+
+ 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])
+
+ 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])
+ @document_id = params[:id]
+ @object=@document.object
+ @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/models/document.rb b/app/models/document.rb
new file mode 100644
index 0000000..e7fa2f7
--- /dev/null
+++ b/app/models/document.rb
@@ -0,0 +1,3 @@
+class Document < ActiveRecord::Base
+ attr_accessible :etherpadkey, :name, :parent, :text, :typ
+end
diff --git a/app/views/documents/_document.html.erb b/app/views/documents/_document.html.erb
new file mode 100644
index 0000000..d76b082
--- /dev/null
+++ b/app/views/documents/_document.html.erb
@@ -0,0 +1,8 @@
+
+ <% image_tag("/iconnavy/time.png") %>
+ <% fa_icon("calendar 2x") %>
+
+ <%= document.title %>
+ <%= 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/_nested_form.html.erb b/app/views/documents/_nested_form.html.erb
new file mode 100644
index 0000000..8421935
--- /dev/null
+++ b/app/views/documents/_nested_form.html.erb
@@ -0,0 +1,15 @@
+<%= fa_icon("calendar 2x") %>
+<%= notice %>
+
+<%= semantic_form_for @calentry, :remote=>true, :html=>{:class=>"inline"} 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_ %>
+
+<% end %>
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..a63cb2c
--- /dev/null
+++ b/app/views/documents/edit.js.erb
@@ -0,0 +1,6 @@
+
+$("#document_<%= @document.id %>").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..28248bb
--- /dev/null
+++ b/app/views/documents/new.js.erb
@@ -0,0 +1,3 @@
+$("#document_new").replaceWith("<%=escape_javascript( render :partial=>"nested_form" ,:object=>@document) %>
");
+
+
\ No newline at end of file
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/db/migrate/20141119200355_create_documents.rb b/db/migrate/20141119200355_create_documents.rb
new file mode 100644
index 0000000..fc4d30e
--- /dev/null
+++ b/db/migrate/20141119200355_create_documents.rb
@@ -0,0 +1,13 @@
+class CreateDocuments < ActiveRecord::Migration
+ def change
+ create_table :documents do |t|
+ t.integer :typ
+ t.string :name
+ t.text :text
+ t.string :etherpadkey
+ t.references{polymorphic} :parent
+
+ t.timestamps
+ end
+ end
+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/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
From 87dd70ea44a2b0f833375bc010bd9ddf36728dba Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Wed, 26 Nov 2014 20:36:04 +0100
Subject: [PATCH 04/14] meetings added, documents added
---
app/assets/javascripts/meetings.js.coffee | 3 +
app/assets/javascripts/meetingtyps.js.coffee | 3 +
app/assets/stylesheets/meetings.css.scss | 3 +
app/assets/stylesheets/meetingtyps.css.scss | 3 +
app/controllers/documents_controller.rb | 2 +-
app/controllers/meetings_controller.rb | 92 +++++++++++++++++++
app/controllers/meetingtyps_controller.rb | 2 +
app/helpers/meetings_helper.rb | 2 +
app/helpers/meetingtyps_helper.rb | 2 +
app/models/ability.rb | 7 +-
app/models/document.rb | 6 ++
app/models/meeting.rb | 32 +++++++
app/models/meetingtyp.rb | 3 +
app/models/thema.rb | 2 +
app/views/attachments/_attachment.html.erb | 2 +-
app/views/documents/_document.html.erb | 4 +-
app/views/documents/_nested_form.html.erb | 12 +--
app/views/meetings/_meeting.html.erb | 8 ++
app/views/meetings/show.js.erb | 1 +
app/views/themen/_small.html.erb | 21 ++++-
config/routes.rb | 10 +-
db/migrate/20141119200355_create_documents.rb | 10 +-
.../20141126115125_create_meetingtyps.rb | 11 +++
db/migrate/20141126120610_create_meetings.rb | 15 +++
spec/controllers/meetings_controller_spec.rb | 5 +
.../meetingtyps_controller_spec.rb | 5 +
spec/factories/meetings.rb | 10 ++
spec/factories/meetingtyps.rb | 9 ++
spec/helpers/meetings_helper_spec.rb | 15 +++
spec/helpers/meetingtyps_helper_spec.rb | 15 +++
spec/models/meeting_spec.rb | 5 +
spec/models/meetingtyp_spec.rb | 5 +
32 files changed, 304 insertions(+), 21 deletions(-)
create mode 100644 app/assets/javascripts/meetings.js.coffee
create mode 100644 app/assets/javascripts/meetingtyps.js.coffee
create mode 100644 app/assets/stylesheets/meetings.css.scss
create mode 100644 app/assets/stylesheets/meetingtyps.css.scss
create mode 100644 app/controllers/meetings_controller.rb
create mode 100644 app/controllers/meetingtyps_controller.rb
create mode 100644 app/helpers/meetings_helper.rb
create mode 100644 app/helpers/meetingtyps_helper.rb
create mode 100644 app/models/meeting.rb
create mode 100644 app/models/meetingtyp.rb
create mode 100644 app/views/meetings/_meeting.html.erb
create mode 100644 app/views/meetings/show.js.erb
create mode 100644 db/migrate/20141126115125_create_meetingtyps.rb
create mode 100644 db/migrate/20141126120610_create_meetings.rb
create mode 100644 spec/controllers/meetings_controller_spec.rb
create mode 100644 spec/controllers/meetingtyps_controller_spec.rb
create mode 100644 spec/factories/meetings.rb
create mode 100644 spec/factories/meetingtyps.rb
create mode 100644 spec/helpers/meetings_helper_spec.rb
create mode 100644 spec/helpers/meetingtyps_helper_spec.rb
create mode 100644 spec/models/meeting_spec.rb
create mode 100644 spec/models/meetingtyp_spec.rb
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 7d49731..1514bda 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 6635dd8..8dab0a6 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 @@
<% image_tag("/iconnavy/time.png") %>
- <% fa_icon("calendar 2x") %>
+ <%= fa_icon("file-text 2x") %>
- <%= document.title %>
+ <%= document.name %>
<%= 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/_nested_form.html.erb b/app/views/documents/_nested_form.html.erb
index 8421935..6e045f3 100644
--- a/app/views/documents/_nested_form.html.erb
+++ b/app/views/documents/_nested_form.html.erb
@@ -1,15 +1,9 @@
<%= fa_icon("calendar 2x") %>
<%= 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 @@
+
+
Meeting: <%= meeting.name %>
+<%= render meeting.calentry %>
+<%= link_to "Agenda" , create_agenda_meeting_path(meeting), :remote=>true %>
+<%= link_to "Protokoll" , create_protocol_meeting_path(meeting),:remote=>true %>
+<%= render meeting.agenda unless meeting.agenda.nil? %>
+<%= render meeting.protocol unless meeting.protocol.nil? %>
+
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/themen/_small.html.erb b/app/views/themen/_small.html.erb
index cc9ad4a..ef43568 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,23 @@
<%= raw(frage.text) %>
<% end %>
+<% unless small.meetings.empty? %>
+Treffen/Sitzungen
+<% small.meetings.each do |m| %>
+<%= render m %>
+
+<% end%>
+<% end%>
+
+
+<% unless small.documents.empty? %>
+Dokumente
+<% small.documents.each do |d| %>
+<%= render d %>
+
+<% end%>
+<% end%>
+
<% unless small.hideattachment %>
<%= render partial: "themen/attachment_list", object: small.attachments, locals:{editor: false} unless small.attachments.empty? %>
<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index a7c5835..e5263fc 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -159,10 +159,18 @@ Fetsite::Application.routes.draw do
end
resources :attachments
end
-
+
resources :calendars
get 'verwalten/calendars', :controller=>:calendars, :action=>:verwalten, :as=>'calendars_verwalten'
resources :calentries
+ resources :documents
+ resources :meetings do
+ member do
+ 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
index fc4d30e..027c7e9 100644
--- a/db/migrate/20141119200355_create_documents.rb
+++ b/db/migrate/20141119200355_create_documents.rb
@@ -1,13 +1,15 @@
class CreateDocuments < ActiveRecord::Migration
def change
create_table :documents do |t|
- t.integer :typ
+ t.integer :typ, :default=>0
t.string :name
t.text :text
- t.string :etherpadkey
- t.references{polymorphic} :parent
-
+ 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/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/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/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
From b259c1080a57b2d6baf17e2e3b6739b4cab17af4 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Wed, 3 Dec 2014 02:41:54 +0100
Subject: [PATCH 05/14] merge
---
app/models/ability.rb | 15 ++++++---------
app/models/thema.rb | 27 +++++++++++----------------
2 files changed, 17 insertions(+), 25 deletions(-)
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 1514bda..2d6b594 100755
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -114,15 +114,14 @@ 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
-
+ if( user.has_role?("fetuser") || user.has_role?("fetadmin"))
+ can :manage, Document
+ can :manage, Meeting
+ can :manage, Meetingtyp
+ end
+
# Rechteverwaltung Kalender
can [:show, :index], Calendar, :public => true
@@ -130,8 +129,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/thema.rb b/app/models/thema.rb
index 8dab0a6..c993349 100644
--- a/app/models/thema.rb
+++ b/app/models/thema.rb
@@ -25,22 +25,20 @@ include Rails.application.routes.url_helpers
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_at",2.month.ago).where("thema_translations.locale"=>I18n.t.locale)
-}
+ scope :outdated, -> {includes(:translations).where("thema_translations.updated_at",2.month.ago).where("thema_translations.locale"=>I18n.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
@@ -50,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
From ab396c002e8317c3e0f93f4b67e48b8a52a9a909 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Thu, 4 Dec 2014 00:00:57 +0100
Subject: [PATCH 06/14] meeting views
---
app/controllers/documents_controller.rb | 13 ++++++----
app/controllers/meetings_controller.rb | 25 ++++++++++++--------
app/models/document.rb | 9 +++++--
app/models/meeting.rb | 25 ++++++++++++++++----
app/views/calentries/_nested_fields.html.erb | 21 +++++++++-------
app/views/documents/_document.html.erb | 5 ++--
app/views/documents/_nested_form.html.erb | 2 ++
app/views/documents/create.js.erb | 1 +
app/views/documents/edit.html.erb | 6 +++++
app/views/documents/edit.js.erb | 3 +--
app/views/documents/new.js.erb | 2 +-
app/views/documents/show.html.erb | 8 +++++++
app/views/meetings/_meeting.html.erb | 9 ++++---
app/views/meetings/_nested_form.html.erb | 21 ++++++++++++++++
app/views/meetings/create.js.erb | 1 +
app/views/meetings/destroy.js.erb | 1 +
app/views/meetings/edit.js.erb | 5 ++++
app/views/meetings/new.js.erb | 3 +++
app/views/meetings/update.js.erb | 1 +
app/views/themen/_small.html.erb | 5 ++++
20 files changed, 129 insertions(+), 37 deletions(-)
create mode 100644 app/views/documents/create.js.erb
create mode 100755 app/views/documents/edit.html.erb
create mode 100644 app/views/documents/show.html.erb
create mode 100644 app/views/meetings/_nested_form.html.erb
create mode 100644 app/views/meetings/create.js.erb
create mode 100644 app/views/meetings/destroy.js.erb
create mode 100644 app/views/meetings/edit.js.erb
create mode 100644 app/views/meetings/new.js.erb
create mode 100644 app/views/meetings/update.js.erb
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
index 07b59cf..a20db8f 100644
--- a/app/controllers/documents_controller.rb
+++ b/app/controllers/documents_controller.rb
@@ -8,7 +8,10 @@ class DocumentsController < ApplicationController
end
def new
@document=Document.new
- @document.parent=params[:parent_typ].constantize.find(params[:parent_id])
+ @parent=params[:parent_type].constantize.find(params[:parent_id])
+
+ @document.parent=@parent
+
@document.typ = 1
respond_to do |format|
format.js
@@ -16,6 +19,7 @@ class DocumentsController < ApplicationController
end
def edit
@document = Document.find(params[:id])
+ @parent=@document.parent
respond_to do |format|
format.js
end
@@ -24,7 +28,7 @@ class DocumentsController < ApplicationController
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.' }
@@ -38,9 +42,9 @@ class DocumentsController < ApplicationController
end
end
-def update
+ 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.' }
@@ -56,6 +60,7 @@ def update
def destroy
logger.info("-------------delete------------------")
@document = Document.find(params[:id])
+ @parent=@document.parent
@document_id = params[:id]
@document.destroy
diff --git a/app/controllers/meetings_controller.rb b/app/controllers/meetings_controller.rb
index 1592388..247cf4c 100644
--- a/app/controllers/meetings_controller.rb
+++ b/app/controllers/meetings_controller.rb
@@ -10,8 +10,10 @@ class MeetingsController < ApplicationController
end
def new
@meeting=Meeting.new
- @meeting.parent=params[:parent_typ].constantize.find(params[:parent_id])
- @meeting.typ = 1
+ @meeting.parent=params[:parent_type].constantize.find(params[:parent_id])
+ @parent=@meeting.parent
+ @meeting.calentry=Calentry.new
+# @meeting.typ = 1
respond_to do |format|
format.js
end
@@ -35,7 +37,8 @@ class MeetingsController < ApplicationController
end
def edit
@meeting = Meeting.find(params[:id])
- respond_to do |format|
+@parent=@meeting.parent
+respond_to do |format|
format.js
end
@@ -43,7 +46,9 @@ class MeetingsController < ApplicationController
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.' }
@@ -58,25 +63,25 @@ class MeetingsController < ApplicationController
end
def update
- @meeting = Meeting.find(params[:id])
-
+ @meeting = Meeting.find(params[:id])
+ @parent=@meeting.parent
respond_to do |format|
- if @meeting.update_attributes(params[:meeting])
+ 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.html
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
- format.js { render action: "edit"}
+ 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]
- @object=@meeting.object
@meeting.destroy
respond_to do |format|
diff --git a/app/models/document.rb b/app/models/document.rb
index f0fa762..4dd430f 100644
--- a/app/models/document.rb
+++ b/app/models/document.rb
@@ -1,9 +1,14 @@
class Document < ActiveRecord::Base
- attr_accessible :etherpadkey, :name, :parent, :text, :typ
+ attr_accessible :etherpadkey, :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
-
+ 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
end
diff --git a/app/models/meeting.rb b/app/models/meeting.rb
index ccab3c0..f786a81 100644
--- a/app/models/meeting.rb
+++ b/app/models/meeting.rb
@@ -1,12 +1,21 @@
class Meeting < ActiveRecord::Base
belongs_to :parent, :polymorphic=>true
belongs_to :meetingtyp
- attr_accessible :desc, :intern, :name
+ attr_accessible :desc, :intern, :name, :parent_id, :parent_type, :calentry,:calentry_attributes
+
+
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
+ 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 fix_calentry
+ self.calentry.object=self unless self.calentry.nil?
+ end
def public?
! (self.intern)
end
@@ -29,4 +38,12 @@ class Meeting < ActiveRecord::Base
self.agenda=d
end
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
+
+
end
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/documents/_document.html.erb b/app/views/documents/_document.html.erb
index c92c245..088ea15 100644
--- a/app/views/documents/_document.html.erb
+++ b/app/views/documents/_document.html.erb
@@ -1,8 +1,7 @@
<% image_tag("/iconnavy/time.png") %>
- <%= fa_icon("file-text 2x") %>
-
- <%= document.name %>
+ <%= 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/_nested_form.html.erb b/app/views/documents/_nested_form.html.erb
index 6e045f3..47d3033 100644
--- a/app/views/documents/_nested_form.html.erb
+++ b/app/views/documents/_nested_form.html.erb
@@ -4,6 +4,8 @@
<%= 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/edit.html.erb b/app/views/documents/edit.html.erb
new file mode 100755
index 0000000..e3ab18b
--- /dev/null
+++ b/app/views/documents/edit.html.erb
@@ -0,0 +1,6 @@
+Editing Dokument
+
+<%= render 'form' %>
+
+<%= link_to 'Show', @document %> |
+
diff --git a/app/views/documents/edit.js.erb b/app/views/documents/edit.js.erb
index a63cb2c..241ca43 100644
--- a/app/views/documents/edit.js.erb
+++ b/app/views/documents/edit.js.erb
@@ -1,5 +1,4 @@
-
-$("#document_<%= @document.id %>").html("<%=escape_javascript( render :partial=>"nested_form" ,:object=>@document)%>");
+$("#<%= @document.divid %>").html("<%=escape_javascript( render :partial=>"nested_form" ,:object=>@document)%>");
diff --git a/app/views/documents/new.js.erb b/app/views/documents/new.js.erb
index 28248bb..9ca6a5f 100644
--- a/app/views/documents/new.js.erb
+++ b/app/views/documents/new.js.erb
@@ -1,3 +1,3 @@
-$("#document_new").replaceWith("<%=escape_javascript( render :partial=>"nested_form" ,:object=>@document) %>
");
+$("#<%= 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..1cbc4c0
--- /dev/null
+++ b/app/views/documents/show.html.erb
@@ -0,0 +1,8 @@
+<%= @document.name %>
+<%= raw(@document.text) %>
+<%= 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/meetings/_meeting.html.erb b/app/views/meetings/_meeting.html.erb
index 93d6943..afba5c6 100644
--- a/app/views/meetings/_meeting.html.erb
+++ b/app/views/meetings/_meeting.html.erb
@@ -1,8 +1,11 @@
Meeting: <%= meeting.name %>
-<%= render meeting.calentry %>
-<%= link_to "Agenda" , create_agenda_meeting_path(meeting), :remote=>true %>
-<%= link_to "Protokoll" , create_protocol_meeting_path(meeting),:remote=>true %>
+<%= 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/_nested_form.html.erb b/app/views/meetings/_nested_form.html.erb
new file mode 100644
index 0000000..ca312f8
--- /dev/null
+++ b/app/views/meetings/_nested_form.html.erb
@@ -0,0 +1,21 @@
+<%= fa_icon("calendar 2x") %>
+<%= notice %>
+
+<%= semantic_form_for @meeting, :remote=>true, :html=>{:class=>""} do |f| %>
+
+ <%= f.input :name %>
+ <%= f.semantic_fields_for :calentry, @meeting.calentry do |ff| %>
+ <%= ff.input :start, :as => :datetimepicker %>
+ <%= ff.input :dauer , :as => :string, :append=>"h" %>
+ <%= ff.input :typ %>
+ <% ff.input :object_id %>
+ <% 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/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/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/themen/_small.html.erb b/app/views/themen/_small.html.erb
index ef43568..9fcb36a 100644
--- a/app/views/themen/_small.html.erb
+++ b/app/views/themen/_small.html.erb
@@ -22,6 +22,9 @@
<% end %>
<% unless small.meetings.empty? %>
Treffen/Sitzungen
+<%= link_to "Neues Meeting", new_meeting_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %>
+
+
<% small.meetings.each do |m| %>
<%= render m %>
@@ -31,6 +34,8 @@
<% unless small.documents.empty? %>
Dokumente
+<%= link_to "Neues Dokument", new_document_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %>
+
<% small.documents.each do |d| %>
<%= render d %>
From e411a98b4ebf99fb22f649fdc24d8949d8ef1bcc Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Mon, 8 Dec 2014 13:35:36 +0100
Subject: [PATCH 07/14] Treffen sichtbar
---
app/views/themen/_small.html.erb | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/app/views/themen/_small.html.erb b/app/views/themen/_small.html.erb
index 9fcb36a..2bb4aac 100644
--- a/app/views/themen/_small.html.erb
+++ b/app/views/themen/_small.html.erb
@@ -20,22 +20,21 @@
<%= raw(frage.text) %>
<% end %>
-<% unless small.meetings.empty? %>
Treffen/Sitzungen
<%= link_to "Neues Meeting", new_meeting_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %>
+<% unless small.meetings.empty? %>
<% small.meetings.each do |m| %>
<%= render m %>
-
-<% end%>
+ <% end%>
<% end%>
-
-<% unless 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 %>
From a9ef5c14ba6d8a6ba410218182860a38712b0a70 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Fri, 12 Dec 2014 15:24:20 +0100
Subject: [PATCH 08/14] meeting ix
---
app/models/meeting.rb | 12 +++++++++++-
app/views/meetings/_meeting.html.erb | 2 +-
app/views/meetings/_nested_form.html.erb | 2 ++
app/views/themen/_small.html.erb | 7 ++++---
4 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/app/models/meeting.rb b/app/models/meeting.rb
index f786a81..646311f 100644
--- a/app/models/meeting.rb
+++ b/app/models/meeting.rb
@@ -1,7 +1,7 @@
class Meeting < ActiveRecord::Base
belongs_to :parent, :polymorphic=>true
belongs_to :meetingtyp
- attr_accessible :desc, :intern, :name, :parent_id, :parent_type, :calentry,:calentry_attributes
+ attr_accessible :desc, :intern, :name, :parent_id, :parent_type, :calentry,:calentry_attributes, :meetingtyp_id
has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent
@@ -13,6 +13,16 @@ class Meeting < ActiveRecord::Base
validate :parent, :presence=>true
validate :calentry, :presence=>true
before_validation :fix_calentry
+ def text
+ unless self.meetingtyp.try(:name).to_s.empty?
+ t = self.meetingtyp.name.to_s+", "
+ else
+ t = parent.title", " if self.name.empty?
+ end
+ t= t+ self.name
+ t = t + " " + I18n.l(self .calentry.start)
+ t
+ end
def fix_calentry
self.calentry.object=self unless self.calentry.nil?
end
diff --git a/app/views/meetings/_meeting.html.erb b/app/views/meetings/_meeting.html.erb
index afba5c6..b6d4a81 100644
--- a/app/views/meetings/_meeting.html.erb
+++ b/app/views/meetings/_meeting.html.erb
@@ -1,5 +1,5 @@
-
Meeting: <%= meeting.name %>
+
<%= meeting.text %>
<%= 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? %>
diff --git a/app/views/meetings/_nested_form.html.erb b/app/views/meetings/_nested_form.html.erb
index ca312f8..dcd269e 100644
--- a/app/views/meetings/_nested_form.html.erb
+++ b/app/views/meetings/_nested_form.html.erb
@@ -4,6 +4,8 @@
<%= 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 :dauer , :as => :string, :append=>"h" %>
diff --git a/app/views/themen/_small.html.erb b/app/views/themen/_small.html.erb
index 2bb4aac..131e008 100644
--- a/app/views/themen/_small.html.erb
+++ b/app/views/themen/_small.html.erb
@@ -20,16 +20,17 @@
<%= 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 %>
-
<% unless small.meetings.empty? %>
<% small.meetings.each do |m| %>
<%= render m %>
<% end%>
<% end%>
-
+<% 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 %>
@@ -40,7 +41,7 @@
<% end%>
<% end%>
-
+<% end %>
<% unless small.hideattachment %>
<%= render partial: "themen/attachment_list", object: small.attachments, locals:{editor: false} unless small.attachments.empty? %>
<% end %>
From aa98919e88929ccdfa5d8325891425db768714dc Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Sun, 14 Dec 2014 21:30:09 +0100
Subject: [PATCH 09/14] searchable
---
app/models/calentry.rb | 2 +-
app/models/gallery.rb | 6 +++++-
app/models/gremium.rb | 6 +++++-
app/models/lva.rb | 2 +-
4 files changed, 12 insertions(+), 4 deletions(-)
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/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?
From 07944bce89aa6835a01e07ec9e5608ec72dd9f11 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Sun, 14 Dec 2014 21:30:21 +0100
Subject: [PATCH 10/14] meeting
---
app/controllers/meetings_controller.rb | 31 ++++++++++++++++++-
app/controllers/neuigkeiten_controller.rb | 12 +++----
app/controllers/rubriken_controller.rb | 2 +-
app/models/meeting.rb | 22 ++++++++++---
app/models/meetingtyp.rb | 2 ++
app/models/neuigkeit.rb | 6 ++--
app/models/rubrik.rb | 1 +
app/models/studium.rb | 2 +-
app/views/meetings/_meeting.html.erb | 4 ++-
app/views/meetings/_meeting_list.html.erb | 7 +++++
app/views/meetings/index.js.erb | 1 +
.../_nlink_list_search_whole.html.erb | 16 +++++++++-
app/views/neuigkeiten/show.html.erb | 3 ++
app/views/themen/_small.html.erb | 8 ++---
config/routes.rb | 7 +++--
...20141214132815_add_neuigkeit_to_meeting.rb | 6 ++++
16 files changed, 104 insertions(+), 26 deletions(-)
create mode 100644 app/views/meetings/_meeting_list.html.erb
create mode 100644 app/views/meetings/index.js.erb
create mode 100644 db/migrate/20141214132815_add_neuigkeit_to_meeting.rb
diff --git a/app/controllers/meetings_controller.rb b/app/controllers/meetings_controller.rb
index 247cf4c..4dee6c5 100644
--- a/app/controllers/meetings_controller.rb
+++ b/app/controllers/meetings_controller.rb
@@ -2,12 +2,41 @@ class MeetingsController < ApplicationController
- load_and_authorize_resource
+ # 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])
diff --git a/app/controllers/neuigkeiten_controller.rb b/app/controllers/neuigkeiten_controller.rb
index a0aaae1..9b2b03b 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/models/meeting.rb b/app/models/meeting.rb
index 646311f..dd8cb9d 100644
--- a/app/models/meeting.rb
+++ b/app/models/meeting.rb
@@ -3,7 +3,7 @@ class Meeting < ActiveRecord::Base
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
@@ -12,17 +12,29 @@ class Meeting < ActiveRecord::Base
# validate :protocol, :presence=>true
validate :parent, :presence=>true
validate :calentry, :presence=>true
-before_validation :fix_calentry
+ 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 = parent.title", " if self.name.empty?
+ t = parent.title.to_s + ", " if self.name.empty?
end
- t= t+ self.name
- t = t + " " + I18n.l(self .calentry.start)
+ 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
diff --git a/app/models/meetingtyp.rb b/app/models/meetingtyp.rb
index f610170..a7ff90d 100644
--- a/app/models/meetingtyp.rb
+++ b/app/models/meetingtyp.rb
@@ -1,3 +1,5 @@
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/views/meetings/_meeting.html.erb b/app/views/meetings/_meeting.html.erb
index b6d4a81..d5f69d9 100644
--- a/app/views/meetings/_meeting.html.erb
+++ b/app/views/meetings/_meeting.html.erb
@@ -1,5 +1,7 @@
-
<%= meeting.text %>
+
<%= 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? %>
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/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/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 @@
- <%= render partial: "nlink_list_search", collection: nlink_list_search_whole %>
+<% unless @results.nil? %>
+
+<% @results.results.each do |res| %>
+<% if can?(:show, res) %>
+-
+<%= link_to create_link_rubrik_neuigkeit_path(@neuigkeit.rubrik, @neuigkeit, :link_id=>res.id, :link_type=>res.class.to_s), remote: true, class: :linkbox do %>
+<%= render :partial=>res.class.to_s.pluralize.downcase+"/nlink", :object=>res %>
+<% end %>
+
+<% end %>
+<% end %>
+
+<% end %>
+
+ <% render partial: "nlink_list_search", collection: nlink_list_search_whole %>
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/themen/_small.html.erb b/app/views/themen/_small.html.erb
index 131e008..383b717 100644
--- a/app/views/themen/_small.html.erb
+++ b/app/views/themen/_small.html.erb
@@ -24,11 +24,9 @@
Treffen/Sitzungen
<%= link_to "Neues Meeting", new_meeting_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %>
-<% unless small.meetings.empty? %>
-<% small.meetings.each do |m| %>
-<%= render m %>
- <% end%>
-<% end%>
+<%= 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
diff --git a/config/routes.rb b/config/routes.rb
index e5263fc..82a0933 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -166,9 +166,10 @@ Fetsite::Application.routes.draw do
resources :documents
resources :meetings do
member do
- get :create_protocol
- get :create_agenda
- end
+ get :announce
+ get :create_protocol
+ get :create_agenda
+ end
end
resources :meetingtyps
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
From d26ab277af10d98c41372a94745961542dfd8e72 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Tue, 16 Dec 2014 09:23:47 +0100
Subject: [PATCH 11/14] merge errors
---
app/controllers/documents_controller.rb | 22 +++++++---------------
app/models/meeting.rb | 5 ++---
app/views/themen/_small.html.erb | 21 +++++++--------------
config/routes.rb | 7 +++----
4 files changed, 19 insertions(+), 36 deletions(-)
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
index 9b466cd..8b28cb9 100644
--- a/app/controllers/documents_controller.rb
+++ b/app/controllers/documents_controller.rb
@@ -18,10 +18,9 @@ class DocumentsController < ApplicationController
end
def edit
@document = Document.find(params[:id])
-<<<<<<< HEAD
+
@parent=@document.parent
-=======
->>>>>>> origin/documentmeeting
+
respond_to do |format|
format.js
end
@@ -30,11 +29,9 @@ class DocumentsController < ApplicationController
def create
@document = Document.new(params[:document])
-<<<<<<< HEAD
- @parent=@document.parent
-=======
->>>>>>> origin/documentmeeting
+ @parent=@document.parent
+
respond_to do |format|
if @document.save
# format.html { redirect_to @document, notice: 'Document was successfully created.' }
@@ -48,15 +45,11 @@ class DocumentsController < ApplicationController
end
end
-<<<<<<< HEAD
+
def update
@document = Document.find(params[:id])
@parent=@document.parent
-=======
-def update
- @document = Document.find(params[:id])
->>>>>>> origin/documentmeeting
respond_to do |format|
if @document.update_attributes(params[:document])
format.html { redirect_to @document, notice: 'Document was successfully updated.' }
@@ -72,10 +65,9 @@ def update
def destroy
logger.info("-------------delete------------------")
@document = Document.find(params[:id])
-<<<<<<< HEAD
+
@parent=@document.parent
-=======
->>>>>>> origin/documentmeeting
+
@document_id = params[:id]
@document.destroy
diff --git a/app/models/meeting.rb b/app/models/meeting.rb
index c278fd9..08bef44 100644
--- a/app/models/meeting.rb
+++ b/app/models/meeting.rb
@@ -61,7 +61,7 @@ class Meeting < ActiveRecord::Base
self.agenda=d
end
end
-<<<<<<< HEAD
+
def self.new_divid_for(parent)
"meeting_new_parent_" + parent.class.to_s + "_" + parent.id.to_s
end
@@ -70,6 +70,5 @@ class Meeting < ActiveRecord::Base
end
-=======
->>>>>>> origin/documentmeeting
+
end
diff --git a/app/views/themen/_small.html.erb b/app/views/themen/_small.html.erb
index 06730c9..af1d9ed 100644
--- a/app/views/themen/_small.html.erb
+++ b/app/views/themen/_small.html.erb
@@ -20,7 +20,8 @@
<%= raw(frage.text) %>
<% end %>
-<<<<<<< HEAD
+
+
<% 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 %>
@@ -29,28 +30,20 @@
<%= 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.meetings.empty? %>
-Treffen/Sitzungen
-<% small.meetings.each do |m| %>
-<%= render m %>
-
-<% end%>
-<% end%>
-
-
<% unless small.documents.empty? %>
-Dokumente
<% small.documents.each do |d| %>
<%= render d %>
-
+
+<% end%>
<% end%>
<% end%>
diff --git a/config/routes.rb b/config/routes.rb
index 7a2f46d..082344b 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -166,15 +166,14 @@ Fetsite::Application.routes.draw do
resources :documents
resources :meetings do
member do
-
get :announce
get :create_protocol
get :create_agenda
end
-
- end
-
+
end
+
+
resources :meetingtyps
end
end
From d72f78488d736e0920a2030ad5f13f2e66c763e2 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Sat, 3 Jan 2015 10:06:58 +0100
Subject: [PATCH 12/14] document/meeting updates
---
Gemfile | 1 +
app/controllers/documents_controller.rb | 57 ++++++++++++++++++-
app/controllers/home_controller.rb | 3 +-
app/controllers/meetings_controller.rb | 4 +-
app/controllers/themen_controller.rb | 18 +++++-
app/helpers/application_helper.rb | 27 ++++++++-
app/models/ability.rb | 9 ++-
app/models/document.rb | 51 ++++++++++++++++-
app/models/meeting.rb | 62 ++++++++++++++++++++-
app/views/calentries/_nested_form.html.erb | 9 ++-
app/views/documents/edit.html.erb | 6 --
app/views/documents/show.html.erb | 14 +++--
app/views/fragen/_form.html.erb | 2 +-
app/views/fragen/_rform.html.erb | 2 +-
app/views/home/index.html.erb | 3 +-
app/views/home/kontakt.html.erb | 3 -
app/views/layouts/_login.html.erb | 24 +++++---
app/views/layouts/application.html.erb | Bin 1852 -> 1791 bytes
app/views/layouts/menu.html.erb | 7 ++-
app/views/meetings/_nested_form.html.erb | 6 +-
app/views/rubriken/show.html.erb | 5 +-
app/views/themen/_verw_liste.html.erb | 3 +
app/views/themes/blue1/home/index.html.erb | 5 +-
config/routes.rb | 11 +++-
24 files changed, 278 insertions(+), 54 deletions(-)
delete mode 100755 app/views/documents/edit.html.erb
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/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
index 8b28cb9..dce8233 100644
--- a/app/controllers/documents_controller.rb
+++ b/app/controllers/documents_controller.rb
@@ -1,5 +1,5 @@
class DocumentsController < ApplicationController
-
+# require('etherpad-lite')
load_and_authorize_resource
def index
respond_to do |format|
@@ -18,13 +18,64 @@ class DocumentsController < ApplicationController
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
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
index 120c297..7bad531 100644
--- a/app/controllers/meetings_controller.rb
+++ b/app/controllers/meetings_controller.rb
@@ -42,8 +42,8 @@ end
@meeting=Meeting.new
@meeting.parent=params[:parent_type].constantize.find(params[:parent_id])
@parent=@meeting.parent
- @meeting.calentry=Calentry.new
-# @meeting.typ = 1
+ @meeting.calentry=Calentry.new
+ @meeting.calentry.typ = 2
respond_to do |format|
format.js
end
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/models/ability.rb b/app/models/ability.rb
index 40bc4d8..7bfcec3 100755
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -122,7 +122,14 @@ class Ability
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
diff --git a/app/models/document.rb b/app/models/document.rb
index 5d3a20c..bf3714a 100644
--- a/app/models/document.rb
+++ b/app/models/document.rb
@@ -1,17 +1,64 @@
class Document < ActiveRecord::Base
- attr_accessible :etherpadkey, :name, :parent, :text, :typ, :parent_id, :parent_type
+ 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/meeting.rb b/app/models/meeting.rb
index 08bef44..933ec2f 100644
--- a/app/models/meeting.rb
+++ b/app/models/meeting.rb
@@ -21,6 +21,7 @@ class Meeting < ActiveRecord::Base
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
@@ -52,6 +53,13 @@ class Meeting < ActiveRecord::Base
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
@@ -61,7 +69,16 @@ class Meeting < ActiveRecord::Base
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
@@ -69,6 +86,45 @@ class Meeting < ActiveRecord::Base
"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/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/edit.html.erb b/app/views/documents/edit.html.erb
deleted file mode 100755
index e3ab18b..0000000
--- a/app/views/documents/edit.html.erb
+++ /dev/null
@@ -1,6 +0,0 @@
-Editing Dokument
-
-<%= render 'form' %>
-
-<%= link_to 'Show', @document %> |
-
diff --git a/app/views/documents/show.html.erb b/app/views/documents/show.html.erb
index 1cbc4c0..de22fd5 100644
--- a/app/views/documents/show.html.erb
+++ b/app/views/documents/show.html.erb
@@ -1,8 +1,10 @@
+<%= link_to "parent" , @document.parent %>
+<%= link_to "show", document_path(@document), remote: true %>
+<%= link_to "Write", write_document_path(@document) %>
+<%= link_to "read", read_from_etherpad_document_path(@document) %>
+<%= link_to "dump", dump_to_etherpad_document_path(@document) %>
<%= @document.name %>
+
<%= raw(@document.text) %>
-<%= 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/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 c9ab07a..2f5fb3b 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 %>
+
+ <%= ff_icon('icon-user')%>
+
+
+<% 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 b6c22eebb6f81a3d26369a41650b28fab18ae233..13182739bedae500d2febfd0f6d257a2d46a45da 100755
GIT binary patch
delta 17
YcmdnP_n&tIBkLyCE=ER%$tT&00XFLer2qf`
delta 80
zcmey*yN7QBBkN`+)=oxyo8p4RJcZ<(#NuLGrGnC&9NnVK^o$ZEI|T(BRa=Fk)V!3`
hA_euF#LE2Al4AXw{PfH`bp=&B8-0*QyU9Il#Q-=h8nyrc
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/_nested_form.html.erb b/app/views/meetings/_nested_form.html.erb
index dcd269e..db36946 100644
--- a/app/views/meetings/_nested_form.html.erb
+++ b/app/views/meetings/_nested_form.html.erb
@@ -8,9 +8,9 @@
<%= f.semantic_fields_for :calentry, @meeting.calentry do |ff| %>
<%= ff.input :start, :as => :datetimepicker %>
- <%= ff.input :dauer , :as => :string, :append=>"h" %>
- <%= ff.input :typ %>
- <% ff.input :object_id %>
+ <%= ff.input :ende, :as => :datetimepicker %>
+ <%= ff.input :typ %>
+ <% ff.input :object_id, :as=>:hidden %>
<% ff.input :object_type %>
<% end %>
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/_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/themes/blue1/home/index.html.erb b/app/views/themes/blue1/home/index.html.erb
index c9ab07a..fcec724 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 082344b..713df3d 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -156,6 +156,8 @@ Fetsite::Application.routes.draw do
get :verwalten
get :sanitize
get :is_updated
+ get :documents
+ get :meetings
end
resources :attachments
end
@@ -163,7 +165,14 @@ Fetsite::Application.routes.draw do
resources :calendars
get 'verwalten/calendars', :controller=>:calendars, :action=>:verwalten, :as=>'calendars_verwalten'
resources :calentries
- resources :documents
+ 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
From 0cca373f33e65b0b5064bb3523c788746238c026 Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Sat, 3 Jan 2015 10:08:00 +0100
Subject: [PATCH 13/14] document views
---
app/views/documents/_form.html.erb | 7 +++++++
app/views/documents/write.html.erb | 6 ++++++
app/views/documents/write_etherpad.html.erb | 1 +
app/views/themen/_documents.html.erb | 16 ++++++++++++++++
app/views/themen/documents.js.erb | 1 +
5 files changed, 31 insertions(+)
create mode 100644 app/views/documents/_form.html.erb
create mode 100755 app/views/documents/write.html.erb
create mode 100644 app/views/documents/write_etherpad.html.erb
create mode 100644 app/views/themen/_documents.html.erb
create mode 100644 app/views/themen/documents.js.erb
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/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/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/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
From aa080a1eecc0739fb815d0791242fd40f347164c Mon Sep 17 00:00:00 2001
From: Andreas Stephanides
Date: Sat, 3 Jan 2015 10:49:41 +0100
Subject: [PATCH 14/14] Buttons doument show
---
app/views/documents/show.html.erb | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/app/views/documents/show.html.erb b/app/views/documents/show.html.erb
index de22fd5..8939bf0 100644
--- a/app/views/documents/show.html.erb
+++ b/app/views/documents/show.html.erb
@@ -1,8 +1,7 @@
-<%= link_to "parent" , @document.parent %>
-<%= link_to "show", document_path(@document), remote: true %>
-<%= link_to "Write", write_document_path(@document) %>
-<%= link_to "read", read_from_etherpad_document_path(@document) %>
-<%= link_to "dump", dump_to_etherpad_document_path(@document) %>
+<%= 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) %>