Kaynağa Gözat

Merge pull request #1 from emanuele45/draftUpdates

Draft updates
Spuds 12 yıl önce
ebeveyn
işleme
0bad7bbec1

+ 31 - 1
Sources/Drafts.php

@@ -38,6 +38,18 @@ function SaveDraft(&$post_errors)
 	$id_draft = (int) $_POST['id_draft'];
 	$id_draft = (int) $_POST['id_draft'];
 	$draft_info = ReadDraft($id_draft);
 	$draft_info = ReadDraft($id_draft);
 
 
+	// A draft has been saved less than 5 seconds ago, let's not do the autosave again
+	if (!empty($draft_info['poster_time']) && time() < $draft_info['poster_time'] + 5  && isset($_REQUEST['xml']))
+	{
+		$context['draft_saved_on'] = $draft_info['poster_time'];
+
+		// since we were called from the autosave function, send something back
+		if (!empty($id_draft))
+			XmlDraft($id_draft);
+
+		return true;
+	}
+
 	// prepare any data from the form
 	// prepare any data from the form
 	$topic_id = empty($_REQUEST['topic']) ? 0 : (int) $_REQUEST['topic'];
 	$topic_id = empty($_REQUEST['topic']) ? 0 : (int) $_REQUEST['topic'];
 	$draft['icon'] = empty($_POST['icon']) ? 'xx' : preg_replace('~[\./\\\\*:"\'<>]~', '', $_POST['icon']);
 	$draft['icon'] = empty($_POST['icon']) ? 'xx' : preg_replace('~[\./\\\\*:"\'<>]~', '', $_POST['icon']);
@@ -143,7 +155,10 @@ function SaveDraft(&$post_errors)
 
 
 	// if we were called from the autosave function, send something back
 	// if we were called from the autosave function, send something back
 	if (!empty($id_draft) && isset($_REQUEST['xml']) && (!in_array('session_timeout', $post_errors)))
 	if (!empty($id_draft) && isset($_REQUEST['xml']) && (!in_array('session_timeout', $post_errors)))
+	{
+		$context['draft_saved_on'] = time();
 		XmlDraft($id_draft);
 		XmlDraft($id_draft);
+	}
 
 
 	return true;
 	return true;
 }
 }
@@ -173,6 +188,18 @@ function SavePMDraft(&$post_errors, $recipientList)
 	$id_pm_draft = (int) $_POST['id_pm_draft'];
 	$id_pm_draft = (int) $_POST['id_pm_draft'];
 	$draft_info = ReadDraft($id_pm_draft, 1);
 	$draft_info = ReadDraft($id_pm_draft, 1);
 
 
+	// 5 seconds is the same limit we have for posting
+	if (!empty($draft_info['poster_time']) && time() < $draft_info['poster_time'] + 5  && isset($_REQUEST['xml']))
+	{
+		$context['draft_saved_on'] = $draft_info['poster_time'];
+
+		// Send something back to the javascript
+		if (!empty($id_draft))
+			XmlDraft($id_draft);
+
+		return true;
+	}
+
 	// determine who this is being sent to
 	// determine who this is being sent to
 	if (isset($_REQUEST['xml']))
 	if (isset($_REQUEST['xml']))
 	{
 	{
@@ -268,7 +295,10 @@ function SavePMDraft(&$post_errors, $recipientList)
 
 
 	// if we were called from the autosave function, send something back
 	// if we were called from the autosave function, send something back
 	if (!empty($id_pm_draft) && isset($_REQUEST['xml']) && !in_array('session_timeout', $post_errors))
 	if (!empty($id_pm_draft) && isset($_REQUEST['xml']) && !in_array('session_timeout', $post_errors))
+	{
+		$context['draft_saved_on'] = time();
 		XmlDraft($id_pm_draft);
 		XmlDraft($id_pm_draft);
+	}
 
 
 	return;
 	return;
 }
 }
@@ -471,7 +501,7 @@ function XmlDraft($id_draft)
 
 
 	echo '<?xml version="1.0" encoding="', $context['character_set'], '"?>
 	echo '<?xml version="1.0" encoding="', $context['character_set'], '"?>
 	<drafts>
 	<drafts>
-		<draft id="', $id_draft, '"><![CDATA[', $txt['draft_saved_on'], ': ', timeformat(time()), ']]></draft>
+		<draft id="', $id_draft, '"><![CDATA[', $txt['draft_saved_on'], ': ', timeformat($context['draft_saved_on']), ']]></draft>
 	</drafts>';
 	</drafts>';
 
 
 	obExit(false);
 	obExit(false);

+ 2 - 0
Sources/Subs-Editor.php

@@ -1467,6 +1467,8 @@ function create_control_richedit($editorOptions)
 	{
 	{
 		// Some general stuff.
 		// Some general stuff.
 		$settings['smileys_url'] = $modSettings['smileys_url'] . '/' . $user_info['smiley_set'];
 		$settings['smileys_url'] = $modSettings['smileys_url'] . '/' . $user_info['smiley_set'];
+		if (!empty($context['drafts_autosave']) && !empty($options['drafts_autosave_enabled']))
+			$context['drafts_autosave_frequency'] = empty($modSettings['drafts_autosave_frequency']) ? 60000 : $modSettings['drafts_autosave_frequency'] * 1000;
 
 
 		// This really has some WYSIWYG stuff.
 		// This really has some WYSIWYG stuff.
 		loadTemplate('GenericControls', 'jquery.sceditor');
 		loadTemplate('GenericControls', 'jquery.sceditor');

+ 1 - 1
Themes/default/GenericControls.template.php

@@ -165,7 +165,7 @@ function template_control_richedit_buttons($editor_id)
 				sSceditorID: \'', $editor_id, '\',
 				sSceditorID: \'', $editor_id, '\',
 				sType: \'post\',
 				sType: \'post\',
 				iBoard: ', (empty($context['current_board']) ? 0 : $context['current_board']), ',
 				iBoard: ', (empty($context['current_board']) ? 0 : $context['current_board']), ',
-				iFreq: ', (empty($modSettings['drafts_autosave_frequency']) ? 60000 : $modSettings['drafts_autosave_frequency'] * 1000), '
+				iFreq: ', $context['drafts_autosave_frequency'], '
 			});
 			});
 		// ]]></script>';
 		// ]]></script>';
 	}
 	}

+ 0 - 2
Themes/default/languages/Admin.english.php

@@ -559,8 +559,6 @@ $txt['managedrafts_settings'] = 'Draft Settings';
 $txt['managedrafts_settings_description'] = 'Here you can set all settings involving drafts.';
 $txt['managedrafts_settings_description'] = 'Here you can set all settings involving drafts.';
 $txt['managedrafts_submit'] = 'Save';
 $txt['managedrafts_submit'] = 'Save';
 $txt['manage_drafts'] = 'Drafts';
 $txt['manage_drafts'] = 'Drafts';
-$txt['drafts_autosave'] = 'Enable the autosaving of posts as drafts';
-$txt['drafts_autosave_frequency'] = 'How often should drafts be autosaved?';
 
 
 $txt['removeNestedQuotes'] = 'Remove nested quotes when quoting';
 $txt['removeNestedQuotes'] = 'Remove nested quotes when quoting';
 $txt['enableEmbeddedFlash'] = 'Embed flash into posts';
 $txt['enableEmbeddedFlash'] = 'Embed flash into posts';