From a8dd419f9ea882b9a1b942911e54ac0f2a867080 Mon Sep 17 00:00:00 2001 From: Andreas Stephanides Date: Wed, 24 Sep 2014 14:39:59 +0200 Subject: [PATCH] pagination update --- Gemfile | 7 +- app/assets/javascripts/pagination.js.coffee | 1 + app/controllers/beispiele_controller.rb | 2 +- app/controllers/comments_controller.rb | 33 ++++++---- app/controllers/rubriken_controller.rb | 8 +-- app/controllers/themen_controller.rb | 5 ++ app/models/comment.rb | 7 ++ app/views/beispiele/_beispiel.html.erb | 71 ++++++++++++--------- app/views/comments/_comment.html.erb | 8 ++- app/views/comments/_comments.html.erb | 3 + app/views/comments/hide.js.erb | 3 + app/views/comments/index.html.erb | 1 + app/views/comments/index.js.erb | 2 + app/views/rubriken/index.html.erb | 2 +- app/views/rubriken/show.html.erb | 4 +- app/views/rubriken/show.js.erb | 2 +- config/routes.rb | 7 +- 17 files changed, 109 insertions(+), 57 deletions(-) create mode 100644 app/views/comments/hide.js.erb create mode 100644 app/views/comments/index.js.erb diff --git a/Gemfile b/Gemfile index 363e073..c7dd22e 100755 --- a/Gemfile +++ b/Gemfile @@ -103,6 +103,7 @@ gem 'themes_for_rails' gem 'rubyzip' gem 'acts_as_votable' - -gem 'will_paginate' -gem 'bootstrap-will_paginate' +gem 'kaminari' +gem 'bootstrap-kaminari-views', :git=>'git://github.com/matenia/bootstrap-kaminari-views.git' +#gem 'will_paginate', :git=>'git://github.com/mislav/will_paginate.git' +#gem 'bootstrap-will_paginate' diff --git a/app/assets/javascripts/pagination.js.coffee b/app/assets/javascripts/pagination.js.coffee index 1ae1daa..59903ef 100644 --- a/app/assets/javascripts/pagination.js.coffee +++ b/app/assets/javascripts/pagination.js.coffee @@ -1,4 +1,5 @@ + $ -> if $('#infinite-scrolling').size() > 0 more_posts_url = $('.pagination .next_page a').attr('href') diff --git a/app/controllers/beispiele_controller.rb b/app/controllers/beispiele_controller.rb index 1917613..f82871c 100755 --- a/app/controllers/beispiele_controller.rb +++ b/app/controllers/beispiele_controller.rb @@ -18,7 +18,7 @@ class BeispieleController < ApplicationController # @lva = params([:lva]) unless params([:lva]).nil? @beispiel = Beispiel.find(params[:id]) respond_to do |format| - format.html { redirect_to @beispiel.lva } + format.html { redirect_to lva_path(@beispiel.lva , show_comments: params[:show_comments])} format.js end end diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 7501c65..39e0490 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -1,10 +1,25 @@ class CommentsController < ApplicationController - def index - @comments=Comment.all - end + def index + @commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil? + @comments=@commentable.comments.order(:created_at).roots.page(params[:page]).per(2).reverse_order + respond_to do |format| + format.html # new.html.erb + format.json { render json: @comment } + format.js + end + + end + def hide + @commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil? + respond_to do |format| + format.js + end + + end def show @comment = Comment.find(params[:id]) + respond_to do |format| format.html # show.html.erb format.json { render json: @comment } @@ -33,15 +48,9 @@ class CommentsController < ApplicationController c = params[:comment][:commentable_type].constantize.find(params[:comment][:commentable_id]) unless params[:comment][:commentable_type].nil? or params[:comment][:commentable_id].nil? @comment = Comment.build_for(c, current_user,"", params_new) - #raise @comment.to_yaml.to_s - # @comment.commentable= c - - - - respond_to do |format| if @comment - format.html { redirect_to @comment.commentable, notice: 'Comment was successfully created.' } + format.html { redirect_to @comment.commentable, notice: 'Comment was successfully created.', show_comments: true } format.json { render json: @comment, status: :created, location: @comment } else format.html { render action: "new" } @@ -73,11 +82,13 @@ class CommentsController < ApplicationController # DELETE /comments/1.json def destroy @comment = Comment.find(params[:id]) + @commentable=@comment.commentable @comment.destroy respond_to do |format| - format.html { redirect_to comments_url } + format.html { redirect_to @commentable, :action=>"show"} format.json { head :no_content } + end end end diff --git a/app/controllers/rubriken_controller.rb b/app/controllers/rubriken_controller.rb index 7e94f1d..0ccc5fe 100755 --- a/app/controllers/rubriken_controller.rb +++ b/app/controllers/rubriken_controller.rb @@ -4,10 +4,10 @@ class RubrikenController < ApplicationController def index if can?(:showintern, Rubrik) @rubriken = Rubrik.all - @neuigkeiten = Neuigkeit.paginate(page: params[:page], per_page:3) + @neuigkeiten = Neuigkeit.page(params[:page]).per(3) else @rubriken = Rubrik.where(:public=>true) - @neuigkeiten = Neuigkeit.public.published.paginate(page: params[:page], per_page:3) + @neuigkeiten = Neuigkeit.public.published.page(params[:page]).per(3) end @calentries= @rubriken.collect(&:calentries).flatten @@ -31,9 +31,9 @@ class RubrikenController < ApplicationController @moderatoren=User.with_role(:newsmoderator,@rubrik) @calentries= @rubrik.calentries if can?(:showunpublished, Neuigkeit) - @neuigkeiten = @rubrik.neuigkeiten.paginate(page: params[:page], per_page:3) + @neuigkeiten = @rubrik.neuigkeiten.page(params[:page]).per(3) else - @neuigkeiten = @rubrik.neuigkeiten.published.paginate(page: params[:page], per_page:3) + @neuigkeiten = @rubrik.neuigkeiten.published..page(params[:page]).per(3) end @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 diff --git a/app/controllers/themen_controller.rb b/app/controllers/themen_controller.rb index 5b4d39c..9b44767 100644 --- a/app/controllers/themen_controller.rb +++ b/app/controllers/themen_controller.rb @@ -18,6 +18,11 @@ class ThemenController < ApplicationController format.js end end + def sanitize + @thema = Thema.find(params[:id]) + @fragen=@thema.fragen + + end def verwalten @thema = Thema.find(params[:id]) @attachment=Attachment.new diff --git a/app/models/comment.rb b/app/models/comment.rb index a074fd7..dd238b5 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -32,6 +32,13 @@ class Comment < ActiveRecord::Base t_url= user.fetprofile.picture.thumb.url unless user.nil? or user.fetprofile.nil? t_url end + def self.wrapid_for(c) + "comments_" + c.class.to_s + "_" + c.id.to_s + end + + def self.switchshowid_for(c) + "show_comments_" + c.class.to_s + "_" + c.id.to_s + end def divid "comment_" + id.to_s end diff --git a/app/views/beispiele/_beispiel.html.erb b/app/views/beispiele/_beispiel.html.erb index d7b9290..0cc3a5f 100644 --- a/app/views/beispiele/_beispiel.html.erb +++ b/app/views/beispiele/_beispiel.html.erb @@ -1,41 +1,50 @@
-
-
+
+
- <%=link_to ffi1_icon("note20")+" " + beispiel.name, beispiel.beispieldatei.url, title: beispiel.desc %> + <%=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), remote: true -else -"liked by " + beispiel.get_likes.size.to_s -end -%> + <%= 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), 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 + <%= + 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 ff_icon("icon-remove")+" delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')} if can? :delete, beispiel %> -<%= link_to "Refresh", beispiel, remote: true %>
-
-
-
-<%= beispiel.desc %> -
-
-<%= link_to "comment" , new_comment_path( commentable_type: "Beispiel", commentable_id: beispiel.id), remote:true if can? :comment, beispiel %> + <%= 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 %> + <%= link_to "Refres1h", beispiel_path(beispiel,show_comments: true), remote: true %>
+ +
+
+ <%= beispiel.desc %> +
+
+ + <%= link_to "comment" , new_comment_path( commentable_type: "Beispiel", commentable_id: beispiel.id), remote:true if can? :comment, beispiel %> + <%= link_to "comments:.."+beispiel.comments.count().to_s, comments_path(commentable_type: "Beispiel", commentable_id: beispiel.id), remote:true, id: Comment.switchshowid_for(beispiel) %>
-<% unless beispiel.comments.roots.empty? %> -
<%= render partial:"comments/comments", object: beispiel.comments.order(:created_at).roots.reverse_order %>
-<% end %> + <% unless beispiel.comments.roots.empty? %> +
+
+
+ <%= render partial:"comments/comments", object: beispiel.comments.order(:created_at).roots.reverse_order if params[:show_comments] %> +
+
+
+ <% end %>
diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index 810365e..2740c2f 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -1,17 +1,19 @@
<%= image_tag comment.thumb_url %>
- <%= comment.user.try(:email) %> (<%= I18n.l(comment.created_at) %>): + + <%= (!comment.anonym) ? comment.user.try(:email) : "Anonym" %> (<%= I18n.l(comment.created_at) %>) <%= link_to ffi1_icon("remove9"), comment, method: :delete, data: { confirm: 'Are you sure?' } %>:

