1
0
Fork 0
mirror of https://github.com/futurepress/epub.js.git synced 2025-10-04 15:09:16 +02:00

Added several usage examples, fixed bugs, turned off restore by default

This commit is contained in:
Fred Chasen 2013-07-15 22:14:52 -07:00
parent 0e08b734ec
commit 416f7ab6a0
112 changed files with 23903 additions and 3348 deletions

View file

@ -0,0 +1,116 @@
// 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; },
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Annotator.Plugin.AnnotateItPermissions = (function(_super) {
__extends(AnnotateItPermissions, _super);
function AnnotateItPermissions() {
this._setAuthFromToken = __bind(this._setAuthFromToken, this);
this.updateAnnotationPermissions = __bind(this.updateAnnotationPermissions, this);
this.updatePermissionsField = __bind(this.updatePermissionsField, this);
this.addFieldsToAnnotation = __bind(this.addFieldsToAnnotation, this);
_ref = AnnotateItPermissions.__super__.constructor.apply(this, arguments);
return _ref;
}
AnnotateItPermissions.prototype.options = {
showViewPermissionsCheckbox: true,
showEditPermissionsCheckbox: true,
groups: {
world: 'group:__world__',
authenticated: 'group:__authenticated__',
consumer: 'group:__consumer__'
},
userId: function(user) {
return user.userId;
},
userString: function(user) {
return user.userId;
},
userAuthorize: function(action, annotation, user) {
var action_field, permissions, _ref1, _ref2, _ref3, _ref4;
permissions = annotation.permissions || {};
action_field = permissions[action] || [];
if (_ref1 = this.groups.world, __indexOf.call(action_field, _ref1) >= 0) {
return true;
} else if ((user != null) && (user.userId != null) && (user.consumerKey != null)) {
if (user.userId === annotation.user && user.consumerKey === annotation.consumer) {
return true;
} else if (_ref2 = this.groups.authenticated, __indexOf.call(action_field, _ref2) >= 0) {
return true;
} else if (user.consumerKey === annotation.consumer && (_ref3 = this.groups.consumer, __indexOf.call(action_field, _ref3) >= 0)) {
return true;
} else if (user.consumerKey === annotation.consumer && (_ref4 = user.userId, __indexOf.call(action_field, _ref4) >= 0)) {
return true;
} else if (user.consumerKey === annotation.consumer && user.admin) {
return true;
} else {
return false;
}
} else {
return false;
}
},
permissions: {
'read': ['group:__world__'],
'update': [],
'delete': [],
'admin': []
}
};
AnnotateItPermissions.prototype.addFieldsToAnnotation = function(annotation) {
if (annotation) {
annotation.permissions = this.options.permissions;
if (this.user) {
annotation.user = this.user.userId;
return annotation.consumer = this.user.consumerKey;
}
}
};
AnnotateItPermissions.prototype.updatePermissionsField = function(action, field, annotation) {
var input;
field = $(field).show();
input = field.find('input').removeAttr('disabled');
if (!this.authorize('admin', annotation)) {
field.hide();
}
if (this.user && this.authorize(action, annotation || {}, {
userId: '__nonexistentuser__',
consumerKey: this.user.consumerKey
})) {
return input.attr('checked', 'checked');
} else {
return input.removeAttr('checked');
}
};
AnnotateItPermissions.prototype.updateAnnotationPermissions = function(type, field, annotation) {
var dataKey;
if (!annotation.permissions) {
annotation.permissions = this.options.permissions;
}
dataKey = type + '-permissions';
if ($(field).find('input').is(':checked')) {
return annotation.permissions[type] = [type === 'read' ? this.options.groups.world : this.options.groups.consumer];
} else {
return annotation.permissions[type] = [];
}
};
AnnotateItPermissions.prototype._setAuthFromToken = function(token) {
return this.setUser(token);
};
return AnnotateItPermissions;
})(Annotator.Plugin.Permissions);
/*
//@ sourceMappingURL=annotateitpermissions.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "annotateitpermissions.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/annotateitpermissions.coffee"
],
"names": [],
"mappings": "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"
}

View file

@ -0,0 +1,215 @@
// Generated by CoffeeScript 1.6.3
var base64Decode, base64UrlDecode, createDateFromISO8601, parseToken,
__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; };
createDateFromISO8601 = function(string) {
var d, date, offset, regexp, time, _ref;
regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" + "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\\.([0-9]+))?)?" + "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
d = string.match(new RegExp(regexp));
offset = 0;
date = new Date(d[1], 0, 1);
if (d[3]) {
date.setMonth(d[3] - 1);
}
if (d[5]) {
date.setDate(d[5]);
}
if (d[7]) {
date.setHours(d[7]);
}
if (d[8]) {
date.setMinutes(d[8]);
}
if (d[10]) {
date.setSeconds(d[10]);
}
if (d[12]) {
date.setMilliseconds(Number("0." + d[12]) * 1000);
}
if (d[14]) {
offset = (Number(d[16]) * 60) + Number(d[17]);
offset *= (_ref = d[15] === '-') != null ? _ref : {
1: -1
};
}
offset -= date.getTimezoneOffset();
time = Number(date) + (offset * 60 * 1000);
date.setTime(Number(time));
return date;
};
base64Decode = function(data) {
var ac, b64, bits, dec, h1, h2, h3, h4, i, o1, o2, o3, tmp_arr;
if (typeof atob !== "undefined" && atob !== null) {
return atob(data);
} else {
b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
i = 0;
ac = 0;
dec = "";
tmp_arr = [];
if (!data) {
return data;
}
data += '';
while (i < data.length) {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
o1 = bits >> 16 & 0xff;
o2 = bits >> 8 & 0xff;
o3 = bits & 0xff;
if (h3 === 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
} else if (h4 === 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
} else {
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
}
return tmp_arr.join('');
}
};
base64UrlDecode = function(data) {
var i, m, _i, _ref;
m = data.length % 4;
if (m !== 0) {
for (i = _i = 0, _ref = 4 - m; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
data += '=';
}
}
data = data.replace(/-/g, '+');
data = data.replace(/_/g, '/');
return base64Decode(data);
};
parseToken = function(token) {
var head, payload, sig, _ref;
_ref = token.split('.'), head = _ref[0], payload = _ref[1], sig = _ref[2];
return JSON.parse(base64UrlDecode(payload));
};
Annotator.Plugin.Auth = (function(_super) {
__extends(Auth, _super);
Auth.prototype.options = {
token: null,
tokenUrl: '/auth/token',
autoFetch: true
};
function Auth(element, options) {
Auth.__super__.constructor.apply(this, arguments);
this.waitingForToken = [];
if (this.options.token) {
this.setToken(this.options.token);
} else {
this.requestToken();
}
}
Auth.prototype.requestToken = function() {
var _this = this;
this.requestInProgress = true;
return $.ajax({
url: this.options.tokenUrl,
dataType: 'text',
xhrFields: {
withCredentials: true
}
}).done(function(data, status, xhr) {
return _this.setToken(data);
}).fail(function(xhr, status, err) {
var msg;
msg = Annotator._t("Couldn't get auth token:");
console.error("" + msg + " " + err, xhr);
return Annotator.showNotification("" + msg + " " + xhr.responseText, Annotator.Notification.ERROR);
}).always(function() {
return _this.requestInProgress = false;
});
};
Auth.prototype.setToken = function(token) {
var _results,
_this = this;
this.token = token;
this._unsafeToken = parseToken(token);
if (this.haveValidToken()) {
if (this.options.autoFetch) {
this.refreshTimeout = setTimeout((function() {
return _this.requestToken();
}), (this.timeToExpiry() - 2) * 1000);
}
this.updateHeaders();
_results = [];
while (this.waitingForToken.length > 0) {
_results.push(this.waitingForToken.pop()(this._unsafeToken));
}
return _results;
} else {
console.warn(Annotator._t("Didn't get a valid token."));
if (this.options.autoFetch) {
console.warn(Annotator._t("Getting a new token in 10s."));
return setTimeout((function() {
return _this.requestToken();
}), 10 * 1000);
}
}
};
Auth.prototype.haveValidToken = function() {
var allFields;
allFields = this._unsafeToken && this._unsafeToken.issuedAt && this._unsafeToken.ttl && this._unsafeToken.consumerKey;
if (allFields && this.timeToExpiry() > 0) {
return true;
} else {
return false;
}
};
Auth.prototype.timeToExpiry = function() {
var expiry, issue, now, timeToExpiry;
now = new Date().getTime() / 1000;
issue = createDateFromISO8601(this._unsafeToken.issuedAt).getTime() / 1000;
expiry = issue + this._unsafeToken.ttl;
timeToExpiry = expiry - now;
if (timeToExpiry > 0) {
return timeToExpiry;
} else {
return 0;
}
};
Auth.prototype.updateHeaders = function() {
var current;
current = this.element.data('annotator:headers');
return this.element.data('annotator:headers', $.extend(current, {
'x-annotator-auth-token': this.token
}));
};
Auth.prototype.withToken = function(callback) {
if (callback == null) {
return;
}
if (this.haveValidToken()) {
return callback(this._unsafeToken);
} else {
this.waitingForToken.push(callback);
if (!this.requestInProgress) {
return this.requestToken();
}
}
};
return Auth;
})(Annotator.Plugin);
/*
//@ sourceMappingURL=auth.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "auth.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/auth.coffee"
],
"names": [],
"mappings": "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"
}

View file

@ -0,0 +1,259 @@
// 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.Document = (function(_super) {
var $;
__extends(Document, _super);
function Document() {
this._getFavicon = __bind(this._getFavicon, this);
this._getLinks = __bind(this._getLinks, this);
this._getTitle = __bind(this._getTitle, this);
this._getMetaTags = __bind(this._getMetaTags, this);
this._getEprints = __bind(this._getEprints, this);
this._getPrism = __bind(this._getPrism, this);
this._getDublinCore = __bind(this._getDublinCore, this);
this._getTwitter = __bind(this._getTwitter, this);
this._getFacebook = __bind(this._getFacebook, this);
this._getHighwire = __bind(this._getHighwire, this);
this.getDocumentMetadata = __bind(this.getDocumentMetadata, this);
this.beforeAnnotationCreated = __bind(this.beforeAnnotationCreated, this);
this.uris = __bind(this.uris, this);
this.uri = __bind(this.uri, this);
_ref = Document.__super__.constructor.apply(this, arguments);
return _ref;
}
$ = Annotator.$;
Document.prototype.events = {
'beforeAnnotationCreated': 'beforeAnnotationCreated'
};
Document.prototype.pluginInit = function() {
return this.getDocumentMetadata();
};
Document.prototype.uri = function() {
var link, uri, _i, _len, _ref1;
uri = decodeURIComponent(document.location.href);
_ref1 = this.metadata;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
link = _ref1[_i];
if (link.rel === "canonical") {
uri = link.href;
}
}
return uri;
};
Document.prototype.uris = function() {
var href, link, uniqueUrls, _i, _len, _ref1;
uniqueUrls = {};
_ref1 = this.metadata.link;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
link = _ref1[_i];
if (link.href) {
uniqueUrls[link.href] = true;
}
}
return (function() {
var _results;
_results = [];
for (href in uniqueUrls) {
_results.push(href);
}
return _results;
})();
};
Document.prototype.beforeAnnotationCreated = function(annotation) {
return annotation.document = this.metadata;
};
Document.prototype.getDocumentMetadata = function() {
this.metadata = {};
this._getHighwire();
this._getDublinCore();
this._getFacebook();
this._getEprints();
this._getPrism();
this._getTwitter();
this._getFavicon();
this._getTitle();
this._getLinks();
return this.metadata;
};
Document.prototype._getHighwire = function() {
return this.metadata.highwire = this._getMetaTags("citation", "name", "_");
};
Document.prototype._getFacebook = function() {
return this.metadata.facebook = this._getMetaTags("og", "property", ":");
};
Document.prototype._getTwitter = function() {
return this.metadata.twitter = this._getMetaTags("twitter", "name", ":");
};
Document.prototype._getDublinCore = function() {
return this.metadata.dc = this._getMetaTags("dc", "name", ".");
};
Document.prototype._getPrism = function() {
return this.metadata.prism = this._getMetaTags("prism", "name", ".");
};
Document.prototype._getEprints = function() {
return this.metadata.eprints = this._getMetaTags("eprints", "name", ".");
};
Document.prototype._getMetaTags = function(prefix, attribute, delimiter) {
var content, match, meta, n, name, tags, _i, _len, _ref1;
tags = {};
_ref1 = $("meta");
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
meta = _ref1[_i];
name = $(meta).attr(attribute);
content = $(meta).prop("content");
if (name) {
match = name.match(RegExp("^" + prefix + delimiter + "(.+)$", "i"));
if (match) {
n = match[1];
if (tags[n]) {
tags[n].push(content);
} else {
tags[n] = [content];
}
}
}
}
return tags;
};
Document.prototype._getTitle = function() {
if (this.metadata.highwire.title) {
return this.metadata.title = this.metadata.highwire.title[0];
} else if (this.metadata.eprints.title) {
return this.metadata.title = this.metadata.eprints.title;
} else if (this.metadata.prism.title) {
return this.metadata.title = this.metadata.prism.title;
} else if (this.metadata.facebook.title) {
return this.metadata.title = this.metadata.facebook.title;
} else if (this.metadata.twitter.title) {
return this.metadata.title = this.metadata.twitter.title;
} else if (this.metadata.dc.title) {
return this.metadata.title = this.metadata.dc.title;
} else {
return this.metadata.title = $("head title").text();
}
};
Document.prototype._getLinks = function() {
var doi, href, id, l, link, name, rel, type, url, values, _i, _j, _k, _len, _len1, _len2, _ref1, _ref2, _ref3, _results;
this.metadata.link = [
{
href: document.location.href
}
];
_ref1 = $("link");
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
link = _ref1[_i];
l = $(link);
href = this._absoluteUrl(l.prop('href'));
rel = l.prop('rel');
type = l.prop('type');
if ((rel === "alternate" || rel === "canonical" || rel === "bookmark") && (type !== "application/rss+xml" && type !== "application/atom+xml")) {
this.metadata.link.push({
href: href,
rel: rel,
type: type
});
}
}
_ref2 = this.metadata.highwire;
for (name in _ref2) {
values = _ref2[name];
if (name === "pdf_url") {
for (_j = 0, _len1 = values.length; _j < _len1; _j++) {
url = values[_j];
this.metadata.link.push({
href: this._absoluteUrl(url),
type: "application/pdf"
});
}
}
if (name === "doi") {
for (_k = 0, _len2 = values.length; _k < _len2; _k++) {
doi = values[_k];
if (doi.slice(0, 4) !== "doi:") {
doi = "doi:" + doi;
}
this.metadata.link.push({
href: doi
});
}
}
}
_ref3 = this.metadata.dc;
_results = [];
for (name in _ref3) {
values = _ref3[name];
if (name === "identifier") {
_results.push((function() {
var _l, _len3, _results1;
_results1 = [];
for (_l = 0, _len3 = values.length; _l < _len3; _l++) {
id = values[_l];
if (id.slice(0, 4) === "doi:") {
_results1.push(this.metadata.link.push({
href: id
}));
} else {
_results1.push(void 0);
}
}
return _results1;
}).call(this));
} else {
_results.push(void 0);
}
}
return _results;
};
Document.prototype._getFavicon = function() {
var link, _i, _len, _ref1, _ref2, _results;
_ref1 = $("link");
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
link = _ref1[_i];
if ((_ref2 = $(link).prop("rel")) === "shortcut icon" || _ref2 === "icon") {
_results.push(this.metadata["favicon"] = this._absoluteUrl(link.href));
} else {
_results.push(void 0);
}
}
return _results;
};
Document.prototype._absoluteUrl = function(url) {
var img;
img = $("<img src='" + url + "'>");
url = img.prop('src');
img.prop('src', null);
return url;
};
return Document;
})(Annotator.Plugin);
/*
//@ sourceMappingURL=document.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "document.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/document.coffee"
],
"names": [],
"mappings": "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"
}

View file

@ -0,0 +1,282 @@
// Generated by CoffeeScript 1.6.3
var __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.Filter = (function(_super) {
__extends(Filter, _super);
Filter.prototype.events = {
".annotator-filter-property input focus": "_onFilterFocus",
".annotator-filter-property input blur": "_onFilterBlur",
".annotator-filter-property input keyup": "_onFilterKeyup",
".annotator-filter-previous click": "_onPreviousClick",
".annotator-filter-next click": "_onNextClick",
".annotator-filter-clear click": "_onClearClick"
};
Filter.prototype.classes = {
active: 'annotator-filter-active',
hl: {
hide: 'annotator-hl-filtered',
active: 'annotator-hl-active'
}
};
Filter.prototype.html = {
element: "<div class=\"annotator-filter\">\n <strong>" + Annotator._t('Navigate:') + "</strong>\n<span class=\"annotator-filter-navigation\">\n <button class=\"annotator-filter-previous\">" + Annotator._t('Previous') + "</button>\n<button class=\"annotator-filter-next\">" + Annotator._t('Next') + "</button>\n</span>\n<strong>" + Annotator._t('Filter by:') + "</strong>\n</div>",
filter: "<span class=\"annotator-filter-property\">\n <label></label>\n <input/>\n <button class=\"annotator-filter-clear\">" + Annotator._t('Clear') + "</button>\n</span>"
};
Filter.prototype.options = {
appendTo: 'body',
filters: [],
addAnnotationFilter: true,
isFiltered: function(input, property) {
var keyword, _i, _len, _ref;
if (!(input && property)) {
return false;
}
_ref = input.split(/\s*/);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
keyword = _ref[_i];
if (property.indexOf(keyword) === -1) {
return false;
}
}
return true;
}
};
function Filter(element, options) {
this._onPreviousClick = __bind(this._onPreviousClick, this);
this._onNextClick = __bind(this._onNextClick, this);
this._onFilterKeyup = __bind(this._onFilterKeyup, this);
this._onFilterBlur = __bind(this._onFilterBlur, this);
this._onFilterFocus = __bind(this._onFilterFocus, this);
this.updateHighlights = __bind(this.updateHighlights, this);
var _base;
element = $(this.html.element).appendTo((options != null ? options.appendTo : void 0) || this.options.appendTo);
Filter.__super__.constructor.call(this, element, options);
(_base = this.options).filters || (_base.filters = []);
this.filter = $(this.html.filter);
this.filters = [];
this.current = 0;
}
Filter.prototype.pluginInit = function() {
var filter, _i, _len, _ref;
_ref = this.options.filters;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
filter = _ref[_i];
this.addFilter(filter);
}
this.updateHighlights();
this._setupListeners()._insertSpacer();
if (this.options.addAnnotationFilter === true) {
return this.addFilter({
label: Annotator._t('Annotation'),
property: 'text'
});
}
};
Filter.prototype.destroy = function() {
var currentMargin, html;
Filter.__super__.destroy.apply(this, arguments);
html = $('html');
currentMargin = parseInt(html.css('padding-top'), 10) || 0;
html.css('padding-top', currentMargin - this.element.outerHeight());
return this.element.remove();
};
Filter.prototype._insertSpacer = function() {
var currentMargin, html;
html = $('html');
currentMargin = parseInt(html.css('padding-top'), 10) || 0;
html.css('padding-top', currentMargin + this.element.outerHeight());
return this;
};
Filter.prototype._setupListeners = function() {
var event, events, _i, _len;
events = ['annotationsLoaded', 'annotationCreated', 'annotationUpdated', 'annotationDeleted'];
for (_i = 0, _len = events.length; _i < _len; _i++) {
event = events[_i];
this.annotator.subscribe(event, this.updateHighlights);
}
return this;
};
Filter.prototype.addFilter = function(options) {
var f, filter;
filter = $.extend({
label: '',
property: '',
isFiltered: this.options.isFiltered
}, options);
if (!((function() {
var _i, _len, _ref, _results;
_ref = this.filters;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
f = _ref[_i];
if (f.property === filter.property) {
_results.push(f);
}
}
return _results;
}).call(this)).length) {
filter.id = 'annotator-filter-' + filter.property;
filter.annotations = [];
filter.element = this.filter.clone().appendTo(this.element);
filter.element.find('label').html(filter.label).attr('for', filter.id);
filter.element.find('input').attr({
id: filter.id,
placeholder: Annotator._t('Filter by ') + filter.label + '\u2026'
});
filter.element.find('button').hide();
filter.element.data('filter', filter);
this.filters.push(filter);
}
return this;
};
Filter.prototype.updateFilter = function(filter) {
var annotation, annotations, input, property, _i, _len, _ref;
filter.annotations = [];
this.updateHighlights();
this.resetHighlights();
input = $.trim(filter.element.find('input').val());
if (input) {
annotations = this.highlights.map(function() {
return $(this).data('annotation');
});
_ref = $.makeArray(annotations);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
annotation = _ref[_i];
property = annotation[filter.property];
if (filter.isFiltered(input, property)) {
filter.annotations.push(annotation);
}
}
return this.filterHighlights();
}
};
Filter.prototype.updateHighlights = function() {
this.highlights = this.annotator.element.find('.annotator-hl:visible');
return this.filtered = this.highlights.not(this.classes.hl.hide);
};
Filter.prototype.filterHighlights = function() {
var activeFilters, annotation, annotations, filtered, highlights, index, uniques, _i, _len, _ref;
activeFilters = $.grep(this.filters, function(filter) {
return !!filter.annotations.length;
});
filtered = ((_ref = activeFilters[0]) != null ? _ref.annotations : void 0) || [];
if (activeFilters.length > 1) {
annotations = [];
$.each(activeFilters, function() {
return $.merge(annotations, this.annotations);
});
uniques = [];
filtered = [];
$.each(annotations, function() {
if ($.inArray(this, uniques) === -1) {
return uniques.push(this);
} else {
return filtered.push(this);
}
});
}
highlights = this.highlights;
for (index = _i = 0, _len = filtered.length; _i < _len; index = ++_i) {
annotation = filtered[index];
highlights = highlights.not(annotation.highlights);
}
highlights.addClass(this.classes.hl.hide);
this.filtered = this.highlights.not(this.classes.hl.hide);
return this;
};
Filter.prototype.resetHighlights = function() {
this.highlights.removeClass(this.classes.hl.hide);
this.filtered = this.highlights;
return this;
};
Filter.prototype._onFilterFocus = function(event) {
var input;
input = $(event.target);
input.parent().addClass(this.classes.active);
return input.next('button').show();
};
Filter.prototype._onFilterBlur = function(event) {
var input;
if (!event.target.value) {
input = $(event.target);
input.parent().removeClass(this.classes.active);
return input.next('button').hide();
}
};
Filter.prototype._onFilterKeyup = function(event) {
var filter;
filter = $(event.target).parent().data('filter');
if (filter) {
return this.updateFilter(filter);
}
};
Filter.prototype._findNextHighlight = function(previous) {
var active, annotation, current, index, next, offset, operator, resetOffset;
if (!this.highlights.length) {
return this;
}
offset = previous ? 0 : -1;
resetOffset = previous ? -1 : 0;
operator = previous ? 'lt' : 'gt';
active = this.highlights.not('.' + this.classes.hl.hide);
current = active.filter('.' + this.classes.hl.active);
if (!current.length) {
current = active.eq(offset);
}
annotation = current.data('annotation');
index = active.index(current[0]);
next = active.filter(":" + operator + "(" + index + ")").not(annotation.highlights).eq(resetOffset);
if (!next.length) {
next = active.eq(resetOffset);
}
return this._scrollToHighlight(next.data('annotation').highlights);
};
Filter.prototype._onNextClick = function(event) {
return this._findNextHighlight();
};
Filter.prototype._onPreviousClick = function(event) {
return this._findNextHighlight(true);
};
Filter.prototype._scrollToHighlight = function(highlight) {
highlight = $(highlight);
this.highlights.removeClass(this.classes.hl.active);
highlight.addClass(this.classes.hl.active);
return $('html, body').animate({
scrollTop: highlight.offset().top - (this.element.height() + 20)
}, 150);
};
Filter.prototype._onClearClick = function(event) {
return $(event.target).prev('input').val('').keyup().blur();
};
return Filter;
})(Annotator.Plugin);
/*
//@ sourceMappingURL=filter.map
*/

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,67 @@
// Generated by CoffeeScript 1.6.3
var __hasProp = {}.hasOwnProperty,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Annotator.prototype.setupPlugins = function(config, options) {
var name, opts, pluginConfig, plugins, uri, win, _i, _len, _results;
if (config == null) {
config = {};
}
if (options == null) {
options = {};
}
win = Annotator.Util.getGlobal();
plugins = ['Unsupported', 'Auth', 'Tags', 'Filter', 'Store', 'AnnotateItPermissions'];
if (win.Showdown) {
plugins.push('Markdown');
}
uri = win.location.href.split(/#|\?/).shift() || '';
pluginConfig = {
Tags: {},
Filter: {
filters: [
{
label: Annotator._t('User'),
property: 'user'
}, {
label: Annotator._t('Tags'),
property: 'tags'
}
]
},
Auth: {
tokenUrl: config.tokenUrl || 'http://annotateit.org/api/token'
},
Store: {
prefix: config.storeUrl || 'http://annotateit.org/api',
annotationData: {
uri: uri
},
loadFromSearch: {
uri: uri
}
}
};
for (name in options) {
if (!__hasProp.call(options, name)) continue;
opts = options[name];
if (__indexOf.call(plugins, name) < 0) {
plugins.push(name);
}
}
$.extend(true, pluginConfig, options);
_results = [];
for (_i = 0, _len = plugins.length; _i < _len; _i++) {
name = plugins[_i];
if (!(name in pluginConfig) || pluginConfig[name]) {
_results.push(this.addPlugin(name, pluginConfig[name]));
} else {
_results.push(void 0);
}
}
return _results;
};
/*
//@ sourceMappingURL=kitchensink.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "kitchensink.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/kitchensink.coffee"
],
"names": [],
"mappings": ";AA2BA,IAAA;wJAAA;;AAAA,CAAA,CAAsC,CAAZ,GAAA,CAAA,EAAjB,GAAT;CACE,KAAA,yDAAA;;GADgC,CAAP;IACzB;;GAD4C,CAAR;IACpC;CAAA,CAAA,CAAA,CAAoB,KAAL;CAAf,CAGA,CAAU,GAAA,CAAV,CAAU,KAAA,UAAA;CAGV,CAAA,CAAM,CAAH,IAAH;CACE,GAAA,GAAO,GAAP;IAPF;CAAA,CAUA,CAAA,CAAuB,CAAjB,CAAA,EAAY;CAVlB,CAYA,CACE,SADF;CACE,CAAM,EAAN;CAAA,CAEE,EADF,EAAA;CACE,CAAS,IAAT,CAAA;SACE;CAAA,CAAQ,GAAP,CAAO,GAAS,CAAhB;CAAD,CAAwC,IAAxC,EAA8B,EAAA;EAC9B,QAFO;CAEP,CAAQ,GAAP,CAAO,GAAS,CAAhB;CAAD,CAAwC,IAAxC,EAA8B,EAAA;UAFvB;QAAT;MAFF;CAAA,CAOE,EADF;CACE,CAAU,EAAmB,EAA7B,EAAA,yBAAA;MAPF;CAAA,CASE,EADF,CAAA;CACE,CAAQ,EAAmB,EAA3B,EAAQ,mBAAR;CAAA,CAEE,IADF,QAAA;CACE,CAAK,CAAL,KAAA;QAFF;CAAA,CAIE,IADF,QAAA;CACE,CAAK,CAAL,KAAA;QAJF;MATF;CAbF,GAAA;AA4BA,CAAA,MAAA,QAAA;;0BAAA;CACE,CAAG,EAAH,CAAA,EAAG,QAAY;CACb,GAAA,EAAA,CAAO;MAFX;CAAA,EA5BA;CAAA,CAgCA,EAAA,EAAA,CAAA,KAAA;AAEA,CAAA;QAAA,sCAAA;wBAAA;AACK,CAAH,GAAA,QAAG;CACD,CAAqB,EAAjB,KAAJ,GAAkC;MADpC;CAAA;MADF;CAAA;mBAnCwB;CAAA"
}

View file

@ -0,0 +1,39 @@
// Generated by CoffeeScript 1.6.3
var __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.Markdown = (function(_super) {
__extends(Markdown, _super);
Markdown.prototype.events = {
'annotationViewerTextField': 'updateTextField'
};
function Markdown(element, options) {
this.updateTextField = __bind(this.updateTextField, this);
if ((typeof Showdown !== "undefined" && Showdown !== null ? Showdown.converter : void 0) != null) {
Markdown.__super__.constructor.apply(this, arguments);
this.converter = new Showdown.converter();
} else {
console.error(Annotator._t("To use the Markdown plugin, you must include Showdown into the page first."));
}
}
Markdown.prototype.updateTextField = function(field, annotation) {
var text;
text = Annotator.Util.escape(annotation.text || '');
return $(field).html(this.convert(text));
};
Markdown.prototype.convert = function(text) {
return this.converter.makeHtml(text);
};
return Markdown;
})(Annotator.Plugin);
/*
//@ sourceMappingURL=markdown.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "markdown.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/markdown.coffee"
],
"names": [],
"mappings": ";AAEA,IAAA;;kSAAA;;AAAM,CAAN,KAAsB,GAAP;CAEb;;CAAA,EACE,GADF;CACE,CAA6B,EAA7B,aAAA,UAAA;CADF,GAAA;;CAaa,CAAA,CAAA,IAAA,WAAC;CACZ,wDAAA;CAAA,GAAA,wFAAA;CACE,KAAA,GAAA,kCAAA;CAAA,EACiB,CAAhB,EAAD,EAAyB,CAAzB;MAFF;CAIE,CAAc,GAAd,CAAA,CAAO,EAAgB,mEAAT;MALL;CAbb,EAaa;;CAbb,CAiCyB,CAAR,EAAA,IAAC,CAAD,KAAjB;CAEE,GAAA,IAAA;CAAA,CAAO,CAAA,CAAP,EAAO,GAAS,CAAuB;CACvC,GAAA,CAAA,EAAc,IAAd;CApCF,EAiCiB;;CAjCjB,EAgDS,CAAA,GAAT,EAAU;CACP,GAAA,IAAD,CAAU,EAAV;CAjDF,EAgDS;;CAhDT;;CAFsC,QAAS"
}

View file

@ -0,0 +1,205 @@
// Generated by CoffeeScript 1.6.3
var __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.Permissions = (function(_super) {
__extends(Permissions, _super);
Permissions.prototype.events = {
'beforeAnnotationCreated': 'addFieldsToAnnotation'
};
Permissions.prototype.options = {
showViewPermissionsCheckbox: true,
showEditPermissionsCheckbox: true,
userId: function(user) {
return user;
},
userString: function(user) {
return user;
},
userAuthorize: function(action, annotation, user) {
var token, tokens, _i, _len;
if (annotation.permissions) {
tokens = annotation.permissions[action] || [];
if (tokens.length === 0) {
return true;
}
for (_i = 0, _len = tokens.length; _i < _len; _i++) {
token = tokens[_i];
if (this.userId(user) === token) {
return true;
}
}
return false;
} else if (annotation.user) {
if (user) {
return this.userId(user) === this.userId(annotation.user);
} else {
return false;
}
}
return true;
},
user: '',
permissions: {
'read': [],
'update': [],
'delete': [],
'admin': []
}
};
function Permissions(element, options) {
this._setAuthFromToken = __bind(this._setAuthFromToken, this);
this.updateViewer = __bind(this.updateViewer, this);
this.updateAnnotationPermissions = __bind(this.updateAnnotationPermissions, this);
this.updatePermissionsField = __bind(this.updatePermissionsField, this);
this.addFieldsToAnnotation = __bind(this.addFieldsToAnnotation, this);
Permissions.__super__.constructor.apply(this, arguments);
if (this.options.user) {
this.setUser(this.options.user);
delete this.options.user;
}
}
Permissions.prototype.pluginInit = function() {
var createCallback, self,
_this = this;
if (!Annotator.supported()) {
return;
}
self = this;
createCallback = function(method, type) {
return function(field, annotation) {
return self[method].call(self, type, field, annotation);
};
};
if (!this.user && this.annotator.plugins.Auth) {
this.annotator.plugins.Auth.withToken(this._setAuthFromToken);
}
if (this.options.showViewPermissionsCheckbox === true) {
this.annotator.editor.addField({
type: 'checkbox',
label: Annotator._t('Allow anyone to <strong>view</strong> this annotation'),
load: createCallback('updatePermissionsField', 'read'),
submit: createCallback('updateAnnotationPermissions', 'read')
});
}
if (this.options.showEditPermissionsCheckbox === true) {
this.annotator.editor.addField({
type: 'checkbox',
label: Annotator._t('Allow anyone to <strong>edit</strong> this annotation'),
load: createCallback('updatePermissionsField', 'update'),
submit: createCallback('updateAnnotationPermissions', 'update')
});
}
this.annotator.viewer.addField({
load: this.updateViewer
});
if (this.annotator.plugins.Filter) {
return this.annotator.plugins.Filter.addFilter({
label: Annotator._t('User'),
property: 'user',
isFiltered: function(input, user) {
var keyword, _i, _len, _ref;
user = _this.options.userString(user);
if (!(input && user)) {
return false;
}
_ref = input.split(/\s*/);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
keyword = _ref[_i];
if (user.indexOf(keyword) === -1) {
return false;
}
}
return true;
}
});
}
};
Permissions.prototype.setUser = function(user) {
return this.user = user;
};
Permissions.prototype.addFieldsToAnnotation = function(annotation) {
if (annotation) {
annotation.permissions = this.options.permissions;
if (this.user) {
return annotation.user = this.user;
}
}
};
Permissions.prototype.authorize = function(action, annotation, user) {
if (user === void 0) {
user = this.user;
}
if (this.options.userAuthorize) {
return this.options.userAuthorize.call(this.options, action, annotation, user);
} else {
return true;
}
};
Permissions.prototype.updatePermissionsField = function(action, field, annotation) {
var input;
field = $(field).show();
input = field.find('input').removeAttr('disabled');
if (!this.authorize('admin', annotation)) {
field.hide();
}
if (this.authorize(action, annotation || {}, null)) {
return input.attr('checked', 'checked');
} else {
return input.removeAttr('checked');
}
};
Permissions.prototype.updateAnnotationPermissions = function(type, field, annotation) {
var dataKey;
if (!annotation.permissions) {
annotation.permissions = this.options.permissions;
}
dataKey = type + '-permissions';
if ($(field).find('input').is(':checked')) {
return annotation.permissions[type] = [];
} else {
return annotation.permissions[type] = [this.user];
}
};
Permissions.prototype.updateViewer = function(field, annotation, controls) {
var user, username;
field = $(field);
username = this.options.userString(annotation.user);
if (annotation.user && username && typeof username === 'string') {
user = Annotator.Util.escape(this.options.userString(annotation.user));
field.html(user).addClass('annotator-user');
} else {
field.remove();
}
if (controls) {
if (!this.authorize('update', annotation)) {
controls.hideEdit();
}
if (!this.authorize('delete', annotation)) {
return controls.hideDelete();
}
}
};
Permissions.prototype._setAuthFromToken = function(token) {
return this.setUser(token.userId);
};
return Permissions;
})(Annotator.Plugin);
/*
//@ sourceMappingURL=permissions.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "permissions.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/permissions.coffee"
],
"names": [],
"mappings": "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"
}

View file

@ -0,0 +1,271 @@
// Generated by CoffeeScript 1.6.3
var __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; },
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Annotator.Plugin.Store = (function(_super) {
__extends(Store, _super);
Store.prototype.events = {
'annotationCreated': 'annotationCreated',
'annotationDeleted': 'annotationDeleted',
'annotationUpdated': 'annotationUpdated'
};
Store.prototype.options = {
annotationData: {},
emulateHTTP: false,
loadFromSearch: false,
prefix: '/store',
urls: {
create: '/annotations',
read: '/annotations/:id',
update: '/annotations/:id',
destroy: '/annotations/:id',
search: '/search'
}
};
function Store(element, options) {
this._onError = __bind(this._onError, this);
this._onLoadAnnotationsFromSearch = __bind(this._onLoadAnnotationsFromSearch, this);
this._onLoadAnnotations = __bind(this._onLoadAnnotations, this);
this._getAnnotations = __bind(this._getAnnotations, this);
Store.__super__.constructor.apply(this, arguments);
this.annotations = [];
}
Store.prototype.pluginInit = function() {
if (!Annotator.supported()) {
return;
}
if (this.annotator.plugins.Auth) {
return this.annotator.plugins.Auth.withToken(this._getAnnotations);
} else {
return this._getAnnotations();
}
};
Store.prototype._getAnnotations = function() {
if (this.options.loadFromSearch) {
return this.loadAnnotationsFromSearch(this.options.loadFromSearch);
} else {
return this.loadAnnotations();
}
};
Store.prototype.annotationCreated = function(annotation) {
var _this = this;
if (__indexOf.call(this.annotations, annotation) < 0) {
this.registerAnnotation(annotation);
return this._apiRequest('create', annotation, function(data) {
if (data.id == null) {
console.warn(Annotator._t("Warning: No ID returned from server for annotation "), annotation);
}
return _this.updateAnnotation(annotation, data);
});
} else {
return this.updateAnnotation(annotation, {});
}
};
Store.prototype.annotationUpdated = function(annotation) {
var _this = this;
if (__indexOf.call(this.annotations, annotation) >= 0) {
return this._apiRequest('update', annotation, (function(data) {
return _this.updateAnnotation(annotation, data);
}));
}
};
Store.prototype.annotationDeleted = function(annotation) {
var _this = this;
if (__indexOf.call(this.annotations, annotation) >= 0) {
return this._apiRequest('destroy', annotation, (function() {
return _this.unregisterAnnotation(annotation);
}));
}
};
Store.prototype.registerAnnotation = function(annotation) {
return this.annotations.push(annotation);
};
Store.prototype.unregisterAnnotation = function(annotation) {
return this.annotations.splice(this.annotations.indexOf(annotation), 1);
};
Store.prototype.updateAnnotation = function(annotation, data) {
if (__indexOf.call(this.annotations, annotation) < 0) {
console.error(Annotator._t("Trying to update unregistered annotation!"));
} else {
$.extend(annotation, data);
}
return $(annotation.highlights).data('annotation', annotation);
};
Store.prototype.loadAnnotations = function() {
return this._apiRequest('read', null, this._onLoadAnnotations);
};
Store.prototype._onLoadAnnotations = function(data) {
var a, annotation, annotationMap, newData, _i, _j, _len, _len1, _ref;
if (data == null) {
data = [];
}
annotationMap = {};
_ref = this.annotations;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
a = _ref[_i];
annotationMap[a.id] = a;
}
newData = [];
for (_j = 0, _len1 = data.length; _j < _len1; _j++) {
a = data[_j];
if (annotationMap[a.id]) {
annotation = annotationMap[a.id];
this.updateAnnotation(annotation, a);
} else {
newData.push(a);
}
}
this.annotations = this.annotations.concat(newData);
return this.annotator.loadAnnotations(newData.slice());
};
Store.prototype.loadAnnotationsFromSearch = function(searchOptions) {
return this._apiRequest('search', searchOptions, this._onLoadAnnotationsFromSearch);
};
Store.prototype._onLoadAnnotationsFromSearch = function(data) {
if (data == null) {
data = {};
}
return this._onLoadAnnotations(data.rows || []);
};
Store.prototype.dumpAnnotations = function() {
var ann, _i, _len, _ref, _results;
_ref = this.annotations;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
ann = _ref[_i];
_results.push(JSON.parse(this._dataFor(ann)));
}
return _results;
};
Store.prototype._apiRequest = function(action, obj, onSuccess) {
var id, options, request, url;
id = obj && obj.id;
url = this._urlFor(action, id);
options = this._apiRequestOptions(action, obj, onSuccess);
request = $.ajax(url, options);
request._id = id;
request._action = action;
return request;
};
Store.prototype._apiRequestOptions = function(action, obj, onSuccess) {
var data, method, opts;
method = this._methodFor(action);
opts = {
type: method,
headers: this.element.data('annotator:headers'),
dataType: "json",
success: onSuccess || function() {},
error: this._onError
};
if (this.options.emulateHTTP && (method === 'PUT' || method === 'DELETE')) {
opts.headers = $.extend(opts.headers, {
'X-HTTP-Method-Override': method
});
opts.type = 'POST';
}
if (action === "search") {
opts = $.extend(opts, {
data: obj
});
return opts;
}
data = obj && this._dataFor(obj);
if (this.options.emulateJSON) {
opts.data = {
json: data
};
if (this.options.emulateHTTP) {
opts.data._method = method;
}
return opts;
}
opts = $.extend(opts, {
data: data,
contentType: "application/json; charset=utf-8"
});
return opts;
};
Store.prototype._urlFor = function(action, id) {
var url;
url = this.options.prefix != null ? this.options.prefix : '';
url += this.options.urls[action];
url = url.replace(/\/:id/, id != null ? '/' + id : '');
url = url.replace(/:id/, id != null ? id : '');
return url;
};
Store.prototype._methodFor = function(action) {
var table;
table = {
'create': 'POST',
'read': 'GET',
'update': 'PUT',
'destroy': 'DELETE',
'search': 'GET'
};
return table[action];
};
Store.prototype._dataFor = function(annotation) {
var data, highlights;
highlights = annotation.highlights;
delete annotation.highlights;
$.extend(annotation, this.options.annotationData);
data = JSON.stringify(annotation);
if (highlights) {
annotation.highlights = highlights;
}
return data;
};
Store.prototype._onError = function(xhr) {
var action, message;
action = xhr._action;
message = Annotator._t("Sorry we could not ") + action + Annotator._t(" this annotation");
if (xhr._action === 'search') {
message = Annotator._t("Sorry we could not search the store for annotations");
} else if (xhr._action === 'read' && !xhr._id) {
message = Annotator._t("Sorry we could not ") + action + Annotator._t(" the annotations from the store");
}
switch (xhr.status) {
case 401:
message = Annotator._t("Sorry you are not allowed to ") + action + Annotator._t(" this annotation");
break;
case 404:
message = Annotator._t("Sorry we could not connect to the annotations store");
break;
case 500:
message = Annotator._t("Sorry something went wrong with the annotation store");
}
Annotator.showNotification(message, Annotator.Notification.ERROR);
return console.error(Annotator._t("API request failed:") + (" '" + xhr.status + "'"));
};
return Store;
})(Annotator.Plugin);
/*
//@ sourceMappingURL=store.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "store.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/store.coffee"
],
"names": [],
"mappings": "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"
}

View file

@ -0,0 +1,123 @@
// 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.Tags = (function(_super) {
__extends(Tags, _super);
function Tags() {
this.setAnnotationTags = __bind(this.setAnnotationTags, this);
this.updateField = __bind(this.updateField, this);
_ref = Tags.__super__.constructor.apply(this, arguments);
return _ref;
}
Tags.prototype.options = {
parseTags: function(string) {
var tags;
string = $.trim(string);
tags = [];
if (string) {
tags = string.split(/\s+/);
}
return tags;
},
stringifyTags: function(array) {
return array.join(" ");
}
};
Tags.prototype.field = null;
Tags.prototype.input = null;
Tags.prototype.pluginInit = function() {
if (!Annotator.supported()) {
return;
}
this.field = this.annotator.editor.addField({
label: Annotator._t('Add some tags here') + '\u2026',
load: this.updateField,
submit: this.setAnnotationTags
});
this.annotator.viewer.addField({
load: this.updateViewer
});
if (this.annotator.plugins.Filter) {
this.annotator.plugins.Filter.addFilter({
label: Annotator._t('Tag'),
property: 'tags',
isFiltered: Annotator.Plugin.Tags.filterCallback
});
}
return this.input = $(this.field).find(':input');
};
Tags.prototype.parseTags = function(string) {
return this.options.parseTags(string);
};
Tags.prototype.stringifyTags = function(array) {
return this.options.stringifyTags(array);
};
Tags.prototype.updateField = function(field, annotation) {
var value;
value = '';
if (annotation.tags) {
value = this.stringifyTags(annotation.tags);
}
return this.input.val(value);
};
Tags.prototype.setAnnotationTags = function(field, annotation) {
return annotation.tags = this.parseTags(this.input.val());
};
Tags.prototype.updateViewer = function(field, annotation) {
field = $(field);
if (annotation.tags && $.isArray(annotation.tags) && annotation.tags.length) {
return field.addClass('annotator-tags').html(function() {
var string;
return string = $.map(annotation.tags, function(tag) {
return '<span class="annotator-tag">' + Annotator.Util.escape(tag) + '</span>';
}).join(' ');
});
} else {
return field.remove();
}
};
return Tags;
})(Annotator.Plugin);
Annotator.Plugin.Tags.filterCallback = function(input, tags) {
var keyword, keywords, matches, tag, _i, _j, _len, _len1;
if (tags == null) {
tags = [];
}
matches = 0;
keywords = [];
if (input) {
keywords = input.split(/\s+/g);
for (_i = 0, _len = keywords.length; _i < _len; _i++) {
keyword = keywords[_i];
if (tags.length) {
for (_j = 0, _len1 = tags.length; _j < _len1; _j++) {
tag = tags[_j];
if (tag.indexOf(keyword) !== -1) {
matches += 1;
}
}
}
}
}
return matches === keywords.length;
};
/*
//@ sourceMappingURL=tags.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "tags.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/tags.coffee"
],
"names": [],
"mappings": ";AAEA,IAAA;GAAA;;kSAAA;;AAAM,CAAN,KAAsB,GAAP;CAEb;;;;;;;CAAA;;CAAA,EAIE,IAJF;CAIE,CAAW,CAAA,CAAX,EAAW,GAAX;CACE,GAAA,MAAA;CAAA,EAAS,CAAA,EAAT;CAAA,CAAA,CAEO,CAAP,EAAA;CACA,GAA8B,EAA9B;CAAA,EAAO,CAAP,CAAO,CAAM,EAAb;QAHA;CADS,YAKT;CALF,IAAW;CAAX,CASe,CAAA,CAAf,CAAe,IAAC,IAAhB;CACQ,EAAN,CAAA,CAAK,QAAL;CAVF,IASe;CAbjB,GAAA;;CAAA,EAkBO,CAlBP,CAkBA;;CAlBA,EAsBO,CAtBP,CAsBA;;CAtBA,EA6BY,MAAA,CAAZ;AACgB,CAAd,GAAA,KAAuB;CAAvB,WAAA;MAAA;CAAA,EAES,CAAT,CAAA,CAA0B,EAAjB,CAAU;CAAiB,CAC1B,CAAqC,EAA7C,CAAA,EADkC,CACjB,WAAT;CAD0B,CAE1B,EAAR,EAAA,KAFkC;CAAA,CAG1B,EAAI,EAAZ,WAHkC;CAFpC,KAES;CAFT,GAQA,EAAiB,EAAjB,CAAU;CAAiB,CACnB,EAAN,EAAA,MADyB;CAR3B,KAQA;CAKA,GAAA,EAAA,CAAqB,EAAR;CACX,GAAC,EAAD,CAAkB,EAAR;CACR,CAAO,GAAP,GAAA,CAAgB;CAAhB,CACU,IADV,EACA;CADA,CAEY,EAAqB,EAAL,EAA5B,CAAqB,CAArB,IAFA;CADF,OAAA;MAdF;CAmBC,EAAQ,CAAR,CAAD,GAAS,GAAT;CAjDF,EA6BY;;CA7BZ,EA6DW,GAAA,GAAX;CACG,GAAA,EAAD,CAAQ,EAAR,EAAA;CA9DF,EA6DW;;CA7DX,EA0Ee,EAAA,IAAC,IAAhB;CACG,GAAA,CAAD,EAAQ,IAAR,EAAA;CA3EF,EA0Ee;;CA1Ef,CA0FqB,CAAR,EAAA,IAAC,CAAD,CAAb;CACE,IAAA,GAAA;CAAA,CAAA,CAAQ,CAAR,CAAA;CACA,GAAA,MAAyD;CAAzD,EAAQ,CAAI,CAAZ,CAAA,IAAqC,GAA7B;MADR;CAGC,EAAD,CAAC,CAAK,MAAN;CA9FF,EA0Fa;;CA1Fb,CA+G2B,CAAR,EAAA,IAAC,CAAD,OAAnB;CACa,EAAO,CAAlB,CAAuC,IAArB,CAAR,CAAV;CAhHF,EA+GmB;;CA/GnB,CA+HsB,CAAR,EAAA,IAAC,CAAD,EAAd;CACE,EAAQ,CAAR,CAAA;CAEA,GAAA,EAAA,CAAuB,GAAV;CACL,EAAgC,CAAtC,CAAK,GAAL,CAAsC,IAAtC,GAAA;CACE,KAAA,MAAA;CAAU,CAAqB,CAAtB,CAAA,EAAT,GAAgC,CAAP,KAAzB;CAC+C,EAAV,CAAc,EAAd,GAAS,QAA1C,aAAA;CADK,EAAA,CAAA,KAAsB;CADjC,MAAsC;MADxC;CAOQ,IAAD,CAAL,OAAA;MAVU;CA/Hd,EA+Hc;;CA/Hd;;CAFkC,QAAS;;AA0J7C,CA1JA,CA0J+C,CAAR,CAAlB,CAAkB,CAAvB,GAAP,KAAT;CACE,KAAA,8CAAA;;GADoD,CAAP;IAC7C;CAAA,CAAA,CAAW,IAAX;CAAA,CACA,CAAW,KAAX;CACA,CAAA,EAAG,CAAH;CACE,EAAW,CAAX,CAAgB,CAAL,EAAX;AACA,CAAA,QAAA,sCAAA;8BAAA;CAAkC,GAAL;AAC3B,CAAA,YAAA,gCAAA;0BAAA;AAA2D,CAArB,EAAD,CAAH,CAAwB,EAAxB;CAAlC,GAAW,GAAX,KAAA;YAAA;CAAA;QADF;CAAA,IAFF;IAFA;CAOoB,IAAT,EAAX,CAAmB,CAAnB;CARqC"
}

View file

@ -0,0 +1,36 @@
// Generated by CoffeeScript 1.6.3
var _ref,
__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.Unsupported = (function(_super) {
__extends(Unsupported, _super);
function Unsupported() {
_ref = Unsupported.__super__.constructor.apply(this, arguments);
return _ref;
}
Unsupported.prototype.options = {
message: Annotator._t("Sorry your current browser does not support the Annotator")
};
Unsupported.prototype.pluginInit = function() {
var _this = this;
if (!Annotator.supported()) {
return $(function() {
Annotator.showNotification(_this.options.message);
if ((window.XMLHttpRequest === void 0) && (ActiveXObject !== void 0)) {
return $('html').addClass('ie6');
}
});
}
};
return Unsupported;
})(Annotator.Plugin);
/*
//@ sourceMappingURL=unsupported.map
*/

View file

@ -0,0 +1,10 @@
{
"version": 3,
"file": "unsupported.js",
"sourceRoot": "../..",
"sources": [
"src/plugin/unsupported.coffee"
],
"names": [],
"mappings": ";AAEA,IAAA;GAAA;kSAAA;;AAAM,CAAN,KAAsB,GAAP;CAEb;;;;;CAAA;;CAAA,EACE,IADF;CACE,CAAS,EAAT,GAAA,EAAkB,kDAAT;CADX,GAAA;;CAAA,EAOY,MAAA,CAAZ;CACE,OAAA,IAAA;AAAO,CAAP,GAAA,KAAgB;CACd,EAAE,MAAA,IAAF;CAEE,IAA4B,EAAO,CAAnC,CAAS,OAAT;CAIA,GAAG,CAA0B,CAAnB,EAAV,KAA6C,CAAzC;CACF,IAAA,CAAA,EAAA,SAAA;UAPF;CAAF,MAAE;MAFM;CAPZ,EAOY;;CAPZ;;CAFyC,QAAS"
}