showoff 0.19.0 → 0.19.1
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/locales/de.yml +8 -1
- data/locales/en.yml +9 -1
- data/locales/es.yml +9 -1
- data/locales/fr.yml +8 -1
- data/locales/ja.yml +8 -1
- data/locales/nl.yml +8 -1
- data/locales/pt.yml +8 -1
- data/public/css/showoff.css +7 -3
- data/public/js/showoff.js +107 -26
- data/views/index.erb +48 -22
- data/views/presenter.erb +102 -106
- 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: 6c80eb56b5142a913acb35ccc32b3fdaed12e0f0
|
|
4
|
+
data.tar.gz: e1b15daffac40995846c44265d1cb06b7091489f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 19556afbea4c9beeeba98671732e605752125958ab7d64eadc8bca17d1a57d06d30fa71d67a3058367b86c7bebb9b773aa3000f33aa7dee366a2202f58a4112b
|
|
7
|
+
data.tar.gz: 7b1954cc0130b69551a670c0b06c2b3b1af445541e073cb5a758b645df2cbdcceb2495807988c77e302628d43ed72177a69da024204d312959ab656028285bdf
|
data/lib/showoff/version.rb
CHANGED
data/locales/de.yml
CHANGED
|
@@ -41,6 +41,7 @@ de:
|
|
|
41
41
|
resume: "Fortsetzen in Minuten:"
|
|
42
42
|
|
|
43
43
|
tour:
|
|
44
|
+
show: Sehen Sie die Tour
|
|
44
45
|
reset: Vorschläge Zurücksetzen
|
|
45
46
|
welcome: <h3>Willkommen bei Showoff</h3>Lass mich dich herum zeigen. Nachdem du diese Tour beendet hast, wird es nicht wieder zeigen.
|
|
46
47
|
displayview: Klicken Sie auf diese Schaltfläche, um das Anzeigefenster zu öffnen. Dann ziehe es auf den Projektor.
|
|
@@ -60,7 +61,13 @@ de:
|
|
|
60
61
|
responses: Als Fragen beantwortet werden, erscheinen sie als Balkendiagramm mit der Anzahl der Antworten auf jede Frage auf der rechten Seite.
|
|
61
62
|
display: Drücken Sie diese Taste, um einen Schnappschuss der Live-Antworten auf Folie zu präsentieren.
|
|
62
63
|
save: Drücken Sie diese Taste, um Ihre Antworten zu speichern. Die Präsentation wird bei der Beantwortung pausieren.
|
|
63
|
-
menu:
|
|
64
|
+
menu:
|
|
65
|
+
start: Klicken Sie hier, um das Menü zu öffnen.
|
|
66
|
+
navigation: Schnell zu einer Folie navigieren.
|
|
67
|
+
download: Download Präsentationsunterstützungsdateien.
|
|
68
|
+
pace: Geben Sie Tempo Feedback.
|
|
69
|
+
questions: Fragen Sie die Redner Fragen.
|
|
70
|
+
feedback: Vorschläge zur Verbesserung des Inhalts geben.
|
|
64
71
|
|
|
65
72
|
downloads:
|
|
66
73
|
title: Datei Downloads
|
data/locales/en.yml
CHANGED
|
@@ -41,6 +41,7 @@ en:
|
|
|
41
41
|
resume: "Resuming in:"
|
|
42
42
|
|
|
43
43
|
tour:
|
|
44
|
+
show: See the Tour
|
|
44
45
|
reset: Reset Hints
|
|
45
46
|
welcome: <h3>Welcome to Showoff</h3>Let me show you around. After you finish this tour, it won't show again.
|
|
46
47
|
displayview: Start by clicking this button to open the Display Window; then drag it onto the projector.
|
|
@@ -60,7 +61,14 @@ en:
|
|
|
60
61
|
responses: As questions are answered, they'll show up as a bar chart with the number of answers to each question on the right.
|
|
61
62
|
display: Press this button to present a snapshot of the live responses on slide.
|
|
62
63
|
save: Press this button to save your responses. The presentation will pause while answering.
|
|
63
|
-
menu:
|
|
64
|
+
menu:
|
|
65
|
+
start: Click here to open the menu.
|
|
66
|
+
navigation: Quickly navigate to any slide.
|
|
67
|
+
download: Download presentation support files.
|
|
68
|
+
pace: Provide pace feedback.
|
|
69
|
+
questions: Ask live questions of the presenter.
|
|
70
|
+
feedback: Provide suggestions for improving the content.
|
|
71
|
+
|
|
64
72
|
|
|
65
73
|
downloads:
|
|
66
74
|
title: File Downloads
|
data/locales/es.yml
CHANGED
|
@@ -41,6 +41,7 @@ es:
|
|
|
41
41
|
resume: "Continuando en:"
|
|
42
42
|
|
|
43
43
|
tour:
|
|
44
|
+
show: Ver la gira
|
|
44
45
|
reset: Restablecer Sugerencias
|
|
45
46
|
welcome: <h3>Bienvenido a Showoff</h3>Permítanme mostrarles todo. Después de terminar este tour, no se mostrará de nuevo.
|
|
46
47
|
displayview: Comience haciendo clic en este botón para abrir la ventana de visualización; Luego arrástrelo al proyector
|
|
@@ -60,7 +61,14 @@ es:
|
|
|
60
61
|
responses: A medida que las preguntas son contestadas, aparecerán como un gráfico de barras con el número de respuestas a cada pregunta de la derecha.
|
|
61
62
|
display: Presione este botón para presentar una instantánea de las respuestas en vivo en la diapositiva.
|
|
62
63
|
save: Pulse este botón para guardar sus respuestas. La presentación se detendrá mientras responde.
|
|
63
|
-
menu:
|
|
64
|
+
menu:
|
|
65
|
+
start: Haga clic aquí para abrir el menú.
|
|
66
|
+
navigation: Navegue rápidamente a cualquier diapositiva.
|
|
67
|
+
download: Descargue los archivos de soporte de la presentación.
|
|
68
|
+
pace: Proporcione la regeneración de la velocidad.
|
|
69
|
+
questions: Haga preguntas en vivo del presentador.
|
|
70
|
+
feedback: Proporcione sugerencias para mejorar el contenido.
|
|
71
|
+
|
|
64
72
|
|
|
65
73
|
downloads:
|
|
66
74
|
title: Descarga de Archivos
|
data/locales/fr.yml
CHANGED
|
@@ -41,6 +41,7 @@ fr:
|
|
|
41
41
|
resume: "Reprise dans:"
|
|
42
42
|
|
|
43
43
|
tour:
|
|
44
|
+
show: Voir le Tour
|
|
44
45
|
reset: Restaurer des Conseils
|
|
45
46
|
welcome: <h3>Bienvenue dans Showoff</h3>Laissez-moi vous montrer. Après avoir terminé cette tournée, cela ne s'affichera plus encore.
|
|
46
47
|
displayview: Commencez par cliquer sur ce bouton pour ouvrir la fenêtre d'affichage; Puis faites-le glisser sur le projecteur.
|
|
@@ -60,7 +61,13 @@ fr:
|
|
|
60
61
|
responses: À mesure que les questions sont répondues, elles apparaîtront comme un graphique à barres avec le nombre de réponses à chaque question à droite.
|
|
61
62
|
display: Appuyez sur ce bouton pour présenter un instantané des réponses en direct sur la diapositive.
|
|
62
63
|
save: Appuyez sur ce bouton pour enregistrer vos réponses. La présentation s'arrêtera pendant que vous travaillez.
|
|
63
|
-
menu:
|
|
64
|
+
menu:
|
|
65
|
+
start: Cliquez sur le menu pour commencer.
|
|
66
|
+
navigation: Naviguez rapidement vers n'importe quelle diapositive.
|
|
67
|
+
download: Téléchargez les fichiers de support de présentation.
|
|
68
|
+
pace: Fournir des commentaires sur la rapidité de livraison.
|
|
69
|
+
questions: Posez des questions en direct au présentateur.
|
|
70
|
+
feedback: Fournissez des suggestions pour améliorer le contenu.
|
|
64
71
|
|
|
65
72
|
downloads:
|
|
66
73
|
title: Téléchargements de fichiers
|
data/locales/ja.yml
CHANGED
|
@@ -42,6 +42,7 @@ ja:
|
|
|
42
42
|
resume: "再開:"
|
|
43
43
|
|
|
44
44
|
tour:
|
|
45
|
+
show: ツアーを見る
|
|
45
46
|
reset: ヒントをリセットする
|
|
46
47
|
welcome: <h3>Showoffへようこそ</h3>私は周りを見せてあげましょう。このツアーを終えると、再び表示されません。
|
|
47
48
|
displayview: このボタンをクリックして表示ビューを開きます。 プロジェクタにドラッグします。
|
|
@@ -61,7 +62,13 @@ ja:
|
|
|
61
62
|
responses: 回答は棒グラフで表示され、右の各質問に対する回答の数が表示されます。
|
|
62
63
|
display: このボタンを押すと、ライブ応答のスナップショットがスライドに表示されます。
|
|
63
64
|
save: あなたの応答を保存するには、このボタンを押してください。プレゼンテーションは応答中に一時停止します。
|
|
64
|
-
menu:
|
|
65
|
+
menu:
|
|
66
|
+
start: メニューを開くにはここをクリックしてください。
|
|
67
|
+
navigation: あなたは望むスライドに素早く移動できます。
|
|
68
|
+
download: プレゼンテーションサポートファイルをダウンロードします。
|
|
69
|
+
pace: ペースフィードバックを提供する。
|
|
70
|
+
questions: 発表者に質問をすることができます。
|
|
71
|
+
feedback: コンテンツを改善するための提案を提供する。
|
|
65
72
|
|
|
66
73
|
downloads:
|
|
67
74
|
title: ファイルダウンロード
|
data/locales/nl.yml
CHANGED
|
@@ -41,6 +41,7 @@ nl:
|
|
|
41
41
|
resume: "Start over:"
|
|
42
42
|
|
|
43
43
|
tour:
|
|
44
|
+
show: Zie de tour
|
|
44
45
|
reset: Reset Suggesties
|
|
45
46
|
welcome: <h3>Welkom bij Showoff</h3>Laat me je laten zien. Nadat u deze tour hebt afgerond, wordt het niet weer getoond.
|
|
46
47
|
displayview: Begin door op deze knop te klikken om het presentatiescherm te openen; Sleep het dan op de projector.
|
|
@@ -60,7 +61,13 @@ nl:
|
|
|
60
61
|
responses: Naarmate de vragen worden beantwoord, worden ze weergegeven als een staafdiagram met het aantal antwoorden op elke vraag aan de rechterkant.
|
|
61
62
|
display: Druk op deze knop om een momentopname van de live reacties op dia te presenteren.
|
|
62
63
|
save: Druk op deze knop om uw antwoorden op te slaan. De presentatie zal onderbreken tijdens het beantwoorden.
|
|
63
|
-
menu:
|
|
64
|
+
menu:
|
|
65
|
+
start: Klik hier om het menu te openen.
|
|
66
|
+
navigation: Ga naar een dia.
|
|
67
|
+
download: Download presentatie ondersteuningsbestanden.
|
|
68
|
+
pace: Geef tempo feedback.
|
|
69
|
+
questions: Vraag live vragen van de presentator.
|
|
70
|
+
feedback: Geef suggesties voor het verbeteren van de inhoud.
|
|
64
71
|
|
|
65
72
|
downloads:
|
|
66
73
|
title: Downloads
|
data/locales/pt.yml
CHANGED
|
@@ -41,6 +41,7 @@ pt:
|
|
|
41
41
|
resume: "Resumindo em:"
|
|
42
42
|
|
|
43
43
|
tour:
|
|
44
|
+
show: Veja o Tour
|
|
44
45
|
reset: Dicas de Reinicialização
|
|
45
46
|
welcome: <h3>Bem-vindo ao Showoff</h3>Deixe-me mostrar-lhe. Depois de terminar esta turnê, não será exibida novamente.
|
|
46
47
|
displayview: Comece clicando neste botão para abrir a visualização de exibição; depois arraste-o para o projetor.
|
|
@@ -60,7 +61,13 @@ pt:
|
|
|
60
61
|
responses: À medida que as perguntas são respondidas, elas aparecerão como um gráfico de barras com o número de respostas a cada pergunta à direita.
|
|
61
62
|
display: Pressione este botão para apresentar um instantâneo das respostas ao vivo no slide.
|
|
62
63
|
save: Pressione este botão para salvar suas respostas. A apresentação irá pausar enquanto responde.
|
|
63
|
-
menu:
|
|
64
|
+
menu:
|
|
65
|
+
start: Click here to open the menu.
|
|
66
|
+
navigation: Navegue rapidamente para qualquer slide.
|
|
67
|
+
download: Baixe arquivos de suporte de apresentação.
|
|
68
|
+
pace: Fornecer feedback de velocidade.
|
|
69
|
+
questions: Faça perguntas ao vivo do apresentador.
|
|
70
|
+
feedback: Fornecer sugestões para melhorar o conteúdo.
|
|
64
71
|
|
|
65
72
|
downloads:
|
|
66
73
|
title: Arquivos de Downloads
|
data/public/css/showoff.css
CHANGED
|
@@ -859,12 +859,16 @@ form .element {
|
|
|
859
859
|
margin-bottom: .5em;
|
|
860
860
|
}
|
|
861
861
|
|
|
862
|
-
.ui-dialog .
|
|
862
|
+
.ui-dialog .right {
|
|
863
|
+
float: right;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
.ui-dialog .auxillary {
|
|
863
867
|
background: none;
|
|
864
868
|
border: none;
|
|
865
|
-
|
|
869
|
+
font-size: small;
|
|
866
870
|
}
|
|
867
|
-
.ui-dialog .auxillary
|
|
871
|
+
.ui-dialog .auxillary:active {
|
|
868
872
|
color: #ccc;
|
|
869
873
|
}
|
|
870
874
|
|
data/public/js/showoff.js
CHANGED
|
@@ -29,6 +29,7 @@ var mode = { track: true, follow: true };
|
|
|
29
29
|
|
|
30
30
|
// global variable to register tours with
|
|
31
31
|
var tours = {};
|
|
32
|
+
var menuTourRunning = false;
|
|
32
33
|
|
|
33
34
|
// a dummy websocket object to make standalone presentations easier.
|
|
34
35
|
var ws = {}
|
|
@@ -110,16 +111,31 @@ function setupPreso(load_slides, prefix) {
|
|
|
110
111
|
{
|
|
111
112
|
text: I18n.t('help.close'),
|
|
112
113
|
click: function() { $(this).dialog( "close" ); }
|
|
113
|
-
}
|
|
114
|
-
|
|
114
|
+
}
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
if($("body").hasClass("presenter")) {
|
|
118
|
+
buttons.push({
|
|
119
|
+
text: I18n.t('tour.show'),
|
|
120
|
+
"class": 'right',
|
|
121
|
+
click: function() {
|
|
122
|
+
$(this).dialog( "close" );
|
|
123
|
+
showTour('showoff:presenter', false);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
buttons.push({
|
|
115
129
|
text: I18n.t('tour.reset'),
|
|
116
|
-
"class": 'auxillary
|
|
130
|
+
"class": 'auxillary right',
|
|
117
131
|
click: function() {
|
|
118
132
|
document.cookie="tours=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
|
|
119
133
|
document.cookie="tourVersion=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
|
|
134
|
+
delete document.cookieHash['tours'];
|
|
135
|
+
delete document.cookieHash['tourVersion'];
|
|
120
136
|
}
|
|
121
|
-
}
|
|
122
|
-
|
|
137
|
+
});
|
|
138
|
+
}
|
|
123
139
|
|
|
124
140
|
$("#help-modal").dialog({
|
|
125
141
|
autoOpen: false,
|
|
@@ -355,10 +371,25 @@ function zoom(presenter) {
|
|
|
355
371
|
}
|
|
356
372
|
}
|
|
357
373
|
|
|
374
|
+
function openMenu() {
|
|
375
|
+
toggleKeybinding();
|
|
376
|
+
$('#feedbackSidebar').show();
|
|
377
|
+
// if the menu tour is open, make it harder to lose the menu
|
|
378
|
+
if(! menuTourRunning ) {
|
|
379
|
+
$('#sidebarExit').show();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
function closeMenu(force) {
|
|
384
|
+
if(! menuTourRunning || force ) {
|
|
385
|
+
$('#feedbackSidebar, #sidebarExit').hide();
|
|
386
|
+
toggleKeybinding('on');
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
358
390
|
function setupSideMenu() {
|
|
359
391
|
$("#hamburger").click(function() {
|
|
360
|
-
|
|
361
|
-
toggleKeybinding();
|
|
392
|
+
openMenu();
|
|
362
393
|
});
|
|
363
394
|
|
|
364
395
|
$("#navToggle").click(function() {
|
|
@@ -427,11 +458,6 @@ function setupSideMenu() {
|
|
|
427
458
|
closeMenu();
|
|
428
459
|
});
|
|
429
460
|
|
|
430
|
-
function closeMenu() {
|
|
431
|
-
$('#feedbackSidebar, #sidebarExit').hide();
|
|
432
|
-
toggleKeybinding('on');
|
|
433
|
-
}
|
|
434
|
-
|
|
435
461
|
function feedback_response(elem, response) {
|
|
436
462
|
var originalText = $(elem).text();
|
|
437
463
|
$(elem).text(response);
|
|
@@ -589,17 +615,20 @@ function clearCookies() {
|
|
|
589
615
|
document.cookie = "layout=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
|
|
590
616
|
document.cookie = "notes=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
|
|
591
617
|
document.cookie = "tourVersion=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
|
|
618
|
+
document.cookieHash = {};
|
|
592
619
|
}
|
|
593
620
|
|
|
594
621
|
// called when slides with special content are displayed. (like the Activity complete toggle)
|
|
595
622
|
// Show a "welcome intro" the first time it's seen.
|
|
596
|
-
function showTour(name) {
|
|
623
|
+
function showTour(name, record) {
|
|
624
|
+
record = (typeof record == 'undefined' ? true : record) // default true
|
|
625
|
+
|
|
597
626
|
// we don't need to show tours if we're a display view
|
|
598
627
|
if('presenterView' in window) {
|
|
599
628
|
return false;
|
|
600
629
|
}
|
|
601
630
|
|
|
602
|
-
//
|
|
631
|
+
// don't blow up if someone calls a missing tour
|
|
603
632
|
if(!(name in tours)) {
|
|
604
633
|
console.log('No such tour: '+name);
|
|
605
634
|
return false;
|
|
@@ -607,6 +636,7 @@ function showTour(name) {
|
|
|
607
636
|
|
|
608
637
|
var clientTours = document.cookieHash['tours'] || [];
|
|
609
638
|
|
|
639
|
+
// if we haven't seen this one before...
|
|
610
640
|
if(clientTours.indexOf(name) == -1) {
|
|
611
641
|
toggleKeybinding('off');
|
|
612
642
|
|
|
@@ -625,15 +655,64 @@ function showTour(name) {
|
|
|
625
655
|
|
|
626
656
|
intro.onexit(function() {
|
|
627
657
|
toggleKeybinding('on');
|
|
658
|
+
|
|
659
|
+
if(menuTourRunning) {
|
|
660
|
+
menuTourRunning = false;
|
|
661
|
+
$("#hamburger").off('click', null, introNext);
|
|
662
|
+
$("#closeMenu").off('click', null, introClose);
|
|
663
|
+
closeMenu();
|
|
664
|
+
}
|
|
628
665
|
});
|
|
629
666
|
|
|
630
667
|
// record tour completion so we don't continue to annoy people
|
|
631
668
|
intro.oncomplete(function() {
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
669
|
+
if(record) {
|
|
670
|
+
clientTours.push(name);
|
|
671
|
+
document.cookieHash['tours'] = clientTours;
|
|
672
|
+
document.cookie = "tours="+JSON.stringify(clientTours);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
// this keeps track of the version of the presenter tour we've seen
|
|
676
|
+
if(name == 'showoff:presenter:auto') {
|
|
677
|
+
document.cookie = "tourVersion="+tourVersion;
|
|
678
|
+
document.cookieHash['tourVersion'] = tourVersion;
|
|
679
|
+
|
|
680
|
+
// we don't need this anymore; let's save a byte or three
|
|
681
|
+
delete tours['showoff:presenter:auto'];
|
|
682
|
+
}
|
|
683
|
+
|
|
635
684
|
});
|
|
636
685
|
|
|
686
|
+
// if we're showing the menu, we need to do some extra bookeeping to make it usable
|
|
687
|
+
if(name == 'showoff:menu') {
|
|
688
|
+
menuTourRunning = true;
|
|
689
|
+
|
|
690
|
+
// A couple helper functions to add to the menu bindings.
|
|
691
|
+
// We have to do it here because 'intro' is in scope
|
|
692
|
+
var introNext = function() { intro.nextStep() };
|
|
693
|
+
var introClose = function() { intro.exit() };
|
|
694
|
+
|
|
695
|
+
$("#hamburger").on('click', null, introNext);
|
|
696
|
+
$("#closeMenu").on('click', null, introClose);
|
|
697
|
+
|
|
698
|
+
intro.onchange(function(targetElement) {
|
|
699
|
+
switch(intro._currentStep) {
|
|
700
|
+
case 0:
|
|
701
|
+
closeMenu(true);
|
|
702
|
+
break;
|
|
703
|
+
|
|
704
|
+
case 1:
|
|
705
|
+
openMenu();
|
|
706
|
+
break;
|
|
707
|
+
}
|
|
708
|
+
});
|
|
709
|
+
|
|
710
|
+
// keep the menu visible. This is a hack, but I don't see a better way.
|
|
711
|
+
intro.onafterchange(function(targetElement) {
|
|
712
|
+
$("#feedbackSidebar").removeClass('introjs-fixParent');
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
|
|
637
716
|
intro.start();
|
|
638
717
|
}
|
|
639
718
|
}
|
|
@@ -843,15 +922,17 @@ function showSlide(back_step, updatepv) {
|
|
|
843
922
|
activityIncomplete = false;
|
|
844
923
|
}
|
|
845
924
|
|
|
846
|
-
if(
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
925
|
+
if(autoTour) {
|
|
926
|
+
if(currentSlide.hasClass('activity')) {
|
|
927
|
+
showTour('showoff:activity');
|
|
928
|
+
}
|
|
929
|
+
if(getSlideOption('form')) {
|
|
930
|
+
showTour('showoff:form');
|
|
931
|
+
}
|
|
932
|
+
var tour = getSlideOption('tour');
|
|
933
|
+
if(tour) {
|
|
934
|
+
showTour(tour);
|
|
935
|
+
}
|
|
855
936
|
}
|
|
856
937
|
|
|
857
938
|
// show the sync button if we're not on the same slide as the presenter
|
data/views/index.erb
CHANGED
|
@@ -5,27 +5,53 @@
|
|
|
5
5
|
<%= erb :header %>
|
|
6
6
|
|
|
7
7
|
<script type="text/javascript">
|
|
8
|
-
tours
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
8
|
+
// We want the audience members to see automatic tours. We can assume that they won't be
|
|
9
|
+
// using many server domains like the presenter might.
|
|
10
|
+
var autoTour = true;
|
|
11
|
+
|
|
12
|
+
$( document ).ready(function() {
|
|
13
|
+
tours['showoff:activity'] = [
|
|
14
|
+
{
|
|
15
|
+
element: ".currentSlide .activityToggle",
|
|
16
|
+
intro: I18n.t('tour.activity.complete')
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
tours['showoff:form'] = [
|
|
21
|
+
{
|
|
22
|
+
element: ".currentSlide input.save",
|
|
23
|
+
intro: I18n.t('tour.form.save')
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
tours['showoff:menu'] = [
|
|
28
|
+
{
|
|
29
|
+
element: "#hamburger",
|
|
30
|
+
intro: I18n.t('tour.menu.start')
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
element: "#navToggle",
|
|
34
|
+
intro: I18n.t('tour.menu.navigation')
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
element: "#fileDownloads",
|
|
38
|
+
intro: I18n.t('tour.menu.download')
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
element: "#paceFaster",
|
|
42
|
+
intro: I18n.t('tour.menu.pace')
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
element: "#questionToggle",
|
|
46
|
+
intro: I18n.t('tour.menu.questions')
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
element: "#feedbackToggle",
|
|
50
|
+
intro: I18n.t('tour.menu.feedback')
|
|
51
|
+
}
|
|
52
|
+
].filter(function(item) { return (document.querySelector(item['element'])) });
|
|
53
|
+
// display tips for only the enabled features
|
|
54
|
+
});
|
|
29
55
|
</script>
|
|
30
56
|
</head>
|
|
31
57
|
|
|
@@ -69,7 +95,7 @@
|
|
|
69
95
|
|
|
70
96
|
<div id="feedbackToggle" class="buttonWrapper interactive"><i class="fa fa-envelope"></i> <%= I18n.t('menu.feedback.label') %></div>
|
|
71
97
|
<div id="feedbackSubmenu" class="submenu">
|
|
72
|
-
<p><%= I18n.t('menu.feedback.
|
|
98
|
+
<p><%= I18n.t('menu.feedback.description') %></p>
|
|
73
99
|
<small>
|
|
74
100
|
<%= I18n.t('menu.feedback.worst') %>
|
|
75
101
|
<input type="radio" name="rating" value="1"></input>
|
data/views/presenter.erb
CHANGED
|
@@ -12,112 +12,108 @@
|
|
|
12
12
|
<script type="text/javascript">
|
|
13
13
|
editUrl = "<%= @edit %>";
|
|
14
14
|
issueUrl = "<%= @issues %>";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
// give it a chance to finish loading the presentation
|
|
118
|
-
$("body").bind("showoff:loaded", function (event) {
|
|
119
|
-
intro.start();
|
|
120
|
-
});
|
|
15
|
+
autoTour = false;
|
|
16
|
+
|
|
17
|
+
// increment this each time we add features with new tour stops.
|
|
18
|
+
tourVersion = 1;
|
|
19
|
+
|
|
20
|
+
$(function() {
|
|
21
|
+
tours['showoff:activity'] = [
|
|
22
|
+
{
|
|
23
|
+
element: ".currentSlide .count",
|
|
24
|
+
intro: I18n.t('tour.activity.count')
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
tours['showoff:form'] = [
|
|
29
|
+
{
|
|
30
|
+
element: "#notes",
|
|
31
|
+
intro: I18n.t('tour.form.responses'),
|
|
32
|
+
scrollToElement: false
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
element: ".currentSlide input.display",
|
|
36
|
+
intro: I18n.t('tour.form.display')
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
tours['showoff:presenter'] = [
|
|
41
|
+
{
|
|
42
|
+
intro: I18n.t('tour.welcome'),
|
|
43
|
+
version: 1
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
element: "#slaveWindow",
|
|
47
|
+
intro: I18n.t('tour.displayview'),
|
|
48
|
+
version: 1
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
element: "#annotationLabel",
|
|
52
|
+
intro: I18n.t('tour.annotations'),
|
|
53
|
+
version: 1
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
element: "#timerSection",
|
|
57
|
+
intro: I18n.t('tour.timer'),
|
|
58
|
+
version: 1
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
element: "#feedbackPace",
|
|
62
|
+
intro: I18n.t('tour.pace'),
|
|
63
|
+
version: 1
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
element: "#questions",
|
|
67
|
+
intro: I18n.t('tour.questions'),
|
|
68
|
+
version: 1
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
element: "#notes-controls",
|
|
72
|
+
intro: I18n.t('tour.notes'),
|
|
73
|
+
highlightClass: "tourDark",
|
|
74
|
+
version: 1
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
element: "#slideSource",
|
|
78
|
+
intro: I18n.t('tour.slidesource'),
|
|
79
|
+
version: 1
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
element: "#settings",
|
|
83
|
+
intro: I18n.t('tour.settings'),
|
|
84
|
+
version: 1
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
element: "#edit",
|
|
88
|
+
intro: I18n.t('tour.edit'),
|
|
89
|
+
version: 1
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
element: "#report",
|
|
93
|
+
intro: I18n.t('tour.report'),
|
|
94
|
+
version: 1
|
|
95
|
+
}
|
|
96
|
+
].filter(function(item) {
|
|
97
|
+
// filter out tips for features that have been turned off
|
|
98
|
+
return ((item['element'] == undefined) || document.querySelector(item['element']));
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Only autoshow when served from localhost, since we don't know if we have a consistent domain for our cookie otherwise.
|
|
102
|
+
if ( location.hostname == 'localhost' || location.hostname == '127.0.0.1' ) {
|
|
103
|
+
|
|
104
|
+
// enables the flag that shows feature tours
|
|
105
|
+
autoTour = true;
|
|
106
|
+
|
|
107
|
+
var clientTour = document.cookieHash['tourVersion'] || 0;
|
|
108
|
+
if(clientTour < tourVersion) {
|
|
109
|
+
// now make a temporary duplicate of only recent items
|
|
110
|
+
tours['showoff:presenter:auto'] = tours['showoff:presenter'].filter(function(item) {
|
|
111
|
+
return (item['version'] > clientTour);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// we don't need to let this record, because we've already tested clientTour
|
|
115
|
+
showTour('showoff:presenter:auto', false);
|
|
116
|
+
}
|
|
121
117
|
|
|
122
118
|
}
|
|
123
119
|
});
|
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.19.
|
|
4
|
+
version: 0.19.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: 2017-08-
|
|
12
|
+
date: 2017-08-17 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: sinatra
|