showoff 0.9.9.1 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|