<%= comment.text %> <% if can?(:comment, comment.commentable) %>
<%= link_to "comment" , new_comment_path( commentable_type: "Comment", commentable_id: comment.id), remote:true %> <% end %>

+
+
+ <%= render partial:"comments/comments", object: comment.children.order(:created_at).reverse_order if comment.children.size >0 %>
-
-
diff --git a/app/views/comments/_comments.html.erb b/app/views/comments/_comments.html.erb index 1d2f091..4cda60e 100644 --- a/app/views/comments/_comments.html.erb +++ b/app/views/comments/_comments.html.erb @@ -6,4 +6,7 @@ <% end %> +<% if comments.first.root? %> +<%= paginate comments, :remote=>true , :theme=>'twitter-bootstrap'%> +<% end %> <% end %> diff --git a/app/views/comments/hide.js.erb b/app/views/comments/hide.js.erb new file mode 100644 index 0000000..53ca8af --- /dev/null +++ b/app/views/comments/hide.js.erb @@ -0,0 +1,3 @@ +$("#<%= Comment.wrapid_for(@commentable) %>").html("<%= escape_javascript "" %>") + +$("#<%= Comment.switchshowid_for(@commentable) %>").attr("href","<%= escape_javascript comments_path(commentable_type: @commentable.class.to_s, commentable_id: @commentable.id) %>") diff --git a/app/views/comments/index.html.erb b/app/views/comments/index.html.erb index bfa38fe..d97f147 100644 --- a/app/views/comments/index.html.erb +++ b/app/views/comments/index.html.erb @@ -1,4 +1,5 @@

