diff options
-rw-r--r-- | backend.php | 9 | ||||
-rw-r--r-- | js/read.js | 24 | ||||
-rw-r--r-- | js/reader.js | 2 | ||||
-rw-r--r-- | read.html | 1 |
4 files changed, 35 insertions, 1 deletions
diff --git a/backend.php b/backend.php index 4f4b402..4ed612b 100644 --- a/backend.php +++ b/backend.php @@ -231,6 +231,15 @@ break; + case "wikisearch": + $query = urlencode(strip_tags($_REQUEST['query'])); + $url = "https://en.wiktionary.org/w/api.php?titles=${query}&action=query&prop=extracts&format=json&exlimit=1"; + + if ($resp = file_get_contents($url)) { + print $resp; + } + + break; case "define": if (defined('DICT_ENABLED') && DICT_ENABLED) { @@ -344,6 +344,30 @@ function init_reader() { window.open("https://duckduckgo.com/?q=" + $(".dict_query").val()); }); + $(".wiki_search_btn").on("click", function() { + $(".dict_result").html("Loading, please wait..."); + + $.post("backend.php", {op: "wikisearch", query: $(".dict_query").val()}) + .then((resp) => { + try { + let tmp = ""; + + $.each(resp.query.pages, (i,p) => { + tmp += p.extract; + }); + + $(".dict_result").html(tmp && tmp != "undefined" ? tmp : "No definition found for " + $(".dict_query").val() + "."); + } catch (e) { + console.error(e); + $(".dict_result").text("Error while processing data: " + e); + } + }) + .fail((e) => { + console.error(e); + $(".dict_result").text("Error while retrieving data."); + }) + }); + function toc_loc_msg(href) { try { const cfiBase = book.spine.get(href).cfiBase; diff --git a/js/reader.js b/js/reader.js index cfb16a8..537835a 100644 --- a/js/reader.js +++ b/js/reader.js @@ -18,7 +18,7 @@ $(document).ready(function() { const sel = getSelection().toString().trim(); - if (!sel.match(/^\w+$/)) { + if (sel.match(/^$/)) { parent.toggle_fullscreen(); } }); @@ -131,6 +131,7 @@ <div class="dict_result"> </div> </div> <div class="modal-footer"> + <button type="button" class="wiki_search_btn btn-default btn">Wiktionary</button> <button type="button" class="dict_search_btn btn-default btn">Web search</button> <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button> </div> |