diff --git a/Gemfile b/Gemfile index bf54489..e923aac 100755 --- a/Gemfile +++ b/Gemfile @@ -22,7 +22,7 @@ group :assets do gem 'therubyracer', :platforms => :ruby gem 'uglifier', '>= 1.0.3' end - +gem 'active_record_query_trace' gem 'jquery-rails' diff --git a/app/assets/stylesheets/layout.css.scss b/app/assets/stylesheets/layout.css.scss index 1f5a328..7c655ed 100755 --- a/app/assets/stylesheets/layout.css.scss +++ b/app/assets/stylesheets/layout.css.scss @@ -205,4 +205,9 @@ form.inline input { form.inline { float:clear; } -@import 'tinymce'; \ No newline at end of file +@import 'tinymce'; + +a.flag-true { color: $color_schema_3_dark} +a.flag-true.flag-goodquality-true { color: green} + +a.flag-false { color: #CCC} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/blue2/application.css.scss b/app/assets/stylesheets/themes/blue2/application.css.scss index 6276bbd..1db0ed0 100755 --- a/app/assets/stylesheets/themes/blue2/application.css.scss +++ b/app/assets/stylesheets/themes/blue2/application.css.scss @@ -14,6 +14,7 @@ *= require jquery.fileupload-ui *= require jquery.datetimepicker *= require jquery.ui.dialog + *= require jquery.ui.tabs * require 'bootstrap' * require 'neuigkeiten' @@ -77,9 +78,9 @@ $sansFontFamily: Helvetica, Arial; div.header { display: block; -// backgro und: url('../../../../header1.png') no-repeat; -// background-color:white;// $color_prim; - // background-position: right; + // background: url('../../../../header1.png') no-repeat; + // background-color:white;// $color_prim; + // background-position: right; vertical-align:middle; float:left; color:#000; @@ -128,3 +129,29 @@ body { background: #FFF; //#EFEFEF; background-size:100%; } + +ul.linklist_block a.linkbox +{ +max-width:100%; +padding:0; +margin:5px; +width: 6em; +text-align:center; +} +ul.linklist_block a.linkbox:hover +{background:lighten($color_schema_1,40%); +} +ul.linklist_block li +{text-decoration: none; +list-style:none; +margin-bottom:2px; +float:left; +} +ul.linklist_block li a i{ +display:block; +vertical-align:middle; +margin-right:6px; +font-size:5em; +line-height:70px; +} +ul.linklist_block { clear:left; float:none;} diff --git a/app/controllers/.#crawler_controller.rb b/app/controllers/.#crawler_controller.rb new file mode 120000 index 0000000..038438c --- /dev/null +++ b/app/controllers/.#crawler_controller.rb @@ -0,0 +1 @@ +andreas@andreas-ThinkPad-S430.4992:1434372676 \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index eb8fb64..60164ec 100755 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -51,6 +51,6 @@ def current_ability @current_ability ||= Ability.new(current_user, request, params[:key]) end def default_url_options - {locale: I18n.locale, theme: nil , ansicht: nil} + {locale: nil, theme: nil , ansicht: nil} # I18n.locale end end diff --git a/app/controllers/beispiele_controller.rb b/app/controllers/beispiele_controller.rb index ee8390e..7c75fa5 100755 --- a/app/controllers/beispiele_controller.rb +++ b/app/controllers/beispiele_controller.rb @@ -3,6 +3,7 @@ class BeispieleController < ApplicationController load_and_authorize_resource include LikeVoteable + acts_as_flagable def index @beispiele = Beispiel.all diff --git a/app/controllers/crawler_controller.rb b/app/controllers/crawler_controller.rb index 25e571a..d47f3c5 100644 --- a/app/controllers/crawler_controller.rb +++ b/app/controllers/crawler_controller.rb @@ -4,6 +4,8 @@ class CrawlerController < ApplicationController authorize! :doadmin, User @crawlobjs=Crawlobject.where(:objtype=>5).order(:published_at).reverse_order + @crawlobjs_etit=Crawlobject.where(:objtype=>6).order(:published_at).reverse_order + end def load_attachments authorize! :doadmin, User @@ -18,12 +20,17 @@ class CrawlerController < ApplicationController end end def move_to_news - authorize! :doadmin, User - + authorize! :doadmin, User co=Crawlobject.find(params[:id]) - if co.objtype == 5 - co.move_to_neuigkeit(User.find(Rails.configuration.crawlconfig[5]["user_id"]), Rubrik.find(Rails.configuration.crawlconfig[5]["rubrik_id"])) + if co.objtype == 5 || co.objtype==6 + co.move_to_neuigkeit(User.find(Rails.configuration.crawlconfig[co.objtype]["user_id"]), Rubrik.find(Rails.configuration.crawlconfig[co.objtype]["rubrik_id"])) redirect_to co.something end end + + def do_crawl_news + Crawlobject.crawl_news(5) + Crawlobject.crawl_news(6) + redirect_to action: :index + end end diff --git a/app/controllers/lvas_controller.rb b/app/controllers/lvas_controller.rb index 44f1a9b..760d3e4 100755 --- a/app/controllers/lvas_controller.rb +++ b/app/controllers/lvas_controller.rb @@ -47,6 +47,10 @@ class LvasController < ApplicationController def show @lva = Lva.find_by_id(params[:id]) @beispiel=Beispiel.new + @beispiele_all=@lva.beispiele.order(:datum).accessible_by(current_ability, :show) + @beispiele = @lva.beispiele.not_flag_badquality.not_flag_delete.order(:datum).accessible_by(current_ability, :show) + @beispiele_badQ = @lva.beispiele.flag_badquality.not_flag_delete.order(:datum).accessible_by(current_ability, :show) + @beispiele_deleted = @lva.beispiele.flag_delete.order(:datum).accessible_by(current_ability, :show) @toolbar_elements =[] @toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.manage'),:path => verwalten_lva_path(@lva)} if can? :verwalten, @lva @crawlobjects = @lva.crawlobjects.roots.accessible_by(current_ability) diff --git a/app/models/ability.rb b/app/models/ability.rb index 65087d3..1b460d5 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -145,7 +145,7 @@ end # Calendar if( user.has_role?("fetuser") || user.has_role?("fetadmin")) - can [:show, :edit, :update,:new,:create,:write, :write_etherpad, :read_from_etherpad, :dump_to_etherpad], Document + can [:show, :edit, :update,:new,:create,:write, :write_etherpad, :read_from_etherpad, :dump_to_etherpad, :search], Document can :manage, Meeting can :manage, Meetingtyp end diff --git a/app/models/beispiel.rb b/app/models/beispiel.rb index 2fbf52f..24a0f7b 100755 --- a/app/models/beispiel.rb +++ b/app/models/beispiel.rb @@ -15,9 +15,15 @@ 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 + FLAG_ICONS = {"badquality"=>"fa fa-flag","goodquality"=>"fa fa-flag", "delete"=>"fa fa-trash"} + scope :not_flag_badquality, ->{where("flag_badquality IS NULL OR flag_badquality=?",false)} + scope :flag_badquality, ->{where("flag_badquality=?",true)} + scope :not_flag_delete, ->{where("flag_delete IS NULL OR flag_delete=?",false)} + scope :flag_delete, ->{where("flag_delete=?",true)} + + mount_uploader :beispieldatei, AttachmentUploader validates :beispieldatei, :presence => true validates :name, :presence => true validates :lva_id, :presence => true diff --git a/app/models/crawlobject.rb b/app/models/crawlobject.rb index 4b00a7c..da31d88 100644 --- a/app/models/crawlobject.rb +++ b/app/models/crawlobject.rb @@ -15,7 +15,7 @@ class Crawlobject < ActiveRecord::Base end end def move_to_neuigkeit(user,rubrik) - if self.objtype == 5 and self.something.nil? + if ( self.objtype == 5 || self.objtype == 6 )and self.something.nil? n=Neuigkeit.new n.title=self.name n.text=self.text @@ -27,7 +27,7 @@ class Crawlobject < ActiveRecord::Base self.something=n self.save return n - elsif self.objtype == 5 + elsif ( self.objtype == 5 || self.objtype==6) n=self.something n.title=self.name n.text=self.text diff --git a/app/models/neuigkeit.rb b/app/models/neuigkeit.rb index 32a1dc4..3d2004d 100755 --- a/app/models/neuigkeit.rb +++ b/app/models/neuigkeit.rb @@ -21,7 +21,7 @@ class Neuigkeit < ActiveRecord::Base has_many :nlinks, :dependent=> :destroy has_one :meeting has_many :attachments, :as=>:parent - + has_one :title_pic, :class_name=>"Attachment", :as=>:parent, :conditions=>["attachments.flag_titlepic =?", true] validates :rubrik, :presence=>true @@ -29,7 +29,7 @@ class Neuigkeit < ActiveRecord::Base translates :title,:text, :versioning=>{:gem=>:paper_trail, :options=>{:fallbacks_for_empty_translations => true}} mount_uploader :picture, PictureUploader - default_scope order(:cache_order) + default_scope order(:cache_order).includes(:calentries).includes(:title_pic) scope :recent, -> { published.limit(10)} scope :unpublished, -> {where("datum > ? OR datum IS NULL", Time.now)} scope :published_scope, ->{where("datum <= ? AND datum IS NOT NULL", Time.now)} @@ -66,8 +66,9 @@ class Neuigkeit < ActiveRecord::Base if self.has_meeting? return self.meeting.meetingtyp.picture else - unless self.attachments.where(flag_titlepic: true).first.nil? - return self.attachments.where(flag_titlepic: true).first.datei + unless self.title_pic.nil? + # return self.attachments.where(flag_titlepic: true).first.datei + return self.title_pic.datei else return self.picture end diff --git a/app/views/crawler/index.html.erb b/app/views/crawler/index.html.erb index 08eeeb1..6d271a4 100644 --- a/app/views/crawler/index.html.erb +++ b/app/views/crawler/index.html.erb @@ -1,9 +1,39 @@

HTU News

- -<% @crawlobjs.each do |co| %> - -<% end %> -
<%= render co %> -<%= link_to "move_to_news",move_to_news_crawler_path(co) %> -<%= render co.something unless co.something.nil? %> -
+ +
+ + +
+ + <% @crawlobjs.each do |co| %> + + + + + <% end %> +
<%= render co %> + <%= link_to "move_to_news",move_to_news_crawler_path(co) %> + <%= render co.something unless co.something.nil? %> +
+ +
+
+ + <% @crawlobjs_etit.each do |co| %> + + + + + <% end %> +
<%= render co %> + <%= link_to "move_to_news",move_to_news_crawler_path(co) %> + <%= render co.something unless co.something.nil? %> +
+ +
+ +
+ diff --git a/app/views/flags/.#_flaglink.html.erb b/app/views/flags/.#_flaglink.html.erb new file mode 120000 index 0000000..d96c12d --- /dev/null +++ b/app/views/flags/.#_flaglink.html.erb @@ -0,0 +1 @@ +andreas@andreas-ThinkPad-S430.11733:1434727463 \ No newline at end of file diff --git a/app/views/flags/_flag.js.erb b/app/views/flags/_flag.js.erb new file mode 100644 index 0000000..fe82719 --- /dev/null +++ b/app/views/flags/_flag.js.erb @@ -0,0 +1 @@ +$('#<%=@obj.flaglinkid(params[:flag]) %>').replaceWith("<%= escape_javascript( render(partial: "flags/flaglink", format: "html", locals: {flag: params[:flag]}) )%>"); diff --git a/app/views/flags/_flaglink.html.erb b/app/views/flags/_flaglink.html.erb new file mode 100644 index 0000000..3c515df --- /dev/null +++ b/app/views/flags/_flaglink.html.erb @@ -0,0 +1,2 @@ +<% fi = {"badquality"=>"fa fa-flag", "delete"=>"fa fa-trash"} %> +<%= flag_link(@obj,flag, ff_icon(fi[flag])) %> diff --git a/app/views/lvas/show.html.erb b/app/views/lvas/show.html.erb index 644c8d8..4bc6e79 100755 --- a/app/views/lvas/show.html.erb +++ b/app/views/lvas/show.html.erb @@ -85,7 +85,7 @@

<%= I18n.t("lva.ratebsp")%> <%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_omniauth_authorize_path(:facebook) ,class: :linkbox %>

<%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %> - <% @lva.beispiele.order(:datum).each do |b| %> + <% @beispiele_all.each do |b| %> <% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + b.updated_at.try(:utc).try(:to_s)) do %> <%= render b%> <% end %> diff --git a/app/views/neuigkeiten/_compact.html.erb b/app/views/neuigkeiten/_compact.html.erb index b0e2648..e6ac96a 100644 --- a/app/views/neuigkeiten/_compact.html.erb +++ b/app/views/neuigkeiten/_compact.html.erb @@ -13,7 +13,7 @@ <% end %> <% else %> <% end %>

- <%= neuigkeit.title%> + <%= raw(neuigkeit.title) %>

<%= raw(neuigkeit.text_first_words) unless neuigkeit.text.nil?%>
diff --git a/app/views/studien/_form.html.erb b/app/views/studien/_form.html.erb index 7d0bef3..9cdf61d 100755 --- a/app/views/studien/_form.html.erb +++ b/app/views/studien/_form.html.erb @@ -10,32 +10,32 @@

-

+

- -
- <%= f.input :abkuerzung %> - <%= f.input :zahl %> - <%= f.input :typ, :as=>:select, :include_blank=>false, :collection=>["Bachelor","Master"] %> - - <%= image_tag(@studium.picture.thumb.url) unless @studium.picture.nil? %> - <%= f.file_field :picture %> - <%= f.hidden_field :picture_cache %> -
- -
-
- <%= raw(@studium.desc) %> -
- <%= f.input :desc, :as=>:hidden %> -
- + +
+ <%= f.input :abkuerzung %> + <%= f.input :zahl %> + <%= f.input :typ, :as=>:select, :include_blank=>false, :collection=>["Bachelor","Master"] %> + + <%= image_tag(@studium.picture.thumb.url) unless @studium.picture.nil? %> + <%= f.file_field :picture %> + <%= f.hidden_field :picture_cache %> +
+ +
+
+ <%= raw(@studium.desc) %> +
+ <%= f.input :desc, :as=>:hidden %> +
+
<%= raw(@studium.qualifikation) %> @@ -65,7 +65,7 @@ <%= tinymce :inline_div %> <%= f.actions do %> <%= f.action :submit, :as => :input %> - <%= link_to 'Back', studien_path, :data=>{:locale=>I18n.locale}, class: :btn%> + <%= link_to 'Back', studien_path, :data=>{:locale=>I18n.locale}, class: :btn %> <% end %> <% end %>
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..5f8ca83 --- /dev/null +++ b/app/views/themes/blue2/beispiele/_beispiel.html.erb @@ -0,0 +1,45 @@ +
+
+
+ <%=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, "goodquality")%> + + <%= flag_link(beispiel, "badquality")%> + <%= flag_link(beispiel, "delete")%> + + <%= + 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/app/views/themes/blue2/home/intern.html.erb b/app/views/themes/blue2/home/intern.html.erb index 2f5aab7..3fdfd18 100644 --- a/app/views/themes/blue2/home/intern.html.erb +++ b/app/views/themes/blue2/home/intern.html.erb @@ -2,17 +2,23 @@
-
+
Suche nach Protokollen <%= semantic_form_for :search,:remote=>true, :url=>search_documents_path, :html=>{:id=>"search_form",:class=>"", :method=>'get'} do |f| %> <%= f.input :query, :input_html => { :name => 'query' } , :label=>false, :class=>"search-query" %> diff --git a/app/views/themes/blue2/lvas/show.html.erb b/app/views/themes/blue2/lvas/show.html.erb new file mode 100755 index 0000000..cd7efcb --- /dev/null +++ b/app/views/themes/blue2/lvas/show.html.erb @@ -0,0 +1,147 @@ +<%= content_for :header do %> +Fetsite - <%= @lva.full_name %> +<% set_meta_tags :og => { + :url=>lva_path(:theme=>nil) } +%> +<%= display_meta_tags %> +<% end %> +
+
+ <%= render 'studien/tabs'%> +

