parade 0.8.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.
- data/LICENSE +21 -0
- data/README.md +542 -0
- data/Rakefile +15 -0
- data/bin/parade +138 -0
- data/lib/parade.rb +43 -0
- data/lib/parade/commands/commands.rb +84 -0
- data/lib/parade/commands/generate_outline.rb +34 -0
- data/lib/parade/commands/generate_presentation.rb +34 -0
- data/lib/parade/commands/generate_rackup.rb +32 -0
- data/lib/parade/commands/html_output.rb +47 -0
- data/lib/parade/commands/render_from_template.rb +50 -0
- data/lib/parade/commands/static_html.rb +38 -0
- data/lib/parade/commands/static_pdf.rb +39 -0
- data/lib/parade/commands/unknown.rb +23 -0
- data/lib/parade/features/live_ruby.rb +18 -0
- data/lib/parade/features/pdf_presentation.rb +24 -0
- data/lib/parade/features/preshow.rb +11 -0
- data/lib/parade/helpers/encode_image.rb +24 -0
- data/lib/parade/helpers/template_generator.rb +130 -0
- data/lib/parade/metadata.rb +73 -0
- data/lib/parade/metadata/assignment.rb +38 -0
- data/lib/parade/metadata/css_classes.rb +22 -0
- data/lib/parade/metadata/html_id.rb +35 -0
- data/lib/parade/metadata/template.rb +31 -0
- data/lib/parade/parsers/dsl.rb +138 -0
- data/lib/parade/parsers/dsl_file_parser.rb +17 -0
- data/lib/parade/parsers/json_file_parser.rb +67 -0
- data/lib/parade/parsers/markdown_image_paths.rb +44 -0
- data/lib/parade/parsers/markdown_slide_splitter.rb +63 -0
- data/lib/parade/parsers/presentation_directory_parser.rb +36 -0
- data/lib/parade/parsers/presentation_file_parser.rb +27 -0
- data/lib/parade/parsers/presentation_filepath_parser.rb +35 -0
- data/lib/parade/parsers/slides_file_content_parser.rb +27 -0
- data/lib/parade/renderers/columns_renderer.rb +68 -0
- data/lib/parade/renderers/command_line_renderer.rb +142 -0
- data/lib/parade/renderers/html_with_pygments.rb +42 -0
- data/lib/parade/renderers/inline_images.rb +31 -0
- data/lib/parade/renderers/special_paragraph_renderer.rb +23 -0
- data/lib/parade/renderers/update_image_paths.rb +75 -0
- data/lib/parade/section.rb +183 -0
- data/lib/parade/server.rb +139 -0
- data/lib/parade/slide.rb +128 -0
- data/lib/parade/version.rb +3 -0
- data/lib/public/css/960.css +653 -0
- data/lib/public/css/fg.menu.css +114 -0
- data/lib/public/css/ghf_marked.css +180 -0
- data/lib/public/css/jquery-terminal.css +73 -0
- data/lib/public/css/onepage.css +62 -0
- data/lib/public/css/parade.css +450 -0
- data/lib/public/css/pdf.css +13 -0
- data/lib/public/css/reset.css +53 -0
- data/lib/public/css/spinner_bar.gif +0 -0
- data/lib/public/css/theme/images/ui-bg_diagonals-small_100_f0efea_40x40.png +0 -0
- data/lib/public/css/theme/images/ui-bg_flat_35_f0f0f0_40x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_glass_55_fcf0ba_1x400.png +0 -0
- data/lib/public/css/theme/images/ui-bg_glow-ball_25_2e2e28_600x600.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_100_f0efea_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_25_327E04_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_25_5A9D1A_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_95_ffedad_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_inset-soft_22_3b3b35_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-icons_808080_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_8DC262_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_e7e6e4_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_eeeeee_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_ffffff_256x240.png +0 -0
- data/lib/public/css/theme/ui.accordion.css +9 -0
- data/lib/public/css/theme/ui.all.css +2 -0
- data/lib/public/css/theme/ui.base.css +9 -0
- data/lib/public/css/theme/ui.core.css +37 -0
- data/lib/public/css/theme/ui.datepicker.css +62 -0
- data/lib/public/css/theme/ui.dialog.css +13 -0
- data/lib/public/css/theme/ui.progressbar.css +4 -0
- data/lib/public/css/theme/ui.resizable.css +13 -0
- data/lib/public/css/theme/ui.slider.css +17 -0
- data/lib/public/css/theme/ui.tabs.css +9 -0
- data/lib/public/css/theme/ui.theme.css +245 -0
- data/lib/public/favicon.ico +0 -0
- data/lib/public/js/coffee-script.js +8 -0
- data/lib/public/js/fg.menu.js +645 -0
- data/lib/public/js/jTypeWriter.js +26 -0
- data/lib/public/js/jquery-1.4.2.js +6240 -0
- data/lib/public/js/jquery-print.js +109 -0
- data/lib/public/js/jquery-pubsub.js +27 -0
- data/lib/public/js/jquery-terminal.js +2712 -0
- data/lib/public/js/jquery.batchImageLoad.js +56 -0
- data/lib/public/js/jquery.cycle.all.js +1284 -0
- data/lib/public/js/keyboard.js +733 -0
- data/lib/public/js/parade-code-execution.js +122 -0
- data/lib/public/js/parade-command-input.js +16 -0
- data/lib/public/js/parade-command-visor.js +92 -0
- data/lib/public/js/parade-keyboard-input.js +54 -0
- data/lib/public/js/parade.js +675 -0
- data/lib/public/js/spine.js +904 -0
- data/lib/templates/config.ru.erb +4 -0
- data/lib/templates/showoff.erb +27 -0
- data/lib/templates/slides.md.erb +25 -0
- data/lib/views/header.erb +73 -0
- data/lib/views/index.erb +53 -0
- data/lib/views/inline_css.erb +3 -0
- data/lib/views/inline_js.erb +3 -0
- data/lib/views/onepage.erb +17 -0
- data/lib/views/pdf.erb +17 -0
- data/lib/views/slide.erb +5 -0
- metadata +317 -0
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Copyright (c) 2009 Scott Chacon
|
|
2
|
+
Copyright (c) 2012 Franklin Webber
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
a copy of this software and associated documentation files (the
|
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be
|
|
13
|
+
included in all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
# Parade Presentation Software
|
|
2
|
+
|
|
3
|
+
Parade is a Sinatra web app that reads serves up markdown files in a
|
|
4
|
+
presentation format. Parade can serve a directory or be configured to run with
|
|
5
|
+
a simple configuration file.
|
|
6
|
+
|
|
7
|
+
## Comparison Vs PowerPoint / Keynote
|
|
8
|
+
|
|
9
|
+
Parade is easily out-done by professional presentation software packages as
|
|
10
|
+
far as out-of-the-box style and design. However, there are benefits that
|
|
11
|
+
Parade has over presentational software:
|
|
12
|
+
|
|
13
|
+
### The Good
|
|
14
|
+
|
|
15
|
+
* Markdown backed data
|
|
16
|
+
|
|
17
|
+
> This ultimately makes it easier to manage diffs when making changes,
|
|
18
|
+
using the content in other documents, and quickly re-using portions of a
|
|
19
|
+
presentation.
|
|
20
|
+
|
|
21
|
+
* Syntax Highlighting
|
|
22
|
+
|
|
23
|
+
> Using GitHub flavored markdown, code fences will automatically be
|
|
24
|
+
syntax highlighted making it incredibly easy to integrate code samples
|
|
25
|
+
|
|
26
|
+
* Code Execution
|
|
27
|
+
|
|
28
|
+
> Slides are able to provide execution and show results for javascript,
|
|
29
|
+
Coffeescript, and Ruby live within the browser. Allowing for live
|
|
30
|
+
demonstrations of code.
|
|
31
|
+
|
|
32
|
+
* Web
|
|
33
|
+
|
|
34
|
+
> The system is simply a website which allows for a lot of possibilities
|
|
35
|
+
|
|
36
|
+
### The Ugly
|
|
37
|
+
|
|
38
|
+
* Lack of style
|
|
39
|
+
|
|
40
|
+
> Most presentation packages are going to provide for you better templates
|
|
41
|
+
|
|
42
|
+
* Speed of Layout and Animation
|
|
43
|
+
|
|
44
|
+
> Unless you're skills are great with CSS/Animations, you are likely going
|
|
45
|
+
to have a harder time creating presentations with as much polish.
|
|
46
|
+
|
|
47
|
+
* Resizing
|
|
48
|
+
|
|
49
|
+
> Currently the presentation system can change gradual sizes, but is not
|
|
50
|
+
very capable of growing well to the full resolution of current presentation
|
|
51
|
+
resolution.
|
|
52
|
+
|
|
53
|
+
# Installation and Usage
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
$ gem install parade
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Starting the Slide Show
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
$ parade
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
By default running parade with start a presentation from the current working
|
|
66
|
+
directory. It will find all markdown files, `**/*.md`, within the directory
|
|
67
|
+
and create a presentation out of them.
|
|
68
|
+
|
|
69
|
+
> By default parade will split slides along lines that start with a single `#`
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## Slide Show Commands
|
|
73
|
+
|
|
74
|
+
You can manage the presentation with the following keys:
|
|
75
|
+
|
|
76
|
+
> ### *space* or *cursor right*
|
|
77
|
+
>
|
|
78
|
+
> Advance to the next slide or advance the next incremental bullet point
|
|
79
|
+
or show the end result of the code execution.
|
|
80
|
+
>
|
|
81
|
+
> ### *shift-space* or *cursor left*
|
|
82
|
+
>
|
|
83
|
+
> Move to the previous slide
|
|
84
|
+
>
|
|
85
|
+
> ### *z* or *?*
|
|
86
|
+
>
|
|
87
|
+
> Toggle help
|
|
88
|
+
>
|
|
89
|
+
> ### *f*
|
|
90
|
+
>
|
|
91
|
+
> Toggle footer (which shows slide count of total slides, percentage)
|
|
92
|
+
>
|
|
93
|
+
> ### *d*
|
|
94
|
+
>
|
|
95
|
+
> Toggle DEBUG information
|
|
96
|
+
>
|
|
97
|
+
> ### *c* or *t*
|
|
98
|
+
>
|
|
99
|
+
> Toggle the display of the Table of Contents
|
|
100
|
+
>
|
|
101
|
+
> ### *p*
|
|
102
|
+
>
|
|
103
|
+
> Toggle pre-show
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
### Serving a specific directory
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
$ parade [directory]
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
This will start a presentation from the specified directory. Again, finding all
|
|
113
|
+
markdown files contained within the directories or sub-directories.
|
|
114
|
+
|
|
115
|
+
### Serving specific files
|
|
116
|
+
|
|
117
|
+
To include certain files, specify an order, duplicate slides, you will need to
|
|
118
|
+
define a `parade` file. Within that file, you may define specific files,
|
|
119
|
+
specific folders, and the order of the presentation.
|
|
120
|
+
|
|
121
|
+
```ruby
|
|
122
|
+
title "My Presentation"
|
|
123
|
+
slides "intro.md"
|
|
124
|
+
section "directory_name"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
> **slides** and **section** are exactly the same, however you may choose to
|
|
128
|
+
use one over the other depending of you are mentioning a specific file of
|
|
129
|
+
slides or a directory which could contain another `parade` or be considered
|
|
130
|
+
a section.
|
|
131
|
+
|
|
132
|
+
You can so define sub sections with a title and slides or additional sections.
|
|
133
|
+
|
|
134
|
+
```ruby
|
|
135
|
+
|
|
136
|
+
title "My Presentation"
|
|
137
|
+
|
|
138
|
+
section "Introduction" do
|
|
139
|
+
slides "intro.md"
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
section "Code Samples" do
|
|
143
|
+
slides "ruby"
|
|
144
|
+
slides "javascript"
|
|
145
|
+
section "coffeescript"
|
|
146
|
+
end
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
# Slide Format
|
|
150
|
+
|
|
151
|
+
## Slide Separators
|
|
152
|
+
|
|
153
|
+
### Separator: **#**
|
|
154
|
+
|
|
155
|
+
Slides are simply markdown format. As stated previously, slides will be
|
|
156
|
+
separated along the `#`elements within your document.
|
|
157
|
+
|
|
158
|
+
### Separator: !SLIDE
|
|
159
|
+
|
|
160
|
+
Relying on the `#` as a separator is not always ideal. So you may alternatively
|
|
161
|
+
use the `!SLIDE` separator. This also provides you with the ability to define
|
|
162
|
+
additional metadata with your slides and presentation.
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
!SLIDE
|
|
166
|
+
|
|
167
|
+
# My Presentation
|
|
168
|
+
|
|
169
|
+
!SLIDE bullets incremental transition=fade
|
|
170
|
+
|
|
171
|
+
# Bullet Points
|
|
172
|
+
|
|
173
|
+
* first point
|
|
174
|
+
* second point
|
|
175
|
+
* third point
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
> Using this separator will immediately override `#`, so you will have to
|
|
179
|
+
insert `!SLIDE` separators in all places you would like cut your slides.
|
|
180
|
+
|
|
181
|
+
## Notes
|
|
182
|
+
|
|
183
|
+
You can define special notes that are shown in presenter mode.
|
|
184
|
+
|
|
185
|
+
> Presenter mode has been removed until it can be rebuilt
|
|
186
|
+
|
|
187
|
+
Add a line that starts with .notes:
|
|
188
|
+
|
|
189
|
+
```markdown
|
|
190
|
+
## Important Slide
|
|
191
|
+
|
|
192
|
+
* First Thing
|
|
193
|
+
* Second Things
|
|
194
|
+
|
|
195
|
+
.notes The reason that the second thing came about is because things changed.
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
> In this example, the HTML output will contain a `<p class='notes'>`
|
|
199
|
+
Toggle presenter notes with the `n` key while in the presentation.
|
|
200
|
+
|
|
201
|
+
> Presenter mode has been removed until it can be rebuilt
|
|
202
|
+
|
|
203
|
+
### Metadata
|
|
204
|
+
|
|
205
|
+
#### HTML IDs
|
|
206
|
+
|
|
207
|
+
```markdown
|
|
208
|
+
!SLIDE #slide-id-1
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
> In this example the id of the slide div would be set to `#slide-id-1`
|
|
212
|
+
|
|
213
|
+
You can define an ID that will be added to the slide's `div`. This id will be
|
|
214
|
+
set to any value prefaced with the `#` character.
|
|
215
|
+
|
|
216
|
+
#### Transitions
|
|
217
|
+
|
|
218
|
+
```markdown
|
|
219
|
+
!SLIDE transition=fade
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
> In this example, the slide will __fade__ when it is viewed. This will set
|
|
223
|
+
`data-transition='fade'` on the slides's `div`.
|
|
224
|
+
|
|
225
|
+
You can define transitions from the available body of transitions.
|
|
226
|
+
|
|
227
|
+
The transitions are provided by jQuery Cycle plugin. See http://www.malsup.com/jquery/cycle/browser.html to view the effects and http://www.malsup.com/jquery/cycle/adv2.html for how to add custom effects.
|
|
228
|
+
|
|
229
|
+
##### Available Transitions
|
|
230
|
+
|
|
231
|
+
* none (this is the default)
|
|
232
|
+
* blindX, blindY, blindZ
|
|
233
|
+
* cover
|
|
234
|
+
* curtainX, curtainY
|
|
235
|
+
* fade
|
|
236
|
+
* fadeZoom
|
|
237
|
+
* growX, growY
|
|
238
|
+
* scrollUp, scrollDown, scrollLeft, scrollRight
|
|
239
|
+
* scrollHorz, scrollVert
|
|
240
|
+
* shuffle
|
|
241
|
+
* slideX, slideY
|
|
242
|
+
* toss
|
|
243
|
+
* turnUp, turnDown, turnLeft, turnRight
|
|
244
|
+
* uncover
|
|
245
|
+
* wipe
|
|
246
|
+
* zoom
|
|
247
|
+
|
|
248
|
+
#### CSS Classes
|
|
249
|
+
|
|
250
|
+
```markdown
|
|
251
|
+
!SLIDE bullets incremental my-custom-css-class
|
|
252
|
+
```
|
|
253
|
+
> In this example, this will add custom css classes to the slide's `div` will
|
|
254
|
+
display the following classes:
|
|
255
|
+
`class='content bullets incremental my-custom-css-class'`. _Note:_ the content
|
|
256
|
+
class is added by the default slide template.
|
|
257
|
+
|
|
258
|
+
All remaining single terms are added as css classes to the slide's `div`.
|
|
259
|
+
|
|
260
|
+
##### Defined Classes
|
|
261
|
+
|
|
262
|
+
Parade defines a number of special CSS classes:
|
|
263
|
+
|
|
264
|
+
> ### center
|
|
265
|
+
> centers images on a slide
|
|
266
|
+
>
|
|
267
|
+
> ### full-page
|
|
268
|
+
> allows an image to take up the whole slide
|
|
269
|
+
>
|
|
270
|
+
> ### bullets
|
|
271
|
+
> sizes and separates bullets properly (fits up to 5, generally)
|
|
272
|
+
>
|
|
273
|
+
> ### columns
|
|
274
|
+
>
|
|
275
|
+
> creates columns for every `##` markdown element in your slides (up to 4)
|
|
276
|
+
>
|
|
277
|
+
> ### smbullets
|
|
278
|
+
> sizes and separates more bullets (smaller, closer together)
|
|
279
|
+
>
|
|
280
|
+
> ### subsection
|
|
281
|
+
> creates a different background for titles
|
|
282
|
+
>
|
|
283
|
+
> ### command
|
|
284
|
+
> monospaces h1 title slides
|
|
285
|
+
>
|
|
286
|
+
> ### commandline
|
|
287
|
+
> for pasted commandline sections (needs leading '$' for commands, then
|
|
288
|
+
> output on subsequent lines)
|
|
289
|
+
>
|
|
290
|
+
> ### code
|
|
291
|
+
> monospaces everything on the slide
|
|
292
|
+
>
|
|
293
|
+
> ### incremental
|
|
294
|
+
> can be used with 'bullets' and 'commandline' styles, will incrementally
|
|
295
|
+
> update elements on arrow key rather than switch slides
|
|
296
|
+
>
|
|
297
|
+
> ### small
|
|
298
|
+
> make all slide text 80%
|
|
299
|
+
>
|
|
300
|
+
> ### smaller
|
|
301
|
+
> make all slide text 70%
|
|
302
|
+
>
|
|
303
|
+
> ### execute
|
|
304
|
+
> on Javascript, Coffeescript and Ruby highlighted code slides, you can
|
|
305
|
+
> click on the code to execute it and display the results on the slide
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
# Presentation Customization
|
|
309
|
+
|
|
310
|
+
## Custom JavaScript
|
|
311
|
+
|
|
312
|
+
To insert custom JavaScript into your presentation you can either place it into
|
|
313
|
+
a file (with extension .js) into the root directory of your presentation or you
|
|
314
|
+
can embed a *script* element directly into your slides. This JavaScript will
|
|
315
|
+
be executed—as usually—as soon as it is loaded.
|
|
316
|
+
|
|
317
|
+
If you want to trigger some JavaScript as soon as a certain page is shown or
|
|
318
|
+
when you switch to the next or previous slide, you can bind a callback to a
|
|
319
|
+
custom event:
|
|
320
|
+
|
|
321
|
+
> ### parade:show
|
|
322
|
+
> will be triggered as soon as you enter a page
|
|
323
|
+
> ### parade:next
|
|
324
|
+
> will be triggered when you switch to the next page
|
|
325
|
+
> ### parade:incr
|
|
326
|
+
> will be triggered when you advance to the next increment on the page
|
|
327
|
+
> ### parade:prev
|
|
328
|
+
> will be triggered when you switch to the previous page
|
|
329
|
+
|
|
330
|
+
These events are triggered on the "div.content" child of the slide, so you must
|
|
331
|
+
add a custom and unique class to your SLIDE to identify it:
|
|
332
|
+
|
|
333
|
+
```markdown
|
|
334
|
+
!SLIDE custom_and_unique_class
|
|
335
|
+
# 1st Example h1
|
|
336
|
+
<script>
|
|
337
|
+
// bind to custom event
|
|
338
|
+
$(".custom_and_unique_class").bind("parade:show", function (event) {
|
|
339
|
+
// animate the h1
|
|
340
|
+
var h1 = $(event.target).find("h1");
|
|
341
|
+
h1.delay(500)
|
|
342
|
+
.slideUp(300, function () { $(this).css({textDecoration: "line-through"}); })
|
|
343
|
+
.slideDown(300);
|
|
344
|
+
});
|
|
345
|
+
</script>
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
This will bind an event handler for *parade:show* to your slide. The
|
|
349
|
+
h1-element will be animated, as soon as this event is triggered on that slide.
|
|
350
|
+
|
|
351
|
+
If you bind an event handler to the custom events *parade:next* or
|
|
352
|
+
*parade:prev*, you can prevent the default action (that is switching to the
|
|
353
|
+
appropriate slide) by calling *event.preventDefault()*:
|
|
354
|
+
|
|
355
|
+
```markdown
|
|
356
|
+
!SLIDE prevent_default
|
|
357
|
+
# 2nd Example h1
|
|
358
|
+
<script>
|
|
359
|
+
$(".prevent_default").bind("parade:next", function (event) {
|
|
360
|
+
var h1 = $(event.target).find("h1");
|
|
361
|
+
if (h1.css("text-decoration") === "none") {
|
|
362
|
+
event.preventDefault();
|
|
363
|
+
h1.css({textDecoration: "line-through"})
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
</script>
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
This will bind an event handler for *parade:next* to your slide. When you press
|
|
370
|
+
the right arrow key the first time, the h1-element will be decorated. When you
|
|
371
|
+
press the right array key another time, you will switch to the next slide.
|
|
372
|
+
|
|
373
|
+
The same applies to the *parade:prev* event, of course.
|
|
374
|
+
|
|
375
|
+
## Custom Stylesheets
|
|
376
|
+
|
|
377
|
+
To insert custom Stylesheets into your presentation you can either place it into
|
|
378
|
+
a file (with extension .css) into the root directory of your presentation or
|
|
379
|
+
you can embed a *link* element directly into your slides. This stylesheet will
|
|
380
|
+
be applied as soon as it is loaded.
|
|
381
|
+
|
|
382
|
+
The content generated by the slide is wrapped with a *div* with the class .+content+ like this.
|
|
383
|
+
|
|
384
|
+
```html
|
|
385
|
+
<div ref="intro/01_slide/1" class="content" style="margin-top: 210px;">
|
|
386
|
+
<h1>jQuery & Sinatra</h1>
|
|
387
|
+
<h2>A Classy Combination</h2>
|
|
388
|
+
</div>
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
This makes the .*content* tag a perfect place to add additional styling if that
|
|
392
|
+
is your preference. An example of adding some styling is here.
|
|
393
|
+
|
|
394
|
+
```css
|
|
395
|
+
.content {
|
|
396
|
+
color: black;
|
|
397
|
+
font-family: helvetica, arial;
|
|
398
|
+
}
|
|
399
|
+
h1, h2 {
|
|
400
|
+
color: rgb(79, 180, 226);
|
|
401
|
+
font-family: Georgia;
|
|
402
|
+
}
|
|
403
|
+
.content::after {
|
|
404
|
+
position: absolute;
|
|
405
|
+
right: 120px;
|
|
406
|
+
bottom: 120px;
|
|
407
|
+
content: url(jay_small.png);
|
|
408
|
+
}
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
Note that the example above uses CSS3 styling with ::*after* and the *content*
|
|
412
|
+
-attribute to add an image to the slides.
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
# Command Line Interface
|
|
416
|
+
|
|
417
|
+
```bash
|
|
418
|
+
parade command_name [command-specific options] [--] arguments...
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
* Use the command __help__ to get a summary of commands
|
|
422
|
+
* Use the command `help command_name` to get a help for _command_name_
|
|
423
|
+
* Use `--` to stop command line argument processing; useful if your arguments have dashes in them
|
|
424
|
+
|
|
425
|
+
## parade help [command]
|
|
426
|
+
|
|
427
|
+
Shows list of commands or help for one command
|
|
428
|
+
|
|
429
|
+
## parade generate presentation
|
|
430
|
+
|
|
431
|
+
Create new parade presentation
|
|
432
|
+
|
|
433
|
+
This command helps start a new parade presentation by setting up the proper directory structure for you. It takes the directory name you would like parade to create for you.
|
|
434
|
+
|
|
435
|
+
> ### Options
|
|
436
|
+
>
|
|
437
|
+
> dir:"directory_name" - the name of the directory you want to generate the
|
|
438
|
+
> presentation (defaults to *presentation*)
|
|
439
|
+
>
|
|
440
|
+
> title:"Presentation Title" - the title of the presentation
|
|
441
|
+
>
|
|
442
|
+
> description:"Presentation Description" - a description of the presentation
|
|
443
|
+
|
|
444
|
+
## parade generate outline
|
|
445
|
+
|
|
446
|
+
Create new parade outline file
|
|
447
|
+
|
|
448
|
+
Within the existing directory create a **parade** file that contains some
|
|
449
|
+
sample sections and slide references to get you started with creating
|
|
450
|
+
your customized presentation.
|
|
451
|
+
|
|
452
|
+
> ### Options
|
|
453
|
+
>
|
|
454
|
+
> title:"Presentation Title" - the title of the presentation
|
|
455
|
+
>
|
|
456
|
+
> description:"Presentation Description" - a description of the presentation
|
|
457
|
+
>
|
|
458
|
+
> outline:"custom outline filename" - if you want to specify a custom outline
|
|
459
|
+
> filename (i.e. override the default **parade** filename).
|
|
460
|
+
|
|
461
|
+
## parade generate rackup
|
|
462
|
+
|
|
463
|
+
Create new rackup file
|
|
464
|
+
|
|
465
|
+
Within the existing directory create a **config.ru** file that contains the
|
|
466
|
+
default code necessary to serve this code on Heroku and other destinations.
|
|
467
|
+
|
|
468
|
+
## parade server
|
|
469
|
+
|
|
470
|
+
Serves the parade presentation in the current directory
|
|
471
|
+
|
|
472
|
+
> ### Options
|
|
473
|
+
>
|
|
474
|
+
> These options are specified *after* the command.
|
|
475
|
+
>
|
|
476
|
+
> *-f, --file=arg* Presentation file (default: *parade*)
|
|
477
|
+
>
|
|
478
|
+
> *-h, --host=arg* Host or IP to serve on (default *localhost*)
|
|
479
|
+
>
|
|
480
|
+
> *-p, --port=arg* The port to serve one (default: *9090*)
|
|
481
|
+
>
|
|
482
|
+
> ### Aliases
|
|
483
|
+
>
|
|
484
|
+
> parade s
|
|
485
|
+
>
|
|
486
|
+
> parade serve
|
|
487
|
+
|
|
488
|
+
# Future Plans
|
|
489
|
+
|
|
490
|
+
I really want this to evolve into a dynamic presentation software server,
|
|
491
|
+
that gives the audience a lot of interaction into the presentation -
|
|
492
|
+
helping them decide dynamically what the content of the presentation is,
|
|
493
|
+
ask questions without interrupting the presenter, etc. I want the audience
|
|
494
|
+
to be able to download a dynamically generated PDF of either the actual
|
|
495
|
+
talk that was given, or all the available slides, plus supplementary
|
|
496
|
+
material. And I want the presenter (me) to be able to push each
|
|
497
|
+
presentation to Heroku or GitHub pages for archiving super easily.
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
## Presenter Tools
|
|
501
|
+
|
|
502
|
+
* simple highlighting (highlight region of slide / click to highlight)
|
|
503
|
+
* timer (time left, percent done, percent time done)
|
|
504
|
+
* editing slides
|
|
505
|
+
* preview
|
|
506
|
+
* let you write on the slide with your mouse, madden-style via canvas
|
|
507
|
+
|
|
508
|
+
## Presentation Layout
|
|
509
|
+
|
|
510
|
+
* theme support
|
|
511
|
+
* squeeze-to-fit style
|
|
512
|
+
* simple animations (image from A to B)
|
|
513
|
+
* show a timer - elapsed / remaining
|
|
514
|
+
* perform simple animations of images moving between keyframes
|
|
515
|
+
* automatically resize text to fit screen [see Alex's shrink.js]
|
|
516
|
+
|
|
517
|
+
## Output Formats
|
|
518
|
+
|
|
519
|
+
* pdf with notes
|
|
520
|
+
* webpage
|
|
521
|
+
* let audience members download slides, code samples or other supplementary
|
|
522
|
+
material
|
|
523
|
+
|
|
524
|
+
## Clean up
|
|
525
|
+
|
|
526
|
+
* More modularity with presentation filters and renderers to allow presenters
|
|
527
|
+
to create custom ones for the particular slide show
|
|
528
|
+
* Modular approach to features
|
|
529
|
+
* Clean up Javascript
|
|
530
|
+
|
|
531
|
+
## Interaction
|
|
532
|
+
|
|
533
|
+
* questions / comments system
|
|
534
|
+
* audience vote-based presentation builder, results live view
|
|
535
|
+
* show audience questions / comments (twitter or direct)
|
|
536
|
+
* let audience members go back / catch up as you talk
|
|
537
|
+
* let audience members vote on sections (?)
|
|
538
|
+
|
|
539
|
+
## Platforms
|
|
540
|
+
|
|
541
|
+
* show synchronized, hidden notes on another browser (like an iphone)
|
|
542
|
+
* broadcast itself on Bonjour
|