slideshow 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/HISTORY.md +4 -0
  3. data/Manifest.txt +3 -48
  4. data/{README.markdown → README.md} +134 -132
  5. data/Rakefile +26 -17
  6. data/lib/slideshow.rb +19 -97
  7. data/lib/slideshow/cli/main.rb +38 -20
  8. data/lib/slideshow/cli/main_utils.rb +10 -4
  9. data/lib/slideshow/cli/opts.rb +3 -1
  10. data/lib/slideshow/cli/version.rb +26 -0
  11. metadata +63 -147
  12. data/History.markdown +0 -171
  13. data/config/slideshow.builtin.yml +0 -8
  14. data/config/slideshow.index.yml +0 -61
  15. data/config/slideshow.yml +0 -76
  16. data/lib/slideshow/cli/commands/fetch.rb +0 -121
  17. data/lib/slideshow/cli/commands/gen.rb +0 -330
  18. data/lib/slideshow/cli/commands/gen_templates.rb +0 -52
  19. data/lib/slideshow/cli/commands/list.rb +0 -70
  20. data/lib/slideshow/cli/commands/plugins.rb +0 -44
  21. data/lib/slideshow/cli/commands/quick.rb +0 -86
  22. data/lib/slideshow/config.rb +0 -241
  23. data/lib/slideshow/filters/debug_filter.rb +0 -74
  24. data/lib/slideshow/filters/headers_filter.rb +0 -45
  25. data/lib/slideshow/filters/slide_filter.rb +0 -113
  26. data/lib/slideshow/filters/text_filter.rb +0 -140
  27. data/lib/slideshow/headers.rb +0 -87
  28. data/lib/slideshow/helpers/background_helper.rb +0 -121
  29. data/lib/slideshow/helpers/capture_helper.rb +0 -136
  30. data/lib/slideshow/helpers/directive_helper.rb +0 -43
  31. data/lib/slideshow/helpers/markdown_helper.rb +0 -18
  32. data/lib/slideshow/helpers/source_helper.rb +0 -39
  33. data/lib/slideshow/helpers/step_helper.rb +0 -33
  34. data/lib/slideshow/helpers/syntax/coderay_helper.rb +0 -84
  35. data/lib/slideshow/helpers/syntax/sh_helper.rb +0 -61
  36. data/lib/slideshow/helpers/syntax/uv_helper.rb +0 -90
  37. data/lib/slideshow/helpers/text_helper.rb +0 -130
  38. data/lib/slideshow/manifest_helpers.rb +0 -94
  39. data/lib/slideshow/markup/markdown.rb +0 -18
  40. data/lib/slideshow/markup/mediawiki.rb +0 -38
  41. data/lib/slideshow/markup/rest.rb +0 -17
  42. data/lib/slideshow/markup/textile.rb +0 -68
  43. data/lib/slideshow/plugin_helpers.rb +0 -62
  44. data/lib/slideshow/slide.rb +0 -118
  45. data/lib/slideshow/version.rb +0 -3
  46. data/templates/s6.txt +0 -27
  47. data/templates/s6.txt.gen +0 -19
  48. data/templates/s6/jquery.js +0 -8176
  49. data/templates/s6/jquery.microsoft.js +0 -31
  50. data/templates/s6/jquery.slideshow.js +0 -534
  51. data/templates/s6/print.css +0 -1
  52. data/templates/s6/projection.css +0 -109
  53. data/templates/s6/screen.css +0 -50
  54. data/templates/slides.html.erb +0 -55
  55. data/templates/slides.pdf.html.erb +0 -62
  56. data/templates/style.css.erb +0 -91
  57. data/templates/welcome.text +0 -167
  58. data/templates/welcome.txt.quick +0 -6
