ASF Bugzilla – Attachment 20986 Details for
Bug 43628
tinyMCE is lacking a unload handler (as already described in the tinymce todo list)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
the attached patch show a possible approach
patch.txt (text/plain), 12.00 KB, created by
Juergen Ragaller
on 2007-10-15 14:35:03 UTC
(
hide
)
Description:
the attached patch show a possible approach
Filename:
MIME Type:
Creator:
Juergen Ragaller
Created:
2007-10-15 14:35:03 UTC
Size:
12.00 KB
patch
obsolete
>Index: src/modules/tinymce/resources/javascript/tiny_config.js >=================================================================== >--- src/modules/tinymce/resources/javascript/tiny_config.js (revision 584382) >+++ src/modules/tinymce/resources/javascript/tiny_config.js (working copy) >@@ -36,7 +36,7 @@ > /* enable plugins for custom save function, fullscreen editing > and search-and-replace. */ > //plugins : "save,fullscreen,searchreplace,table,contextmenu,simplebrowser,xhtmlxtras", >- plugins : "searchreplace,table,contextmenu,simplebrowser", >+ plugins : "unloadhandler,searchreplace,table,contextmenu,simplebrowser", > > /* grey out the "save" button unless there are unsaved changes: */ > //save_enablewhendirty : false, >Index: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin.js >=================================================================== >--- src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin.js (revision 0) >+++ src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin.js (revision 0) >@@ -0,0 +1,55 @@ >+/** >+ * >+ * @author Null-oder-eins, Juergen Ragaller 2007 >+ */ >+ >+/* Import plugin specific language pack */ >+tinyMCE.importPluginLanguagePack('unloadhandler'); >+ >+var TinyMCE_UnloadHandlerPlugin = { >+ getInfo : function() { >+ return { >+ longname : 'Unload Handler Plugin for Lenya / TinyMCE', >+ author : 'Juergen Ragaller', >+ authorurl : '...', >+ infourl : '...', >+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion >+ }; >+ }, >+ >+ >+ _beforeUnloadHandler : function() { >+ var n, inst; >+ var anyDirty = false; >+ var msgIsDirty = tinyMCE.getLang("lang_unloadhandlerUnloadIsDirty"); >+ var msgIsClean = tinyMCE.getLang("lang_unloadhandlerUnloadIsClean"); >+ >+ >+ if (tinyMCE.getParam("fullscreen_is_enabled")) >+ return; >+ >+ for (n in tinyMCE.instances) { >+ inst = tinyMCE.instances[n]; >+ >+ if (!tinyMCE.isInstance(inst)) { >+ continue; >+ } >+ >+ if (inst.isDirty()) { >+ return msgIsDirty; >+ } else { >+ return msgIsClean; >+ } >+ } >+ }, >+ >+ _unloadSave: function() { >+ window.onbeforeunload = function(){}; >+ document.forms["tinymceForm"].submit(); >+ } >+}; >+ >+window.onbeforeunload = TinyMCE_UnloadHandlerPlugin._beforeUnloadHandler; >+window.onunload = TinyMCE_UnloadHandlerPlugin._unloadSave; >+ >+tinyMCE.addPlugin("unloadhandler", TinyMCE_UnloadHandlerPlugin); > >Property changes on: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin.js >___________________________________________________________________ >Name: svn:eol-style > + native > >Index: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/fr.js >=================================================================== >--- src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/fr.js (revision 0) >+++ src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/fr.js (revision 0) >@@ -0,0 +1,6 @@ >+// FR >+ >+tinyMCE.addToLang('',{ >+unloadhandlerUnloadIsDirty: 'Achtung, Sie haben ungespeicherte Ãnderungen, bitte clicken Sie auf Abbrechen und wählen Sie den Knopf Sichern (unterhalb des Editors) um Ihre ÃøΩnderungen zu speichern', >+unloadhandlerUnloadIsClean: 'Bitte clicken Sie Abbrechen, wenn Sie den Editor nicht verlassen möchten' >+}); > >Property changes on: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/fr.js >___________________________________________________________________ >Name: svn:eol-style > + native > >Index: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/de.js >=================================================================== >--- src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/de.js (revision 0) >+++ src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/de.js (revision 0) >@@ -0,0 +1,6 @@ >+// DE >+ >+tinyMCE.addToLang('',{ >+unloadhandlerUnloadIsDirty: 'Achtung, Sie haben ungespeicherte Ãnderungen, bitte clicken Sie auf Abbrechen und wählen Sie den Knopf Sichern (unterhalb des Editors) um Ihre âÃnderungen zu speichern', >+unloadhandlerUnloadIsClean: 'Bitte clicken Sie Abbrechen, wenn Sie den Editor nicht verlassen möchten' >+}); > >Property changes on: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/de.js >___________________________________________________________________ >Name: svn:eol-style > + native > >Index: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/it.js >=================================================================== >--- src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/it.js (revision 0) >+++ src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/it.js (revision 0) >@@ -0,0 +1,6 @@ >+// IT >+ >+tinyMCE.addToLang('',{ >+unloadhandlerUnloadIsDirty: 'Achtung, Sie haben ungespeicherte Ãnderungen, bitte clicken Sie auf Abbrechen und wählen Sie den Knopf Sichern (unterhalb des Editors) um Ihre âà Ãââ nderungen zu speichern', >+unloadhandlerUnloadIsClean: 'Bitte clicken Sie Abbrechen, wenn Sie den Editor nicht verlassen möchten' >+}); > >Property changes on: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/it.js >___________________________________________________________________ >Name: svn:eol-style > + native > >Index: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/en.js >=================================================================== >--- src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/en.js (revision 0) >+++ src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/en.js (revision 0) >@@ -0,0 +1,6 @@ >+// EN >+ >+tinyMCE.addToLang('',{ >+unloadhandlerUnloadIsDirty: 'Achtung, Sie haben ungespeicherte Ãnderungen, bitte clicken Sie auf Abbrechen und wählen Sie den Knopf Sichern (unterhalb des Editors) um Ihre âÃnderungen zu speichern', >+unloadhandlerUnloadIsClean: 'Bitte clicken Sie Abbrechen, wenn Sie den Editor nicht verlassen möchten' >+}); > >Property changes on: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/langs/en.js >___________________________________________________________________ >Name: svn:eol-style > + native > >Index: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin_src.js >=================================================================== >--- src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin_src.js (revision 0) >+++ src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin_src.js (revision 0) >@@ -0,0 +1,55 @@ >+/** >+ * >+ * @author >+ */ >+ >+/* Import plugin specific language pack */ >+tinyMCE.importPluginLanguagePack('unloadhandler'); >+ >+var TinyMCE_UnloadHandlerPlugin = { >+ getInfo : function() { >+ return { >+ longname : 'Unload Handler Plugin for Lenya / TinyMCE', >+ author : 'Juergen Ragaller', >+ authorurl : '...', >+ infourl : '...', >+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion >+ }; >+ }, >+ >+ >+ _beforeUnloadHandler : function() { >+ var n, inst; >+ var anyDirty = false; >+ var msgIsDirty = tinyMCE.getLang("lang_unloadhandlerUnloadIsDirty"); >+ var msgIsClean = tinyMCE.getLang("lang_unloadhandlerUnloadIsClean"); >+ >+ >+ if (tinyMCE.getParam("fullscreen_is_enabled")) >+ return; >+ >+ for (n in tinyMCE.instances) { >+ inst = tinyMCE.instances[n]; >+ >+ if (!tinyMCE.isInstance(inst)) { >+ continue; >+ } >+ >+ if (inst.isDirty()) { >+ return msgIsDirty; >+ } else { >+ return msgIsClean; >+ } >+ } >+ }, >+ >+ _unloadSave: function() { >+ window.onbeforeunload = function(){}; >+ document.forms["tinymceForm"].submit(); >+ } >+}; >+ >+window.onbeforeunload = TinyMCE_UnloadHandlerPlugin._beforeUnloadHandler; >+window.onunload = TinyMCE_UnloadHandlerPlugin._unloadSave; >+ >+tinyMCE.addPlugin("unloadhandler", TinyMCE_UnloadHandlerPlugin); > >Property changes on: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/editor_plugin_src.js >___________________________________________________________________ >Name: svn:eol-style > + native > >Index: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/readme.txt >=================================================================== >--- src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/readme.txt (revision 0) >+++ src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/readme.txt (revision 0) >@@ -0,0 +1 @@ >+Unload handler for lenya/tinymce >\ No newline at end of file > >Property changes on: src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/unloadhandler/readme.txt >___________________________________________________________________ >Name: svn:eol-style > + native > >Index: src/modules/tinymce/xslt/page2edit.xsl >=================================================================== >--- src/modules/tinymce/xslt/page2edit.xsl (revision 584382) >+++ src/modules/tinymce/xslt/page2edit.xsl (working copy) >@@ -190,7 +190,7 @@ > <xsl:comment>special code for the tinymce.edit usecase view</xsl:comment> > <xsl:text> > </xsl:text> >- <form method="post"> >+ <form method="post" name="tinymceForm"> > <xsl:text> > </xsl:text> > <input type="hidden" name="lenya.continuation" value="{$continuationId}"/> >@@ -202,6 +202,9 @@ > <input type="hidden" name="tinymce.namespaces" value=""/> > <xsl:text> > </xsl:text> >+ <input type="hidden" name="cancel" value="Cancel"/> >+ <xsl:text> >+ </xsl:text> > <textarea id="tinymce.content" name="tinymce.content" style="width:100%"> > <xsl:choose> > <!-- firefox bug workaround: prevent <textarea/> from collapsing if empty --> >@@ -215,10 +218,10 @@ > </textarea> > <xsl:text> > </xsl:text> >- <input i18n:attr="value" type="submit" name="submit" value="Submit"/> >+ <input i18n:attr="value" type="submit" name="tiny-submit" value="Submit" onclick="javascript:window.onbeforeunload = true;"/> > <xsl:text> > </xsl:text> >- <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/> >+ <input i18n:attr="value" type="submit" name="cancel" value="Cancel" onclick="javascript:window.onbeforeunload = true;"/> > <xsl:text> > </xsl:text> > </form> >Index: src/modules-core/usecase/usecases.js >=================================================================== >--- src/modules-core/usecase/usecases.js (revision 584382) >+++ src/modules-core/usecase/usecases.js (working copy) >@@ -88,7 +88,8 @@ > // some parameters are handled elsewhere: > if (!name.equals("lenya.usecase") > && !name.equals("lenya.continuation") >- && !name.equals("submit")) { >+ && !name.equals("submit") >+ && !name.equals("tiny-submit")) { > // pass the rest on: > var value = flowHelper.getRequest(cocoon).get(name); > var string = new Packages.java.lang.String(); >@@ -244,7 +245,7 @@ > */ > function defaultSubmitFlow(usecase) { > var preconditionsOk = true; >- if (cocoon.request.getParameter("submit")||cocoon.request.getParameter("lenya.submit")=="ok") { >+ if (cocoon.request.getParameter("tiny-submit")||cocoon.request.getParameter("submit")||cocoon.request.getParameter("lenya.submit")=="ok") { > if (usecase.isOptimistic()) { > usecase.checkPreconditions(); > preconditionsOk = !usecase.hasErrors();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 43628
: 20986