src/widgets/Annotation.js
author veltr
Tue, 24 Apr 2012 20:25:40 +0200
branchnew-model
changeset 876 03967b6ada7c
child 880 4c7b33bf2795
permissions -rw-r--r--
ArrowWidget, AnnotationWidget
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
876
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     1
// TODO: Open share links in a small window
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     2
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     3
IriSP.Widgets.Annotation = function(player, config) {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     4
    IriSP.Widgets.Widget.call(this, player, config);
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     5
    this.lastAnnotation = false;
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     6
};
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     7
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     8
IriSP.Widgets.Annotation.prototype = new IriSP.Widgets.Widget();
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
     9
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    10
IriSP.Widgets.Annotation.prototype.messages = {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    11
    "fr": {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    12
        share_on: "Partager sur",
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    13
        watching: "Je regarde ",
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    14
        on_site: " sur ",
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    15
        tags: "Mots-clés :"
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    16
    },
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    17
    "en": {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    18
        share_on: "Share on",
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    19
        watching: "I'm watching ",
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    20
        on_site: " on ",
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    21
        tags: "Keywords:"
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    22
    }
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    23
}
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    24
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    25
IriSP.Widgets.Annotation.prototype.template =
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    26
    '<div class="Ldt-Annotation-Widget {{#show_top_border}}Ldt-Annotation-ShowTop{{/show_top_border}}">'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    27
    + '<div class="Ldt-Annotation-Inner"></div></div>';
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    28
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    29
IriSP.Widgets.Annotation.prototype.defaults = {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    30
    annotation_type : "chap",
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    31
    show_top_border : false,
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    32
    site_name : "Lignes de Temps"
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    33
}
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    34
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    35
IriSP.Widgets.Annotation.prototype.draw = function() {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    36
    this.renderTemplate();
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    37
    this.bindPopcorn("timeupdate","onTimeupdate");
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    38
    this.onTimeupdate();
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    39
}
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    40
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    41
IriSP.Widgets.Annotation.prototype.onTimeupdate = function() {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    42
    var _time = Math.floor(this.player.popcorn.currentTime() * 1000),
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    43
        _list = this.getWidgetAnnotations().filter(function(_annotation) {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    44
            return _annotation.begin <= _time && _annotation.end > _time;
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    45
        });
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    46
    if (_list.length) {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    47
        if (_list[0].id !== this.lastAnnotation) {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    48
            this.drawAnnotation(_list[0]);
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    49
        }
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    50
    }
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    51
    else {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    52
        this.$.find('.Ldt-Annotation-Inner').html('');
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    53
    }
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    54
}
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    55
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    56
IriSP.Widgets.Annotation.prototype.drawAnnotation = function(_annotation) {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    57
    this.lastAnnotation = _annotation.id;
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    58
    console.log(_annotation);
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    59
    var _url = (typeof _annotation.url !== "undefined" 
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    60
            ? _annotation.url
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    61
            : (document.location.href.replace(/#.*$/,'') + '#id='  + _annotation.namespacedId.name)),
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    62
        _text = this.l10n.watching + _annotation.title + (this.site_name ? this.l10n.on_site + this.site_name : ''),
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    63
        _tmpl = '<div class="Ldt-Annotation-ShareIcons">'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    64
            + '<a href="{{fb_url}}" target="_blank" class="Ldt-Annotation-Share Ldt-Annotation-Fb" title="{{l10n.share_on}} Facebook"></a>'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    65
            + '<a href="{{twitter_url}}" target="_blank" class="Ldt-Annotation-Share Ldt-Annotation-Twitter" title="{{l10n.share_on}} Twitter"></a>'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    66
            + '<a href="{{gplus_url}}" target="_blank" class="Ldt-Annotation-Share Ldt-Annotation-Gplus" title="{{l10n.share_on}} Google+"></a>'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    67
            + '</div>'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    68
            + '<h3><span class="Ldt-Annotation-Title">{{title}}</span> ( <span class="Ldt-Annotation-Time">{{begin}} - {{end}}</span> )</h3>'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    69
            + '<p class="Ldt-Annotation-Description">{{description}}</p>'
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    70
            + '{{#tags.length}}<ul class="Ldt-Annotation-Tags"><li class="Ldt-Annotation-TagLabel">{{l10n.tags}}</li>{{#tags}}<li>{{.}}</li>{{/tags}}</ul>{{/tags.length}}',
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    71
        _attr = {
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    72
            title: _annotation.title,
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    73
            description: _annotation.description,
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    74
            begin: _annotation.begin.toString(),
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    75
            end: _annotation.end.toString(),
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    76
            tags: _annotation.getTagTexts(),
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    77
            l10n: this.l10n
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    78
        }
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    79
    _attr.fb_url = "http://www.facebook.com/share.php?" + IriSP.jQuery.param({ u: _url, t: _text });
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    80
    _attr.twitter_url = "https://twitter.com/intent/tweet?" + IriSP.jQuery.param({ url: _url, text: _text });
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    81
    _attr.gplus_url = "https://plusone.google.com/_/+1/confirm?" + IriSP.jQuery.param({ url: _url, title: _text });
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    82
    this.$.find('.Ldt-Annotation-Inner').html(Mustache.to_html(_tmpl, _attr));
03967b6ada7c ArrowWidget, AnnotationWidget
veltr
parents:
diff changeset
    83
}