Listing comments

+<%= render partial:"comments/comments", object: @comments %> diff --git a/app/views/comments/index.js.erb b/app/views/comments/index.js.erb new file mode 100644 index 0000000..13d7356 --- /dev/null +++ b/app/views/comments/index.js.erb @@ -0,0 +1,2 @@ +$("#<%= Comment.wrapid_for(@commentable) %>").html("<%= escape_javascript render partial:"comments/comments", object: @comments %>") +$("#<%= Comment.switchshowid_for(@commentable) %>").attr("href","<%= escape_javascript hide_comments_path(commentable_type: @commentable.class.to_s, commentable_id: @commentable.id) %>") diff --git a/app/views/rubriken/index.html.erb b/app/views/rubriken/index.html.erb index 5b471dc..e07d4d7 100755 --- a/app/views/rubriken/index.html.erb +++ b/app/views/rubriken/index.html.erb @@ -21,7 +21,7 @@ <% end %>
-<%= will_paginate @neuigkeiten %> +<%= paginate @neuigkeiten, theme:'twitter-bootstrap' %>
diff --git a/app/views/rubriken/show.html.erb b/app/views/rubriken/show.html.erb index a16df8d..5a6e478 100755 --- a/app/views/rubriken/show.html.erb +++ b/app/views/rubriken/show.html.erb @@ -32,7 +32,9 @@
-<%= will_paginate @neuigkeiten %> +<%= paginate @neuigkeiten, theme:'twitter-bootstrap' %> + +
diff --git a/app/views/rubriken/show.js.erb b/app/views/rubriken/show.js.erb index 632afb1..bd61a44 100644 --- a/app/views/rubriken/show.js.erb +++ b/app/views/rubriken/show.js.erb @@ -1,6 +1,6 @@ $('#neuigkeiten').append('<%= j render @neuigkeiten, :wrap_in => :li %>'); <% if @neuigkeiten.next_page %> - $('.pagination').replaceWith('<%= j will_paginate @neuigkeiten %>'); + $('.pagination').replaceWith('<%= j paginate @neuigkeiten, theme: 'twitter-bootstrap' %>'); <% else %> $(window).off('scroll'); $('.pagination').remove(); diff --git a/config/routes.rb b/config/routes.rb index 54ea679..c29e992 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -132,7 +132,11 @@ Fetsite::Application.routes.draw do end end end - resources :comments + resources :comments do + collection do + get 'hide' + end + end resources :home, :only=>[:index] do get :search, :on => :collection collection do @@ -160,6 +164,7 @@ Fetsite::Application.routes.draw do get :attachments get :fragen get :verwalten + get :sanitize end resources :attachments end