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:
@@ -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();
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user