showoff 0.14.3 → 0.15.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6af0328fa0f7902f4b8b41aab135dc68ecb5b18b
4
- data.tar.gz: 69fcaa2c090c7b69e930aeeaae98b6680519dfaa
3
+ metadata.gz: 93da591c826ee3aca98428a4a9525f86cf3688fa
4
+ data.tar.gz: 130a86bfccb802aea7d3ba7025ace68b478c5ce1
5
5
  SHA512:
6
- metadata.gz: cb7757af9a213f5d232674d29e3885791466e961d0eab032d61fb4f68fde5f1ea1647b95e22812d9bd1f6fed97a7ce87b0ba40c7c43ac10d5693e8223e291795
7
- data.tar.gz: 4fea23475193b76fc27494aa6f345efbc7a6a4ab54333d201f483ed8dfa44104eb7d91cb07660720f788dd38f94b5f3a2a0162ac032163f9cc5ebae361d2f65c
6
+ metadata.gz: 5f8d82b171e6a0e7cf7804da4eb7bbfc443882ad48cc02dd8c0faf8d5bb6f2c7e57cf64be03a34d24b47c5522d2d981a1b4f185dc156011bac8efff637455db3
7
+ data.tar.gz: aa047b17de3c4f8e75ba004b48e72a4217b45ad3098be48c557a1837fc7437ece2665a780d10df1786a68104eba45f572ddb8b1f936cdb785886e975391f757a
data/lib/keymap.rb CHANGED
@@ -9,7 +9,8 @@ module Keymap
9
9
  'down' => 'NEXT',
10
10
  'right' => 'NEXT',
11
11
  'pagedown' => 'NEXT',
12
- 'r' => 'RELOAD',
12
+ 'R' => 'RELOAD',
13
+ 'r' => 'REFRESH',
13
14
  'c' => 'CONTENTS',
14
15
  't' => 'CONTENTS',
15
16
  'h' => 'HELP',
@@ -1,3 +1,3 @@
1
1
  # No namespace here since ShowOff is a class and I'd have to inherit from
2
2
  # Sinatra::Application (which we don't want to load here)
3
- SHOWOFF_VERSION = '0.14.3'
3
+ SHOWOFF_VERSION = '0.15.0'
data/lib/showoff.rb CHANGED
@@ -1204,8 +1204,10 @@ class ShowOff < Sinatra::Application
1204
1204
 
1205
1205
  if index == 'all'
1206
1206
  doc.css(classes).collect do |code|
1207
- lang = code.attr('class') =~ /language-(\S*)/ ? $1 : nil
1208
- [lang, code.text]
1207
+ classes = code.attr('class').split rescue []
1208
+ lang = classes.shift =~ /language-(\S*)/ ? $1 : nil
1209
+
1210
+ [lang, code.text, classes]
1209
1211
  end
1210
1212
  else
1211
1213
  doc.css(classes)[index.to_i].text rescue 'Invalid code block index'
@@ -1410,6 +1412,7 @@ class ShowOff < Sinatra::Application
1410
1412
  if valid_cookie()
1411
1413
  name = control['name']
1412
1414
  slide = control['slide'].to_i
1415
+ increment = control['increment'].to_i rescue 0
1413
1416
 
1414
1417
  # check to see if we need to enable a download link
1415
1418
  if @@downloads.has_key?(slide)
@@ -1419,10 +1422,10 @@ class ShowOff < Sinatra::Application
1419
1422
 
1420
1423
  # update the current slide pointer
1421
1424
  @logger.debug "Updated current slide to #{name}"
1422
- @@current = { :name => name, :number => slide }
1425
+ @@current = { :name => name, :number => slide, :increment => increment }
1423
1426
 
1424
1427
  # schedule a notification for all clients
1425
- EM.next_tick { settings.sockets.each{|s| s.send({ 'message' => 'current', 'current' => @@current[:number] }.to_json) } }
1428
+ EM.next_tick { settings.sockets.each{|s| s.send({ 'message' => 'current', 'current' => @@current[:number], 'increment' => @@current[:increment] }.to_json) } }
1426
1429
  end
1427
1430
 
1428
1431
  when 'register'
data/lib/showoff_utils.rb CHANGED
@@ -122,9 +122,14 @@ class ShowOffUtils
122
122
  if filename.downcase.end_with? '.md'
123
123
  print '.'
124
124
  showoff.get_code_from_slide(filename.sub('.md',''), 'all', false).each_with_index do |block, index|
125
- lang, code = block
125
+ lang, code, classes = block
126
126
  validator = validators[lang]
127
- if validator
127
+
128
+ if classes.include? 'no-validate'
129
+ print '-'
130
+ next
131
+
132
+ elsif validator
128
133
  # write out a tempfile because many validators require files to with