@@ -1,31 +0,0 @@
1
-
2
-
3
- $(document).ready( function() {
4
-
5
- // 1) remove all content
6
- $( 'body > *' ).remove();
7
-
8
- // 2) show banner
9
- $( "<div>" ).html(
10
- "<p>"
11
- + "Microsoft's Internet Explorer browser has no built-in vector graphics machinery "
12
- + "required for 'loss-free' gradient background themes."
13
- + "</p>"
14
- + "<p>"
15
- + "Please <span style='background: yellow'>upgrade to a better browser</span> "
16
- + "such as <a href='http://getfirefox.com'>Firefox</a>, <a href='http://www.opera.com/download'>Opera</a>, "
17
- + "<a href='http://google.com/chrome'>Chrome</a>, <a href='http://apple.com/safari/download'>Safari</a> or others "
18
- + "with built-in vector graphics machinery and much more. "
19
- + "(Learn more or post questions or comments "
20
- + "at the <a href='http://slideshow.rubyforge.org'>Slide Show (S9)</a> project site. Thanks!)"
21
- + "</p>"
22
- )
23
- .css( {
24
- border: 'red solid thick',
25
- padding: '1em',
26
- fontFamily: 'sans-serif',
27
- fontWeight: 'bold' } )
28
- .prependTo( 'body' );
29
- }
30
- );
31
-
@@ -1,534 +0,0 @@
1
-
2
- var Slideshow = {};
3
-
4
-
5
- /************************************
6
- * lets you define your own "global" transition function
7
- * passes in a reference to from and to slide wrapped in jQuery wrapper
8
- */
9
-
10
- Slideshow.transition = function( $from, $to ) {
11
- // $from.hide();
12
- // $to.show();
13
-
14
- $from.hide('fast');
15
- $to.show('fast');
16
- }
17
-
18
- /***********************
19
- * sample custom transition using scrollUp effect
20
- * inspired by Karl Swedberg's Scroll Up Headline Reader jQuery Tutorial[1]
21
- * [1] http://docs.jquery.com/Tutorials:Scroll_Up_Headline_Reader
22
- */
23
-
24
- function transitionSlideUpSlideDown( $from, $to ) {
25
- $from.slideUp( 500, function() { $to.slideDown( 1000 ); } );
26
- }
27
-
28
- function transitionFadeOutFadeIn( $from, $to ) {
29
- $from.fadeOut( 500 );
30
- $to.fadeIn( 500 );
31
- }
32
-
33
- function transitionScrollUp( $from, $to ) {
34
- var cheight = $from.outerHeight();
35
-
36
- // hide scrollbar during animation
37
- $( 'body' ).css( 'overflow-y', 'hidden' );
38
-
39
- $to.css( 'top', cheight+'px' );
40
- $to.show();
41
-
42
- $from.animate( {top: -cheight}, 'slow' );
43
- $to.animate( {top: 0}, 'slow', function() {
44
- $from.hide().css( 'top', '0px');
45
-
46
- // restore possible scrollbar
47
- $( 'body' ).css( 'overflow-y', 'auto' );
48
- });
49
- }
50
-
51
- Slideshow.init = function( options ) {
52
-
53
- var settings = $.extend({
54
- mode : 'slideshow', // slideshow | outline | autoplay
55
- projectionStyleId : '#styleProjection',
56
- screenStyleId : '#styleScreen',
57
- titleSelector : 'h1',
58
- slideSelector : '.slide', // dummy (not yet working)
59
- stepSelector : '.step', // dummy (not yet working)
60
- debug : false,
61
- change : null // todo: change to use a custom event and trigger
62
- }, options || {});
63
-
64
- settings.isProjection = true; // are we in projection (slideshow) mode (in contrast to screen (outline) mode)?
65
- settings.snum = 1; // current slide # (non-zero based index e.g. starting with 1)
66
- settings.smax = 1; // max number of slides
67
- settings.incpos = 0; // current step in slide
68
- settings.steps = null;
69
- settings.autoplayInterval = null;
70
-
71
- function debug( msg )
72
- {
73
- if( settings.debug && window.console && window.console.log )
74
- window.console.log( '[debug] ' + msg );
75
- }
76
-
77
- function showHide( action )
78
- {
79
- var $navLinks = $( '#navLinks' )
80
-
81
- switch( action ) {
82
- case 's': $navLinks.css( 'visibility', 'visible' ); break;
83
- case 'h': $navLinks.css( 'visibility', 'hidden' ); break;
84
- case 'c': /* toggle control panel */
85
- if( $navLinks.css( 'visibility' ) != 'visible' )
86
- $navLinks.css( 'visibility', 'visible' );
87
- else
88
- $navLinks.css( 'visibility', 'hidden' );
89
- break;
90
- }
91
- }
92
-
93
- function updateCurrentSlideCounter()
94
- {
95
- $( '#currentSlide' ).html( settings.snum + '/' + settings.smax );
96
- }
97
-
98
- function updateJumpList()
99
- {
100
- $('#jumplist').get(0).selectedIndex = (settings.snum-1);
101
- }
102
-
103
- function updatePermaLink()
104
- {
105
- // todo: unify hash marks??; use #1 for div ids instead of #slide1?
106
- window.location.hash = '#'+settings.snum;
107
- }
108
-
109
- function goTo( target )
110
- {
111
- if( target > settings.smax || target == settings.snum ) return;
112
- go( target - settings.snum );
113
- }
114
-
115
- function go( dir )
116
- {
117
- debug( 'go: ' + dir );
118
-
119
- if( dir == 0 ) return; /* same slide; nothing to do */
120
-
121
- var cid = '#slide' + settings.snum; /* current slide (selector) id */
122
- var csteps = settings.steps[settings.snum-1]; /* current slide steps array */
123
-
124
- /* remove all step and stepcurrent classes from current slide */
125
- if( csteps.length > 0) {
126
- $( csteps ).each( function() {
127
- $(this).removeClass( 'step' ).removeClass( 'stepcurrent' );
128
- } );
129
- }
130
-
131
- /* set snum to next slide */
132
- settings.snum += dir;
133
- if( settings.snum > settings.smax ) settings.snum = settings.smax;
134
- if( settings.snum < 1 ) settings.snum = 1;
135
-
136
- var nid = '#slide' + settings.snum; /* next slide (selector) id */
137
- var nsteps = settings.steps[settings.snum-1]; /* next slide steps array */
138
-
139
- if( dir < 0 ) /* go backwards? */
140
- {
141
- settings.incpos = nsteps.length;
142
- /* mark last step as current step */
143
- if( nsteps.length > 0 )
144
- $( nsteps[settings.incpos-1] ).addClass( 'stepcurrent' );
145
- }
146
- else /* go forwards? */
147
- {
148
- settings.incpos = 0;
149
- if( nsteps.length > 0 ) {
150
- $( nsteps ).each( function() {
151
- $(this).addClass( 'step' ).removeClass( 'stepcurrent' );
152
- } );
153
- }
154
- }
155
-
156
- if( !(cid == nid) ) {
157
- debug( "transition from " + cid + " to " + nid );
158
- Slideshow.transition( $( cid ), $( nid ) );
159
- }
160
-
161
- updateJumpList();
162
- updateCurrentSlideCounter();
163
- updatePermaLink();
164
-
165
- if (settings.change) { settings.change(); }
166
- }
167
-
168
- function subgo( dir )
169
- {
170
- debug( 'subgo: ' + dir + ', incpos before: ' + settings.incpos + ', after: ' + (settings.incpos+dir) );
171
-
172
- var csteps = settings.steps[settings.snum-1]; /* current slide steps array */
173
-
174
- if( dir > 0)
175
- { /* go forward? */
176
- if( settings.incpos > 0 )
177
- $( csteps[settings.incpos-1] ).removeClass( 'stepcurrent' );
178
- $( csteps[settings.incpos] ).removeClass( 'step').addClass( 'stepcurrent' );
179
- settings.incpos++;
180
- }
181
- else
182
- { /* go backwards? */
183
- settings.incpos--;
184
- $( csteps[settings.incpos] ).removeClass( 'stepcurrent' ).addClass( 'step' );
185
- if( settings.incpos > 0 )
186
- $( csteps[settings.incpos-1] ).addClass( 'stepcurrent' );
187
- }
188
- }
189
-
190
-
191
- function notOperaFix()
192
- {
193
- $( settings.projectionStyleId ).attr( 'media','screen' );
194
-
195
- var styleScreen = $( settings.screenStyleId ).get(0);
196
- styleScreen.disabled = true;
197
- }
198
-
199
-
200
- function toggle()
201
- {
202
- // toggle between projection (slide show) mode
203
- // and screen (outline) mode
204
-
205
- // get stylesheets
206
- var styleProjection = $( settings.projectionStyleId ).get(0);
207
- var styleScreen = $( settings.screenStyleId ).get(0);
208
-
209
- if( !styleProjection.disabled )
210
- {
211
- styleProjection.disabled = true;
212
- styleScreen.disabled = false;
213
- settings.isProjection = false;
214
- $('.slide').each( function() { $(this).show(); } );
215
- }
216
- else
217
- {
218
- styleProjection.disabled = false;
219
- styleScreen.disabled = true;
220
- settings.isProjection = true;
221
- $('.slide').each( function(i) {
222
- if( i == (settings.snum-1) )
223
- $(this).show();
224
- else
225
- $(this).hide();
226
- });
227
- }
228
- }
229
-
230
- function populateJumpList() {
231
-
232
- var list = $('#jumplist').get(0);
233
-
234
- $( '.slide' ).each( function(i) {
235
- var text = $(this).find( settings.titleSelector ).text();
236
- list.options[list.length] = new Option( (i+1)+' : '+ text, (i+1) );
237
- });
238
- }
239
-
240
- function createControls()
241
- {
242
- // todo: make layout into an id (not class?)
243
- // do we need or allow more than one element?
244
-
245
-
246
- // if no div.layout exists, create one
247
- if( $( '.layout' ).length == 0 )
248
- $( "<div class='layout'></div>").appendTo( 'body' );
249
-
250
- $( '.layout' )
251
- .append( "<div id='controls'>" )
252
- .append( "<div id='currentSlide'>" );
253
-
254
- var $controls = $( '#controls' )
255
-
256
- $controls.html( '<div id="navLinks">'
257
- + '<a accesskey="t" id="toggle" href="#">&#216;<\/a>'
258
- + '<a accesskey="z" id="prev" href="#">&laquo;<\/a>'
259
- + '<a accesskey="x" id="next" href="#">&raquo;<\/a>'
260
- + '<div id="navList"><select id="jumplist" /><\/div>'
261
- + '<\/div>' );
262
-
263
- $controls.hover( function() { showHide('s') }, function() { showHide('h') });
264
- $('#toggle').click( function() { toggle(); } );
265
- $('#prev').click( function() { go(-1); } );
266
- $('#next').click( function() { go(1); } );
267
-
268
- $('#jumplist').change( function() { goTo( parseInt( $( '#jumplist' ).val() )); } );
269
-
270
- populateJumpList();
271
- updateCurrentSlideCounter();
272
- updatePermaLink();
273
- }
274
-
275
- function toggleSlideNumber()
276
- {
277
- // toggle slide number/counter
278
- $( '#currentSlide' ).toggle();
279
- }
280
-
281
- function toggleFooter()
282
- {
283
- $( '#footer').toggle();
284
- }
285
-
286
-
287
- function keys(key)
288
- {
289
- if (!key) {
290
- key = event;
291
- key.which = key.keyCode;
292
- }
293
- if (key.which == 84) {
294
- toggle(); // toggle between project and screen css media mode
295
- return;
296
- }
297
- if( settings.isProjection ) {
298
- switch (key.which) {
299
- case 32: // spacebar
300
- case 34: // page down
301
- case 39: // rightkey
302
- case 40: // downkey
303
-
304
- var csteps = settings.steps[settings.snum-1]; /* current slide steps array */
305
-
306
- if ( !csteps || settings.incpos >= csteps.length ) {
307
- go(1);
308
- } else {
309
- subgo(1);
310
- }
311
- break;
312
- case 33: // page up
313
- case 37: // leftkey
314
- case 38: // upkey
315
-
316
- if( !settings.steps[settings.snum-1] || settings.incpos <= 0 ) {
317
- go(-1);
318
- } else {
319
- subgo(-1);
320
- }
321
- break;
322
- case 36: // home
323
- goTo(1);
324
- break;
325
- case 35: // end
326
- goTo(settings.smax);
327
- break;
328
- case 67: // c
329
- showHide('c'); // toggle controls (navlinks,navlist)
330
- break;
331
- case 65: //a
332
- case 80: //p
333
- case 83: //s
334
- toggleAutoplay();
335
- break;
336
- case 70: //f
337
- toggleFooter();
338
- break;
339
- case 78: // n
340
- toggleSlideNumber();
341
- break;
342
- case 68: // d
343
- toggleDebug();
344
- break;
345
- }
346
- }
347
- }
348
-
349
- function autoplay()
350
- {
351
- // suspend autoplay in outline view (just slideshow view)
352
- if( !settings.isProjection )
353
- return;
354
-
355
- // next slide/step, please
356
- var csteps = settings.steps[settings.snum-1]; // current slide steps array
357
- if( !csteps || settings.incpos >= csteps.length ) {
358
- if( settings.snum >= settings.smax )
359
- goTo( 1 ); // reached end of show? start with 1st slide again (for endless cycle)
360
- else
361
- go(1);
362
- }
363
- else {
364
- subgo(1);
365
- }
366
- }
367
-
368
- function toggleDebug()
369
- {
370
- settings.debug = !settings.debug;
371
- doDebug();
372
- }
373
-
374
- function doDebug()
375
- {
376
- // fix/todo: save background into oldbackground
377
- // so we can restore later
378
-
379
- if( settings.debug == true )
380
- {
381
- $( '#header' ).css( 'background', '#FCC' );
382
- $( '#footer' ).css( 'background', '#CCF' );
383
- $( '#controls' ).css( 'background', '#BBD' );
384
- $( '#currentSlide' ).css( 'background', '#FFC' );
385
- }
386
- else
387
- {
388
- $( '#header' ).css( 'background', 'transparent' );
389
- $( '#footer' ).css( 'background', 'transparent' );
390
- $( '#controls' ).css( 'background', 'transparent' );
391
- $( '#currentSlide' ).css( 'background', 'transparent' );
392
- }
393
- }
394
-
395
-
396
- function toggleAutoplay()
397
- {
398
- if( settings.autoplayInterval )
399
- {
400
- clearInterval( settings.autoplayInterval );
401
- settings.autoplayInterval = null;
402
- }
403
- else
404
- {
405
- settings.autoplayInterval = setInterval ( autoplay, 2000 );
406
- }
407
- }
408
-
409
-
410
-
411
- function collectStepsWorker(obj) {
412
-
413
- var steps = new Array();
414
- if( !obj )
415
- return steps;
416
-
417
- $(obj).children().each( function() {
418
- if( $(this).hasClass( 'step' ) ) {
419
-
420
- debug( 'step found for ' + this.tagName );
421
- $(this).removeClass( 'step' );
422
-
423
- /* don't add enclosing list; instead add step class to all list items/children */
424
- if( $(this).is( 'ol,ul' ) ) {
425
- debug( ' ol or ul found; adding auto steps' );
426
- $(this).children().addClass( 'step' );
427
- }
428
- else
429
- {
430
- steps.push( this )
431
- }
432
- }
433
-
434
- steps = steps.concat( collectStepsWorker(this) );
435
- });
436
-
437
- return steps;
438
- }
439
-
440
- function collectSteps() {
441
-
442
- var steps = new Array();
443
-
444
- $slides.each( function(i) {
445
- debug ( 'collectSteps for ' + this.id + ':' );
446
- steps[i] = collectStepsWorker( this );
447
- });
448
-
449
- $( steps ).each( function(i) {
450
- debug( 'slide ' + (i+1) + ': found ' + this.length + ' steps' );
451
- });
452
-
453
- return steps;
454
- }
455
-
456
-
457
- function addClicker() {
458
- // if you click on heading of slide -> go to next slide (or next step)
459
-
460
- $( settings.titleSelector, $slides ).click( function( ev ) {
461
- if(ev.which != 1) return; // only process left clicks (e.g 1; middle and rightclick use 2 and 3)
462
-
463
- if( !settings.isProjection ) // suspend clicker in outline view (just slideshow view)
464
- return;
465
-
466
- var csteps = settings.steps[settings.snum-1]; // current slide steps array
467
- if ( !csteps || settings.incpos >= csteps.length )
468
- go(1);
469
- else
470
- subgo(1);
471
- } );
472
-
473
-
474
- $( settings.titleSelector, $slides ).bind('contextmenu', function() {
475
- if( !settings.isProjection ) // suspend clicker in outline view (just slideshow view)
476
- return;
477
-
478
- var csteps = settings.steps[settings.snum-1]; // current slide steps array
479
- if ( !csteps || settings.incpos >= csteps.length )
480
- go(-1);
481
- else
482
- subgo(-1);
483
-
484
- return false;
485
- } );
486
- }
487
-
488
- function addSlideIds() {
489
- $slides.each( function(i) {
490
- this.id = 'slide'+(i+1);
491
- });
492
- }
493
-
494
- // init code here
495
-
496
- // store possible slidenumber from hash */
497
- // todo: use regex to extract number
498
- // might be #slide1 or just #1
499
-
500
- var gotoSlideNum = parseInt( window.location.hash.substring(1) );
501
- debug( "gotoSlideNum=" + gotoSlideNum );
502
-
503
- var $slides = $( '.slide' );
504
- settings.smax = $slides.length;
505
-
506
- addSlideIds();
507
- settings.steps = collectSteps();
508
-
509
- createControls();
510
-
511
- addClicker();
512
-
513
- /* opera is the only browser currently supporting css projection mode */
514
- /* if( !$.browser.opera ) */
515
- notOperaFix();
516
-
517
- if( !isNaN( gotoSlideNum ))
518
- {
519
- debug( "restoring slide on (re)load #: " + gotoSlideNum );
520
- goTo( gotoSlideNum );
521
- }
522
-
523
- if( settings.mode == 'outline' )
524
- toggle();
525
- else if( settings.mode == 'autoplay' )
526
- toggleAutoplay();
527
-
528
-
529
- if( settings.debug == true )
530
- doDebug();
531
-
532
- document.onkeyup = keys;
533
-
534
- } // end Slideshow