You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gnosygnu_xowa/res/bin/any/xowa/cfg/app/xowa.gfs

1019 lines
35 KiB

/*******************************************************************************
This file uses the following conventions:
- End of line character: char(10) (Unix style)
- Encoding: UTF-8 (without Byte Order Mark)
- Tabs: not supported
- Word-wrap: not recommended
DO NOT EDIT THIS FILE UNLESS INSTRUCTED
The contents of this file are volatile and will change with each release.
Any change you make below will be lost whenever you upgrade.
If you want to make changes and preserve them between versions, add them to [[Options/Config_script]]
However, the syntax itself is volatile, and future commands may be changed or deleted.
There will be no backward compatibility.
*******************************************************************************/
app.scripts.fail_if_unhandled = 'n';
/*******************************************************************************
gui (bootup)
********************************************************************************
these values should be declared early (at the top of the file)
------------------------------------------------------------------------------*/
app.gui {
kit = 'swt'; // 'swt' is the only supported value; should only be set once
browser_type = 'mozilla'; // 'mozilla' or 'webkit'
xul_runner_path = '~{<>bin_plat_dir<>}xulrunner'; // path should be set to xulrunner location; '~{<>bin_plat_dir<>}xulrunner' defaults to '/xowa/bin/platform_name/xulrunner' (EX: on Windows 'C:\xowa\bin\windows\xulrunner')
}
/*******************************************************************************
files: apps
********************************************************************************
defines which apps open which files
moved to /xowa/user/[USER]/app/cfg/os.gfs; DATE:2017-01-01
------------------------------------------------------------------------------*/
app.scripts.run_file_by_type('xowa.user.os');
/*******************************************************************************
files: ext_rules
********************************************************************************
- view_max: max size of file to be automatically downloaded when viewing page
for most cases, alternate between 1 GB (always download) and 0 GB (never download)
with the rules below, images are downloaded, but ogg, oga, ogv are not
if you set oga, ogg, and ogv to 1 GB, then files of that type will be automatically downloaded when viewing the page. this will probably be a hindrance.
- make_max: max size of file to be made during offline image building
same as view max: use 1 GB and 0 GB
these only apply to the offline image building process. they have no effect when viewing wiki articles.
------------------------------------------------------------------------------*/
app.files.ext_rules.set('img_only') {
set('png' ) {make_max = '1 GB'; view_max = '1 GB';}
set('jpg' ) {make_max = '1 GB'; view_max = '1 GB';}
set('jpeg') {make_max = '1 GB'; view_max = '1 GB';}
set('gif' ) {make_max = '1 GB'; view_max = '1 GB';}
set('tif' ) {make_max = '1 GB'; view_max = '1 GB';}
set('tiff') {make_max = '1 GB'; view_max = '1 GB';}
set('svg' ) {make_max = '1 GB'; view_max = '1 GB';}
set('djvu') {make_max = '0 GB'; view_max = '0 GB';}
set('pdf' ) {make_max = '0 GB'; view_max = '0 GB';}
set('mid' ) {make_max = '0 GB'; view_max = '0 GB';}
set('oga' ) {make_max = '0 GB'; view_max = '0 GB';}
set('ogg' ) {make_max = '0 GB'; view_max = '0 GB';}
set('ogv' ) {make_max = '0 GB'; view_max = '0 GB';}
set('webm') {make_max = '0 GB'; view_max = '0 GB';}
set('' ) {make_max = '0 GB'; view_max = '0 GB';} // '' indicates all other files
}
/*******************************************************************************
miscellaneous
********************************************************************************
------------------------------------------------------------------------------*/
app.log {
archive_dirs_max = 8;
}
app.sys_cfg.free_mem_when = '10 MB'; // empties cache when free memory is less than stated amount
app.gui.html {
auto_focus_id = ''; // id to auto-focus when page first loads; set to '' for no auto-focus or ' first_anchor' to focus first anchor (the non-conventional leading space is to create a unique key that would not collide with any valid ids)
}
/*******************************************************************************
wiki init: commons
********************************************************************************
note that commons must always be set up (since other wikis refer to its repo)
------------------------------------------------------------------------------*/
/*
defines repos across the application (app.files.repos)
- each repo is defined with three arguments
1) key user-defined key EX: src_http_commons
2) path path to images EX: https://upload.wikimedia.org/wikipedia/commons/
3) wiki_key name of wiki which has info on the file in its "File" namespace EX: commons.wikimedia.org
- other attributes can be set on a repo
fsys_: 'wnt' signifies that *, " and other invalid windows file characters in the wikimedia file name are replaced with _; necessary for windows; optional for other os's
ext_rules: key to ext_rule set; see section below
tarball: 'y' means that files are coming from extracted Wikimedia tarball on local hard-drive (as opposed to the online Wikimedia servers)
*/
app.files.repos {
set('src_http_commons', 'https://upload.wikimedia.org/wikipedia/commons/' , 'commons.wikimedia.org' ).tid_('comm').ext_rules_('img_only');
//set('src_http_commons', 'W:\wikipedia\commons\' , 'commons.wikimedia.org').fsys_('wnt').tarball_('y').ext_rules_('img_only');
set('trg_file_commons', 'commons.wikimedia.org' , 'commons.wikimedia.org' ).tid_('comm').fsys_('wnt').primary_('y');
}
/*
defines repo-pairs for a wiki. (app.wikis.get('~{wiki_key}').files.repos)
- each repo-pair is defined with two arguments
1) source_key repo_key indicating where the files are
2) target_get repo_key indicating where the files should be copied to
*/
app.wikis.get('commons.wikimedia.org').files.repos {
add('src_http_commons', 'trg_file_commons');
}
//app.wikis.get('en.wikipedia.org').files.cfg_download.redownload_('missing');
/*******************************************************************************
dynamic wiki script: all wikis
********************************************************************************
builds a script that runs when a wiki is first initialized.
Note that initialization occurs when the first article is retrieved from a wiki
(i.e.: wiki initialization does not occur at application startup.)
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'all_wikis' // user-defined key
, 'wikipedia~wiktionary~wikisource~wikibooks~wikiversity~wikiquote~wikinews~wikivoyage~wikimedia~commons~meta~species~wikidata~wikimediafoundation~mediawiki~incubator~home~other'
,
/* actual script which is executed when a wiki initializes. Note the following parameter placeholders
~{wiki_key} name of the wiki EX: 'en.wikipedia.org'
~{wiki_type_name} type name of wiki EX: 'wikipedia'
~{wiki_lang} lang key of the wiki EX: 'en'
*/
<:['
app.wikis.get('~{wiki_key}') {
files.cfg_download {
// enabled = 'n'; // y=file download enabled; n=file download disabled
redownload = 'none'; // none=never redownload file; missing=redownload file if file was missing before; all=redownload all files
}
user.name = 'Anonymous'; // set name for wiki user (appears in upper left hand corner of screen)
}
app.wikis.get('~{wiki_key}').html.portal {
div_personal =
<:["
<div id="p-personal" class="">
<h3>~{<>msgs.get('personaltools');<>}</h3>
~{portal_indicators_pagesource}
</div>
"]:>
;
div_ns =
<:["
<div id="left-navigation">
<!--NOTE: fix vertical tabs; ISSUE#:754 DATE:2020-07-02-->
<div id="p-namespaces" class="vector-menu vector-menu-tabs vectorTabs">
<h3>~{<>msgs.get('namespaces');<>}</h3>
<ul>
<li id="ca-nstab-main" class="~{portal_ns_subj_cls}"><span><a href="~{portal_ns_subj_href}" id="ca-nstab-main-href" class="xowa-hover-off"~{<>msgs.get_html_accesskey_and_title('ca-nstab-main');<>}>~{<>msgs.get('nstab-main');<>}</a></span></li>
<li id="ca-talk" class="~{portal_ns_talk_cls}"><span><a href="~{portal_ns_talk_href}" class="xowa-hover-off"~{<>msgs.get_html_accesskey_and_title('ca-talk');<>}>~{<>msgs.get('talk');<>}</a></span></li>
</ul>
</div>~{portal_div_vnts}
</div>
"]:>
;
div_view =
<:["
<div id="right-navigation">
<!--NOTE: fix vertical tabs; ISSUE#:754 DATE:2020-07-02-->
<div id="p-views" class="vector-menu vector-menu-tabs vectorTabs">
<h3>~{<>msgs.get('views');<>}</h3>
<ul>
<li id="ca-view" class="~{portal_view_read_cls}"><span><a href="~{portal_view_read_href}" class="xowa-hover-off">~{<>msgs.get('vector-view-view');<>}</a></span></li>
<li id="ca-edit" class="~{portal_view_edit_cls}"><span><a href="~{portal_view_edit_href}" class="xowa-hover-off"~{<>msgs.get_html_accesskey_and_title('ca-edit');<>}>~{<>msgs.get('vector-view-edit');<>}</a></span></li>
<li id="ca-history" class="~{portal_view_html_cls}"><span><a href="~{portal_view_html_href}" class="xowa-hover-off"~{<>msgs.get_html_accesskey_and_title('xowa-portal-view_html');<>}>~{<>msgs.get('xowa-portal-view_html');<>}</a></span></li>
</ul>
</div>
<div id="p-search" role="search">
<form id="searchform" action="/wiki/~{<>app.gui.win_opts.search_url;<>}">
<div id="simpleSearch">
<input type="search" name="search" placeholder="~{<>msgs.get('searchbutton');<>} ~{sitename}" id="searchInput"~{<>msgs.get_html_accesskey_and_title('search');<>} value="~{search_text}" autocomplete="off">
<input type="hidden" name="fulltext" value="y">
<input type="submit"~{<>msgs.get_html_accesskey_and_title('search');<>} id="mw-searchButton" class="searchButton mw-fallbackSearchButton" />
<input type="submit" name="go" value="~{<>msgs.get('go');<>}" title="~{<>msgs.get('tooltip-search-go');<>}" id="searchButton" class="searchButton" />
</div>
</form>
</li>
</div>
"]:>
;
div_logo =
<:["
<div id='p-logo'>
<a style="background-image: url(~{portal_logo_url});" href="~{portal_nav_main_href}" class='xowa-hover-off'~{<>msgs.get_html_accesskey_and_title('p-logo');<>}></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_home =
<:["
<div class="portal" id='xowa-portal-home'>
<h3>XOWA</h3>
<div class="body">
<ul>
<li><a href="/site/home/wiki/Main_Page" class='xowa-hover-off'>~{<>app.user.msgs.get('mainpage-description');<>}</a></li>
<li><a href="/site/home/wiki/Help/About" class='xowa-hover-off'>~{<>app.user.msgs.get('xowa-portal-about');<>}</a></li>
<li><a href="/site/home/wiki/Help/Contents" class='xowa-hover-off'>~{<>app.user.msgs.get('help');<>}</a></li>
<li><a href="/site/home/wiki/Special:XowaPageHistory" class='xowa-hover-off'~{<>app.user.msgs.get_html_accesskey_and_title('xowa-portal-page_history');<>}>~{<>app.user.msgs.get('xowa-portal-page_history');<>}</a></li>
<li>~{<>app.user.msgs.get('xowa-portal-bookmarks');<>}</li>
<li style='margin-left:5px;'><a href="/site/home/wiki/Special:XowaBookmarks" class='xowa-hover-off'~{<>app.user.msgs.get_html_accesskey_and_title('xowa-portal-bookmarks-show');<>}>~{<>app.user.msgs.get('xowa-portal-bookmarks-show');<>}</a></li>
<li style='margin-left:5px;'><a href="javascript:xowa.cmds.send('gfs', 'app.api.usr.bookmarks.add;');" class='xowa-hover-off'~{<>app.user.msgs.get_html_accesskey_and_title('xowa-portal-bookmarks-add');<>}>~{<>app.user.msgs.get('xowa-portal-bookmarks-add');<>}</a></li>
<li><a href="/site/home/wiki/Special:XowaCfg" class='xowa-hover-off'~{<>app.user.msgs.get_html_accesskey_and_title('xowa-portal-options');<>}>~{<>app.user.msgs.get('xowa-portal-options');<>}</a></li>
</ul>
</div>
</div>
"]:>
;
div_sync =
<:["
<div id="xowa-portal-sync" class="portal">
<h3>~{<>app.user.msgs.get('xowa-portal-sync');<>}</h3>
<div class="body">
<ul>
<li><a href="/wiki/Special:XowaSyncHtml?page=~{page_url}" class='xowa-hover-off'~{<>app.user.msgs.get_html_accesskey_and_title('xowa-portal-sync_html');<>}>~{<>app.user.msgs.get('xowa-portal-sync_html');<>}</a></li>
</ul>
</div>
</div>
<!--
-->
"]:>
;
div_wikis =
<:["
<div id="xowa-portal-wikis" class="portal">
<h3>~{toggle_btn}</h3>
<div class="body">
<ul~{toggle_hdr}>~{<>app.gui.html.portal.wikis.itms_as_html;<>}
</ul>
</div>
</div>
"]:>
;
}
app.wikis.get('~{wiki_key}').html.article {
page_read =
<:["
<!DOCTYPE html>
<html dir="~{page_lang_ltr}" class="client-js" lang="~{page_lang}">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>~{page_name} - XOWA</title>
<link rel="shortcut icon" href="~{app_root_dir}bin/any/xowa/file/app.window/app_icon.png" />
<link rel="stylesheet" href="~{html_css_common_path}" type="text/css">
<link rel="stylesheet" href="~{html_css_wiki_path}" type="text/css">
~{html_css_night_tag}<!--XOWA.SCRIPT.HEAD.TOP-->~{xowa_head}<!--XOWA.SCRIPT.HEAD.BOT-->
<link rel="stylesheet" href="~{app_root_dir}bin/any/xowa/html/res/src/xowa/find/xowa_find_html.css" type="text/css">
<script src="~{app_root_dir}bin/any/xowa/html/res/src/xowa/find/xowa_find_html.js" type='text/javascript'></script>
<style type="text/css">
div#simpleSearch #searchButton,
div#simpleSearch #mw-searchButton {
~{<>lang.x_axis_end;<>}: 0;
direction: ~{<>lang.dir_str;<>};
z-index:initial; /* reset z-index, else will show in front of popup; DATE:2015-07-31 */
}
.new {!important; color:green;}
</style>
</head>
<body class="mediawiki ~{page_lang_ltr} sitedir-~{page_lang_ltr} ~{page_body_cls} skin-vector action-submit vector-animateLayout"~{html_content_editable} spellcheck="false">
<div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body">~{page_indicators}~{page_pgbnr}
<div id='xowa_err_div' class='xowa_err' style='display:none; color:red; white-space:pre; display:block; unicode-bidi:embed;'></div>~{page_heading}
<div id="bodyContent" class="mw-body-content">
<div id="siteSub">From XOWA: the free, open-source, offline wiki application</div>
<div id="contentSub" class="visible">
<div id="contentSub2"></div>~{page_content_sub}</div>~{page_jumpto}
<div id="mw-content-text" lang="~{page_lang}" dir="~{page_lang_ltr}" class="mw-content-~{page_lang_ltr} mw-parser-output">~{page_data}
<div class="visualClear">
~{page_langs}
</div>
</div>
</div>
</div>
~{portal_div_footer}
<div id="mw-head" class="noprint">
~{portal_div_personal}
~{portal_div_ns}
~{portal_div_view}
</div>
<div id='mw-panel' class='noprint'>
~{portal_div_logo}
~{portal_div_home}
~{portal_sidebar}
~{portal_div_xtn}
~{portal_div_admin}
~{portal_div_wikis}
</div>
<div id='xo-popup-div-id' class='mw-body xo-popup-div' style='border:0px !important'></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>
<!--XOWA.SCRIPT.TAIL.TOP-->
</html>
<!-- page_id=~{page_id} -->
"]:>
;
page_edit =
<:["
<!DOCTYPE html>
<html dir="~{page_lang_ltr}" class="client-js" lang="~{page_lang}">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>~{page_name} - XOWA</title>
<link rel="shortcut icon" href="~{app_root_dir}bin/any/xowa/file/app.window/app_icon.png" />
<link rel="stylesheet" href="~{html_css_common_path}" type="text/css">
<link rel="stylesheet" href="~{html_css_wiki_path}" type="text/css">
~{html_css_night_tag}<!--XOWA.SCRIPT.HEAD.TOP-->~{xowa_head}<!--XOWA.SCRIPT.HEAD.BOT-->
<script src="~{app_root_dir}bin/any/xowa/html/res/src/xowa/edit-toolbar/edit-toolbar.js" type='text/javascript'></script>
<style type="text/css">
div#simpleSearch #searchButton,
div#simpleSearch #mw-searchButton {
~{<>lang.x_axis_end;<>}: 0;
direction: ~{<>lang.dir_str;<>};
}
</style>
<script type='text/javascript'>
~{js_edit_toolbar}
</script>
<script type='text/javascript'>
window.onload = function() {
document.body.focus();
var focus_elem_name = 'xowa_edit_data_box';
var preview_elem = document.getElementById('xowa_page_edit_preview_id');
if (preview_elem.childNodes.length > 0) {
focus_elem_name = 'firstHeading';
}
var firstElem = document.getElementById(focus_elem_name);
window.setTimeout(function(){firstElem.focus();}, 250);
}
</script>
</head>
<body class="mediawiki ~{page_lang_ltr} sitedir-~{page_lang_ltr} ~{page_body_cls} skin-vector action-submit vector-animateLayout"~{html_content_editable} spellcheck="false">
<div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body">~{page_indicators}~{page_pgbnr}
<div id='xowa_err_div' class='xowa_err'></div>~{page_heading}
<div id="bodyContent" class="mw-body-content">
<div id="siteSub">From XOWA: the free, open-source, offline wiki application</div>
<div id="contentSub" class="visible">~{page_content_sub}</div>
<div id="mw-content-text" lang="~{page_lang}" dir="~{page_lang_ltr}" class="mw-content-~{page_lang_ltr} mw-parser-output">
<div id="xowa_page_edit_preview_id">~{edit_div_preview}</div>
<form id="editform" name="editform">
<textarea id='xowa_edit_data_box' cols="80" rows="25">~{page_data}</textarea> <!-- NOTE: do not place on different line (EX: \n~{page_text}\n); textarea will interpret new line literally and page saves will include new whitespace -->
<div id="xowa_page_edit_save_id">
<a href="xowa-cmd:app.gui.main_win.page_edit_save;" class="xowa_anchor_button" style="width:100px;max-width:1024px;">~{<>msgs.get('savearticle');<>}</a>
<a href="xowa-cmd:app.gui.main_win.page_edit_preview;" class="xowa_anchor_button" style="width:100px;max-width:1024px;">~{<>msgs.get('showpreview');<>}</a>
~{edit_div_rename}
<a href="/wiki/Special:XowaPageDelete?delete=~{page_ttl_full}" onclick="return confirm('Please confirm you wish to delete this page.')" class="xowa_anchor_button" style="width:100px;max-width:1024px;">Delete page</a>
<a href="/wiki/~{page_ttl_full}" class="xowa_anchor_button" style="width:100px;max-width:1024px;">~{<>msgs.get('cancel');<>}</a>
</a>
</div>
</form>
</div>
</div>
</div>
~{portal_div_footer}
<div id="mw-head" class="noprint">
~{portal_div_personal}
~{portal_div_ns}
~{portal_div_view}
</div>
<div id='mw-panel' class='noprint'>
~{portal_div_logo}
~{portal_div_home}
~{portal_sidebar}
~{portal_div_xtn}
~{portal_div_admin}
~{portal_div_wikis}
</div>
<div id='xo-popup-div-id' class='mw-body xo-popup-div' style='border:0px !important'></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>
<!--XOWA.SCRIPT.TAIL.TOP-->
</html>
"]:>
;
page_html =
<:["
<!DOCTYPE html>
<html dir="~{page_lang_ltr}" lang="~{page_lang}">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>~{page_name} - XOWA</title>
<link rel="shortcut icon" href="~{app_root_dir}bin/any/xowa/file/app.window/app_icon.png" />
<link rel="stylesheet" href="~{html_css_common_path}" type="text/css">
<link rel="stylesheet" href="~{html_css_wiki_path}" type="text/css">
~{html_css_night_tag}<!--XOWA.SCRIPT.HEAD.TOP-->~{xowa_head}<!--XOWA.SCRIPT.HEAD.BOT-->
<style type="text/css">
div#simpleSearch #searchButton,
div#simpleSearch #mw-searchButton {
~{<>lang.x_axis_end;<>}: 0;
direction: ~{<>lang.dir_str;<>};
}
</style>
<script>
window.onload = function() {
document.body.focus();
var focus_elem_name = 'xowa_edit_data_box';
var firstElem = document.getElementById(focus_elem_name);
window.setTimeout(function(){firstElem.focus();}, 250);
}
</script>
</head>
<body class="mediawiki ~{page_lang_ltr} sitedir-~{page_lang_ltr} ~{page_body_cls} skin-vector action-submit vector-animateLayout"~{html_content_editable} spellcheck="false">
<div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body">~{page_indicators}~{page_heading}
<div id="bodyContent" class="mw-body-content">
<div id="siteSub">From XOWA: the free, open-source, offline wiki application</div>
<div id="contentSub">&nbsp;</div>
<div id="mw-content-text" lang="~{page_lang}" dir="~{page_lang_ltr}" class="mw-content-~{page_lang_ltr} mw-parser-output">
<textarea id='xowa_edit_data_box' cols="80" rows="25">~{page_data}</textarea> <!-- NOTE: do not place on different line (EX: \n~{page_text}\n); textarea will interpret new line literally and page saves will include new whitespace -->
</div>
</div>
</div>
~{portal_div_footer}
<div id="mw-head" class="noprint">
~{portal_div_personal}
~{portal_div_ns}
~{portal_div_view}
</div>
<div id='mw-panel' class='noprint'>
~{portal_div_logo}
~{portal_div_home}
~{portal_sidebar}
~{portal_div_xtn}
~{portal_div_admin}
~{portal_div_wikis}
</div>
</body>
<!--XOWA.SCRIPT.TAIL.TOP-->
</html>
"]:>
;
}
']:>
);
/*******************************************************************************
dynamic wiki script: home wiki
********************************************************************************
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'home_wiki' // user-defined key
, 'home'
,
<:['
app.wikis.get('~{wiki_key}').html.portal
.div_personal_(
<:["
<div id="p-personal" class="">
<h3>~{<>app.user.msgs.get('personaltools');<>}</h3>
</div>
"]:>
)
;
app.wikis.get('~{wiki_key}').data_mgr {
create_enabled = 'y'; // NOTE: do NOT enable create on any other wiki; it will break the wiki
update_modified_on_enabled = 'y';
}
app.wikis.get('~{wiki_key}') {
html.modules.get('top_icon').enabled = 'y';
}
']:>
);
/*******************************************************************************
dynamic wiki script: ordinary wikis
********************************************************************************
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'ordinary_wikis'
, 'wikipedia~wiktionary~wikisource~wikibooks~wikiversity~wikiquote~wikinews~wikivoyage~commons~wikidata~wikimedia~wikimediafoundation~incubator~mediawiki~home~other' // list of wiki type names; note that every wiki type is listed except for 'meta', 'species', 'home'; 'meta' and 'species' are set below
,
"
app.files.repos {
set('src_http_~{wiki_key}', 'https://upload.wikimedia.org/~{wiki_type_name}/~{wiki_lang}/' , '~{wiki_key}') .tid_('self').ext_rules_('img_only');
set('trg_file_~{wiki_key}', '~{wiki_key}' , '~{wiki_key}') .tid_('self').fsys_('wnt').primary_('y');
set('src_http_math' , 'https://wikimedia.org/api/rest_v1/media/math/render/svg/' , 'wikimedia.org/math').tid_('math');
set('trg_file_math' , 'math' , 'wikimedia.org/math').tid_('math').fsys_('wnt');
//set('src_http_~{wiki_key}', 'W:\~{wiki_type_name}\~{wiki_lang}\' , '~{wiki_key}').fsys_('wnt').tarball_('y').ext_rules_('img_only');
}
app.wikis.get('~{wiki_key}').files.repos {
add('src_http_commons' , 'trg_file_commons');
add('src_http_~{wiki_key}' , 'trg_file_~{wiki_key}');
add('src_http_math' , 'trg_file_math').repo_id_(2);
}
app.wikis.get('~{wiki_key}').commons_wiki = 'commons.wikimedia.org'; // name of commons wiki; for files, xowa checks current wiki and then commons wiki
");
/*******************************************************************************
dynamic wiki script: wikinews
********************************************************************************
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'wikinews_script'
, 'wikinews'
,
"
app.files.repos {
set('src_http_~{wiki_key}', 'https://upload.wikimedia.org/~{wiki_type_name}/~{wiki_lang}/' , '~{wiki_key}').ext_rules_('img_only');
set('trg_file_~{wiki_key}', '~{wiki_key}' , '~{wiki_key}').fsys_('wnt').primary_('y')
}
app.wikis.get('~{wiki_key}').files.repos.clear {
add('src_http_~{wiki_key}' , 'trg_file_~{wiki_key}').repo_id_(1);
add('src_http_commons' , 'trg_file_commons').repo_id_(0);
}
"
)
;
/*******************************************************************************
dynamic wiki script: wikivoyage
********************************************************************************
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'wikivoyage_script'
, 'wikivoyage~home'
,
"
app.wikis.get('~{wiki_key}').xtns.get('Listings').enabled = 'y';
app.wikis.get('~{wiki_key}').xtns.get('Insider').enabled = 'y';
app.wikis.get('~{wiki_key}').xtns.get('RelatedSites') {
enabled = 'y';
sites {
set_many('commons|wikipedia|dmoz');
}
}
"
);
/*******************************************************************************
dynamic wiki script: meta
********************************************************************************
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'meta_wiki'
, 'meta'
,
"
app.files.repos {
set('trg_file_meta' , 'meta.wikimedia.org' , 'meta.wikimedia.org' ).fsys_('wnt');
}
app.wikis.get('meta.wikimedia.org').files.repos {
add('src_http_commons', 'trg_file_commons');
}
"
)
;
/*******************************************************************************
dynamic wiki script: species
********************************************************************************
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'species_wiki'
, 'species'
,
"
app.files.repos {
set('trg_file_species', 'species.wikimedia.org' , 'species.wikimedia.org' ).fsys_('wnt').primary_('y');
}
app.wikis.get('species.wikimedia.org').files.repos {
add('src_http_commons', 'trg_file_commons');
}
"
)
;
/*******************************************************************************
dynamic wiki script: wikimediafoundation
********************************************************************************
------------------------------------------------------------------------------*/
app.wikis.scripts.set
( 'wikimediafoundation_wiki'
, 'wikimediafoundation'
,
// set wmf location to "/wikipedia/foundation/" not "/wikimediafoundation/en/"
"
app.files.repos {
set('src_http_~{wiki_key}', 'https://upload.wikimedia.org/wikipedia/foundation/' , '~{wiki_key}').ext_rules_('img_only');
set('trg_file_~{wiki_key}', '~{wiki_key}' , '~{wiki_key}').fsys_('wnt').primary_('y')
}
app.wikis.get('~{wiki_key}').files.repos.clear {
add('src_http_~{wiki_key}' , 'trg_file_~{wiki_key}').repo_id_(1);
add('src_http_commons' , 'trg_file_commons').repo_id_(0);
}
"
)
;
/*******************************************************************************
url_aliases: shortcuts for url bar; see [[Help:Address_bar/Shortcuts]]
*******************************************************************************/
// OBSOLETED: DATE:2017-03-27
// app.gui.win_opts.search_box_fmt = 'Special:AllPages?from=~{search}&namespace=0&hideredirects=0';
/*******************************************************************************
xwikis: aliases by lang
********************************************************************************
this section has two primary functions
1) assigns a display name to the language codes; for example 'en' is English
note that the name is in English. For example, 'fr' is French, not Français
2) groups the languages by tiers
note that the tiers roughly follow the groups on English Wikipedia's Main Page
------------------------------------------------------------------------------*/
app.xwiki_langs_load(
"
0|Tier 0
1|de|German
1|en|English
1|es|Spanish
1|fr|French
1|it|Italian
1|ja|Japanese
1|nl|Dutch
1|pl|Polish
1|pt|Portuguese
1|ru|Russian
0|Tier 1
1|ar|Arabic
1|ca|Catalan
1|cs|Czech
1|da|Danish
1|eo|Esperanto
1|fa|Persian
1|fi|Finnish
1|hu|Hungarian
1|id|Indonesian
1|kk|Kazakh
1|ko|Korean
1|lt|Lithuanian
1|no|Norwegian
1|ro|Romanian
1|sk|Slovak
1|sr|Serbian
1|sv|Swedish
1|tr|Turkish
1|uk|Ukrainian
1|vi|Vietnamese
1|zh|Chinese (Zhōng Wén)
0|Tier 2
1|bg|Bulgarian
1|el|Greek
1|et|Estonian
1|eu|Basque
1|gl|Galician
1|he|Hebrew
1|hr|Croatian
1|ms|Malay
1|nn|Norwegian (Nynorsk)
1|sh|Serbocroatian
1|simple|Simple English
1|sl|Slovenian
1|th|Thai
1|vo|Volapük
0|Tier 3
1|hi|Hindi
1|ia|Interlingua (IALA)
1|la|Latin
0|Others
1|aa|Afar
1|ab|Abkhaz
1|ace|Aceh
1|af|Afrikaans
1|ak|Akan
1|aln|Gheg Albanian
1|als|Alemannic
1|am|Amharic
1|an|Aragonese
1|ang|Old English
1|arc|Aramaic
1|arn|Mapudungu
1|ary|Moroccan Spoken
1|arz|Egyptian Spoken
1|as|Assamese
1|ast|Asturian
1|av|Avar
1|avk|Kotava
1|ay|Aymara
1|az|Azerbaijani
1|ba|Bashkir
1|bar|Bavarian
1|bat-smg|Samogitian
1|bcc|Southern Balochi
1|bcl|Bikol
1|be|Belarusian (norm...)
1|be-tarask|Belarusian (Tara...)
1|be-x-old|Belarusian (Tara orth...)
1|bh|Bhojpuri
1|bi|Bislama
1|bjn|Banjarese
1|bm|Bambara
1|bn|Bengali
1|bo|Tibetan
1|bpy|Bishnupriya Manipuri
1|bqi|Bakthiari
1|br|Breton
1|bs|Bosnian
1|bug|Bugis
1|bxr|Buryat
1|cbk-zam|Zamboanga Chavacano
1|cdo|Min Dong
1|ce|Chechen
1|ceb|Cebuano
1|ch|Chamorro
1|cho|Choctaw
1|chr|Cherokee
1|chy|Cheyenne
1|ckb|Sorani
1|co|Corsican
1|cps|Capiznon
1|cr|Cree
1|crh|Crimean Tatar
1|crh-cyrl|Crimean Tatar (Cyrillic)
1|crh-latn|Crimean Tatar (Latin)
1|csb|Cassubian
1|cu|Old Church Slavonic
1|cv|Chuvash
1|cy|Welsh
1|de-at|Austrian German
1|de-ch|Swiss Standard German
1|de-formal|German - formal
1|diq|Zazaki
1|dsb|Lower Sorbian
1|dv|Dhivehi
1|dz|Bhutani
1|ee|Éwé
1|eml|Emiliano-Romagnolo
1|en-gb|British English
1|ext|Extremaduran
1|ff|Fulfulde
1|fiu-vro|Võro
1|fj|Fijian
1|fo|Faroese
1|frc|Cajun French
1|frp|Arpitan
1|frr|North Frisian
1|fur|Friulian
1|fy|Frisian
1|ga|Irish
1|gag|Gagauz
1|gan|Gan
1|gan-hans|Gan (Simplified Han)
1|gan-hant|Gan (Traditional Han)
1|gd|Scots Gaelic
1|glk|Gilaki
1|gn|Guaraní
1|got|Gothic
1|grc|Ancient Greek
1|gsw|Alemannic
1|gu|Gujarati
1|gv|Manx
1|ha|Hausa
1|hak|Hakka
1|haw|Hawaiian
1|hif|Fijian Hindi
1|hif-latn|Fiji Hindi (latin)
1|hil|Hiligaynon
1|ho|Hiri Motu
1|hsb|Upper Sorbian
1|ht|Haitian Creole
1|hy|Armenian
1|hz|Herero
1|ie|Interlingue (Occidental)
1|ig|Igbo
1|ii|Sichuan Yi
1|ik|Inupiak
1|ike-cans|Inuktitut
1|ike-latn|Inuktitut (Latin script)
1|ilo|Ilokano
1|inh|Ingush
1|io|Ido
1|is|Icelandic
1|iu|Inuktitut
1|jbo|Lojban
1|jut|Jutish
1|jv|Javanese
1|ka|Georgian
1|kaa|Karakalpak
1|kab|Kabyle
1|kbd|Kabardian
1|kbd-cyrl|Kabardian (Cyrillic)
1|kg|Kongo
1|ki|Gikuyu
1|kiu|Kirmanjki
1|kj|Kwanyama
1|kk-arab|Kazakh Arabic
1|kk-cn|Kazakh (China)
1|kk-cyrl|Kazakh Cyrillic
1|kk-kz|Kazakh (Kazakhstan)
1|kk-latn|Kazakh Latin
1|kk-tr|Kazakh (Turkey)
1|kl|Inuktitut, Greenlandic
1|km|Khmer, Central
1|kn|Kannada
1|ko-kp|Korean (DPRK)
1|koi|Komi-Permyak
1|kr|Kanuri, Central
1|krc|Karachay-Balkar
1|kri|Krio
1|krj|Kinaray-a
1|ks|Kashmiri
1|ksh|Ripuarian
1|ku|Kurdish
1|ku-arab|Northern Kurdish
1|ku-latn|Northern Kurdish (Latin)
1|kv|Komi-Zyrian (Cyrillic)
1|kw|Cornish
1|ky|Kirghiz
1|lad|Ladino
1|lb|Luxemburguish
1|lbe|Lak
1|lez|Lezgi
1|lfn|Lingua Franca Nova
1|lg|Ganda
1|li|Limburgian
1|lij|Ligurian
1|lmo|Lombard
1|ln|Lingala
1|lo|Laotian
1|loz|Lozi
1|ltg|Latgalian
1|lv|Latvian
1|lzh|Literary Chinese
1|lzz|Laz
1|mai|Maithili
1|map-bms|Banyumasan
1|mdf|Moksha
1|mg|Malagasy
1|mh|Marshallese
1|mhr|Eastern Mari
1|mi|Maori
1|min|Minangkabau
1|mk|Macedonian
1|ml|Malayalam
1|mn|Halh Mongolian (Cyrillic)
1|mo|Moldovan
1|mr|Marathi
1|mrj|Hill Mari
1|mt|Maltese
1|mus|Muskogee/Creek
1|mwl|Mirandese
1|my|Burmese
1|myv|Erzya
1|mzn|Mazanderani
1|na|Nauruan
1|nah|Nahuatl
1|nan|Min-nan
1|nap|Neapolitan
1|nb|Norwegian (Bokmal)
1|nds|Low German
1|nds-nl|Dutch Low Saxon
1|ne|Nepali
1|new|Newar / Nepal Bhasa
1|ng|Ndonga
1|niu|Niuean
1|nl-informal|Dutch (informal)
1|nov|Novial
1|nrm|Norman
1|nso|Northern Sotho
1|nv|Navajo
1|ny|Chichewa
1|oc|Occitan
1|om|Oromo
1|or|Oriya
1|os|Ossetic
1|pa|Punjabi
1|pag|Pangasinan
1|pam|Pampanga
1|pap|Papiamentu
1|pcd|Picard
1|pdc|Pennsylvania German
1|pdt|Plautdietsch
1|pfl|Palatinate German
1|pi|Pali
1|pih|Norfuk/Pitcairn
1|pms|Piedmontese
1|pnb|Western Punjabi
1|pnt|Pontic Greek
1|prg|Prussian
1|ps|Pashto
1|pt-br|Brazilian Portuguese
1|qu|Quechua
1|rgn|Romagnol
1|rif|Tarifit
1|rm|Raeto-Romance
1|rmy|Vlax Romany
1|rn|Kirundi
1|roa-rup|Aromanian
1|roa-tara|Tarantino
1|rue|Rusyn
1|ruq|Megleno-Romanian
1|ruq-cyrl|Megleno-Romanian (Cyrillic)
1|ruq-latn|Megleno-Romanian (Latin)
1|rw|Kinyarwanda
1|sa|Sanskrit
1|sah|Sakha
1|sc|Sardinian
1|scn|Sicilian
1|sco|Scots
1|sd|Sindhi
1|sdc|Sassarese
1|se|Northern Sami
1|sei|Seri
1|sg|Sango/Sangho
1|sgs|Samogitian
1|shi|Tachelhit
1|si|Sinhalese
1|sli|Lower Selisian
1|sm|Samoan
1|sma|Southern Sami
1|sn|Shona
1|so|Somali
1|sq|Albanian
1|sr-ec|Serbian Cyrillic
1|sr-el|Serbian Latin
1|srn|Sranan Tongo
1|ss|Swati
1|st|Southern Sotho
1|stq|Saterland Frisian
1|su|Sundanese
1|sw|Swahili
1|szl|Silesian
1|ta|Tamil
1|tcy|Tulu
1|te|Telugu
1|tet|Tetun
1|tg|Tajiki
1|tg-cyrl|Tajiki (Cyrllic)
1|tg-latn|Tajiki (Latin)
1|ti|Tigrinya
1|tk|Turkmen
1|tl|Tagalog
1|tn|Setswana
1|to|Tonga
1|tokipona|Toki Pona
1|tp|Toki Pona (non-standard)
1|tpi|Tok Pisin
1|ts|Tsonga
1|tt|Tatar
1|tt-cyrl|Tatar (Cyrillic script)
1|tt-latn|Tatar (Latin script)
1|tum|Tumbuka
1|tw|Twi
1|ty|Tahitian
1|tyv|Tyvan
1|udm|Udmurt
1|ug|Uyghur
1|ug-arab|Uyghur (Arabic script)
1|ug-latn|Uyghur (Latin script)
1|ur|Urdu
1|uz|Uzbek
1|ve|Venda
1|vec|Venetian
1|vep|Veps
1|vls|West Flemish
1|vmf|Upper Franconian
1|vot|Vod
1|vro|Võro
1|wa|Walloon
1|war|Waray-Waray
1|wo|Wolof
1|wuu|Wu Chinese
1|xal|Kalmyk-Oirat
1|xh|Xhosan
1|xmf|Mingrelian
1|yi|Yiddish
1|yo|Yoruba
1|yue|Cantonese
1|za|Zhuang
1|zea|Zeeuws/Zeaws
1|zh-classical|Classical Chinese
1|zh-cn|Chinese (PRC)
1|zh-hans|Mandarin Chinese (Simplified)
1|zh-hant|Mandarin Chinese (Traditional)
1|zh-hk|Chinese (Hong Kong)
1|zh-min-nan|Min-nan
1|zh-mo|Chinese (Macau)
1|zh-my|Chinese (Malaysia)
1|zh-sg|Chinese (Singapore)
1|zh-tw|Chinese (Taiwan)
1|zh-yue|Cantonese
1|zu|Zulu
"
);