Skip to content
This repository has been archived by the owner on Apr 23, 2021. It is now read-only.

Commit

Permalink
Merge pull request #14 from KarlHochfilzer/master
Browse files Browse the repository at this point in the history
Add Pagination to top of pages.
  • Loading branch information
iboard committed Nov 19, 2012
2 parents e631cbc + 36e2910 commit a47956d
Show file tree
Hide file tree
Showing 14 changed files with 81 additions and 51 deletions.
11 changes: 5 additions & 6 deletions app/assets/javascripts/search.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,11 @@ jQuery ->
if $('#token-input-search_search_text').length > 0
_placeholderText = $('.search-query').data('placeholder')
$('#token-input-search_search_text').attr("placeholder", _placeholderText )

$("#search-button").remove()
$("#token-input-search_search_text").live('keyup', (event) ->
if event.keyCode == 13
tokenInputSearch()
)
$("#search-button").remove()
$("#token-input-search_search_text").live('keyup', (event) ->
if event.keyCode == 13
tokenInputSearch()
)

self.tokenInputSearch = () ->
_value = $('.token-input-token-wat p').html() || $('tester').html() || $('tester').val()
Expand Down
11 changes: 6 additions & 5 deletions app/controllers/pages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ class PagesController < ApplicationController
before_filter :parse_search_param, only: [:index]

def index
$pages_to_show = nil if !params[:page].present?
@pages_to_show = nil if !params[:page].present?
_pp = Settings.paginate_pages_per_page || 4
$pages_to_show ||= (@searched_pages ? @searched_pages : permitted_pages )
redirect_to signin_path, alert: t(:you_need_to_sign_in) if !$pages_to_show
@pages ||= $pages_to_show.paginate( page: (params[:page] ? params[:page] : 1), per_page: _pp )
@pages_to_show ||= (@searched_pages ? @searched_pages : permitted_pages )
redirect_to signin_path, alert: t(:you_need_to_sign_in) if !@pages_to_show
@pages ||= @pages_to_show.asc(:position).paginate( page: (params[:page] ? params[:page] : 1), per_page: _pp )
end

