diff --git a/Gemfile b/Gemfile index 4d026e7..ba1a015 100755 --- a/Gemfile +++ b/Gemfile @@ -117,6 +117,8 @@ gem 'whenever' gem 'yaml_db' gem 'etherpad-lite' +gem 'opengraph_parser' + # Image gallery gem 'blueimp-gallery' gem 'blueimp-gallery-rails' \ No newline at end of file diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 0410a28..8d4ccd0 100755 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -26,7 +26,16 @@ class HomeController < ApplicationController end - + def log + authorize! :doadmin, User + lines = params[:lines] + if Rails.env == "production" + @logs = `tail -n #{lines} log/production.log | grep Error` + else + @logs = `tail -n #{lines} log/development.log | grep -v 'actionpack\\|railties\\|activesupport\\|::Translation'` + end + + end def startdev render 'setup_fetsite_dev' end diff --git a/app/controllers/meetings_controller.rb b/app/controllers/meetings_controller.rb index 8801689..c666945 100644 --- a/app/controllers/meetings_controller.rb +++ b/app/controllers/meetings_controller.rb @@ -6,9 +6,9 @@ class MeetingsController < ApplicationController unless parent.nil? #authorize! :show, parent if params[:filter]=="upcomming" - @meetings=parent.meetings.includes(:calentry).where("calentries.start>?",1.hour.ago) + @meetings=parent.meetings.upcomming else - @meetings=parent.meetings + @meetings=parent.meetings end @parent=parent end diff --git a/app/controllers/rubriken_controller.rb b/app/controllers/rubriken_controller.rb index 8131a8a..2a75c97 100755 --- a/app/controllers/rubriken_controller.rb +++ b/app/controllers/rubriken_controller.rb @@ -2,13 +2,16 @@ class RubrikenController < ApplicationController before_filter {@toolbar_elements=[]} load_and_authorize_resource def index - if can?(:showintern, Rubrik) - @rubriken = Rubrik.all - @neuigkeiten = Neuigkeit.page(params[:page]).per(3) - else - @rubriken = Rubrik.where(:public=>true) - @neuigkeiten = Neuigkeit.public.published.page(params[:page]).per(3) - end + # if can?(:showintern, Rubrik) + # @rubriken = Rubrik.all + # @neuigkeiten = Neuigkeit.page(params[:page]).per(3) + # else + # @rubriken = Rubrik.where(:public=>true) + # @neuigkeiten = Neuigkeit.public.published.page(params[:page]).per(3) + # end + + @rubriken= Rubrik.accessible_by(current_ability, :show) + @neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).page(params[:page]).per(3) @calentries= (@rubriken.map {|r| r.calendar}).collect(&:calentries).flatten.select {|c| c.object !=nil} respond_to do |format| @@ -21,20 +24,13 @@ class RubrikenController < ApplicationController end def show - if can?(:shownonpublic, Rubrik) - @rubriken = Rubrik.all - else - @rubriken = Rubrik.where(:public=>true) - end - + @rubriken= Rubrik.accessible_by(current_ability, :show) @rubrik = Rubrik.find(params[:id]) @moderatoren=User.with_role(:newsmoderator,@rubrik) + @calentries= @rubrik.calendar.calentries.select {|c| c.object !=nil} - if can?(:showunpublished, Neuigkeit) - @neuigkeiten = @rubrik.neuigkeiten.page(params[:page]).per(3) - else - @neuigkeiten = @rubrik.neuigkeiten.published.page(params[:page]).per(3) - end + @neuigkeiten = @rubrik.neuigkeiten.accessible_by(current_ability, :show).page(params[:page]).per(3) + @toolbar_elements << {:text=>I18n.t('neuigkeit.new.title'), :path=> new_rubrik_neuigkeit_path(@rubrik),:hicon=>'icon-plus-sign'} if can? :verwalten, @rubrik @toolbar_elements << {:text=>I18n.t('common.verwalten'), :path=>verwalten_rubrik_path(@rubrik),:icon=>:pencil} if can? :verwalten, @rubrik @@ -47,7 +43,6 @@ class RubrikenController < ApplicationController def new @rubrik = Rubrik.new - end def edit diff --git a/app/controllers/themengruppen_controller.rb b/app/controllers/themengruppen_controller.rb index d47a734..64d79ba 100644 --- a/app/controllers/themengruppen_controller.rb +++ b/app/controllers/themengruppen_controller.rb @@ -3,7 +3,7 @@ class ThemengruppenController < ApplicationController # GET /themengruppen.json load_and_authorize_resource def index - @themengruppen = Themengruppe.where(:public=>true).order(:priority).reverse + @themengruppen = Themengruppe.accessible_by(current_ability, :show).order(:priority).reverse_order @toolbar_elements = [] @toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()} if can? :new, Themengruppe @toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.manage_all'), :path=>verwalten_all_themengruppen_path()} if can? :verwalten_all, Themengruppe @@ -22,11 +22,8 @@ class ThemengruppenController < ApplicationController # GET /themengruppen/1.json def show @themengruppe = Themengruppe.find(params[:id]) - if can? :showdraft , Thema - @themen = @themengruppe.themen - else - @themen = @themengruppe.themen.public - end + @themen=@themengruppe.themen.accessible_by(current_ability, :show) + @toolbar_elements = [] @toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.manage"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe @@ -53,7 +50,7 @@ class ThemengruppenController < ApplicationController end def verwalten_all @themengruppen =Themengruppe.public.order(:priority).reverse -@themengruppen_intern =Themengruppe.intern.order(:priority).reverse + @themengruppen_intern =Themengruppe.intern.order(:priority).reverse @toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()}] end @@ -63,7 +60,6 @@ class ThemengruppenController < ApplicationController @toolbar_elements =[] @toolbar_elements << {:text=>I18n.t('themengruppe.show'), :path=>themengruppe_path(@themengruppe)} if can? :show, @themengruppe - @toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('themengruppe.edit'), :path=>edit_themengruppe_path(@themengruppe)} if can? :edit, @themengruppe @toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('thema.add'), :path=>new_themengruppe_thema_path(@themengruppe), :remote=>true} if can? :new, Thema @toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 400de60..23d9f2f 100755 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -94,4 +94,12 @@ end end raw(html) end + def absurl(path) + if path.nil? + return nil + end + url=URI(root_url) + url.path=path + return url + end end diff --git a/app/models/ability.rb b/app/models/ability.rb index b681145..e00018d 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -92,6 +92,7 @@ class Ability if loggedin end if( user.has_role?("fetuser") || user.has_role?("fetadmin")) + can :showversions, Neuigkeit can :showintern, Neuigkeit can :showintern, Rubrik diff --git a/app/models/meeting.rb b/app/models/meeting.rb index cd174bc..da1a8ea 100644 --- a/app/models/meeting.rb +++ b/app/models/meeting.rb @@ -10,7 +10,7 @@ class Meeting < ActiveRecord::Base has_one :calentry, as: :object has_one :calendar, :through=>:meetingtyp has_one :rubrik, :through=>:meetingtyp - + scope :upcomming, includes(:calentry).where("calentries.start>?",1.hour.ago) accepts_nested_attributes_for :calentry # validate :agenda, :presence=>true # validate :protocol, :presence=>true diff --git a/app/models/neuigkeit.rb b/app/models/neuigkeit.rb index 198ca66..19091b0 100755 --- a/app/models/neuigkeit.rb +++ b/app/models/neuigkeit.rb @@ -64,6 +64,18 @@ class Neuigkeit < ActiveRecord::Base def name self.title end + def load_from_facebook(link) + event=FbGraph::Event.new(link).fetch(:access_token=>"CAABtfB8SO7kBADyHVHnWHqsxsU1bqqmeDdZCp7V1KF9G4o3oFHcZBq0IB8X3ird4muVIPuWKZB8jL1o9JCON60Lmnvk8rkZA2dyZAuU95dC0SWzOEnhtAEkyzZCN6hkKXdl87o38OloLBivc2kjJYmpUVKzdZAD5ywxKG7Hv5FWxXf6amWA782JSmcxgWsRDH4ZAZBXsUrhpnILNOVoKSBf1mGyfrFiPvA3QZD") + self.title=event.name + self.text=event.description + unless event.start_time.nil? + ce=Calentry.new(:start=>event.start_time, :ende=>event.end_time , :typ=>1) + ce.ende=ce.start if ce.ende.nil? + self.calentries<< ce + ce.save + + end + end def text_first_words md = /

