111 lines
3.8 KiB
JavaScript
111 lines
3.8 KiB
JavaScript
/*
|
|
Reply Annotator Plugin v1.0 (https://github.com/danielcebrian/reply-annotator)
|
|
Copyright (C) 2014 Daniel Cebrian Robles
|
|
License: https://github.com/danielcebrian/reply-annotator/blob/master/License.rst
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
// Generated by CoffeeScript 1.6.3
|
|
var _ref,
|
|
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
|
__hasProp = {}.hasOwnProperty,
|
|
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
|
|
|
Annotator.Plugin.Reply = (function(_super) {
|
|
__extends(Reply, _super);
|
|
|
|
function Reply() {
|
|
this.pluginSubmit = __bind(this.pluginSubmit, this);
|
|
this.updateField = __bind(this.updateField, this);
|
|
_ref = Reply.__super__.constructor.apply(this, arguments);
|
|
return _ref;
|
|
}
|
|
|
|
Reply.prototype.field = null;
|
|
|
|
Reply.prototype.input = null;
|
|
|
|
Reply.prototype.pluginInit = function() {
|
|
console.log("Reply-pluginInit");
|
|
//Check that annotator is working
|
|
if (!Annotator.supported()) {
|
|
return;
|
|
}
|
|
|
|
//-- Editor
|
|
this.field = this.annotator.editor.addField({
|
|
type: 'input', //options (textarea,input,select,checkbox)
|
|
load: this.updateField,
|
|
submit: this.pluginSubmit,
|
|
});
|
|
var newfield = Annotator.$('<li class="annotator-item reply-item" style="display:none"><span class="parent-annotation">0</span></li>');//reply-item is the parent value
|
|
Annotator.$(this.field).replaceWith(newfield);
|
|
this.field=newfield[0];
|
|
|
|
//-- Viewer
|
|
var newview = this.annotator.viewer.addField({
|
|
load: this.updateViewer,
|
|
});
|
|
|
|
return this.input = $(this.field).find(':input');
|
|
};
|
|
|
|
// New JSON for the database
|
|
Reply.prototype.pluginSubmit = function(field, annotation) {
|
|
// since each annotation has their own reply item, this "find" is element specific
|
|
var replyItem = $(this.annotator.editor.element).find(".reply-item span.parent-annotation");
|
|
// checks to see if the current annotation is a reply by checking parent numbers
|
|
var parent = replyItem.html() !== '' ? replyItem.html() : '0';
|
|
// if the parent number is not empty or zero, we know that this is a comment
|
|
if (parent !== '0') {
|
|
annotation.media = 'comment';
|
|
}
|
|
|
|
// apparently some browsers continue adding <font> tags here for nonreplies
|
|
// this will check and set to 0 (nonreply) if it fails
|
|
if (parseInt(parent, 10) === NaN){
|
|
parent = '0';
|
|
}
|
|
|
|
// set 0, because it is not a reply
|
|
annotation.parent = parent;
|
|
return annotation.parent;
|
|
};
|
|
|
|
|
|
Reply.prototype.updateViewer = function(field, annotation) {
|
|
var self = this,
|
|
field = $(field),
|
|
ret = field.addClass('reply-viewer-annotator').html(function() {
|
|
var string;
|
|
return self;
|
|
});
|
|
field.remove();
|
|
this.annotation = annotation;
|
|
//Create the actions for the buttons
|
|
return ret;
|
|
};
|
|
|
|
Reply.prototype.updateField = function(field, annotation) {
|
|
//reset parent value
|
|
var replyItem = $(this.annotator.editor.element).find(".reply-item span.parent-annotation");
|
|
return replyItem.html('0');
|
|
};
|
|
|
|
return Reply;
|
|
|
|
})(Annotator.Plugin);
|
|
|