n3bulous-infuse 0.9.0

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.
@@ -0,0 +1,27 @@
1
+ /* don't change this unless you want the layout stuff to show up in the outline view! */
2
+
3
+ .layout > *, #controls *, #footer *, #navLinks * { display: none; }
4
+
5
+ #controls, #navLinks, #toggle {
6
+ display: block; visibility: visible; margin: 0; padding: 0;}
7
+
8
+ #toggle { position: fixed; top: 0; right: 0; padding: 0.5em; }
9
+ #toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
10
+
11
+
12
+ /* making the outline look pretty-ish */
13
+
14
+ #slide1, #slide1 h1, #slide1 h2, #slide1 h3, #slide1 h4 {border: none; margin: 0;}
15
+ #slide1 h1 {padding-top: 1.5em;}
16
+
17
+ .slide { margin: 1.5em 0 0; border-top: 1px solid #888; }
18
+ .slide h1 { border-bottom: 1px solid #AAA; }
19
+
20
+ #microsoft {
21
+ display: none;
22
+ border: red solid thick;
23
+ padding: 1em;
24
+ font-family: sans-serif;
25
+ font-weight: bold;
26
+ margin-bottom: 2em;
27
+ }
@@ -0,0 +1 @@
1
+ /* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
@@ -0,0 +1,285 @@
1
+ var snum = 1; /* current slide # (non-zero based index e.g. starting with 1) */
2
+ var smax = 1; /* max number of slides */
3
+ var incpos = 0; /* current step in slide */
4
+ var s6mode = true; /* are we in slide mode (in contrast to outline mode)? */
5
+ var defaultView = 'slideshow'; /* slideshow | outline */
6
+
7
+
8
+ function debug( msg )
9
+ {
10
+ /* uncomment to enable debug messages in console such as Firebug */
11
+ /* console.log( '[debug] ' + msg ); */
12
+ }
13
+
14
+ function showHide(action)
15
+ {
16
+ switch( action ) {
17
+ case 's': $( '#navLinks' ).css( 'visibility', 'visible' ); break;
18
+ case 'h': $( '#navLinks' ).css( 'visibility', 'hidden' ); break;
19
+ case 'c': /* toggle control panel */
20
+ if( $( '#navLinks' ).css( 'visibility' ) != 'visible' )
21
+ $( '#navLinks' ).css( 'visibility', 'visible' );
22
+ else
23
+ $( '#navLinks' ).css( 'visibility', 'hidden' );
24
+ break;
25
+ }
26
+ }
27
+
28
+ function updateCurrentSlideCounter() {
29
+
30
+ $( '#currentSlide' ).html( '<a id="plink" href="">' +
31
+ '<span id="csHere">' + snum + '<\/span> ' +
32
+ '<span id="csSep">\/<\/span> ' +
33
+ '<span id="csTotal">' + smax + '<\/span>' +
34
+ '<\/a>' );
35
+ }
36
+
37
+
38
+ function updatePermaLink() {
39
+ $('#plink').get(0).href = window.location.pathname + '#slide' + snum;
40
+ }
41
+
42
+ function goTo( target ) {
43
+ if( target > smax || target == snum ) return;
44
+ go( target - snum );
45
+ }
46
+
47
+ function go( dir ) {
48
+
49
+ debug( 'go: ' + dir );
50
+
51
+ if( dir == 0 ) return; /* same slide; nothing to do */
52
+
53
+ var cid = '#slide' + snum; /* current slide (selector) id */
54
+ var csteps = steps[snum-1]; /* current slide steps array */
55
+
56
+ /* remove all step and stepcurrent classes from current slide */
57
+ if( csteps.length > 0) {
58
+ $( csteps ).each( function() {
59
+ $( this ).removeClass( 'step' ).removeClass( 'stepcurrent' );
60
+ } );
61
+ }
62
+
63
+ /* set snum to next slide */
64
+ snum += dir;
65
+ if( snum > smax ) snum = smax;
66
+ if (snum < 1) snum = 1;
67
+
68
+ var nid = '#slide' + snum; /* next slide (selector) id */
69
+ var nsteps = steps[snum-1]; /* next slide steps array */
70
+
71
+ if( dir < 0 ) /* go backwards? */
72
+ {
73
+ incpos = nsteps.length;
74
+ /* mark last step as current step */
75
+ if( nsteps.length > 0 )
76
+ $( nsteps[incpos-1] ).addClass( 'stepcurrent' );
77
+ }
78
+ else /* go forwards? */
79
+ {
80
+ incpos = 0;
81
+ if( nsteps.length > 0 ) {
82
+ $( nsteps ).each( function() {
83
+ $(this).addClass( 'step' ).removeClass( 'stepcurrent' );
84
+ } );
85
+ }
86
+ }
87
+
88
+ $( cid ).hide();
89
+ $( nid ).show();
90
+
91
+ $('#jumplist').get(0).selectedIndex = (snum-1);
92
+ updateCurrentSlideCounter();
93
+ updatePermaLink();
94
+ }
95
+
96
+ function subgo( dir ) {
97
+
98
+ debug( 'subgo: ' + dir + ', incpos before: ' + incpos + ', after: ' + (incpos+dir) );
99
+
100
+ var csteps = steps[snum-1]; /* current slide steps array */
101
+
102
+ if( dir > 0) { /* go forward? */
103
+ if( incpos > 0 ) $( csteps[incpos-1] ).removeClass( 'stepcurrent' );
104
+ $( csteps[incpos] ).removeClass( 'step').addClass( 'stepcurrent' );
105
+ incpos++;
106
+ } else { /* go backwards? */
107
+ incpos--;
108
+ $( csteps[incpos] ).removeClass( 'stepcurrent' ).addClass( 'step' );
109
+ if( incpos > 0 ) $( csteps[incpos-1] ).addClass( 'stepcurrent' );
110
+ }
111
+ }
112
+
113
+
114
+
115
+ function toggle() {
116
+
117
+ /* get stylesheets */
118
+ var slides = $('#slideProj').get(0);
119
+ var outline = $('#outlineStyle').get(0);
120
+
121
+ if( !slides.disabled ) {
122
+ slides.disabled = true;
123
+ outline.disabled = false;
124
+ s6mode = false;
125
+ $('.slide').each( function() { $(this).show(); } );
126
+ } else {
127
+ slides.disabled = false;
128
+ outline.disabled = true;
129
+ s6mode = true;
130
+ $('.slide').each( function(i) {
131
+ if( i == (snum-1) )
132
+ $(this).show();
133
+ else
134
+ $(this).hide();
135
+ });
136
+ }
137
+ }
138
+
139
+
140
+ function populateJumpList() {
141
+
142
+ var list = $('#jumplist').get(0);
143
+
144
+ $( '.slide' ).each( function(i) {
145
+ list.options[list.length] = new Option( (i+1)+' : '+ $(this).find('h1').text(), (i+1) );
146
+ });
147
+ }
148
+
149
+ function createControls() {
150
+
151
+ $('#controls').html( '<div id="navLinks">' +
152
+ '<a accesskey="t" id="toggle" href="#">&#216;<\/a>' +
153
+ '<a accesskey="z" id="prev" href="#">&laquo;<\/a>' +
154
+ '<a accesskey="x" id="next" href="#">&raquo;<\/a>' +
155
+ '<div id="navList"><select id="jumplist" /><\/div>' +
156
+ '<\/div>' );
157
+
158
+ $('#controls').mouseover( function() { showHide('s'); } );
159
+ $('#controls').mouseout( function() { showHide('h'); } );
160
+ $('#toggle').click( function() { toggle(); } );
161
+ $('#prev').click( function() { go(-1); } );
162
+ $('#next').click( function() { go(1); } );
163
+
164
+ $('#jumplist').change( function() { goTo( parseInt( $( '#jumplist' ).val() )); } );
165
+
166
+ populateJumpList();
167
+ updateCurrentSlideCounter();
168
+ }
169
+
170
+ function addSlideIds() {
171
+ $( '.slide' ).each( function(i) {
172
+ $(this).attr( 'id', 'slide'+(i+1) );
173
+ });
174
+
175
+ smax = $( '.slide' ).length;
176
+ }
177
+
178
+ function notOperaFix() {
179
+
180
+ $('#slideProj').attr( 'media','screen' );
181
+
182
+ var outline = $('#outlineStyle').get(0);
183
+ outline.disabled = true;
184
+ }
185
+
186
+
187
+ function defaultCheck() {
188
+ $( 'meta' ).each( function() {
189
+ if( $(this).attr( 'name' ) == 'defaultView' )
190
+ defaultView = $(this).attr( 'content' );
191
+ } );
192
+ }
193
+
194
+ function keys(key) {
195
+ if (!key) {
196
+ key = event;
197
+ key.which = key.keyCode;
198
+ }
199
+ if (key.which == 84) {
200
+ toggle();
201
+ return;
202
+ }
203
+ if (s6mode) {
204
+ switch (key.which) {
205
+ case 32: // spacebar
206
+ case 34: // page down
207
+ case 39: // rightkey
208
+ case 40: // downkey
209
+
210
+ if (!steps[snum-1] || incpos >= steps[snum-1].length) {
211
+ go(1);
212
+ } else {
213
+ subgo(1);
214
+ }
215
+ break;
216
+ case 33: // page up
217
+ case 37: // leftkey
218
+ case 38: // upkey
219
+
220
+ if( !steps[snum-1] || incpos <= 0 ) {
221
+ go(-1);
222
+ } else {
223
+ subgo(-1);
224
+ }
225
+ break;
226
+ case 36: // home
227
+ goTo(1);
228
+ break;
229
+ case 35: // end
230
+ goTo(smax);
231
+ break;
232
+ case 67: // c
233
+ showHide('c');
234
+ break;
235
+ }
236
+ }
237
+ return false;
238
+ }
239
+
240
+
241
+ function collectStepsWorker(obj) {
242
+
243
+ var steps = new Array();
244
+ if( !obj )
245
+ return steps;
246
+
247
+ $(obj).children().each( function() {
248
+ if( $(this).hasClass( 'step' ) ) {
249
+
250
+ debug( 'step found for ' + this.tagName );
251
+ $(this).removeClass( 'step' );
252
+
253
+ /* don't add enclosing list; instead add step class to all list items/children */
254
+ if( $(this).is( 'ol,ul' ) ) {
255
+ debug( ' ol or ul found; adding auto steps' );
256
+ $(this).children().addClass( 'step' );
257
+ }
258
+ else
259
+ {
260
+ steps.push( this )
261
+ }
262
+ }
263
+
264
+ steps = steps.concat( collectStepsWorker(this) );
265
+ });
266
+
267
+ return steps;
268
+ }
269
+
270
+ function collectSteps() {
271
+
272
+ var steps = new Array();
273
+
274
+ $( '.slide' ).each( function(i) {
275
+ debug ( $(this).attr( 'id' ) + ':' );
276
+ steps[i] = collectStepsWorker( this );
277
+ });
278
+
279
+ $( steps ).each( function(i) {
280
+ debug( 'slide ' + (i+1) + ': found ' + this.length + ' steps' );
281
+ });
282
+
283
+ return steps;
284
+ }
285
+
@@ -0,0 +1,76 @@
1
+ .slide { display: none; }
2
+ #slide1 { display: block; }
3
+ #microsoft { display: none; }
4
+
5
+ .slide { position: absolute; }
6
+ #header, #footer { position: fixed; }
7
+
8
+ .layout { display: block; }
9
+ .notes { display: none; } /* handout notes/note (use note? handout? notes? */
10
+
11
+ #header, #footer, .slide { width: 100%; top: 0; left: 0; }
12
+ #header { top: 0; height: 0.5em; z-index: 1;}
13
+
14
+ #footer { top: auto; bottom: 0; height: 1em; z-index: 5;}
15
+ #footer { font-size: 100%; font-weight: bold; padding: 1em 0;}
16
+ #footer h1 { display: block; margin: 0; padding: 0 1em; font-size: 0.5em; }
17
+ #footer h2 { display: block; margin: 0; padding: 0 1em; font-size: 0.5em; font-style: italic; }
18
+
19
+
20
+
21
+ #controls { position: fixed; left: 60%; bottom: 0; width: 40%; z-index: 100;
22
+ text-align: right;
23
+ font: bold 1.2em Verdana, Helvetica, sans-serif; }
24
+
25
+ #controls :focus { outline: 1px dotted white;}
26
+
27
+ #controls #navLinks { text-align: right; margin: 0; visibility: hidden; }
28
+
29
+ #controls #navLinks a { padding: 0; margin: 0 0.5em; cursor: pointer; border: none; }
30
+
31
+ #controls #navLinks :link,
32
+ #controls #navLinks :visited {text-decoration: none; }
33
+
34
+ #controls #navList #jumplist { background: white; color: black; }
35
+
36
+
37
+ #currentSlide { position: fixed; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
38
+ #currentSlide { text-align: center; font-size: 0.8em; }
39
+ #currentSlide :link,
40
+ #currentSlide :visited {text-decoration: none; }
41
+
42
+ .presentation { margin: 0; padding: 0; }
43
+ .slide { margin: 0 0 0 0; height: 96%; }
44
+ .slide { overflow-x: hidden; overflow-y: auto; }
45
+ .slide { top: 0; width: 92%; padding: 2% 4% 0 4%; z-index: 2; list-style: none;}
46
+
47
+ /* .step { visibility: hidden; } */
48
+
49
+ /* enable svg backgrounds for gradient themes */
50
+ div.background { position: fixed; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: -1; }
51
+ body { opacity: .99; }
52
+
53
+ html, body { margin: 0; padding: 0; }
54
+
55
+
56
+
57
+
58
+ /*
59
+ div#header {background: #FCC;}
60
+ div#footer {background: #CCF;}
61
+ div#controls {background: #BBD;}
62
+ div#currentSlide {background: #FFC;}
63
+ */
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
@@ -0,0 +1,41 @@
1
+ /* Just an example for an all-in-one convenience include
2
+
3
+ create your own slide.js to include your own extensions and
4
+ change the startup (document ready) code as needed
5
+
6
+ Tell us about your extentions or changes on the forum. Thank!
7
+ Find the forum @ http://groups.google.com/group/webslideshow
8
+ */
9
+
10
+
11
+ $.ajaxSetup({async: false});
12
+ $.getScript( 'shared/slides.core.js' );
13
+ $.ajaxSetup({async: true});
14
+
15
+ $(document).ready(function(){
16
+
17
+ if( $.browser.msie )
18
+ {
19
+ $( '.layout > *').hide();
20
+ $( '.presentation').hide();
21
+
22
+ $( '#microsoft' ).show();
23
+ }
24
+ else
25
+ {
26
+ defaultCheck();
27
+ addSlideIds();
28
+ createControls();
29
+
30
+ /* opera is the only browser currently supporting css projection mode */
31
+ /* if( !$.browser.opera ) */
32
+ notOperaFix();
33
+
34
+ steps = collectSteps();
35
+
36
+ if( defaultView == 'outline' )
37
+ toggle();
38
+
39
+ document.onkeyup = keys;
40
+ }
41
+ });
@@ -0,0 +1,9 @@
1
+ $:.reject! { |e| e.include? 'TextMate' }
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'matchy'
6
+ require 'context'
7
+ require 'mocha'
8
+
9
+ require File.dirname(__FILE__) + '/../lib/infuse'
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class InfuseTest < Test::Unit::TestCase
4
+
5
+ describe "An instance of the Infuse class" do
6
+
7
+ it "should flunk" do
8
+ flunk "Please provide some tests"
9
+ end
10
+
11
+ end
12
+
13
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: n3bulous-infuse
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Kevin McFadden
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-03-03 00:00:00 -08:00
13
+ default_executable: infuse
14
+ dependencies: []
15
+
16
+ description:
17
+ email: kevin+github@conceptsahead.com
18
+ executables:
19
+ - infuse
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.textile
24
+ files:
25
+ - README.textile
26
+ - Rakefile
27
+ - lib/infuse
28
+ - lib/infuse/infuse_dsl.rb
29
+ - lib/infuse/slide.rb
30
+ - lib/infuse/themes
31
+ - lib/infuse/themes/plain
32
+ - lib/infuse/themes/plain/css
33
+ - lib/infuse/themes/plain/css/custom.css
34
+ - lib/infuse/themes/plain/footer.html.erb
35
+ - lib/infuse/themes/plain/header.html.erb
36
+ - lib/infuse/themes/plain/js
37
+ - lib/infuse/themes/plain/slide.html.erb
38
+ - lib/infuse/themes/plain/title-page.html.erb
39
+ - lib/infuse/version.rb
40
+ - lib/infuse.rb
41
+ - lib/s6
42
+ - lib/s6/blank.css
43
+ - lib/s6/blank.html
44
+ - lib/s6/blank.svg
45
+ - lib/s6/README.textile
46
+ - lib/s6/shared
47
+ - lib/s6/shared/jquery.js
48
+ - lib/s6/shared/outline.css
49
+ - lib/s6/shared/print.css
50
+ - lib/s6/shared/slides.core.js
51
+ - lib/s6/shared/slides.css
52
+ - lib/s6/shared/slides.js
53
+ - test/test_helper.rb
54
+ - test/unit
55
+ - test/unit/infuse_test.rb
56
+ - bin/infuse
57
+ has_rdoc: true
58
+ homepage: http://conceptsahead.com
59
+ post_install_message:
60
+ rdoc_options:
61
+ - --main
62
+ - README.textile
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ version:
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: "0"
76
+ version:
77
+ requirements: []
78
+
79
+ rubyforge_project:
80
+ rubygems_version: 1.2.0
81
+ signing_key:
82
+ specification_version: 2
83
+ summary: Create HTML slide shows with a simple DSL!
84
+ test_files: []
85
+