masonry-rails 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: