diff --git a/core/app.cpp b/core/app.cpp index 6d4986a..1e9c5bd 100755 --- a/core/app.cpp +++ b/core/app.cpp @@ -465,6 +465,25 @@ bool sent = false; } +void App::CheckPostRedirect() +{ + if( cur.request->method == Request::post ) + { + if( cur.request->IsParam(L"postredirect") ) + { + cur.request->redirect_to = cur.request->ParamValue(L"postredirect"); + cur.request->redirect_type = 303; + } + else + if( cur.request->IsPostVar(L"postredirect") ) + { + cur.request->redirect_to = cur.request->PostVar(L"postredirect"); + cur.request->redirect_type = 303; + } + } +} + + // zmienic nazwe np na ProcessRequest // !! ta nazwa chyba juz zajeta... void App::Make() @@ -494,6 +513,8 @@ void App::Make() if( cur.request->status == WINIX_ERR_OK ) plugin.Call(WINIX_PROCESS_REQUEST); + CheckPostRedirect(); + if( !cur.request->redirect_to.empty() ) return; diff --git a/core/app.h b/core/app.h index 53ac1bd..0611ede 100755 --- a/core/app.h +++ b/core/app.h @@ -2,7 +2,7 @@ * This file is a part of Winix * and is not publicly distributed * - * Copyright (c) 2010-2011, Tomasz Sowa + * Copyright (c) 2010-2012, Tomasz Sowa * All rights reserved. * */ @@ -130,6 +130,7 @@ private: bool ShouldNotUseSSL(); bool CheckSSLcorrectness(); void SetLocale(); + void CheckPostRedirect(); void MakePage(); void Make(); void SaveSessionsIfNeeded(); // !! wywalic do menagera sesji?? diff --git a/functions/Makefile.dep b/functions/Makefile.dep index 93a853c..f31d4ad 100755 --- a/functions/Makefile.dep +++ b/functions/Makefile.dep @@ -1439,6 +1439,12 @@ subject.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h subject.o: ../core/mountparser.h ../core/crypt.h ../core/users.h subject.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/image.h subject.o: ../core/threadmanager.h ../core/timezones.h ../core/synchro.h +subject.o: ../core/plugin.h ../core/pluginmsg.h ../core/system.h +subject.o: ../core/sessionmanager.h ../core/sessioncontainer.h +subject.o: ../functions/functions.h ../templates/templates.h +subject.o: ../templates/patterncacher.h ../templates/indexpatterns.h +subject.o: ../templates/patterns.h ../templates/changepatterns.h +subject.o: ../templates/htmltextstream.h ../core/sessionmanager.h template.o: template.h functionbase.h ../core/item.h template.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h template.o: ../../pikotools/date/date.h ../db/db.h ../db/dbbase.h diff --git a/functions/subject.cpp b/functions/subject.cpp index c4aa97a..c39ebc3 100755 --- a/functions/subject.cpp +++ b/functions/subject.cpp @@ -2,12 +2,13 @@ * This file is a part of Winix * and is not publicly distributed * - * Copyright (c) 2008-2010, Tomasz Sowa + * Copyright (c) 2008-2012, Tomasz Sowa * All rights reserved. * */ #include "subject.h" +#include "core/plugin.h" namespace Fun @@ -48,6 +49,10 @@ void Subject::EditDirSubject() cur->request->PostVar(L"subject", dir.subject); db->EditSubjectById(dir, dir.id); + // !! IMPROVE ME + // we need something like WINIX_DIR_CHANGED message + //plugin.Call(WINIX______CHANGED, cur->request->dir_tab.back()); + system->RedirectToLastDir(); } @@ -58,6 +63,8 @@ void Subject::EditFileSubject() cur->request->PostVar(L"subject", cur->request->item.subject); db->EditSubjectById(cur->request->item, cur->request->item.id); + plugin.Call(WINIX_FILE_CHANGED, &cur->request->item); + system->RedirectTo(cur->request->item); } diff --git a/html/fun_adduser.html b/html/fun_adduser.html index 100de48..e85ca59 100755 --- a/html/fun_adduser.html +++ b/html/fun_adduser.html @@ -25,6 +25,11 @@