def show
Expand Down Expand Up @@ -125,7 +125,7 @@ def autocomplete_search
respond_to do |format|
format.json {
render :json => permitted_pages.any_of({ title: /#{params[:q]}/i }, { body: /#{params[:q]}/i })
.only(:title)
.only(:title).asc(:title)
.map{ |page|
[
:search_name => page.title,
Expand All @@ -147,6 +147,7 @@ def parse_search_param
{body: /#{@search.search_text}/i}
)
else
@searched_pages = nil
@search = Search.new search_text: '', search_controller: 'pages'
end
end
Expand Down
13 changes: 7 additions & 6 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ class UsersController < ApplicationController

def index
if can_read?('Admin')
$users_to_show = nil if !params[:page].present?
_pp = Settings.paginate_users_per_page || 4
$users_to_show ||= (@searched_users ? @searched_users : User.asc(:name))
@users ||= $users_to_show.asc(:name).paginate( page: (params[:page] ? params[:page] : 1), per_page: _pp )
@searched_users ||= User.asc(:name)
@users ||= @searched_users.asc(:name).paginate( page: (params[:page] ? params[:page] : 1), per_page: _pp )
@users
else
redirect_to root_path, :alert => t(:access_denied)
end
Expand Down Expand Up @@ -139,7 +139,7 @@ def autocomplete_search
respond_to do |format|
format.json {
render :json => User.any_of({ name: /#{params[:q]}/i }, { email: /#{params[:q]}/i })
.only(:name,:email)
.only(:name,:email).asc(:name)
.map{ |user|
[
:search_name => user.name,
Expand All @@ -153,14 +153,15 @@ def autocomplete_search

private
def parse_search_param
if params[:search].present?
if (params[:search].present? && params[:search] != "")
_p = params[:search].is_a?(String) ? JSON.parse( params[:search] ) : params[:search]
@search = Search.new( search_text: _p['search_text'], search_controller: _p['search_controller'] )
@searched_users = User.any_of(
{name: /#{@search.search_text}/i},
{email: /#{@search.search_text}/i}
).asc(:name)
)
else
@searched_users = nil
@search = Search.new search_text: '', search_controller: 'users'
end
end
Expand Down
24 changes: 24 additions & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,30 @@ def self.find_with_authentication(provider, uid)
User.where(:authentications.matches => {provider: provider, uid: uid.to_s}).first
end

# Find Users by a given search-condition
def self.search(search)
if search and search != ""
_p = search.is_a?(String) ? JSON.parse( search ) : search
@search = Search.new( search_text: _p['search_text'], search_controller: _p['search_controller'] )
# @searched_users = User.any_of(
# {name: /#{@search.search_text}/i},
# {email: /#{@search.search_text}/i}
# ).asc(:name)
# search_params[:search]
any_of(
{name: /#{@search.search_text}/i},
{email: /#{@search.search_text}/i}
)
else
scoped
end
end






# Adds an authentication to this user
# @param [Authentication]
def add_authentication(authentication)
Expand Down
7 changes: 0 additions & 7 deletions app/views/pages/_pages_pagination.haml

This file was deleted.

2 changes: 1 addition & 1 deletion app/views/pages/index.haml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@

.container
#result
= render "pages_pagination"
= render :partial => '/shared/pagination_page', :locals => { :resources => @pages, :path => pages_path, :alert_error_text => t(:no_page_found_for, search: @search.search_text) }
20 changes: 12 additions & 8 deletions app/views/pages/index.js.erb
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<% if params[:search].present? %>
<% if @pages.current_page == 1 && params[:search].present? %>
if ($('#result').length > 0){
$('#result').html('<%= escape_javascript( render "pages_pagination" ) -%>');}
$('#result').html('<%= escape_javascript( render :partial => "/shared/pagination_page", :locals => { :resources => @pages, :path => pages_path, :alert_error_text => t(:no_page_found_for, search: @search.search_text) } ) -%>');}
else{
$('#global_result').html('<div id="result_detail"><%= escape_javascript( render "pages_pagination" ) -%></div>');}
$('#global_result').html('<div id="result_detail"><%= escape_javascript( render :partial => "/shared/pagination_page", :locals => { :resources => @pages, :path => pages_path, :alert_error_text => t(:no_page_found_for, search: @search.search_text) } ) -%></div>');}
<% end %>

/* REVIEW: This file is needed for any endles-loading view. Is there a way to unify this, so we have it only once? */
$(".pagination").html("<%= escape_javascript( page_navigation_links( @pages, 'pagination', '&#8592; Previous', 'Next &#8594;' ) ) %>");
$(".pagination").html("<%= escape_javascript( page_navigation_links( @pages, 'pagination', '&#8592; ' + t(:previous), t(:next) + ' &#8594;' ) ) %>");

<% if @pages.current_page > 1 %>
$('.load_more').before( '<div id="page<%= @pages.current_page -%>" style="clear: both; display: none;">'+
Expand All @@ -21,8 +21,12 @@ $(".pagination").html("<%= escape_javascript( page_navigation_links( @pages, 'pa
$('#load_more').html('<p style="text-align:center; margin-top: 20px;"><%= escape_javascript(t(:end_of_list)) -%></p><p/ class="page_seperator_bold"p>');
$(".pagination").hide();
<% else %>
$('#load_more').html( '<%= escape_javascript(link_to_function(t(:load_more_link),"insert_load_button( 'load_more','#{t(:loading)}',"+
"'#{pages_path(:page => (params[:page] ? (params[:page].to_i+1) : 2),:order => (params[:order] ? params[:order].to_sym : nil), :direction => (params[:direction] ? params[:direction].to_sym : nil))}')", :id => "load_more_link" )) -%>');
$('#page<%= @pages.current_page -%>').slideDown();
<% if params[:search].present? %>
$('#load_more').html( '<%= escape_javascript(link_to_function(t(:load_more_link),"insert_load_button( 'load_more','#{t(:loading)}',"+
"'#{pages_path(:search => (params[:search] ? params[:search] : nil),:page => (params[:page] ? (params[:page].to_i+1) : 2),:order => (params[:order] ? params[:order].to_sym : nil), :direction => (params[:direction] ? params[:direction].to_sym : nil))}')", :id => "load_more_link" )) -%>');
<% else %>
$("#load_more").html( "<%= escape_javascript( render :partial => '/shared/load_more', :locals => { :resources => @pages, :path => pages_path } ) -%>" );
<% end %>
$("#page<%= @pages.current_page -%>").slideDown();
setTimeout("checkScroll()", 500);
<% end %>
<% end %>
2 changes: 1 addition & 1 deletion app/views/shared/_load_more.haml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
- if resources.total_pages > resources.current_page
= link_to_function( t(:load_more_link), |
"insert_load_button( 'load_more','#{t(:loading)}',"+ |
"'#{path}?page=#{resources.current_page+1}&order=#{params[:order]}&direction=#{params[:direction]}'"+ |
"'#{path}?search=#{params[:search]}&page=#{resources.current_page+1}&order=#{params[:order]}&direction=#{params[:direction]}'"+ |
");return false;", |
:id => 'load_more_link') |
9 changes: 9 additions & 0 deletions app/views/shared/_pagination_page.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
- unless resources.any?
.alert.alert-error= alert_error_text
- else
.pagination_box= page_navigation_links( resources, 'pagination', '&#8592; ' + t(:previous), t(:next) + ' &#8594;' )

= render resources
= render :partial => '/shared/load_more', :locals => { :resources => resources, :path => path }

.pagination_box= page_navigation_links( resources, 'pagination', '&#8592; ' + t(:previous), t(:next) + ' &#8594;' )
9 changes: 0 additions & 9 deletions app/views/users/_users_pagination.haml

This file was deleted.

2 changes: 1 addition & 1 deletion app/views/users/index.haml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@

.container
#result
= render "users_pagination"
= render :partial => '/shared/pagination_page', :locals => { :resources => @users, :path => users_path, :alert_error_text => t(:no_user_found_for, search: @search.search_text) }
18 changes: 11 additions & 7 deletions app/views/users/index.js.erb
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<% if params[:search].present? %>
$('#result').html('<%= escape_javascript( render "users_pagination" ) -%>');
<% if @users.current_page == 1 && params[:search].present? %>
$('#result').html('<%= escape_javascript( render :partial => "/shared/pagination_page", :locals => { :resources => @users, :path => users_path, :alert_error_text => t(:no_user_found_for, search: @search.search_text) } ) -%>');
<% end %>

/* REVIEW: This file is needed for any endles-loading view. Is there a way to unify this, so we have it only once? */
$(".pagination").html("<%= escape_javascript( page_navigation_links( @users, 'pagination', '&#8592; Previous', 'Next &#8594;' ) ) %>");
$(".pagination").html("<%= escape_javascript( page_navigation_links( @users, 'pagination', '&#8592; ' + t(:previous), t(:next) + ' &#8594;' ) ) %>");

<% if @users.current_page > 1 %>
<% if @users.current_page > 1 %>
$('.load_more').before( '<div id="page<%= @users.current_page -%>" style="clear: both; display: none;">'+
'<p class="page_seperator"><%= @users.current_page -%>'+
'/<%= @users.total_pages -%></p>'+
Expand All @@ -18,8 +18,12 @@ $(".pagination").html("<%= escape_javascript( page_navigation_links( @users, 'pa
$('#load_more').html('<p style="text-align:center; margin-top: 20px;"><%= escape_javascript(t(:end_of_list)) -%></p><p/ class="page_seperator_bold"p>');
$(".pagination").hide();
<% else %>
$('#load_more').html( '<%= escape_javascript(link_to_function(t(:load_more_link),"insert_load_button( 'load_more','#{t(:loading)}',"+
"'#{users_path(:page => (params[:page] ? (params[:page].to_i+1) : 2),:order => (params[:order] ? params[:order].to_sym : nil), :direction => (params[:direction] ? params[:direction].to_sym : nil))}')", :id => "load_more_link" )) -%>');
$('#page<%= @users.current_page -%>').slideDown();
<% if params[:search].present? %>
$('#load_more').html( '<%= escape_javascript(link_to_function(t(:load_more_link),"insert_load_button( 'load_more','#{t(:loading)}',"+
"'#{users_path(:search => params[:search].to_hash,:page => (params[:page] ? (params[:page].to_i+1) : 2),:order => (params[:order] ? params[:order].to_sym : nil), :direction => (params[:direction] ? params[:direction].to_sym : nil))}')", :id => "load_more_link" )) -%>');
<% else %>
$("#load_more").html( "<%= escape_javascript( render :partial => '/shared/load_more', :locals => { :resources => @users, :path => users_path } ) -%>" );
<% end %>
$("#page<%= @users.current_page -%>").slideDown();
setTimeout("checkScroll()", 500);
<% end %>
2 changes: 2 additions & 0 deletions config/locales/de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -437,3 +437,5 @@ de:
load_more_link: 'Mehr anzeigen …'
end_of_list: ' -- ENDE -- '
edit_translations: "Diese Übersetzungen bearbeiten"
previous: "Vorherige"
next: "Nächste"
2 changes: 2 additions & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -435,3 +435,5 @@ en:
load_more_link: 'Show more …'
end_of_list: ' -- END -- '
edit_translations: "Edit this translations"
previous: "Previous"
next: "Next"

0 comments on commit a47956d

Please sign in to comment.