diff -r 27b248a13355 -r 8a6c9e3d0158 src/widgets/Annotation.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/Annotation.js Thu Aug 30 13:16:33 2012 +0200
@@ -0,0 +1,170 @@
+// TODO: Migrate Timeupdate functions to Extract
+
+IriSP.Widgets.Annotation = function(player, config) {
+ IriSP.Widgets.Widget.call(this, player, config);
+ this.lastAnnotation = false;
+ this.minimized = this.start_minimized || false;
+ this.bounds = [ 0, 0 ];
+};
+
+IriSP.Widgets.Annotation.prototype = new IriSP.Widgets.Widget();
+
+IriSP.Widgets.Annotation.prototype.messages = {
+ fr: {
+ watching: "Je regarde ",
+ on_site: " sur ",
+ tags_: "Mots-clés :",
+ description_: "Description :",
+ excerpt_from: "Extrait de :"
+ },
+ en: {
+ watching: "I'm watching ",
+ on_site: " on ",
+ tags_: "Keywords:",
+ description_: "Description:",
+ excerpt_from: "Excerpt from:"
+ }
+}
+
+IriSP.Widgets.Annotation.prototype.template =
+ '
';
+
+IriSP.Widgets.Annotation.prototype.defaults = {
+ annotation_type : "chap",
+ start_minimized: true,
+ show_top_border : false,
+ site_name : "Lignes de Temps"
+}
+
+IriSP.Widgets.Annotation.prototype.draw = function() {
+ this.renderTemplate();
+ this.insertSubwidget(this.$.find(".Ldt-Annotation-Social"), "socialWidget", { type: "Social" });
+ this.bindPopcorn("timeupdate","onTimeupdate");
+ this.bindPopcorn("IriSP.Annotation.hide","hide");
+ this.bindPopcorn("IriSP.Annotation.show","show");
+ this.bindPopcorn("IriSP.Annotation.minimize","minimize");
+ this.bindPopcorn("IriSP.Annotation.maximize","maximize");
+ this.bindPopcorn("IriSP.Annotation.getBounds","sendBounds");
+ this.$.find(".Ldt-Annotation-MaxMinButton").click(this.functionWrapper("toggleSize"));
+ this.onTimeupdate();
+}
+
+IriSP.Widgets.Annotation.prototype.onTimeupdate = function() {
+ var _time = Math.floor(this.player.popcorn.currentTime() * 1000),
+ _list = this.getWidgetAnnotationsAtTime();
+ if (_list.length) {
+ if (_list[0].id !== this.lastAnnotation) {
+ this.drawAnnotation(_list[0]);
+ this.bounds = [ _list[0].begin.valueOf(), _list[0].end.valueOf() ];
+ }
+ this.player.popcorn.trigger("IriSP.Arrow.updatePosition",{widget: this.type, time: ( _list[0].begin + _list[0].end ) / 2});
+ }
+ else {
+ this.lastAnnotation = false;
+ this.$.find(".Ldt-Annotation-Inner").addClass("Ldt-Annotation-Empty");
+ this.player.popcorn.trigger("IriSP.Arrow.updatePosition",{widget: this.type, time: _time});
+ this.bounds = [ _time, _time ];
+ }
+ this.sendBounds();
+}
+
+IriSP.Widgets.Annotation.prototype.sendBounds = function() {
+ this.player.popcorn.trigger("IriSP.Annotation.boundsChanged",this.bounds);
+}
+
+IriSP.Widgets.Annotation.prototype.drawAnnotation = function(_annotation) {
+ this.lastAnnotation = _annotation.id;
+ var _url = (typeof _annotation.url !== "undefined"
+ ? _annotation.url
+ : (document.location.href.replace(/#.*$/,'') + '#id=' + _annotation.id));
+ var _text = this.l10n.watching + _annotation.title + (this.site_name ? this.l10n.on_site + this.site_name : '');
+ var _tags = _annotation.getTagTexts();
+ if (_tags.length) {
+ var _html = IriSP._(_tags).map(function(_tag) {
+ return '' + _tag + '';
+ }).join("");
+ this.$.find(".Ldt-Annotation-Tags").html(_html);
+ this.$.find(".Ldt-Annotation-Tags-Block").removeClass("Ldt-Annotation-EmptyBlock");
+
+ /* Correct the empty tag bug */
+ this.$.find('.Ldt-Annotation-TagLabel').each(function() {
+ var _el = IriSP.jQuery(this);
+ if (!_el.text().replace(/(^\s+|\s+$)/g,'')) {
+ _el.detach();
+ }
+ });
+
+ this.$.find('.Ldt-Annotation-TagLabel').click(function() {
+ _this.player.popcorn.trigger("IriSP.search.triggeredSearch", IriSP.jQuery(this).text().replace(/(^\s+|\s+$)/g,''));
+ });
+ } else {
+ this.$.find(".Ldt-Annotation-Tags-Block").addClass("Ldt-Annotation-EmptyBlock");
+ }
+ this.$.find(".Ldt-Annotation-Title").html(_annotation.title);
+ var _desc = _annotation.description.replace(/(^\s+|\s+$)/g,'');
+ if (_desc) {
+ this.$.find(".Ldt-Annotation-Description-Block").removeClass("Ldt-Annotation-EmptyBlock");
+ this.$.find(".Ldt-Annotation-Description").html(_desc);
+ } else {
+ this.$.find(".Ldt-Annotation-Description-Block").addClass("Ldt-Annotation-EmptyBlock");
+ }
+ this.$.find(".Ldt-Annotation-Begin").html(_annotation.begin.toString());
+ this.$.find(".Ldt-Annotation-End").html(_annotation.end.toString());
+ if (_annotation.elementType === "mashedAnnotation") {
+ this.$.find('.Ldt-Annotation-Inner').addClass("Ldt-Annotation-isMashup");
+ this.$.find(".Ldt-Annotation-MashupMedia").html(_annotation.getMedia().title);
+ this.$.find(".Ldt-Annotation-MashupBegin").html(_annotation.annotation.begin.toString());
+ this.$.find(".Ldt-Annotation-MashupEnd").html(_annotation.annotation.end.toString());
+ } else {
+ this.$.find('.Ldt-Annotation-Inner').removeClass("Ldt-Annotation-isMashup");
+ }
+ if (typeof this.socialWidget !== "undefined") {
+ this.socialWidget.updateUrls(_url, _text);
+ } else {
+ var _this = this;
+ setTimeout(function() {
+ if (typeof _this.socialWidget !== "undefined") {
+ _this.socialWidget.updateUrls(_url, _text);
+ }
+ },800);
+ }
+ this.$.find(".Ldt-Annotation-Inner").removeClass("Ldt-Annotation-Empty");
+}
+
+IriSP.Widgets.Annotation.prototype.hide = function() {
+ this.$.slideUp();
+}
+
+IriSP.Widgets.Annotation.prototype.show = function() {
+ this.$.slideDown();
+}
+
+IriSP.Widgets.Annotation.prototype.toggleSize = function() {
+ if (this.minimized) {
+ this.maximize();
+ } else {
+ this.minimize();
+ }
+}
+
+IriSP.Widgets.Annotation.prototype.minimize = function() {
+ this.minimized = true;
+ this.$.find('.Ldt-Annotation-Inner').addClass("Ldt-Annotation-Minimized");
+}
+
+IriSP.Widgets.Annotation.prototype.maximize = function() {
+ this.minimized = false;
+ this.$.find('.Ldt-Annotation-Inner').removeClass("Ldt-Annotation-Minimized");
+}
\ No newline at end of file