[end] + + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_ckeditor.html b/html/fun_ckeditor.html index 4e0d9e0..24a4587 100755 --- a/html/fun_ckeditor.html +++ b/html/fun_ckeditor.html @@ -7,18 +7,18 @@ {form_emacs_legend} [if mount_type_is "cms"] -

{title}:

+

{title}:

-

{suggested_url}:

+

{suggested_url}:

[end] [if-any mount_type_is "thread" mount_thread_arg_is "subject"] -

{title}:

+

{title}:

-

{suggested_url}:

+

{suggested_url}:

[end] @@ -39,14 +39,20 @@ [end] [if-no user_logged] -

{nick}:

+

{nick}:

-

{rebus_how_is_it} [rebus_question]?

+

{rebus_how_is_it} [rebus_question]?

[end] + + [if winix_function_param_is "postredirect"] + + [end] + + diff --git a/html/fun_cp.html b/html/fun_cp.html index 537df8f..183ec3c 100755 --- a/html/fun_cp.html +++ b/html/fun_cp.html @@ -23,6 +23,11 @@ [end]

+ + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_createthread.html b/html/fun_createthread.html index 2e49f55..e18eb7d 100755 --- a/html/fun_createthread.html +++ b/html/fun_createthread.html @@ -24,6 +24,10 @@

{rebus_how_is_it} [rebus_question]?

