mirror of
https://github.com/futurepress/epub.js.git
synced 2025-10-03 14:59:18 +02:00
Added several usage examples, fixed bugs, turned off restore by default
This commit is contained in:
parent
0e08b734ec
commit
416f7ab6a0
112 changed files with 23903 additions and 3348 deletions
259
libs/annotator/lib/plugin/document.js
Normal file
259
libs/annotator/lib/plugin/document.js
Normal 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
|
||||
*/
|
Loading…
Add table
Add a link
Reference in a new issue