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