129
134
  Tempfile.open('showoff-validation') do |f|
130
135
  File.write(f.path, code)
@@ -134,6 +139,7 @@ class ShowOffUtils
134
139
  end
135
140
  end
136
141
  end
142
+
137
143
  end
138
144
  end
139
145
  end
@@ -27,12 +27,15 @@
27
27
  color: #fff;
28
28
  }
29
29
 
30
- #topbar a {
30
+ #topbar a,
31
+ #topbar select {
31
32
  text-decoration: none;
32
33
  color: #fff;
34
+ background: #222222;
33
35
  }
34
36
 
35
- #topbar a:hover{
37
+ #topbar a:hover,
38
+ #topbar select:hover {
36
39
  background-color: #555;
37
40
  }
38
41
 
@@ -72,7 +75,8 @@
72
75
  margin: 0 0.5em;
73
76
  }
74
77
 
75
- #presenterPopup {
78
+ #presenterPopup,
79
+ #nextWindowConfirmation {
76
80
  display: none;
77
81
  position: absolute;
78
82
  z-index: 2147483647;
@@ -88,10 +92,25 @@
88
92
  overflow: auto;
89
93
  }
90
94
 
91
- #presenterPopup a {
95
+ #presenterPopup a,
96
+ #nextWindowConfirmation a {
92
97
  color: #ffffff;
93
98
  }
94
99
 
100
+ #nextWindowConfirmation {
101
+ right: 0.25em;
102
+ left: auto;
103
+ width: 14em;
104
+ }
105
+ #nextWindowConfirmation p {
106
+ margin: 0.25em;
107
+ }
108
+ #nextWindowConfirmation input {
109
+ float: right;
110
+ margin: 0.25em;
111
+ }
112
+
113
+
95
114
  #center {
96
115
  display: -webkit-flex;
97
116
  display: flex;
@@ -206,6 +225,24 @@
206
225
  overflow-x: hidden;
207
226
  overflow-y: auto;
208
227
  }
228
+ #navigationHover {
229
+ display: none;
230
+ position: absolute;
231
+ overflow: hidden;
232
+ z-index: 99999;
233
+ width: 200px;
234
+ height: 150px;
235
+ background-color: white;
236
+ border: 1px solid #4D4F53;
237
+ margin: 0px;
238
+ border-radius: 3px;
239
+ box-shadow: 3px 3px 5px #ccc;
240
+ }
241
+ #navigationHover .content {
242
+ width: 200%;
243
+ transform: scale(0.5);
244
+ transform-origin: 0 0;
245
+ }
209
246
 
210
247
  #presenter {
211
248
  display: -webkit-flex;
@@ -226,16 +263,96 @@
226
263
  flex-flow: row;
227
264
  -webkit-flex: 10;
228
265
  flex: 10;
229
- max-height: 95%; /* dear Firefox; what's the point of flex-box if we still have to do this crap? */
230
266
  }
231
267
 
268
+
232
269
  #preview {
270
+ position: relative;
233
271
  -webkit-flex: 10;
234
272
  flex: 10;
235
- overflow: auto;
273
+ overflow: hidden;
236
274
  background: #eee;
237
275
  padding: 1em;
238
276
  }
277
+
278
+ /* thumbnails layout */
279
+ #preview.thumbs {
280
+ padding-top: 100px;
281
+ }
282
+ #preview .thumb {
283
+ display: none;
284
+ position: absolute;
285
+ top: 0;
286
+ }
287
+ #preview .thumb .label {
288
+ }
289
+ #nextSlide.thumb .label {
290
+ text-align: right;
291
+ }
292
+
293
+ #preview .thumb .container {
294
+ overflow: hidden;
295
+ height: 150px;
296
+ width: 200px;
297
+ top: 0;
298
+ background-color: white;
299
+ border-bottom: 2px solid #ccc;
300
+ }
301
+ #preview .thumb .content {
302
+ transform: scale(.5);
303
+ transform-origin: 0 0;
304
+ width: 200%;
305
+ }
306
+ #prevSlide.thumb {
307
+ left: 0;
308
+ }
309
+ #prevSlide.thumb .container {
310
+ border-right: 2px solid #ccc;
311
+ }
312
+ #nextSlide.thumb {
313
+ right: 0;
314
+ }
315
+ #nextSlide.thumb .container {
316
+ border-left: 2px solid #ccc;
317
+ }
318
+
319
+ #preview.thumbs #preso {
320
+ position: absolute;
321
+ bottom: 1em;
322
+ margin-left: auto;
323
+ margin-right: auto;
324
+ left: 0;
325
+ right: 0;
326
+ }
327
+
328
+ /* allow us to actually see images! */
329
+ #navigationHover img,
330
+ .thumb img {
331
+ width: 100%;
332
+ height: 100%;
333
+ }
334
+
335
+ /* beside layout */
336
+ #preview.beside .thumb {
337
+ display: none;
338
+ position: absolute;
339
+ overflow: hidden;
340
+ width: 34%;
341
+ top: 1em;
342
+ }
343
+ #preview.beside .thumb .container {
344
+ width: auto;
345
+ }
346
+
347
+ #nextSlide.beside {
348
+ right: 1em;
349
+ }
350
+ #preview.beside #preso {
351
+ position: absolute;
352
+ left: 1em;
353
+ }
354
+
355
+
239
356
  #preview input[type=button].display {
