summaryrefslogtreecommitdiffstats
path: root/doc/backends/deckjs/deck.js/extensions/split
diff options
context:
space:
mode:
Diffstat (limited to 'doc/backends/deckjs/deck.js/extensions/split')
-rw-r--r--doc/backends/deckjs/deck.js/extensions/split/README.md30
-rw-r--r--doc/backends/deckjs/deck.js/extensions/split/deck.split.js59
2 files changed, 89 insertions, 0 deletions
diff --git a/doc/backends/deckjs/deck.js/extensions/split/README.md b/doc/backends/deckjs/deck.js/extensions/split/README.md
new file mode 100644
index 00000000..eb2e9c6d
--- /dev/null
+++ b/doc/backends/deckjs/deck.js/extensions/split/README.md
@@ -0,0 +1,30 @@
+
+deck.split.js
+==============
+
+`deck.split.js` is a deckjs extension that helps you split long slide into
+multiple small slides.
+
+
+Installation
+------------
+
+Just drop the whole repo into deck.js's `extensions` directory, then include
+the script in your slide.
+
+
+Usage
+-----
+
+To split a long slide, you need to indicate position inside original slide by
+adding following line:
+
+```html
+<div style="page-break-after:always"></div>
+```
+
+Indeed, it could be any tag set with `page-break-after:always` style. Every
+time you add this line, a new slide with the same title will be created, so you
+can split your slide into pieces as much as you want.
+
+
diff --git a/doc/backends/deckjs/deck.js/extensions/split/deck.split.js b/doc/backends/deckjs/deck.js/extensions/split/deck.split.js
new file mode 100644
index 00000000..081035c4
--- /dev/null
+++ b/doc/backends/deckjs/deck.js/extensions/split/deck.split.js
@@ -0,0 +1,59 @@
+/*!
+Deck JS - deck.split
+Copyright (c) 2012 Qingping Hou <dave2008713@gmail.com>
+ about.houqp.me
+Dual licensed under the MIT license and GPL license.
+https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt
+https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
+*/
+
+/*
+This module splits a long slide into multiple slides.
+*/
+(function($, deck, undefined) {
+ var $d = $(document);
+
+ createEmptySlide = function(title_el) {
+ slide = $(document.createElement('section'));
+ slide.addClass('slide').append(title_el.clone());
+ return slide;
+ };
+
+ $d.bind('deck.beforeInit', function() {
+ $(".slide").each( function(i, slide) {
+ /* each slide */
+ var is_split = false,
+ prev_slide = $(slide),
+ /* extract title which will be added to each new slides */
+ title_el = prev_slide.children('h2'),
+ tmp_slide = createEmptySlide(title_el);
+
+ $(slide).children().each(function() {
+ /* for each element inside original slide */
+ var el = $(this);
+
+ if (el.css('page-break-after') == 'always') {
+ if (is_split) {
+ tmp_slide.insertAfter(prev_slide);
+ prev_slide = tmp_slide;
+ tmp_slide = createEmptySlide(title_el);
+ }
+ else {
+ /* find the first page break */
+ is_split = true;
+ }
+ }
+ else {
+ if (is_split) {
+ tmp_slide.append(el);
+ }
+ }
+ })
+ /* add remaining elements to a new slides */
+ if (is_split) {
+ tmp_slide.insertAfter(prev_slide);
+ }
+ });
+ })
+})(jQuery, 'deck');
+