(?[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p']) words=md[:text].split(" ") unless md.nil? diff --git a/app/views/calentries/_calentry.html.erb b/app/views/calentries/_calentry.html.erb index b591e28..d96f6b6 100644 --- a/app/views/calentries/_calentry.html.erb +++ b/app/views/calentries/_calentry.html.erb @@ -8,6 +8,8 @@ format =:default end %> <%= calentry.text %> +<% if !(defined? manage) || manage %> <%= link_to "edit", edit_calentry_path(calentry),:remote=>true if can? :edit, calentry %> <%= link_to 'Delete', calentry, method: :delete, data: { confirm: 'Are you sure?' } , remote: true if can? :delete, calentry %> +<% end %> diff --git a/app/views/home/log.html.erb b/app/views/home/log.html.erb new file mode 100644 index 0000000..5359341 --- /dev/null +++ b/app/views/home/log.html.erb @@ -0,0 +1 @@ +

<%= @logs %>
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 442d443..c6c40b8 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -3,7 +3,7 @@ - + "> diff --git a/app/views/meetings/_meeting.html.erb b/app/views/meetings/_meeting.html.erb index 9298e28..08c3362 100644 --- a/app/views/meetings/_meeting.html.erb +++ b/app/views/meetings/_meeting.html.erb @@ -5,7 +5,7 @@ <%= 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? %> +<%= render meeting.calentry, locals: {manage: 0} 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? %> diff --git a/app/views/rubriken/_admin_liste.html.erb b/app/views/rubriken/_admin_liste.html.erb index db6a999..c113119 100755 --- a/app/views/rubriken/_admin_liste.html.erb +++ b/app/views/rubriken/_admin_liste.html.erb @@ -5,8 +5,7 @@ <%= fa_icon "globe" if r.public%> <%= r.name %> - <%= n.title %> - + <%= link_to n.title, n %> <%= unless n.datum.nil? diff --git a/app/views/themen/_attachment_verwalten.html.erb b/app/views/themen/_attachment_verwalten.html.erb index 8fb67c3..e4180d9 100644 --- a/app/views/themen/_attachment_verwalten.html.erb +++ b/app/views/themen/_attachment_verwalten.html.erb @@ -1,3 +1,12 @@ +
+Titlepics -<%= render :partial=>"attachments/form_bulk" %> +<% @thema.titlepics.each do |tp| %> +<%= link_to image_tag(tp.datei.thumb.url) , set_titlepic_thema_attachment_path(tp.thema,tp,:params=>{:titlepic=>false}) %> +<% end %>
+ List <%= render partial: "themen/attachment_list", object:@thema.attachments ,locals: {:editor => true}%> +
+Form +<%= render :partial=>"attachments/form_bulk" %> +
diff --git a/app/views/themen/_small.html.erb b/app/views/themen/_small.html.erb index ac371e3..82a4409 100644 --- a/app/views/themen/_small.html.erb +++ b/app/views/themen/_small.html.erb @@ -27,8 +27,10 @@ Treffen/Sitzungen <%= link_to "Neues Meeting", new_meeting_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %>
-<%= link_to "All", meetings_path(:parent_id=>small.id, :parent_type=>"Thema"), :remote=>true %> -<%= link_to "upcomming", meetings_path(:parent_id=>small.id, :parent_type=>"Thema",:filter=>"upcomming"), :remote=>true %> + <%= render :partial=>"meetings/meeting_list", object: small.meetings, locals: {parent: small} %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index 421f549..b38910c 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -135,6 +135,7 @@ get 'linksnotimplemented' get 'kontakt' get 'choose_contact_topics' + get 'log' end end