masonry-rails 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -377,6 +377,20 @@ Or whichever animated loader icon you want to use ;)
377
377
  }
378
378
  ```
379
379
 
380
+ ### Kaminary paging
381
+
382
+ You can combine masonry infinite scroll with Kaminari using suggestions here:
383
+
384
+ [Create-Infinite-Scrolling-with-jQuery](https://github.com/amatsuda/kaminari/wiki/How-To:-Create-Infinite-Scrolling-with-jQuery)
385
+
386
+ [railscast-endless-page](http://railscasts.com/episodes/114-endless-page-revised)
387
+
388
+ ### jQuery pageless
389
+
390
+ [jquery pageless](https://github.com/jney/jquery.pageless) could also be used...
391
+
392
+ The jquery pageless plugin is now provided as `masonry/jquery.pageless.min.js`. The [repo]((https://github.com/jney/jquery.pageless) demonstrates how to use pageless with Rails 3.
393
+
380
394
  ## Use with images
381
395
 
382
396
  See [image demo](http://masonry.desandro.com/demos/images.html) which uses *imagesLoaded* plugin (included - see below)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.5
1
+ 0.1.6
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "masonry-rails"
8
- s.version = "0.1.5"
8
+ s.version = "0.1.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kristian Mandrup"]
@@ -72,6 +72,8 @@ Gem::Specification.new do |s|
72
72
  "vendor/assets/javascripts/masonry/jquery.loremimages.min.js",
73
73
  "vendor/assets/javascripts/masonry/jquery.masonry.js",
74
74
  "vendor/assets/javascripts/masonry/jquery.masonry.min.js",
75
+ "vendor/assets/javascripts/masonry/jquery.pageless.js",
76
+ "vendor/assets/javascripts/masonry/jquery.pageless.min.js",
75
77
  "vendor/assets/javascripts/masonry/modernizr-transitions.js",
76
78
  "vendor/assets/stylesheets/masonry/basic.css",
77
79
  "vendor/assets/stylesheets/masonry/centered.css",
@@ -0,0 +1,194 @@
1
+ // =======================================================================
2
+ // PageLess - endless page
3
+ //
4
+ // Pageless is a jQuery plugin.
5
+ // As you scroll down you see more results coming back at you automatically.
6
+ // It provides an automatic pagination in an accessible way : if javascript
7
+ // is disabled your standard pagination is supposed to work.
8
+ //
9
+ // Licensed under the MIT:
10
+ // http://www.opensource.org/licenses/mit-license.php
11
+ //
12
+ // Parameters:
13
+ // currentPage: current page (params[:page])
14
+ // distance: distance to the end of page in px when ajax query is fired
15
+ // loader: selector of the loader div (ajax activity indicator)
16
+ // loaderHtml: html code of the div if loader not used
17
+ // loaderImage: image inside the loader
18
+ // loaderMsg: displayed ajax message
19
+ // pagination: selector of the paginator divs.
20
+ // if javascript is disabled paginator is provided
21
+ // params: paramaters for the ajax query, you can pass auth_token here
22
+ // totalPages: total number of pages
23
+ // url: URL used to request more data
24
+ //
25
+ // Callback Parameters:
26
+ // scrape: A function to modify the incoming data.
27
+ // complete: A function to call when a new page has been loaded (optional)
28
+ // end: A function to call when the last page has been loaded (optional)
29
+ //
30
+ // Usage:
31
+ // $('#results').pageless({ totalPages: 10
32
+ // , url: '/articles/'
33
+ // , loaderMsg: 'Loading more results'
34
+ // });
35
+ //
36
+ // Requires: jquery
37
+ //
38
+ // Author: Jean-Sébastien Ney (https://github.com/jney)
39
+ //
40
+ // Contributors:
41
+ // Alexander Lang (https://github.com/langalex)
42
+ // Lukas Rieder (https://github.com/Overbryd)
43
+ // Kathryn Reeve (https://github.com/BinaryKitten)
44
+ //
45
+ // Thanks to:
46
+ // * codemonky.com/post/34940898
47
+ // * www.unspace.ca/discover/pageless/
48
+ // * famspam.com/facebox
49
+ // =======================================================================
50
+
51
+ (function($) {
52
+
53
+ var FALSE = !1
54
+ , TRUE = !FALSE
55
+ , element
56
+ , isLoading = FALSE
57
+ , loader
58
+ , namespace = '.pageless'
59
+ , SCROLL = 'scroll' + namespace
60
+ , RESIZE = 'resize' + namespace
61
+ , settings = { container: window
62
+ , currentPage: 1
63
+ , distance: 100
64
+ , pagination: '.pagination'
65
+ , params: {}
66
+ , url: location.href
67
+ , loaderImage: "/images/load.gif"
68
+ }
69
+ , container
70
+ , $container;
71
+
72
+ $.pageless = function(opts) {
73
+ $.isFunction(opts) ? opts.call() : init(opts);
74
+ };
75
+
76
+ $.pagelessReset = function() {
77
+ settings = { container: window
78
+ , currentPage: 1
79
+ , distance: 100
80
+ , pagination: '.pagination'
81
+ , params: {}
82
+ , url: location.href
83
+ , loaderImage: "/images/load.gif"
84
+ };
85
+ stopListener();
86
+ // if there is a afterStopListener callback we call it
87
+ if (settings.end) settings.end.call();
88
+ };
89
+
90
+ var loaderHtml = function () {
91
+ return settings.loaderHtml || '\
92
+ <div id="pageless-loader" style="display:none;text-align:center;width:100%;">\
93
+ <div class="msg" style="color:#e9e9e9;font-size:2em"></div>\
94
+ <img src="' + settings.loaderImage + '" alt="loading more results" style="margin:10px auto" />\
95
+ </div>';
96
+ };
97
+
98
+ // settings params: totalPages
99
+ var init = function (opts) {
100
+ if (settings.inited) return;
101
+ settings.inited = TRUE;
102
+
103
+ if (opts) $.extend(settings, opts);
104
+
105
+ container = settings.container;
106
+ $container = $(container);
107
+
108
+ // for accessibility we can keep pagination links
109
+ // but since we have javascript enabled we remove pagination links
110
+ if(settings.pagination) $(settings.pagination).remove();
111
+
112
+ // start the listener
113
+ startListener();
114
+ };
115
+
116
+ $.fn.pageless = function (opts) {
117
+ var $el = $(this)
118
+ , $loader = $(opts.loader, $el);
119
+
120
+ init(opts);
121
+ element = $el;
122
+
123
+ // loader element
124
+ if (opts.loader && $loader.length) {
125
+ loader = $loader;
126
+ } else {
127
+ loader = $(loaderHtml());
128
+ $el.append(loader);
129
+ // if we use the default loader, set the message
130
+ if (!opts.loaderHtml) {
131
+ $('#pageless-loader .msg').html(opts.loaderMsg).css(opts.msgStyles || {});
132
+ }
133
+ }
134
+ };
135
+
136
+ //
137
+ var loading = function (bool) {
138
+ (isLoading = bool)
139
+ ? (loader && loader.fadeIn('normal'))
140
+ : (loader && loader.fadeOut('normal'));
141
+ };
142
+
143
+ // distance to end of the container
144
+ var distanceToBottom = function () {
145
+ return (container === window)
146
+ ? $(document).height()
147
+ - $container.scrollTop()
148
+ - $container.height()
149
+ : $container[0].scrollHeight
150
+ - $container.scrollTop()
151
+ - $container.height();
152
+ };
153
+
154
+ var stopListener = function() {
155
+ $container.unbind(namespace);
156
+ };
157
+
158
+ // * bind a scroll event
159
+ // * trigger is once in case of reload
160
+ var startListener = function() {
161
+ $container.bind(SCROLL+' '+RESIZE, watch)
162
+ .trigger(SCROLL);
163
+ };
164
+
165
+ var watch = function() {
166
+ // listener was stopped or we've run out of pages
167
+ if (settings.totalPages <= settings.currentPage) {
168
+ stopListener();
169
+ // if there is a afterStopListener callback we call it
170
+ if (settings.end) settings.end.call();
171
+ return;
172
+ }
173
+
174
+ // if slider past our scroll offset, then fire a request for more data
175
+ if(!isLoading && (distanceToBottom() < settings.distance)) {
176
+ loading(TRUE);
177
+ // move to next page
178
+ settings.currentPage++;
179
+ // set up ajax query params
180
+ $.extend( settings.params
181
+ , { page: settings.currentPage });
182
+ // finally ajax query
183
+ $.get( settings.url
184
+ , settings.params
185
+ , function (data) {
186
+ $.isFunction(settings.scrape) ? settings.scrape(data) : data;
187
+ loader ? loader.before(data) : element.append(data);
188
+ loading(FALSE);
189
+ // if there is a complete callback we call it
190
+ if (settings.complete) settings.complete.call();
191
+ }, 'html');
192
+ }
193
+ };
194
+ })(jQuery);
@@ -0,0 +1 @@
1
+ (function(a){var b=!1,c=!b,d,e=b,f,g=".pageless",h="scroll"+g,i="resize"+g,j={container:window,currentPage:1,distance:100,pagination:".pagination",params:{},url:location.href,loaderImage:"/images/load.gif"},k,l;a.pageless=function(b){a.isFunction(b)?j.call():n(b)};var m=function(){return j.loaderHtml||'\n<div id="pageless-loader" style="display:none;text-align:center;width:100%;">\n <div class="msg" style="color:#e9e9e9;font-size:2em"></div>\n <img src="'+j.loaderImage+'" alt="loading more results" style="margin:10px auto" />\n</div>'};var n=function(b){if(j.inited)return;j.inited=c;if(b)a.extend(j,b);k=j.container;l=a(k);if(j.pagination)a(j.pagination).remove();r()};a.fn.pageless=function(b){var c=a(this),e=a(b.loader,c);n(b);d=c;if(b.loader&&e.length){f=e}else{f=a(m());c.append(f);if(!b.loaderHtml){a("#pageless-loader .msg").html(b.loaderMsg).css(b.msgStyles||{})}}};var o=function(a){(e=a)?f&&f.fadeIn("normal"):f&&f.fadeOut("normal")};var p=function(){return k===window?a(document).height()-l.scrollTop()-l.height():l[0].scrollHeight-l.scrollTop()-l.height()};var q=function(){l.unbind(g)};var r=function(){l.bind(h+" "+i,s).trigger(h)};var s=function(){if(j.totalPages<=j.currentPage){q();if(j.end)j.end.call();return}if(!e&&p()<j.distance){o(c);j.currentPage++;a.extend(j.params,{page:j.currentPage});a.get(j.url,j.params,function(c){a.isFunction(j.scrape)?j.scrape(c):c;f?f.before(c):d.append(c);o(b);if(j.complete)j.complete.call()},"html")}}})(jQuery)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: masonry-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -170,6 +170,8 @@ files:
170
170
  - vendor/assets/javascripts/masonry/jquery.loremimages.min.js
171
171
  - vendor/assets/javascripts/masonry/jquery.masonry.js
172
172
  - vendor/assets/javascripts/masonry/jquery.masonry.min.js
173
+ - vendor/assets/javascripts/masonry/jquery.pageless.js
174
+ - vendor/assets/javascripts/masonry/jquery.pageless.min.js
173
175
  - vendor/assets/javascripts/masonry/modernizr-transitions.js
174
176
  - vendor/assets/stylesheets/masonry/basic.css
175
177
  - vendor/assets/stylesheets/masonry/centered.css
@@ -193,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
195
  version: '0'
194
196
  segments:
195
197
  - 0
196
- hash: 498586022749909511
198
+ hash: 1929806335943321942
197
199
  required_rubygems_version: !ruby/object:Gem::Requirement
198
200
  none: false
199
201
  requirements: