1 // TODO: Open share links in a small window |
|
2 |
|
3 IriSP.Widgets.Social = function(player, config) { |
|
4 IriSP.Widgets.Widget.call(this, player, config); |
|
5 ZeroClipboard.setMoviePath( IriSP.getLib('zeroClipboardSwf') ); |
|
6 }; |
|
7 |
|
8 IriSP.Widgets.Social.prototype = new IriSP.Widgets.Widget(); |
|
9 |
|
10 IriSP.Widgets.Social.prototype.defaults = { |
|
11 text: "", |
|
12 url: "", |
|
13 show_url: true, |
|
14 show_twitter: true, |
|
15 show_fb: true, |
|
16 show_gplus: true, |
|
17 show_mail: true |
|
18 }; |
|
19 |
|
20 IriSP.Widgets.Social.prototype.template = |
|
21 '<span class="Ldt-Social">{{#show_url}}<div class="Ldt-Social-Url-Container"><a href="#" draggable="true" target="_blank" class="Ldt-Social-Square Ldt-Social-Url Ldt-TraceMe" title="{{l10n.share_link}}">' |
|
22 + '</a><div class="Ldt-Social-UrlPop"><input class="Ldt-Social-Input"/><div class="Ldt-Social-CopyBtn">{{l10n.copy}}</div></div></div>{{/show_url}}' |
|
23 + '{{#show_fb}}<a href="#" target="_blank" class="Ldt-Social-Fb Ldt-Social-Ext Ldt-TraceMe" title="{{l10n.share_on}} Facebook"></a>{{/show_fb}}' |
|
24 + '{{#show_twitter}}<a href="#" target="_blank" class="Ldt-Social-Twitter Ldt-Social-Ext Ldt-TraceMe" title="{{l10n.share_on}} Twitter"></a>{{/show_twitter}}' |
|
25 + '{{#show_gplus}}<a href="#" target="_blank" class="Ldt-Social-Gplus Ldt-Social-Ext Ldt-TraceMe" title="{{l10n.share_on}} Google+"></a>{{/show_gplus}}' |
|
26 + '{{#show_mail}}<a href="#" target="_blank" class="Ldt-Social-Mail Ldt-TraceMe" title="{{l10n.share_mail}}"></a>{{/show_mail}}</span>'; |
|
27 |
|
28 IriSP.Widgets.Social.prototype.messages = { |
|
29 "fr": { |
|
30 share_on: "Partager sur", |
|
31 share_mail: "Envoyer par courriel", |
|
32 share_link: "Partager le lien hypertexte", |
|
33 copy: "Copier" |
|
34 }, |
|
35 "en" : { |
|
36 share_on: "Share on", |
|
37 share_mail: "Share by e-mail", |
|
38 share_link: "Share hypertext link", |
|
39 copy: "Copy" |
|
40 } |
|
41 }; |
|
42 |
|
43 IriSP.Widgets.Social.prototype.draw = function() { |
|
44 this.renderTemplate(); |
|
45 this.clipId = IriSP._.uniqueId("Ldt-Social-CopyBtn-"); |
|
46 this.$.find(".Ldt-Social-CopyBtn").attr("id", this.clipId); |
|
47 var _this = this; |
|
48 this.$.find(".Ldt-Social-Url").click(function() { |
|
49 _this.toggleCopy(); |
|
50 return false; |
|
51 }).on("dragstart", function(e) { |
|
52 e.originalEvent.dataTransfer.setData("text/x-iri-title",_this.text); |
|
53 e.originalEvent.dataTransfer.setData("text/x-iri-uri",_this.url); |
|
54 }); |
|
55 this.$.find(".Ldt-Social-Input").focus(function() { |
|
56 this.select(); |
|
57 }); |
|
58 this.$.find(".Ldt-Social-Ext").click(function() { |
|
59 window.open( |
|
60 IriSP.jQuery(this).attr("href"), |
|
61 "_blank", |
|
62 "height=300,width=450,left=100,top=100,toolbar=0,menubar=0,status=0,location=0"); |
|
63 return false; |
|
64 }); |
|
65 this.updateUrls(this.url, this.text); |
|
66 }; |
|
67 |
|
68 IriSP.Widgets.Social.prototype.toggleCopy = function() { |
|
69 var _pop = this.$.find(".Ldt-Social-UrlPop"); |
|
70 _pop.toggle(); |
|
71 if (_pop.is(":visible")) { |
|
72 if (typeof this.clip == "undefined") { |
|
73 this.clip = new ZeroClipboard.Client(); |
|
74 this.clip.setHandCursor( true ); |
|
75 this.clip.glue(this.clipId); |
|
76 var _this = this; |
|
77 this.clip.addEventListener( 'onMouseUp', function() { |
|
78 _pop.hide(); |
|
79 _this.clip.hide(); |
|
80 }); |
|
81 } |
|
82 this.clip.show(); |
|
83 this.clip.setText( this.url ); |
|
84 this.$.find(".Ldt-Social-Input").val(this.url).focus(); |
|
85 } else { |
|
86 this.clip.hide(); |
|
87 } |
|
88 }; |
|
89 |
|
90 IriSP.Widgets.Social.prototype.updateUrls = function(_url, _text) { |
|
91 this.url = _url; |
|
92 this.text = _text; |
|
93 this.$.find(".Ldt-Social-Fb").attr("href", "http://www.facebook.com/share.php?" + IriSP.jQuery.param({ u: _url, t: _text })); |
|
94 this.$.find(".Ldt-Social-Twitter").attr("href", "https://twitter.com/intent/tweet?" + IriSP.jQuery.param({ url: _url, text: _text })); |
|
95 this.$.find(".Ldt-Social-Gplus").attr("href", "https://plus.google.com/share?" + IriSP.jQuery.param({ url: _url, title: _text })); |
|
96 this.$.find(".Ldt-Social-Mail").attr("href", "mailto:?" + IriSP.jQuery.param({ subject: _text, body: _text + ": " + _url })); |
|
97 }; |
|