1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

User_wiki: Add dirty implementation for creating user wiki

This commit is contained in:
gnosygnu
2016-10-29 10:20:11 -04:00
parent 2abefa1ab9
commit 2c023c2c54
8 changed files with 49 additions and 18 deletions

View File

@@ -16,7 +16,7 @@ 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.*;
import gplx.dbs.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xou_wiki_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld__wiki_id, fld__wiki_type, fld__wiki_domain, fld__wiki_name, fld__wiki_data_date, fld__wiki_core_url, fld__wiki_data;
@@ -28,8 +28,8 @@ public class Xou_wiki_tbl implements Db_tbl {
this.fld__wiki_type = flds.Add_int("wiki_type"); // enum: 0=user; 1=wmf; 2=wikia;
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_data_date = flds.Add_str("wiki_data_date", 16); // EX: "20161001"
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_date = flds.Add_str("wiki_data_date", 16); // EX: "20161001"
this.fld__wiki_data = flds.Add_text("wiki_data"); // EX: '{category_level="1",search_level="2", ...}'
conn.Rls_reg(this);
}
@@ -45,17 +45,8 @@ public class Xou_wiki_tbl implements Db_tbl {
.Exec_insert()
;
}
public void Upsert(int id, String key, String name, String file) {
if (id == -1) {
}
else {
conn.Stmt_update_exclude(tbl_name, flds, fld__wiki_id)
.Val_int(fld__wiki_type, 0).Val_str(fld__wiki_domain, key).Val_str(fld__wiki_name, name)
.Val_str(fld__wiki_data_date, "").Val_str(fld__wiki_core_url, file).Val_str(fld__wiki_data, "")
.Crt_int(fld__wiki_id, id)
.Exec_update()
;
}
public boolean Upsert(int id, String domain, String name, String file) {
return Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__wiki_id), id, 0, domain, name, file, "", "");
}
public Xou_wiki_itm[] Select_all() {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto();

View File

@@ -24,15 +24,34 @@ public class Xouw_itm_bridge implements gplx.xowa.htmls.bridges.Bridge_cmd_itm {
this.app = app;
}
public String Exec(Json_nde data) {
Xouw_db_mgr db_mgr = new Xouw_db_mgr(app.User().User_db_mgr().Conn());
byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Msg__proc, null), Byte_ascii.Max_7_bit);
Json_nde args = data.Get_kv(Msg__args).Val_as_nde();
switch (proc_id) {
case Proc__save: db_mgr.Tbl__wiki().Upsert(args.Get_as_int("id"), args.Get_as_str("key"), args.Get_as_str("name"), args.Get_as_str("file")); break;
case Proc__save: Save(args); break;
default: throw Err_.new_unhandled_default(proc_id);
}
return "";
}
private void Save(Json_nde args) {
Xouw_db_mgr db_mgr = new Xouw_db_mgr(app.User().User_db_mgr().Conn());
int id = args.Get_as_int("id");
if (id == -1) {
id = 2;
}
String domain = args.Get_as_str("key");
String url = args.Get_as_str("file");
if (db_mgr.Tbl__wiki().Upsert(id, domain, args.Get_as_str("name"), url)) {
gplx.xowa.wikis.nss.Xow_ns_mgr ns_mgr = gplx.xowa.wikis.nss.Xow_ns_mgr_.default_(gplx.xowa.langs.cases.Xol_case_mgr_.U8());
Xow_wiki_.Create(app, ns_mgr, domain, Io_url_.new_fil_(url).OwnerDir());
Xowe_wiki wiki = new Xowe_wiki((Xoae_app)app, app.Lang_mgr().Get_by_or_en(Bry_.Empty), ns_mgr, gplx.xowa.wikis.domains.Xow_domain_itm_.parse(Bry_.new_u8(domain)), Io_url_.new_fil_(url).OwnerDir());
gplx.fsdb.Fsdb_db_mgr__v2_bldr.Make_core_file_main(wiki, Io_url_.new_fil_(url), domain, gplx.xowa.wikis.data.Xow_db_layout.Itm_all);
wiki.Init_db_mgr();
wiki.Init_by_wiki__force_and_mark_inited();
wiki.Data__core_mgr().Dbs__make_by_id(1, gplx.xowa.wikis.data.Xow_db_file_.Tid__core, "", 0, ".xowa");
wiki.Data__core_mgr().Db__core().Tbl__db().Commit_all(wiki.Data__core_mgr());
wiki.Db_mgr().Save_mgr().Data_create(Xoa_ttl.Parse(wiki, Bry_.new_a7("Main_Page")), Bry_.new_a7("Main page created"));
}
}
private static final byte[] Msg__proc = Bry_.new_a7("proc"), Msg__args = Bry_.new_a7("args");
private static final byte Proc__save = 0;
private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs()

View File

@@ -19,9 +19,11 @@ package gplx.xowa.addons.users.wikis.regys.specials.itms; import gplx.*; import
import gplx.core.ios.*;
import gplx.langs.mustaches.*;
class Xouw_itm_doc implements Mustache_doc_itm {
private final boolean mode_is_new;
private final int id;
private final String domain, name, file;
public Xouw_itm_doc(int id, String domain, String name, String file) {
this.mode_is_new = id == -1;
this.id = id;
this.domain = domain;
this.name = name;
@@ -36,6 +38,7 @@ class Xouw_itm_doc implements Mustache_doc_itm {
return true;
}
public Mustache_doc_itm[] Mustache__subs(String key) {
if (String_.Eq(key, "mode_is_new")) return Mustache_doc_itm_.Ary__bool(mode_is_new);
return Mustache_doc_itm_.Ary__empty;
}
public static final Xouw_itm_doc[] Ary_empty = new Xouw_itm_doc[0];