diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_cfg_.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_cfg_.java
new file mode 100644
index 000000000..18c43996f
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_cfg_.java
@@ -0,0 +1,25 @@
+/*
+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.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
+public class Xowdir_wiki_cfg_ {
+ public static final String
+ Key__domain = "xowa.wiki.core.domain"
+ , Key__name = "xowa.wiki.core.name"
+ , Key__main_page = "props.main_page"
+ ;
+}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json.java
index aa371efc4..750c7ae3e 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json.java
@@ -18,21 +18,15 @@ along with this program. If not, see .
package gplx.xowa.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
import gplx.langs.jsons.*;
public class Xowdir_wiki_json {
- public Xowdir_wiki_json(String domain, String name, String mainpage) {
- this.domain = domain;
+ public Xowdir_wiki_json(String name) {
this.name = name;
- this.mainpage = mainpage;
}
- public String Domain() {return domain;} private String domain; public void Domain_(String v) {domain = v;}
public String Name() {return name;} private String name; public void Name_(String v) {name = v;}
- public String Mainpage() {return mainpage;} private String mainpage; public void Mainpage_(String v) {mainpage = v;}
public String To_str(Json_wtr wtr) {
wtr.Doc_nde_bgn();
wtr.Nde_bgn("core");
- wtr.Kv_str("domain", domain);
wtr.Kv_str("name", name);
- wtr.Kv_str("mainpage", mainpage);
wtr.Nde_end();
wtr.Doc_nde_end();
@@ -41,12 +35,10 @@ public class Xowdir_wiki_json {
public static Xowdir_wiki_json New_by_json(Json_parser json_parser, String json) {
Json_doc jdoc = json_parser.Parse(json);
- String domain = jdoc.Get_val_as_str_or(Bry_.Ary("core", "domain"), "");
String name = jdoc.Get_val_as_str_or(Bry_.Ary("core", "name"), "");
- String mainpage = jdoc.Get_val_as_str_or(Bry_.Ary("core", "mainpage"), "");
- return new Xowdir_wiki_json(domain, name, mainpage);
+ return new Xowdir_wiki_json(name);
}
public static Xowdir_wiki_json New_empty() {
- return new Xowdir_wiki_json("", "", "Main_Page");
+ return new Xowdir_wiki_json("");
}
}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_.java
deleted file mode 100644
index 555556b31..000000000
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
-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.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
-import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.sys.*;
-import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
-import gplx.langs.jsons.*;
-public class Xowdir_wiki_json_ {
- private static final String Grp__personal = "xowa.personal_wikis", Key__personal__wiki_json = "xowa.personal_wikis.wiki_json";
- public static void Upsert(Xowe_wiki wiki, String wiki_json) {
- wiki.Data__core_mgr().Db__core().Tbl__cfg().Upsert_str(Grp__personal, Key__personal__wiki_json, wiki_json);
- }
- public static Xowdir_wiki_json Select_or_insert(Io_url core_db_url, Db_conn core_db_conn) {
- Xowdir_wiki_json rv = null;
-
- // read from core_db.xowa_cfg
- Db_cfg_tbl core_cfg_tbl = new Db_cfg_tbl(core_db_conn, Xowd_cfg_tbl_.Tbl_name);
- String wiki_json_str = core_cfg_tbl.Select_str_or(Grp__personal, Key__personal__wiki_json, null);
-
- // if not in core_db.xowa_cfg
- if (wiki_json_str == null) {
- // infer new based on url and other cfg_itms
- rv = Infer_new(core_db_url, core_cfg_tbl);
- core_cfg_tbl.Insert_str(Grp__personal, Key__personal__wiki_json, rv.To_str(new Json_wtr()));
- }
- else {
- rv = Xowdir_wiki_json.New_by_json(new Json_parser(), wiki_json_str);
- }
- return rv;
- }
-// public static Xowdir_wiki_json Verify2(Xoae_app app, boolean mode_is_import, String domain_str, Io_url core_db_url, Db_conn core_db_conn) {
-// Xowdir_wiki_json rv = null;
-// boolean dirty = false;
-//
-// // read from core_db.xowa_cfg
-// Db_cfg_tbl core_cfg_tbl = new Db_cfg_tbl(core_db_conn, Xowd_cfg_tbl_.Tbl_name);
-// String wiki_cfg_str = core_cfg_tbl.Select_str_or(Grp__personal, Key__personal__wiki_json, null);
-//
-// // not in core_db; check user_db.user_wiki
-// if (wiki_cfg_str == null) {
-// Gfo_usr_dlg_.Instance.Warn_many("", "", "wiki_json not found in core_db; url=~{0}", core_db_url);
-// dirty = true;
-// if (!mode_is_import) {
-// Xowdir_db_mgr user_db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn());
-// Xowdir_wiki_itm user_wiki_row = user_db_mgr.Tbl__wiki().Select_by_key_or_null(domain_str);
-// if (user_wiki_row != null) {
-// rv = user_wiki_row.Json();
-// }
-// }
-// }
-// else {
-// rv = Xowdir_wiki_json.New_by_json(new Json_parser(), wiki_cfg_str);
-// }
-//
-// // not in core_db or user_db; infer
-// if (rv == null) {
-// Gfo_usr_dlg_.Instance.Warn_many("", "", "wiki_json not found in core_db or user_db; url=~{0}", core_db_url);
-// dirty = true;
-// rv = Infer_new(core_db_url, core_cfg_tbl);
-// }
-//
-// // check domain exists
-// if (String_.Eq(rv.Domain(), String_.Empty)) {
-// Gfo_usr_dlg_.Instance.Warn_many("", "", "wiki_json does not have domain; url=~{0}", core_db_url);
-// dirty = true;
-// rv.Domain_(core_cfg_tbl.Select_str_or(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__domain, core_db_url.NameOnly()));
-// }
-//
-// // something changed; save it
-// if (dirty) {
-// String wiki_json_str = rv.To_str(new gplx.langs.jsons.Json_wtr());
-// core_cfg_tbl.Update_str(Grp__personal, Key__personal__wiki_json, wiki_json_str);
-// Xowdir_db_mgr user_db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn());
-//
-// if (!mode_is_import) {
-// Xowdir_wiki_itm user_wiki_row = user_db_mgr.Tbl__wiki().Select_by_key_or_null(domain_str);
-// user_db_mgr.Tbl__wiki().Upsert(user_wiki_row.Id(), user_wiki_row.Domain(), user_wiki_row.Url(), wiki_json_str);
-// }
-// }
-// return rv;
-// }
- public static void Verify(Xoae_app app, byte[] domain_bry, Io_url core_db_url, Db_conn core_db_conn) {
- String domain_str = String_.new_u8(domain_bry);
- boolean dirty = false;
-
- // read from core_db.xowa_cfg
- Db_cfg_tbl core_cfg_tbl = new Db_cfg_tbl(core_db_conn, Xowd_cfg_tbl_.Tbl_name);
- String wiki_cfg_str = core_cfg_tbl.Select_str_or(Grp__personal, Key__personal__wiki_json, null);
-
- // not in core_db; check user_db.user_wiki
- Xowdir_wiki_json wiki_json_itm = null;
- if (wiki_cfg_str == null) {
- Gfo_usr_dlg_.Instance.Warn_many("", "", "wiki_json not found in core_db; url=~{0}", core_db_url);
- dirty = true;
- Xowdir_db_mgr user_db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn());
- Xowdir_wiki_itm user_wiki_row = user_db_mgr.Tbl__wiki().Select_by_key_or_null(domain_str);
- if (user_wiki_row != null) {
- wiki_json_itm = user_wiki_row.Json();
- }
- }
- else {
- wiki_json_itm = Xowdir_wiki_json.New_by_json(new Json_parser(), wiki_cfg_str);
- }
-
- // not in core_db or user_db; infer
- if (wiki_json_itm == null) {
- Gfo_usr_dlg_.Instance.Warn_many("", "", "wiki_json not found in core_db or user_db; url=~{0}", core_db_url);
- dirty = true;
- wiki_json_itm = Infer_new(core_db_url, core_cfg_tbl);
- }
-
- // check domain exists
- if (String_.Eq(wiki_json_itm.Domain(), String_.Empty)) {
- Gfo_usr_dlg_.Instance.Warn_many("", "", "wiki_json does not have domain; url=~{0}", core_db_url);
- dirty = true;
- wiki_json_itm.Domain_(core_cfg_tbl.Select_str_or(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__domain, core_db_url.NameOnly()));
- }
-
- // something changed; save it
- if (dirty) {
- Xowdir_db_mgr user_db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn());
- Xowdir_wiki_itm user_wiki_row = user_db_mgr.Tbl__wiki().Select_by_key_or_null(domain_str);
-
- String wiki_json_str = wiki_json_itm.To_str(new gplx.langs.jsons.Json_wtr());
- core_cfg_tbl.Update_str(Grp__personal, Key__personal__wiki_json, wiki_json_str);
- user_db_mgr.Tbl__wiki().Upsert(user_wiki_row.Id(), user_wiki_row.Domain(), user_wiki_row.Url(), wiki_json_str);
- }
- }
- private static Xowdir_wiki_json Infer_new(Io_url core_db_url, Db_cfg_tbl core_cfg_tbl) {
- String domain = core_cfg_tbl.Select_str_or(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__domain, core_db_url.NameOnly());
- String main_page = core_cfg_tbl.Select_str_or(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, Xoa_page_.Main_page_str);
- return new Xowdir_wiki_json(domain, domain, main_page);
- }
-}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr.java
deleted file mode 100644
index 37182e3bd..000000000
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-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.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
-import gplx.langs.jsons.*;
-public interface Xowdir_wiki_json_mgr {
- void Wiki_cfg__upsert(String key, String val);
- String Wiki_cfg__select_or(String key, String or);
- void User_reg__upsert(String domain, String val);
- String User_reg__select(String domain);
- boolean Dirty();
- Xowdir_wiki_json Verify(boolean mode_is_import, String domain_str, Io_url core_db_url);
-}
-class Xowdir_wiki_cfg_ {
- public static final String
- Key__wiki_json = "wiki_json"
- , Key__domain = "props.domain"
- , Key__main_page = "props.main_page"
- ;
-}
-abstract class Xowdir_wiki_json_mgr__base implements Xowdir_wiki_json_mgr {
- private final Gfo_usr_dlg usr_dlg;
- public Xowdir_wiki_json_mgr__base(Gfo_usr_dlg usr_dlg) {
- this.usr_dlg = usr_dlg;
- }
- public abstract void Wiki_cfg__upsert(String key, String val);
- public abstract String Wiki_cfg__select_or(String key, String or);
- public abstract void User_reg__upsert(String domain, String val);
- public abstract String User_reg__select(String domain);
- public boolean Dirty() {return dirty;} private boolean dirty;
- public Xowdir_wiki_json Verify(boolean mode_is_import, String domain_str, Io_url core_db_url) {
- Xowdir_wiki_json rv = null;
- dirty = false;
-
- // read from core_db.xowa_cfg
- String wiki_json_str = Wiki_cfg__select_or(Xowdir_wiki_cfg_.Key__wiki_json, null);
-
- // not in core_db; check user_db.user_wiki
- if (wiki_json_str == null) {
- usr_dlg.Warn_many("", "", "wiki_json not found in core_db; url=~{0}", core_db_url);
- dirty = true;
- if (!mode_is_import) {
- wiki_json_str = User_reg__select(domain_str);
- }
- }
-
- if (wiki_json_str != null) {
- rv = Xowdir_wiki_json.New_by_json(new Json_parser(), wiki_json_str);
- }
-
- // not in core_db or user_db; infer
- if (rv == null) {
- usr_dlg.Warn_many("", "", "wiki_json not found in core_db or user_db; url=~{0}", core_db_url);
- dirty = true;
- rv = Infer_new(core_db_url);
- }
-
- // check domain exists
- if (String_.Eq(rv.Domain(), String_.Empty)) {
- usr_dlg.Warn_many("", "", "wiki_json does not have domain; url=~{0}", core_db_url);
- dirty = true;
- String domain = Wiki_cfg__select_or(Xowdir_wiki_cfg_.Key__domain, core_db_url.NameOnly());
- rv.Domain_(domain);
- }
-
- // something changed; save it
- if (dirty) {
- wiki_json_str = rv.To_str(new gplx.langs.jsons.Json_wtr());
- Wiki_cfg__upsert(Xowdir_wiki_cfg_.Key__wiki_json, wiki_json_str);
-
- if (!mode_is_import) {
- User_reg__upsert(domain_str, wiki_json_str);
- }
- }
- return rv;
- }
- private Xowdir_wiki_json Infer_new(Io_url core_db_url) {
- String domain = this.Wiki_cfg__select_or(Xowdir_wiki_cfg_.Key__domain, core_db_url.NameOnly());
- String main_page = this.Wiki_cfg__select_or(Xowdir_wiki_cfg_.Key__main_page, Xoa_page_.Main_page_str);
- return new Xowdir_wiki_json(domain, domain, main_page);
- }
-}
-class Xowdir_wiki_json_mgr__mock extends Xowdir_wiki_json_mgr__base {
- private final Hash_adp wiki_cfg_hash = Hash_adp_.New();
- private final Hash_adp user_reg_hash = Hash_adp_.New();
- public Xowdir_wiki_json_mgr__mock() {super(Gfo_usr_dlg_.Noop);}
- @Override public void Wiki_cfg__upsert(String key, String val) {wiki_cfg_hash.Add_if_dupe_use_nth(key, val);}
- @Override public void User_reg__upsert(String domain, String val) {user_reg_hash.Add_if_dupe_use_nth(domain, val);}
- @Override public String User_reg__select(String domain) {return (String)user_reg_hash.Get_by(domain);}
- @Override public String Wiki_cfg__select_or(String key, String or) {
- String rv = (String)wiki_cfg_hash.Get_by(key);
- return rv == null ? or : rv;
- }
-}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr__tst.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr__tst.java
deleted file mode 100644
index e48608942..000000000
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr__tst.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-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.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
-import org.junit.*; import gplx.core.tests.*;
-import gplx.langs.jsons.*;
-public class Xowdir_wiki_json_mgr__tst {
- private final Xowdir_wiki_json_mgr__fxt fxt = new Xowdir_wiki_json_mgr__fxt();
-
- @Test public void Import__wiki__missing_all() {
- // handle all imported .xowa wikis pre v4.3
- fxt.Init__wiki_cfg__json(null);
-
- Xowdir_wiki_json expd = fxt.Make__json("test", "test", "Main_Page");
- fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, expd);
- fxt.Test__wiki_cfg(expd);
- }
- @Test public void Import__wiki__missing_domain() {
- // handle personal wikis from v4.2
- fxt.Init__wiki_cfg__json(fxt.Make__json(null, "test", "Main_Page"));
-
- Xowdir_wiki_json expd = fxt.Make__json("test", "test", "Main_Page");
- fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, expd);
- fxt.Test__wiki_cfg(expd);
- }
- @Test public void Import__wiki__clean() {
- // handle clean wiki
- fxt.Init__wiki_cfg__json(fxt.Make__json("test", "test", "Main_Page"));
-
- Xowdir_wiki_json expd = fxt.Make__json("test", "test", "Main_Page");
- fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.N, expd);
- fxt.Test__wiki_cfg(expd);
- }
-}
-class Xowdir_wiki_json_mgr__fxt {
- private final Xowdir_wiki_json_mgr mgr = new Xowdir_wiki_json_mgr__mock();
- private final Json_wtr json_wtr = new Json_wtr();
- public Xowdir_wiki_json Make__json(String domain, String name, String main_page) {
- return new Xowdir_wiki_json(domain, name, main_page);
- }
- public void Init__wiki_cfg__json(Xowdir_wiki_json itm) {
- if (itm != null)
- mgr.Wiki_cfg__upsert(Xowdir_wiki_cfg_.Key__wiki_json, itm.To_str(json_wtr));
- }
- public void Test__verify(boolean mode_is_import, String url, boolean expd_dirty, Xowdir_wiki_json expd) {
- Xowdir_wiki_json actl = mgr.Verify(mode_is_import, "", Io_url_.new_any_(url));
-
- String expd_str = expd.To_str(json_wtr);
- String actl_str = actl.To_str(json_wtr);
- Gftest.Eq__ary__lines(expd_str, actl_str, "expd");
- Gftest.Eq__bool(expd_dirty, mgr.Dirty(), "dirty");
- }
- public void Test__wiki_cfg(Xowdir_wiki_json expd) {
- String expd_str = expd.To_str(json_wtr);
- Gftest.Eq__ary__lines(expd_str, mgr.Wiki_cfg__select_or(Xowdir_wiki_cfg_.Key__wiki_json, null), "wiki_cfg");
- }
-// Gftest.Eq__ary__lines(expd_str, mgr.User_reg__select(actl.Domain()), "user_reg");
-}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props.java
new file mode 100644
index 000000000..99a2e67a3
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props.java
@@ -0,0 +1,43 @@
+/*
+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.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
+public class Xowdir_wiki_props {
+ public Xowdir_wiki_props() {}
+ public Xowdir_wiki_props(String domain, String name, String main_page) {
+ this.domain = domain;
+ this.name = name;
+ this.main_page = main_page;
+ }
+ public boolean Dirty() {return dirty;} private boolean dirty;
+ public String Domain() {return domain;} private String domain;
+ public String Name() {return name;} private String name;
+ public String Main_page() {return main_page;} private String main_page;
+
+ public void Dirty_y_() {
+ dirty = true;
+ }
+
+ public void Set(String key, String val) {
+ if (String_.Eq(key, Xowdir_wiki_cfg_.Key__domain)) this.domain = val;
+ else if (String_.Eq(key, Xowdir_wiki_cfg_.Key__name)) this.name = val;
+ else if (String_.Eq(key, Xowdir_wiki_cfg_.Key__main_page)) this.main_page = val;
+ else throw Err_.new_unhandled_default(key);
+ }
+
+ public String To_str() {return String_.Concat(domain, "|", name, "|", main_page );}
+}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr.java
new file mode 100644
index 000000000..e338f22fd
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr.java
@@ -0,0 +1,86 @@
+/*
+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.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
+import gplx.langs.jsons.*;
+public interface Xowdir_wiki_props_mgr {
+ void Wiki_cfg__upsert(String key, String val);
+ String Wiki_cfg__select_or(String key, String or);
+ void User_reg__upsert(String domain, String val);
+ String User_reg__select(String domain);
+ Xowdir_wiki_props Verify(boolean mode_is_import, String domain_str, Io_url core_db_url);
+}
+abstract class Xowdir_wiki_props_mgr__base implements Xowdir_wiki_props_mgr {
+ private final Gfo_usr_dlg usr_dlg;
+ public Xowdir_wiki_props_mgr__base(Gfo_usr_dlg usr_dlg) {
+ this.usr_dlg = usr_dlg;
+ }
+ public abstract void Wiki_cfg__upsert(String key, String val);
+ public abstract String Wiki_cfg__select_or(String key, String or);
+ public abstract void User_reg__upsert(String domain, String val);
+ public abstract String User_reg__select(String domain);
+ public Xowdir_wiki_props Verify(boolean mode_is_import, String domain_str, Io_url core_db_url) {
+ Xowdir_wiki_props rv = new Xowdir_wiki_props();
+
+ Verify_or_fix(rv, core_db_url, Xowdir_wiki_cfg_.Key__domain);
+ Verify_or_fix(rv, core_db_url, Xowdir_wiki_cfg_.Key__main_page);
+ Verify_or_fix(rv, core_db_url, Xowdir_wiki_cfg_.Key__name);
+
+ return rv;
+ }
+ private String Verify_or_fix(Xowdir_wiki_props props, Io_url core_db_url, String key) {
+ String val = Wiki_cfg__select_or(key, null);
+ if (val == null) {
+ props.Dirty_y_();
+ usr_dlg.Warn_many("", "", "xowdir: core_db.xowa_cfg does not have val; url=~{0} key=~{1}", core_db_url, key);
+ val = Fix(props, core_db_url, key);
+ Wiki_cfg__upsert(key, val);
+ }
+ props.Set(key, val);
+ return val;
+ }
+ private static String Fix(Xowdir_wiki_props props, Io_url core_db_url, String key) {
+ if (String_.Eq(key, Xowdir_wiki_cfg_.Key__domain)) {
+ String rv = core_db_url.NameOnly();
+ if (String_.Has_at_end(rv, "-core"))
+ rv = String_.Mid(rv, 0, String_.Len(rv) - 5);
+ return rv;
+ }
+ else if (String_.Eq(key, Xowdir_wiki_cfg_.Key__name)) {
+ return props.Domain(); // NOTE: must be called after domain
+ }
+ else if (String_.Eq(key, Xowdir_wiki_cfg_.Key__main_page)) {
+ return Xoa_page_.Main_page_str;
+ }
+ else throw Err_.new_unhandled_default(key);
+ }
+}
+class Xowdir_wiki_props_mgr__mock extends Xowdir_wiki_props_mgr__base {
+ private final Hash_adp wiki_cfg_hash = Hash_adp_.New();
+ private final Hash_adp user_reg_hash = Hash_adp_.New();
+ public Xowdir_wiki_props_mgr__mock() {super(Gfo_usr_dlg_.Noop);}
+ @Override public void Wiki_cfg__upsert(String key, String val) {
+ if (val != null)
+ wiki_cfg_hash.Add_if_dupe_use_nth(key, val);
+ }
+ @Override public String Wiki_cfg__select_or(String key, String or) {
+ String rv = (String)wiki_cfg_hash.Get_by(key);
+ return rv == null ? or : rv;
+ }
+ @Override public void User_reg__upsert(String domain, String val) {user_reg_hash.Add_if_dupe_use_nth(domain, val);}
+ @Override public String User_reg__select(String domain) {return (String)user_reg_hash.Get_by(domain);}
+}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr_.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr_.java
similarity index 83%
rename from 400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr_.java
rename to 400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr_.java
index f77d40e32..7389b9a15 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr_.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr_.java
@@ -16,6 +16,6 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
-public class Xowdir_wiki_json_mgr_ {
- public static Xowdir_wiki_json_mgr New_xowa(Xoa_app app, Io_url core_db_url) {return new Xowdir_wiki_json_mgr__xowa(app, core_db_url);}
+public class Xowdir_wiki_props_mgr_ {
+ public static Xowdir_wiki_props_mgr New_xowa(Xoa_app app, Io_url core_db_url) {return new Xowdir_wiki_props_mgr__xowa(app, core_db_url);}
}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr__tst.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr__tst.java
new file mode 100644
index 000000000..48c938a32
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr__tst.java
@@ -0,0 +1,60 @@
+/*
+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.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
+import org.junit.*; import gplx.core.tests.*;
+public class Xowdir_wiki_props_mgr__tst {
+ private final Xowdir_wiki_props_mgr__fxt fxt = new Xowdir_wiki_props_mgr__fxt();
+
+ @Test public void Import__wiki__missing_all() {
+ // handle all imported .xowa wikis pre v4.3
+ fxt.Init__props(null, null, null);
+ fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
+ }
+ @Test public void Import__wiki__missing_domain() {
+ // handle personal wikis from v4.2
+ fxt.Init__props(null, null, "Main_Page");
+ fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
+ }
+ @Test public void Import__wiki__wmf_domain() {
+ // handle wmf wikis with a core-file of "test-core.xowa"
+ fxt.Init__props(null, null, "Main_Page");
+ fxt.Test__verify(Bool_.Y, "/dir/test-core.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
+ }
+ @Test public void Import__wiki__clean() {
+ // handle clean wiki
+ fxt.Init__props("test", "test", "Main_Page");
+ fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.N, fxt.Make__json("test", "test", "Main_Page"));
+ }
+}
+class Xowdir_wiki_props_mgr__fxt {
+ private final Xowdir_wiki_props_mgr mgr = new Xowdir_wiki_props_mgr__mock();
+ public Xowdir_wiki_props Make__json(String domain, String name, String main_page) {
+ return new Xowdir_wiki_props(domain, name, main_page);
+ }
+ public void Init__props(String domain, String name, String main_page) {
+ mgr.Wiki_cfg__upsert(Xowdir_wiki_cfg_.Key__domain, domain);
+ mgr.Wiki_cfg__upsert(Xowdir_wiki_cfg_.Key__name, name);
+ mgr.Wiki_cfg__upsert(Xowdir_wiki_cfg_.Key__main_page, main_page);
+ }
+ public void Test__verify(boolean mode_is_import, String url, boolean expd_dirty, Xowdir_wiki_props expd) {
+ Xowdir_wiki_props actl = mgr.Verify(mode_is_import, "", Io_url_.new_any_(url));
+
+ Gftest.Eq__ary__lines(expd.To_str(), actl.To_str(), "expd");
+ Gftest.Eq__bool(expd_dirty, actl.Dirty(), "dirty");
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr__xowa.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr__xowa.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr__xowa.java
rename to 400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr__xowa.java
index 6f8366b40..6095689af 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_json_mgr__xowa.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_props_mgr__xowa.java
@@ -18,12 +18,12 @@ along with this program. If not, see .
package gplx.xowa.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
import gplx.dbs.*; import gplx.dbs.cfgs.*;
import gplx.langs.jsons.*;
-class Xowdir_wiki_json_mgr__xowa extends Xowdir_wiki_json_mgr__base {
+class Xowdir_wiki_props_mgr__xowa extends Xowdir_wiki_props_mgr__base {
private final Xoa_app app;
private final Io_url core_db_url;
private Db_cfg_tbl wiki_cfg_tbl;
private Xowdir_wiki_tbl user_reg_tbl;
- public Xowdir_wiki_json_mgr__xowa(Xoa_app app, Io_url core_db_url) {super(Gfo_usr_dlg_.Instance);
+ public Xowdir_wiki_props_mgr__xowa(Xoa_app app, Io_url core_db_url) {super(Gfo_usr_dlg_.Instance);
this.app = app;
this.core_db_url = core_db_url;
}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_tbl.java
index ae0314dfa..3804debc7 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_tbl.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/dbs/Xowdir_wiki_tbl.java
@@ -18,7 +18,7 @@ along with this program. If not, see .
package gplx.xowa.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
import gplx.langs.jsons.*;
-public class Xowdir_wiki_tbl implements Db_tbl {
+public class Xowdir_wiki_tbl implements Db_tbl { // for domain and user-specific data only (name, url); don't replicate wiki-specific info here (like main_page)
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld__wiki_id, fld__wiki_domain, fld__wiki_core_url, fld__wiki_json;
private final Db_conn conn;
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_doc.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_doc.java
index 35866dd22..29baaba1c 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_doc.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_doc.java
@@ -20,21 +20,21 @@ import gplx.langs.mustaches.*; import gplx.xowa.addons.wikis.directorys.dbs.*;
public class Xowdir_item_doc implements Mustache_doc_itm {
private final boolean mode_is_new;
private final int id;
- private final String domain, name, dir, mainpage;
- public Xowdir_item_doc(int id, String domain, String name, String dir, String mainpage) {
+ private final String domain, name, dir, main_page;
+ public Xowdir_item_doc(int id, String domain, String name, String dir, String main_page) {
this.mode_is_new = id == -1;
this.id = id;
this.domain = domain;
this.name = name;
this.dir = dir;
- this.mainpage = mainpage;
+ this.main_page = main_page;
}
public boolean Mustache__write(String key, Mustache_bfr bfr) {
if (String_.Eq(key, "id")) bfr.Add_int(id);
else if (String_.Eq(key, "domain")) bfr.Add_str_u8(domain);
else if (String_.Eq(key, "name")) bfr.Add_str_u8(name);
else if (String_.Eq(key, "dir")) bfr.Add_str_u8(dir);
- else if (String_.Eq(key, "mainpage")) bfr.Add_str_u8(mainpage);
+ else if (String_.Eq(key, "mainpage")) bfr.Add_str_u8(main_page);
else return false;
return true;
}
@@ -44,12 +44,12 @@ public class Xowdir_item_doc implements Mustache_doc_itm {
}
public static final Xowdir_item_doc[] Ary_empty = new Xowdir_item_doc[0];
- public static Xowdir_item_doc New(Xowdir_wiki_itm itm) {return new Xowdir_item_doc(itm.Id(), itm.Domain(), itm.Json().Name(), itm.Url().OwnerDir().Xto_api(), itm.Json().Mainpage());}
+ public static Xowdir_item_doc New(Xowdir_wiki_itm itm, String main_page) {return new Xowdir_item_doc(itm.Id(), itm.Domain(), itm.Json().Name(), itm.Url().OwnerDir().Xto_api(), main_page);}
public static Xowdir_item_doc[] New_ary(Xowdir_wiki_itm[] itms_ary) {
int len = itms_ary.length;
Xowdir_item_doc[] rv = new Xowdir_item_doc[itms_ary.length];
for (int i = 0; i < len; i++) {
- rv[i] = New(itms_ary[i]);
+ rv[i] = New(itms_ary[i], ""); // NOTE: main_page empty b/c not shown on list page
}
return rv;
}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_html.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_html.java
index 17defaac6..5075405ea 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_html.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_html.java
@@ -31,7 +31,7 @@ class Xowdir_item_html extends Xow_special_wtr__base {
Xowdir_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_key_or_null(domain);
if (itm == null)
itm = new Xowdir_wiki_itm(-1, "", Io_url_.Empty, Xowdir_wiki_json.New_empty());
- return Xowdir_item_doc.New(itm);
+ return Xowdir_item_doc.New(itm, itm.Json().Name());
}
@Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) {
Xopg_tag_mgr head_tags = page_data.Head_tags();
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_mgr.java
index e83b768e7..a2749e061 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_mgr.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/Xowdir_item_mgr.java
@@ -51,22 +51,17 @@ class Xowdir_item_mgr {
// upsert into user_db.wiki_list
Io_url fil_url = dir_url.GenSubFil(domain + ".xowa");
Xowdir_wiki_json json = Xowdir_wiki_json.New_empty();
- json.Domain_(domain);
json.Name_(name);
- json.Mainpage_(mainpage_name);
String wiki_json = json.To_str(json_wtr);
db_mgr.Tbl__wiki().Upsert(id, domain, fil_url, wiki_json);
if (itm_is_new) {
// create the actual wiki
byte[] mainpage_text = Io_mgr.Instance.LoadFilBryOr(Xowdir_item_html.Addon_dir(app).GenSubFil_nest("res", "page", "Main_Page.txt"), Bry_.Empty);
- Xow_db_mkr.Create_wiki(new Xodb_wiki_data(domain, fil_url), Bry_.new_u8(mainpage_name), mainpage_text);
+ Xow_db_mkr.Create_wiki(new Xodb_wiki_data(domain, fil_url), name, Bry_.new_u8(mainpage_name), mainpage_text);
// load it
- Xowe_wiki wiki = Xow_wiki_factory.Load_personal((Xoae_app)app, Bry_.new_u8(domain), dir_url);
-
- // upsert json into cfg for import
- Xowdir_wiki_json_.Upsert(wiki, wiki_json);
+ Xow_wiki_factory.Load_personal((Xoae_app)app, Bry_.new_u8(domain), dir_url);
// navigate to it
app.Gui__cbk_mgr().Send_redirect(cbk_trg, "/site/" + domain + "/wiki/" + mainpage_name);
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_db_mkr.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_db_mkr.java
index 0f66e0285..bf91838f7 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_db_mkr.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_db_mkr.java
@@ -23,7 +23,7 @@ import gplx.xowa.langs.cases.*;
import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.fsdb.data.*; import gplx.xowa.files.origs.*;
import gplx.xowa.addons.wikis.directorys.dbs.*;
public class Xow_db_mkr {
- public static Xodb_wiki_mgr Create_wiki(Xodb_wiki_data data, byte[] mainpage_name, byte[] mainpage_text) {
+ public static Xodb_wiki_mgr Create_wiki(Xodb_wiki_data data, String wiki_name, byte[] mainpage_name, byte[] mainpage_text) {
// create db
Xodb_wiki_mgr wiki_mgr = new Xodb_wiki_mgr(data.Domain());
wiki_mgr.Dbs__add(Xodb_wiki_db.Make(Xodb_wiki_db_tid.Tid__core, data.Core_url()));
@@ -56,9 +56,11 @@ public class Xow_db_mkr {
Xowd_core_db_props props = new Xowd_core_db_props(2, Xow_db_layout.Itm_all, Xow_db_layout.Itm_all, Xow_db_layout.Itm_all, Io_stream_tid_.Tid__raw, Io_stream_tid_.Tid__raw, Bool_.N, Bool_.N);
props.Cfg_save(cfg_tbl);
cfg_tbl.Insert_str(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__modified_latest, Datetime_now.Get().XtoStr_fmt(DateAdp_.Fmt_iso8561_date_time));
+ cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, mainpage_name);
+ cfg_tbl.Insert_str(Xow_cfg_consts.Grp__empty, Xowdir_wiki_cfg_.Key__domain , data.Domain());
+ cfg_tbl.Insert_str(Xow_cfg_consts.Grp__empty, Xowdir_wiki_cfg_.Key__name , wiki_name);
// insert data: page
- cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, mainpage_name);
Xopg_db_mgr.Create
( Xowd_page_tbl.Get_by_key(core_db)
, Xowd_text_tbl.Get_by_key(core_db)
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_wiki_factory.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_wiki_factory.java
index b3abc3663..9eae980de 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_wiki_factory.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/items/bldrs/Xow_wiki_factory.java
@@ -80,6 +80,7 @@ public class Xow_wiki_factory {
}
// verify json
- Xowdir_wiki_json_.Verify(app, domain, core_db_url, core_db_conn);
+ Xowdir_wiki_props_mgr core_db_props = Xowdir_wiki_props_mgr_.New_xowa(app, core_db_url);
+ core_db_props.Verify(Bool_.N, String_.new_u8(domain), core_db_url);
}
}
diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/lists/Xowdir_list_svc.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/lists/Xowdir_list_svc.java
index d2d737f41..6908ef67b 100644
--- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/lists/Xowdir_list_svc.java
+++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/specials/lists/Xowdir_list_svc.java
@@ -41,11 +41,10 @@ class Xowdir_list_svc {
return;
}
- // get wiki_json from core_db.cfg
- Xowdir_wiki_json_mgr wiki_json_mgr = Xowdir_wiki_json_mgr_.New_xowa(app, core_db_url);
- Xowdir_wiki_json wiki_json = wiki_json_mgr.Verify(Bool_.Y, core_db_url.NameOnly(), core_db_url);
- String domain = wiki_json.Domain();
- String mainpage = wiki_json.Mainpage();
+ // get wiki_props from core_db.xowa_cfg
+ Xowdir_wiki_props_mgr wiki_props_mgr = Xowdir_wiki_props_mgr_.New_xowa(app, core_db_url);
+ Xowdir_wiki_props wiki_props = wiki_props_mgr.Verify(Bool_.Y, core_db_url.NameOnly(), core_db_url);
+ String domain = wiki_props.Domain();
// if same domain exists; return
Xowdir_db_mgr db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn());
@@ -56,12 +55,12 @@ class Xowdir_list_svc {
// add it to user_wiki
int id = Xowdir_db_utl.Wiki_id__next(app);
- db_mgr.Tbl__wiki().Upsert(id, domain, core_db_url, wiki_json.To_str(new Json_wtr()));
+ db_mgr.Tbl__wiki().Upsert(id, domain, core_db_url, new Xowdir_wiki_json(wiki_props.Name()).To_str(new Json_wtr()));
// add it to personal wikis
gplx.xowa.addons.wikis.directorys.specials.items.bldrs.Xow_wiki_factory.Load_personal((Xoae_app)app, Bry_.new_u8(domain), core_db_url.OwnerDir());
// navigate to it
- app.Gui__cbk_mgr().Send_redirect(cbk_trg, "/site/" + domain + "/wiki/" + mainpage);
+ app.Gui__cbk_mgr().Send_redirect(cbk_trg, "/wiki/" + String_.new_u8(cbk_trg.Page_ttl()));
}
}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java
index bc1a60dc3..8b420de08 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java
@@ -27,6 +27,10 @@ public class Xob_term_cmd extends Xob_term_base {
cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, wiki.Props().Main_page());
cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, "props.siteinfo_misc", wiki.Props().Siteinfo_misc());
cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, "props.siteinfo_mainpage", wiki.Props().Siteinfo_mainpage());
+
+ cfg_tbl.Insert_str(Xow_cfg_consts.Grp__empty, gplx.xowa.addons.wikis.directorys.dbs.Xowdir_wiki_cfg_.Key__domain , wiki.Domain_str());
+ cfg_tbl.Insert_str(Xow_cfg_consts.Grp__empty, gplx.xowa.addons.wikis.directorys.dbs.Xowdir_wiki_cfg_.Key__name , wiki.Domain_str());
+
gplx.fsdb.Fsdb_db_mgr__v2_bldr.Get_or_make(wiki, false);// always build file.user db; DATE:2015-05-12
if (wiki.App().Cfg().Get_bool_wiki_or(wiki, gplx.xowa.bldrs.filters.dansguardians.Dg_match_mgr.Cfg__enabled, false))
new Xob_page_delete_cmd(wiki.Appe().Bldr(), wiki).Cmd_run();
diff --git a/400_xowa/src/gplx/xowa/wikis/Xow_cfg_consts.java b/400_xowa/src/gplx/xowa/wikis/Xow_cfg_consts.java
index 6faf36889..67a97eaba 100644
--- a/400_xowa/src/gplx/xowa/wikis/Xow_cfg_consts.java
+++ b/400_xowa/src/gplx/xowa/wikis/Xow_cfg_consts.java
@@ -24,6 +24,7 @@ public class Xow_cfg_consts {
, Grp__bldr_db = "xowa.bldr.db"
, Grp__bldr_fsdb = "xowa.bldr.fsdb"
, Grp__wiki_init = "wiki.init"
+ , Grp__empty = ""
, Key__init__main_page = "props.main_page"
, Key__init__bldr_version = "props.bldr_version"
, Key__init__modified_latest = "props.modified_latest"