mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Personal_wikis: Add page delete; refactor category updates
This commit is contained in:
@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
|
||||
import gplx.gfui.*; import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.kits.core.*; import gplx.gfui.envs.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*;
|
||||
import gplx.gfui.layouts.swts.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
public class Xog_bnd_win implements Gfo_invk {
|
||||
private GfuiWin win;
|
||||
|
||||
@@ -22,8 +22,9 @@ import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
|
||||
public class Xog_tab_itm_edit_mgr {
|
||||
public static void Save(Xog_tab_itm tab, boolean quick_save) {
|
||||
if (tab.View_mode() != Xopg_page_.Tid_edit) return; // exit if not edit; handles ctrl+s being pressed in read/html modes
|
||||
|
||||
// get text and save directly to text_db
|
||||
Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
|
||||
byte[] old_text = page.Db().Text().Text_bry();
|
||||
byte[] new_text = Get_new_text(tab, page.Db().Text().Text_bry());
|
||||
int page_id = page.Db().Page().Id();
|
||||
if (page.Edit_mode() == Xoa_page_.Edit_mode_create) {
|
||||
@@ -37,17 +38,20 @@ public class Xog_tab_itm_edit_mgr {
|
||||
Invalidate(wiki);
|
||||
page.Db().Text().Text_bry_(new_text);
|
||||
|
||||
try {
|
||||
gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Update(wiki, page.Ttl().Page_db(), page_id, old_text, new_text);
|
||||
} catch (Exception e) {
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to update categories; err=~{0}", Err_.Message_gplx_log(e));
|
||||
}
|
||||
|
||||
// refresh html
|
||||
wiki.Parser_mgr().Parse(page, true);
|
||||
if (wiki.Html__hdump_enabled()) wiki.Html__hdump_mgr().Save_mgr().Save(page); // must go after wiki.Parse
|
||||
|
||||
win_itm.Usr_dlg().Prog_one("", "", "saved page ~{0}", String_.new_u8(page.Ttl().Full_txt_raw())); // NOTE: show message after Parse, b/c Parse will flash "Loading page"; DATE:2014-05-17
|
||||
if (!quick_save) { // full_save; save page and go to read mode
|
||||
// update categories
|
||||
try {
|
||||
wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read); // NOTE: need to write html to fill Wtxt().Ctgs
|
||||
gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Update(wiki, page.Ttl().Page_db(), page_id, page.Wtxt().Ctgs__to_ary());
|
||||
} catch (Exception e) {
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to update categories; err=~{0}", Err_.Message_gplx_log(e));
|
||||
}
|
||||
|
||||
page.Html_data().Edit_preview_(Bry_.Empty);
|
||||
Xoae_page stack_page = tab.History_mgr().Cur_page(wiki); // NOTE: must be to CurPage() else changes will be lost when going Bwd,Fwd
|
||||
stack_page.Db().Text().Text_bry_(page.Db().Text().Text_bry()); // NOTE: overwrite with "saved" changes
|
||||
|
||||
@@ -216,9 +216,7 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
|
||||
}
|
||||
public void Page__refresh() {
|
||||
Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm();
|
||||
if (page.Ttl().Ns().Id_is_special()) {
|
||||
page = page.Wikie().Page_mgr().Load_page(page.Url(), page.Ttl(), tab); // NOTE: must reparse page if (a) Edit -> Read; or (b) "Options" save
|
||||
}
|
||||
page = page.Wikie().Page_mgr().Load_page(page.Url(), page.Ttl(), tab); // NOTE: refresh should always reload and regen page; DATE:2017-02-15
|
||||
page.Html_data().Bmk_pos_(html_itm.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__vpos_get));
|
||||
html_itm.Show(page);
|
||||
if (page.Url().Anch_str() == null)
|
||||
|
||||
Reference in New Issue
Block a user