From 1a4ca00c0b1fbb86ad0c4d7a27356d2a4774ba18 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Mon, 27 Jun 2016 15:39:55 -0400 Subject: [PATCH] 'v3.6.4.2' --- 400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java | 5 ++ 400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java | 4 ++ 400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java | 6 +++ 400_xowa/src/gplx/langs/htmls/Gfh_tag_.java | 54 ++++++++++++++----- 400_xowa/src/gplx/xowa/Xoa_app_.java | 2 +- 400_xowa/src/gplx/xowa/Xow_wiki.java | 1 + 400_xowa/src/gplx/xowa/Xowe_wiki.java | 14 +++-- .../centrals/dbs/datas/Xobc_step_map_tbl.java | 2 +- .../dbs/users/Xobc_work_task_tbl.java | 1 + .../bldrs/centrals/tasks/Xobc_task_itm.java | 3 +- .../centrals/tasks/Xobc_task_regy__base.java | 1 + .../src/gplx/xowa/files/Xow_file_mgr.java | 6 ++- .../src/gplx/xowa/files/bins/Xof_bin_mgr.java | 3 ++ .../gplx/xowa/files/fsdb/Xof_fsdb_mgr.java | 1 + .../xowa/files/fsdb/Xof_fsdb_mgr__sql.java | 4 ++ .../src/gplx/xowa/htmls/tocs/Xoh_toc_wtr.java | 21 ++++---- .../htmls/tocs/Xoh_toc_wtr__anch__tst.java | 36 +++++++++++++ ...r_tst.java => Xoh_toc_wtr__keep__tst.java} | 44 +++------------ .../htmls/tocs/Xoh_toc_wtr__nest__tst.java | 34 ++++++++++++ .../htmls/tocs/Xoh_toc_wtr__skip__tst.java | 52 ++++++++++++++++++ .../src/gplx/xowa/wikis/Xoa_wiki_mgr_.java | 14 +++-- 400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java | 4 ++ .../gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java | 6 +-- 23 files changed, 245 insertions(+), 73 deletions(-) create mode 100644 400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__anch__tst.java rename 400_xowa/src/gplx/xowa/htmls/tocs/{Xoh_toc_wtr_tst.java => Xoh_toc_wtr__keep__tst.java} (60%) create mode 100644 400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__nest__tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__skip__tst.java diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java index 7ebd27d93..8ab218258 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java @@ -62,4 +62,9 @@ public class Fsm_bin_mgr { for (int i = 0; i < len; ++i) this.Dbs__get_at(i).Conn().Txn_end(); } + public void Rls() { + int len = db_hash.Len(); + for (int i = 0; i < len; ++i) + this.Dbs__get_at(i).Conn().Rls_conn(); + } } diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java index 6e8c40768..b5879ef40 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java @@ -57,6 +57,10 @@ public class Fsm_mnt_itm { } public void Txn_bgn() {atr_mgr.Txn_bgn(); bin_mgr.Txn_bgn();} public void Txn_end() {atr_mgr.Txn_end(); bin_mgr.Txn_end();} + public void Rls() { + atr_mgr.Db__core().Conn().Rls_conn(); + bin_mgr.Rls(); + } } class Fsm_mnt_itm_ { public static void Patch_next_id(Fsm_mnt_itm abc_mgr, String name) { diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java index d746d8284..7944489f7 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java @@ -41,6 +41,12 @@ public class Fsm_mnt_mgr implements Gfo_invk { public Fsm_mnt_itm Mnts__get_insert() {return mnt_ary[insert_idx];} public void Mnts__get_insert_idx_(int v) {insert_idx = v;} private int insert_idx = Mnt_idx_user; public Fsm_bin_fil Bins__at(int mnt_id, int bin_db_id) {return mnt_ary[mnt_id].Bin_mgr().Dbs__get_by_or_null(bin_db_id);} public int Patch_upright() {return patch_upright_tid;} private int patch_upright_tid = Xof_patch_upright_tid_.Tid_all; + public void Rls() { + for (int i = 0; i < mnt_ary_len; ++i) { + Fsm_mnt_itm mnt = mnt_ary[i]; + mnt.Rls(); + } + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} public static final int Mnt_idx_main = 0, Mnt_idx_user = 1, Insert_to_bin_null = -1; public static void Patch(Db_cfg_tbl cfg_tbl) { diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java b/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java index a8d4b54a8..46a7d567a 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java @@ -16,12 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.htmls; import gplx.*; import gplx.langs.*; -public class Gfh_tag_ { +public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr public static final int Id__comment = -3 , Id__eos = -2 , Id__any = -1 , Id__unknown = 0 + , Id__h1 = 1 , Id__h2 = 2 , Id__h3 = 3 , Id__h4 = 4 @@ -32,16 +33,25 @@ public class Gfh_tag_ { , Id__div = 9 , Id__img = 10 , Id__ul = 11 - , Id__li = 12 - , Id__p = 13 - , Id__br = 14 - , Id__hr = 15 - , Id__td = 16 - , Id__pre = 17 - , Id__small = 18 - , Id__i = 19 - , Id__b = 20 - , Id__sup = 21 + , Id__ol = 12 + , Id__li = 13 + , Id__dd = 14 + , Id__dt = 15 + , Id__p = 16 + , Id__br = 17 + , Id__hr = 18 + , Id__table = 19 + , Id__tr = 20 + , Id__td = 21 + , Id__th = 22 + , Id__thead = 23 + , Id__tbody = 24 + , Id__caption = 25 + , Id__pre = 26 + , Id__small = 27 + , Id__i = 28 + , Id__b = 29 + , Id__sup = 30 ; public static final byte[] Bry__a = Bry_.new_a7("a") @@ -55,6 +65,7 @@ public class Gfh_tag_ { ; public static final Hash_adp_bry Hash = Hash_adp_bry.ci_a7() .Add_bry_int(Bry__a , Id__a) + .Add_str_int("h1" , Id__h1) .Add_str_int("h2" , Id__h2) .Add_str_int("h3" , Id__h3) .Add_str_int("h4" , Id__h4) @@ -66,8 +77,17 @@ public class Gfh_tag_ { .Add_str_int("br" , Id__br) .Add_str_int("hr" , Id__hr) .Add_str_int("ul" , Id__ul) + .Add_str_int("ol" , Id__ol) .Add_str_int("li" , Id__li) + .Add_str_int("dd" , Id__dd) + .Add_str_int("dt" , Id__dt) + .Add_str_int("table" , Id__table) + .Add_str_int("tr" , Id__tr) .Add_str_int("td" , Id__td) + .Add_str_int("th" , Id__th) + .Add_str_int("thead" , Id__thead) + .Add_str_int("tbody" , Id__tbody) + .Add_str_int("caption" , Id__caption) .Add_str_int("p" , Id__p) .Add_str_int("pre" , Id__pre) .Add_str_int("small" , Id__small) @@ -81,6 +101,7 @@ public class Gfh_tag_ { case Id__any: return "any"; case Id__unknown: return "unknown"; case Id__comment: return "comment"; + case Id__h1: return "h1"; case Id__h2: return "h2"; case Id__h3: return "h2"; case Id__h4: return "h2"; @@ -93,9 +114,18 @@ public class Gfh_tag_ { case Id__p: return "p"; case Id__br: return "br"; case Id__hr: return "hr"; - case Id__td: return "td"; case Id__ul: return "ul"; + case Id__ol: return "ol"; case Id__li: return "li"; + case Id__dd: return "dd"; + case Id__dt: return "dt"; + case Id__table: return "table"; + case Id__tr: return "tr"; + case Id__td: return "td"; + case Id__th: return "th"; + case Id__thead: return "thead"; + case Id__tbody: return "tbody"; + case Id__caption: return "caption"; case Id__pre: return "pre"; case Id__small: return "small"; case Id__i: return "i"; diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index b2fd36489..9d7690694 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -34,7 +34,7 @@ public class Xoa_app_ { } } public static final String Name = "xowa"; - public static final String Version = "3.6.4.1"; + public static final String Version = "3.6.4.2"; public static String Build_date = "2012-12-30 00:00:00"; public static String Op_sys_str; public static String User_agent = ""; diff --git a/400_xowa/src/gplx/xowa/Xow_wiki.java b/400_xowa/src/gplx/xowa/Xow_wiki.java index 5fb993278..7bd99abdc 100644 --- a/400_xowa/src/gplx/xowa/Xow_wiki.java +++ b/400_xowa/src/gplx/xowa/Xow_wiki.java @@ -54,4 +54,5 @@ public interface Xow_wiki extends Xow_ttl_parser, Gfo_invk { Xow_url_parser Utl__url_parser(); Xoax_addon_mgr Addon_mgr(); void Init_needed_y_(); + void Rls(); } diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index f2a6a0662..cf3771674 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.java @@ -218,12 +218,16 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm { app.Site_cfg_mgr().Load(this); } public void Rls() { - if (rls_list == null) return; - int len = rls_list.Count(); - for (int i = 0; i < len; i++) { - Rls_able rls = (Rls_able)rls_list.Get_at(i); - rls.Rls(); + if (rls_list != null) { + int len = rls_list.Count(); + for (int i = 0; i < len; i++) { + Rls_able rls = (Rls_able)rls_list.Get_at(i); + rls.Rls(); + } } + Xow_db_mgr core_db_mgr = this.Data__core_mgr(); + if (core_db_mgr != null) core_db_mgr.Rls(); + file_mgr.Rls(); } public void Init_needed_y_() {this.init_needed = true;} private void Copy_cfg(Xowe_wiki wiki) {html_mgr.Copy_cfg(wiki.Html_mgr());} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_tbl.java index 42ba092a6..3d7c84dd6 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_tbl.java @@ -70,7 +70,7 @@ public class Xobc_step_map_tbl implements Db_tbl { } public List_adp Select_all(int task_id) { List_adp rv = List_adp_.New(); - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_task_id).Crt_int(fld_task_id, task_id).Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, String_.Ary(fld_task_id), fld_step_seqn).Crt_int(fld_task_id, task_id).Exec_select__rls_auto(); try { while (rdr.Move_next()) { rv.Add(rdr.Read_int("step_id")); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_work_task_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_work_task_tbl.java index ed9c5387b..55ec9e0d8 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_work_task_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_work_task_tbl.java @@ -53,6 +53,7 @@ public class Xobc_work_task_tbl implements Db_tbl { task.Task_status_(cmd_id == Xobc_cmd__base.Seqn__0 ? gplx.core.progs.Gfo_prog_ui_.Status__init : gplx.core.progs.Gfo_prog_ui_.Status__working); task_mgr.Step_mgr().Load(task, step_id, cmd_id); } + work_regy.Sort(); } finally {rdr.Rls();} } public void Insert(int task_id, int task_seqn, int step_id, int cmd_id) { diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_itm.java index bcd1b61e2..a3eeb94b6 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_itm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_itm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.addons.bldrs.centrals.tasks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.core.gfobjs.*; import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.steps.*; -public class Xobc_task_itm { +public class Xobc_task_itm implements gplx.CompareAble { public Xobc_task_itm(int task_id, int task_seqn, int step_count, String task_key, String task_name) { this.task_id = task_id; this.task_seqn = task_seqn; this.step_count = step_count; @@ -35,6 +35,7 @@ public class Xobc_task_itm { public boolean Step_is_last() {return step.Step_seqn() == step_count - 1;} public void Task_status_(byte v) {task_status = v;} // called when task moves from init -> working -> suspended -> done public void Task_seqn_(int v) {this.task_seqn = v;} // called when task is init'd from db, or added to list + public int compareTo(Object obj) {Xobc_task_itm comp = (Xobc_task_itm)obj; return Int_.Compare(task_seqn, comp.task_seqn);} public Gfobj_nde Save_to(Gfobj_nde nde) { nde.Add_int ("task_id" , task_id); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java index 6b956e919..a6c604999 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java @@ -28,6 +28,7 @@ public abstract class Xobc_task_regy__base { public Xobc_task_itm Get_at(int i) {return (Xobc_task_itm)hash.Get_at(i);} public Xobc_task_itm Get_by(int i) {return (Xobc_task_itm)hash.Get_by(i);} public void Del_by(int i) {hash.Del(i);} + public void Sort() {hash.Sort();} public void Save_to(Gfobj_ary ary) { int len = hash.Len(); diff --git a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java index 4dbd4839f..a600cb757 100644 --- a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java @@ -56,7 +56,7 @@ public class Xow_file_mgr implements Gfo_invk { public void Version_1_y_() {version = Version_1;} // TEST: public void Version_2_y_() {version = Version_2;} // TEST: public void Fsdb_mgr_(Xof_fsdb_mgr fsdb_mgr) { - this.fsdb_mgr = fsdb_mgr; + this.fsdb_mgr = fsdb_mgr; version = Version_2; } public int Patch_upright() { @@ -131,6 +131,10 @@ public class Xow_file_mgr implements Gfo_invk { orig_mgr.Init_by_wiki(wiki, fsdb_mode, db_core.File__orig_tbl_ary(), Xof_url_bldr.new_v2()); fsdb_mgr.Init_by_wiki(wiki); } + public void Rls() { + fsdb_mgr.Rls(); + db_core = null; + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_repos)) return repo_mgr; diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java index b64ab6bea..e4f8c2919 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java @@ -54,6 +54,9 @@ public class Xof_bin_mgr { } return null; } + public void Rls() { + mnt_mgr.Rls(); + } public boolean Find_to_url_as_bool(int exec_tid, Xof_fsdb_itm fsdb) {return Find_as(Bool_.Y, rdr_wrapper, exec_tid, fsdb);} // public boolean Find_to_url_as_bool3(int exec_tid, Xof_fsdb_itm fsdb) {return Find_to_url(exec_tid, fsdb) != Io_url_.Empty;} // private Io_url Find_to_url(int exec_tid, Xof_fsdb_itm fsdb) { diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java index 4b369afc2..df532b1e8 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java @@ -23,4 +23,5 @@ public interface Xof_fsdb_mgr { Fsm_mnt_mgr Mnt_mgr(); void Init_by_wiki(Xow_wiki wiki); void Fsdb_search_by_list(List_adp itms, Xow_wiki wiki, Xoa_page page, Xog_js_wkr js_wkr); + void Rls(); } diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java index 38f1050f8..219d99b4e 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java @@ -62,6 +62,10 @@ public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, Gfo_invk { Xof_file_wkr.Show_img(fsdb, usr_dlg, wiki.File__bin_mgr(), wiki.File__mnt_mgr(), cache_mgr, wiki.File__repo_mgr(), js_wkr, img_size, url_bldr, page); } } + public void Rls() { + if (bin_mgr != null) bin_mgr.Rls(); + init = false; + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_mnt_mgr)) return mnt_mgr; else return Gfo_invk_.Rv_unhandled; diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr.java index df40d8f6c..9daf17f74 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr.java @@ -67,8 +67,18 @@ class Xoh_toc_wtr { switch (tag_id) { case Gfh_tag_.Id__eos: // eos; return; return; - case Gfh_tag_.Id__i: // always print tag - case Gfh_tag_.Id__b: + case Gfh_tag_.Id__comment: // never print tag + case Gfh_tag_.Id__img: + case Gfh_tag_.Id__br: case Gfh_tag_.Id__hr: // always ignore in TOC text; EX: en.wikipedia.org/wiki/Magnetic_resonance_imaging; ====''T''*
2
-weighted MRI==== + case Gfh_tag_.Id__h1: case Gfh_tag_.Id__h2: case Gfh_tag_.Id__h3: case Gfh_tag_.Id__h4: case Gfh_tag_.Id__h5: case Gfh_tag_.Id__h6: + case Gfh_tag_.Id__ul: case Gfh_tag_.Id__ol: case Gfh_tag_.Id__dd: case Gfh_tag_.Id__dt: case Gfh_tag_.Id__li: + case Gfh_tag_.Id__table: case Gfh_tag_.Id__tr: case Gfh_tag_.Id__td: case Gfh_tag_.Id__th: case Gfh_tag_.Id__thead: case Gfh_tag_.Id__tbody: case Gfh_tag_.Id__caption: + // case Gfh_tag_.Id__ref: // NOTE: don't bother printing references; NOTE: should never show up + print_tag = false; + recurse = false; + break; + case Gfh_tag_.Id__b: // always print tag + case Gfh_tag_.Id__i: print_tag = true; break; case Gfh_tag_.Id__small: // only print tag if not nested @@ -79,13 +89,6 @@ class Xoh_toc_wtr { print_tag = true; break; } - case Gfh_tag_.Id__comment: // never print tag - case Gfh_tag_.Id__img: - case Gfh_tag_.Id__br: - case Gfh_tag_.Id__hr: - print_tag = false; - recurse = false; - break; case Gfh_tag_.Id__a: // a never prints tag; also, also, do not recurse if ref print_tag = false; byte[] href_val = lhs.Atrs__get_as_bry(Gfh_atr_.Bry__href); diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__anch__tst.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__anch__tst.java new file mode 100644 index 000000000..e5ce004e4 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__anch__tst.java @@ -0,0 +1,36 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.core.tests.*; +public class Xoh_toc_wtr__anch__tst { + @Before public void init() {fxt.Clear();} private final Xoh_toc_wtr_fxt fxt = new Xoh_toc_wtr_fxt(); + @Test public void Caption() { + fxt.Test__convert("b", "b"); + } + @Test public void Ref() { // PURPOSE: ref contents should not print in TOC; DATE:2013-07-23 + fxt.Test__convert("a[1]", "a"); + } + @Test public void Category() { // PURPOSE: literal Category should show in in TOC; EX: de.w:1234; DATE:2014-01-21 + fxt.Test__convert("ACategory:B", "ACategory:B"); + } + @Test public void File() { // PURPOSE: file should not show in in TOC; EX: tr.w:D�nya_Miraslari; DATE:2014-06-06 + fxt.Test__convert + ( "\"\" b" + , "b"); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__keep__tst.java similarity index 60% rename from 400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__keep__tst.java index b3a761a7a..949d82030 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__keep__tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.core.tests.*; -public class Xoh_toc_wtr_tst { +public class Xoh_toc_wtr__keep__tst { @Before public void init() {fxt.Clear();} private final Xoh_toc_wtr_fxt fxt = new Xoh_toc_wtr_fxt(); @Test public void Basic() { fxt.Test__convert("a b c", "a b c"); @@ -25,39 +25,15 @@ public class Xoh_toc_wtr_tst { @Test public void Ws() { fxt.Test__convert(" a b ", "a b"); } - @Test public void Comment() { - fxt.Test__convert("", ""); - } - @Test public void Comment__many() { - fxt.Test__convert("135", "135"); - } - @Test public void Comment__dangling() { - fxt.Test__convert("13ac", "ac"); - } } class Xoh_toc_wtr_fxt { private final Xoh_toc_wtr wtr = new Xoh_toc_wtr(); diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__nest__tst.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__nest__tst.java new file mode 100644 index 000000000..cd95fdb52 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__nest__tst.java @@ -0,0 +1,34 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.core.tests.*; +public class Xoh_toc_wtr__nest__tst { + @Before public void init() {fxt.Clear();} private final Xoh_toc_wtr_fxt fxt = new Xoh_toc_wtr_fxt(); + @Test public void Xnde__xnde() { // removed but not + fxt.Test__convert("a bcd e", "a bcd e"); + } + @Test public void Xnde__inline() { // PURPOSE: do not render inline xndes; EX: Magnetic_resonance_imaging + fxt.Test__convert("ab
", "ab"); + } + @Test public void Xnde__lnki() { // and removed + fxt.Test__convert("b", "b"); + } + @Test public void Lnki__xnde() { + fxt.Test__convert("bcd", "bcd"); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__skip__tst.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__skip__tst.java new file mode 100644 index 000000000..feaa542ad --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wtr__skip__tst.java @@ -0,0 +1,52 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.core.tests.*; +public class Xoh_toc_wtr__skip__tst { + @Before public void init() {fxt.Clear();} private final Xoh_toc_wtr_fxt fxt = new Xoh_toc_wtr_fxt(); + @Test public void Comment() { + fxt.Test__convert("", ""); + } + @Test public void Comment__many() { + fxt.Test__convert("135", "135"); + } + @Test public void Comment__dangling() { + fxt.Test__convert("13ac", "ac"); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java index e8d2665ce..5f13864ba 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java @@ -26,11 +26,19 @@ public class Xoa_wiki_mgr_ { Io_url wiki_root_dir = url.OwnerDir(); Xow_wiki rv = wiki_mgr.Make(wiki_domain, wiki_root_dir); wiki_mgr.Add(rv); - rv.Init_by_wiki(); // must init for Modified_latest + rv.Init_by_wiki(); // must init for Modified_latest String wiki_date = rv.Props().Modified_latest__yyyy_MM_dd(); app.User().User_db_mgr().Site_mgr().Import(rv.Domain_str(), rv.Domain_str(), wiki_root_dir.Raw(), wiki_date, ""); - conn.Rls_conn(); - rv.Init_needed_y_(); // rls wiki else noop connection will hang around + if (app.Tid_is_edit()) { + // get_or_new wiki and mark it offline so it can show up in wikis sidebar + gplx.xowa.wikis.xwikis.Xow_xwiki_itm xwiki = app.User().Wikii().Xwiki_mgr().Get_by_key(wiki_domain); + if (xwiki == null) + xwiki = app.User().Wikii().Xwiki_mgr().Add_by_atrs(wiki_domain, wiki_domain); + xwiki.Offline_(true); + ((Xoae_app)app).Gui_mgr().Html_mgr().Portal_mgr().Wikis().Itms_reset(); // dirty wiki list so that next refresh will load itm + } + rv.Rls(); // rls wiki, else open connections will cause later file copies to fail; DATE:2016-06-26 + rv.Init_needed_y_(); // mark Init_needed_y_(), else wiki may have NOOP connection which will hang around on next release return rv; } public static final String Invk__import_by_url = "import_by_url"; diff --git a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java index 1106e04ff..4928ecea2 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java +++ b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java @@ -106,6 +106,10 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk { data_mgr__core_mgr.Init_by_make(props, info_session); html__hdump_mgr.Init_by_db(this); } + public void Rls() { + data_mgr__core_mgr.Rls(); + fsdb_mgr.Rls(); + } public void Pages_get(Xoh_page rv, Gfo_url url, Xoa_ttl ttl) { if (init_needed) Init_by_wiki(); if (ttl.Ns().Id_is_special()) diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java index 05b135a62..279fb4480 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java @@ -20,8 +20,8 @@ import gplx.core.net.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; public class Xow_xwiki_mgr { - private final Ordered_hash list = Ordered_hash_.New_bry(); private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); - private final Xow_wiki wiki; + private final Ordered_hash list = Ordered_hash_.New_bry(); private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); + private final Xow_wiki wiki; public Xow_xwiki_mgr(Xow_wiki wiki) { this.wiki = wiki; this.xwiki_domain_tid = Xwiki_tid(wiki.Domain_tid()); @@ -88,5 +88,5 @@ public class Xow_xwiki_mgr { return url.Segs__get_at_1st(); } public static byte[] Bld_url_fmt(byte[] domain_bry) {return Bry_.Add(gplx.core.net.Gfo_protocol_itm.Itm_https.Text_bry(), domain_bry, Bry__url_fmt_end);} - private static final byte[] Bry__url_fmt_end = Bry_.new_a7("/wiki/~{0}"); + private static final byte[] Bry__url_fmt_end = Bry_.new_a7("/wiki/~{0}"); }