mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Personal_wiki: Refactor special pages
This commit is contained in:
parent
0eee0f0207
commit
b2781ffc9d
24
150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_dir.java
Normal file
24
150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_dir.java
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*;
|
||||
public interface Gfui_dlg_dir {
|
||||
Gfui_dlg_dir Init_msg_(String v);
|
||||
Gfui_dlg_dir Init_text_(String v);
|
||||
Gfui_dlg_dir Init_dir_(Io_url v);
|
||||
String Ask();
|
||||
}
|
27
150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_dir_.java
Normal file
27
150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_dir_.java
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*;
|
||||
public class Gfui_dlg_dir_ {
|
||||
public static final Gfui_dlg_dir Noop = new Gfui_dlg_dir__noop();
|
||||
}
|
||||
class Gfui_dlg_dir__noop implements Gfui_dlg_dir {
|
||||
public String Ask() {return "";}
|
||||
public Gfui_dlg_dir Init_msg_(String v) {return this;}
|
||||
public Gfui_dlg_dir Init_text_(String v) {return this;}
|
||||
public Gfui_dlg_dir Init_dir_(Io_url v) {return this;}
|
||||
}
|
@ -220,6 +220,7 @@ public class Swt_kit implements Gfui_kit {
|
||||
return rv;
|
||||
}
|
||||
public Gfui_dlg_file New_dlg_file(byte type, String msg) {return new Swt_dlg_file(type, shell).Init_msg_(msg);}
|
||||
public Gfui_dlg_dir New_dlg_dir(String msg) {return new Swt_dlg_dir(shell).Init_msg_(msg);}
|
||||
public Gfui_dlg_msg New_dlg_msg(String msg) {return new Swt_dlg_msg(shell).Init_msg_(msg);}
|
||||
public ImageAdp New_img_load(Io_url url) {
|
||||
if (url == Io_url_.Empty) return ImageAdp_.Null;
|
||||
@ -264,6 +265,7 @@ public class Swt_kit implements Gfui_kit {
|
||||
}
|
||||
}
|
||||
else if (String_.Eq(k, Invk_ask_file)) return this.New_dlg_file(Gfui_kit_.File_dlg_type_open, m.Args_getAt(0).Val_to_str_or_empty()).Ask();
|
||||
else if (String_.Eq(k, "ask_dir")) return this.New_dlg_dir(m.Args_getAt(0).Val_to_str_or_empty()).Ask();
|
||||
else if (String_.Eq(k, Invk_shell_close)) shell.close();
|
||||
return this;
|
||||
}
|
||||
|
31
150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_dir.java
Normal file
31
150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_dir.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*;
|
||||
import gplx.gfui.kits.core.*;
|
||||
import org.eclipse.swt.widgets.DirectoryDialog;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
public class Swt_dlg_dir implements Gfui_dlg_dir {
|
||||
private final DirectoryDialog under;
|
||||
public Swt_dlg_dir(Shell shell) {
|
||||
this.under = new DirectoryDialog(shell);
|
||||
}
|
||||
public Gfui_dlg_dir Init_text_(String v) {under.setText(v); return this;}
|
||||
public Gfui_dlg_dir Init_msg_(String v) {under.setMessage(v); return this;}
|
||||
public Gfui_dlg_dir Init_dir_(Io_url v) {under.setFilterPath(v.Xto_api()); return this;}
|
||||
public String Ask() {return under.open();}
|
||||
}
|
@ -35,7 +35,7 @@ public class Fsdb_db_mgr_ {
|
||||
// FOLDER.RENAME: handle renamed folders; EX:"/wiki/en.wikipedia.org-2016-12" DATE:2017-02-01
|
||||
String domain_str = wiki.Domain_str();
|
||||
try {
|
||||
String cfg_domain_str = wiki.Data__core_mgr().Db__core().Tbl__cfg().Select_str("xowa.bldr.session", "wiki_domain");
|
||||
String cfg_domain_str = wiki.Data__core_mgr().Db__core().Tbl__cfg().Select_str_or("xowa.bldr.session", "wiki_domain", domain_str);
|
||||
if (!String_.Eq(domain_str, cfg_domain_str)) {
|
||||
domain_str = cfg_domain_str;
|
||||
Gfo_usr_dlg_.Instance.Note_many("", "", "fsdb.db_core.init: fsys.domain doesn't match db.domain; import db.*; fsys=~{0} db=~{1}", domain_str, cfg_domain_str);
|
||||
|
@ -175,7 +175,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
|
||||
|
||||
// init user wiki
|
||||
user.Wiki().Init_assert(); // NOTE: must assert wiki and load langs first, else will be asserted during Portal_mgr().Init(), which will cause IndexOutOfBounds; DATE:2014-10-04
|
||||
gplx.xowa.addons.users.wikis.regys.Xou_regy_addon.Init(this);
|
||||
gplx.xowa.addons.wikis.directorys.Xowdir_addon.Init(this);
|
||||
}
|
||||
public byte Stage() {return stage;} public Xoae_app Stage_(byte v) {stage = v; return this;} private byte stage = Xoa_stage_.Tid_ctor;
|
||||
public boolean Term_cbk() {
|
||||
|
@ -189,7 +189,7 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
|
||||
|
||||
// FOLDER.RENAME: handle renamed folders; EX:"/wiki/en.wikipedia.org-2016-12" DATE:2017-02-01
|
||||
try {
|
||||
byte[] cfg_domain_bry = db_mgr_sql.Core_data_mgr().Db__core().Tbl__cfg().Select_bry("xowa.bldr.session", "wiki_domain");
|
||||
byte[] cfg_domain_bry = db_mgr_sql.Core_data_mgr().Db__core().Tbl__cfg().Select_bry_or("xowa.bldr.session", "wiki_domain", domain_bry); // NOTE: or is "wiki.domain" for user_wikis
|
||||
if (!Bry_.Eq(cfg_domain_bry, domain_bry)) {
|
||||
// set wikidata vars
|
||||
Xow_domain_itm cfg_domain_itm = Xow_domain_itm_.parse(cfg_domain_bry);
|
||||
|
@ -69,7 +69,7 @@ public class Xoax_addon_mgr {
|
||||
, new gplx.xowa.addons.bldrs.centrals .Xobc_task_addon()
|
||||
, new gplx.xowa.addons.apps.helps.logs .Xolog_addon()
|
||||
, new gplx.xowa.addons.wikis.pages.syncs .Xosync_addon()
|
||||
, new gplx.xowa.addons.users.wikis.regys .Xou_regy_addon()
|
||||
, new gplx.xowa.addons.wikis.directorys .Xowdir_addon()
|
||||
, new gplx.xowa.addons.apps.cfgs .Xoa_cfg_addon()
|
||||
, new gplx.xowa.addons.apps.updates .Xoa_update_addon()
|
||||
|
||||
|
@ -1,69 +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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.specials.itms.*; import gplx.xowa.addons.users.wikis.regys.specials.lists.*;
|
||||
import gplx.xowa.htmls.bridges.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.xowa.specials.*;
|
||||
public class Xou_regy_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xoax_addon_itm__json {
|
||||
public Xow_special_page[] Special_pages() {
|
||||
return new Xow_special_page[]
|
||||
{ Xouw_itm_special.Prototype
|
||||
, Xouw_list_special.Prototype
|
||||
};
|
||||
}
|
||||
public Bridge_cmd_itm[] Json_cmds() {
|
||||
return new Bridge_cmd_itm[]
|
||||
{ Xouw_itm_bridge.Prototype
|
||||
};
|
||||
}
|
||||
|
||||
public String Addon__key() {return ADDON__KEY;} private static final String ADDON__KEY = "xowa.user.wiki.regy";
|
||||
// public static Xou_regy_addon Addon__get(Xow_wiki wiki) {
|
||||
// Xou_regy_addon rv = (Xou_regy_addon)wiki.Addon_mgr().Itms__get_or_null(ADDON__KEY);
|
||||
// if (rv == null) {
|
||||
// rv = new Xou_regy_addon(wiki.App().User().User_db_mgr().Conn());
|
||||
// wiki.Addon_mgr().Itms__add(rv);
|
||||
// }
|
||||
// return rv;
|
||||
// }
|
||||
public static void Init(Xoae_app app) {
|
||||
// exit if none found
|
||||
Db_conn conn = app.User().User_db_mgr().Conn();
|
||||
if (!conn.Meta_tbl_exists(Xou_wiki_tbl.Tbl_name_dflt)) return;
|
||||
|
||||
// register
|
||||
Xouw_db_mgr db_mgr = new Xouw_db_mgr(conn);
|
||||
Xou_wiki_itm[] itms = db_mgr.Tbl__wiki().Select_all();
|
||||
int len = itms.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Xou_wiki_itm itm = itms[i];
|
||||
Xowe_wiki wiki = new Xowe_wiki
|
||||
( app
|
||||
, gplx.xowa.langs.Xol_lang_itm_.Lang_en_make(app.Lang_mgr())
|
||||
, gplx.xowa.wikis.nss.Xow_ns_mgr_.default_(gplx.xowa.langs.cases.Xol_case_mgr_.A7())
|
||||
, gplx.xowa.wikis.domains.Xow_domain_itm_.parse(Bry_.new_u8(itm.Domain()))
|
||||
, itm.Url().OwnerDir());
|
||||
wiki.Appe().Wiki_mgr().Add(wiki);
|
||||
wiki.Init_by_wiki__force_and_mark_inited();
|
||||
wiki.Db_mgr_as_sql().Save_mgr().Create_enabled_(true);
|
||||
app.User().Wikii().Xwiki_mgr().Add_by_atrs(itm.Domain(), itm.Domain());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,53 +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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.dbs.sys.*; import gplx.xowa.addons.users.wikis.regys.dbs.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs.*;
|
||||
import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*;
|
||||
import gplx.xowa.langs.cases.*;
|
||||
class Xouw_itm_mgr {
|
||||
private final Xoa_app app;
|
||||
public Xouw_itm_mgr(Xoa_app app) {
|
||||
this.app = app;
|
||||
}
|
||||
public void Save(Json_nde args) {Save(args.Get_as_int("id"), args.Get_as_str("domain"), args.Get_as_str("name"), args.Get_as_str("dir"));}
|
||||
public void Save(int id, String domain, String name, String dir_str) {
|
||||
boolean itm_is_new = false;
|
||||
// get next id if none provided
|
||||
if (id == -1) {
|
||||
itm_is_new = true;
|
||||
Db_sys_mgr sys_mgr = new Db_sys_mgr(app.User().User_db_mgr().Conn());
|
||||
id = sys_mgr.Autonum_next("user.wikis.id");
|
||||
}
|
||||
|
||||
// insert into user_db.user_wiki
|
||||
Xouw_db_mgr db_mgr = new Xouw_db_mgr(app.User().User_db_mgr().Conn());
|
||||
Io_url dir_url = Io_url_.new_dir_infer(dir_str);
|
||||
Io_url fil_url = dir_url.GenSubFil(domain + ".xowa");
|
||||
db_mgr.Tbl__wiki().Upsert(id, domain, name, fil_url);
|
||||
if (itm_is_new)
|
||||
Xow_db_mkr.Create_wiki(new Xodb_wiki_data(domain, fil_url));
|
||||
}
|
||||
public void Delete(Json_nde args) {Delete(args.Get_as_int("id"));}
|
||||
public void Delete(int id) {
|
||||
Xouw_db_mgr db_mgr = new Xouw_db_mgr(app.User().User_db_mgr().Conn());
|
||||
Xou_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_id_or_null(id);
|
||||
if (itm == null) throw Err_.new_wo_type("wiki does not exist", "id", id);
|
||||
db_mgr.Tbl__wiki().Delete_by_id(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.directorys; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*;
|
||||
import gplx.xowa.addons.wikis.directorys.dbs.*;
|
||||
import gplx.xowa.addons.wikis.directorys.specials.items.*; import gplx.xowa.addons.wikis.directorys.specials.lists.*;
|
||||
import gplx.xowa.htmls.bridges.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.xowa.specials.*;
|
||||
public class Xowdir_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xoax_addon_itm__json {
|
||||
public Xow_special_page[] Special_pages() {
|
||||
return new Xow_special_page[]
|
||||
{ Xowdir_item_special.Prototype
|
||||
, Xowdir_list_special.Prototype
|
||||
};
|
||||
}
|
||||
public Bridge_cmd_itm[] Json_cmds() {
|
||||
return new Bridge_cmd_itm[]
|
||||
{ Xowdir_item_bridge.Prototype
|
||||
};
|
||||
}
|
||||
|
||||
public String Addon__key() {return ADDON__KEY;} private static final String ADDON__KEY = "xowa.user.wiki.regy";
|
||||
// public static Xowdir_addon Addon__get(Xow_wiki wiki) {
|
||||
// Xowdir_addon rv = (Xowdir_addon)wiki.Addon_mgr().Itms__get_or_null(ADDON__KEY);
|
||||
// if (rv == null) {
|
||||
// rv = new Xowdir_addon(wiki.App().User().User_db_mgr().Conn());
|
||||
// wiki.Addon_mgr().Itms__add(rv);
|
||||
// }
|
||||
// return rv;
|
||||
// }
|
||||
public static void Init(Xoae_app app) {
|
||||
// exit if none found
|
||||
Db_conn conn = app.User().User_db_mgr().Conn();
|
||||
if (!conn.Meta_tbl_exists(Xowdir_wiki_tbl.Tbl_name_dflt)) return;
|
||||
|
||||
// register
|
||||
Xowdir_db_mgr db_mgr = new Xowdir_db_mgr(conn);
|
||||
Xowdir_wiki_itm[] itms = db_mgr.Tbl__wiki().Select_all();
|
||||
int len = itms.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Xowdir_wiki_itm itm = itms[i];
|
||||
try {
|
||||
gplx.xowa.addons.wikis.directorys.specials.items.bldrs.Xow_wiki_factory.Load_personal(app, Bry_.new_u8(itm.Domain()), itm.Url().OwnerDir());
|
||||
} catch (Exception exc) {// handles failures if wiki is deleted, but item is still in wiki_list table
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "personal_wiki: failed to open personal wiki; domain=~{0} url=~{1} err=~{2}", itm.Domain(), itm.Url(), Err_.Message_gplx_log(exc));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -15,12 +15,12 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*;
|
||||
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.*;
|
||||
public class Xouw_db_mgr {
|
||||
public Xouw_db_mgr(Db_conn conn) {
|
||||
tbl__wiki = new Xou_wiki_tbl(conn);
|
||||
public class Xowdir_db_mgr {
|
||||
public Xowdir_db_mgr(Db_conn conn) {
|
||||
tbl__wiki = new Xowdir_wiki_tbl(conn);
|
||||
conn.Meta_tbl_assert(tbl__wiki);
|
||||
}
|
||||
public Xou_wiki_tbl Tbl__wiki() {return tbl__wiki;} private final Xou_wiki_tbl tbl__wiki;
|
||||
public Xowdir_wiki_tbl Tbl__wiki() {return tbl__wiki;} private final Xowdir_wiki_tbl tbl__wiki;
|
||||
}
|
@ -15,18 +15,16 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*;
|
||||
public class Xou_wiki_itm {
|
||||
public Xou_wiki_itm(int id, String domain, String name, Io_url url, String data) {
|
||||
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_itm {
|
||||
public Xowdir_wiki_itm(int id, String domain, Io_url url, Xowdir_wiki_json json) {
|
||||
this.id = id;
|
||||
this.domain = domain;
|
||||
this.name = name;
|
||||
this.url = url;
|
||||
this.data = data;
|
||||
this.json = json;
|
||||
}
|
||||
public int Id() {return id;} private int id;
|
||||
public String Domain() {return domain;} private String domain;
|
||||
public String Name() {return name;} private String name;
|
||||
public Io_url Url() {return url;} private Io_url url;
|
||||
public String Data() {return data;} private String data;
|
||||
public int Id() {return id;} private final int id;
|
||||
public String Domain() {return domain;} private final String domain;
|
||||
public Io_url Url() {return url;} private final Io_url url;
|
||||
public Xowdir_wiki_json Json() {return json;} private final Xowdir_wiki_json json;
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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 name, String mainpage) {
|
||||
this.name = name;
|
||||
this.mainpage = mainpage;
|
||||
}
|
||||
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("name", name);
|
||||
wtr.Kv_str("mainpage", mainpage);
|
||||
wtr.Nde_end();
|
||||
|
||||
wtr.Doc_nde_end();
|
||||
return wtr.To_str_and_clear();
|
||||
}
|
||||
|
||||
public static Xowdir_wiki_json New_by_json(Json_parser json_parser, String json) {
|
||||
Json_doc jdoc = json_parser.Parse(json);
|
||||
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(name, mainpage);
|
||||
}
|
||||
public static Xowdir_wiki_json New_dflt() {
|
||||
return new Xowdir_wiki_json("", "Main_Page");
|
||||
}
|
||||
}
|
@ -15,53 +15,45 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*;
|
||||
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.*;
|
||||
public class Xou_wiki_tbl implements Db_tbl {
|
||||
import gplx.langs.jsons.*;
|
||||
public class Xowdir_wiki_tbl implements Db_tbl {
|
||||
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
private final String fld__wiki_id, fld__wiki_domain, fld__wiki_name, fld__wiki_core_url, fld__wiki_data;
|
||||
private final String fld__wiki_id, fld__wiki_domain, fld__wiki_core_url, fld__wiki_json;
|
||||
private final Db_conn conn;
|
||||
public Xou_wiki_tbl(Db_conn conn) {
|
||||
private final Json_parser json_parser = new Json_parser();
|
||||
public Xowdir_wiki_tbl(Db_conn conn) {
|
||||
this.conn = conn;
|
||||
this.tbl_name = Tbl_name_dflt;
|
||||
this.fld__wiki_id = flds.Add_int_pkey("wiki_id");
|
||||
this.fld__wiki_domain = flds.Add_str("wiki_domain", 255); // EX: "en.wikipedia.org"
|
||||
this.fld__wiki_name = flds.Add_str("wiki_name", 255); // EX: "English Wikipedia"
|
||||
this.fld__wiki_core_url = flds.Add_str("wiki_core_url", 255); // EX: "/xowa/wiki/en.wikipedia.org/en.wikipedia.org-core.xowa"
|
||||
this.fld__wiki_data = flds.Add_text("wiki_data"); // EX: '{category_level="1",search_level="2", ...}'
|
||||
this.fld__wiki_json = flds.Add_text("wiki_json"); // EX: '{category_level="1",search_level="2", ...}'
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public String Tbl_name() {return tbl_name;} private final String tbl_name;
|
||||
public void Create_tbl() {
|
||||
conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));}
|
||||
public boolean Upsert(int id, String domain, Io_url core_url, String json) {
|
||||
return Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__wiki_id), id, domain, core_url.Xto_api(), json);
|
||||
}
|
||||
public void Insert(int id, String domain, String name, String core_url, String data) {
|
||||
conn.Stmt_insert(tbl_name, flds).Val_int(fld__wiki_id, id)
|
||||
.Val_str(fld__wiki_domain, domain).Val_str(fld__wiki_name, name)
|
||||
.Val_str(fld__wiki_core_url, core_url).Val_str(fld__wiki_data, data)
|
||||
.Exec_insert()
|
||||
;
|
||||
}
|
||||
public boolean Upsert(int id, String domain, String name, Io_url core_url) {
|
||||
return Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__wiki_id), id, domain, name, core_url.Xto_api(), "");
|
||||
}
|
||||
public Xou_wiki_itm[] Select_all() {
|
||||
public Xowdir_wiki_itm[] Select_all() {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto();
|
||||
try {
|
||||
List_adp list = List_adp_.New();
|
||||
while (rdr.Move_next()) {
|
||||
list.Add(Make(rdr));
|
||||
}
|
||||
return (Xou_wiki_itm[])list.To_ary_and_clear(Xou_wiki_itm.class);
|
||||
return (Xowdir_wiki_itm[])list.To_ary_and_clear(Xowdir_wiki_itm.class);
|
||||
}
|
||||
finally {rdr.Rls();}
|
||||
}
|
||||
public Xou_wiki_itm Select_by_key_or_null(String key) {
|
||||
public Xowdir_wiki_itm Select_by_key_or_null(String key) {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__wiki_domain).Crt_str(fld__wiki_domain, key).Exec_select__rls_auto();
|
||||
try {return rdr.Move_next() ? Make(rdr) : null;}
|
||||
finally {rdr.Rls();}
|
||||
}
|
||||
public Xou_wiki_itm Select_by_id_or_null(int id) {
|
||||
public Xowdir_wiki_itm Select_by_id_or_null(int id) {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__wiki_id).Crt_int(fld__wiki_id, id).Exec_select__rls_auto();
|
||||
try {return rdr.Move_next() ? Make(rdr) : null;}
|
||||
finally {rdr.Rls();}
|
||||
@ -69,10 +61,13 @@ public class Xou_wiki_tbl implements Db_tbl {
|
||||
public void Delete_by_id(int id) {
|
||||
conn.Stmt_delete(tbl_name, fld__wiki_id).Crt_int(fld__wiki_id, id).Exec_delete();
|
||||
}
|
||||
private Xou_wiki_itm Make(Db_rdr rdr) {
|
||||
return new Xou_wiki_itm(rdr.Read_int(fld__wiki_id), rdr.Read_str(fld__wiki_domain), rdr.Read_str(fld__wiki_name), Io_url_.new_fil_(rdr.Read_str(fld__wiki_core_url)), rdr.Read_str(fld__wiki_data));
|
||||
private Xowdir_wiki_itm Make(Db_rdr rdr) {
|
||||
return new Xowdir_wiki_itm
|
||||
( rdr.Read_int(fld__wiki_id), rdr.Read_str(fld__wiki_domain)
|
||||
, Io_url_.new_fil_(rdr.Read_str(fld__wiki_core_url))
|
||||
, Xowdir_wiki_json.New_by_json(json_parser, rdr.Read_str(fld__wiki_json))
|
||||
);
|
||||
}
|
||||
|
||||
public void Rls() {}
|
||||
|
||||
public static final String Tbl_name_dflt = "user_wiki";
|
@ -15,14 +15,14 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
import gplx.xowa.addons.wikis.directorys.dbs.*;
|
||||
import gplx.xowa.htmls.bridges.*;
|
||||
public class Xouw_itm_bridge implements Bridge_cmd_itm {
|
||||
private Xouw_itm_mgr itm_mgr;
|
||||
public class Xowdir_item_bridge implements Bridge_cmd_itm {
|
||||
private Xowdir_item_mgr itm_mgr;
|
||||
public void Init_by_app(Xoa_app app) {
|
||||
this.itm_mgr = new Xouw_itm_mgr(app);
|
||||
this.itm_mgr = new Xowdir_item_mgr(app);
|
||||
}
|
||||
public String Exec(Json_nde data) {
|
||||
byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Bridge_cmd_mgr.Msg__proc, null), Byte_ascii.Max_7_bit);
|
||||
@ -41,6 +41,6 @@ public class Xouw_itm_bridge implements Bridge_cmd_itm {
|
||||
.Add_str_byte("delete" , Proc__delete)
|
||||
;
|
||||
|
||||
public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("user.wiki.itm.exec");
|
||||
public static final Xouw_itm_bridge Prototype = new Xouw_itm_bridge(); Xouw_itm_bridge() {}
|
||||
public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("wiki.directory.item");
|
||||
public static final Xowdir_item_bridge Prototype = new Xowdir_item_bridge(); Xowdir_item_bridge() {}
|
||||
}
|
@ -15,25 +15,26 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
import gplx.core.ios.*;
|
||||
import gplx.langs.mustaches.*; import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
public class Xouw_itm_doc implements Mustache_doc_itm {
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
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;
|
||||
public Xouw_itm_doc(int id, String domain, String name, String dir) {
|
||||
private final String domain, name, dir, mainpage;
|
||||
public Xowdir_item_doc(int id, String domain, String name, String dir, String mainpage) {
|
||||
this.mode_is_new = id == -1;
|
||||
this.id = id;
|
||||
this.domain = domain;
|
||||
this.name = name;
|
||||
this.dir = dir;
|
||||
this.mainpage = mainpage;
|
||||
}
|
||||
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 return false;
|
||||
return true;
|
||||
}
|
||||
@ -42,11 +43,11 @@ public class Xouw_itm_doc implements Mustache_doc_itm {
|
||||
return Mustache_doc_itm_.Ary__empty;
|
||||
}
|
||||
|
||||
public static final Xouw_itm_doc[] Ary_empty = new Xouw_itm_doc[0];
|
||||
public static Xouw_itm_doc New(Xou_wiki_itm itm) {return new Xouw_itm_doc(itm.Id(), itm.Domain(), itm.Name(), itm.Url().OwnerDir().Xto_api());}
|
||||
public static Xouw_itm_doc[] New_ary(Xou_wiki_itm[] itms_ary) {
|
||||
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_ary(Xowdir_wiki_itm[] itms_ary) {
|
||||
int len = itms_ary.length;
|
||||
Xouw_itm_doc[] rv = new Xouw_itm_doc[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]);
|
||||
}
|
@ -15,23 +15,23 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*;
|
||||
import gplx.dbs.*; import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
class Xouw_itm_html extends Xow_special_wtr__base {
|
||||
import gplx.dbs.*; import gplx.xowa.addons.wikis.directorys.dbs.*;
|
||||
class Xowdir_item_html extends Xow_special_wtr__base {
|
||||
private final String domain;
|
||||
public Xouw_itm_html(String domain) {
|
||||
public Xowdir_item_html(String domain) {
|
||||
this.domain = domain;
|
||||
}
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "user", "wiki", "itm");}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xouw_itm.mustache.html");}
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return Addon_dir(app);}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xowdir_item.mustache.html");}
|
||||
@Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) {
|
||||
Db_conn conn = app.User().User_db_mgr().Conn();
|
||||
Xouw_db_mgr db_mgr = new Xouw_db_mgr(conn);
|
||||
Xou_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_key_or_null(domain);
|
||||
Xowdir_db_mgr db_mgr = new Xowdir_db_mgr(conn);
|
||||
Xowdir_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_key_or_null(domain);
|
||||
if (itm == null)
|
||||
itm = new Xou_wiki_itm(-1, "", "", Io_url_.Empty, "");
|
||||
return Xouw_itm_doc.New(itm);
|
||||
itm = new Xowdir_wiki_itm(-1, "", Io_url_.Empty, Xowdir_wiki_json.New_dflt());
|
||||
return Xowdir_item_doc.New(itm);
|
||||
}
|
||||
@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();
|
||||
@ -39,8 +39,12 @@ class Xouw_itm_html extends Xow_special_wtr__base {
|
||||
Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xolog (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xoajax (head_tags, app.Fsys_mgr().Http_root(), app);
|
||||
Xopg_alertify_.Add_tags (head_tags, app.Fsys_mgr().Http_root());
|
||||
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xouw_itm.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xouw_itm.js")));
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xowdir_item.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xowdir_item.js")));
|
||||
}
|
||||
public static Io_url Addon_dir(Xoa_app app) {
|
||||
return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "directory", "item");
|
||||
}
|
||||
}
|
@ -0,0 +1,148 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.dbs.sys.*; import gplx.xowa.addons.wikis.directorys.dbs.*; import gplx.xowa.addons.wikis.directorys.specials.items.bldrs.*;
|
||||
import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*;
|
||||
import gplx.xowa.langs.cases.*;
|
||||
class Xowdir_item_mgr {
|
||||
private final Xoa_app app;
|
||||
private final Json_wtr json_wtr = new Json_wtr();
|
||||
private gplx.xowa.guis.cbks.Xog_cbk_trg cbk_trg = gplx.xowa.guis.cbks.Xog_cbk_trg.New(Xowdir_item_special.Prototype.Special__meta().Ttl_bry());
|
||||
public Xowdir_item_mgr(Xoa_app app) {
|
||||
this.app = app;
|
||||
}
|
||||
public void Save(Json_nde args) {Save(args.Get_as_int("id"), args.Get_as_str("domain"), args.Get_as_str("name"), args.Get_as_str("dir"), args.Get_as_str("mainpage"));}
|
||||
public void Save(int id, String domain, String name, String dir_str, String mainpage_name) {
|
||||
boolean itm_is_new = false;
|
||||
// get next id if none provided
|
||||
if (id == -1) {
|
||||
itm_is_new = true;
|
||||
Db_sys_mgr sys_mgr = new Db_sys_mgr(app.User().User_db_mgr().Conn());
|
||||
id = sys_mgr.Autonum_next("user.wikis.id");
|
||||
}
|
||||
|
||||
Xowdir_db_mgr db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn());
|
||||
Io_url dir_url = Io_url_.new_dir_infer(dir_str);
|
||||
|
||||
// validate
|
||||
String err_msg = Validate(app, db_mgr, domain, name, dir_url, mainpage_name);
|
||||
if (err_msg != null) {
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.wiki_directory.notify__recv", gplx.core.gfobjs.Gfobj_nde.New().Add_str("msg_text", err_msg));
|
||||
return;
|
||||
}
|
||||
|
||||
// upsert into user_db.wiki_list
|
||||
Io_url fil_url = dir_url.GenSubFil(domain + ".xowa");
|
||||
Xowdir_wiki_json json = Xowdir_wiki_json.New_dflt();
|
||||
json.Name_(name);
|
||||
db_mgr.Tbl__wiki().Upsert(id, domain, fil_url, json.To_str(json_wtr));
|
||||
|
||||
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);
|
||||
|
||||
// load it
|
||||
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);
|
||||
}
|
||||
else {
|
||||
// navigate back to wiki_directory
|
||||
app.Gui__cbk_mgr().Send_redirect(cbk_trg, "/site/home/wiki/Special:XowaWikiDirectory");
|
||||
}
|
||||
}
|
||||
public void Delete(Json_nde args) {Delete(args.Get_as_int("id"));}
|
||||
public void Delete(int id) {
|
||||
// get item by id
|
||||
Xowdir_db_mgr db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn());
|
||||
Xowdir_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_id_or_null(id);
|
||||
if (itm == null) throw Err_.new_wo_type("wiki does not exist", "id", id);
|
||||
|
||||
// delete it
|
||||
db_mgr.Tbl__wiki().Delete_by_id(id);
|
||||
|
||||
// navigate back to wiki_directory
|
||||
app.Gui__cbk_mgr().Send_redirect(cbk_trg, "/site/home/wiki/Special:XowaWikiDirectory");
|
||||
}
|
||||
private String Validate(Xoa_app app, Xowdir_db_mgr db_mgr, String domain, String name, Io_url dir_url, String mainpage_name) {
|
||||
// domain
|
||||
if (String_.Len_eq_0(domain))
|
||||
return "Domain cannot be empty: " + domain;
|
||||
if (db_mgr.Tbl__wiki().Select_by_key_or_null(domain) != null)
|
||||
return "Domain already exists: " + domain;
|
||||
if (String_.Len(domain) > 63)
|
||||
return "Domain must be 63 characters or less: " + domain;
|
||||
if (!Is_valid_domain_name(Bry_.new_u8(domain)))
|
||||
return "Domain is invalid; can only have letters, numbers, or a dot. If a dash exists, it cannot be at the start or the end: " + domain ;
|
||||
|
||||
// name
|
||||
if (String_.Len_eq_0(name))
|
||||
return "Name cannot be empty: " + name;
|
||||
if (String_.Len(name) > 255)
|
||||
return "Name must: be 255 characters or less: " + name;
|
||||
|
||||
// dir
|
||||
String dir_str = dir_url.Raw();
|
||||
if (String_.Len_eq_0(dir_str))
|
||||
return "Folder cannot be empty: " + dir_str;
|
||||
Io_mgr.Instance.CreateDirIfAbsent(dir_url);
|
||||
if (!Io_mgr.Instance.ExistsDir(dir_url))
|
||||
return "Folder could not be created: " + dir_str;
|
||||
|
||||
// mainpage_name
|
||||
byte[] mainpage_name_bry = Bry_.new_u8(mainpage_name);
|
||||
Xoa_ttl ttl = Xoa_ttl.Parse(app.User().Wikii(), mainpage_name_bry);
|
||||
if (ttl == null)
|
||||
return "Main Page has invalid characters. Please see the new wiki help page for more info: " + mainpage_name;
|
||||
|
||||
Bry_bfr tmp = Bry_bfr_.New();
|
||||
byte[] ucase_1st = app.User().Wikii().Lang().Case_mgr().Case_build_1st_upper(tmp, mainpage_name_bry, 0, mainpage_name_bry.length);
|
||||
if (!Bry_.Eq(mainpage_name_bry, ucase_1st))
|
||||
return "Main Page must start with an uppercase letter.";
|
||||
|
||||
// valid returns null
|
||||
return null;
|
||||
}
|
||||
private static boolean Is_valid_domain_name(byte[] src) {
|
||||
int len = src.length;
|
||||
if (len > 63) return false;
|
||||
for (int i = 0; i < len; i++) {
|
||||
byte b = src[i];
|
||||
// alpha-num is valid
|
||||
if (Byte_ascii.Is_ltr(b) || Byte_ascii.Is_num(b))
|
||||
continue;
|
||||
|
||||
// hyphens are only valid at start or end
|
||||
if (b == Byte_ascii.Dash) {
|
||||
if (i != 0 || i != len - 1)
|
||||
continue;
|
||||
}
|
||||
|
||||
// allow dots; EX: en.wikipedia.org
|
||||
if (b == Byte_ascii.Dot)
|
||||
continue;
|
||||
|
||||
// else, invalid
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -15,18 +15,18 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
import gplx.xowa.specials.*; import gplx.core.net.qargs.*;
|
||||
public class Xouw_itm_special implements Xow_special_page {
|
||||
public class Xowdir_item_special implements Xow_special_page {
|
||||
public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) {
|
||||
Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary());
|
||||
|
||||
String domain = url_args.Read_str_or("domain", "");
|
||||
|
||||
new Xouw_itm_html(domain).Bld_page_by_mustache(wiki.App(), page, this);
|
||||
new Xowdir_item_html(domain).Bld_page_by_mustache(wiki.App(), page, this);
|
||||
}
|
||||
Xouw_itm_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
Xowdir_item_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta;
|
||||
public Xow_special_page Special__clone() {return this;}
|
||||
public static final Xow_special_page Prototype = new Xouw_itm_special(Xow_special_meta.New_xo("XowaWikiItem", "Wiki Data"));
|
||||
public static final Xow_special_page Prototype = new Xowdir_item_special(Xow_special_meta.New_xo("XowaWikiItem", "Wiki Details"));
|
||||
}
|
@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
import gplx.core.ios.streams.*;
|
||||
public class Xodb_wiki_data {
|
||||
public Xodb_wiki_data(String domain, Io_url core_url) {
|
@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
import gplx.dbs.*;
|
||||
public class Xodb_wiki_db implements Db_tbl_owner {
|
||||
private final Ordered_hash tbls = Ordered_hash_.New();
|
@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
public class Xodb_wiki_db_tid {
|
||||
public static final int Tid__core = 0;
|
||||
}
|
@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
import gplx.dbs.*;
|
||||
public class Xodb_wiki_mgr {
|
||||
public Xodb_wiki_mgr(String domain) {
|
@ -15,11 +15,11 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
import gplx.dbs.*; import gplx.dbs.cfgs.*;
|
||||
import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs.*;
|
||||
import gplx.xowa.addons.wikis.directorys.dbs.*;
|
||||
import gplx.xowa.addons.wikis.directorys.specials.items.bldrs.*;
|
||||
public class Xopg_db_mgr {
|
||||
public static int Create(Xodb_wiki_db core_db, int ns_id, byte[] ttl_page_db, byte[] text_raw) {
|
||||
Db_cfg_tbl cfg_tbl = Db_cfg_tbl.Get_by_key(core_db, Xowd_cfg_tbl_.Tbl_name);
|
@ -15,15 +15,15 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.sys.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.core.ios.streams.*;
|
||||
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.site_stats.*;
|
||||
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.users.wikis.regys.dbs.*;
|
||||
import gplx.xowa.addons.wikis.directorys.dbs.*;
|
||||
public class Xow_db_mkr {
|
||||
public static Xodb_wiki_mgr Create_wiki(Xodb_wiki_data data) {
|
||||
public static Xodb_wiki_mgr Create_wiki(Xodb_wiki_data data, 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()));
|
||||
@ -58,8 +58,8 @@ public class Xow_db_mkr {
|
||||
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));
|
||||
|
||||
// insert data: page
|
||||
cfg_tbl.Insert_str(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, "Main_Page");
|
||||
Xopg_db_mgr.Create(core_db, Xow_ns_.Tid__main, Bry_.new_a7("Main_Page"), Bry_.new_a7("Main page created"));
|
||||
cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, mainpage_name);
|
||||
Xopg_db_mgr.Create(core_db, Xow_ns_.Tid__main, mainpage_name, mainpage_text);
|
||||
|
||||
// create tbls: fsdb
|
||||
core_db.Tbls__add(Bool_.Y
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.directorys.specials.items.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
public class Xow_wiki_factory {
|
||||
public static Xowe_wiki Load_personal(Xoae_app app, byte[] domain, Io_url dir_url) {
|
||||
// create the rv
|
||||
Xowe_wiki rv = new Xowe_wiki
|
||||
( app
|
||||
, gplx.xowa.langs.Xol_lang_itm_.Lang_en_make(app.Lang_mgr())
|
||||
, gplx.xowa.wikis.nss.Xow_ns_mgr_.default_(gplx.xowa.langs.cases.Xol_case_mgr_.U8())
|
||||
, gplx.xowa.wikis.domains.Xow_domain_itm_.parse(domain)
|
||||
, dir_url);
|
||||
|
||||
// register it in app.Wikis; note that this must occur before initialization
|
||||
app.Wiki_mgr().Add(rv);
|
||||
|
||||
// do more initialization
|
||||
rv.Init_by_wiki__force_and_mark_inited();
|
||||
rv.Db_mgr_as_sql().Save_mgr().Create_enabled_(true);
|
||||
|
||||
// register it for the url-bar; EX: test.me.org/wiki/Main_Page
|
||||
app.User().Wikii().Xwiki_mgr().Add_by_atrs(domain, domain);
|
||||
|
||||
// add an xwiki to xowa.home
|
||||
rv.Xwiki_mgr().Add_by_atrs("xowa.home", "home");
|
||||
|
||||
// HACK: remove CC copyright message; should change to option
|
||||
rv.Msg_mgr().Get_or_make(Bry_.new_a7("wikimedia-copyright")).Atrs_set(Bry_.Empty, false, false);
|
||||
|
||||
return rv;
|
||||
}
|
||||
}
|
@ -15,13 +15,12 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
import gplx.core.ios.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
import gplx.langs.mustaches.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.dbs.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
class Xouw_list_doc implements Mustache_doc_itm {
|
||||
private final Xouw_itm_doc[] itms_ary;
|
||||
public Xouw_list_doc(Xouw_itm_doc[] itms_ary) {
|
||||
import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
class Xowdir_list_doc implements Mustache_doc_itm {
|
||||
private final Xowdir_item_doc[] itms_ary;
|
||||
public Xowdir_list_doc(Xowdir_item_doc[] itms_ary) {
|
||||
this.itms_ary = itms_ary;
|
||||
}
|
||||
public boolean Mustache__write(String key, Mustache_bfr bfr) {
|
@ -15,17 +15,17 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*;
|
||||
import gplx.dbs.*; import gplx.xowa.addons.users.wikis.regys.dbs.*; import gplx.xowa.addons.users.wikis.regys.specials.itms.*;
|
||||
class Xouw_list_html extends Xow_special_wtr__base {
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "user", "wiki", "list");}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xouw_list.mustache.html");}
|
||||
import gplx.dbs.*; import gplx.xowa.addons.wikis.directorys.dbs.*; import gplx.xowa.addons.wikis.directorys.specials.items.*;
|
||||
class Xowdir_list_html extends Xow_special_wtr__base {
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "directory", "list");}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xowdir_list.mustache.html");}
|
||||
@Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) {
|
||||
Db_conn conn = app.User().User_db_mgr().Conn();
|
||||
Xouw_db_mgr db_mgr = new Xouw_db_mgr(conn);
|
||||
Xou_wiki_itm[] itms_ary = db_mgr.Tbl__wiki().Select_all();
|
||||
return new Xouw_list_doc(Xouw_itm_doc.New_ary(itms_ary));
|
||||
Xowdir_db_mgr db_mgr = new Xowdir_db_mgr(conn);
|
||||
Xowdir_wiki_itm[] itms_ary = db_mgr.Tbl__wiki().Select_all();
|
||||
return new Xowdir_list_doc(Xowdir_item_doc.New_ary(itms_ary));
|
||||
}
|
||||
@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();
|
||||
@ -34,7 +34,7 @@ class Xouw_list_html extends Xow_special_wtr__base {
|
||||
Xopg_tag_wtr_.Add__xolog (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xoajax (head_tags, app.Fsys_mgr().Http_root(), app);
|
||||
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xouw_list.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xouw_list.js")));
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xowdir_list.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xowdir_list.js")));
|
||||
}
|
||||
}
|
@ -15,14 +15,14 @@ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.specials.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*; import gplx.xowa.addons.users.wikis.regys.specials.*;
|
||||
package gplx.xowa.addons.wikis.directorys.specials.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*; import gplx.xowa.addons.wikis.directorys.specials.*;
|
||||
import gplx.xowa.specials.*; import gplx.core.net.qargs.*;
|
||||
public class Xouw_list_special implements Xow_special_page {
|
||||
public class Xowdir_list_special implements Xow_special_page {
|
||||
public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) {
|
||||
new Xouw_list_html().Bld_page_by_mustache(wiki.App(), page, this);
|
||||
new Xowdir_list_html().Bld_page_by_mustache(wiki.App(), page, this);
|
||||
}
|
||||
Xouw_list_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
Xowdir_list_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta;
|
||||
public Xow_special_page Special__clone() {return this;}
|
||||
public static final Xow_special_page Prototype = new Xouw_list_special(Xow_special_meta.New_xo("XowaUserWikis", "Wikis"));
|
||||
public static final Xow_special_page Prototype = new Xowdir_list_special(Xow_special_meta.New_xo("XowaWikiDirectory", "Wiki List"));
|
||||
}
|
@ -75,7 +75,7 @@ public class Xow_file_mgr implements Gfo_invk {
|
||||
|
||||
// if non-wmf, set fsdb_mgr to fs.dir; DATE:2017-02-01
|
||||
if (wiki.Domain_tid() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__other) {
|
||||
String cfg_domain_str = wiki.Data__core_mgr().Db__core().Tbl__cfg().Select_str("xowa.bldr.session", "wiki_domain");
|
||||
String cfg_domain_str = wiki.Data__core_mgr().Db__core().Tbl__cfg().Select_str_or("xowa.bldr.session", "wiki_domain", wiki.Domain_str()); // NOTE: or is "wiki.domain" for user_wikis
|
||||
// FOLDER.RENAME: do not change to fs.dir if renamed; DATE:2017-02-06
|
||||
if (String_.Eq(cfg_domain_str, wiki.Domain_str())) {
|
||||
// wiki has not been renamed; use fs.dir
|
||||
|
@ -61,6 +61,8 @@ public class Xog_bnd_mgr implements Gfo_invk {
|
||||
, "xowa.gui.shortcuts.xowa.nav.system_data.cfg_app-1"
|
||||
, "xowa.gui.shortcuts.xowa.nav.system_data.cfg_lang-1"
|
||||
, "xowa.gui.shortcuts.xowa.nav.system_data.usr_history-1"
|
||||
, "xowa.gui.shortcuts.xowa.nav.personal.item-1"
|
||||
, "xowa.gui.shortcuts.xowa.nav.personal.list-1"
|
||||
, "xowa.gui.shortcuts.xowa.gui.font.increase-1"
|
||||
, "xowa.gui.shortcuts.xowa.gui.font.decrease-1"
|
||||
, "xowa.gui.shortcuts.xowa.gui.font.reset-1"
|
||||
@ -238,6 +240,8 @@ public class Xog_bnd_mgr implements Gfo_invk {
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_setup_import_from_script , Xog_bnd_box_.Tid_browser , "");
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_setup_maintenance , Xog_bnd_box_.Tid_browser , "");
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_setup_download , Xog_bnd_box_.Tid_browser , "");
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_personal_item , Xog_bnd_box_.Tid_browser , "");
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_personal_list , Xog_bnd_box_.Tid_browser , "");
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_log_session , Xog_bnd_box_.Tid_browser , "");
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_app , Xog_bnd_box_.Tid_browser , "");
|
||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_lang , Xog_bnd_box_.Tid_browser , "");
|
||||
|
@ -29,4 +29,7 @@ public class Xog_cbk_mgr { // INSTANCE:app
|
||||
wkr.Send_json(trg, func, data);
|
||||
}
|
||||
}
|
||||
public void Send_redirect(Xog_cbk_trg trg, String url) {
|
||||
this.Send_json(trg, "xo.server.redirect__recv", gplx.core.gfobjs.Gfobj_nde.New().Add_str("url", url));
|
||||
}
|
||||
}
|
||||
|
@ -50,6 +50,9 @@ public class Xog_cmd_itm_ {
|
||||
, Key_nav_system_data_cfg_lang = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.cfg_lang" , "Special:XowaSystemData?type=cfg_lang")
|
||||
, Key_nav_system_data_usr_history = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.usr_history" , "Special:XowaSystemData?type=usr_history")
|
||||
|
||||
, Key_nav_personal_item = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.personal.item" , "Special:XowaWikiItem")
|
||||
, Key_nav_personal_list = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.personal.list" , "Special:XowaWikiDirectory")
|
||||
|
||||
, Key_gui_font_increase = new_dflt_(Xog_ctg_itm_.Tid_font , "xowa.gui.font.increase")
|
||||
, Key_gui_font_decrease = new_dflt_(Xog_ctg_itm_.Tid_font , "xowa.gui.font.decrease")
|
||||
, Key_gui_font_reset = new_dflt_(Xog_ctg_itm_.Tid_font , "xowa.gui.font.reset")
|
||||
|
@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.xtns.math.texvcs.lxrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.math.*; import gplx.xowa.xtns.math.texvcs.*;
|
||||
import gplx.xowa.xtns.math.texvcs.tkns.*; import gplx.xowa.xtns.math.texvcs.funcs.*;
|
||||
class Texvc_lxr__curly_bgn implements Texvc_lxr {
|
||||
public class Texvc_lxr__curly_bgn implements Texvc_lxr {
|
||||
public int Tid() {return Texvc_lxr_.Tid__curly_bgn;}
|
||||
public int Make_tkn(Texvc_ctx ctx, Texvc_root root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
|
||||
int uid = root.Regy__add(Texvc_tkn_.Tid__curly, Texvc_tkn_mkr.Singleton_id__null, bgn_pos, cur_pos, new Texvc_tkn__func(Texvc_func_itm_.Itm__arg));
|
||||
@ -25,12 +25,3 @@ class Texvc_lxr__curly_bgn implements Texvc_lxr {
|
||||
return cur_pos;
|
||||
}
|
||||
}
|
||||
class Texvc_lxr__curly_end implements Texvc_lxr {
|
||||
public int Tid() {return Texvc_lxr_.Tid__curly_end;}
|
||||
public int Make_tkn(Texvc_ctx ctx, Texvc_root root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
|
||||
int bgn_uid = ctx.Stack().Pop_or_fail();
|
||||
root.Regy__take_from_root_end(bgn_uid);
|
||||
root.Regy__update_end(bgn_uid, cur_pos);
|
||||
return cur_pos;
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.xtns.math.texvcs.lxrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.math.*; import gplx.xowa.xtns.math.texvcs.*;
|
||||
import gplx.xowa.xtns.math.texvcs.tkns.*;
|
||||
public class Texvc_lxr__curly_end implements Texvc_lxr {
|
||||
public int Tid() {return Texvc_lxr_.Tid__curly_end;}
|
||||
public int Make_tkn(Texvc_ctx ctx, Texvc_root root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
|
||||
int bgn_uid = ctx.Stack().Pop_or_fail();
|
||||
root.Regy__take_from_root_end(bgn_uid);
|
||||
root.Regy__update_end(bgn_uid, cur_pos);
|
||||
return cur_pos;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user