diff --git a/Gemfile b/Gemfile index d0fe369..2ab6deb 100755 --- a/Gemfile +++ b/Gemfile @@ -98,4 +98,6 @@ gem "seed_dump", "~> 0.5.3" #gem "themes_for_rails", :git=> 'git://github.com/lucasefe/themes_for_rails.git' gem 'themes_for_rails' -gem 'rubyzip' \ No newline at end of file +gem 'rubyzip' + +gem 'acts_as_votable' \ No newline at end of file diff --git a/app/assets/stylesheets/layout.css.scss b/app/assets/stylesheets/layout.css.scss index 65afdb4..039053b 100755 --- a/app/assets/stylesheets/layout.css.scss +++ b/app/assets/stylesheets/layout.css.scss @@ -32,10 +32,10 @@ a.linkbox, div.contentbox padding:5px; border-radius:$box-border-radius; border: $box-border; - background: $box-background; - + background: $box-background; } + a.linkbox:hover { box-shadow: 1px 1px 2px 2px lightgray; @@ -164,3 +164,12 @@ ul.linklist li a i{ vertical-align:middle; margin-right:6px; font-size:2em;} +span.linklist a { + padding:5px; + border-radius:$box-border-radius; + border: $box-border; + background: $box-background; + display:block; + float:left; + +} \ No newline at end of file diff --git a/app/controllers/beispiele_controller.rb b/app/controllers/beispiele_controller.rb index ed0b475..647c45f 100755 --- a/app/controllers/beispiele_controller.rb +++ b/app/controllers/beispiele_controller.rb @@ -1,16 +1,17 @@ class BeispieleController < ApplicationController # GET /beispiele - # GET /beispiele.json + load_and_authorize_resource + include LikeVoteable def index @beispiele = Beispiel.all - + respond_to do |format| format.html # index.html.erb format.json { render json: @beispiele } end end - + # GET /beispiele/1 # GET /beispiele/1.json def show @@ -47,8 +48,8 @@ class BeispieleController < ApplicationController logger.info "New Beispiel: #{params.inspect}" # @backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva) - @beispiel.name=@beispiel.beispieldatei.filename - logger.info "New Beispiel: #{@beispiel.attributes.inspect}" + @beispiel.name=@beispiel.beispieldatei.filename + logger.info "New Beispiel: #{@beispiel.attributes.inspect}" @beispiel.datum=Time.now respond_to do |format| @@ -91,7 +92,7 @@ class BeispieleController < ApplicationController # DELETE /beispiele/1.json def destroy @beispiel = Beispiel.find(params[:id]) - @backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva) + @backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva) @beispiel.destroy respond_to do |format| @@ -99,4 +100,4 @@ class BeispieleController < ApplicationController format.json { head :no_content } end end -end + end diff --git a/app/controllers/lvas_controller.rb b/app/controllers/lvas_controller.rb index 916916e..5423e28 100755 --- a/app/controllers/lvas_controller.rb +++ b/app/controllers/lvas_controller.rb @@ -117,7 +117,7 @@ private @toolbar_elements =[] @toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)} if can? :edit, @lva @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>"Tissvergleichladen", :path=> compare_tiss_lva_path(@lva)} if can? :compare_tiss, @lva - @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('common.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>'Sure?' } if can? :delete, @lva + @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('lva.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>t('lva.deletesure') } if can? :delete, @lva diff --git a/app/models/beispiel.rb b/app/models/beispiel.rb index 6f87953..8e0ba3c 100755 --- a/app/models/beispiel.rb +++ b/app/models/beispiel.rb @@ -14,7 +14,9 @@ class Beispiel < ActiveRecord::Base has_paper_trail attr_accessible :desc, :name, :lva_id, :beispieldatei, :beispieldatei_cache, :datum + acts_as_votable belongs_to :lva + mount_uploader :beispieldatei, AttachmentUploader validates :beispieldatei, :presence => true validates :name, :presence => true diff --git a/app/views/beispiele/_beispiel.html.erb b/app/views/beispiele/_beispiel.html.erb index 95206e5..b44dde7 100644 --- a/app/views/beispiele/_beispiel.html.erb +++ b/app/views/beispiele/_beispiel.html.erb @@ -1,13 +1,32 @@
-
-<%=link_to beispiel.name, beispiel.beispieldatei.url%> -<%= link_to "edit", edit_beispiel_path(beispiel)%> -<%= link_to "delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')}%>
+
-<%= I18n.t("file.size") + ": " + (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB +<%=link_to ffi1_icon("note20")+" " + beispiel.name, beispiel.beispieldatei.url, title: beispiel.desc %> + +<%= I18n.t("file.size") + ": " + (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB
+<%= +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) +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) +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 ff_icon("icon-remove")+" delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')} if can? :delete, beispiel %>
+
-
+
<%= beispiel.desc %>
diff --git a/app/views/lvas/show.html.erb b/app/views/lvas/show.html.erb index 01fe5ba..60c311e 100755 --- a/app/views/lvas/show.html.erb +++ b/app/views/lvas/show.html.erb @@ -22,11 +22,6 @@ <%= @lva.desc.to_s.html_safe %>
-

