Full-text search: Add autosave options; read query from url args

pull/620/head
gnosygnu 8 years ago
parent 37b78543af
commit 062d958ead

@ -30,6 +30,7 @@ public class Gfo_qarg_mgr {
public byte[] Read_bry_or_empty(byte[] key) {return Read_bry_or(key, Bry_.Empty);}
public byte[] Read_bry_or_null(String key) {return Read_bry_or(Bry_.new_u8(key), null);}
public byte[] Read_bry_or_null(byte[] key) {return Read_bry_or(key, null);}
public byte[] Read_bry_or(String key, byte[] or) {return Read_bry_or(Bry_.new_u8(key), or);}
public byte[] Read_bry_or(byte[] key, byte[] or) {
Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(key);
return arg == null ? or : arg.Val_bry();

@ -40,13 +40,15 @@ class Xosearch_fulltext_svc implements Gfo_invk {
Xocfg_mgr cfg_mgr = app.Cfg();
Xosearch_search_args thread_args = Xosearch_search_args.New_by_json(args);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.case_match", thread_args.case_match);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.auto_wildcard_bgn", thread_args.auto_wildcard_bgn);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.auto_wildcard_end", thread_args.auto_wildcard_end);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.expand_matches_section", thread_args.expand_matches_section);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.show_all_matches", thread_args.show_all_matches);
cfg_mgr.Get_int_app_or ("xowa.addon.search.fulltext.special.max_pages_per_wiki", thread_args.max_pages_per_wiki);
cfg_mgr.Get_str_app_or ("xowa.addon.search.fulltext.special.namespaces", thread_args.namespaces);
if (cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.options.autosave_enabled", true)) {
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.case_match", thread_args.case_match);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.auto_wildcard_bgn", thread_args.auto_wildcard_bgn);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.auto_wildcard_end", thread_args.auto_wildcard_end);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.expand_matches_section", thread_args.expand_matches_section);
cfg_mgr.Set_bool_app("xowa.addon.search.fulltext.special.show_all_matches", thread_args.show_all_matches);
cfg_mgr.Get_int_app_or ("xowa.addon.search.fulltext.special.max_pages_per_wiki", thread_args.max_pages_per_wiki);
cfg_mgr.Get_str_app_or ("xowa.addon.search.fulltext.special.namespaces", thread_args.namespaces);
}
gplx.core.threads.Thread_adp_.Start_by_val("search", Cancelable_.Never, this, Invk__search, thread_args);
}

@ -16,14 +16,16 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
package gplx.xowa.addons.wikis.searchs.fulltexts.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
import gplx.langs.mustaches.*;
public class Xosearch_fulltext_doc implements Mustache_doc_itm {
private final byte[] query;
private final boolean case_match, auto_wildcard_bgn, auto_wildcard_end, expand_matches_section, show_all_matches;
private final int max_pages_per_wiki;
private final String wikis, namespaces;
public Xosearch_fulltext_doc
( boolean case_match, boolean auto_wildcard_bgn, boolean auto_wildcard_end
( byte[] query, boolean case_match, boolean auto_wildcard_bgn, boolean auto_wildcard_end
, boolean expand_matches_section, boolean show_all_matches
, int max_pages_per_wiki
, String wikis, String namespaces) {
this.query = query;
this.case_match = case_match;
this.auto_wildcard_bgn = auto_wildcard_bgn;
this.auto_wildcard_end = auto_wildcard_end;
@ -40,6 +42,8 @@ public class Xosearch_fulltext_doc implements Mustache_doc_itm {
bfr.Add_str_u8(namespaces);
else if (String_.Eq(key, "max_pages_per_wiki"))
bfr.Add_int(max_pages_per_wiki);
else if (String_.Eq(key, "query"))
bfr.Add_bry(query);
else
return false;
return true;

@ -17,14 +17,16 @@ package gplx.xowa.addons.wikis.searchs.fulltexts.specials; import gplx.*; import
import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*;
import gplx.dbs.*;
class Xosearch_fulltext_html extends Xow_special_wtr__base {
private final byte[] query;
private final boolean case_match, auto_wildcard_bgn, auto_wildcard_end, expand_matches_section, show_all_matches;
private final int max_pages_per_wiki;
private final String wikis, namespaces;
public Xosearch_fulltext_html
( boolean case_match, boolean auto_wildcard_bgn, boolean auto_wildcard_end
( byte[] query, boolean case_match, boolean auto_wildcard_bgn, boolean auto_wildcard_end
, boolean expand_matches_section, boolean show_all_matches
, int max_pages_per_wiki
, String wikis, String namespaces) {
this.query = query;
this.case_match = case_match;
this.auto_wildcard_bgn = auto_wildcard_bgn;
this.auto_wildcard_end = auto_wildcard_end;
@ -38,7 +40,7 @@ class Xosearch_fulltext_html extends Xow_special_wtr__base {
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xosearch_fulltext.template.html");}
@Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) {
return new Xosearch_fulltext_doc
( case_match, auto_wildcard_bgn, auto_wildcard_end
( query, case_match, auto_wildcard_bgn, auto_wildcard_end
, expand_matches_section, show_all_matches
, max_pages_per_wiki, wikis, namespaces);
}

@ -18,11 +18,15 @@ import gplx.xowa.specials.*; import gplx.core.net.qargs.*;
import gplx.xowa.addons.apps.cfgs.*;
public class Xosearch_fulltext_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());
// get qry if any
Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary());
byte[] query = url_args.Read_bry_or("query", Bry_.Empty);
// get options and create page
Xocfg_mgr cfg_mgr = wiki.App().Cfg();
new Xosearch_fulltext_html
( cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.special.case_match", false)
( query
, cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.special.case_match", false)
, cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.special.auto_wildcard_bgn", false)
, cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.special.auto_wildcard_end", false)
, cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.special.expand_matches_section", false)

Loading…
Cancel
Save