diff options
| author | Alex Yatskov <alex@foosoft.net> | 2016-07-15 23:29:36 -0700 | 
|---|---|---|
| committer | Alex Yatskov <alex@foosoft.net> | 2016-07-15 23:29:36 -0700 | 
| commit | f2bd0ec7bb7cd8abf351868929261026429c383a (patch) | |
| tree | c5d9635a77d4c18042e0e8d8499732ba3bf4c6b6 | |
| parent | 361dd47f0abab271f8ae3bf4ce2cdcc3b0b91c99 (diff) | |
Add option to enable and disable audio playback
| -rw-r--r-- | ext/bg/js/options-form.js | 12 | ||||
| -rw-r--r-- | ext/bg/js/options.js | 25 | ||||
| -rw-r--r-- | ext/bg/js/templates.js | 57 | ||||
| -rw-r--r-- | ext/bg/options.html | 8 | ||||
| -rw-r--r-- | ext/manifest.json | 2 | ||||
| -rw-r--r-- | tmpl/term.html | 2 | 
6 files changed, 62 insertions, 44 deletions
| diff --git a/ext/bg/js/options-form.js b/ext/bg/js/options-form.js index 5a5e8834..712b7243 100644 --- a/ext/bg/js/options-form.js +++ b/ext/bg/js/options-form.js @@ -40,11 +40,12 @@ function formToOptions(section, callback) {          switch (section) {              case 'general': -                optsNew.scanLength        = parseInt($('#scan-length').val()); -                optsNew.activateOnStartup = $('#activate-on-startup').prop('checked'); -                optsNew.loadEnamDict      = $('#load-enamdict').prop('checked'); -                optsNew.selectMatchedText = $('#select-matched-text').prop('checked'); -                optsNew.enableAnkiConnect = $('#enable-anki-connect').prop('checked'); +                optsNew.scanLength          = parseInt($('#scan-length').val()); +                optsNew.activateOnStartup   = $('#activate-on-startup').prop('checked'); +                optsNew.loadEnamDict        = $('#load-enamdict').prop('checked'); +                optsNew.selectMatchedText   = $('#select-matched-text').prop('checked'); +                optsNew.enableAudioPlayback = $('#enable-audio-playback').prop('checked'); +                optsNew.enableAnkiConnect   = $('#enable-anki-connect').prop('checked');                  break;              case 'anki':                  optsNew.ankiCardTags    = $('#anki-card-tags').val().split(/[,; ]+/); @@ -169,6 +170,7 @@ $(document).ready(() => {          $('#activate-on-startup').prop('checked', opts.activateOnStartup);          $('#load-enamdict').prop('checked', opts.loadEnamDict);          $('#select-matched-text').prop('checked', opts.selectMatchedText); +        $('#enable-audio-playback').prop('checked', opts.enableAudioPlayback);          $('#enable-anki-connect').prop('checked', opts.enableAnkiConnect);          $('#anki-card-tags').val(opts.ankiCardTags.join(' ')); diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js index eefba95e..18707e43 100644 --- a/ext/bg/js/options.js +++ b/ext/bg/js/options.js @@ -19,18 +19,19 @@  function sanitizeOptions(options) {      const defaults = { -        scanLength:        20, -        activateOnStartup: false, -        selectMatchedText: true, -        loadEnamDict:      false, -        enableAnkiConnect: false, -        ankiCardTags:      ['yomichan'], -        ankiVocabDeck:     '', -        ankiVocabModel:    '', -        ankiVocabFields:   {}, -        ankiKanjiDeck:     '', -        ankiKanjiModel:    '', -        ankiKanjiFields:   {} +        scanLength:          20, +        activateOnStartup:   false, +        selectMatchedText:   true, +        loadEnamDict:        false, +        enableAudioPlayback: true, +        enableAnkiConnect:   false, +        ankiCardTags:        ['yomichan'], +        ankiVocabDeck:       '', +        ankiVocabModel:      '', +        ankiVocabFields:     {}, +        ankiKanjiDeck:       '', +        ankiKanjiModel:      '', +        ankiKanjiFields:     {}      };      for (let key in defaults) { diff --git a/ext/bg/js/templates.js b/ext/bg/js/templates.js index b09c49dd..11529eff 100644 --- a/ext/bg/js/templates.js +++ b/ext/bg/js/templates.js @@ -93,18 +93,23 @@ templates['kanji-list.html'] = template({"1":function(container,depth0,helpers,p      + ((stack1 = container.invokePartial(partials["footer.html"],depth0,{"name":"footer.html","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "");  },"usePartial":true,"useData":true,"useDepths":true});  templates['term.html'] = template({"1":function(container,depth0,helpers,partials,data,blockParams,depths) { -    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : {}; +    var stack1, alias1=depth0 != null ? depth0 : {};    return "    <div class=\"action-bar\" data-sequence=\"" -    + alias2(alias1((depths[1] != null ? depths[1].sequence : depths[1]), depth0)) -    + "\">\n        <a href=\"#\" title=\"Pronounce\" class=\"action-pronounce\" data-index=\"" -    + alias2(((helper = (helper = helpers.index || (data && data.index)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(alias3,{"name":"index","hash":{},"data":data}) : helper))) -    + "\"><img src=\"" -    + alias2(alias1((depths[1] != null ? depths[1].root : depths[1]), depth0)) -    + "/img/pronounce.png\"></a>\n" -    + ((stack1 = helpers["if"].call(alias3,(depth0 != null ? depth0.enableAnkiConnect : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + container.escapeExpression(container.lambda((depths[1] != null ? depths[1].sequence : depths[1]), depth0)) +    + "\">\n" +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.enableAudioPlayback : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.enableAnkiConnect : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "    </div>\n";  },"2":function(container,depth0,helpers,partials,data,blockParams,depths) { +    var helper, alias1=container.escapeExpression; + +  return "        <a href=\"#\" title=\"Pronounce\" class=\"action-pronounce\" data-index=\"" +    + alias1(((helper = (helper = helpers.index || (data && data.index)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"index","hash":{},"data":data}) : helper))) +    + "\"><img src=\"" +    + alias1(container.lambda((depths[1] != null ? depths[1].root : depths[1]), depth0)) +    + "/img/pronounce.png\"></a>\n"; +},"4":function(container,depth0,helpers,partials,data,blockParams,depths) {      var helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda;    return "        <a href=\"#\" title=\"Add term as expression\" class=\"action-add-note disabled\" data-mode=\"vocab_kanji\" data-index=\"" @@ -116,49 +121,49 @@ templates['term.html'] = template({"1":function(container,depth0,helpers,partial      + "\"><img src=\""      + alias4(alias5((depths[1] != null ? depths[1].root : depths[1]), depth0))      + "/img/add_vocab_kana.png\"></a>\n"; -},"4":function(container,depth0,helpers,partials,data) { +},"6":function(container,depth0,helpers,partials,data) {      var stack1, helper, options, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", buffer =     "    <div class=\"term-expression\"><ruby>"; -  stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : alias2),(options={"name":"kanjiLinks","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data}),(typeof helper === alias3 ? helper.call(alias1,options) : helper)); +  stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : alias2),(options={"name":"kanjiLinks","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));    if (!helpers.kanjiLinks) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)}    if (stack1 != null) { buffer += stack1; }    return buffer + "<rt>"      + container.escapeExpression(((helper = (helper = helpers.reading || (depth0 != null ? depth0.reading : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"reading","hash":{},"data":data}) : helper)))      + "</rt></ruby></div>\n"; -},"5":function(container,depth0,helpers,partials,data) { +},"7":function(container,depth0,helpers,partials,data) {      var helper;    return container.escapeExpression(((helper = (helper = helpers.expression || (depth0 != null ? depth0.expression : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"expression","hash":{},"data":data}) : helper))); -},"7":function(container,depth0,helpers,partials,data) { +},"9":function(container,depth0,helpers,partials,data) {      var stack1, helper, options, buffer =     "    <div class=\"term-expression\">"; -  stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : helpers.helperMissing),(options={"name":"kanjiLinks","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data}),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},options) : helper)); +  stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : helpers.helperMissing),(options={"name":"kanjiLinks","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data}),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},options) : helper));    if (!helpers.kanjiLinks) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)}    if (stack1 != null) { buffer += stack1; }    return buffer + "</div>\n"; -},"9":function(container,depth0,helpers,partials,data) { +},"11":function(container,depth0,helpers,partials,data) {      var stack1;    return "    <div class=\"term-rules\">\n" -    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.rules : depth0),{"name":"each","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.rules : depth0),{"name":"each","hash":{},"fn":container.program(12, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "    </div>\n"; -},"10":function(container,depth0,helpers,partials,data) { +},"12":function(container,depth0,helpers,partials,data) {      var stack1;    return "        <span class=\"rule\">"      + container.escapeExpression(container.lambda(depth0, depth0))      + "</span> " -    + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : {},(data && data.last),{"name":"unless","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : {},(data && data.last),{"name":"unless","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "\n"; -},"11":function(container,depth0,helpers,partials,data) { -    return "«";  },"13":function(container,depth0,helpers,partials,data) { +    return "«"; +},"15":function(container,depth0,helpers,partials,data) {      var stack1;    return "    <div class=\"term-tags\">\n" -    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.tags : depth0),{"name":"each","hash":{},"fn":container.program(14, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.tags : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "    </div>\n"; -},"14":function(container,depth0,helpers,partials,data) { +},"16":function(container,depth0,helpers,partials,data) {      var helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;    return "        <span class=\"tag tag-" @@ -168,7 +173,7 @@ templates['term.html'] = template({"1":function(container,depth0,helpers,partial      + "\">"      + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data}) : helper)))      + "</span>\n"; -},"16":function(container,depth0,helpers,partials,data) { +},"18":function(container,depth0,helpers,partials,data) {      return "            <li><span>"      + container.escapeExpression(container.lambda(depth0, depth0))      + "</span></li>\n"; @@ -178,13 +183,13 @@ templates['term.html'] = template({"1":function(container,depth0,helpers,partial    return "<div class=\"term-definition\">\n"      + ((stack1 = helpers["with"].call(alias1,(depth0 != null ? depth0.options : depth0),{"name":"with","hash":{},"fn":container.program(1, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "\n" -    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.reading : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0, blockParams, depths),"inverse":container.program(7, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.reading : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0, blockParams, depths),"inverse":container.program(9, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "")      + "\n" -    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.rules : depth0),{"name":"if","hash":{},"fn":container.program(9, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.rules : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "\n" -    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tags : depth0),{"name":"if","hash":{},"fn":container.program(13, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tags : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "\n    <div class=\"term-glossary\">\n        <ol>\n" -    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(18, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "        </ol>\n    </div>\n</div>\n";  },"useData":true,"useDepths":true});  templates['term-list.html'] = template({"1":function(container,depth0,helpers,partials,data,blockParams,depths) { diff --git a/ext/bg/options.html b/ext/bg/options.html index 86739c58..1200b6c0 100644 --- a/ext/bg/options.html +++ b/ext/bg/options.html @@ -60,6 +60,14 @@                      <div class="form-group">                          <div class="col-sm-offset-2 col-sm-10">                              <div class="checkbox"> +                                <label class="control-label"><input type="checkbox" id="enable-audio-playback"> Enable audio playback</label> +                            </div> +                        </div> +                    </div> + +                    <div class="form-group"> +                        <div class="col-sm-offset-2 col-sm-10"> +                            <div class="checkbox">                                  <label class="control-label"><input type="checkbox" id="enable-anki-connect"> Enable <a href="https://foosoft.net/projects/anki-connect">AnkiConnect</a></label>                              </div>                          </div> diff --git a/ext/manifest.json b/ext/manifest.json index 1a1cce38..0c315fa4 100644 --- a/ext/manifest.json +++ b/ext/manifest.json @@ -1,7 +1,7 @@  {      "manifest_version": 2,      "name": "Yomichan", -    "version": "0.4", +    "version": "0.5",      "description": "Japanese dictionary with Anki integration",      "icons": {"16": "img/icon16.png", "48": "img/icon48.png", "128": "img/icon128.png"}, diff --git a/tmpl/term.html b/tmpl/term.html index ccc321e6..6296a2f3 100644 --- a/tmpl/term.html +++ b/tmpl/term.html @@ -1,7 +1,9 @@  <div class="term-definition">      {{#with options}}      <div class="action-bar" data-sequence="{{../sequence}}"> +        {{#if enableAudioPlayback}}          <a href="#" title="Pronounce" class="action-pronounce" data-index="{{@index}}"><img src="{{../root}}/img/pronounce.png"></a> +        {{/if}}          {{#if enableAnkiConnect}}          <a href="#" title="Add term as expression" class="action-add-note disabled" data-mode="vocab_kanji" data-index="{{@index}}"><img src="{{../root}}/img/add_vocab_kanji.png"></a>          <a href="#" title="Add term as reading" class="action-add-note disabled" data-mode="vocab_kana" data-index="{{@index}}"><img src="{{../root}}/img/add_vocab_kana.png"></a> |