Beispiele

- <%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %> - <% @lva.beispiele.each do |b| %> - <%= render b%> - <% end %>
@@ -61,6 +56,17 @@ +
+
+ +

Beispiele

+ <%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %> + <% @lva.beispiele.each do |b| %> + <%= render b%> + <% end %> +
+
+
<% unless @lva.nlinks.empty? %> diff --git a/config/application.rb b/config/application.rb index b5812a0..38f38e4 100755 --- a/config/application.rb +++ b/config/application.rb @@ -1,7 +1,7 @@ require File.expand_path('../boot', __FILE__) require 'rails/all' - +require File.expand_path('lib/like_voteable.rb') if defined?(Bundler) # If you precompile assets before deploying to production, use this line Bundler.require(*Rails.groups(:assets => %w(development test))) diff --git a/config/environment.rb b/config/environment.rb index 346858f..be3a8f5 100755 --- a/config/environment.rb +++ b/config/environment.rb @@ -3,3 +3,4 @@ require File.expand_path('../application', __FILE__) # Initialize the rails application Fetsite::Application.initialize! + diff --git a/config/locales/studien.de.yml b/config/locales/studien.de.yml index 2b8bb28..8583f6e 100644 --- a/config/locales/studien.de.yml +++ b/config/locales/studien.de.yml @@ -20,6 +20,8 @@ de: addrem: "Lva hinzufügen/entfernen" editlvas: "Lvas bearbeiten" list: "Alle Lvas" + delete: "LVA löschen" + deletesure: "Willst du sicher die ganze LVA löschen?" modulgruppe: typ: "Typ" edit: "Modulgruppe bearbeiten" diff --git a/config/routes.rb b/config/routes.rb index 1c8dcfc..07d5b8f 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -62,7 +62,12 @@ Fetsite::Application.routes.draw do end end - resources :beispiele#, :only=>[:show,:index,:create] + resources :beispiele do #, :only=>[:show,:index,:create] + member do + get 'like' + get 'dislike' + end + end resources :lvas do member do get 'beispiel_sammlung' diff --git a/db/migrate/20140719200449_acts_as_votable_migration.rb b/db/migrate/20140719200449_acts_as_votable_migration.rb new file mode 100644 index 0000000..5f381af --- /dev/null +++ b/db/migrate/20140719200449_acts_as_votable_migration.rb @@ -0,0 +1,27 @@ +class ActsAsVotableMigration < ActiveRecord::Migration + def self.up + create_table :votes do |t| + + t.references :votable, :polymorphic => true + t.references :voter, :polymorphic => true + + t.boolean :vote_flag + t.string :vote_scope + t.integer :vote_weight + + t.timestamps + end + + if ActiveRecord::VERSION::MAJOR < 4 + add_index :votes, [:votable_id, :votable_type] + add_index :votes, [:voter_id, :voter_type] + end + + add_index :votes, [:voter_id, :voter_type, :vote_scope] + add_index :votes, [:votable_id, :votable_type, :vote_scope] + end + + def self.down + drop_table :votes + end +end diff --git a/lib/like_voteable.rb b/lib/like_voteable.rb new file mode 100644 index 0000000..79c1aef --- /dev/null +++ b/lib/like_voteable.rb @@ -0,0 +1,21 @@ +module LikeVoteable + def self.included(base) + base.class_eval do + include InstanceMethods + #base.hidden_actions.delete 'like' + end + end + module InstanceMethods + def like + @obj=controller_name.classify.constantize.find(params[:id]) + @obj.liked_by current_user + redirect_to @obj + end + def dislike + @obj=controller_name.classify.constantize.find(params[:id]) + @obj.disliked_by current_user + redirect_to @obj + end + + end +end