showoff 0.19.0 → 0.19.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/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
|