<%= notice %>

+ +
+
+ <%= render 'layouts/pretty_toolbar' %> +
+
+ +
+
+

<%= @lva.full_name %>

+ + +
+

<%= I18n.t('lva.pruefungsinfo')%>

+
+ <%= @lva.pruefungsinformation.to_s.html_safe %> +
+ +

<%= I18n.t('lva.lernaufwand')%>

+
+ <%= @lva.lernaufwand %> +
+ +

<%= I18n.t('lva.desc')%>

+
+ <%= @lva.desc.to_s.html_safe %> +
+
+
+
+
+
    +
  • <%= I18n.t('lva.lvanr')%>: <%=@lva.lvanr %>
  • +
  • ECTS: <%=@lva.ects %>
  • +
  • <%= I18n.t('lva.stunden')%>: <%=@lva.stunden %>
  • +
+

<%= I18n.t('lva.module')%>

+
    + <% @lva.modul.each do |modul| %> +
  • <%= link_to modul.name , modul_path(modul)%> +
      + <% modul.modulgruppen.each do |g| %> + +
    • <%= link_to g.studium.title_context , studium_path(g.studium)%> (<%=link_to g.name, modulgruppe_path(g)%>)
    • + <% end %> +
    +
  • + + <% end %> +
+
+
+

<%= I18n.t "lecturers.lecturers" %>

