mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Full-text search: Add option to switch between Special:Search and Special:XowaSearch
This commit is contained in:
@@ -29,9 +29,10 @@ public class Xoapi_nav_wiki implements Gfo_invk {
|
||||
if (ctx.Match(k, "main_page")) this.Main_page();
|
||||
else if (ctx.Match(k, "random")) win.Page__navigate_by_url_bar("Special:Random");
|
||||
else if (ctx.Match(k, "sandbox")) win.Page__navigate_by_url_bar("Project:Sandbox");
|
||||
else if (ctx.Match(k, "allpages")) win.Page__navigate_by_url_bar("Special:AllPages?from=!"); // NOTE: for menu, default to ! else empty page
|
||||
else if (ctx.Match(k, "allpages")) win.Page__navigate_by_url_bar("Special:AllPages?from=!"); // NOTE: for main_menu, default to ! else empty page
|
||||
else if (ctx.Match(k, "search_title")) win.Page__navigate_by_url_bar("Special:Search?fulltext=y");
|
||||
else if (ctx.Match(k, "search_full")) win.Page__navigate_by_url_bar("Special:XowaSearch");
|
||||
else if (ctx.Match(k, "search_per_cfg")) win.Page__navigate_by_url_bar(win.Gui_mgr().Win_cfg().Search_url());
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -18,18 +18,41 @@ import gplx.core.brys.fmtrs.*;
|
||||
import gplx.gfui.draws.*;
|
||||
import gplx.xowa.guis.langs.*;
|
||||
public class Xocfg_win implements Gfo_invk {
|
||||
private Xoa_app app;
|
||||
public Xol_font_info Font() {return font;} private Xol_font_info font = new Xol_font_info("Arial", 8, FontStyleAdp_.Plain);
|
||||
public Bry_fmtr Search_box_fmtr() {return search_box_fmtr;} private Bry_fmtr search_box_fmtr = Bry_fmtr.new_("Special:XowaSearch?search=~{search}", "search");
|
||||
public Bry_fmtr Search_box_fmtr() {return search_box_fmtr;} private Bry_fmtr search_box_fmtr = Bry_fmtr.new_("Special:Search?search=~{search}", "search");
|
||||
public Bry_fmtr Allpages_box_fmtr() {return allpages_box_fmtr;} private Bry_fmtr allpages_box_fmtr = Bry_fmtr.new_("Special:AllPages?from=~{search}&namespace=0&hideredirects=0", "search");
|
||||
public void Init_by_app(Xoae_app app) {
|
||||
this.app = app;
|
||||
font.Init_by_app(app);
|
||||
app.Cfg().Bind_many_app(this, Cfg__search__default_to_fulltext, Cfg__search__fallback_to_title);
|
||||
}
|
||||
public String Search_url() {return search_url;} private String search_url = "Special:Search";
|
||||
public void Search_url_(boolean default_to_fulltext) {
|
||||
search_url = default_to_fulltext ? "Special:XowaSearch" : "Special:Search?fulltext=y&search=";
|
||||
search_box_fmtr = Bry_fmtr.new_(search_url + "?fulltext=y&search=~{search}", "search");
|
||||
|
||||
// rest portal on every page in order to refresh searchform link; EX: <form id="searchform" action="/wiki/~{<>app.gui.win_opts.search_url;<>}">
|
||||
int len = app.Wiki_mgri().Count();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgri().Get_at(i);
|
||||
wiki.Html_mgr().Portal_mgr().Init();
|
||||
}
|
||||
}
|
||||
public boolean Search_fallsback_to_title() {return search_fallsback_to_title;} private boolean search_fallsback_to_title;
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_font)) return font;
|
||||
else if (ctx.Match(k, Invk_search_box_fmt_)) search_box_fmtr.Fmt_(m.ReadBry("v"));
|
||||
if (ctx.Match(k, Invk_font)) return font;
|
||||
else if (ctx.Match(k, Invk_search_box_fmt_)) search_box_fmtr.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, "search_url")) return search_url;
|
||||
else if (ctx.Match(k, Cfg__search__default_to_fulltext)) Search_url_(m.ReadBool("v"));
|
||||
else if (ctx.Match(k, Cfg__search__fallback_to_title)) search_fallsback_to_title = m.ReadBool("v");
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private static final String Invk_search_box_fmt_ = "search_box_fmt_", Invk_font = "font";
|
||||
private static final String
|
||||
Cfg__search__default_to_fulltext = "xowa.addon.fulltext_search.compatibility.default_to_fulltext"
|
||||
, Cfg__search__fallback_to_title = "xowa.addon.fulltext_search.compatibility.fallback_to_title";
|
||||
|
||||
public static final float Font_size_default = 8;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user