showoff 0.20.0 → 0.20.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/showoff.rb +23 -8
- data/lib/showoff/version.rb +1 -1
- data/public/css/presenter.css +1 -0
- data/public/css/showoff.css +6 -6
- data/public/js/presenter.js +4 -2
- data/public/js/showoff.js +4 -4
- data/views/onepage.erb +3 -3
- data/views/presenter.erb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 604368cbb77db12fb0528dac9cb0155bebeff3be
|
4
|
+
data.tar.gz: 4129294c1e8c011521510f0496844b087247d52b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76e812ebaef4a6bd9279042bbfda4b02242cece988974506a9be49a097a6fd38696f40f68b0dce344c8354c0dcc4072a7ea21b1a7e247f2a399d601ce8fee4da
|
7
|
+
data.tar.gz: 850bf03967777e5d5101d6c7e8f44a5207a92086301d58f1ad95a99af6e2c6d62c95c7faf48226b1a85b302b9b117b948147fc4487a8cb97e12779003909e14b
|
data/lib/showoff.rb
CHANGED
@@ -254,11 +254,15 @@ class ShowOff < Sinatra::Application
|
|
254
254
|
|
255
255
|
helpers do
|
256
256
|
def css_files
|
257
|
-
Dir.glob("#{settings.pres_dir}/*.css").map { |path| File.basename(path) }
|
257
|
+
base = Dir.glob("#{settings.pres_dir}/*.css").map { |path| File.basename(path) }
|
258
|
+
extra = Array(settings.showoff_config['styles'])
|
259
|
+
base + extra
|
258
260
|
end
|
259
261
|
|
260
262
|
def js_files
|
261
|
-
Dir.glob("#{settings.pres_dir}/*.js").map { |path| File.basename(path) }
|
263
|
+
base = Dir.glob("#{settings.pres_dir}/*.js").map { |path| File.basename(path) }
|
264
|
+
extra = Array(settings.showoff_config['scripts'])
|
265
|
+
base + extra
|
262
266
|
end
|
263
267
|
|
264
268
|
def preshow_files
|
@@ -586,7 +590,7 @@ class ShowOff < Sinatra::Application
|
|
586
590
|
result.gsub!(match[0], "<pre class=\"highlight\"><code class=\"#{css}\">#{file}</code></pre>")
|
587
591
|
end
|
588
592
|
|
589
|
-
result.gsub!(/\[(fa
|
593
|
+
result.gsub!(/\[(fa\w?)-(\S*)\]/, '<i class="\1 fa-\2"></i>')
|
590
594
|
|
591
595
|
# For fenced code blocks, translate the space separated classes into one
|
592
596
|
# colon separated string so Commonmarker doesn't ignore the rest
|
@@ -1309,9 +1313,14 @@ class ShowOff < Sinatra::Application
|
|
1309
1313
|
content
|
1310
1314
|
end
|
1311
1315
|
|
1312
|
-
def print(section=nil)
|
1316
|
+
def print(section=nil, munged=false)
|
1313
1317
|
@slides = get_slides_html(:static=>true, :toc=>true, :print=>true, :section=>section)
|
1314
1318
|
@favicon = settings.showoff_config['favicon']
|
1319
|
+
|
1320
|
+
unless munged
|
1321
|
+
@baseurl = '../' * section.split('/').count
|
1322
|
+
end
|
1323
|
+
|
1315
1324
|
erb :onepage
|
1316
1325
|
end
|
1317
1326
|
|
@@ -1475,7 +1484,7 @@ class ShowOff < Sinatra::Application
|
|
1475
1484
|
data = showoff.send(what, opt)
|
1476
1485
|
when 'print'
|
1477
1486
|
opt ||= 'handouts'
|
1478
|
-
data = showoff.send(what, opt)
|
1487
|
+
data = showoff.send(what, opt, true)
|
1479
1488
|
else
|
1480
1489
|
data = showoff.send(what, true)
|
1481
1490
|
end
|
@@ -1509,8 +1518,10 @@ class ShowOff < Sinatra::Application
|
|
1509
1518
|
pres_dir = showoff.settings.pres_dir
|
1510
1519
|
|
1511
1520
|
# ..., copy all user-defined styles and javascript files
|
1512
|
-
|
1513
|
-
|
1521
|
+
showoff.css_files.each { |path|
|
1522
|
+
dest = File.join(file_dir, path)
|
1523
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
1524
|
+
FileUtils.copy(path, dest)
|
1514
1525
|
}
|
1515
1526
|
|
1516
1527
|
# ... and copy all needed image files
|
@@ -1526,12 +1537,16 @@ class ShowOff < Sinatra::Application
|
|
1526
1537
|
end
|
1527
1538
|
end
|
1528
1539
|
# copy images from css too
|
1529
|
-
|
1540
|
+
showoff.css_files.each do |css_path|
|
1530
1541
|
File.open(css_path) do |file|
|
1531
1542
|
data = file.read
|
1532
1543
|
data.scan(/url\([\"\']?(?!https?:\/\/)(.*?)[\"\']?\)/).flatten.each do |path|
|
1533
1544
|
path.gsub!(/(\#.*)$/, '') # get rid of the anchor
|
1534
1545
|
path.gsub!(/(\?.*)$/, '') # get rid of the query
|
1546
|
+
|
1547
|
+
# resolve relative paths in the stylesheet
|
1548
|
+
path = "#{File.dirname(css_path)}/#{path}" unless path.start_with? '/'
|
1549
|
+
|
1535
1550
|
logger.debug path
|
1536
1551
|
dir = File.dirname(path)
|
1537
1552
|
FileUtils.makedirs(File.join(file_dir, dir))
|
data/lib/showoff/version.rb
CHANGED
data/public/css/presenter.css
CHANGED
data/public/css/showoff.css
CHANGED
@@ -512,7 +512,7 @@ img#disconnected {
|
|
512
512
|
background-color: #dedede;
|
513
513
|
}
|
514
514
|
#askedQuestions li:hover:after {
|
515
|
-
font-family:
|
515
|
+
font-family: "Font Awesome 5 Free";
|
516
516
|
font-style: normal;
|
517
517
|
font-weight: normal;
|
518
518
|
text-decoration: inherit;
|
@@ -652,7 +652,7 @@ pre.highlight tr:not(:last-child) {
|
|
652
652
|
}
|
653
653
|
|
654
654
|
.execute:after {
|
655
|
-
font-family:
|
655
|
+
font-family: "Font Awesome 5 Free";
|
656
656
|
content: "\F144";
|
657
657
|
position: absolute;
|
658
658
|
right: .5em;
|
@@ -815,7 +815,7 @@ form .element {
|
|
815
815
|
.slide.answerkey input::before {
|
816
816
|
margin-left: -1em;
|
817
817
|
vertical-align: top;
|
818
|
-
font-family:
|
818
|
+
font-family: "Font Awesome 5 Free";
|
819
819
|
font-weight: bold;
|
820
820
|
text-decoration: none;
|
821
821
|
}
|
@@ -1065,7 +1065,7 @@ form .element {
|
|
1065
1065
|
|
1066
1066
|
/* Add the disclosure triangles */
|
1067
1067
|
#stats div.row:before {
|
1068
|
-
font-family:
|
1068
|
+
font-family: "Font Awesome 5 Free";
|
1069
1069
|
font-style: normal;
|
1070
1070
|
font-weight: normal;
|
1071
1071
|
font-size: 1.25em;
|
@@ -1230,7 +1230,7 @@ form .element {
|
|
1230
1230
|
.callout.exercise:before { content: "\f41b"; } /* fa-pencil-square */
|
1231
1231
|
.callout.stop:before { content: "\f05e"; } /* fa-ban */
|
1232
1232
|
.callout.thumbsup:before { content: "\f164"; } /* fa-thumbs-up */
|
1233
|
-
.callout.conversation:before { content: "\
|
1233
|
+
.callout.conversation:before { content: "\f075"; } /* fa-comment */
|
1234
1234
|
.callout.glossary:before { content: "\f02d"; } /* fa-book */
|
1235
1235
|
|
1236
1236
|
.callout.terminal:before { content: "\f0c8"; } /* fa-square */
|
@@ -1265,7 +1265,7 @@ a.term {
|
|
1265
1265
|
text-decoration: none;
|
1266
1266
|
}
|
1267
1267
|
a.term:after {
|
1268
|
-
font-family:
|
1268
|
+
font-family: "Font Awesome 5 Free";;
|
1269
1269
|
font-size: 0.8em;
|
1270
1270
|
vertical-align: super;
|
1271
1271
|
content: "\f27b";
|
data/public/js/presenter.js
CHANGED
@@ -36,7 +36,7 @@ $(document).ready(function(){
|
|
36
36
|
$("#notes-wrapper .fa-minus").click( function() {
|
37
37
|
notesFontSize('decrease');
|
38
38
|
});
|
39
|
-
$("#notes-wrapper .fa-
|
39
|
+
$("#notes-wrapper .fa-circle").click( function() {
|
40
40
|
notesFontSize('reset');
|
41
41
|
});
|
42
42
|
$("#notes-wrapper .fa-plus").click( function() {
|
@@ -509,7 +509,9 @@ function printSlides(section)
|
|
509
509
|
{
|
510
510
|
try {
|
511
511
|
var printWindow = window.open('print/'+section);
|
512
|
-
printWindow.
|
512
|
+
$(printWindow).on('load', function(){
|
513
|
+
printWindow.window.print();
|
514
|
+
});
|
513
515
|
}
|
514
516
|
catch(e) {
|
515
517
|
console.log('Failed to open print window. Popup blocker?');
|
data/public/js/showoff.js
CHANGED
@@ -1847,14 +1847,14 @@ var removeResults = function() {
|
|
1847
1847
|
try { slaveWindow.removeResults() } catch (e) {};
|
1848
1848
|
};
|
1849
1849
|
|
1850
|
-
var
|
1850
|
+
var displayHUD = function(text) {
|
1851
1851
|
removeResults();
|
1852
1852
|
var _results = $('<div>').addClass('results').html('<pre>' + String(text).substring(0, 1500) + '</pre>');
|
1853
1853
|
$('body').append(_results);
|
1854
1854
|
_results.click(removeResults);
|
1855
1855
|
|
1856
1856
|
// if we're a presenter, mirror this on the display window
|
1857
|
-
try { slaveWindow.
|
1857
|
+
try { slaveWindow.displayHUD(text) } catch (e) {};
|
1858
1858
|
};
|
1859
1859
|
|
1860
1860
|
// Execute the first visible executable code block
|
@@ -1910,7 +1910,7 @@ function executeLocalCode(lang, codeDiv) {
|
|
1910
1910
|
catch(e) {
|
1911
1911
|
result = e.message;
|
1912
1912
|
};
|
1913
|
-
if (result != null)
|
1913
|
+
if (result != null) displayHUD(result);
|
1914
1914
|
}
|
1915
1915
|
|
1916
1916
|
// request the server to execute a code block by path and index
|
@@ -1921,7 +1921,7 @@ function executeRemoteCode(lang, codeDiv) {
|
|
1921
1921
|
|
1922
1922
|
setExecutionSignal(true, codeDiv);
|
1923
1923
|
$.get('execute/'+lang, {path: path, index: index}, function(result) {
|
1924
|
-
if (result != null)
|
1924
|
+
if (result != null) displayHUD(result);
|
1925
1925
|
setExecutionSignal(false, codeDiv);
|
1926
1926
|
});
|
1927
1927
|
}
|
data/views/onepage.erb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
4
|
<head>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
6
|
+
<% if @baseurl %><base href="<%= @baseurl %>" /> <% end %>
|
6
7
|
<title><%= @title %></title>
|
7
8
|
|
8
9
|
<% if @favicon %>
|
@@ -10,8 +11,7 @@
|
|
10
11
|
<% end %>
|
11
12
|
|
12
13
|
<% if @inline %>
|
13
|
-
|
14
|
-
<%= inline_css(['font-awesome-4.4.0/css/font-awesome.min.css', 'mermaid-6.0.0.css', "highlight/#{@highlightStyle}.css"], 'public/css') %>
|
14
|
+
<%= inline_css(['font-awesome-5.6.1/css/all.min.css', 'mermaid-6.0.0.css', "highlight/#{@highlightStyle}.css"], 'public/css') %>
|
15
15
|
<%= inline_css(['showoff.css', 'onepage.css'], 'public/css') %>
|
16
16
|
<%= inline_css(css_files) %>
|
17
17
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<%= inline_js(js_files) %>
|
23
23
|
|
24
24
|
<% else %>
|
25
|
-
<% ['font-awesome-
|
25
|
+
<% ['font-awesome-5.6.1/css/all.min.css', 'mermaid-6.0.0.css', "highlight/#{@highlightStyle}.css",
|
26
26
|
'showoff.css', 'onepage.css'].each do |css_file| %>
|
27
27
|
<link rel="stylesheet" href="css/<%= css_file %>" type="text/css"/>
|
28
28
|
<% end %>
|
data/views/presenter.erb
CHANGED
@@ -130,7 +130,7 @@
|
|
130
130
|
<ul class="section-selector"></ul>
|
131
131
|
<div class="controls" id="notes-controls">
|
132
132
|
<a class="no-mobile fa fa-minus small" aria-hidden="true" href="#"></a>
|
133
|
-
<a class="no-mobile fa fa-
|
133
|
+
<a class="no-mobile fa fa-circle small" aria-hidden="true" href="#"></a>
|
134
134
|
<a class="no-mobile fa fa-plus small" aria-hidden="true" href="#"></a>
|
135
135
|
<span class="spacer"> </span>
|
136
136
|
<a id="notesToggle" class="no-mobile fa fa-external-link-square" aria-hidden="true" href="#"></a>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: showoff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-02-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|