+ <% @lva.lecturers.each do |lec| %> + <%= render :partial=>'lecturers/lec_lva', :object=>lec %> + + <% end %> +
+
+
+ + +
+
+ +

<%= I18n.t("lva.bspe") %>

+

+ <%= I18n.t("lva.ratebsp")%> + <%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_omniauth_authorize_path(:facebook) ,class: :linkbox %> +

+ <%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %> + <% @beispiele.each do |b| %> + <% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + b.updated_at.try(:utc).try(:to_s)) do %> + <%= render b%> + <% end %> + <% end %> + <% if @beispiele_badQ.count > 0 %> +

Bad Quality or Outdated

+ <% @beispiele_badQ.each do |b| %> + <% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + b.updated_at.try(:utc).try(:to_s)) do %> + <%= render b%> + <% end %> + <% end %> + <% end %> + <% if @beispiele_deleted.count > 0 %> +

Trash

+ <% @beispiele_deleted.each do |b| %> + <% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag,b).to_s+ "_" + b.updated_at.try(:utc).try(:to_s)) do %> + <%= render b%> + <% end %> + <% end %> + <% end %> + +
+ +
+ +
+
+ <% unless @lva.nlinks.empty? %> +

<%= I18n.t("rubrik.title") %>

+ <% @lva.nlinks.each do |l| %> + <%= render l.neuigkeit %> + <% end %> + <% end %> + +
+
+ <% cache("lva_beispiel_form_bulk_"+@lva.id.to_s+I18n.locale.to_s+@lva.updated_at.to_i.to_s) do %> +
+
+ <%= render 'beispiele/form_bulk' %> +
+
+ + <% end %> + <% unless @crawlobjects.nil? %> +
+
+ <% @crawlobjects.each do |co| %> + <%= render co %> + <% end %> +
+
+ <% end %> + +
+
+ diff --git a/config/initializers/init_flagable.rb b/config/initializers/init_flagable.rb new file mode 100644 index 0000000..48ef1d2 --- /dev/null +++ b/config/initializers/init_flagable.rb @@ -0,0 +1,4 @@ +require 'flagable' +ActionController::Base.send :include, Flagable::ActsAsFlagableController +ActiveRecord::Base.send :include, Flagable::ActsAsFlagableRecord +ActionView::Base.send :include, Flagable::FlagableHelper diff --git a/config/initializers/query_trace.rb b/config/initializers/query_trace.rb new file mode 100644 index 0000000..a2c486b --- /dev/null +++ b/config/initializers/query_trace.rb @@ -0,0 +1 @@ +ActiveRecordQueryTrace.enabled=true diff --git a/config/routes.rb b/config/routes.rb index 75fc02b..dd339d5 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -21,6 +21,7 @@ resources :crawler, :only=>[] do collection do get :index + get :do_crawl_news end member do get :move_to_news @@ -31,9 +32,11 @@ devise_for :users , :controllers=>{:omniauth_callbacks=> "users/omniauth_callbacks"} - scope '(:locale)' do + scope '(:locale)', constraints: {:locale=>/en|de/i} do scope '(t/:theme)' do - + get "" , controller: :home, action: :index + get "intern" , controller: :home, action: :intern + scope '(:ansicht)' do resources :studien, :only=>[:new,:edit,:update,:destroy,:show] do member do @@ -70,6 +73,7 @@ member do get 'like' get 'dislike' + get 'flag' end end resources :lvas do @@ -106,7 +110,8 @@ resources :fragen, :only =>[:new, :edit, :update, :destroy, :create] - resources :neuigkeiten, :only => [:show] + resources :neuigkeiten, :only => [:show] , constraints: {id: /\d+/i} + get "neuigkeiten", controller: :rubriken, action: :index, as: "neuigkeiten" resources :rubriken do collection do get 'verwalten' , :action => :alle_verwalten diff --git a/db/migrate/20150617105704_add_index_for_neuigkeiten.rb b/db/migrate/20150617105704_add_index_for_neuigkeiten.rb new file mode 100644 index 0000000..ae03b04 --- /dev/null +++ b/db/migrate/20150617105704_add_index_for_neuigkeiten.rb @@ -0,0 +1,11 @@ +class AddIndexForNeuigkeiten < ActiveRecord::Migration + def change + add_index :neuigkeiten, :rubrik_id + add_index :neuigkeiten, :cache_is_published + add_index :calentries, [:object_type, :object_id] + add_index :attachments, [:parent_type, :parent_id] + add_index :attachments, [:flag_titlepic, :parent_type, :parent_id] + add_index :rubriken, :public + end + +end diff --git a/db/migrate/20150620101949_add_flags_to_beispiel.rb b/db/migrate/20150620101949_add_flags_to_beispiel.rb new file mode 100644 index 0000000..45c0d81 --- /dev/null +++ b/db/migrate/20150620101949_add_flags_to_beispiel.rb @@ -0,0 +1,14 @@ +class AddFlagsToBeispiel < ActiveRecord::Migration + def change + add_column :beispiele, :flag_badquality, :boolean + add_column :beispiele, :flag_duplicate, :boolean + add_column :beispiele, :flag_delete, :boolean + add_column :beispiele, :flag_goodquality, :boolean + add_column :beispiele, :lecturer_id, :integer + add_index :beispiele, :flag_badquality + add_index :beispiele, :flag_duplicate + add_index :beispiele, :flag_delete + add_index :beispiele, :flag_goodquality + + end +end 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 new file mode 100644 index 0000000..01aabff --- /dev/null +++ b/lib/flagable.rb @@ -0,0 +1,70 @@ +module Flagable + module ActsAsFlagableController + extend ActiveSupport::Concern + included do + + end + module ClassMethods + def acts_as_flagable(options={}) + include Flagable::ActsAsFlagableController::LocalInstanceMethods + extend Flagable::ActsAsFlagableController::LocalClassMethods + end + end + module LocalClassMethods + + end + module LocalInstanceMethods + + def flag + fi = controller_name.classify.constantize::FLAG_ICONS + + @obj=controller_name.classify.constantize.find(params[:id]) + lflag=("flag_"+params[:flag]).to_sym + unless params[:flag].nil? || params[:flag].empty? || params[:value].nil? + if @obj.respond_to?(lflag.to_s+"=") + @obj.send(lflag.to_s+"=",params[:value]=="true") + @obj.save + end + end + respond_to do |format| + format.html {render partial: "flags/flaglink", locals: {flag: params[:flag],icon: fi[params[:flag]]}} + format.js {render partial: "flags/flag", locals: {flag: params[:flag], icon: fi[params[:flag]]}} + 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 flaglinkid(flag) + return self.class.to_s + "_" + self.id.to_s + "_flag_"+flag.to_s + end + end + end + module FlagableHelper + + def flag_link(obj, flag, text="") + flag=flag.to_s + fi = obj.class::FLAG_ICONS + value=obj.send("flag_"+flag) + cstyle=(value) ? "true" :"false" + link_to ff_icon(fi[flag]), flag_beispiel_path(obj,{flag: flag, value: !value, theme: nil, locale: nil}), remote: true, class:("flag-"+cstyle +" flag-"+flag + "-"+cstyle ), id: obj.flaglinkid(flag) + end + end +end +ActionView::Base.send :include, Flagable::FlagableHelper