User_wiki: Change input from file to folder

v3.3.4
gnosygnu 8 years ago
parent 6d327749fc
commit ff869ecfc3

@ -47,6 +47,7 @@ public class Io_url_ {
public static Io_url lnx_dir_(String raw) {return new_inf_(EndsWith_or_add(raw, Op_sys.Lnx.Fsys_dir_spr_str()), IoUrlInfo_.Lnx);}
public static Io_url new_fil_(String raw) {return new_any_(raw);}
public static Io_url new_dir_(String raw) {return new_any_(raw);} // NOTE: for now, same as new_fil; stack overflow when doing new_dir
public static Io_url new_dir_infer(String raw) {return Op_sys.Cur().Tid_is_wnt() ? wnt_dir_(raw) : lnx_dir_(raw);}
public static Io_url new_any_(String raw) {return new_inf_(raw, IoUrlInfoRegy.Instance.Match(raw));}
public static Io_url new_inf_(String raw, IoUrlInfo info) {return String_.Eq(raw, "") ? Io_url_.Empty : new Io_url(raw, info);}
public static Io_url New__http_or_fail(String raw) {return New__http_or_fail(Bry_.new_u8(raw));}

@ -178,7 +178,6 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
public void Init_by_wiki() {Init_assert();}
public Xowe_wiki Init_assert() {if (init_needed) Init_wiki(app.Usere()); return this;}
public void Init_db_mgr() {
int j = 1;
Io_url core_db_url = gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil(this);
if (core_db_url == null) {
tdb_fsys_mgr.Scan_dirs();

@ -42,8 +42,8 @@ public class Xou_wiki_tbl implements Db_tbl {
.Exec_insert()
;
}
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, domain, name, file, "");
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() {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto();

@ -21,19 +21,19 @@ 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) {
private final String domain, name, dir;
public Xouw_itm_doc(int id, String domain, String name, String dir) {
this.mode_is_new = id == -1;
this.id = id;
this.domain = domain;
this.name = name;
this.file = file;
this.dir = dir;
}
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, "file")) bfr.Add_str_u8(file);
else if (String_.Eq(key, "dir")) bfr.Add_str_u8(dir);
else return false;
return true;
}

@ -31,7 +31,7 @@ class Xouw_itm_html extends Xow_special_wtr__base {
Xou_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 new Xouw_itm_doc(itm.Id(), itm.Domain(), itm.Name(), itm.Url().Xto_api());
return new Xouw_itm_doc(itm.Id(), itm.Domain(), itm.Name(), itm.Url().OwnerDir().Xto_api());
}
@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();

@ -26,9 +26,9 @@ class Xouw_itm_mgr {
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("file"));
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 url_str) {
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) {
@ -39,8 +39,10 @@ class Xouw_itm_mgr {
// insert into user_db.user_wiki
Xouw_db_mgr db_mgr = new Xouw_db_mgr(app.User().User_db_mgr().Conn());
db_mgr.Tbl__wiki().Upsert(id, domain, name, url_str);
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, Io_url_.new_fil_(url_str)));
Xow_db_mkr.Create_wiki(new Xodb_wiki_data(domain, fil_url));
}
}

@ -28,5 +28,5 @@ public class Xouw_itm_special implements Xow_special_page {
Xouw_itm_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("XowaWikiRegister", "Register Wiki"));
public static final Xow_special_page Prototype = new Xouw_itm_special(Xow_special_meta.New_xo("XowaWikiItem", "Wiki Data"));
}

@ -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; 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.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.*;
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.*;
Loading…
Cancel
Save