240
357
  display: inline;
241
358
  }
@@ -247,8 +364,12 @@
247
364
  font-weight: 900;
248
365
  }
249
366
 
250
- #disconnected {
367
+ #preview img#disconnected {
251
368
  margin: 0.5em 1em;
369
+ float: none;
370
+ position: absolute;
371
+ bottom: 0;
372
+ left: 0;
252
373
  }
253
374
 
254
375
  #preview .incremental.hidden {
@@ -259,11 +380,29 @@
259
380
  color: #404040;
260
381
  }
261
382
 
383
+ /* floating layout */
384
+ body.floating {
385
+ margin: 0.5em;
386
+ width: unset !important;
387
+ max-width: unset !important;
388
+ }
389
+ body.floating.next {
390
+ transform: scale(.5);
391
+ transform-origin: 0 0;
392
+ width: 200% !important;
393
+ }
394
+ html > body.floating.notes,
395
+ body.floating.notes {
396
+ overflow: auto;
397
+ height: auto;
398
+ }
399
+
262
400
 
263
401
  #preso {
264
402
  -webkit-box-shadow:0 0 25px rgba(0,0,0,0.35);
265
403
  -moz-box-shadow:0 0 25px rgba(0,0,0,0.35);
266
404
  box-shadow:0 0 25px rgba(0,0,0,0.35);
405
+ position: absolute;
267
406
  }
268
407
 
269
408
  #statusbar {
@@ -545,7 +684,8 @@ a.controls {
545
684
  }
546
685
  #links .desktop,
547
686
  #separator,
548
- #stylepicker {
687
+ #stylepicker,
688
+ #layoutSelector {
549
689
  display: none !important;
550
690
  }
551
691
  #links {
@@ -52,6 +52,10 @@ pre code {
52
52
  overflow: hidden;
53
53
  }
54
54
 
55
+ body.busy {
56
+ cursor: progress;
57
+ }
58
+
55
59
  body#download {
56
60
  overflow: auto;
57
61
  }
@@ -67,6 +71,7 @@ pre code {
67
71
  background-repeat: no-repeat;
68
72
  background-position: center;
69
73
  background-size: cover;
74
+ position: relative;
70
75
  }
71
76
 
72
77
  .slide {
@@ -914,16 +919,18 @@ form .element {
914
919
  .callout.question,
915
920
  .callout.exercise,
916
921
  .callout.stop,
917
- .callout.thumbsup {
922
+ .callout.thumbsup,
923
+ .callout.conversation {
918
924
  padding-left: 3em;
919
925
  }
920
926
 
921
- .callout.info:before { content: "\f05a"; } /* fa-info-circle */
922
- .callout.warning:before { content: "\f071"; } /* fa-exclamation-triangle */
923
- .callout.question:before { content: "\f059"; } /* fa-question-circle */
924
- .callout.exercise:before { content: "\f41b"; } /* fa-pencil-square */
925
- .callout.stop:before { content: "\f05e"; } /* fa-ban */
926
- .callout.thumbsup:before { content: "\f164"; } /* fa-thumbs-up */
927
+ .callout.info:before { content: "\f05a"; } /* fa-info-circle */
928
+ .callout.warning:before { content: "\f071"; } /* fa-exclamation-triangle */
929
+ .callout.question:before { content: "\f059"; } /* fa-question-circle */
930
+ .callout.exercise:before { content: "\f41b"; } /* fa-pencil-square */
931
+ .callout.stop:before { content: "\f05e"; } /* fa-ban */
932
+ .callout.thumbsup:before { content: "\f164"; } /* fa-thumbs-up */
933
+ .callout.conversation:before { content: "\f0e5"; } /* fa-comment */
927
934
 
928
935
  /* callouts used on error pages */
929
936
  .error .callout {
@@ -971,8 +978,9 @@ h1.section_title {
971
978
  padding: 0;
972
979
  }
973
980
  body > #preso {
974
- width: 976px;
975
- zoom: 0.32;
981
+ transform: scale(.32);
982
+ transform-origin: 0 0;
983
+ width: 2928px;
976
984
  }
977
985
  #preso .slide {
978
986
  width: 100%;