diff --git a/400_xowa/src/gplx/xowa/Xoa_url.java b/400_xowa/src/gplx/xowa/Xoa_url.java
index ffb5fd21a..063b7ecae 100644
--- a/400_xowa/src/gplx/xowa/Xoa_url.java
+++ b/400_xowa/src/gplx/xowa/Xoa_url.java
@@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*;
import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.apps.urls.*;
import gplx.xowa.htmls.hrefs.*;
public class Xoa_url {
- public int Tid() {return tid;} private int tid;
+ public int Tid() {return tid;} public void Tid_(int v) {this.tid = v;} private int tid;
public byte[] Raw() {return raw;} private byte[] raw = Bry_.Empty;
public byte[] Orig() {return orig;} private byte[] orig;
public byte[] Wiki_bry() {return wiki_bry;} public Xoa_url Wiki_bry_(byte[] v) {wiki_bry = v; return this;} private byte[] wiki_bry;
diff --git a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser.java
index a0d9a743c..0d8586587 100644
--- a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser.java
+++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser.java
@@ -70,6 +70,9 @@ public class Xoh_href_parser {
}
}
rv.Page_bry_(tmp_page);
+ if (tmp_page == null) { // handle xwiki lnke's to history page else null ref; EX:[http://ru.wikipedia.org/w/index.php?title&diff=19103464&oldid=18910980 ???????]; PAGE:ru.w:Project:??????_??_??????_??????/?????/?????????????/2009 DATE:2016-11-24
+ rv.Tid_(Xoa_url_.Tid_inet);
+ }
break;
}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java
index 5c5d60890..6313f8b5c 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java
@@ -176,12 +176,17 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr {
byte[] xwiki_wiki = xo_url_parser_url.Wiki_bry();
byte[] xwiki_page = xo_url_parser_url.Page_bry();
- Xoa_ttl ttl = Xoa_ttl.Parse(wiki, xwiki_page);
- if (ttl != null && ttl.Wik_itm() != null) {
- xwiki_wiki = ttl.Wik_itm().Domain_bry();
- xwiki_page = ttl.Page_url();
+ if (xwiki_page == null) { // handle xwiki lnke's to history page else null ref; EX:[http://ru.wikipedia.org/w/index.php?title&diff=19103464&oldid=18910980 извещен]; PAGE:ru.w:Project:Заявки_на_снятие_флагов/Архив/Патрулирующие/2009 DATE:2016-11-24
+ xwiki_page = decoded_src;
+ }
+ else {
+ Xoa_ttl ttl = Xoa_ttl.Parse(wiki, xwiki_page);
+ if (ttl != null && ttl.Wik_itm() != null) {
+ xwiki_wiki = ttl.Wik_itm().Domain_bry();
+ xwiki_page = ttl.Page_url();
+ }
+ tkn.Lnke_xwiki_(xwiki_wiki, xwiki_page, xo_url_parser_url.Qargs_ary());
}
- tkn.Lnke_xwiki_(xwiki_wiki, xwiki_page, xo_url_parser_url.Qargs_ary());
}
ctx.Subs_add(root, tkn);
if (lnke_type == Xop_lnke_tkn.Lnke_typ_brack) {
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java
index b87a64ed1..a9cdc3e50 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java
@@ -40,6 +40,10 @@ public class Xop_lnke_wkr_xwiki_tst {
fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org"));
fxt.Test__parse__wtxt_to_html("[http://en.wikipedia.org/wiki/A?action=edit a]", "a");
}
+ @Test public void Xwiki__history() { // PURPOSE: handle xwiki lnke's to history page else null ref; EX:[http://ru.wikipedia.org/w/index.php?title&diff=19103464&oldid=18910980 извещен]; PAGE:ru.w:Project:Заявки_на_снятие_флагов/Архив/Патрулирующие/2009 DATE:2016-11-24
+ fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org"));
+ fxt.Test__parse__wtxt_to_html("[http://en.wikipedia.org/w/index.php?title&diff=1&oldid=2 abc]", "abc");
+ }
@Test public void Ignore_proto() { // PURPOSE: handle other protocols; PAGE:uk.w:Маскалі; DATE:2015-07-28
fxt.Test__parse__wtxt_to_html("[mailto:a b]", "b");// should be /w/, not /en.wikipedia.org
}