mirror of https://github.com/gnosygnu/xowa
HTTP Server: Support popups [#264]
parent
2e5994788f
commit
38bdc95acf
@ -0,0 +1,614 @@
|
||||
<!--
|
||||
PURPOSE: standalone file to test basic popup functionality without running XOWA
|
||||
* Install XOWA to root; WNT: "C:\xowa"; LNX: "/xowa/"
|
||||
* Launch chrome with arguments "--disable-web-security --user-data-dir"
|
||||
* Navigate to: file:///C:/xowa/bin/any/xowa/html/res/src/xowa/popups/mocks/basic.html
|
||||
* Hover over "blog" which will read file from "pages/Blog.init.html"
|
||||
|
||||
NOTES:
|
||||
* To change base dir, do find-and-replace for href="/xowa/"
|
||||
* <base> tag not useful due to anchors: https://stackoverflow.com/questions/1889076/what-are-the-recommendations-for-html-base-tag
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<!-- CSS: wikipedia look-and-feel; needed for popups css -->
|
||||
<link type="text/css" href="/xowa/user/anonymous/wiki/home/html/xowa_common.css" rel="stylesheet" />
|
||||
<link type="text/css" href="/xowa/user/anonymous/wiki/home/html/xowa_wiki.css" rel="stylesheet" />
|
||||
<link type="text/css" href="/xowa/bin/any/xowa/html/res/src/xowa/popups/popups.css" rel="stylesheet" />
|
||||
|
||||
<!-- JS: xo.core -->
|
||||
<script>
|
||||
window.xowa_root_dir = 'must specifiy, else core.js will fail';
|
||||
</script>
|
||||
<script type="text/javascript" src="/xowa/bin/any/xowa/html/res/src/xowa/core/core.js"></script>
|
||||
<script>
|
||||
window.xowa.app.mode = 'mock';
|
||||
window.xowa.cfg.get = function(key) {
|
||||
switch (key) {
|
||||
case 'popups-win-show_delay': return 200;
|
||||
case 'popups-win-hide_delay': return 500;
|
||||
case 'popups-win-max_w': return 800;
|
||||
case 'popups-win-max_h': return 600;
|
||||
case 'popups-win-show_all_max_w': return 1200;
|
||||
case 'popups-win-bind_focus_blur': return true;
|
||||
case 'popups-win-bind_hover_area': return true;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- JS:util -->
|
||||
<script>
|
||||
function readFile(file, func) {
|
||||
var req = new XMLHttpRequest();
|
||||
req.open("GET", file);
|
||||
req.onreadystatechange = function() {
|
||||
if(req.readyState === 4 && (req.status === 200 || req.status == 0)) {
|
||||
func(req.responseText);
|
||||
}
|
||||
}
|
||||
req.send(null);
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- JS:xo.popups -->
|
||||
<script type="text/javascript" src="/xowa/bin/any/xowa/html/res/lib/jquery/jquery-1.11.3.min.js"></script>
|
||||
<script type="text/javascript" src="/xowa/bin/any/xowa/html/res/src/xowa/popups/xo.popup.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
xowa.popups.Mock_popups_get_html = function(mgr, showMode, popupItm, href)
|
||||
{
|
||||
readFile
|
||||
( href
|
||||
, function(s)
|
||||
{
|
||||
mgr.UpdatePopupHtml(popupItm.Id, showMode, s);
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body spellcheck="false" class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Main_Page skin-vector action-submit vector-animateLayout">
|
||||
<div class="noprint" id="mw-page-base"></div>
|
||||
<div class="noprint" id="mw-head-base"></div>
|
||||
<div class="mw-body" id="content">
|
||||
<div style="display:none; color:red; white-space:pre; display:block; unicode-bidi:embed;" class="xowa_err" id="xowa_err_div"></div><h1 class="firstHeading" id="firstHeading">Main Page</h1>
|
||||
<div class="mw-body-content" id="bodyContent">
|
||||
<div id="siteSub">From XOWA: the free, open-source, offline wiki application</div>
|
||||
<div class="visible" id="contentSub"></div>
|
||||
<div class="mw-jump" id="jump-to-nav">Jump to:<a href="#mw-navigation">navigation</a>, <a href="#p-search">search</a></div>
|
||||
<div lang="en" class="mw-content-ltr" dir="ltr" id="mw-content-text">
|
||||
<div class="toc" id="toc">
|
||||
<div class="toctitle" id="toctitle">
|
||||
<h2>
|
||||
Contents
|
||||
</h2>
|
||||
<span class="toctoggle"> [<a id="togglelink" class="internal" href="#">hide</a>] </span></div>
|
||||
<ul>
|
||||
<li class="toclevel-1 tocsection-1">
|
||||
<a href="#Disclaimer"><span class="tocnumber">1</span> <span class="toctext">Disclaimer</span></a>
|
||||
</li>
|
||||
<li class="toclevel-1 tocsection-2">
|
||||
<a href="#Release_notes"><span class="tocnumber">2</span> <span class="toctext">Release notes</span></a>
|
||||
</li>
|
||||
<li class="toclevel-1 tocsection-3">
|
||||
<a href="#New_users"><span class="tocnumber">3</span> <span class="toctext">New users</span></a>
|
||||
<ul>
|
||||
<li class="toclevel-2 tocsection-4">
|
||||
<a href="#Build_a_wiki_while_online"><span class="tocnumber">3.1</span> <span class="toctext">Build a wiki while online</span></a>
|
||||
</li>
|
||||
<li class="toclevel-2 tocsection-5">
|
||||
<a href="#Build_a_wiki_while_offline"><span class="tocnumber">3.2</span> <span class="toctext">Build a wiki while offline</span></a>
|
||||
</li>
|
||||
<li class="toclevel-2 tocsection-6">
|
||||
<a href="#Download_pre-built_wikis_within_XOWA"><span class="tocnumber">3.3</span> <span class="toctext">Download pre-built wikis within XOWA</span></a>
|
||||
</li>
|
||||
<li class="toclevel-2 tocsection-7">
|
||||
<a href="#Download_pre-built_wikis_within_a_browser"><span class="tocnumber">3.4</span> <span class="toctext">Download pre-built wikis within a browser</span></a>
|
||||
</li>
|
||||
<li class="toclevel-2 tocsection-8">
|
||||
<a href="#Creating_a_personal_wiki"><span class="tocnumber">3.5</span> <span class="toctext">Creating a personal wiki</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toclevel-1 tocsection-9">
|
||||
<a href="#Upgrade_users"><span class="tocnumber">4</span> <span class="toctext">Upgrade users</span></a>
|
||||
</li>
|
||||
<li class="toclevel-1 tocsection-10">
|
||||
<a href="#Tips"><span class="tocnumber">5</span> <span class="toctext">Tips</span></a>
|
||||
</li>
|
||||
<li class="toclevel-1 tocsection-11">
|
||||
<a href="#Notes"><span class="tocnumber">6</span> <span class="toctext">Notes</span></a>
|
||||
</li>
|
||||
<li class="toclevel-1 tocsection-12">
|
||||
<a href="#Links"><span class="tocnumber">7</span> <span class="toctext">Links</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<h2>
|
||||
<span id="Disclaimer" class="mw-headline">Disclaimer</span>
|
||||
</h2>
|
||||
<p>
|
||||
Please note that this program is beta software. Although it is my best hope that you find this program functional and useful, I make no assurances regarding stability or fitness of purpose. For more details, see <a class="xowa-visited" title="Help/License/Code" id="xolnki_2" href="/wiki/Help/License/Code">Help/License/Code</a>.
|
||||
</p>
|
||||
<h2>
|
||||
<span id="Release_notes" class="mw-headline">Release notes</span>
|
||||
</h2>
|
||||
<p>
|
||||
v4.5.21.1808 features the following:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
(Wiki) Publish 2018-07 English Wikipedia
|
||||
</li>
|
||||
<li>
|
||||
(PC) Fix multiple script errors due to Wikibase and Scribunto.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
For more details about this release, please see the <a title="" id="xolnki_3" href="pages/Blog.init.html">blog</a> and the <a class="xowa-visited" title="Change log" id="xolnki_4" href="/wiki/Change_log">change log</a>.
|
||||
</p>
|
||||
<p>
|
||||
For more details about the release schedule, please see <a class="xowa-visited" title="Help/Release schedule" id="xolnki_5" href="/wiki/Help/Release_schedule">the release schedule</a>.
|
||||
</p>
|
||||
<h2>
|
||||
<span id="New_users" class="mw-headline">New users</span>
|
||||
</h2>
|
||||
<p>
|
||||
If this is the first time you've run XOWA, then please choose from the following:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Build a wiki while online
|
||||
</li>
|
||||
<li>
|
||||
Build a wiki while offline
|
||||
</li>
|
||||
<li>
|
||||
Download pre-built wikis within XOWA
|
||||
</li>
|
||||
<li>
|
||||
Download pre-built wikis within a browser
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
In addition, XOWA now supports creation of your own personal wiki.
|
||||
</p>
|
||||
<h5>
|
||||
<span id="Build_a_wiki_while_online" class="mw-headline">Build a wiki while online</span>
|
||||
</h5>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
<b>Import Simple Wikipedia</b>
|
||||
</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
Simple Wikipedia is a small wiki that fits in about 200 MB and sets up in about 3 minutes.
|
||||
</dd>
|
||||
<dd>
|
||||
When you are ready to start, click this link:
|
||||
<dl>
|
||||
<dd>
|
||||
<a href="xowa-cmd:%0Aapp.setup.cmds%0A.dump_add_many%28%27simple.wikipedia.org%27%2C%20%27latest%27%2C%20%27pages-articles%27%2C%20%27wiki.custom%27%29.owner%0A.run;%0A">Set up Simple Wikipedia<img src="file:///C:/xowa/bin/any/xowa/file/app.general/xowa_exec.png" /></a>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dd>
|
||||
Feel free to look around during the import process. You can start at <a class="xowa-visited" title="Help/Contents" id="xolnki_6" href="/wiki/Help/Contents">Help/Contents</a>. When the process completes, it will open Simple Wikipedia.
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
After the setup completes, you can visit these pages:
|
||||
<dl>
|
||||
<dd>
|
||||
<a title="Gothic architecture" id="xolnki_7" href="/site/simple.wikipedia.org/wiki/Gothic_architecture">Gothic architecture</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a title="Saturn (planet)" id="xolnki_8" href="/site/simple.wikipedia.org/wiki/Saturn_%28planet%29">Saturn (planet)</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a title="Chess" id="xolnki_9" href="/site/simple.wikipedia.org/wiki/Chess">Chess</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a title="World History" id="xolnki_10" href="/site/simple.wikipedia.org/wiki/World_History">World History</a>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Import other wikis</b>
|
||||
</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
After exploring Simple Wikipedia, you may want to import another wiki such as English Wikipedia, French Wiktionary, German Wikisource, Wikidata, Commons, etc.
|
||||
</dd>
|
||||
<dd>
|
||||
To import another wiki, please visit <a class="xowa-visited" title="Dashboard/Import/Online" id="xolnki_11" href="/wiki/Dashboard/Import/Online">import online</a>.
|
||||
</dd>
|
||||
</dl>
|
||||
<h5>
|
||||
<span id="Build_a_wiki_while_offline" class="mw-headline">Build a wiki while offline</span>
|
||||
</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Import from a dump file</b>: See <a class="xowa-visited" title="Dashboard/Import/Offline" id="xolnki_12" href="/wiki/Dashboard/Import/Offline">import offline</a>.
|
||||
</li>
|
||||
</ul>
|
||||
<h5>
|
||||
<span id="Download_pre-built_wikis_within_XOWA" class="mw-headline">Download pre-built wikis within XOWA</span>
|
||||
</h5>
|
||||
<ul>
|
||||
<li>
|
||||
Go to <a class="xowa-visited" title="Special:XowaDownloadCentral" id="xolnki_13" href="/wiki/Special:XowaDownloadCentral">Special:XowaDownloadCentral</a>
|
||||
</li>
|
||||
<li>
|
||||
Add your wikis to the Queue
|
||||
</li>
|
||||
<li>
|
||||
Press Run
|
||||
</li>
|
||||
<li>
|
||||
For more instructions, see <a title="App/Import/Download Central" id="xolnki_14" href="/wiki/App/Import/Download_Central">App/Import/Download_Central</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h5>
|
||||
<span id="Download_pre-built_wikis_within_a_browser" class="mw-headline">Download pre-built wikis within a browser</span>
|
||||
</h5>
|
||||
<ul>
|
||||
<li>
|
||||
Go to <a title="Wiki setup/Listing" id="xolnki_15" href="/wiki/Wiki_setup/Listing">Wiki_setup/Listing</a>
|
||||
</li>
|
||||
<li>
|
||||
Navigate to your wiki page from the list
|
||||
</li>
|
||||
<li>
|
||||
Download the listed urls
|
||||
</li>
|
||||
</ul>
|
||||
<h5>
|
||||
<span id="Creating_a_personal_wiki" class="mw-headline">Creating a personal wiki</span>
|
||||
</h5>
|
||||
<ul>
|
||||
<li>
|
||||
From the main menu, choose <code>Personal wikis</code> -> <code>New personal wiki</code>
|
||||
</li>
|
||||
<li>
|
||||
Fill in domain, name, and folder
|
||||
</li>
|
||||
<li>
|
||||
Press the <code>Save icon</code>
|
||||
</li>
|
||||
</ul>
|
||||
<h2>
|
||||
<span id="Upgrade_users" class="mw-headline">Upgrade users</span>
|
||||
</h2>
|
||||
<ul>
|
||||
<li>
|
||||
v4.5.0 features full-text search for all wikis. See <a class="xowa-visited" title="App/Full-text search" id="xolnki_16" href="/wiki/App/Full-text_search">App/Full-text_search</a>
|
||||
</li>
|
||||
<li>
|
||||
v4.4.0 features night-mode. See <a title="App/UI/Night mode" id="xolnki_17" href="/wiki/App/UI/Night_mode">App/UI/Night_mode</a>
|
||||
</li>
|
||||
<li>
|
||||
v4.2.0 features personal wiki support. See <a title="App/Personal wikis" id="xolnki_18" href="/wiki/App/Personal_wikis">App/Personal_wikis</a>
|
||||
</li>
|
||||
<li>
|
||||
v4.1.0 features a new in app update system. See <a title="App/Setup/Update/In-app" id="xolnki_19" href="/wiki/App/Setup/Update/In-app">App/Setup/Update/In-app</a>
|
||||
</li>
|
||||
<li>
|
||||
v4.0.0 features a new Options system. See <a title="Options" id="xolnki_20" href="/wiki/Options">Options</a>
|
||||
</li>
|
||||
<li>
|
||||
v3.9.2 features a new Category system. See <a title="App/Category" id="xolnki_21" href="/wiki/App/Category">Category Overview</a>
|
||||
</li>
|
||||
<li>
|
||||
v3.6.3 features a Download page. See <a class="xowa-visited" title="Special:XowaDownloadCentral" id="xolnki_22" href="/wiki/Special:XowaDownloadCentral">Download Central</a>
|
||||
</li>
|
||||
<li>
|
||||
v3.3.4 features an auto-complete address bar. It also has a faster Search system. See <a title="App/Search" id="xolnki_23" href="/wiki/App/Search">App/Search</a>
|
||||
</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
v3.3.4 uses sqlite 3.8.2
|
||||
</dd>
|
||||
</dl>
|
||||
<ul>
|
||||
<li>
|
||||
v3.1.3 features the XOWA Android application
|
||||
</li>
|
||||
<li>
|
||||
v2.8.1 has a language converter dropdown for the Chinese wikis.
|
||||
</li>
|
||||
<li>
|
||||
v2.7.3 introduces a new Bookmarks page. See <a title="Special:XowaBookmarks" id="xolnki_24" href="/wiki/Special:XowaBookmarks">Special:XowaBookmarks</a>
|
||||
</li>
|
||||
<li>
|
||||
v2.6.5 uses SWT v4.5 and XULRunner v24. See <a title="Dev/SWT" id="xolnki_25" href="/wiki/Dev/SWT">Dev/SWT</a> and <a title="App/UI/HTML Browser" id="xolnki_26" href="/wiki/App/UI/HTML_Browser">HTML Browser</a>
|
||||
</li>
|
||||
<li>
|
||||
v2.6.3 uses WebKit for MacOSX. For more info, see <a title="Blog" id="xolnki_27" href="/wiki/Blog">Blog</a><br />
|
||||
</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
v2.6.3 also fully supports multiple-word-highlight when using find. Press Ctrl+F and try it out.
|
||||
</dd>
|
||||
</dl>
|
||||
<ul>
|
||||
<li>
|
||||
v2.5.4 has changed online file downloads. Among other things, ImageMagick and Inkscape are no longer required. For more info, see <a title="App/Basics/Files" id="xolnki_28" href="/wiki/App/Basics/Files">Files</a>
|
||||
</li>
|
||||
<li>
|
||||
v2.4.2 has improved Search performance and v2.4.4 has added multi-wiki Search. For more info, see <a title="App/Search" id="xolnki_29" href="/wiki/App/Search">App/Search</a>
|
||||
</li>
|
||||
<li>
|
||||
v2.4.1 has introduced major database layout changes. For more info, see <a title="Dev/Design/Database" id="xolnki_30" href="/wiki/Dev/Design/Database">Database</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h2>
|
||||
<span id="Tips" class="mw-headline">Tips</span>
|
||||
</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Autocomplete address bar</b>: The address bar supports autocomplete. Type something like "search" and see the results.
|
||||
</li>
|
||||
<li>
|
||||
<b>Navigation buttons</b>: The arrow icons in the upper left-hand corner represent the back and forward button. Click on them just like you would in a web browser. You can also use Alt+Left and Alt+Right.
|
||||
</li>
|
||||
<li>
|
||||
<b>Font size</b>:
|
||||
<ul>
|
||||
<li>
|
||||
If the font size is too small, right-click and choose Font Increase
|
||||
</li>
|
||||
<li>
|
||||
If you need more control over the font, customize it on the <a title="Special:XowaCfg?grp=xowa.gui.general" id="xolnki_31" href="/wiki/Special:XowaCfg%3Fgrp%3Dxowa.gui.general">Options: Gui - Window</a> and <a title="Special:XowaCfg?grp=xowa.html.css" id="xolnki_32" href="/wiki/Special:XowaCfg%3Fgrp%3Dxowa.html.css">Options: HTML - CSS</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>Find box</b>: Press Ctrl+F on your keyboard. This will show the Find box (in the lower left-hand corner). Type "tips". Notice that the word "Tips" is highlighted above. Note that Alt+P (Previous) and Alt+N (Next) will change search direction. See <a title="App/UI/Find box" id="xolnki_33" href="/wiki/App/UI/Find_box">Find Box</a> for more info.
|
||||
</li>
|
||||
<li>
|
||||
<b>Address bar</b>: Press Alt+D or Ctrl+L on your keyboard. This will take you to the Address bar at the top of the screen. Type "s.w:Earth" (no quotes) and press Enter. This will open the Simple Wikipedia page for Earth. See <a title="App/UI/Address bar/Shortcuts" id="xolnki_34" href="/wiki/App/UI/Address_bar/Shortcuts#Default_shortcuts">Address bar/Shortcuts</a> for more shortcuts.
|
||||
</li>
|
||||
<li>
|
||||
<b>Middle-click in address bar</b>: Copy and paste urls directly into the address bar with the middle mouse button to open the page. For example:
|
||||
<ul>
|
||||
<li>
|
||||
Right-click the following url: <code><a href="/site/simple.wikipedia.org/wiki/World_history">http://simple.wikipedia.org/wiki/World_history</a></code>
|
||||
</li>
|
||||
<li>
|
||||
Select "Copy"
|
||||
</li>
|
||||
<li>
|
||||
Click the middle mouse button in the address bar above. The "World history" page in "Simple Wikipedia" will open.
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<dl>
|
||||
<dd>
|
||||
Now you can copy and paste any Wikipedia url directly into XOWA and its page will open (and all its images will download.) See <a title="App/UI/Address bar/URLs" id="xolnki_35" href="/wiki/App/UI/Address_bar/URLs">Address_bar/URLs</a> for more info
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Middle-click on link</b>: Open a tab in a new link by middle-clicking on it. Try middle-clicking the following: <a title="Options" id="xolnki_36" href="/wiki/Options">Options</a>
|
||||
</li>
|
||||
<li>
|
||||
<b>Right-click</b>: Right click on an image and click save as file
|
||||
</li>
|
||||
</ul>
|
||||
<h2>
|
||||
<span id="Notes" class="mw-headline">Notes</span>
|
||||
</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Wikidata</b>: If you're seeing {{#property}} in your wikis you should also set up Wikidata. See <a title="App/Wiki types/Wikidata" id="xolnki_37" href="/wiki/App/Wiki_types/Wikidata">App/Wiki_types/Wikidata</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h2>
|
||||
<span id="Links" class="mw-headline">Links</span>
|
||||
</h2>
|
||||
<table class="wikitable">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<a class="xowa-visited" title="Special:XowaDownloadCentral" id="xolnki_38" href="/wiki/Special:XowaDownloadCentral">Download Central</a>
|
||||
</td>
|
||||
<td>
|
||||
Download an Android-ready wiki with images from archive.org
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="xowa-visited" title="Dashboard/Import/Online" id="xolnki_39" href="/wiki/Dashboard/Import/Online">Import Online</a>
|
||||
</td>
|
||||
<td>
|
||||
Import a wiki from a list of 829 known Wikimedia Foundation wikis
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="xowa-visited" title="Dashboard/Import/Offline" id="xolnki_40" href="/wiki/Dashboard/Import/Offline">Import Offline</a>
|
||||
</td>
|
||||
<td>
|
||||
Import a wiki through a dump; import also through script; also upgrade category to version 2
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a title="Dashboard/Image databases" id="xolnki_41" href="/wiki/Dashboard/Image_databases">Image databases</a>
|
||||
</td>
|
||||
<td>
|
||||
Download image databases for your wiki
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a title="Dashboard/Wiki maintenance" id="xolnki_42" href="/wiki/Dashboard/Wiki_maintenance">Wiki Maintenance</a>
|
||||
</td>
|
||||
<td>
|
||||
Update your wikis if they are outdated
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a title="Help/FAQs" id="xolnki_43" href="/wiki/Help/FAQs">FAQs</a>
|
||||
</td>
|
||||
<td>
|
||||
View questions asked by other users
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="xowa-visited" title="Help/Contents" id="xolnki_44" href="/wiki/Help/Contents">Contents</a>
|
||||
</td>
|
||||
<td>
|
||||
View all help topics
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a title="Options" id="xolnki_45" href="/wiki/Options">Options</a>
|
||||
</td>
|
||||
<td>
|
||||
Configure XOWA options
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="xowa-visited" title="Change log" id="xolnki_46" href="/wiki/Change_log">Change log</a>
|
||||
</td>
|
||||
<td>
|
||||
View changes for each XOWA release
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="xowa-visited" title="Diagnostics" id="xolnki_47" href="/wiki/Diagnostics">Diagnostics</a>
|
||||
</td>
|
||||
<td>
|
||||
Run test pages to make sure that XOWA works on your system.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="external text" rel="nofollow" href="https://github.com/gnosygnu/xowa/issues">Report issues</a>
|
||||
</td>
|
||||
<td>
|
||||
Report bugs / issues on Github
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="visualClear">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div role="contentinfo" id="footer">
|
||||
<ul id="footer-info">
|
||||
<li id="footer-info-lastmod"> This page was last modified on 2018-08-05, at 21:08.</li>
|
||||
<li id="footer-info-copyright">Text is available under the <a href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution/Share-Alike License</a>;
|
||||
additional terms may apply.
|
||||
See <a href="https://wikimediafoundation.org/wiki/Terms_of_Use">Terms of Use</a> for details.
|
||||
</li></ul>
|
||||
<ul id="footer-places">
|
||||
<li id="footer-places-privacy"><a title="Privacy policy" class="extiw" href="/wiki/Project:Privacy%20policy">Privacy policy</a></li>
|
||||
<li id="footer-places-about"><a title="Wikipedia:About" href="/wiki/">About home</a></li>
|
||||
<li id="footer-places-disclaimer"><a title="Disclaimers" href="/wiki/Project:General%20disclaimer">Disclaimers</a></li>
|
||||
<li id="footer-places-developers"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_contribute">Developers</a></li>
|
||||
<li id="footer-places-cookiestatement"><a href="https://wikimediafoundation.org/wiki/Cookie_statement">Cookie statement</a></li>
|
||||
</ul>
|
||||
<ul style="height:10px" class="noprint" id="footer-icons">
|
||||
<li id="footer-copyrightico">
|
||||
<a href="https://wikimediafoundation.org/"><img width="88" height="31" alt="Wikimedia Foundation" src="file:///C:/xowa//bin/any/xowa/html/css/footer/wikimedia-button.png" /></a>
|
||||
</li>
|
||||
<li id="footer-poweredbyico">
|
||||
<a href="//www.mediawiki.org/"><img width="88" height="31" alt="Powered by MediaWiki" src="file:///C:/xowa//bin/any/xowa/html/css/footer/poweredby_mediawiki_88x31.png" /></a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul style="clear:both; float:left;">
|
||||
<li>Generated by <a href="/wiki/home/Help/About">XOWA</a>: v4.5.26.1810 (2018-11-14 02:19:20)</li>
|
||||
</ul>
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
<div class="noprint" id="mw-head">
|
||||
<div class="" id="p-personal">
|
||||
<h3>Personal tools</h3>
|
||||
</div>
|
||||
<div id="left-navigation">
|
||||
<div class="vectorTabs" id="p-namespaces">
|
||||
<h3>Namespaces</h3>
|
||||
<ul>
|
||||
<li class="selected" id="ca-nstab-main"><span><a title="View the content page [c]" accesskey="c" class="xowa-hover-off" id="ca-nstab-main-href" href="/wiki/Main_Page">Page</a></span></li>
|
||||
<li class="xowa_display_none" id="ca-talk"><span><a title="Discussion about the content page [t]" accesskey="t" class="xowa-hover-off" href="/wiki/Talk:Main_Page">Discussion</a></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="right-navigation">
|
||||
<div class="vectorTabs" id="p-views">
|
||||
<h3>Views</h3>
|
||||
<ul>
|
||||
<li class="selected" id="ca-view"><span><a class="xowa-hover-off" href="/wiki/Main_Page">Read</a></span></li>
|
||||
<li class="" id="ca-edit"><span><a title="You can edit this page. Please use the preview button before saving [e]" accesskey="e" class="xowa-hover-off" href="/wiki/Main_Page?action=edit">Edit</a></span></li>
|
||||
<li class="" id="ca-history"><span><a title="View HTML source for this page [h]" accesskey="h" class="xowa-hover-off" href="/wiki/Main_Page?action=html">View HTML</a></span></li>
|
||||
<li role="search" id="p-search">
|
||||
<form action="/wiki/Special:XowaSearch" id="searchform">
|
||||
<div id="simpleSearch">
|
||||
<input type="search" autocomplete="off" value="" title="Search home [f]" accesskey="f" id="searchInput" placeholder="Search" name="search" />
|
||||
<input type="hidden" value="y" name="fulltext" />
|
||||
<input type="submit" class="searchButton mw-fallbackSearchButton" id="mw-searchButton" title="Search home [f]" accesskey="f" />
|
||||
<input type="submit" class="searchButton" id="searchButton" title="Go to a page with this exact name if exists" value="Go" name="go" />
|
||||
<ul id="xowa-search-suggestions" style="display: none;"></ul></div>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="noprint" id="mw-panel">
|
||||
<div id="p-logo">
|
||||
<a title="Visit the main page" class="xowa-hover-off" href="/site/home/wiki/" style="background-image: url(file:///C:/xowa/user/anonymous/wiki/home/html/logo.png);"></a>
|
||||
</div>
|
||||
<div class="portal"><h3></h3></div><!-- empty heading else wikipedia css will hide next <h3> after <div id='p-logo'>; DATE:2016-04-12-->
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="portal" id="xowa-portal-wikis">
|
||||
<h3><a style="text-decoration: none !important;" href='javascript:xowa_toggle_visible("offline-wikis");'>Wikis<img title="" src="file:///C:/xowa/bin/any/xowa/file/app.general/twisty_down.png" id="offline-wikis-toggle-icon" /></a></h3>
|
||||
<div class="body">
|
||||
<ul style="display:;" id="offline-wikis-toggle-elem">
|
||||
<li><a class="xowa-hover-off" href="/site/commons.wikimedia.org/">commons.wikimedia.org</a></li>
|
||||
<li><a class="xowa-hover-off" href="/site/en.wikipedia.org/">en.wikipedia.org</a></li>
|
||||
<li><a class="xowa-hover-off" href="/site/simple.wikipedia.org/">simple.wikipedia.org</a></li>
|
||||
<li><a class="xowa-hover-off" href="/site/www.wikidata.org/">www.wikidata.org</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="border:0px !important" class="mw-body xo-popup-div" id="xo-popup-div-id"></div>
|
||||
<!-- xo-popup-div-id
|
||||
* must be placed as peer to <div id="content">, not as sub-child, else will have overlap problems with search bar
|
||||
* must use mw-body class to have same text-styling
|
||||
* border:0px to suppress blue border b/c of mw-body
|
||||
-->
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,75 @@
|
||||
<div dir=ltr>
|
||||
<div>
|
||||
<h2>
|
||||
<span class="mw-headline" id="Release:_v4.8.21.1808_.282018-08-06_21:00_Mon.29">Release: v4.8.21.1808 (2018-08-06 21:00 Mon)</span>
|
||||
</h2>
|
||||
<p>
|
||||
The PC version is a minor release. It fixes parsing issues for 2018-07 English Wikipedia
|
||||
</p>
|
||||
<p>
|
||||
The Android version is a trivial release. It updates the list of wikis for Download Central.
|
||||
</p>
|
||||
<h3>
|
||||
<span class="mw-headline" id=".28Wiki.29_Publish_2018-08_English_Wikipedia">(Wiki) Publish 2018-08 English Wikipedia</span>
|
||||
</h3>
|
||||
<p>
|
||||
You can get them from Download Central or see the following links:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/site/home/wiki/Wiki_setup/English_wikis" id="xolnki_2" title="Wiki setup/English wikis" class="xowa-visited">Wiki_setup/English_wikis</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/site/home/wiki/Wiki_setup/German_wikis" id="xolnki_3" title="Wiki setup/German wikis" class="xowa-visited">Wiki_setup/German_wikis</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>
|
||||
<span class="mw-headline" id=".28PC.29_Fix_multiple_script_errors_due_to_Wikibase_and_Scribunto">(PC) Fix multiple script errors due to Wikibase and Scribunto</span>
|
||||
</h3>
|
||||
<p>
|
||||
There were a handful of parsing issues with English and German Wikipedia. In brief:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Graph: Support v2 (some pages can only be viewable in HTTP_Server; EX: en.w:Obesity)
|
||||
</li>
|
||||
<li>
|
||||
Wikibase: Add isValidEntityId and getSetting
|
||||
</li>
|
||||
<li>
|
||||
Scribunto: Add stripNoWiki
|
||||
</li>
|
||||
<li>
|
||||
Scribunto: Return empty string for invalid languages
|
||||
</li>
|
||||
<li>
|
||||
Scribunto: Add better support for balanced pairs
|
||||
</li>
|
||||
<li>
|
||||
Parser: Cache ifexist calls
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
<span class='next_sect'>Next section: Next release</span>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<hr/>
|
||||
<div>
|
||||
<span class='data_val'><b>Blog/2018-01</b></span>
|
||||
<span class='data_key'>size:</span><span class='data_val'>2.288 KB</span>
|
||||
<span class='data_key'>edited:</span><span class='data_val'>2018-08-05 21:16:54</span>
|
||||
<span class='data_key'></span><span class='data_val'>2018-08-12 21:37:03</span>
|
||||
</div>
|
||||
<hr/>
|
||||
<div style='float:bottom;'>
|
||||
<span><a href='xowa-cmd:xowa.api.nav.goto("home/wiki/Blog/2018-01");' title='Go to the Address'><img src='file:///C:/xowa/bin/any/xowa/file/app.menu/page/open.png'></a></span>
|
||||
<span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_y("home/wiki/Blog/2018-01");' title='Open Link in New Tab and Follow'><img src='file:///C:/xowa/bin/any/xowa/file/app.menu/tabs/new.png'></a></span>
|
||||
<span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_n("home/wiki/Blog/2018-01");' title='Open Link in New Tab'><img src='file:///C:/xowa/bin/any/xowa/file/app.menu/tabs/new_background.png'></a></span>
|
||||
<span><a href='xowa-cmd:xowa.api.usr.bookmarks.add("home/wiki/Blog/2018-01");' title='Bookmark this Page'><img src='file:///C:/xowa/bin/any/xowa/file/app.menu/bookmarks/add.png'></a></span>
|
||||
<span><a href='xowa-cmd:xowa.api.html.modules.popups.show_more("popup_1");' title='Show more text for the page'><img src='file:///C:/xowa/bin/any/xowa/html/res/src/xowa/popups/imgs/show_more.png'></a></span>
|
||||
<span><a href='xowa-cmd:xowa.api.html.modules.popups.show_all ("popup_1");' title='Show all text for the page'> <img src='file:///C:/xowa/bin/any/xowa/html/res/src/xowa/popups/imgs/show_all.png' ></a></span>
|
||||
<span><a href='/wiki/Special:XowaPopupHistory' title=''><img src='file:///C:/xowa/bin/any/xowa/file/app.menu/history/show.png'></a></span>
|
||||
<span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_y("home/wiki/Options/Popups");' title='Options'><img src='file:///C:/xowa/bin/any/xowa/file/app.menu/tools/options.png'></a></span>
|
||||
</div>
|
||||
</div>
|
@ -1,277 +0,0 @@
|
||||
/*
|
||||
Based on Schnark's javascript for Reference tooltips
|
||||
*/
|
||||
(function($){
|
||||
var cfg = {
|
||||
show_delay : xowa.cfg.get('popups-win-show_delay'),
|
||||
hide_delay : xowa.cfg.get('popups-win-hide_delay'),
|
||||
max_w : xowa.cfg.get('popups-win-max_w'),
|
||||
max_h : xowa.cfg.get('popups-win-max_h'),
|
||||
show_all_max_w : xowa.cfg.get('popups-win-show_all_max_w'),
|
||||
bind_focus_blur : xowa.cfg.get('popups-win-bind_focus_blur'),
|
||||
bind_hover_area : xowa.cfg.get('popups-win-bind_hover_area'),
|
||||
};
|
||||
var fudge_size = 8;
|
||||
|
||||
if (window.xowa_popups_show_update == null) {
|
||||
window.xowa_popups_show_update = xowa_popups_show_update;
|
||||
}
|
||||
if (window.xowa_popups_hide_all == null) {
|
||||
window.xowa_popups_hide_all = xowa_popups_hide_all;
|
||||
}
|
||||
if (window.xowa_popups_bind_doc == null) {
|
||||
window.xowa_popups_bind_doc = bind_hover_to_doc;
|
||||
}
|
||||
if (window.xowa_popups_bind_to_owner == null) {
|
||||
window.xowa_popups_bind_to_owner = bind_hover_to_owner;
|
||||
}
|
||||
if (window.xowa_popups_bind_to_owner_js == null) {
|
||||
window.xowa_popups_bind_to_owner_js = bind_hover_to_owner_js;
|
||||
|
||||
// subscribe to elem_add notifications
|
||||
if (window.xo != null && window.xo.elem != null) {
|
||||
xo.elem.elem_add__sub(window.xowa_popups_bind_to_owner_js);
|
||||
}
|
||||
}
|
||||
if (window.xowa_popups_bind_elem == null) {
|
||||
window.xowa_popups_bind_elem = bind_hover_to;
|
||||
}
|
||||
var popup_cache = {};
|
||||
var popup_next_id = 1;
|
||||
var protocol_pattern = /^(((http|https|ftp):\/\/)|(javascript:|xowa-cmd:)|#cite_)/;
|
||||
function show_init(elem, popup_itm, anchor_x, anchor_y) {
|
||||
var elem_is_area = elem.prop('tagName') === 'AREA';
|
||||
var popup_tooltip = elem_is_area ? elem.data('title') : ''; // only show tooltip if area
|
||||
if (elem_is_area) {
|
||||
window.status = popup_tooltip;
|
||||
}
|
||||
if (!popup_itm.html || popup_itm.href === '/wiki/Special:XowaPopupHistory') {
|
||||
var html = xowa_exec('popups_get_html', popup_next_id, popup_itm.href, popup_tooltip);
|
||||
if (!html) { // html is null; occurs for protocols such as http: and xowa-cmd:
|
||||
elem.attr('title', elem.data('title')); // restore tooltip
|
||||
return;
|
||||
}
|
||||
popup_itm.html = html;
|
||||
}
|
||||
var popup_id = 'popup_' + (popup_next_id++).toString();
|
||||
popup_itm.id = popup_id;
|
||||
/*
|
||||
*/
|
||||
// insert popup to body else Read / Edit / View HTML will show on top; use multiple div wrappers to inherit same text styles from MW style sheet; DATE:2015-07-31
|
||||
// var $wrapper_1 = $('<div/>',{'class':'mw-body'}) .appendTo('body'); // TOMBSTONE: do not dynamically add element; just use pre-existing item; DATE:2016-12-13
|
||||
var $wrapper_1 = $('#xo-popup-div-id');
|
||||
var $wrapper_2 = $('<div/>',{'class':'mw-body-content'}).appendTo($wrapper_1);
|
||||
var $wrapper_3 = $('<div/>',{'class':'mw-content-ltr'}) .appendTo($wrapper_2);
|
||||
var $popup = $('<div/>').attr('id', popup_id).addClass('xowa_popup').append(popup_itm.html).appendTo($wrapper_3);
|
||||
// var $popup = $('<div>').attr('id', popup_id).addClass('xowa_popup').append(popup_itm.html).appendTo($('#mw-content-text'));
|
||||
var window_max_w = cfg.max_w;
|
||||
if (popup_itm.show_all_anchor_x) {
|
||||
anchor_x = popup_itm.show_all_anchor_x;
|
||||
window_max_w = popup_itm.show_all_max_w;
|
||||
}
|
||||
return show_popup(popup_itm, $popup, anchor_x, anchor_y, window_max_w);
|
||||
}
|
||||
function xowa_popups_show_update(mode, href, html) {
|
||||
var popup_itm = popup_cache[href];
|
||||
if (!popup_itm) return; // shouldn't happen
|
||||
var $popup = $("#" + popup_itm.id);
|
||||
$popup.html(html);
|
||||
popup_itm.html = html;
|
||||
var $window = $(window);
|
||||
var $anchor = $(popup_itm.anchor);
|
||||
var anchor_x = $popup.offset().left;
|
||||
var popup_max_w = cfg.max_w;
|
||||
if (mode == 'all' && cfg.show_all_max_w != -1) {
|
||||
popup_max_w = cfg.show_all_max_w;
|
||||
var window_width = $window.width();
|
||||
if (anchor_x + popup_max_w > window_width)
|
||||
anchor_x = window_width - popup_max_w;
|
||||
if (anchor_x < 0) anchor_x = 0;
|
||||
popup_itm.show_all_anchor_x = anchor_x;
|
||||
popup_itm.show_all_max_w = popup_max_w;
|
||||
}
|
||||
var anchor_y = $anchor.offset().top - $window.scrollTop();
|
||||
if (anchor_y < 0) anchor_y = 0; // sometimes < 0; not sure why
|
||||
show_popup(popup_itm, $popup, anchor_x - fudge_size, anchor_y, popup_max_w); // need to subtract fudge_size, or else popup drifts rightwards
|
||||
}
|
||||
function xowa_popups_hide_all() {
|
||||
var now_time = new Date().getTime();
|
||||
for (var popup_key in popup_cache) {
|
||||
var popup_itm = popup_cache[popup_key];
|
||||
if (now_time - popup_itm.show_time < cfg.show_delay) // hide popup only if shown recently; allows popups that were showing to still show while page is loaded
|
||||
popup_itm.popup.hide();
|
||||
}
|
||||
}
|
||||
function show_focus ($this) {
|
||||
var ev = {
|
||||
clientX : $this.offset().left - $(window).scrollLeft(),
|
||||
clientY : $this.offset().top - $(window).scrollTop(),
|
||||
}
|
||||
show($this, ev);
|
||||
}
|
||||
function show ($this, ev) {
|
||||
var href = $this.attr('href');
|
||||
if (!href || href.length == 0) return;
|
||||
if (href.charAt(0) === '#') return; // ignore "#" which is used for javascript; DATE:2014-08-21
|
||||
if (protocol_pattern.test(href)) return; // ignore hrefs with absolute protocol of "http:", etc. which won't point to XOWA content
|
||||
if ($this.hasClass('xowa-hover-off')) return; // ignore href if "xowa-hover-off" (for sidebar itms)
|
||||
var popup_itm = popup_cache[href];
|
||||
if (!popup_itm) {
|
||||
popup_itm = {
|
||||
href : href,
|
||||
anchor : $this,
|
||||
};
|
||||
popup_cache[href] = popup_itm;
|
||||
}
|
||||
data = $this.data();
|
||||
if (data.willShow) {
|
||||
return;
|
||||
}
|
||||
if (data.willHide) {
|
||||
$this.data('willHide', false);
|
||||
window.clearTimeout(data.hideTimer);
|
||||
return;
|
||||
}
|
||||
if (data.popupVisible) {
|
||||
return;
|
||||
}
|
||||
if (!$this.data('title')) {
|
||||
$this.data('title', $this.attr('title'));
|
||||
$this.attr('title', '');
|
||||
}
|
||||
$this.data({
|
||||
willShow: true,
|
||||
showTimer: window.setTimeout(function () {
|
||||
$this.data({
|
||||
willShow: false,
|
||||
popupVisible: true,
|
||||
popupRef: show_init($this, popup_itm, ev.clientX, ev.clientY).hover(
|
||||
function () {
|
||||
show($this, ev);
|
||||
}, function () {
|
||||
hide($this);
|
||||
})
|
||||
});
|
||||
}, cfg.show_delay)
|
||||
});
|
||||
}
|
||||
function show_popup(popup_itm, $popup, anchor_x, anchor_y, popup_max_w) {
|
||||
var $window = $(window);
|
||||
var popup_pos = calc_popup_pos(anchor_x, anchor_y, $popup.outerWidth(), $popup.outerHeight(), $window.width(), $window.height());
|
||||
if (window.xowa.js.mathJax == null)
|
||||
window.xowa.js.load_lib(xowa.root_dir + 'bin/any/javascript/xowa/mathjax/xowa_mathjax.js', xowa_mathjax_run); // note that this will only load mathjax if math items are on page
|
||||
else
|
||||
xowa_mathjax_run();
|
||||
bind_hover_to($('a', $popup));
|
||||
$popup.css({
|
||||
left: popup_pos.x,
|
||||
top : popup_pos.y,
|
||||
});
|
||||
if (popup_max_w > 0)
|
||||
$popup.css({maxWidth: popup_max_w});
|
||||
else
|
||||
$popup.css({maxWidth : cfg.max_w});
|
||||
var max_h = $window.height() - 20; //margin, border, padding + noch ein bisschen Sicherheit
|
||||
if (cfg.max_h > 0 && cfg.max_h < max_h)
|
||||
max_h = cfg.max_h;
|
||||
$popup.css({maxHeight: max_h});
|
||||
popup_itm.popup = $popup;
|
||||
popup_itm.show_time = new Date().getTime();
|
||||
return $popup.hide().fadeIn('fast');
|
||||
}
|
||||
function xowa_mathjax_run() { // NOTE: need indirection via function else null ref when window.xowa.js.mathJax == null
|
||||
window.xowa.js.mathJax.run();
|
||||
}
|
||||
function calc_popup_pos (x, y, w, h, W, H) {
|
||||
var d = fudge_size; // increase distance to prevent popup from overlapping with link
|
||||
if (x + d + w > W) {
|
||||
x = W - w - 2;
|
||||
d = 20;
|
||||
if (x < 0) {
|
||||
x = 0;
|
||||
}
|
||||
} else {
|
||||
x = x + d;
|
||||
}
|
||||
if (y < h + d) {
|
||||
if (y + d + h < H) {
|
||||
y = y + d;
|
||||
} else {
|
||||
y = 0;
|
||||
}
|
||||
} else {
|
||||
y = y - h - d;
|
||||
}
|
||||
return {x: x, y: y};
|
||||
}
|
||||
function hide ($this) {
|
||||
var data = $this.data();
|
||||
if (data.willHide) {
|
||||
return;
|
||||
}
|
||||
if (data.willShow) {
|
||||
$this.data('willShow', false);
|
||||
window.clearTimeout(data.showTimer);
|
||||
return;
|
||||
}
|
||||
if (!data.popupVisible) {
|
||||
return;
|
||||
}
|
||||
$this.data({
|
||||
willHide: true,
|
||||
hideTimer: window.setTimeout(function () {
|
||||
$this.data({
|
||||
willHide: false,
|
||||
popupVisible: false
|
||||
});
|
||||
reallyHide(data.popupRef);
|
||||
}, cfg.hide_delay)
|
||||
});
|
||||
}
|
||||
|
||||
function reallyHide ($popup) {
|
||||
$popup.fadeOut('fast', function () {
|
||||
if ($popup.find('a').length) {
|
||||
$popup.detach();
|
||||
} else {
|
||||
$popup.remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
function bind_hover_to_doc() {
|
||||
bind_hover_to($('a'));
|
||||
if (cfg.bind_hover_area)
|
||||
bind_hover_to($('area'));
|
||||
}
|
||||
function bind_hover_to_owner_js(owner) {
|
||||
bind_hover_to_owner(owner);
|
||||
}
|
||||
function bind_hover_to_owner(owner) {
|
||||
bind_hover_to($(owner).find('a'));
|
||||
if (cfg.bind_hover_area)
|
||||
bind_hover_to($(owner).find('a'));
|
||||
}
|
||||
function bind_hover_to(elems) {
|
||||
elems.hover(
|
||||
function (e) {
|
||||
show($(this), e);
|
||||
}, function () {
|
||||
hide($(this));
|
||||
});
|
||||
if (cfg.bind_focus_blur) {
|
||||
elems.focus(
|
||||
function (e) {
|
||||
show_focus($(this), e);
|
||||
}
|
||||
);
|
||||
elems.blur(
|
||||
function (e) {
|
||||
hide($(this), e);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$(bind_hover_to_doc);
|
||||
|
||||
})(jQuery);
|
@ -0,0 +1,454 @@
|
||||
(function($){ // self-invoking anonymous function to reduce pollution of global namespace
|
||||
|
||||
var XoPopupMode = {
|
||||
Hidden: 'hidden'
|
||||
, ShowConfirming: 'confirmingShow'
|
||||
, Shown: 'shown'
|
||||
, HideConfirming: 'confirmingHide'
|
||||
}
|
||||
Object.freeze(XoPopupMode);
|
||||
|
||||
var XoPopupItm = (function(){
|
||||
XoPopupItm.prototype.Html = null;
|
||||
XoPopupItm.prototype.Mode = XoPopupMode.Hidden;
|
||||
XoPopupItm.prototype.AnchorElem = null;
|
||||
XoPopupItm.prototype.AnchorTitle = null;
|
||||
XoPopupItm.prototype.PopupElem = null;
|
||||
XoPopupItm.prototype.ShowConfirmedCbk = null;
|
||||
XoPopupItm.prototype.HideConfirmedCbk = null;
|
||||
XoPopupItm.prototype.HoverX = 0;
|
||||
XoPopupItm.prototype.HoverY = 0;
|
||||
|
||||
function XoPopupItm(AnchorElem) {
|
||||
this.Id = 'popup_' + (XoPopupItm.IdNext++).toString();
|
||||
this.AnchorElem = AnchorElem;
|
||||
}
|
||||
|
||||
XoPopupItm.IdNext = 1;
|
||||
return XoPopupItm;
|
||||
}());
|
||||
|
||||
var XoPopupCfg = (function(){
|
||||
function XoPopupCfg() {
|
||||
this.WriteLogEnabled = false;
|
||||
this.ShowConfirmingDelay = xowa.cfg.get('popups-win-show_delay');
|
||||
this.HideConfirmingDelay = xowa.cfg.get('popups-win-hide_delay');
|
||||
this.MaxW = xowa.cfg.get('popups-win-max_w');
|
||||
this.MaxH = xowa.cfg.get('popups-win-max_h');
|
||||
this.ShowAllMaxW = xowa.cfg.get('popups-win-show_all_max_w');
|
||||
this.AllowPopupsForKeyboardTabbing = xowa.cfg.get('popups-win-bind_focus_blur');
|
||||
this.BindHoverArea = xowa.cfg.get('popups-win-bind_hover_area');
|
||||
}
|
||||
return XoPopupCfg;
|
||||
}());
|
||||
|
||||
var XoPopupMgr = (function(){
|
||||
// ----------------------------------
|
||||
// Ctor; props
|
||||
// ----------------------------------
|
||||
function XoPopupMgr() {
|
||||
this.BindHoverToDoc();
|
||||
|
||||
// subscribe to callback
|
||||
var mgr = this;
|
||||
xowa.js.doc.evtElemAdd.sub(
|
||||
function(elem) {
|
||||
var anchs = $('a', $(elem));
|
||||
mgr.BindHoverTo(anchs);
|
||||
}
|
||||
);
|
||||
}
|
||||
XoPopupMgr.prototype.Cfg = new XoPopupCfg();
|
||||
XoPopupMgr.prototype.Cache = {};
|
||||
|
||||
// ----------------------------------
|
||||
// Bind <a> / <area> to hover
|
||||
// ----------------------------------
|
||||
XoPopupMgr.prototype.BindHoverToDoc = function() {
|
||||
this.BindHoverTo($('a'));
|
||||
if (this.Cfg.BindHoverArea) { // <area> tags have href param; REF:en.w:Samuel_Johnson
|
||||
this.BindHoverTo($('area'));
|
||||
}
|
||||
}
|
||||
XoPopupMgr.prototype.BindHoverTo = function(elems) {
|
||||
elems = this.BindHoverToFilter(elems);
|
||||
elems.hover
|
||||
( function(ev) {XoPopupMgr.prototype.ShowConfirming($(this), ev);}
|
||||
, function() {XoPopupMgr.prototype.HideConfirming($(this));}
|
||||
);
|
||||
if (this.Cfg.AllowPopupsForKeyboardTabbing){
|
||||
elems.focus(function(ev) {XoPopupMgr.prototype.ShowFocus($(this), ev);});
|
||||
elems.blur (function(ev) {XoPopupMgr.prototype.Hide($(this), ev);});
|
||||
}
|
||||
}
|
||||
// NOTE: ".*/wiki/File:" is for HTTP: ("/en.wikipedia.org/wiki/File:...") and SWT ("/wiki/File:...")
|
||||
XoPopupMgr.ProtocolPattern = /^(((http|https|ftp):\/\/)|(javascript:|xowa-cmd:|.*\/wiki\/File:|.*\/wiki\/Image:)|#cite_)/;
|
||||
XoPopupMgr.prototype.BindHoverToFilter = function(elems) {
|
||||
var array = [];
|
||||
var len = elems.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
var $anch = $(elems[i]);
|
||||
var href = $anch.attr('href');
|
||||
if (!href || href.length == 0) continue; // ignore empty anch; EX: '<a>'
|
||||
if (href.charAt(0) === '#') continue; // ignore "#" which is used for javascript; DATE:2014-08-21
|
||||
if (XoPopupMgr.ProtocolPattern.test(href)) continue; // ignore hrefs with absolute protocol of "http:", etc. which won't point to XOWA content
|
||||
if ($anch.hasClass('xowa-hover-off')) continue; // ignore href if "xowa-hover-off" (for sidebar itms)
|
||||
array.push($anch);
|
||||
}
|
||||
return $(array).map (function () {return this.toArray();}); // REF:https://stackoverflow.com/questions/6867184/turn-array-of-jquery-elements-into-jquery-wrapped-set-of-elements
|
||||
}
|
||||
|
||||
// ----------------------------------
|
||||
// Show / hide
|
||||
// ----------------------------------
|
||||
XoPopupMgr.prototype.ShowConfirming = function($anch, ev) {
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.ShowConfirming.Bgn');
|
||||
|
||||
// exit unless mode is hidden
|
||||
var popupItm = this.GetItmOrNew($anch);
|
||||
switch (popupItm.Mode) {
|
||||
case XoPopupMode.Hidden:
|
||||
popupItm.Mode = XoPopupMode.ShowConfirming;
|
||||
break;
|
||||
case XoPopupMode.HideConfirming:
|
||||
popupItm.Mode = XoPopupMode.Shown;
|
||||
window.clearTimeout(popupItm.HideConfirmedCbk);
|
||||
return;
|
||||
case XoPopupMode.ShowConfirming:
|
||||
case XoPopupMode.Shown:
|
||||
return;
|
||||
default:
|
||||
console.log('XoPopupMgr.ShowConfirming:unknown ' + popupItm.Mode);
|
||||
return;
|
||||
}
|
||||
|
||||
// set title to '' b/c we don't want it to show before popup does
|
||||
if (!popupItm.AnchorTitle) {
|
||||
popupItm.AnchorTitle = $anch.attr('title');
|
||||
$anch.attr('title', '');
|
||||
}
|
||||
|
||||
// cache X,Y of mouse pointer
|
||||
popupItm.HoverX = ev.clientX;
|
||||
popupItm.HoverY = ev.clientY;
|
||||
|
||||
// set-up callback
|
||||
var mgr = this;
|
||||
popupItm.ShowConfirmedCbk = window.setTimeout(
|
||||
function() {mgr.ShowConfirmed($anch, popupItm);}
|
||||
, this.Cfg.ShowConfirmingDelay
|
||||
);
|
||||
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.ShowConfirming.End');
|
||||
}
|
||||
|
||||
XoPopupMgr.prototype.ShowConfirmed = function($anch, popupItm) {
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.ShowConfirmed.Bgn');
|
||||
|
||||
// set mode to shown
|
||||
popupItm.Mode = XoPopupMode.Shown;
|
||||
|
||||
// create popup
|
||||
var html = popupItm.Html;
|
||||
if (!html) html = 'retrieving data'
|
||||
this.CreatePopup(true, popupItm, popupItm.AnchorElem, html);
|
||||
|
||||
// no cached html; call XOWA
|
||||
if (!popupItm.Html) {
|
||||
var href = $anch.attr('href');
|
||||
var mgr = this;
|
||||
var showMode = 'init';
|
||||
switch (xowa.app.mode) {
|
||||
case 'http_server':
|
||||
var req = new XMLHttpRequest();
|
||||
if (href.startsWith('/wiki/')) href = xowa.page.wiki + href; // Special:XowaCfg and other pages use AJAX to update page content which won't pass through Convert_page; DATE:2018-11-11
|
||||
var path = href + '?action=popup&popup_mode=init&popup_id=' + popupItm.Id;
|
||||
req.onload = function(e) {
|
||||
mgr.UpdatePopupHtml(popupItm.Id, showMode, req.responseText);
|
||||
}
|
||||
req.open("GET", path, true); // 'false': synchronous.
|
||||
req.send(null);
|
||||
break;
|
||||
case 'mock':
|
||||
xowa.popups.Mock_popups_get_html(mgr, 'init', popupItm, href); // NOTE: must be "xowa.popups", not "this", b/c "this" will call prototype first
|
||||
break;
|
||||
default:
|
||||
var elemIsArea = $anch.prop('tagName') === 'AREA';
|
||||
var popupTooltip = elemIsArea ? $anch.attr('title') : ''; // only show tooltip if area
|
||||
mgr.UpdatePopupHtml(popupItm.Id, showMode, xowa_exec('popups_get_html', "init", popupItm.Id, href, popupTooltip));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.ShowConfirmed.End');
|
||||
}
|
||||
|
||||
XoPopupMgr.prototype.HideConfirming = function($anch) {
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.HideConfirming.Bgn');
|
||||
|
||||
// exit unless mode is Shown
|
||||
var popupItm = this.GetItmOrNew($anch);
|
||||
switch (popupItm.Mode) {
|
||||
case XoPopupMode.Shown:
|
||||
popupItm.Mode = XoPopupMode.HideConfirming;
|
||||
break;
|
||||
case XoPopupMode.ShowConfirming:
|
||||
popupItm.Mode = XoPopupMode.Hidden;
|
||||
window.clearTimeout(popupItm.ShowConfirmedCbk);
|
||||
return;
|
||||
case XoPopupMode.HideConfirming:
|
||||
case XoPopupMode.Hidden:
|
||||
return;
|
||||
default:
|
||||
console.log('XoPopupMgr.HideConfirming:unknown ' + popupItm.Mode);
|
||||
return;
|
||||
}
|
||||
|
||||
// set-up callback
|
||||
var mgr = this;
|
||||
popupItm.HideConfirmedCbk = window.setTimeout(function () {mgr.HideConfirmed($anch, popupItm);}, this.Cfg.HideConfirmingDelay);
|
||||
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.HideConfirming.End');
|
||||
}
|
||||
|
||||
XoPopupMgr.prototype.HideConfirmed = function($anch, popupItm) {
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.HideConfirmed.Bgn');
|
||||
|
||||
// set to hidden
|
||||
popupItm.Mode = XoPopupMode.Hidden;
|
||||
|
||||
// fade item out
|
||||
var $popup = popupItm.PopupElem;
|
||||
if ($popup) {
|
||||
$popup.fadeOut('fast', function () {
|
||||
$('#' + popupItm.Id + '_body').remove();
|
||||
});
|
||||
}
|
||||
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.HideConfirmed.End');
|
||||
}
|
||||
|
||||
// ----------------------------------
|
||||
// create / update popup html
|
||||
// ----------------------------------
|
||||
XoPopupMgr.prototype.CreatePopup = function(create, popupItm, $anch, html) {
|
||||
// create popup
|
||||
// insert popup to body, else "Read / Edit / View HTML" will show on top; use multiple div wrappers to inherit same text styles from MW style sheet; DATE:2015-07-31
|
||||
// var $wrapper_1 = $('<div/>',{'class':'mw-body'}).appendTo('body'); // TOMBSTONE: do not dynamically add element; just use pre-existing item; DATE:2016-12-13
|
||||
var $popup = null;
|
||||
|
||||
if (create) {
|
||||
var $wrapper_1 = $('#xo-popup-div-id');
|
||||
var $wrapper_2 = $('<div/>',{'class':'mw-body-content', 'id':popupItm.Id + '_body'}).appendTo($wrapper_1);
|
||||
var $wrapper_3 = $('<div/>',{'class':'mw-content-ltr'}) .appendTo($wrapper_2);
|
||||
$popup = $('<div/>').attr('id', popupItm.Id).addClass('xowa_popup').append(html).appendTo($wrapper_3);
|
||||
// var $popup = $('<div>').attr('id', popup_id).addClass('xowa_popup').append(popupItm.html).appendTo($('#mw-content-text'));
|
||||
popupItm.PopupElem = $popup;
|
||||
}
|
||||
else {
|
||||
$popup = popupItm.PopupElem;
|
||||
}
|
||||
|
||||
// calc position
|
||||
var popupX = popupItm.HoverX;
|
||||
var popupY = popupItm.HoverY;
|
||||
|
||||
// set popup's left / top
|
||||
var $window = $(window);
|
||||
var popupPos = XoPopupMgr.AdjustPopupPos(popupX, popupY, $popup.outerWidth(), $popup.outerHeight(), $window.width(), $window.height());
|
||||
$popup.css({
|
||||
left: popupPos.X,
|
||||
top : popupPos.Y,
|
||||
});
|
||||
|
||||
// default maxW to this.Cfg.MaxW which is ordinarily "-1" which means fit to html; if "all", default to window.width
|
||||
var popupMaxW = this.Cfg.MaxW;
|
||||
if (popupItm.ShowMode === 'all') {
|
||||
popupMaxW = $window.width() - 20; //margin, border, padding
|
||||
}
|
||||
$popup.css({maxWidth: popupMaxW});
|
||||
|
||||
// default maxH to window.height(); can't be -1, else div won't scroll
|
||||
var popupMaxH = $window.height() - 20; //margin, border, padding + noch ein bisschen Sicherheit
|
||||
if (this.Cfg.MaxH > 0) { // NOTE: > 0 b/c defaults to -1
|
||||
popupMaxH = this.Cfg.MaxH;
|
||||
}
|
||||
$popup.css({maxHeight: popupMaxH});
|
||||
|
||||
// allow popups for any anchor in popup
|
||||
this.BindHoverTo($('a', $popup));
|
||||
|
||||
// bind popup's hover to anch; allows hovering over popup to keep popup open
|
||||
$popup.hover(
|
||||
function(ev) {XoPopupMgr.prototype.ShowConfirming($anch, ev);}
|
||||
, function() {XoPopupMgr.prototype.HideConfirming($anch);}
|
||||
);
|
||||
|
||||
$popup.fadeIn('fast');
|
||||
}
|
||||
|
||||
XoPopupMgr.prototype.UpdatePopupHtml = function(popupItmId, showMode, html) {
|
||||
// get $anch
|
||||
var popupItm = this.Cache[popupItmId];
|
||||
var $anch = popupItm.AnchorElem;
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.UpdatePopupHtml.Bgn');
|
||||
|
||||
// set html
|
||||
if (!html) { // html is null; occurs for protocols such as http: and xowa-cmd:
|
||||
$anch.attr('title', popupItm.AnchorTitle); // restore tooltip
|
||||
return;
|
||||
}
|
||||
var mgr = this;
|
||||
|
||||
// update html
|
||||
var popupHtmlElem = $('#' + popupItm.Id);
|
||||
popupHtmlElem.fadeOut('fast', function() {
|
||||
popupItm.ShowMode = showMode;
|
||||
popupItm.Html = html;
|
||||
popupHtmlElem.html(html);
|
||||
mgr.CreatePopup(false, popupItm, popupItm.AnchorElem, html);
|
||||
popupHtmlElem.fadeIn('fast');
|
||||
xowa.js.doc.evtElemAdd.pub(popupItm.PopupElem[0]); // "[0]" -> REF:https://learn.jquery.com/using-jquery-core/faq/how-do-i-pull-a-native-dom-element-from-a-jquery-object/
|
||||
});
|
||||
|
||||
// only show tooltip if area
|
||||
if ($anch.prop('tagName') === 'AREA') {
|
||||
window.status = $anch.data('title');
|
||||
}
|
||||
|
||||
if (this.Cfg.WriteLogEnabled) this.WriteLogByAnch($anch, 'XoPopupMgr.UpdatePopupHtml.End');
|
||||
}
|
||||
|
||||
XoPopupMgr.AdjustPopupPos = function(popupX, popupY, popupW, popupH, windowW, windowH) {
|
||||
// if popupX causes popup to not show entirely on screen, right-align to window-right
|
||||
var offsetX = 8;
|
||||
if (popupX + popupW + offsetX > windowW) {
|
||||
popupX = windowW - popupW - offsetX;
|
||||
if (popupX < 0) {
|
||||
popupX = 0;
|
||||
}
|
||||
// else just nudge it by offset to prevent popup from overlapping with link
|
||||
} else {
|
||||
popupX = popupX + offsetX;
|
||||
}
|
||||
|
||||
// if popupY causes popup to not show entirely on screen, bottom-align to window-bottom
|
||||
var offsetY = 20; // adjust for statusBar
|
||||
if (popupY + popupH + offsetY > windowH) {
|
||||
popupY = windowH - popupH - offsetY;
|
||||
if (popupY < 0) {
|
||||
popupY = 0;
|
||||
}
|
||||
}
|
||||
// else just nudge it by offset to prevent popup from overlapping with link
|
||||
else {
|
||||
popupY = popupY + offsetY;
|
||||
}
|
||||
|
||||
return {X: popupX, Y: popupY};
|
||||
}
|
||||
|
||||
// ----------------------------------
|
||||
// Utility
|
||||
// ----------------------------------
|
||||
XoPopupMgr.prototype.GetItmOrNew = function($anch) {
|
||||
var popupId = $anch.attr('xo_popup_id');
|
||||
if (popupId) {
|
||||
popupItm = this.Cache[popupId];
|
||||
}
|
||||
else {
|
||||
popupItm = new XoPopupItm($anch);
|
||||
$anch.attr('xo_popup_id', popupItm.Id);
|
||||
this.Cache[popupItm.Id] = popupItm;
|
||||
}
|
||||
return popupItm;
|
||||
}
|
||||
|
||||
XoPopupMgr.prototype.WriteLogByAnch = function($anch, message) {
|
||||
console.log(message + ':' + ' id=' + $anch.attr('xo_popup_id') + ' href=' + $anch.attr('href'));
|
||||
}
|
||||
|
||||
XoPopupMgr.prototype.dbg = function() {
|
||||
var args_len = arguments.length;
|
||||
var elem = document.getElementById('siteSub');
|
||||
for (var i = 0; i < args_len; i++) {
|
||||
elem.innerHTML += ' ' + arguments[i];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
XoPopupMgr.prototype.FetchMore = function(popupItmId) {
|
||||
var popupItm = this.Cache[popupItmId];
|
||||
switch (xowa.app.mode) {
|
||||
case 'http_server':
|
||||
var href = popupItm.AnchorElem.attr('href');
|
||||
var req = new XMLHttpRequest();
|
||||
if (href.startsWith('/wiki/')) href = xowa.page.wiki + href; // Special:XowaCfg and other pages use AJAX to update page content which won't pass through Convert_page; DATE:2018-11-11
|
||||
var path = href + '?action=popup&popup_mode=more&popup_id=' + popupItmId;
|
||||
req.onload = function(e) {
|
||||
mgr.UpdatePopupHtml(popupItm.Id, req.responseText);
|
||||
}
|
||||
req.open("GET", path, true); // 'false': synchronous.
|
||||
req.send(null);
|
||||
break;
|
||||
default:
|
||||
this.UpdatePopupHtml(popupItm.Id, xowa_exec('popups_get_html', "more", popupItm.Id));
|
||||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
return XoPopupMgr;
|
||||
}());
|
||||
|
||||
$(document).ready(function() {
|
||||
window.xowa.popups = new XoPopupMgr();
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
/*
|
||||
# TESTING
|
||||
## SWT
|
||||
### en.w:Earth
|
||||
Basic popup
|
||||
* Hover over planet -> popup
|
||||
* Hover over Sun -> popup
|
||||
* Hover over planet -> cached, and still planet (not sun)
|
||||
* Hover over Sun -> cached, and still planet (not sun)
|
||||
* Double hover: hover over any link in Sun popup
|
||||
|
||||
Show more
|
||||
* Show more a few times -> make sure vertical scroll bar
|
||||
* Show all -> make sure popup widens
|
||||
|
||||
Ignored links
|
||||
* xowa-hover-off links should not show
|
||||
** any link in sidebar
|
||||
** Article / Talk
|
||||
** Read, Edit, View HTML
|
||||
* Http links (scroll down to any link in references)
|
||||
* Images
|
||||
* Reference links (should show Reference tool tip)
|
||||
|
||||
### en.w:Samuel_Johnson
|
||||
Image map via area
|
||||
(NOTE: this behavior only works in XULRunner; latest Chrome / Firefox no longer captures onmouseenter / onmouseexit for <area>)
|
||||
* Scroll down to "A literary party... The Club" and hover over any of the figures
|
||||
|
||||
### Special:XowaSearch?search=test&fulltext=y
|
||||
Full-text search
|
||||
* Hover over any of the search results
|
||||
|
||||
----
|
||||
|
||||
## HTTP server (Firefox)
|
||||
### http://localhost:8080/en.wikipedia.org/wiki/Earth
|
||||
|
||||
Basic popup
|
||||
* Same as SWT/Basic_popup above
|
||||
|
||||
Hover over image -> should not show "retrieving data"
|
||||
|
||||
### http://localhost:8080/home/wiki/Special:XowaCfg?grp=xowa.addon.popups
|
||||
AJAX: b/c HTML comes from AJAX which doesn't pass through Convert_page
|
||||
*/
|
Loading…
Reference in new issue