-
Jared Hancock authored
Conflicts: include/class.export.php include/client/login.inc.php include/staff/ticket-view.inc.php
4e1ddbec
redactor-osticket.js 12.61 KiB
if (typeof RedactorPlugins === 'undefined') var RedactorPlugins = {};
/* Generic draft support for osTicket. The plugins supports draft retrieval
* automatically, along with draft autosave, and image uploading.
*
* Configuration:
* draftNamespace: namespace for the draft retrieval
* draftObjectId: extension to the namespace for draft retrieval
*
* Caveats:
* Login (staff only currently) is required server-side for drafts and image
* uploads. Furthermore, the id of the staff is considered for the drafts,
* so one user will not retrieve drafts for another user.
*/
RedactorPlugins.draft = {
init: function() {
if (!this.opts.draftNamespace)
return;
this.opts.changeCallback = this.hideDraftSaved;
var autosave_url = 'ajax.php/draft/' + this.opts.draftNamespace;
if (this.opts.draftObjectId)
autosave_url += '.' + this.opts.draftObjectId;
this.opts.autosave = autosave_url;
this.opts.autosaveInterval = 10;
this.opts.autosaveCallback = this.setupDraftUpdate;
this.opts.initCallback = this.recoverDraft;
this.$draft_saved = $('<span>')
.addClass("pull-right draft-saved")
.css({'position':'absolute','top':'3em','right':'0.5em'})
.hide()
.append($('<span>')
.text(__('Draft Saved')));
// Float the [Draft Saved] box with the toolbar
this.$toolbar.append(this.$draft_saved);
if (this.opts.draftDelete) {
var trash = this.buttonAdd('deleteDraft', __('Delete Draft'), this.deleteDraft);
this.buttonAwesome('deleteDraft', 'icon-trash');
trash.parent().addClass('pull-right');
trash.addClass('delete-draft');
}
},
recoverDraft: function() {
var self = this;
$.ajax(this.opts.autosave, {
dataType: 'json',
statusCode: {
200: function(json) {
self.draft_id = json.draft_id;
// Replace the current content with the draft, sync, and make
// images editable
self.setupDraftUpdate(json);
if (!json.body) return;
self.set(json.body, false);
self.observeStart();
},
205: function() {
// Save empty draft immediately;
var ai = self.opts.autosaveInterval;
// Save immediately -- capture the created autosave
// interval and clear it as soon as possible. Note that
// autosave()ing doesn't happen immediately. It happens
// async after the autosaveInterval expires.
self.opts.autosaveInterval = 0;
self.autosave();
var interval = self.autosaveInterval;
setTimeout(function() {
clearInterval(interval);