mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Cfg: Fix default_arg for url_search
This commit is contained in:
parent
8f1c693ec6
commit
5304e80353
@ -68,6 +68,7 @@ public class Xocfg_mgr {
|
||||
String rv = cache_mgr.Get_or(Ctx__app, key, null);
|
||||
return rv == null ? or : String_.Ary_parse(String_.Trim(rv), dlm);
|
||||
}
|
||||
public String Get_str_wiki_or(Xow_wiki wiki, String key, String or) {return cache_mgr.Get_or(wiki.Domain_itm().Abrv_xo_str(), key, or);}
|
||||
public String Get_str_app_or(String key, String or) {return cache_mgr.Get_or(Ctx__app, key, or);}
|
||||
public String Get_str_app(String key) {return Get_str(Xocfg_mgr.Ctx__app, key);}
|
||||
public boolean Get_bool_or(String ctx, String key, boolean or) {
|
||||
|
@ -26,7 +26,7 @@ public class Srch_ns_mgr {
|
||||
ns_hash.Clear();
|
||||
ns_all = ns_main = false;
|
||||
}
|
||||
public boolean Ns_main_only() {return ns_main;}
|
||||
public boolean Ns_main_only() {return ns_main && !ns_all;} // Ns_main_only is used by Searcher to only search main srch_link db
|
||||
public boolean Has(int ns_id) {
|
||||
return ns_all // ns_all always returns true
|
||||
|| ns_main && ns_id == Xow_ns_.Tid__main // ns_main returns true if main_ns
|
||||
|
@ -18,7 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.addons.wikis.searchs.searchers; 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.searchers.rslts.*; import gplx.xowa.addons.wikis.searchs.searchers.wkrs.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*;
|
||||
import gplx.xowa.addons.wikis.searchs.searchers.crts.visitors.*;
|
||||
public class Srch_search_mgr {
|
||||
import gplx.core.net.*; import gplx.core.net.qargs.*;
|
||||
public class Srch_search_mgr implements Gfo_invk {
|
||||
private final Srch_search_addon addon;
|
||||
private final Xow_wiki wiki;
|
||||
private final Srch_rslt_list cache__page = new Srch_rslt_list();
|
||||
@ -38,6 +39,8 @@ public class Srch_search_mgr {
|
||||
this.cur_cmds = new Srch_search_cmd[Srch_search_qry.Tid_len];
|
||||
for (int i = 0; i < len; ++i)
|
||||
cur_cmds[i] = Srch_search_cmd.Noop();
|
||||
|
||||
wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__args_default);
|
||||
}
|
||||
public void Clear_rslts_cache() {cache__rslts.Clear();}
|
||||
public void Search_cancel() {
|
||||
@ -85,4 +88,10 @@ public class Srch_search_mgr {
|
||||
cache__word_counts.Clear();
|
||||
cache__rslts.Clear();
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Cfg__args_default)) this.Clear_rslts_cache(); // NOTE: must clear cache after args_dflt changed
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
public static final String Cfg__args_default = "xowa.addon.search.args_default";
|
||||
}
|
||||
|
@ -20,23 +20,19 @@ import gplx.core.net.*; import gplx.core.net.qargs.*;
|
||||
import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*;
|
||||
import gplx.xowa.addons.wikis.searchs.searchers.*;
|
||||
public class Srch_special_cfg implements Gfo_invk {
|
||||
private Xoa_app app;
|
||||
private final Xow_domain_crt_kv_itm_mgr multi_wikis_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_wikis_bry = Dflt_multi_wikis_bry;
|
||||
private final Xow_domain_crt_kv_itm_mgr multi_sorts_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_sorts_bry = Dflt_multi_sorts_bry;
|
||||
private String args_default_str = "";// default args for search
|
||||
public Srch_special_cfg() {
|
||||
multi_wikis_mgr.Parse_as_itms(multi_wikis_bry);
|
||||
multi_sorts_mgr.Parse_as_arys(multi_sorts_bry);
|
||||
ns_mgr.Add_main_if_empty();
|
||||
}
|
||||
public void Init_by_kit(Xoae_app app, gplx.gfui.kits.core.Gfui_kit kit) {
|
||||
this.app = app;
|
||||
app.Cfg().Bind_many_app(this, Cfg__results_per_page, Cfg__async_db, Cfg__auto_wildcard, Cfg__args_default, Cfg__multi_wikis, Cfg__multi_sorts);
|
||||
app.Cfg().Bind_many_app(this, Cfg__results_per_page, Cfg__async_db, Cfg__auto_wildcard, Cfg__multi_wikis, Cfg__multi_sorts);
|
||||
}
|
||||
public int Results_per_page() {return results_per_page;} private int results_per_page = 100;
|
||||
public boolean Async_db() {return async_db;} private boolean async_db = true;
|
||||
public boolean Auto_wildcard() {return auto_wildcard;} private boolean auto_wildcard = false; // automatically add wild-card; EX: Earth -> *Earth*
|
||||
public Gfo_qarg_itm[] Args_default() {return args_default;} private Gfo_qarg_itm[] args_default = Gfo_qarg_itm.Ary_empty;
|
||||
public Srch_ns_mgr Ns_mgr() {return ns_mgr;} private final Srch_ns_mgr ns_mgr = new Srch_ns_mgr();
|
||||
public Xow_domain_crt_itm Multi_wikis_crt (Xow_domain_itm cur_domain) {return multi_wikis_mgr.Find_itm(cur_domain, cur_domain);}
|
||||
public Xow_domain_crt_itm[] Multi_sorts_crt (Xow_domain_itm cur_domain) {return multi_sorts_mgr.Find_ary(cur_domain, cur_domain);}
|
||||
@ -44,12 +40,6 @@ public class Srch_special_cfg implements Gfo_invk {
|
||||
if (ctx.Match(k, Cfg__results_per_page)) results_per_page = m.ReadInt("v");
|
||||
else if (ctx.Match(k, Cfg__async_db)) async_db = m.ReadYn("v");
|
||||
else if (ctx.Match(k, Cfg__auto_wildcard)) auto_wildcard = m.ReadYn("v");
|
||||
else if (ctx.Match(k, Cfg__args_default)) {
|
||||
this.args_default_str = m.ReadStr("v");
|
||||
byte[] bry = Bry_.new_a7("http://x.org/a?" + args_default_str);
|
||||
Gfo_url tmp_url = app.User().Wikii().Utl__url_parser().Url_parser().Parse(bry, 0, bry.length);
|
||||
this.args_default = tmp_url.Qargs();
|
||||
}
|
||||
else if (ctx.Match(k, Cfg__multi_wikis)) {
|
||||
byte[] multi_wikis_temp = m.ReadBry("v");
|
||||
if (multi_wikis_mgr.Parse_as_itms(multi_wikis_temp)) {
|
||||
@ -69,7 +59,6 @@ public class Srch_special_cfg implements Gfo_invk {
|
||||
Cfg__results_per_page = "xowa.addon.search.results_per_page"
|
||||
, Cfg__async_db = "xowa.addon.search.async_db"
|
||||
, Cfg__auto_wildcard = "xowa.addon.search.auto_wildcard"
|
||||
, Cfg__args_default = "xowa.addon.search.args_default"
|
||||
, Cfg__multi_wikis = "xowa.addon.search.multi_wikis"
|
||||
, Cfg__multi_sorts = "xowa.addon.search.multi_sorts"
|
||||
;
|
||||
|
@ -30,7 +30,14 @@ public class Srch_special_page implements Xow_special_page {
|
||||
// get args from urls while applying defaults from search_cfg
|
||||
Srch_qarg_mgr qargs_mgr = new Srch_qarg_mgr(wiki.App().Addon_mgr().Itms__search__special().Ns_mgr());
|
||||
qargs_mgr.Clear();
|
||||
qargs_mgr.Parse(search_cfg.Args_default());
|
||||
|
||||
// parse args_default_str
|
||||
String args_default_str = wiki.App().Cfg().Get_str_wiki_or(wiki, Srch_search_mgr.Cfg__args_default, "");
|
||||
if (String_.Len_gt_0(args_default_str)) {
|
||||
byte[] bry = Bry_.new_a7("http://x.org/a?" + args_default_str);
|
||||
gplx.core.net.Gfo_url tmp_url = wiki.App().User().Wikii().Utl__url_parser().Url_parser().Parse(bry, 0, bry.length);
|
||||
qargs_mgr.Parse(tmp_url.Qargs());
|
||||
}
|
||||
qargs_mgr.Parse(url.Qargs_ary());
|
||||
qargs_mgr.Ns_mgr().Add_main_if_empty();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user