[end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_createticket.html b/html/fun_createticket.html index cf8da43..f952d9e 100755 --- a/html/fun_createticket.html +++ b/html/fun_createticket.html @@ -113,6 +113,11 @@ [end] +[if winix_function_param_is "postredirect"] + +[end] + + diff --git a/html/fun_default.html b/html/fun_default.html index 33104da..74f0498 100755 --- a/html/fun_default.html +++ b/html/fun_default.html @@ -11,6 +11,10 @@

+ + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_emacs.html b/html/fun_emacs.html index af3f479..407f92b 100755 --- a/html/fun_emacs.html +++ b/html/fun_emacs.html @@ -22,6 +22,10 @@

{rebus_how_is_it} [rebus_question]?

[end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_env.html b/html/fun_env.html index 2889d0e..6bcf3f8 100755 --- a/html/fun_env.html +++ b/html/fun_env.html @@ -22,6 +22,11 @@ + [if winix_function_param_is "postredirect"] + + [end] + + @@ -37,6 +42,10 @@ + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_export.html b/html/fun_export.html index 14165e3..6dbe566 100644 --- a/html/fun_export.html +++ b/html/fun_export.html @@ -13,6 +13,11 @@

+ [if winix_function_param_is "postredirect"] + + [end] + + diff --git a/html/fun_ln.html b/html/fun_ln.html index 71a5a41..040aca4 100755 --- a/html/fun_ln.html +++ b/html/fun_ln.html @@ -22,6 +22,11 @@

+ + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_locale.html b/html/fun_locale.html index 668b065..e8f55e1 100755 --- a/html/fun_locale.html +++ b/html/fun_locale.html @@ -19,6 +19,11 @@ [end] + + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_login.html b/html/fun_login.html index d05fcf7..d7d21e7 100755 --- a/html/fun_login.html +++ b/html/fun_login.html @@ -11,6 +11,11 @@ + + [if winix_function_param_is "postredirect"] + + [end] + [end] diff --git a/html/fun_meta.html b/html/fun_meta.html index e668132..755b9c7 100755 --- a/html/fun_meta.html +++ b/html/fun_meta.html @@ -7,6 +7,11 @@ {form_meta_legend} + + [if winix_function_param_is "postredirect"] + + [end] + [else] @@ -19,6 +24,11 @@ {form_meta_legend} + + [if winix_function_param_is "postredirect"] + + [end] + [else] diff --git a/html/fun_mkdir.html b/html/fun_mkdir.html index e3bec7f..5b374b7 100755 --- a/html/fun_mkdir.html +++ b/html/fun_mkdir.html @@ -10,6 +10,11 @@

{suggested_url}

+ + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_mv.html b/html/fun_mv.html index b35939f..4ec7f8a 100755 --- a/html/fun_mv.html +++ b/html/fun_mv.html @@ -18,6 +18,10 @@ [if-no item_is] [end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_nicedit.html b/html/fun_nicedit.html index 2d4ac5d..bd86960 100755 --- a/html/fun_nicedit.html +++ b/html/fun_nicedit.html @@ -48,6 +48,10 @@

{rebus_how_is_it} [rebus_question]?

[end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_passwd.html b/html/fun_passwd.html index 6e14d83..8a27046 100755 --- a/html/fun_passwd.html +++ b/html/fun_passwd.html @@ -22,6 +22,10 @@

{passwd_confirm_new_password}:

+ [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_priv.html b/html/fun_priv.html index 1492290..e760bdd 100755 --- a/html/fun_priv.html +++ b/html/fun_priv.html @@ -39,6 +39,10 @@ [end] + + [if winix_function_param_is "postredirect"] + + [end] @@ -110,7 +114,12 @@ + [if winix_function_param_is "postredirect"] + + [end] + + diff --git a/html/fun_pw.html b/html/fun_pw.html index d53e074..afb36bd 100755 --- a/html/fun_pw.html +++ b/html/fun_pw.html @@ -16,6 +16,11 @@ + + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_reply.html b/html/fun_reply.html index b3ce574..6d442a8 100755 --- a/html/fun_reply.html +++ b/html/fun_reply.html @@ -39,6 +39,11 @@

{rebus_how_is_it} [rebus_question]?

[end] + + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_rm.html b/html/fun_rm.html index db4fb07..e155a28 100755 --- a/html/fun_rm.html +++ b/html/fun_rm.html @@ -30,6 +30,10 @@

[end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_rmuser.html b/html/fun_rmuser.html index 2a0f045..77577ca 100755 --- a/html/fun_rmuser.html +++ b/html/fun_rmuser.html @@ -19,6 +19,10 @@

{rmuser_removecurrent}

[end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_sort.html b/html/fun_sort.html index 86ff9ee..8a9dfb1 100755 --- a/html/fun_sort.html +++ b/html/fun_sort.html @@ -9,6 +9,11 @@

{sort_current_sortindex}:

+ + [if winix_function_param_is "postredirect"] + + [end] + @@ -27,6 +32,10 @@ [end] + [if winix_function_param_is "postredirect"] + + [end] + diff --git a/html/fun_subject.html b/html/fun_subject.html index 79b0ba6..4338531 100755 --- a/html/fun_subject.html +++ b/html/fun_subject.html @@ -6,8 +6,12 @@
{subject_form_legend} -

{title}

+

{title}

+ + [if winix_function_param_is "postredirect"] + + [end]
diff --git a/html/fun_template.html b/html/fun_template.html index a409d9a..f1f6a01 100755 --- a/html/fun_template.html +++ b/html/fun_template.html @@ -58,6 +58,10 @@ [end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_timezone.html b/html/fun_timezone.html index 775c7cc..8df2f08 100755 --- a/html/fun_timezone.html +++ b/html/fun_timezone.html @@ -19,6 +19,10 @@ [end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_tinymce.html b/html/fun_tinymce.html index 4cfaec8..748dfc8 100755 --- a/html/fun_tinymce.html +++ b/html/fun_tinymce.html @@ -39,6 +39,10 @@

{rebus_how_is_it} [rebus_question]?

[end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/html/fun_upload.html b/html/fun_upload.html index 5b22417..f2c4ef4 100755 --- a/html/fun_upload.html +++ b/html/fun_upload.html @@ -27,7 +27,7 @@

{upload_header}

[# The file upload form used as target for the file upload widget] -
+ [# The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload]
diff --git a/html/fun_vim.html b/html/fun_vim.html index f8f40a2..3249eae 100755 --- a/html/fun_vim.html +++ b/html/fun_vim.html @@ -41,6 +41,10 @@

{rebus_how_is_it} [rebus_question]?

[end] + + [if winix_function_param_is "postredirect"] + + [end] diff --git a/plugins/menu/init.cpp b/plugins/menu/init.cpp index 0e2b38f..d285f89 100755 --- a/plugins/menu/init.cpp +++ b/plugins/menu/init.cpp @@ -118,6 +118,10 @@ using namespace Menu; plugin.Assign(WINIX_FILE_MOVED, InvalidateCacheByPointerParent); plugin.Assign(WINIX_DIR_CONTENT_SORTED, InvalidateCacheByPointer); + // !! IMPROVE ME + // we need a WINIX_DIR_CHANGED message + // for example when changing the subject of a directory + info.p1 = (void*)(plugin_name); }