voteable
This commit is contained in:
2
Gemfile
2
Gemfile
@@ -99,3 +99,5 @@ gem "seed_dump", "~> 0.5.3"
|
||||
gem 'themes_for_rails'
|
||||
|
||||
gem 'rubyzip'
|
||||
|
||||
gem 'acts_as_votable'
|
||||
@@ -33,9 +33,9 @@ a.linkbox, div.contentbox
|
||||
border-radius:$box-border-radius;
|
||||
border: $box-border;
|
||||
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;
|
||||
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
class BeispieleController < ApplicationController
|
||||
# GET /beispiele
|
||||
# GET /beispiele.json
|
||||
|
||||
load_and_authorize_resource
|
||||
include LikeVoteable
|
||||
def index
|
||||
@beispiele = Beispiel.all
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,13 +1,32 @@
|
||||
|
||||
<div class="row-fluid contentbox">
|
||||
<div class="span5">
|
||||
<b><%=link_to beispiel.name, beispiel.beispieldatei.url%></b>
|
||||
<%= link_to "edit", edit_beispiel_path(beispiel)%>
|
||||
<%= link_to "delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')}%></br>
|
||||
<div class="span8">
|
||||
|
||||
<%= I18n.t("file.size") + ": " + (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB
|
||||
<b><%=link_to ffi1_icon("note20")+" " + beispiel.name, beispiel.beispieldatei.url, title: beispiel.desc %></b>
|
||||
|
||||
<%= I18n.t("file.size") + ": " + (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB <br>
|
||||
<span class="linklist"><%=
|
||||
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 %></br>
|
||||
</span>
|
||||
</div>
|
||||
<div class="span7">
|
||||
<div class="span4">
|
||||
<%= beispiel.desc %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -22,11 +22,6 @@
|
||||
<%= @lva.desc.to_s.html_safe %>
|
||||
</div>
|
||||
|
||||
<h2>Beispiele</h2>
|
||||
<%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %>
|
||||
<% @lva.beispiele.each do |b| %>
|
||||
<%= render b%>
|
||||
<% end %>
|
||||
|
||||
|
||||
</div>
|
||||
@@ -61,6 +56,17 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
|
||||
<h2>Beispiele</h2>
|
||||
<%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %>
|
||||
<% @lva.beispiele.each do |b| %>
|
||||
<%= render b%>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<% unless @lva.nlinks.empty? %>
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -3,3 +3,4 @@ require File.expand_path('../application', __FILE__)
|
||||
|
||||
# Initialize the rails application
|
||||
Fetsite::Application.initialize!
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'
|
||||
|
||||
27
db/migrate/20140719200449_acts_as_votable_migration.rb
Normal file
27
db/migrate/20140719200449_acts_as_votable_migration.rb
Normal file
@@ -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
|
||||
21
lib/like_voteable.rb
Normal file
21
lib/like_voteable.rb
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user