showoff 0.9.9.1 → 0.9.10
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.
- checksums.yaml +4 -4
- data/lib/showoff/version.rb +1 -1
- data/lib/showoff_utils.rb +31 -1
- data/public/css/close.png +0 -0
- data/public/css/menu.png +0 -0
- data/public/css/presenter.css +207 -117
- data/public/css/showoff.css +46 -0
- data/public/js/presenter.js +28 -25
- data/public/js/showoff.js +33 -1
- data/views/presenter.erb +24 -27
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: addc994cfd5492d9ca208490be1263930272cccd
|
4
|
+
data.tar.gz: a615f934502ee5ba58767aabd025e0a8f4d9075d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 667f49e11f8fb6bebc5576446874556e85e81abcf041ab94f7d4731dfd0ea9bc4db7ae203d756b24087326fd048b0d61a2d98fe9c0a13a3836a1c7dc22e6f285
|
7
|
+
data.tar.gz: 1b30d26ad6cfa760e6fcb80e722bbc2422c3337027ca4bbe6893ad733dc599c059b7a9278705c4fb0a4b2cf57896131d160e73dc1089df662e204af79beb58bb
|
data/lib/showoff/version.rb
CHANGED
data/lib/showoff_utils.rb
CHANGED
@@ -323,7 +323,7 @@ class ShowOffUtils
|
|
323
323
|
get_config_option(dir, "markdown", "redcarpet")
|
324
324
|
end
|
325
325
|
|
326
|
-
def self.showoff_renderer_options(dir = '.', default_options =
|
326
|
+
def self.showoff_renderer_options(dir = '.', default_options = MarkdownConfig::defaults(dir))
|
327
327
|
opts = get_config_option(dir, showoff_markdown(dir), default_options)
|
328
328
|
Hash[opts.map {|k, v| [k.to_sym, v]}] if opts # keys must be symbols
|
329
329
|
end
|
@@ -447,4 +447,34 @@ module MarkdownConfig
|
|
447
447
|
|
448
448
|
end
|
449
449
|
end
|
450
|
+
|
451
|
+
def self.defaults(dir_name)
|
452
|
+
case ShowOffUtils.showoff_markdown(dir_name)
|
453
|
+
when 'rdiscount'
|
454
|
+
{
|
455
|
+
:autolink => true,
|
456
|
+
}
|
457
|
+
when 'maruku'
|
458
|
+
{}
|
459
|
+
when 'bluecloth'
|
460
|
+
{
|
461
|
+
:auto_links => true,
|
462
|
+
:definition_lists => true,
|
463
|
+
:strikethrough => true,
|
464
|
+
:superscript => true,
|
465
|
+
:tables => true,
|
466
|
+
}
|
467
|
+
when 'kramdown'
|
468
|
+
{}
|
469
|
+
else
|
470
|
+
{
|
471
|
+
:autolink => true,
|
472
|
+
:no_intra_emphasis => true,
|
473
|
+
:strikethrough => true,
|
474
|
+
:superscript => true,
|
475
|
+
:tables => true,
|
476
|
+
:underline => true,
|
477
|
+
}
|
478
|
+
end
|
479
|
+
end
|
450
480
|
end
|
Binary file
|
data/public/css/menu.png
ADDED
Binary file
|
data/public/css/presenter.css
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
/* Sizes must be defined for child elements to use them in fluid calculations. */
|
2
2
|
#main {
|
3
3
|
height: 100%;
|
4
|
+
height: 100vh;
|
5
|
+
display: -webkit-flex;
|
6
|
+
display: flex;
|
7
|
+
-webkit-flex-flow: column;
|
8
|
+
flex-flow: column;
|
4
9
|
min-width: 630px;
|
5
10
|
}
|
6
11
|
|
@@ -10,10 +15,7 @@ div.zoomed {
|
|
10
15
|
-moz-transform-origin: 0 0;
|
11
16
|
}
|
12
17
|
|
13
|
-
#preso { margin: 2% auto; }
|
14
|
-
|
15
18
|
#topbar {
|
16
|
-
height: 5%;
|
17
19
|
min-height: 24px;
|
18
20
|
background: #cfcfcf;
|
19
21
|
vertical-align: middle;
|
@@ -53,24 +55,41 @@ div.zoomed {
|
|
53
55
|
display: none;
|
54
56
|
}
|
55
57
|
|
56
|
-
|
57
58
|
#center {
|
58
|
-
|
59
|
+
display: -webkit-flex;
|
60
|
+
display: flex;
|
61
|
+
-webkit-flex-flow: row;
|
62
|
+
flex-flow: row;
|
63
|
+
-webkit-flex: 5;
|
64
|
+
flex: 5;
|
59
65
|
background-color: #fff;
|
60
66
|
}
|
61
67
|
#sidebar {
|
62
|
-
|
68
|
+
display: -webkit-flex;
|
69
|
+
display: flex;
|
70
|
+
-webkit-flex-flow: column;
|
71
|
+
flex-flow: column;
|
72
|
+
-webkit-flex: 1;
|
73
|
+
flex: 1;
|
74
|
+
-webkit-order: 0;
|
75
|
+
order: 0;
|
63
76
|
min-width: 210px;
|
64
|
-
height: 100%;
|
65
|
-
float: left;
|
66
77
|
padding: 0;
|
67
78
|
margin: 0;
|
68
|
-
|
79
|
+
background-color: #fff;
|
80
|
+
border-right: 1px solid #ccc;
|
69
81
|
}
|
70
82
|
#timerSection {
|
71
|
-
|
72
|
-
|
73
|
-
|
83
|
+
margin-bottom: 0.25em;
|
84
|
+
padding-left: 0.5em;
|
85
|
+
height: 2.15em;
|
86
|
+
line-height: 2.15em;
|
87
|
+
vertical-align: middle;
|
88
|
+
}
|
89
|
+
|
90
|
+
#timerSection #timerInfo {
|
91
|
+
margin-left: 25px;
|
92
|
+
font-weight: bold;
|
74
93
|
}
|
75
94
|
|
76
95
|
#timerSection input[type='button'] {
|
@@ -82,38 +101,39 @@ div.zoomed {
|
|
82
101
|
.tRed { background: #d99; }
|
83
102
|
.tYellow { background: #dd9; }
|
84
103
|
|
85
|
-
#sidebar #feedbackPace {
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
}
|
90
|
-
#sidebar #feedbackPace #paceFast,
|
91
|
-
#sidebar #feedbackPace #paceSlow {
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
}
|
96
|
-
#sidebar #feedbackPace #paceFast {
|
97
|
-
|
98
|
-
|
99
|
-
}
|
100
|
-
#sidebar #feedbackPace #paceSlow {
|
101
|
-
|
102
|
-
|
103
|
-
}
|
104
|
-
#sidebar #feedbackPace #paceMarker {
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
104
|
+
#sidebar #feedbackPace {
|
105
|
+
height: 40px;
|
106
|
+
position: relative;
|
107
|
+
background: transparent url(pace.png) no-repeat center bottom;
|
108
|
+
}
|
109
|
+
#sidebar #feedbackPace #paceFast,
|
110
|
+
#sidebar #feedbackPace #paceSlow {
|
111
|
+
font-size: 1.5em;
|
112
|
+
font-weight: bold;
|
113
|
+
display: none;
|
114
|
+
}
|
115
|
+
#sidebar #feedbackPace #paceFast {
|
116
|
+
float: left;
|
117
|
+
margin-left: 1em;
|
118
|
+
}
|
119
|
+
#sidebar #feedbackPace #paceSlow {
|
120
|
+
float: right;
|
121
|
+
margin-right: 1em;
|
122
|
+
}
|
123
|
+
#sidebar #feedbackPace #paceMarker {
|
124
|
+
left: 50%;
|
125
|
+
position: absolute;
|
126
|
+
transform: translate(-50%, -50%);
|
127
|
+
-webkit-transform: translate(-50%, 0);
|
128
|
+
-moz-transform: translate(-50%, 0);
|
129
|
+
-ms-transform: translate(-50%, 0);
|
130
|
+
-o-transform: translate(-50%, 0);
|
112
131
|
|
113
|
-
}
|
132
|
+
}
|
114
133
|
|
115
134
|
#slidemenu {
|
116
|
-
|
135
|
+
-webkit-flex: 1;
|
136
|
+
flex: 1;
|
117
137
|
background-color: #fff;
|
118
138
|
}
|
119
139
|
#slidemenu ul li {
|
@@ -121,9 +141,14 @@ div.zoomed {
|
|
121
141
|
}
|
122
142
|
|
123
143
|
.menu {
|
124
|
-
|
125
|
-
|
144
|
+
-webkit-flex: 1;
|
145
|
+
flex: 1;
|
126
146
|
overflow:auto;
|
147
|
+
background-color: #fff;
|
148
|
+
font-family: helvetica;
|
149
|
+
}
|
150
|
+
.menu ul li {
|
151
|
+
padding: 5px;
|
127
152
|
}
|
128
153
|
|
129
154
|
.menu a {
|
@@ -135,7 +160,9 @@ div.zoomed {
|
|
135
160
|
-webkit-border-radius: 0.25em;
|
136
161
|
-khtml-border-radius: 0.25em;
|
137
162
|
border-radius: 0.25em;
|
163
|
+
text-decoration: none;
|
138
164
|
}
|
165
|
+
.menu li.highlighted a,
|
139
166
|
.menu a:hover {
|
140
167
|
margin: 0;
|
141
168
|
border: 1px solid #ccc;
|
@@ -143,78 +170,93 @@ div.zoomed {
|
|
143
170
|
}
|
144
171
|
.menu > ul > li > ul {
|
145
172
|
padding-left: 20px;
|
146
|
-
font-size:
|
173
|
+
font-size: 120%;
|
174
|
+
font-weight: 100;
|
147
175
|
}
|
148
176
|
.menu > ul > li > a {
|
149
177
|
padding: 10px;
|
150
178
|
background: #eee;
|
179
|
+
font-size: 140%;
|
151
180
|
}
|
152
181
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
182
|
+
#presenter {
|
183
|
+
display: -webkit-flex;
|
184
|
+
display: flex;
|
185
|
+
-webkit-flex-flow: column;
|
186
|
+
flex-flow: column;
|
187
|
+
-webkit-flex: 4;
|
188
|
+
flex: 4;
|
189
|
+
-webkit-order: 1;
|
190
|
+
order: 1;
|
158
191
|
}
|
159
192
|
|
160
|
-
#preview
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
193
|
+
#preview {
|
194
|
+
-webkit-flex: 1;
|
195
|
+
flex: 1;
|
196
|
+
overflow: auto;
|
197
|
+
background: #eee;
|
198
|
+
padding: 1em;
|
199
|
+
}
|
166
200
|
|
167
|
-
|
168
|
-
|
169
|
-
}
|
201
|
+
#preview .content form div.tools input[type=button].display {
|
202
|
+
display: inline;
|
203
|
+
}
|
204
|
+
#preview .content form div.tools input[type=submit] {
|
205
|
+
display: none;
|
206
|
+
}
|
170
207
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
}
|
175
|
-
#progress {
|
176
|
-
margin-left: 1em;
|
177
|
-
}
|
178
|
-
#debugInfo {
|
179
|
-
display: inline;
|
180
|
-
}
|
181
|
-
#enableFollower,
|
182
|
-
#enableRemote {
|
183
|
-
float: right;
|
184
|
-
border: 1px solid #ccc;
|
185
|
-
margin: 1px;
|
186
|
-
padding: 0.1em;
|
187
|
-
-moz-border-radius: 0.25em;
|
188
|
-
-webkit-border-radius: 0.25em;
|
189
|
-
-khtml-border-radius: 0.25em;
|
190
|
-
border-radius: 0.25em;
|
191
|
-
}
|
192
|
-
#enableRemote.active {
|
193
|
-
background-color: #fff8bf;
|
194
|
-
-webkit-box-shadow: 0px 0px 15px 5px rgba(255, 255, 190, .75);
|
195
|
-
-moz-box-shadow: 0px 0px 15px 5px rgba(255, 255, 190, .75);
|
196
|
-
box-shadow: 0px 0px 15px 5px rgba(255, 255, 190, .75);
|
197
|
-
}
|
198
|
-
#zoomer {
|
199
|
-
float: right;
|
200
|
-
}
|
208
|
+
img#disconnected {
|
209
|
+
margin: 0.5em 1em;
|
210
|
+
}
|
201
211
|
|
202
|
-
#
|
203
|
-
|
204
|
-
|
205
|
-
|
212
|
+
#statusbar {
|
213
|
+
height: 22px;
|
214
|
+
line-height: 22px;
|
215
|
+
text-transform: uppercase;
|
216
|
+
vertical-align: middle;
|
217
|
+
background: #fff;
|
218
|
+
}
|
219
|
+
#progress {
|
220
|
+
margin-left: 1em;
|
221
|
+
position: relative;
|
222
|
+
}
|
223
|
+
#debugInfo {
|
224
|
+
display: inline;
|
225
|
+
}
|
226
|
+
#enableFollower,
|
227
|
+
#enableRemote {
|
228
|
+
float: right;
|
229
|
+
margin: 1px;
|
230
|
+
padding: 0.1em;
|
231
|
+
}
|
232
|
+
#enableRemote.active {
|
233
|
+
background-color: #fff8bf;
|
234
|
+
-webkit-box-shadow: 0px 0px 15px 5px rgba(255, 255, 190, .75);
|
235
|
+
-moz-box-shadow: 0px 0px 15px 5px rgba(255, 255, 190, .75);
|
236
|
+
box-shadow: 0px 0px 15px 5px rgba(255, 255, 190, .75);
|
237
|
+
}
|
238
|
+
#zoomer {
|
239
|
+
float: right;
|
240
|
+
}
|
206
241
|
|
207
242
|
#bottom {
|
208
|
-
|
209
|
-
|
243
|
+
display: -webkit-flex;
|
244
|
+
display: flex;
|
245
|
+
-webkit-flex-flow: row;
|
246
|
+
flex-flow: row;
|
247
|
+
height: 150px;
|
248
|
+
background: #F5ED9B;
|
249
|
+
border-top: 1px solid #ccc;
|
210
250
|
}
|
211
251
|
|
212
252
|
#questions {
|
213
|
-
|
214
|
-
|
253
|
+
-webkit-flex: 1;
|
254
|
+
flex: 1;
|
255
|
+
-webkit-order: 0;
|
256
|
+
order: 0;
|
215
257
|
min-width: 210px;
|
216
|
-
border-right:
|
217
|
-
font-size: 1.
|
258
|
+
border-right: 1px solid #ccc;
|
259
|
+
font-size: 1.2em;
|
218
260
|
overflow: auto;
|
219
261
|
height: 100%;
|
220
262
|
}
|
@@ -223,17 +265,31 @@ img#disconnected {
|
|
223
265
|
}
|
224
266
|
#questions ul {
|
225
267
|
margin-left: 1.5em;
|
268
|
+
margin-right: 0.25em;
|
226
269
|
}
|
227
270
|
#questions ul li {
|
228
271
|
list-style-type: disc;
|
229
272
|
}
|
273
|
+
#questions ul li:hover {
|
274
|
+
background: #dedede url(close.png) no-repeat center center;
|
275
|
+
color: transparent;
|
276
|
+
-moz-border-radius: 1em;
|
277
|
+
-webkit-border-radius: 1em;
|
278
|
+
-khtml-border-radius: 1em;
|
279
|
+
border-radius: 1em;
|
280
|
+
}
|
230
281
|
|
231
282
|
#notes {
|
232
|
-
|
233
|
-
|
283
|
+
-webkit-flex: 4;
|
284
|
+
flex: 4;
|
285
|
+
-webkit-order: 1;
|
286
|
+
order: 1;
|
234
287
|
font-size: 1.5em;
|
235
288
|
overflow: auto;
|
236
289
|
height: 100%;
|
290
|
+
font-family: helvetica;
|
291
|
+
font-weight: 100;
|
292
|
+
padding: 0 0.25em;
|
237
293
|
}
|
238
294
|
#notes p,
|
239
295
|
#notes h1,
|
@@ -250,6 +306,7 @@ img#disconnected {
|
|
250
306
|
}
|
251
307
|
#notes ol, #notes ul {
|
252
308
|
padding-left: 2em;
|
309
|
+
margin-bottom: 0.5em;
|
253
310
|
}
|
254
311
|
#notes ol {
|
255
312
|
list-style-type: decimal;
|
@@ -285,18 +342,42 @@ a.controls {
|
|
285
342
|
|
286
343
|
/* iPhone */
|
287
344
|
/* Portrait */
|
288
|
-
@media screen and (max-width:
|
345
|
+
@media screen and (max-width: 480px)
|
289
346
|
{
|
347
|
+
#main {
|
348
|
+
min-width: 0;
|
349
|
+
}
|
350
|
+
|
351
|
+
#center {
|
352
|
+
-webkit-flex-flow: column;
|
353
|
+
flex-flow: column;
|
354
|
+
-webkit-flex: 1;
|
355
|
+
flex: 1;
|
356
|
+
}
|
357
|
+
#bottom {
|
358
|
+
-webkit-flex-flow: column;
|
359
|
+
flex-flow: column;
|
360
|
+
-webkit-flex: 1;
|
361
|
+
flex: 1;
|
362
|
+
}
|
363
|
+
#bottom #questions {
|
364
|
+
border-bottom: 1px solid #ccc;
|
365
|
+
-webkit-flex: 1;
|
366
|
+
flex: 1;
|
367
|
+
}
|
368
|
+
#bottom #notes {
|
369
|
+
-webkit-flex: 2;
|
370
|
+
flex: 2;
|
371
|
+
}
|
290
372
|
#topbar,#main,#center,#preview,#bottom,#sidebar {
|
291
|
-
min-width: 320px !important;
|
292
|
-
max-width: 320px !important;
|
293
|
-
width: 320px !important;
|
294
373
|
margin: 0;
|
295
374
|
padding: 0;
|
296
375
|
}
|
297
376
|
#topbar #slideSource {
|
298
377
|
max-width: 256px;
|
299
378
|
overflow: hidden;
|
379
|
+
height: 16px;
|
380
|
+
padding-left: 16px;
|
300
381
|
}
|
301
382
|
#topbar #slideSource #slideFile {
|
302
383
|
display: inline-block;
|
@@ -319,15 +400,30 @@ a.controls {
|
|
319
400
|
#topbar #links .mobile {
|
320
401
|
display: inline;
|
321
402
|
}
|
322
|
-
|
323
|
-
|
403
|
+
|
404
|
+
#topbar {
|
405
|
+
background-image: url(menu.png);
|
406
|
+
background-position: left center;
|
407
|
+
background-repeat: no-repeat;
|
324
408
|
}
|
325
|
-
#
|
326
|
-
|
327
|
-
|
409
|
+
#sidebar {
|
410
|
+
display: block;
|
411
|
+
position: absolute;
|
412
|
+
top: 25px;
|
413
|
+
z-index: 99999;
|
414
|
+
height: 100%;
|
415
|
+
overflow: scroll;
|
416
|
+
display: none;
|
328
417
|
}
|
329
|
-
|
330
|
-
|
418
|
+
#sidebar #timerSection,
|
419
|
+
#sidebar #feedbackPace {
|
420
|
+
display: none;
|
421
|
+
}
|
422
|
+
|
423
|
+
|
424
|
+
#statusbar {
|
425
|
+
height: auto;
|
426
|
+
line-height: inherit;
|
331
427
|
}
|
332
428
|
#statusbar #enableRemote,
|
333
429
|
#statusbar #enableFollower {
|
@@ -346,12 +442,6 @@ a.controls {
|
|
346
442
|
height: 245px;
|
347
443
|
overflow: auto;
|
348
444
|
}
|
349
|
-
#sidebar {
|
350
|
-
position: absolute;
|
351
|
-
top: 534px;
|
352
|
-
float: none;
|
353
|
-
height: auto;
|
354
|
-
}
|
355
445
|
#preso {
|
356
446
|
width: 976px;
|
357
447
|
margin: 0;
|
data/public/css/showoff.css
CHANGED
@@ -234,6 +234,52 @@ img#disconnected {
|
|
234
234
|
font-weight: bold;
|
235
235
|
}
|
236
236
|
|
237
|
+
/**********************************
|
238
|
+
*** Table styling ***
|
239
|
+
**********************************/
|
240
|
+
|
241
|
+
.content table {
|
242
|
+
margin-left: auto;
|
243
|
+
margin-right: auto;
|
244
|
+
border-collapse:collapse;
|
245
|
+
width: 80%;
|
246
|
+
font-size: 1.7em;
|
247
|
+
}
|
248
|
+
|
249
|
+
.content.small table {
|
250
|
+
font-size: 1.6em;
|
251
|
+
width: 90%;
|
252
|
+
}
|
253
|
+
.content.smaller table {
|
254
|
+
font-size: 1.5em;
|
255
|
+
width: 95%;
|
256
|
+
}
|
257
|
+
|
258
|
+
.content table th {
|
259
|
+
border-bottom: 2px solid #ccc;
|
260
|
+
padding: 0.5em;
|
261
|
+
font-weight: bold;
|
262
|
+
}
|
263
|
+
|
264
|
+
.content table tr td {
|
265
|
+
border-right: 1px solid #eee;
|
266
|
+
border-bottom: 1px solid #efefef;
|
267
|
+
text-align: center;
|
268
|
+
padding: 0.5em;
|
269
|
+
}
|
270
|
+
|
271
|
+
.content table tr td:last-child {
|
272
|
+
border-right: none;
|
273
|
+
}
|
274
|
+
|
275
|
+
.content table li {
|
276
|
+
list-style-type: disc;
|
277
|
+
}
|
278
|
+
|
279
|
+
|
280
|
+
/**********************************
|
281
|
+
*** Sidebar styling ***
|
282
|
+
**********************************/
|
237
283
|
|
238
284
|
#feedbackWrapper {
|
239
285
|
float: left;
|
data/public/js/presenter.js
CHANGED
@@ -6,7 +6,7 @@ var paceData = [];
|
|
6
6
|
|
7
7
|
$(document).ready(function(){
|
8
8
|
// set up the presenter modes
|
9
|
-
mode = { track:
|
9
|
+
mode = { track: true, follow: true, update: true, slave: false, next: false};
|
10
10
|
|
11
11
|
// attempt to open another window for the presentation if the mode defaults
|
12
12
|
// to enabling this. It does not by default, so this is likely a no-op.
|
@@ -56,22 +56,28 @@ $(document).ready(function(){
|
|
56
56
|
$('#zoomer').tipsy({ gravity: 'ne' });
|
57
57
|
|
58
58
|
// Bind events for mobile viewing
|
59
|
-
|
59
|
+
if( mobile() ) {
|
60
|
+
$('#preso').unbind('tap').unbind('swipeleft').unbind('swiperight');
|
60
61
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
$('#preso').addSwipeEvents().
|
63
|
+
bind('tap', presNextStep). // next
|
64
|
+
bind('swipeleft', presNextStep). // next
|
65
|
+
bind('swiperight', presPrevStep); // prev
|
65
66
|
|
66
|
-
|
67
|
-
|
67
|
+
$('#topbar #slideSource').click( function(e) {
|
68
|
+
$('#sidebar').toggle();
|
69
|
+
});
|
68
70
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
$('#topbar #update').click( function(e) {
|
72
|
+
e.preventDefault();
|
73
|
+
$.get("/getpage", function(data) {
|
74
|
+
gotoSlide(data);
|
75
|
+
});
|
73
76
|
});
|
74
|
-
}
|
77
|
+
}
|
78
|
+
|
79
|
+
$('#remoteToggle').change( toggleFollower );
|
80
|
+
$('#followerToggle').change( toggleUpdater );
|
75
81
|
|
76
82
|
setInterval(function() { updatePace() }, 1000);
|
77
83
|
|
@@ -110,7 +116,7 @@ function reportIssue() {
|
|
110
116
|
}
|
111
117
|
|
112
118
|
function editSlide() {
|
113
|
-
var slide = $("span#slideFile").text();
|
119
|
+
var slide = $("span#slideFile").text().replace(/\/\d+$/, '');
|
114
120
|
var link = editUrl + slide + ".md";
|
115
121
|
window.open(link);
|
116
122
|
}
|
@@ -212,6 +218,10 @@ function openNext()
|
|
212
218
|
|
213
219
|
function askQuestion(question) {
|
214
220
|
$("#questions ul").prepend($('<li/>').text(question));
|
221
|
+
|
222
|
+
$('#questions ul li:first-child').click( function(e) {
|
223
|
+
$(this).remove();
|
224
|
+
});
|
215
225
|
}
|
216
226
|
|
217
227
|
function paceFeedback(pace) {
|
@@ -494,6 +504,7 @@ function toggleTimer()
|
|
494
504
|
seconds = 0
|
495
505
|
timerRunning = false
|
496
506
|
totalMinutes = 0
|
507
|
+
setProgressColor(false)
|
497
508
|
$("#timerInfo").text('')
|
498
509
|
$("#minStart").show()
|
499
510
|
$("#minStop").hide()
|
@@ -515,6 +526,9 @@ function setProgressColor(progress) {
|
|
515
526
|
ts.removeClass('tGreen')
|
516
527
|
ts.removeClass('tYellow')
|
517
528
|
ts.removeClass('tRed')
|
529
|
+
|
530
|
+
if(progress === false) return;
|
531
|
+
|
518
532
|
if(progress > 10) {
|
519
533
|
ts.addClass('tBlue')
|
520
534
|
} else if (progress > 0) {
|
@@ -532,17 +546,6 @@ var setCurrentStyle = function(style, prop) {
|
|
532
546
|
try { slaveWindow.setCurrentStyle(style, false); } catch (e) {}
|
533
547
|
}
|
534
548
|
|
535
|
-
function mobile() {
|
536
|
-
return ( navigator.userAgent.match(/Android/i)
|
537
|
-
|| navigator.userAgent.match(/webOS/i)
|
538
|
-
|| navigator.userAgent.match(/iPhone/i)
|
539
|
-
|| navigator.userAgent.match(/iPad/i)
|
540
|
-
|| navigator.userAgent.match(/iPod/i)
|
541
|
-
|| navigator.userAgent.match(/BlackBerry/i)
|
542
|
-
|| navigator.userAgent.match(/Windows Phone/i)
|
543
|
-
);
|
544
|
-
}
|
545
|
-
|
546
549
|
/********************
|
547
550
|
Follower Code
|
548
551
|
********************/
|
data/public/js/showoff.js
CHANGED
@@ -27,6 +27,7 @@ var loadSlidesPrefix
|
|
27
27
|
|
28
28
|
var mode = { track: true, follow: false };
|
29
29
|
|
30
|
+
|
30
31
|
function setupPreso(load_slides, prefix) {
|
31
32
|
if (preso_started)
|
32
33
|
{
|
@@ -346,8 +347,23 @@ function showSlide(back_step, updatepv) {
|
|
346
347
|
pv.postSlide();
|
347
348
|
|
348
349
|
pv.update();
|
350
|
+
|
349
351
|
}
|
350
352
|
|
353
|
+
// Update presenter view nav for current slide
|
354
|
+
$( ".menu > ul > li > ul > li" ).each(function() {
|
355
|
+
if ($(this).text().split(". ")[0] == slidenum+1) {
|
356
|
+
$(".menu > ul > li > ul ").hide(); //Collapse nav
|
357
|
+
$(".menu > ul > li > ul > li").removeClass('highlighted');
|
358
|
+
$(this).addClass('highlighted'); //Highlight current menu item
|
359
|
+
$(this).parent().show(); //Show nav block containing current slide
|
360
|
+
|
361
|
+
if( ! mobile() ) {
|
362
|
+
$(this).get(0).scrollIntoView(); //Scroll so current item is at the top of the view
|
363
|
+
}
|
364
|
+
}
|
365
|
+
});
|
366
|
+
|
351
367
|
return ret;
|
352
368
|
}
|
353
369
|
|
@@ -666,7 +682,7 @@ function track() {
|
|
666
682
|
|
667
683
|
// Open a new tab with an online code editor, if so configured
|
668
684
|
function editSlide() {
|
669
|
-
var slide = $("span#slideFilename").text();
|
685
|
+
var slide = $("span#slideFilename").text().replace(/\/\d+$/, '');
|
670
686
|
var link = editUrl + slide + ".md";
|
671
687
|
window.open(link);
|
672
688
|
}
|
@@ -1236,3 +1252,19 @@ function setupStats()
|
|
1236
1252
|
$(this).find("div.detail").slideToggle("fast");
|
1237
1253
|
});
|
1238
1254
|
}
|
1255
|
+
|
1256
|
+
/* Is this a mobile device? */
|
1257
|
+
function mobile() {
|
1258
|
+
/*
|
1259
|
+
return ( navigator.userAgent.match(/Android/i)
|
1260
|
+
|| navigator.userAgent.match(/webOS/i)
|
1261
|
+
|| navigator.userAgent.match(/iPhone/i)
|
1262
|
+
|| navigator.userAgent.match(/iPad/i)
|
1263
|
+
|| navigator.userAgent.match(/iPod/i)
|
1264
|
+
|| navigator.userAgent.match(/BlackBerry/i)
|
1265
|
+
|| navigator.userAgent.match(/Windows Phone/i)
|
1266
|
+
);
|
1267
|
+
*/
|
1268
|
+
|
1269
|
+
return ( $(window).width() <= 480 )
|
1270
|
+
}
|
data/views/presenter.erb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
<!DOCTYPE html
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
1
|
+
<!DOCTYPE html>
|
3
2
|
|
4
3
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
4
|
<head>
|
@@ -29,8 +28,8 @@
|
|
29
28
|
</table>
|
30
29
|
</div>
|
31
30
|
|
32
|
-
<div id="main"
|
33
|
-
<div id="topbar"
|
31
|
+
<div id="main">
|
32
|
+
<div id="topbar">
|
34
33
|
<div id="slideSource">
|
35
34
|
Source: <span id="slideFile"></span>
|
36
35
|
</div>
|
@@ -56,7 +55,7 @@
|
|
56
55
|
</div>
|
57
56
|
|
58
57
|
<div id="center">
|
59
|
-
<div id="sidebar"
|
58
|
+
<div id="sidebar">
|
60
59
|
<div id="timerSection">
|
61
60
|
Timer:
|
62
61
|
<span id="minStart">
|
@@ -71,32 +70,30 @@
|
|
71
70
|
<span id="paceFast">Slow Down!</span>
|
72
71
|
<img id="paceMarker" src="<%= @asset_path %>/css/paceMarker.png" />
|
73
72
|
</div>
|
74
|
-
<div id="
|
75
|
-
<div id="navigation" class="menu"></div>
|
76
|
-
</div>
|
77
|
-
</div>
|
78
|
-
<div id="preview" class="grid_8">
|
79
|
-
<img id="disconnected" src="<%= @asset_path %>/css/disconnected-large.png" />
|
80
|
-
<div id="preso" class="zoomed">loading presentation...</div>
|
73
|
+
<div id="navigation" class="menu"></div>
|
81
74
|
</div>
|
82
|
-
<div id="
|
83
|
-
<
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
<
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
<
|
93
|
-
|
75
|
+
<div id="presenter">
|
76
|
+
<div id="preview">
|
77
|
+
<img id="disconnected" src="<%= @asset_path %>/css/disconnected-large.png" />
|
78
|
+
<div id="preso" class="zoomed">loading presentation...</div>
|
79
|
+
</div>
|
80
|
+
<div id="statusbar">
|
81
|
+
<span id="progress">
|
82
|
+
Slide: <span id="slideInfo"></span>
|
83
|
+
</span>
|
84
|
+
<div id="debugInfo"></div>
|
85
|
+
<input id="zoomer" type="range" min="0.5" max="1.5" step="0.01" onchange="javascript:zoom();" title="Alter the zoom level of the slide preview." />
|
86
|
+
<span id="enableRemote" title="Enables tracking of other presenters.">
|
87
|
+
<label for="remoteToggle">Enable Remote</label><input type="checkbox" id="remoteToggle" checked />
|
88
|
+
</span>
|
89
|
+
<span id="enableFollower" title="Send slide change notifications.">
|
90
|
+
<label for="followerToggle">Update Follower</label><input type="checkbox" id="followerToggle" checked />
|
91
|
+
</span>
|
92
|
+
</div>
|
94
93
|
</div>
|
95
94
|
</div>
|
96
95
|
|
97
|
-
<div id="
|
98
|
-
|
99
|
-
<div id="bottom" class="grid_12">
|
96
|
+
<div id="bottom">
|
100
97
|
<div id="questions">
|
101
98
|
<h3>Audience Questions</h3>
|
102
99
|
<ul></ul>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: showoff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -182,12 +182,14 @@ files:
|
|
182
182
|
- views/onepage.erb
|
183
183
|
- views/presenter.erb
|
184
184
|
- views/stats.erb
|
185
|
+
- public/css/close.png
|
185
186
|
- public/css/disconnected-large.png
|
186
187
|
- public/css/disconnected.png
|
187
188
|
- public/css/fast.png
|
188
189
|
- public/css/fg.menu.css
|
189
190
|
- public/css/grippy-close.png
|
190
191
|
- public/css/grippy.png
|
192
|
+
- public/css/menu.png
|
191
193
|
- public/css/onepage.css
|
192
194
|
- public/css/pace.png
|
193
195
|
- public/css/paceMarker.png
|