pagesjs 0.0.3 → 0.0.4

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/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.0.4 (Mikhail Bestuzhev-Ryumin)
2
+ * Allow to set several page options for one page.
3
+ * Set empty jQuery object to Pages.current on load.
4
+ * Remove non-ASCII symbols from gemspec.
5
+ * Print testing URL in test task.
6
+
1
7
  == 0.0.3 (Sergey Muravyov-Apostol)
2
8
  * Allow to add listener for all new content.
3
9
  * Allow to set animation page options in JS.
@@ -38,7 +38,7 @@
38
38
  // jQuery node for current page.
39
39
  //
40
40
  // if ( Pages.current.is('.comments-page') ) { … }
41
- current: null,
41
+ current: $(),
42
42
 
43
43
  // Selector to find page blocks. Use to find loaded pages and detect
44
44
  // current one.
@@ -327,50 +327,66 @@
327
327
  return $(this.pagesSelector + ':visible:first', this._document)
328
328
  },
329
329
 
330
- // Return `$$(selector)` function, which is analog of `$(selector, nodes)`.
331
- _subfind: function(nodes) {
332
- return function(subselector) {
333
- return $(subselector, nodes);
334
- };
335
- },
336
-
337
330
  // Find pages in new content, set caches and trigger load event on them.
338
331
  _enlive: function(nodes) {
339
- var $$ = this._subfind(nodes);
332
+ var args = this._callbackArgs(divs)
340
333
  for (var i = 0; i < this._liveCallbacks.length; i++) {
341
- this._liveCallbacks[i].call(nodes, $, $$, nodes);
334
+ this._liveCallbacks[i].apply(nodes, args);
342
335
  }
343
336
 
344
- var page;
337
+ var page, pages;
345
338
  for (var i = 0; i < this._pages.length; i++) {
346
339
  page = this._pages[i];
347
340
  var divs = nodes.filter(page.selector);
348
341
  divs = divs.add( nodes.find(page.selector) );
349
342
  if ( divs.length ) {
350
- divs.data('page', page);
343
+ pages = divs.data('pages')
344
+ if ( pages ) {
345
+ pages.push(page);
346
+ } else {
347
+ divs.data('pages', [page]);
348
+ }
351
349
  if ( page.load ) {
352
- page.load.call(divs, $, this._subfind(divs), divs);
350
+ page.load.apply(divs, this._callbackArgs(divs));
353
351
  }
354
352
  }
355
353
  }
356
354
  },
357
355
 
358
- // Find page descriptions for current and next page and fire `close` and
359
- // `open` events.
360
- _setCurrent: function(next) {
361
- var current = this.current;
362
- if ( current ) {
363
- var currentPage = current.data('page');
364
- if ( currentPage && currentPage.close ) {
365
- currentPage.close.call(current, $, this._subfind(current), current);
366
- }
356
+ // Return callback arguments.
357
+ _callbackArgs: function(nodes) {
358
+ var $$ = function(subselector) {
359
+ return $(subselector, nodes);
360
+ };
361
+ return [$, $$, nodes];
362
+ },
363
+
364
+ // Run _type_ callback on every pages in _div_.
365
+ _callback: function(div, type, args) {
366
+ if ( !div ) {
367
+ return;
367
368
  }
368
369
 
369
- var nextPage = next.data('page');
370
- if ( nextPage && nextPage.open ) {
371
- nextPage.open.call(next, $, this._subfind(next), next);
370
+ var page, pages = div.data('pages')
371
+ if ( !pages ) {
372
+ return;
372
373
  }
373
374
 
375
+ for (var i = 0; i < pages.length; i++) {
376
+ page = pages[i];
377
+ if ( page[type] ) {
378
+ page[type].apply(div, this._callbackArgs(div));
379
+ }
380
+ }
381
+ },
382
+
383
+ // Find page descriptions for current and next page and fire `close` and
384
+ // `open` events.
385
+ _setCurrent: function(next) {
386
+ if ( this.current ) {
387
+ this._callback(this.current, 'close');
388
+ }
389
+ this._callback(next, 'open');
374
390
  this.current = next;
375
391
  },
376
392
 
@@ -393,13 +409,24 @@
393
409
 
394
410
  // Open loaded page.
395
411
  _openPage: function(page, data) {
396
- var pageData = page.data();
412
+ var anim, pageData = page.data();
397
413
  data = $.extend(pageData, data);
398
- if ( pageData.page && pageData.page.animation ) {
399
- var anim = page.data('page').animation(this.current);
414
+
415
+ if ( data.pageAnimation ) {
416
+ anim = data.pageAnimation;
400
417
  } else {
401
- var anim = data.pageAnimation || Pages.animation;
418
+ var pageAnimation = null;
419
+ if ( pageData.pages ) {
420
+ for (var i = 0; i < pageData.pages.length; i++) {
421
+ pageAnimation = pageData.pages[i].animation;
422
+ }
423
+ }
424
+ if ( pageAnimation ) {
425
+ anim = pageAnimation(this.current);
426
+ }
402
427
  }
428
+ anim = anim || Pages.animation;
429
+
403
430
  this.animating.wait(function() {
404
431
  if ( typeof(data.title) != 'undefined' ) {
405
432
  Pages.title(data.title);
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagesjs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Andrey A.I.” Sitnik
8
+ - Andrey "A.I." Sitnik
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-21 00:00:00.000000000 Z
12
+ date: 2012-05-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sprockets
16
- requirement: &8204980 !ruby/object:Gem::Requirement
16
+ requirement: &20932360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *8204980
24
+ version_requirements: *20932360
25
25
  description: Pages.js allow you to manage pages JS code and forget about low-level
26
26
  History API.
27
27
  email:
@@ -61,5 +61,5 @@ rubyforge_project:
61
61
  rubygems_version: 1.8.11
62
62
  signing_key:
63
63
  specification_version: 3
64
- summary: Pages.js is a framework for History pushState.
64
+ summary: Pages.js - is a framework for History pushState.
65
65
  test_files: []