From aadf180670912cd986153f1ff1cf9d77514ca1ed Mon Sep 17 00:00:00 2001 From: Andreas Stephanides Date: Sat, 20 Jun 2015 14:03:01 +0200 Subject: [PATCH] AutoCommit Sam Jun 20 14:03:01 CEST 2015 --- app/models/beispiel.rb | 1 + .../themes/blue2/beispiele/_beispiel.html.erb | 41 +++++++++++++++++++ config/initializers/init_flagable.rb | 4 +- lib/.#flagable.rb | 1 + lib/flagable.rb | 41 ++++++++++++++++--- 5 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 app/views/themes/blue2/beispiele/_beispiel.html.erb create mode 120000 lib/.#flagable.rb diff --git a/app/models/beispiel.rb b/app/models/beispiel.rb index 2fbf52f..2e42daf 100755 --- a/app/models/beispiel.rb +++ b/app/models/beispiel.rb @@ -15,6 +15,7 @@ class Beispiel < ActiveRecord::Base has_paper_trail attr_accessible :desc, :name, :lva_id, :beispieldatei, :beispieldatei_cache, :datum acts_as_votable + acts_as_flagable belongs_to :lva mount_uploader :beispieldatei, AttachmentUploader diff --git a/app/views/themes/blue2/beispiele/_beispiel.html.erb b/app/views/themes/blue2/beispiele/_beispiel.html.erb new file mode 100644 index 0000000..bbb9148 --- /dev/null +++ b/app/views/themes/blue2/beispiele/_beispiel.html.erb @@ -0,0 +1,41 @@ +
+
+
+ <%=link_to ffi1_icon("note20")+" " + beispiel.name + " " + I18n.l(beispiel.datum), beispiel.beispieldatei.url, title: beispiel.desc %> +
+
+ <%= (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB +
+
+ <%= flag_link(beispiel, :badquality)%> + <%= + if can?(:like, beispiel) + link_to ffi1_icon("like3")+" like" + "("+beispiel.get_likes.size.to_s+")", like_beispiel_path(beispiel),title: "liked by " + ((current_user.liked?(beispiel)) ? ("you and " + ((beispiel.get_likes.size - 1).to_s + " others")) : beispiel.get_likes.size.to_s), remote: true + else + "liked by " + beispiel.get_likes.size.to_s + end + %> + + <%= + if can?(:dislike, beispiel) + link_to ffi1_icon("dislike")+" dislike" + "("+beispiel.get_dislikes.size.to_s+")", dislike_beispiel_path(beispiel),title:"disliked by " + ((current_user.disliked?(beispiel)) ? ("you and " + ((beispiel.get_dislikes.size - 1).to_s + " others")) : beispiel.get_dislikes.size.to_s) , remote: true + else + "disliked by " + beispiel.get_dislikes.size.to_s + end + + %> + + <%= link_to ff_icon("icon-pencil")+"edit", edit_beispiel_path(beispiel) if can? :edit, beispiel%> + <%= link_to fa_icon("trash")+"delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')} if can? :delete, beispiel %> + <% link_to "Refresh", beispiel_path(beispiel,show_comments: true), remote: true %>
+
+
+ <% unless beispiel.desc.nil? || beispiel.desc.empty? %> +
+
+ + <%= beispiel.desc %> +
+
+ <% end %> +
diff --git a/config/initializers/init_flagable.rb b/config/initializers/init_flagable.rb index a2702e6..48ef1d2 100644 --- a/config/initializers/init_flagable.rb +++ b/config/initializers/init_flagable.rb @@ -1,2 +1,4 @@ require 'flagable' -ActionController::Base.send :include, Flagable::ActsAsFlagable +ActionController::Base.send :include, Flagable::ActsAsFlagableController +ActiveRecord::Base.send :include, Flagable::ActsAsFlagableRecord +ActionView::Base.send :include, Flagable::FlagableHelper diff --git a/lib/.#flagable.rb b/lib/.#flagable.rb new file mode 120000 index 0000000..d96c12d --- /dev/null +++ b/lib/.#flagable.rb @@ -0,0 +1 @@ +andreas@andreas-ThinkPad-S430.11733:1434727463 \ No newline at end of file diff --git a/lib/flagable.rb b/lib/flagable.rb index a1db136..5827b82 100644 --- a/lib/flagable.rb +++ b/lib/flagable.rb @@ -1,12 +1,12 @@ module Flagable - module ActsAsFlagable + module ActsAsFlagableController extend ActiveSupport::Concern included do end module ClassMethods def acts_as_flagable(options={}) - include Flagable::ActsAsFlagable::LocalInstanceMethods + include Flagable::ActsAsFlagableController::LocalInstanceMethods #extend class methods end end @@ -15,16 +15,45 @@ module Flagable @obj=controller_name.classify.constantize.find(params[:id]) lflag=("flag_"+params[:flag]).to_sym unless params[:flag].nil? || params[:flag].empty? || params[:value].nil? - @obj.try(lflag)#=params[:value] + if @obj.respond_to?(lflag.to_s+"=") @obj.send(lflag.to_s+"=",params[:value]) + end end respond_to do |format| format.html {render :text=>@obj.to_yaml} - format.js {render :text => "alert(#{lflag.to_s} #{@obj.to_yaml})"} + format.js {render :text => "alert('#{lflag.to_s} #{ ActionController::Base.helpers.escape_javascript(@obj.to_yaml.to_s)}')"} end end end end + + module ActsAsFlagableRecord + extend ActiveSupport::Concern + included do + + end + module ClassMethods + def acts_as_flagable(options={}) + include Flagable::ActsAsFlagableRecord::LocalInstanceMethods + #extend class methods + end + end + module LocalInstanceMethods + def get_flag(flag) + v= @obj.send("flag_"+flag.to_s) if @obj.respond_to?("flag_"+flag.to_s) + v= false if v.nil? + v + end + def flagtagid(flag) + return self.class.to_s + "_" + self.id.to_s + "_flag_"+flag.to_s + end + end + end + module FlagableHelper + def flag_link(obj, flag, value=false) + value=obj.get_flag(flag) + color=(value) ? "red" :"grey" +link_to fa_icon("flag"), flag_beispiel_path(obj,{flag: flag, value: !value}), remote: true, style:("color:" +color ) + end + end end - -