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_atI18n.t.locale) -} + scope :outdated, -> {includes(:translations).where("thema_translations.updated_atI18n.t.locale) + } translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true def is_outdated? - unless translation.try(:updated_at).nil? - translation.updated_at < 2.month.ago - else - false - end + unless translation.try(:updated_at).nil? + translation.updated_at < 2.month.ago + else + false + end end def text_first_words @@ -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 @@ 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 %> + +<% 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) %>