Mercurial > hg > OKFNAnnotator
comparison annotator_files/lib/extensions.js @ 3:6356e78ccf5c
new version contains Annotator JS files to be used with FilesystemSite.
author | casties |
---|---|
date | Thu, 05 Apr 2012 19:37:27 +0200 |
parents | |
children | 6979313586cf |
comparison
equal
deleted
inserted
replaced
2:4c6c8835fc5c | 3:6356e78ccf5c |
---|---|
1 var $, gettext, _gettext, _ref, _t; | |
2 | |
3 gettext = null; | |
4 | |
5 if (typeof Gettext !== "undefined" && Gettext !== null) { | |
6 _gettext = new Gettext({ | |
7 domain: "annotator" | |
8 }); | |
9 gettext = function(msgid) { | |
10 return _gettext.gettext(msgid); | |
11 }; | |
12 } else { | |
13 gettext = function(msgid) { | |
14 return msgid; | |
15 }; | |
16 } | |
17 | |
18 _t = function(msgid) { | |
19 return gettext(msgid); | |
20 }; | |
21 | |
22 if (!(typeof jQuery !== "undefined" && jQuery !== null ? (_ref = jQuery.fn) != null ? _ref.jquery : void 0 : void 0)) { | |
23 console.error(_t("Annotator requires jQuery: have you included lib/vendor/jquery.js?")); | |
24 } | |
25 | |
26 if (!(JSON && JSON.parse && JSON.stringify)) { | |
27 console.error(_t("Annotator requires a JSON implementation: have you included lib/vendor/json2.js?")); | |
28 } | |
29 | |
30 $ = jQuery.sub(); | |
31 | |
32 $.flatten = function(array) { | |
33 var flatten; | |
34 flatten = function(ary) { | |
35 var el, flat, _i, _len; | |
36 flat = []; | |
37 for (_i = 0, _len = ary.length; _i < _len; _i++) { | |
38 el = ary[_i]; | |
39 flat = flat.concat(el && $.isArray(el) ? flatten(el) : el); | |
40 } | |
41 return flat; | |
42 }; | |
43 return flatten(array); | |
44 }; | |
45 | |
46 $.plugin = function(name, object) { | |
47 return jQuery.fn[name] = function(options) { | |
48 var args; | |
49 args = Array.prototype.slice.call(arguments, 1); | |
50 return this.each(function() { | |
51 var instance; | |
52 instance = $.data(this, name); | |
53 if (instance) { | |
54 return options && instance[options].apply(instance, args); | |
55 } else { | |
56 instance = new object(this, options); | |
57 return $.data(this, name, instance); | |
58 } | |
59 }); | |
60 }; | |
61 }; | |
62 | |
63 $.fn.textNodes = function() { | |
64 var getTextNodes; | |
65 getTextNodes = function(node) { | |
66 var nodes; | |
67 if (node && node.nodeType !== 3) { | |
68 nodes = []; | |
69 if (node.nodeType !== 8) { | |
70 node = node.lastChild; | |
71 while (node) { | |
72 nodes.push(getTextNodes(node)); | |
73 node = node.previousSibling; | |
74 } | |
75 } | |
76 return nodes.reverse(); | |
77 } else { | |
78 return node; | |
79 } | |
80 }; | |
81 return this.map(function() { | |
82 return $.flatten(getTextNodes(this)); | |
83 }); | |
84 }; | |
85 | |
86 $.fn.xpath = function(relativeRoot) { | |
87 var jq; | |
88 jq = this.map(function() { | |
89 var elem, idx, path; | |
90 path = ''; | |
91 elem = this; | |
92 while (elem && elem.nodeType === 1 && elem !== relativeRoot) { | |
93 idx = $(elem.parentNode).children(elem.tagName).index(elem) + 1; | |
94 idx = idx > 1 ? "[" + idx + "]" : ""; | |
95 path = "/" + elem.tagName.toLowerCase() + idx + path; | |
96 elem = elem.parentNode; | |
97 } | |
98 return path; | |
99 }); | |
100 return jq.get(); | |
101 }; | |
102 | |
103 $.escape = function(html) { | |
104 return html.replace(/&(?!\w+;)/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); | |
105 }; | |
106 | |
107 $.fn.escape = function(html) { | |
108 if (arguments.length) return this.html($.escape(html)); | |
109 return this.html(); | |
110 }; |