blogger
Révision | c0b74aaf3be5770cabba5e05c905cb7896c9f060 (tree) |
---|---|
l'heure | 2018-04-28 05:47:24 |
Auteur | umorigu <umorigu@gmai...> |
Commiter | umorigu |
BugTrack/2468 Show alert message for leaving page action on edit-preview
@@ -47,7 +47,7 @@ function catbody($title, $page, $body) | ||
47 | 47 | |
48 | 48 | $_page = isset($vars['page']) ? $vars['page'] : ''; |
49 | 49 | $r_page = pagename_urlencode($_page); |
50 | - | |
50 | + $is_edit_preview = isset($vars['preview']); | |
51 | 51 | // Canonical URL |
52 | 52 | $canonical_url = get_page_uri($_page, PKWK_URI_ABSOLUTE); |
53 | 53 |
@@ -187,7 +187,7 @@ function catbody($title, $page, $body) | ||
187 | 187 | } |
188 | 188 | } |
189 | 189 | // Embed Scripting data |
190 | - $html_scripting_data = get_html_scripting_data($_page); | |
190 | + $html_scripting_data = get_html_scripting_data($_page, $is_edit_preview); | |
191 | 191 | |
192 | 192 | // Compat: 'HTML convert time' without time about MenuBar and skin |
193 | 193 | $taketime = elapsedtime(); |
@@ -217,8 +217,11 @@ function _decorate_Nth_word($matches) | ||
217 | 217 | |
218 | 218 | /** |
219 | 219 | * Get data used by JavaScript modules |
220 | + * | |
221 | + * @param $page page name | |
222 | + * @param $in_editing true if preview in editing | |
220 | 223 | */ |
221 | -function get_html_scripting_data($page) | |
224 | +function get_html_scripting_data($page, $in_editing) | |
222 | 225 | { |
223 | 226 | global $ticket_link_sites, $plugin; |
224 | 227 | global $external_link_cushion_page, $external_link_cushion; |
@@ -256,6 +259,11 @@ EOS; | ||
256 | 259 | $page_name_data = <<<EOS |
257 | 260 | <input type="hidden" class="page-name" value="$h_page_name" /> |
258 | 261 | EOS; |
262 | + // Page is editing (preview) | |
263 | + $in_editing_value = ($plugin === 'edit' && $in_editing) ? 'true' : 'false'; | |
264 | + $page_edit_data = <<<EOS | |
265 | +<input type="hidden" class="page-in-edit" value="$in_editing_value" /> | |
266 | +EOS; | |
259 | 267 | // AutoTicketLink |
260 | 268 | $filtered_ticket_link_sites = array(); |
261 | 269 | foreach ($ticket_link_sites as $s) { |
@@ -293,6 +301,7 @@ EOS; | ||
293 | 301 | $site_props |
294 | 302 | $plugin_prop |
295 | 303 | $page_name_data |
304 | +$page_edit_data | |
296 | 305 | $ticketlink_data |
297 | 306 | $external_link_cushion_data |
298 | 307 | $topicpath_data |
@@ -253,6 +253,11 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function( | ||
253 | 253 | var textArea = editForm.querySelector('textarea[name="msg"]'); |
254 | 254 | if (!textArea) return; |
255 | 255 | originalText = textArea.value; |
256 | + var isPreview = false; | |
257 | + var inEditE = document.querySelector('#pukiwiki-site-properties .page-in-edit'); | |
258 | + if (inEditE && inEditE.value) { | |
259 | + isPreview = (inEditE.value === 'true'); | |
260 | + } | |
256 | 261 | var cancelForm = document.querySelector('.edit_form form._plugin_edit_cancel'); |
257 | 262 | var submited = false; |
258 | 263 | editForm.addEventListener('submit', function() { |
@@ -281,7 +286,9 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function( | ||
281 | 286 | window.addEventListener('beforeunload', function(e) { |
282 | 287 | if (canceled) return; |
283 | 288 | if (submited) return; |
284 | - if (trim(textArea.value) === trim(originalText)) return; | |
289 | + if (!isPreview) { | |
290 | + if (trim(textArea.value) === trim(originalText)) return; | |
291 | + } | |
285 | 292 | var message = 'Data you have entered will not be saved.'; |
286 | 293 | if (unloadBeforeMsgE && unloadBeforeMsgE.value) { |
287 | 294 | message = unloadBeforeMsgE.value; |