Commit a8726645b3b49037b7c19ff4405e36527b58a8be

Authored by Rodrigo Souto
2 parents 0f6fe179 b83abf7e

Merge branch 'stoa' of gitlab.com:colivre/noosfero into stoa

Showing 194 changed files with 2953 additions and 2766 deletions   Show diff stats
plugins/social_share_privacy/controllers/social_share_privacy_plugin_admin_controller.rb
1 class SocialSharePrivacyPluginAdminController < AdminController 1 class SocialSharePrivacyPluginAdminController < AdminController
2 append_view_path File.join(File.dirname(__FILE__) + '/../views') 2 append_view_path File.join(File.dirname(__FILE__) + '/../views')
3 3
  4 + protect 'edit_environment_features', :environment
  5 +
  6 + include SocialSharePrivacyPluginHelper
  7 +
4 def index 8 def index
5 - available_networks = Dir[SocialSharePrivacyPlugin.root_path + 'public/javascripts/modules/*.js'].map { |entry| entry.split('/').last.gsub(/\.js$/,'') }  
6 - @selected = environment.socialshare  
7 - @tags = available_networks - @selected 9 + @settings = Noosfero::Plugin::Settings.new(environment, SocialSharePrivacyPlugin, params[:settings])
  10 + @settings.networks ||= []
  11 +
  12 + @available_networks = social_share_privacy_networks.sort
  13 + @settings.networks &= @available_networks
  14 + @available_networks -= @settings.networks
  15 +
8 if request.post? 16 if request.post?
9 - networks = params[:networks].map{ |network| network.strip } if params[:networks]  
10 - environment.socialshare = networks  
11 - if environment.save  
12 - session[:notice] = _('Saved the selected social buttons')  
13 - redirect_to :controller => 'plugins', :action => 'index' 17 + begin
  18 + @settings.save!
  19 + session[:notice] = _('Option updated successfully.')
  20 + rescue Exception => exception
  21 + session[:notice] = _('Option wasn\'t updated successfully.')
14 end 22 end
  23 + redirect_to :controller => 'plugins', :action => 'index'
15 end 24 end
16 end 25 end
17 26
plugins/social_share_privacy/lib/social_share_privacy_plugin.rb
@@ -8,16 +8,23 @@ class SocialSharePrivacyPlugin &lt; Noosfero::Plugin @@ -8,16 +8,23 @@ class SocialSharePrivacyPlugin &lt; Noosfero::Plugin
8 _("A plugin that adds share buttons from other networks.") 8 _("A plugin that adds share buttons from other networks.")
9 end 9 end
10 10
  11 + def self.networks_default_setting
  12 + []
  13 + end
  14 +
11 def stylesheet? 15 def stylesheet?
12 true 16 true
13 end 17 end
14 18
15 - def social_buttons_javascript(article) 19 + def social_buttons_contents
16 proc do 20 proc do
17 - javascript_include_tag('plugins/social_share_privacy/javascripts/socialshareprivacy.js') +  
18 - javascript_include_tag(environment.socialshare.map { |service| "plugins/social_share_privacy/javascripts/modules/#{service}.js" }) +  
19 - javascript_tag("jQuery.fn.socialSharePrivacy.settings.path_prefix = '../../plugins/social_share_privacy/'; jQuery.fn.socialSharePrivacy.settings.order = #{environment.socialshare}; jQuery(document).ready(function () { jQuery('.social-buttons').socialSharePrivacy({perma_option: false, info_link_target: '_blank'});});") +  
20 - content_tag(:div, '',:class => "social-buttons") 21 + settings = Noosfero::Plugin::Settings.new(environment, SocialSharePrivacyPlugin)
  22 + locale = FastGettext.locale
  23 + javascript_include_tag('plugins/social_share_privacy/socialshareprivacy/javascripts/socialshareprivacy.js') +
  24 + javascript_include_tag(settings.get_setting(:networks).map { |service| "plugins/social_share_privacy/socialshareprivacy/javascripts/modules/#{service}.js" }) +
  25 + (locale != 'en' ? javascript_include_tag("plugins/social_share_privacy/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.#{locale}.js") : '') +
  26 + javascript_tag("jQuery.fn.socialSharePrivacy.settings.path_prefix = '../../plugins/social_share_privacy/socialshareprivacy/'; jQuery.fn.socialSharePrivacy.settings.order = #{settings.get_setting(:networks)}; jQuery(document).ready(function () { jQuery('.social-buttons').socialSharePrivacy({perma_option: false, info_link_target: '_blank'});});") +
  27 + content_tag(:div, '', :class => "social-buttons")
21 end 28 end
22 end 29 end
23 30
plugins/social_share_privacy/lib/social_share_privacy_plugin_helper.rb 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +module SocialSharePrivacyPluginHelper
  2 +
  3 + def social_share_privacy_networks
  4 + Dir[SocialSharePrivacyPlugin.root_path + 'public/socialshareprivacy/javascripts/modules/*.js'].map { |entry| entry.split('/').last.gsub(/\.js$/,'') }
  5 + end
  6 +
  7 +end
plugins/social_share_privacy/public/images/box_fbshare.png

4.57 KB

plugins/social_share_privacy/public/images/box_mail.png

2.26 KB

plugins/social_share_privacy/public/images/box_tumblr.png

2.42 KB

plugins/social_share_privacy/public/images/de/dummy_box_facebook.png

1.01 KB

plugins/social_share_privacy/public/images/de/dummy_facebook.png

884 Bytes

plugins/social_share_privacy/public/images/dummy_box_buffer.png

1.53 KB

plugins/social_share_privacy/public/images/dummy_box_delicious.png

870 Bytes

plugins/social_share_privacy/public/images/dummy_box_disqus.png

984 Bytes

plugins/social_share_privacy/public/images/dummy_box_facebook.png

782 Bytes

plugins/social_share_privacy/public/images/dummy_box_flattr.png

1.09 KB

plugins/social_share_privacy/public/images/dummy_box_gplus.png

842 Bytes

plugins/social_share_privacy/public/images/dummy_box_hackernews.png

644 Bytes

plugins/social_share_privacy/public/images/dummy_box_linkedin.png

1.62 KB

plugins/social_share_privacy/public/images/dummy_box_pinterest.png

1.5 KB

plugins/social_share_privacy/public/images/dummy_box_reddit.png

964 Bytes

plugins/social_share_privacy/public/images/dummy_box_stumbleupon.png

1.05 KB

plugins/social_share_privacy/public/images/dummy_box_twitter.png

1.04 KB

plugins/social_share_privacy/public/images/dummy_box_xing.png

1.22 KB

plugins/social_share_privacy/public/images/dummy_buffer.png

1.29 KB

plugins/social_share_privacy/public/images/dummy_delicious.png

877 Bytes

plugins/social_share_privacy/public/images/dummy_disqus.png

856 Bytes

plugins/social_share_privacy/public/images/dummy_facebook.png

651 Bytes

plugins/social_share_privacy/public/images/dummy_flattr.png

825 Bytes

plugins/social_share_privacy/public/images/dummy_gplus.png

661 Bytes

plugins/social_share_privacy/public/images/dummy_gplus_alt.png

409 Bytes

plugins/social_share_privacy/public/images/dummy_hackernews.png

343 Bytes

plugins/social_share_privacy/public/images/dummy_linkedin.png

1.25 KB

plugins/social_share_privacy/public/images/dummy_pinterest.png

1.12 KB

plugins/social_share_privacy/public/images/dummy_reddit.png

1018 Bytes

plugins/social_share_privacy/public/images/dummy_stumbleupon.png

1.08 KB

plugins/social_share_privacy/public/images/dummy_twitter.png

965 Bytes

plugins/social_share_privacy/public/images/dummy_xing.png

1.05 KB

plugins/social_share_privacy/public/images/es/dummy_box_facebook.png

880 Bytes

plugins/social_share_privacy/public/images/es/dummy_facebook.png

760 Bytes

plugins/social_share_privacy/public/images/fbshare.png

1.06 KB

plugins/social_share_privacy/public/images/fr/dummy_box_facebook.png

713 Bytes

plugins/social_share_privacy/public/images/fr/dummy_facebook.png

768 Bytes

plugins/social_share_privacy/public/images/fr/dummy_twitter.png

985 Bytes

plugins/social_share_privacy/public/images/mail.png

1.13 KB

plugins/social_share_privacy/public/images/nl/dummy_box_facebook.png

713 Bytes

plugins/social_share_privacy/public/images/nl/dummy_facebook.png

518 Bytes

plugins/social_share_privacy/public/images/nl/dummy_twitter.png

740 Bytes

plugins/social_share_privacy/public/images/pt/dummy_box_facebook.png

738 Bytes

plugins/social_share_privacy/public/images/pt/dummy_box_twitter.png

960 Bytes

plugins/social_share_privacy/public/images/pt/dummy_facebook.png

540 Bytes

plugins/social_share_privacy/public/images/pt/dummy_twitter.png

801 Bytes

plugins/social_share_privacy/public/images/ru/dummy_box_facebook.png

870 Bytes

plugins/social_share_privacy/public/images/ru/dummy_facebook.png

742 Bytes

plugins/social_share_privacy/public/images/settings.png

658 Bytes

plugins/social_share_privacy/public/images/socialshareprivacy_info.png

151 Bytes

plugins/social_share_privacy/public/images/socialshareprivacy_on_off.png

1.27 KB

plugins/social_share_privacy/public/images/tumblr.png

1.71 KB

plugins/social_share_privacy/public/javascripts/autoload.js
@@ -1,4 +0,0 @@ @@ -1,4 +0,0 @@
1 -jQuery(document).ready(function ($) {  
2 - $('*[data-social-share-privacy=true]:not([data-init=true])').  
3 - socialSharePrivacy().attr('data-init','true');  
4 -});  
plugins/social_share_privacy/public/javascripts/localstorage.js
@@ -1,31 +0,0 @@ @@ -1,31 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * Copyright (c) 2012 Mathias Panzenböck  
5 - *  
6 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
7 - *  
8 - * Spread the word, link to us if you can.  
9 - */  
10 -(function ($, undefined) {  
11 - "use strict";  
12 -  
13 - $.extend($.fn.socialSharePrivacy.settings, {  
14 - // Set perma_option to true.  
15 - // Initially it is only set to true if jQuery.cookie is available.  
16 - perma_option: true,  
17 - set_perma_option: function (service_name) {  
18 - localStorage.setItem('socialSharePrivacy_'+service_name, 'perma_on');  
19 - },  
20 - del_perma_option: function (service_name) {  
21 - localStorage.removeItem('socialSharePrivacy_'+service_name);  
22 - },  
23 - // Only one of the two methods "get_perma_options" and "get_perma_option" has  
24 - // to be implemented. Though the other has to be set to null, so the default  
25 - // cookie based method is not used.  
26 - get_perma_options: null,  
27 - get_perma_option: function (service_name) {  
28 - return localStorage.getItem('socialSharePrivacy_'+service_name) === 'perma_on';  
29 - }  
30 - });  
31 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/buffer.js
@@ -1,54 +0,0 @@ @@ -1,54 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -(function ($, undefined) {  
17 - "use strict";  
18 -  
19 - function get (self, options, uri, settings, name) {  
20 - var value = options[name];  
21 - if (typeof value === "function") {  
22 - return value.call(self, options, uri, settings);  
23 - }  
24 - return String(value);  
25 - }  
26 -  
27 - $.fn.socialSharePrivacy.settings.services.buffer = {  
28 - 'status' : true,  
29 - 'dummy_line_img' : 'images/dummy_buffer.png',  
30 - 'dummy_box_img' : 'images/dummy_box_buffer.png',  
31 - 'dummy_alt' : '"Buffer"-Dummy',  
32 - 'txt_info' : 'Two clicks for more privacy: The Buffer button will be enabled once you click here. Activating the button already sends data to Buffer &ndash; see <em>i</em>.',  
33 - 'txt_off' : 'not connected to Buffer',  
34 - 'txt_on' : 'connected to Buffer',  
35 - 'perma_option' : true,  
36 - 'display_name' : 'Buffer',  
37 - 'referrer_track' : '',  
38 - 'via' : '',  
39 - 'text' : $.fn.socialSharePrivacy.getTitle,  
40 - 'picture' : $.fn.socialSharePrivacy.getImage,  
41 - 'button' : function (options, uri, settings) {  
42 - return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr(  
43 - 'src', 'https://widgets.bufferapp.com/button/?'+$.param({  
44 - count : settings.layout === 'line' ? 'horizontal' : 'vertical',  
45 - via : get(this, options, uri, settings, 'via'),  
46 - text : $.fn.socialSharePrivacy.abbreviateText(  
47 - get(this, options, uri, settings, 'text'), 120),  
48 - picture : get(this, options, uri, settings, 'picture'),  
49 - url : uri + options.referrer_track,  
50 - source : 'button'  
51 - }));  
52 - }  
53 - };  
54 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/delicious.js
@@ -1,85 +0,0 @@ @@ -1,85 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js  
3 - *  
4 - * Copyright (c) 2012 Mathias Panzenböck  
5 - *  
6 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
7 - *  
8 - * Code inspired by Delicious Button v1.1:  
9 - * http://code.google.com/p/delicious-button/  
10 - *  
11 - * Warning: this button uses plaintext http and can be harmful to users under opressive regimes  
12 - *  
13 - */  
14 -(function ($, undefined) {  
15 - "use strict";  
16 -  
17 - $.fn.socialSharePrivacy.settings.services.delicious = {  
18 - 'status' : true,  
19 - 'dummy_line_img' : 'images/dummy_delicious.png',  
20 - 'dummy_box_img' : 'images/dummy_box_delicious.png',  
21 - 'dummy_alt' : '"Delicious"-Dummy',  
22 - 'txt_info' : 'Two clicks for more privacy: The Delicious button will be enabled once you click here. Activating the button already sends data to Delicious &ndash; see <em>i</em>.',  
23 - 'txt_off' : 'not connected to Delicious',  
24 - 'txt_on' : 'connected to Delicious',  
25 - 'perma_option' : true,  
26 - 'display_name' : 'Delicious',  
27 - 'txt_button' : 'Save',  
28 - 'referrer_track' : '',  
29 - 'title' : $.fn.socialSharePrivacy.getTitle,  
30 - 'button' : function (options, uri, settings) {  
31 - var $button = $('<div class="delicious-widget"/>');  
32 - var url = uri + options.referrer_track;  
33 -  
34 - $.ajax({  
35 - url: "http://feeds.delicious.com/v2/json/urlinfo/data",  
36 - data: {url: url},  
37 - dataType: "jsonp",  
38 - success: function (counts) {  
39 - var hash, total_posts, title, txt_button;  
40 - for (var i = 0; i < counts.length; ++ i) {  
41 - var count = counts[i];  
42 - if (count.url === url) {  
43 - total_posts = parseInt(count.total_posts, 10);  
44 - hash = count.hash;  
45 - title = count.title;  
46 - break;  
47 - }  
48 - }  
49 - if (total_posts) txt_button = $.fn.socialSharePrivacy.formatNumber(total_posts);  
50 - else txt_button = options.txt_button;  
51 - var save_url = "http://delicious.com/save?"+$.param({  
52 - v: "5",  
53 - url: url,  
54 - title: (typeof options.title === "function" ?  
55 - options.title.call(this, options, uri, settings) :  
56 - String(options.title)) || title  
57 - });  
58 -  
59 - $button.html('<a target="delicious" class="icon"><div class="delicious1"></div><div class="delicious2"></div><div class="delicious3"></div></a><a class="count" target="delicious"><i></i><b></b></a>');  
60 - $button.find('i').text(options.txt_button);  
61 - $button.find('b').text(txt_button);  
62 - $button.find('a.icon').attr("href", hash ? "http://delicious.com/url/" + hash : save_url);  
63 - var $count = $button.find('a.count').attr("href", save_url).click(function (event) {  
64 - window.open(save_url + "&noui&jump=close", "delicious", "toolbar=no,width=555,height=555");  
65 - event.preventDefault();  
66 - });  
67 -  
68 - if (total_posts) {  
69 - $count.hover(function () {  
70 - var $self = $(this);  
71 - $self.find("b").stop(1, 1).css("display", "none");  
72 - $self.find("i").fadeIn();  
73 - }, function () {  
74 - var $self = $(this);  
75 - $self.find("i").stop(1, 1).css("display", "none");  
76 - $self.find("b").fadeIn();  
77 - });  
78 - }  
79 - }  
80 - });  
81 -  
82 - return $button;  
83 - }  
84 - };  
85 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/disqus.js
@@ -1,77 +0,0 @@ @@ -1,77 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js  
3 - *  
4 - * Copyright (c) 2012 Mathias Panzenböck  
5 - *  
6 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
7 - *  
8 - */  
9 -(function ($, undefined) {  
10 - "use strict";  
11 -  
12 - var DISQUSWIDGETS = {  
13 - displayCount: function (data) {  
14 - $('.social_share_privacy_area .disqus .disqus-widget:not(.init)').each(function () {  
15 - var $widget = $(this);  
16 - var uri = data.counts[0].id;  
17 - if ($widget.attr("data-uri") === uri) {  
18 - var key = $widget.attr("data-count");  
19 - var count = data.counts[0][key];  
20 - var text = data.text[key];  
21 - var scount = $.fn.socialSharePrivacy.formatNumber(count);  
22 - $widget.attr('title', count === 0 ? text.zero : count === 1 ? text.one : text.multiple.replace('{num}', scount));  
23 - $widget.find('.count a').text(scount);  
24 - $widget.addClass('init');  
25 - }  
26 - });  
27 - }  
28 - };  
29 -  
30 - $.fn.socialSharePrivacy.settings.services.disqus = {  
31 - 'status' : true,  
32 - 'dummy_line_img' : 'images/dummy_disqus.png',  
33 - 'dummy_box_img' : 'images/dummy_box_disqus.png',  
34 - 'dummy_alt' : '"Disqus"-Dummy',  
35 - 'txt_info' : 'Two clicks for more privacy: The Disqus button will be enabled once you click here. Activating the button already sends data to Disqus &ndash; see <em>i</em>.',  
36 - 'txt_off' : 'not connected to Disqus',  
37 - 'txt_on' : 'connected to Disqus',  
38 - 'perma_option' : true,  
39 - 'display_name' : 'Disqus',  
40 - 'referrer_track' : '',  
41 - 'shortname' : '',  
42 - 'count' : 'comments',  
43 - 'onclick' : null,  
44 - 'button' : function (options, uri, settings) {  
45 - var shortname = options.shortname || window.disqus_shortname || '';  
46 - var $code;  
47 - if (settings.layout === 'line') {  
48 - $code = $('<div class="disqus-widget">'+  
49 - '<a href="#disqus_thread" class="name">Disq<span class="us">us</span></a>'+  
50 - '<span class="count"><i></i><u></u><a href="#disqus_thread">&nbsp;</a></span></div>');  
51 - }  
52 - else {  
53 - $code = $('<div class="disqus-widget">'+  
54 - '<div class="count"><i></i><u></u><a href="#disqus_thread">&nbsp;</a></div>'+  
55 - '<a href="#disqus_thread" class="name">Disq<span class="us">us</span></a></div>');  
56 - }  
57 -  
58 - $code.attr({  
59 - 'data-count' : options.count,  
60 - 'data-shortname' : shortname,  
61 - 'data-uri' : uri + options.referrer_track  
62 - });  
63 -  
64 - if (options.onclick) {  
65 - $code.find('a').click(typeof options.onclick === "function" ?  
66 - options.onclick : new Function("event", options.onclick));  
67 - }  
68 -  
69 - // this breaks every other usage of the disqus count API:  
70 - window.DISQUSWIDGETS = DISQUSWIDGETS;  
71 -  
72 - $.getScript('https://'+shortname+'.disqus.com/count-data.js?2='+encodeURIComponent(uri + options.referrer_track));  
73 -  
74 - return $code;  
75 - }  
76 - };  
77 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/facebook.js
@@ -1,81 +0,0 @@ @@ -1,81 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -(function ($, undefined) {  
17 - "use strict";  
18 -  
19 - var locales = {"af":["ZA"],"ar":["AR"],"az":["AZ"],"be":["BY"],"bg":["BG"],"bn":["IN"],"bs":["BA"],"ca":["ES"],"cs":["CZ"],"cy":["GB"],"da":["DK"],"de":["DE"],"el":["GR"],"en":["GB","PI","UD","US"],"eo":["EO"],"es":["ES","LA"],"et":["EE"],"eu":["ES"],"fa":["IR"],"fb":["LT"],"fi":["FI"],"fo":["FO"],"fr":["CA","FR"],"fy":["NL"],"ga":["IE"],"gl":["ES"],"he":["IL"],"hi":["IN"],"hr":["HR"],"hu":["HU"],"hy":["AM"],"id":["ID"],"is":["IS"],"it":["IT"],"ja":["JP"],"ka":["GE"],"km":["KH"],"ko":["KR"],"ku":["TR"],"la":["VA"],"lt":["LT"],"lv":["LV"],"mk":["MK"],"ml":["IN"],"ms":["MY"],"nb":["NO"],"ne":["NP"],"nl":["NL"],"nn":["NO"],"pa":["IN"],"pl":["PL"],"ps":["AF"],"pt":["BR","PT"],"ro":["RO"],"ru":["RU"],"sk":["SK"],"sl":["SI"],"sq":["AL"],"sr":["RS"],"sv":["SE"],"sw":["KE"],"ta":["IN"],"te":["IN"],"th":["TH"],"tl":["PH"],"tr":["TR"],"uk":["UA"],"vi":["VN"],"zh":["CN","HK","TW"]};  
20 -  
21 - $.fn.socialSharePrivacy.settings.services.facebook = {  
22 - 'status' : true,  
23 - 'button_class' : 'fb_like',  
24 - 'dummy_line_img' : 'images/dummy_facebook.png',  
25 - 'dummy_box_img' : 'images/dummy_box_facebook.png',  
26 - 'dummy_alt' : 'Facebook "Like"-Dummy',  
27 - 'txt_info' : 'Two clicks for more privacy: The Facebook Like button will be enabled once you click here. Activating the button already sends data to Facebook &ndash; see <em>i</em>.',  
28 - 'txt_off' : 'not connected to Facebook',  
29 - 'txt_on' : 'connected to Facebook',  
30 - 'perma_option' : true,  
31 - 'display_name' : 'Facebook Like/Recommend',  
32 - 'referrer_track' : '',  
33 - 'action' : 'like',  
34 - 'colorscheme' : 'light',  
35 - 'font' : '',  
36 - 'button' : function (options, uri, settings) {  
37 - // ensure a locale that is supported by facebook  
38 - // otherwise facebook renders nothing  
39 - var match = /^([a-z]{2})_([A-Z]{2})$/.exec(options.language);  
40 - var locale = "en_US";  
41 -  
42 - if (match) {  
43 - if (match[1] in locales) {  
44 - var subs = locales[match[1]];  
45 - if ($.inArray(match[2], subs) !== -1) {  
46 - locale = options.language;  
47 - }  
48 - else {  
49 - locale = match[1]+"_"+subs[0];  
50 - }  
51 - }  
52 - }  
53 - else if (options.language in locales) {  
54 - locale = options.language+"_"+locales[options.language][0];  
55 - }  
56 -  
57 - var params = {  
58 - locale : locale,  
59 - href : uri + options.referrer_track,  
60 - send : 'false',  
61 - show_faces : 'false',  
62 - action : options.action,  
63 - colorscheme: options.colorscheme  
64 - };  
65 - if (options.font) params.font = options.font;  
66 -  
67 - if (settings.layout === 'line') {  
68 - params.width = '120';  
69 - params.height = '20';  
70 - params.layout = 'button_count';  
71 - }  
72 - else {  
73 - params.width = 62;  
74 - params.height = 61;  
75 - params.layout = 'box_count';  
76 - }  
77 - return $('<iframe scrolling="no" frameborder="0" allowtransparency="true"></iframe>').attr(  
78 - 'src', 'https://www.facebook.com/plugins/like.php?'+$.param(params));  
79 - }  
80 - };  
81 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/fbshare.js
@@ -1,38 +0,0 @@ @@ -1,38 +0,0 @@
1 -/*  
2 - * Facebook share module for jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * Fbshare module:  
13 - * copyright (c) 2013 zzzen.com  
14 - *  
15 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
16 - *  
17 - * Spread the word, link to us if you can.  
18 - */  
19 -(function ($, undefined) {  
20 - "use strict";  
21 -  
22 - $.fn.socialSharePrivacy.settings.services.fbshare = {  
23 - 'status' : true,  
24 - 'privacy' : 'safe',  
25 - 'button_class' : 'fbshare',  
26 - 'line_img' : 'images/fbshare.png',  
27 - 'box_img' : 'images/box_fbshare.png',  
28 - 'txt_info' : 'Share via facebook.',  
29 - 'txt_button' : 'Facebook Share',  
30 - 'display_name' : 'Facebook Share',  
31 - 'referrer_track' : '',  
32 - 'button' : function (options, uri, settings) {  
33 - return $('<a/>', {target: '_blank', href: 'https://www.facebook.com/sharer/sharer.php?'+$.param({u:uri + options.referrer_track})}).append(  
34 - $('<img>', {alt: options.txt_button,  
35 - src: options.path_prefix + (settings.layout === 'line' ? options.line_img : options.box_img)}));  
36 - }  
37 - };  
38 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/flattr.js
@@ -1,72 +0,0 @@ @@ -1,72 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * Copyright (c) 2012 Mathias Panzenböck  
5 - *  
6 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
7 - *  
8 - * Spread the word, link to us if you can.  
9 - */  
10 -  
11 -(function ($, undefined) {  
12 - "use strict";  
13 -  
14 - function get (self, options, uri, settings, name) {  
15 - var value = options[name];  
16 - if (typeof value === "function") {  
17 - return value.call(self, options, uri, settings);  
18 - }  
19 - return String(value);  
20 - }  
21 -  
22 - // using an unsupported language breaks the flattr button  
23 - var langs = {en:true,sq:true,ar:true,be:true,bg:true,ca:true,zh:true,hr:true,cs:true,da:true,nl:true,eo:true,et:true,fi:true,fr:true,es:true,de:true,el:true,iw:true,hi:true,hu:true,is:true,'in':true,ga:true,it:true,ja:true,ko:true,lv:true,lt:true,mk:true,ms:true,mt:true,no:true,nn:true,fa:true,pl:true,pt:true,ro:true,ru:true,sr:true,sk:true,sl:true,sv:true,th:true,tr:true,uk:true,vi:true};  
24 -  
25 - $.fn.socialSharePrivacy.settings.services.flattr = {  
26 - 'status' : true,  
27 - 'button_class' : 'flattr',  
28 - 'dummy_line_img' : 'images/dummy_flattr.png',  
29 - 'dummy_box_img' : 'images/dummy_box_flattr.png',  
30 - 'dummy_alt' : '"Flattr"-Dummy',  
31 - 'txt_info' : 'Two clicks for more privacy: The Flattr button will be enabled once you click here. Activating the button already sends data to Flattr &ndash; see <em>i</em>.',  
32 - 'txt_off' : 'not connected to Flattr',  
33 - 'txt_on' : 'connected to Flattr',  
34 - 'perma_option' : true,  
35 - 'display_name' : 'Flattr',  
36 - 'referrer_track' : '',  
37 - 'title' : $.fn.socialSharePrivacy.getTitle,  
38 - 'description' : $.fn.socialSharePrivacy.getDescription,  
39 - 'uid' : '',  
40 - 'category' : '',  
41 - 'tags' : '',  
42 - 'popout' : '',  
43 - 'hidden' : '',  
44 - 'button' : function (options, uri, settings) {  
45 - var attrs = {  
46 - href : uri + options.referrer_track,  
47 - title : get(this, options, uri, settings, 'title')  
48 - };  
49 - if (options.uid) attrs['data-flattr-uid'] = options.uid;  
50 - if (options.hidden) attrs['data-flattr-hidden'] = options.hidden;  
51 - if (options.popout) attrs['data-flattr-popout'] = options.popout;  
52 - if (options.category) attrs['data-flattr-category'] = options.category;  
53 - if (options.tags) attrs['data-flattr-tags'] = options.tags;  
54 - if (options.language) {  
55 - var lang = String(options.language).replace('-','_');  
56 - var baselang = lang.split('_')[0];  
57 - if (langs[baselang] === true) {  
58 - attrs['data-flattr-language'] = attrs.lang = lang;  
59 - }  
60 - }  
61 - if (settings.layout === 'line') attrs['data-flattr-button'] = 'compact';  
62 -  
63 - var $code = $('<a class="FlattrButton">' + get(this, options, uri, settings, 'description') +  
64 - '</a><script text="text/javscript" src="'+  
65 - 'https://api.flattr.com/js/0.6/load.js?mode=auto"></script>');  
66 -  
67 - $code.filter('a').attr(attrs);  
68 -  
69 - return $code;  
70 - }  
71 - };  
72 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/gplus.js
@@ -1,44 +0,0 @@ @@ -1,44 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -(function ($, undefined) {  
17 - "use strict";  
18 -  
19 - $.fn.socialSharePrivacy.settings.services.gplus = {  
20 - 'status' : true,  
21 - 'button_class' : 'gplusone',  
22 - 'dummy_line_img' : 'images/dummy_gplus.png',  
23 - 'dummy_box_img' : 'images/dummy_box_gplus.png',  
24 - 'dummy_alt' : '"Google+1"-Dummy',  
25 - 'txt_info' : 'Two clicks for more privacy: The Google+ button will be enabled once you click here. Activating the button already sends data to Google &ndash; see <em>i</em>.',  
26 - 'txt_off' : 'not connected to Google+',  
27 - 'txt_on' : 'connected to Google+',  
28 - 'perma_option' : true,  
29 - 'display_name' : 'Google+',  
30 - 'referrer_track' : '',  
31 - 'button' : function (options, uri, settings) {  
32 - // we use the Google+ "asynchronous" code, standard code is flaky if inserted into dom after load  
33 - var $code = $('<div class="g-plusone"></div><script type="text/javascript">window.___gcfg = {lang: "' +  
34 - options.language.replace('_','-') + '"}; (function() { var po = document.createElement("script"); ' +  
35 - 'po.type = "text/javascript"; po.async = true; po.src = "https://apis.google.com/js/plusone.js"; ' +  
36 - 'var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(po, s); })(); </script>');  
37 - $code.filter('.g-plusone').attr({  
38 - 'data-href': uri + options.referrer_track,  
39 - 'data-size': settings.layout === 'line' ? 'medium' : 'tall'  
40 - });  
41 - return $code;  
42 - }  
43 - };  
44 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/hackernews.js
@@ -1,68 +0,0 @@ @@ -1,68 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js  
3 - *  
4 - * Copyright (c) 2012 Mathias Panzenböck  
5 - *  
6 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
7 - *  
8 - */  
9 -(function ($, undefined) {  
10 - "use strict";  
11 -  
12 - $.fn.socialSharePrivacy.settings.services.hackernews = {  
13 - 'status' : true,  
14 - 'dummy_line_img' : 'images/dummy_hackernews.png',  
15 - 'dummy_box_img' : 'images/dummy_box_hackernews.png',  
16 - 'dummy_alt' : '"Hacker News"-Dummy',  
17 - 'txt_info' : 'Two clicks for more privacy: The Hacker News button will be enabled once you click here. Activating the button already sends data to Hacker News &ndash; see <em>i</em>.',  
18 - 'txt_off' : 'not connected to Hacker News',  
19 - 'txt_on' : 'connected to Hacker News',  
20 - 'perma_option' : true,  
21 - 'display_name' : 'Hacker News',  
22 - 'txt_n_points' : '{points} points',  
23 - 'txt_one_point' : '1 point',  
24 - 'referrer_track' : '',  
25 - 'title' : $.fn.socialSharePrivacy.getTitle,  
26 - 'button' : function (options, uri, settings) {  
27 - var url = uri + options.referrer_track;  
28 - var title = typeof(options.title) === 'function' ?  
29 - options.title.call(this, options, uri, settings) :  
30 - String(options.title);  
31 -  
32 - var $code;  
33 - if (settings.layout === 'line') {  
34 - $code = $('<div class="hackernews-widget">'+  
35 - '<a class="name" target="_blank">Y</a>'+  
36 - '<span class="points"><i></i><u></u><a target="_blank">submit</a></span></div>');  
37 - }  
38 - else {  
39 - $code = $('<div class="hackernews-widget">'+  
40 - '<div class="points"><i></i><u></u><a target="_blank">submit</a></div>'+  
41 - '<a class="name" target="_blank">Y</a></div>');  
42 - }  
43 -  
44 - $code.find("a").attr("href", "https://news.ycombinator.com/submitlink?"+$.param({  
45 - "u": url,  
46 - "t": title  
47 - }));  
48 -  
49 - $.ajax("https://api.thriftdb.com/api.hnsearch.com/items/_search?filter[fields][url][]="+encodeURIComponent(url), {  
50 - dataType: "jsonp",  
51 - success: function (data) {  
52 - var item = data.results[0];  
53 - if (item) {  
54 - item = item.item;  
55 - var points = $.fn.socialSharePrivacy.formatNumber(item.points);  
56 - $code.find("a").attr("href", "https://news.ycombinator.com/item?id="+item.id);  
57 - $code.find(".points a").text(points).attr('title',  
58 - item.points === 1 ?  
59 - options.txt_one_point :  
60 - options.txt_n_points.replace(/{points}/g, points));  
61 - }  
62 - }  
63 - });  
64 -  
65 - return $code;  
66 - }  
67 - };  
68 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/linkedin.js
@@ -1,53 +0,0 @@ @@ -1,53 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -(function ($, undefined) {  
17 - "use strict";  
18 -  
19 - $.fn.socialSharePrivacy.settings.services.linkedin = {  
20 - 'status' : true,  
21 - 'dummy_line_img' : 'images/dummy_linkedin.png',  
22 - 'dummy_box_img' : 'images/dummy_box_linkedin.png',  
23 - 'dummy_alt' : '"LinkedIn"-Dummy',  
24 - 'txt_info' : 'Two clicks for more privacy: The Linked in button will be enabled once you click here. Activating the button already sends data to Linked in &ndash; see <em>i</em>.',  
25 - 'txt_off' : 'not connected to LinkedIn',  
26 - 'txt_on' : 'connected to LinkedIn',  
27 - 'perma_option' : true,  
28 - 'display_name' : 'LinkedIn',  
29 - 'referrer_track' : '',  
30 - 'onsuccess' : null,  
31 - 'onerror' : null,  
32 - 'showzero' : false,  
33 - 'button' : function (options, uri, settings) {  
34 - var attrs = {  
35 - 'data-counter' : settings.layout === 'line' ? 'right' : 'top',  
36 - 'data-url' : uri + options.referrer_track,  
37 - 'data-showzero': String(options.showzero)  
38 - };  
39 - if (options.onsuccess) attrs['data-onsuccess'] = options.onsuccess;  
40 - if (options.onerror) attrs['data-onerror'] = options.onerror;  
41 - var $code = $('<script type="IN/Share"></script>').attr(attrs);  
42 -  
43 - if (window.IN && window.IN.parse) {  
44 - $code = $code.add('<script type="text/javascript">IN.parse(document.body);</script>');  
45 - }  
46 - else if ($('script[src^="https://platform.linkedin.com/"]').length === 0) {  
47 - $code = $code.add('<script type="text/javascript" src="https://platform.linkedin.com/in.js"></script>');  
48 - }  
49 -  
50 - return $code;  
51 - }  
52 - };  
53 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/mail.js
@@ -1,50 +0,0 @@ @@ -1,50 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * Copyright (c) 2012 Mathias Panzenböck  
5 - *  
6 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
7 - *  
8 - * Spread the word, link to us if you can.  
9 - */  
10 -(function ($, undefined) {  
11 - "use strict";  
12 -  
13 - function get (self, options, uri, settings, name) {  
14 - var value = options[name];  
15 - if (typeof value === "function") {  
16 - value = value.call(self, options, uri, settings);  
17 - }  
18 - return String(value);  
19 - }  
20 -  
21 - var getDescription = $.fn.socialSharePrivacy.getDescription;  
22 -  
23 - function getBody (options, uri, settings) {  
24 - return getDescription.call(this, options, uri, settings) + '\n\n' + uri + options.referrer_track;  
25 - }  
26 -  
27 - $.fn.socialSharePrivacy.settings.services.mail = {  
28 - 'status' : true,  
29 - 'privacy' : 'safe',  
30 - 'button_class' : 'mail',  
31 - 'line_img' : 'images/mail.png',  
32 - 'box_img' : 'images/box_mail.png',  
33 - 'txt_info' : 'Send this via email to a friend.',  
34 - 'txt_button' : 'Send Email',  
35 - 'display_name' : 'Mail',  
36 - 'referrer_track' : '',  
37 - 'subject' : $.fn.socialSharePrivacy.getTitle,  
38 - 'body' : getBody,  
39 - 'button' : function (options, uri, settings) {  
40 - return $('<a/>').attr(  
41 - 'href', 'mailto:?'+$.param({  
42 - subject : get(this, options, uri, settings, 'subject'),  
43 - body : get(this, options, uri, settings, 'body')  
44 - }).replace(/\+/g,'%20')).append($('<img>', {  
45 - alt: options.txt_button,  
46 - src: options.path_prefix + (settings.layout === 'line' ? options.line_img : options.box_img)  
47 - }));  
48 - }  
49 - };  
50 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/pinterest.js
@@ -1,83 +0,0 @@ @@ -1,83 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -  
17 -(function ($, undefined) {  
18 - "use strict";  
19 -  
20 - function get (self, options, uri, settings, name) {  
21 - var value = options[name];  
22 - if (typeof value === "function") {  
23 - return value.call(self, options, uri, settings);  
24 - }  
25 - return String(value);  
26 - }  
27 -  
28 - var loadingScript = false;  
29 - function loadScript () {  
30 - // prevent already loaded buttons from being broken:  
31 - $('.social_share_privacy_area .pinterest .pinit a[data-pin-log]').attr('data-pin-do','ignore');  
32 - $.ajax({  
33 - url : 'https://assets.pinterest.com/js/pinit.js',  
34 - dataType : 'script',  
35 - cache : true  
36 - });  
37 - // because there is no callback yet I have no choice but to do this now:  
38 - loadingScript = false;  
39 - }  
40 -  
41 - $.fn.socialSharePrivacy.settings.services.pinterest = {  
42 - 'status' : true,  
43 - 'button_class' : 'pinit',  
44 - 'dummy_line_img' : 'images/dummy_pinterest.png',  
45 - 'dummy_box_img' : 'images/dummy_box_pinterest.png',  
46 - 'dummy_alt' : '"Pin it"-Dummy',  
47 - 'txt_info' : 'Two clicks for more privacy: The Pin it button will be enabled once you click here. Activating the button already sends data to Pinterest &ndash; see <em>i</em>.',  
48 - 'txt_off' : 'not connected to Pinterest',  
49 - 'txt_on' : 'connected to Pinterest',  
50 - 'perma_option' : true,  
51 - 'display_name' : 'Pinterest',  
52 - 'referrer_track' : '',  
53 - 'title' : $.fn.socialSharePrivacy.getTitle,  
54 - 'description' : $.fn.socialSharePrivacy.getDescription,  
55 - 'media' : $.fn.socialSharePrivacy.getImage,  
56 - 'button' : function (options, uri, settings) {  
57 - var params = {  
58 - url : uri + options.referrer_track,  
59 - media : get(this, options, uri, settings, 'media')  
60 - };  
61 - var title = get(this, options, uri, settings, 'title');  
62 - var description = get(this, options, uri, settings, 'description');  
63 - if (title) params.title = title;  
64 - if (description) params.description = description;  
65 -  
66 - var $code = $('<a data-pin-do="buttonPin"><img /></a>');  
67 -  
68 - $code.filter('a').attr({  
69 - 'data-pin-config' : settings.layout === 'line' ? 'beside' : 'above',  
70 - href : 'https://pinterest.com/pin/create/button/?'+$.param(params)  
71 - }).find('img').attr('src', 'https://assets.pinterest.com/images/pidgets/pin_it_button.png');  
72 -  
73 - // This way when the user has permanently enabled pinterest and there are several pinterest  
74 - // buttons on one webpage it will load the script only once and so the buttons will work:  
75 - if (!loadingScript) {  
76 - loadingScript = true;  
77 - setTimeout(loadScript, 10);  
78 - }  
79 -  
80 - return $code;  
81 - }  
82 - };  
83 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/reddit.js
@@ -1,72 +0,0 @@ @@ -1,72 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -  
17 -(function ($, undefined) {  
18 - "use strict";  
19 -  
20 - function get (self, options, uri, settings, name) {  
21 - var value = options[name];  
22 - if (typeof value === "function") {  
23 - return value.call(self, options, uri, settings);  
24 - }  
25 - return String(value);  
26 - }  
27 -  
28 - $.fn.socialSharePrivacy.settings.services.reddit = {  
29 - 'status' : true,  
30 - 'button_class' : 'reddit',  
31 - 'dummy_line_img' : 'images/dummy_reddit.png',  
32 - 'dummy_box_img' : 'images/dummy_box_reddit.png',  
33 - 'dummy_alt' : '"Reddit this!"-Dummy',  
34 - 'txt_info' : 'Two clicks for more privacy: The reddit this! button will be enabled once you click here. Activating the button already sends data to reddit &ndash; see <em>i</em>.',  
35 - 'txt_off' : 'not connected to reddit',  
36 - 'txt_on' : 'connected to reddit',  
37 - 'perma_option' : true,  
38 - 'display_name' : 'Reddit',  
39 - 'referrer_track' : '',  
40 - 'title' : $.fn.socialSharePrivacy.getTitle,  
41 - 'target' : '',  
42 - 'newwindow' : '1',  
43 - 'bgcolor' : 'transparent',  
44 - 'bordercolor' : '',  
45 - 'button' : function (options, uri, settings) {  
46 - var base_url, w, layout;  
47 - if (settings.layout === 'line') {  
48 - w = 120;  
49 - layout = '/button/button1.html?';  
50 - }  
51 - else {  
52 - w = 58;  
53 - layout = '/button/button2.html?';  
54 - }  
55 - base_url = 'https://redditstatic.s3.amazonaws.com';  
56 - var params = {  
57 - url : uri + options.referrer_track,  
58 - width : String(w)  
59 - };  
60 - var title = get(this, options, uri, settings, 'title');  
61 - var target = get(this, options, uri, settings, 'target');  
62 - if (title) params.title = title;  
63 - if (target) params.target = target;  
64 - if (options.bgcolor) params.bgcolor = options.bgcolor;  
65 - if (options.bordercolor) params.bordercolor = options.bordercolor;  
66 - if (options.newwindow) params.newwindow = options.newwindow;  
67 -  
68 - return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr(  
69 - 'src', base_url+layout+$.param(params));  
70 - }  
71 - };  
72 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/stumbleupon.js
@@ -1,55 +0,0 @@ @@ -1,55 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Warning: this button uses plaintext http and can be harmful to users under opressive regimes  
15 - *  
16 - */  
17 -  
18 -(function ($, undefined) {  
19 - "use strict";  
20 -  
21 - $.fn.socialSharePrivacy.settings.services.stumbleupon = {  
22 - 'status' : true,  
23 - 'button_class' : 'stumbleupon',  
24 - 'dummy_line_img' : 'images/dummy_stumbleupon.png',  
25 - 'dummy_box_img' : 'images/dummy_box_stumbleupon.png',  
26 - 'dummy_alt' : '"Stumble!"-Dummy',  
27 - 'txt_info' : 'Two clicks for more privacy: The Stumble! button will be enabled once you click here. Activating the button already sends data to StumbleUpon &ndash; see <em>i</em>.',  
28 - 'txt_off' : 'not connected to StumbleUpon',  
29 - 'txt_on' : 'connected to StumbleUpon',  
30 - 'perma_option' : true,  
31 - 'display_name' : 'Stumble Upon',  
32 - 'referrer_track' : '',  
33 - 'button' : function (options, uri, settings) {  
34 - var base_url = 'https:' === document.location.protocol ? 'https://' : 'http://';  
35 - var w, h;  
36 -  
37 - if (settings.layout === 'line') {  
38 - w = '74';  
39 - h = '18';  
40 - base_url += 'badge.stumbleupon.com/badge/embed/1/?';  
41 - }  
42 - else {  
43 - w = '50';  
44 - h = '60';  
45 - base_url += 'badge.stumbleupon.com/badge/embed/5/?';  
46 - }  
47 -  
48 - return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr({  
49 - src: base_url+$.param({url: uri + options.referrer_track}),  
50 - width: w,  
51 - height: h  
52 - });  
53 - }  
54 - };  
55 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/tumblr.js
@@ -1,113 +0,0 @@ @@ -1,113 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * Copyright (c) 2012 Mathias Panzenböck  
5 - *  
6 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
7 - *  
8 - * Spread the word, link to us if you can.  
9 - */  
10 -(function ($, undefined) {  
11 - "use strict";  
12 -  
13 - function getQuote (options, uri, settings) {  
14 - var text = $.trim($('article, p').text());  
15 -  
16 - if (text.length <= 600) {  
17 - return text;  
18 - }  
19 -  
20 - var abbrev = text.slice(0, 597);  
21 - if (/^\w+$/.test(text.slice(596,598))) {  
22 - var match = /^(.*)\s\S*$/.exec(abbrev);  
23 - if (match) {  
24 - abbrev = match[1];  
25 - }  
26 - }  
27 - return $.trim(abbrev) + "\u2026";  
28 - }  
29 -  
30 - function getClickthru (options, uri) {  
31 - return uri + options.referrer_track;  
32 - }  
33 -  
34 - function get (self, options, uri, settings, name) {  
35 - var value = options[name];  
36 - if (typeof value === "function") {  
37 - return value.call(self, options, uri, settings);  
38 - }  
39 - return String(value);  
40 - }  
41 -  
42 - function openTumblr (event) {  
43 - var winx = window.screenX || window.screenLeft;  
44 - var winy = window.screenY || window.screenTop;  
45 - var winw = window.outerWidth || window.innerWidth;  
46 - var winh = window.outerHeight || window.innerHeight;  
47 - var width = 450;  
48 - var height = 430;  
49 - var x = Math.round(winx + (winw - width) * 0.5);  
50 - var y = Math.round(winy + (winh - height) * 0.5);  
51 - window.open(this.href, 't', 'left='+x+',top='+y+',toolbar=0,resizable=0,status=0,menubar=0,width='+width+',height='+height);  
52 - event.preventDefault();  
53 - }  
54 -  
55 - $.fn.socialSharePrivacy.settings.services.tumblr = {  
56 - 'status' : true,  
57 - 'privacy' : 'safe',  
58 - 'button_class' : 'tumblr',  
59 - 'line_img' : 'images/tumblr.png',  
60 - 'box_img' : 'images/box_tumblr.png',  
61 - 'txt_info' : 'Post this on Tumblr.',  
62 - 'txt_button' : 'Share on Tubmlr',  
63 - 'display_name' : 'Tumblr',  
64 - 'referrer_track' : '',  
65 - 'type' : 'link', // possible values are 'link', 'quote', 'photo' or 'video'  
66 - // type: 'link':  
67 - 'name' : $.fn.socialSharePrivacy.getTitle,  
68 - 'description' : $.fn.socialSharePrivacy.getDescription,  
69 - // type: 'quote':  
70 - 'quote' : getQuote,  
71 - // type: 'photo':  
72 - 'photo' : $.fn.socialSharePrivacy.getImage,  
73 - 'clickthrou' : getClickthru,  
74 - // type: 'video':  
75 - 'embed' : $.fn.socialSharePrivacy.getEmbed,  
76 - // type: 'photo' or 'video':  
77 - 'caption' : $.fn.socialSharePrivacy.getDescription,  
78 - 'button' : function (options, uri, settings) {  
79 - var $code = $('<a target="_blank"/>').click(openTumblr);  
80 - $('<img>', {  
81 - alt: options.txt_button,  
82 - src: options.path_prefix + (settings.layout === 'line' ? options.line_img : options.box_img)  
83 - }).appendTo($code);  
84 - switch (options.type) {  
85 - case 'link':  
86 - return $code.attr('href', 'https://www.tumblr.com/share/link?'+$.param({  
87 - url : uri + options.referrer_track,  
88 - name : get(this, options, uri, settings, 'name'),  
89 - description : get(this, options, uri, settings, 'description')  
90 - }));  
91 -  
92 - case 'quote':  
93 - return $code.attr('href', 'https://www.tumblr.com/share/quote?'+$.param({  
94 - source : uri + options.referrer_track,  
95 - quote : get(this, options, uri, settings, 'quote')  
96 - }));  
97 -  
98 - case 'photo':  
99 - return $code.attr('href', 'https://www.tumblr.com/share/photo?'+$.param({  
100 - source : get(this, options, uri, settings, 'photo'),  
101 - caption : get(this, options, uri, settings, 'caption'),  
102 - clickthrou : get(this, options, uri, settings, 'clickthrou')  
103 - }));  
104 -  
105 - case 'video':  
106 - return $code.attr('href', 'https://www.tumblr.com/share/video?'+$.param({  
107 - embed : get(this, options, uri, settings, 'embed'),  
108 - caption : get(this, options, uri, settings, 'caption')  
109 - }));  
110 - }  
111 - }  
112 - };  
113 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/twitter.js
@@ -1,62 +0,0 @@ @@ -1,62 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -  
17 -(function ($, undefined) {  
18 - "use strict";  
19 -  
20 - $.fn.socialSharePrivacy.settings.services.twitter = {  
21 - 'status' : true,  
22 - 'button_class' : 'tweet',  
23 - 'dummy_line_img' : 'images/dummy_twitter.png',  
24 - 'dummy_box_img' : 'images/dummy_box_twitter.png',  
25 - 'dummy_alt' : '"Tweet this"-Dummy',  
26 - 'txt_info' : 'Two clicks for more privacy: The Tweet this button will be enabled once you click here. Activating the button already sends data to Twitter &ndash; see <em>i</em>.',  
27 - 'txt_off' : 'not connected to Twitter',  
28 - 'txt_on' : 'connected to Twitter',  
29 - 'perma_option' : true,  
30 - 'display_name' : 'Twitter',  
31 - 'referrer_track' : '',  
32 - 'via' : '',  
33 - 'related' : '',  
34 - 'hashtags' : '',  
35 - 'dnt' : true,  
36 - 'text' : $.fn.socialSharePrivacy.getTitle,  
37 - 'button' : function (options, uri, settings) {  
38 - var text = typeof(options.text) === 'function' ?  
39 - options.text.call(this, options, uri, settings) :  
40 - String(options.text);  
41 - // 120 is the max character count left after twitters automatic  
42 - // url shortening with t.co  
43 - text = $.fn.socialSharePrivacy.abbreviateText(text, 120);  
44 -  
45 - var params = {  
46 - url : uri + options.referrer_track,  
47 - counturl: uri,  
48 - text : text,  
49 - count : settings.layout === 'line' ? 'horizontal' : 'vertical',  
50 - lang : options.language  
51 - };  
52 - if (options.via) params.via = options.via;  
53 - if (options.related) params.related = options.related;  
54 - if (options.hashtags) params.hashtags = options.hashtags;  
55 - if (options.dnt) params.dnt = options.dnt;  
56 -  
57 - return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr(  
58 - 'src', 'https://platform.twitter.com/widgets/tweet_button.html?' +  
59 - $.param(params).replace(/\+/g,'%20'));  
60 - }  
61 - };  
62 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/modules/xing.js
@@ -1,40 +0,0 @@ @@ -1,40 +0,0 @@
1 -/*  
2 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
3 - *  
4 - * http://www.heise.de/extras/socialshareprivacy/  
5 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
6 - *  
7 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
8 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
9 - *  
10 - * Copyright (c) 2012 Mathias Panzenböck  
11 - *  
12 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
13 - *  
14 - * Spread the word, link to us if you can.  
15 - */  
16 -(function ($, undefined) {  
17 - "use strict";  
18 -  
19 - $.fn.socialSharePrivacy.settings.services.xing = {  
20 - 'status' : true,  
21 - 'dummy_line_img' : 'images/dummy_xing.png',  
22 - 'dummy_box_img' : 'images/dummy_box_xing.png',  
23 - 'dummy_alt' : '"XING"-Dummy',  
24 - 'txt_info' : 'Two clicks for more privacy: The XING button will be enabled once you click here. Activating the button already sends data to XING &ndash; see <em>i</em>.',  
25 - 'txt_off' : 'not connected to XING',  
26 - 'txt_on' : 'connected to XING',  
27 - 'perma_option' : true,  
28 - 'display_name' : 'XING',  
29 - 'referrer_track' : '',  
30 - 'button' : function (options, uri, settings) {  
31 - var $code = $('<script type="XING/Share"></script>').attr({  
32 - 'data-counter' : settings.layout === 'line' ? 'right' : 'top',  
33 - 'data-url' : uri + options.referrer_track,  
34 - 'data-lang' : options.language  
35 - });  
36 -  
37 - return $code.add("<script type='text/javascript'>(function(d, s) { var x = d.createElement(s); s = d.getElementsByTagName(s)[0]; x.src = 'https://www.xing-share.com/js/external/share.js'; s.parentNode.insertBefore(x, s); })(document, 'script');</script>");  
38 - }  
39 - };  
40 -})(jQuery);  
plugins/social_share_privacy/public/javascripts/settings.js
@@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
1 -/**  
2 - * @license  
3 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
4 - *  
5 - * Copyright (c) 2012-2013 Mathias Panzenböck  
6 - *  
7 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
8 - *  
9 - * Spread the word, link to us if you can.  
10 - */  
11 -  
12 -// load global settings  
13 -jQuery(document).ready(function ($) {  
14 - "use strict";  
15 -  
16 - $('script[type="application/x-social-share-privacy-settings"]').each(function () {  
17 - var settings = (new Function('return ('+(this.textContent||this.innerText||this.text)+');')).call(this);  
18 -  
19 - if (typeof settings === "object") {  
20 - $.extend(true, $.fn.socialSharePrivacy.settings, settings);  
21 - }  
22 - });  
23 -});  
plugins/social_share_privacy/public/javascripts/socialshareprivacy.js
@@ -1,803 +0,0 @@ @@ -1,803 +0,0 @@
1 -/**  
2 - * @license  
3 - * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz  
4 - *  
5 - * http://www.heise.de/extras/socialshareprivacy/  
6 - * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html  
7 - *  
8 - * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,  
9 - * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de  
10 - *  
11 - * Copyright (c) 2012-2013 Mathias Panzenböck  
12 - *  
13 - * is released under the MIT License http://www.opensource.org/licenses/mit-license.php  
14 - *  
15 - * Spread the word, link to us if you can.  
16 - */  
17 -(function ($, undefined) {  
18 - "use strict";  
19 -  
20 - /*  
21 - * helper functions  
22 - */  
23 -  
24 - /**  
25 - * Build an absolute url using a base url.  
26 - * The provided base url has to be a valid absolute url. It will not be validated!  
27 - * If no base url is given the document location is used.  
28 - * Schemes that behave other than http might not work.  
29 - * This function tries to support file:-urls, but might fail in some cases.  
30 - * email:-urls aren't supported at all (don't make sense anyway).  
31 - */  
32 - function absurl (url, base) {  
33 - if (!base) base = document.baseURI || $("html > head > base").last().attr("href") || document.location.href;  
34 - if (!url) {  
35 - return base;  
36 - }  
37 - else if (/^[a-z][-+\.a-z0-9]*:/i.test(url)) {  
38 - // The scheme actually could contain any kind of alphanumerical unicode  
39 - // character, but JavaScript regular expressions don't support unicode  
40 - // character classes. Maybe /^[^:]+:/ or even /^.*:/ would be sufficient?  
41 - return url;  
42 - }  
43 - else if (url.slice(0,2) === '//') {  
44 - return /^[^:]+:/.exec(base)[0]+url;  
45 - }  
46 -  
47 - var ch = url.charAt(0);  
48 - if (ch === '/') {  
49 - if (/^file:/i.test(base)) {  
50 - // file scheme has no hostname  
51 - return 'file://'+url;  
52 - }  
53 - else {  
54 - return /^[^:]+:\/*[^\/]+/i.exec(base)[0]+url;  
55 - }  
56 - }  
57 - else if (ch === '#') {  
58 - // assume "#" only occures at the end indicating the fragment  
59 - return base.replace(/#.*$/,'')+url;  
60 - }  
61 - else if (ch === '?') {  
62 - // assume "?" and "#" only occure at the end indicating the query  
63 - // and the fragment  
64 - return base.replace(/[\?#].*$/,'')+url;  
65 - }  
66 - else {  
67 - var path;  
68 - if (/^file:/i.test(base)) {  
69 - path = base.replace(/^file:\/{0,2}/i,'');  
70 - base = "file://";  
71 - }  
72 - else {  
73 - var match = /^([^:]+:\/*[^\/]+)(\/.*?)?(\?.*?)?(#.*)?$/.exec(base);  
74 - base = match[1];  
75 - path = match[2]||"/";  
76 - }  
77 -  
78 - path = path.split("/");  
79 - path.pop();  
80 - if (path.length === 0) {  
81 - // Ensure leading "/". Of course this is only valid on  
82 - // unix like filesystems. More magic would be needed to  
83 - // support other filesystems.  
84 - path.push("");  
85 - }  
86 - path.push(url);  
87 - return base+path.join("/");  
88 - }  
89 - }  
90 -  
91 - function formatNumber (number) {  
92 - number = Number(number);  
93 -  
94 - var prefix = "";  
95 - var suffix = "";  
96 - if (number < 0) {  
97 - prefix = "-";  
98 - number = -number;  
99 - }  
100 -  
101 - if (number === Infinity) {  
102 - return prefix + "Infinity";  
103 - }  
104 -  
105 - if (number > 9999) {  
106 - number = number / 1000;  
107 - suffix = "K";  
108 - }  
109 -  
110 - number = Math.round(number);  
111 - if (number === 0) {  
112 - return "0";  
113 - }  
114 -  
115 - var buf = [];  
116 - while (number > 0) {  
117 - var part = String(number % 1000);  
118 -  
119 - number = Math.floor(number / 1000);  
120 - if (number) {  
121 - while (part.length < 3) {  
122 - part = "0"+part;  
123 - }  
124 - }  
125 -  
126 - buf.unshift(part);  
127 - }  
128 -  
129 - return prefix + buf.join(",") + suffix;  
130 - }  
131 -  
132 - // helper function that gets the title of the current page  
133 - function getTitle (options, uri, settings) {  
134 - var title = settings && settings.title;  
135 - if (typeof title === "function") {  
136 - title = title.call(this, options, uri, settings);  
137 - }  
138 -  
139 - if (title) {  
140 - return title;  
141 - }  
142 -  
143 - var title = $('meta[name="DC.title"]').attr('content');  
144 - var creator = $('meta[name="DC.creator"]').attr('content');  
145 -  
146 - if (title && creator) {  
147 - return title + ' - ' + creator;  
148 - } else {  
149 - return title || $('meta[property="og:title"]').attr('content') || $('title').text();  
150 - }  
151 - }  
152 -  
153 - function getDescription (options, uri, settings) {  
154 - var description = settings && settings.description;  
155 - if (typeof description === "function") {  
156 - description = description.call(this, options, uri, settings);  
157 - }  
158 -  
159 - if (description) {  
160 - return description;  
161 - }  
162 -  
163 - return abbreviateText(  
164 - $('meta[name="twitter:description"]').attr('content') ||  
165 - $('meta[itemprop="description"]').attr('content') ||  
166 - $('meta[name="description"]').attr('content') ||  
167 - $.trim($('article, p').first().text()) || $.trim($('body').text()), 3500);  
168 - }  
169 -  
170 - var IMAGE_ATTR_MAP = {  
171 - META : 'content',  
172 - IMG : 'src',  
173 - A : 'href',  
174 - IFRAME : 'src',  
175 - LINK : 'href'  
176 - };  
177 -  
178 - // find the largest image of the website  
179 - // if no image at all is found use googles favicon service, which  
180 - // defaults to a small globe (so there is always some image)  
181 - function getImage (options, uri, settings) {  
182 - var imgs, img = settings && settings.image;  
183 - if (typeof img === "function") {  
184 - img = img.call(this, options, uri, settings);  
185 - }  
186 -  
187 - if (!img) {  
188 - imgs = $('meta[property="image"], meta[property="og:image"], meta[property="og:image:url"], meta[name="twitter:image"], link[rel="image_src"], itemscope *[itemprop="image"]').first();  
189 - if (imgs.length > 0) {  
190 - img = imgs.attr(IMAGE_ATTR_MAP[imgs[0].nodeName]);  
191 - }  
192 - }  
193 -  
194 - if (img) {  
195 - return absurl(img);  
196 - }  
197 -  
198 - imgs = $('img').filter(':visible').filter(function () {  
199 - return $(this).parents('.social_share_privacy_area').length === 0;  
200 - });  
201 - if (imgs.length === 0) {  
202 - img = $('link[rel~="shortcut"][rel~="icon"]').attr('href');  
203 - if (img) return absurl(img);  
204 - return 'http://www.google.com/s2/favicons?'+$.param({domain:location.hostname});  
205 - }  
206 - imgs.sort(function (lhs, rhs) {  
207 - return rhs.offsetWidth * rhs.offsetHeight - lhs.offsetWidth * lhs.offsetHeight;  
208 - });  
209 - // browser makes src absolute:  
210 - return imgs[0].src;  
211 - }  
212 -  
213 - // abbreviate at last blank before length and add "\u2026" (horizontal ellipsis)  
214 - function abbreviateText (text, length) {  
215 - // length of UTF-8 encoded string  
216 - if (unescape(encodeURIComponent(text)).length <= length) {  
217 - return text;  
218 - }  
219 -  
220 - // "\u2026" is actually 3 bytes long in UTF-8  
221 - // TODO: if any of the last 3 characters is > 1 byte long this truncates too much  
222 - var abbrev = text.slice(0, length - 3);  
223 -  
224 - if (!/\W/.test(text.charAt(length - 3))) {  
225 - var match = /^(.*)\s\S*$/.exec(abbrev);  
226 - if (match) {  
227 - abbrev = match[1];  
228 - }  
229 - }  
230 - return abbrev + "\u2026";  
231 - }  
232 -  
233 - var HTML_CHAR_MAP = {  
234 - '<': '&lt;',  
235 - '>': '&gt;',  
236 - '&': '&amp;',  
237 - '"': '&quot;',  
238 - "'": '&#39;'  
239 - };  
240 -  
241 - function escapeHtml (s) {  
242 - return s.replace(/[<>&"']/g, function (ch) {  
243 - return HTML_CHAR_MAP[ch];  
244 - });  
245 - }  
246 -  
247 - function getEmbed (options, uri, settings) {  
248 - var embed = settings && settings.embed;  
249 - if (typeof embed === "function") {  
250 - embed = embed.call(this, options, uri, settings);  
251 - }  
252 -  
253 - if (embed) {  
254 - return embed;  
255 - }  
256 -  
257 - embed = ['<iframe scrolling="no" frameborder="0" style="border:none;" allowtransparency="true"'];  
258 - var embed_url = $('meta[name="twitter:player"]').attr('content');  
259 -  
260 - if (embed_url) {  
261 - var width = $('meta[name="twitter:player:width"]').attr('content');  
262 - var height = $('meta[name="twitter:player:height"]').attr('content');  
263 -  
264 - if (width) embed.push(' width="',escapeHtml(width),'"');  
265 - if (height) embed.push(' height="',escapeHtml(height),'"');  
266 - }  
267 - else {  
268 - embed_url = uri + options.referrer_track;  
269 - }  
270 -  
271 - embed.push(' src="',escapeHtml(embed_url),'"></iframe>');  
272 - return embed.join('');  
273 - }  
274 -  
275 - // build URI from rel="canonical" or document.location  
276 - function getURI (options) {  
277 - var uri = document.location.href;  
278 - var canonical = $("link[rel=canonical]").attr("href") || $('head meta[property="og:url"]').attr("content");  
279 -  
280 - if (canonical) {  
281 - uri = absurl(canonical);  
282 - }  
283 - else if (options && options.ignore_fragment) {  
284 - uri = uri.replace(/#.*$/,'');  
285 - }  
286 -  
287 - return uri;  
288 - }  
289 -  
290 - function buttonClickHandler (service_name) {  
291 - function onclick (event) {  
292 - var $container = $(this).parents('li.help_info').first();  
293 - var $share = $container.parents('.social_share_privacy_area').first().parent();  
294 - var options = $share.data('social-share-privacy-options');  
295 - var service = options.services[service_name];  
296 - var button_class = service.button_class || service_name;  
297 - var uri = options.uri;  
298 - if (typeof uri === 'function') {  
299 - uri = uri.call($share[0], options);  
300 - }  
301 - var $switch = $container.find('span.switch');  
302 - if ($switch.hasClass('off')) {  
303 - $container.addClass('info_off');  
304 - $switch.addClass('on').removeClass('off').html(service.txt_on||'\u00a0');  
305 - $container.find('img.privacy_dummy').replaceWith(  
306 - typeof(service.button) === "function" ?  
307 - service.button.call($container.parent().parent()[0],service,uri,options) :  
308 - service.button);  
309 - $share.trigger({type: 'socialshareprivacy:enable', serviceName: service_name, isClick: !event.isTrigger});  
310 - } else {  
311 - $container.removeClass('info_off');  
312 - $switch.addClass('off').removeClass('on').html(service.txt_off||'\u00a0');  
313 - $container.find('.dummy_btn').empty().  
314 - append($('<img/>').addClass(button_class+'_privacy_dummy privacy_dummy').  
315 - attr({  
316 - alt: service.dummy_alt,  
317 - src: service.path_prefix + (options.layout === 'line' ?  
318 - service.dummy_line_img : service.dummy_box_img)  
319 - }).click(onclick));  
320 - $share.trigger({type: 'socialshareprivacy:disable', serviceName: service_name, isClick: !event.isTrigger});  
321 - }  
322 - };  
323 - return onclick;  
324 - }  
325 -  
326 - // display info-overlays a tiny bit delayed  
327 - function enterHelpInfo () {  
328 - var $info_wrapper = $(this);  
329 - if ($info_wrapper.hasClass('info_off')) return;  
330 - var timeout_id = window.setTimeout(function () {  
331 - $info_wrapper.addClass('display');  
332 - $info_wrapper.removeData('timeout_id');  
333 - }, 500);  
334 - $info_wrapper.data('timeout_id', timeout_id);  
335 - }  
336 -  
337 - function leaveHelpInfo () {  
338 - var $info_wrapper = $(this);  
339 - var timeout_id = $info_wrapper.data('timeout_id');  
340 - if (timeout_id !== undefined) {  
341 - window.clearTimeout(timeout_id);  
342 - }  
343 - $info_wrapper.removeClass('display');  
344 - }  
345 -  
346 - function permCheckChangeHandler () {  
347 - var $input = $(this);  
348 - var $share = $input.parents('.social_share_privacy_area').first().parent();  
349 - var options = $share.data('social-share-privacy-options');  
350 - if ($input.is(':checked')) {  
351 - options.set_perma_option($input.attr('data-service'), options);  
352 - $input.parent().addClass('checked');  
353 - } else {  
354 - options.del_perma_option($input.attr('data-service'), options);  
355 - $input.parent().removeClass('checked');  
356 - }  
357 - }  
358 -  
359 - function enterSettingsInfo () {  
360 - var $settings = $(this);  
361 - var timeout_id = window.setTimeout(function () {  
362 - $settings.find('.settings_info_menu').removeClass('off').addClass('on');  
363 - $settings.removeData('timeout_id');  
364 - }, 500);  
365 - $settings.data('timeout_id', timeout_id);  
366 - }  
367 -  
368 - function leaveSettingsInfo () {  
369 - var $settings = $(this);  
370 - var timeout_id = $settings.data('timeout_id');  
371 - if (timeout_id !== undefined) {  
372 - window.clearTimeout(timeout_id);  
373 - }  
374 - $settings.find('.settings_info_menu').removeClass('on').addClass('off');  
375 - }  
376 -  
377 - function setPermaOption (service_name, options) {  
378 - $.cookie('socialSharePrivacy_'+service_name, 'perma_on', options.cookie_expires, options.cookie_path, options.cookie_domain);  
379 - }  
380 -  
381 - function delPermaOption (service_name, options) {  
382 - $.cookie('socialSharePrivacy_'+service_name, null, -1, options.cookie_path, options.cookie_domain);  
383 - }  
384 -  
385 - function getPermaOption (service_name, options) {  
386 - return !!options.get_perma_options(options)[service_name];  
387 - }  
388 -  
389 - function getPermaOptions (options) {  
390 - var cookies = $.cookie();  
391 - var permas = {};  
392 - for (var name in cookies) {  
393 - var match = /^socialSharePrivacy_(.+)$/.exec(name);  
394 - if (match) {  
395 - permas[match[1]] = cookies[name] === 'perma_on';  
396 - }  
397 - }  
398 - return permas;  
399 - }  
400 -  
401 -  
402 - // extend jquery with our plugin function  
403 - function socialSharePrivacy (options) {  
404 -  
405 - if (typeof options === "string") {  
406 - var command = options;  
407 - if (arguments.length === 1) {  
408 - switch (command) {  
409 - case "enable":  
410 - this.find('.switch.off').click();  
411 - break;  
412 -  
413 - case "disable":  
414 - this.find('.switch.on').click();  
415 - break;  
416 -  
417 - case "toggle":  
418 - this.find('.switch').click();  
419 - break;  
420 -  
421 - case "options":  
422 - return this.data('social-share-privacy-options');  
423 -  
424 - case "destroy":  
425 - this.trigger({type: 'socialshareprivacy:destroy'});  
426 - this.children('.social_share_privacy_area').remove();  
427 - this.removeData('social-share-privacy-options');  
428 - break;  
429 -  
430 - case "enabled":  
431 - var enabled = {};  
432 - this.each(function () {  
433 - var $self = $(this);  
434 - var options = $self.data('social-share-privacy-options');  
435 - for (var name in options.services) {  
436 - enabled[name] = $self.find('.'+(options.services[name].class_name||name)+' .switch').hasClass('on');  
437 - }  
438 - });  
439 - return enabled;  
440 -  
441 - case "disabled":  
442 - var disabled = {};  
443 - this.each(function () {  
444 - var $self = $(this);  
445 - var options = $self.data('social-share-privacy-options');  
446 - for (var name in options.services) {  
447 - disabled[name] = $self.find('.'+(options.services[name].class_name||name)+' .switch').hasClass('off');  
448 - }  
449 - });  
450 - return disabled;  
451 -  
452 - default:  
453 - throw new Error("socialSharePrivacy: unknown command: "+command);  
454 - }  
455 - }  
456 - else {  
457 - var arg = arguments[1];  
458 - switch (command) {  
459 - case "enable":  
460 - this.each(function () {  
461 - var $self = $(this);  
462 - var options = $self.data('social-share-privacy-options');  
463 - $self.find('.'+(options.services[arg].class_name||arg)+' .switch.off').click();  
464 - });  
465 - break;  
466 -  
467 - case "disable":  
468 - this.each(function () {  
469 - var $self = $(this);  
470 - var options = $self.data('social-share-privacy-options');  
471 - $self.find('.'+(options.services[arg].class_name||arg)+' .switch.on').click();  
472 - });  
473 - break;  
474 -  
475 - case "toggle":  
476 - this.each(function () {  
477 - var $self = $(this);  
478 - var options = $self.data('social-share-privacy-options');  
479 - $self.find('.'+(options.services[arg].class_name||arg)+' .switch').click();  
480 - });  
481 - break;  
482 -  
483 - case "option":  
484 - if (arguments.length > 2) {  
485 - var value = {};  
486 - value[arg] = arguments[2];  
487 - this.each(function () {  
488 - $.extend(true, $(this).data('social-share-privacy-options'), value);  
489 - });  
490 - }  
491 - else {  
492 - return this.data('social-share-privacy-options')[arg];  
493 - }  
494 - break;  
495 -  
496 - case "options":  
497 - $.extend(true, options, arg);  
498 - break;  
499 -  
500 - case "enabled":  
501 - var options = this.data('social-share-privacy-options');  
502 - return this.find('.'+(options.services[arg].class_name||arg)+' .switch').hasClass('on');  
503 -  
504 - case "disabled":  
505 - var options = this.data('social-share-privacy-options');  
506 - return this.find('.'+(options.services[arg].class_name||arg)+' .switch').hasClass('off');  
507 -  
508 - default:  
509 - throw new Error("socialSharePrivacy: unknown command: "+command);  
510 - }  
511 - }  
512 - return this;  
513 - }  
514 -  
515 - return this.each(function () {  
516 - // parse options passed via data-* attributes:  
517 - var data = {};  
518 - if (this.lang) data.language = this.lang;  
519 - for (var i = 0, attrs = this.attributes; i < attrs.length; ++ i) {  
520 - var attr = attrs[i];  
521 - if (/^data-./.test(attr.name)) {  
522 - var path = attr.name.slice(5).replace(/-/g,"_").split(".");  
523 - var ctx = data, j = 0;  
524 - for (; j < path.length-1; ++ j) {  
525 - var name = path[j];  
526 - if (name in ctx) {  
527 - ctx = ctx[name];  
528 - if (typeof ctx === "string") {  
529 - ctx = (new Function("$", "return ("+ctx+");")).call(this, $);  
530 - }  
531 - }  
532 - else {  
533 - ctx = ctx[name] = {};  
534 - }  
535 - }  
536 - var name = path[j];  
537 - if (typeof ctx[name] === "object") {  
538 - ctx[name] = $.extend(true, (new Function("$", "return ("+attr.value+");")).call(this, $), ctx[name]);  
539 - }  
540 - else {  
541 - ctx[name] = attr.value;  
542 - }  
543 - }  
544 - }  
545 - // parse global option values:  
546 - if ('cookie_expires' in data) data.cookie_expires = Number(data.cookie_expires);  
547 - if ('perma_option' in data) data.perma_option = $.trim(data.perma_option).toLowerCase() === "true";  
548 - if ('ignore_fragment' in data) data.ignore_fragment = $.trim(data.ignore_fragment).toLowerCase() === "true";  
549 - if ('set_perma_option' in data) {  
550 - data.set_perma_option = new Function("service_name", "options", data.set_perma_option);  
551 - }  
552 - if ('del_perma_option' in data) {  
553 - data.del_perma_option = new Function("service_name", "options", data.del_perma_option);  
554 - }  
555 - if ('get_perma_option' in data) {  
556 - data.get_perma_option = new Function("service_name", "options", data.get_perma_option);  
557 - }  
558 - if ('get_perma_options' in data) {  
559 - data.get_perma_options = new Function("options", data.get_perma_options);  
560 - }  
561 - if ('order' in data) {  
562 - data.order = $.trim(data.order);  
563 - if (data.order) {  
564 - data.order = data.order.split(/\s+/g);  
565 - }  
566 - else {  
567 - delete data.order;  
568 - }  
569 - }  
570 - if (typeof data.services === "string") {  
571 - data.services = (new Function("$", "return ("+data.services+");")).call(this, $);  
572 - }  
573 - if ('options' in data) {  
574 - data = $.extend(data, (new Function("$", "return ("+data.options+");")).call(this, $));  
575 - delete data.options;  
576 - }  
577 - if ('services' in data) {  
578 - for (var service_name in data.services) {  
579 - var service = data.services[service_name];  
580 - if (typeof service === "string") {  
581 - data.services[service_name] = (new Function("$", "return ("+service+");")).call(this, $);  
582 - }  
583 - // only values of common options are parsed:  
584 - if (typeof service.status === "string") {  
585 - service.status = $.trim(service.status).toLowerCase() === "true";  
586 - }  
587 - if (typeof service.perma_option === "string") {  
588 - service.perma_option = $.trim(service.perma_option).toLowerCase() === "true";  
589 - }  
590 - }  
591 - }  
592 - // overwrite default values with user settings  
593 - var this_options = $.extend(true,{},socialSharePrivacy.settings,options,data);  
594 - var order = this_options.order || [];  
595 -  
596 - var dummy_img = this_options.layout === 'line' ? 'dummy_line_img' : 'dummy_box_img';  
597 - var any_on = false;  
598 - var any_perm = false;  
599 - var any_unsafe = false;  
600 - var unordered = [];  
601 - for (var service_name in this_options.services) {  
602 - var service = this_options.services[service_name];  
603 - if (service.status) {  
604 - any_on = true;  
605 - if ($.inArray(service_name, order) === -1) {  
606 - unordered.push(service_name);  
607 - }  
608 - if (service.privacy !== 'safe') {  
609 - any_unsafe = true;  
610 - if (service.perma_option) {  
611 - any_perm = true;  
612 - }  
613 - }  
614 - }  
615 - if (!('language' in service)) {  
616 - service.language = this_options.language;  
617 - }  
618 - if (!('path_prefix' in service)) {  
619 - service.path_prefix = this_options.path_prefix;  
620 - }  
621 - if (!('referrer_track' in service)) {  
622 - service.referrer_track = '';  
623 - }  
624 - }  
625 - unordered.sort();  
626 - order = order.concat(unordered);  
627 -  
628 - // check if at least one service is activated  
629 - if (!any_on) {  
630 - return;  
631 - }  
632 -  
633 - // insert stylesheet into document and prepend target element  
634 - if (this_options.css_path) {  
635 - var css_path = (this_options.path_prefix||"") + this_options.css_path;  
636 - // IE fix (needed for IE < 9 - but done for all IE versions)  
637 - if (document.createStyleSheet) {  
638 - document.createStyleSheet(css_path);  
639 - } else if ($('link[href="'+css_path+'"]').length === 0) {  
640 - $('<link/>',{rel:'stylesheet',type:'text/css',href:css_path}).appendTo(document.head);  
641 - }  
642 - }  
643 -  
644 - // get stored perma options  
645 - var permas;  
646 - if (this_options.perma_option && any_perm) {  
647 - if (this_options.get_perma_options) {  
648 - permas = this_options.get_perma_options(this_options);  
649 - }  
650 - else {  
651 - permas = {};  
652 - for (var service_name in this_options.services) {  
653 - permas[service_name] = this_options.get_perma_option(service_name, this_options);  
654 - }  
655 - }  
656 - }  
657 -  
658 - // canonical uri that will be shared  
659 - var uri = this_options.uri;  
660 - if (typeof uri === 'function') {  
661 - uri = uri.call(this, this_options);  
662 - }  
663 -  
664 - var $context = $('<ul class="social_share_privacy_area"></ul>').addClass(this_options.layout);  
665 - var $share = $(this);  
666 -  
667 - $share.prepend($context).data('social-share-privacy-options',this_options);  
668 -  
669 - for (var i = 0; i < order.length; ++ i) {  
670 - var service_name = order[i];  
671 - var service = this_options.services[service_name];  
672 -  
673 - if (service && service.status) {  
674 - var class_name = service.class_name || service_name;  
675 - var button_class = service.button_class || service_name;  
676 - var $help_info;  
677 -  
678 - if (service.privacy === 'safe') {  
679 - $help_info = $('<li class="help_info"><div class="info">' +  
680 - service.txt_info + '</div><div class="dummy_btn"></div></li>').addClass(class_name);  
681 - $help_info.find('.dummy_btn').  
682 - addClass(button_class).  
683 - append(service.button.call(this,service,uri,this_options));  
684 - }  
685 - else {  
686 - $help_info = $('<li class="help_info"><div class="info">' +  
687 - service.txt_info + '</div><span class="switch off">' + (service.txt_off||'\u00a0') +  
688 - '</span><div class="dummy_btn"></div></li>').addClass(class_name);  
689 - $help_info.find('.dummy_btn').  
690 - addClass(button_class).  
691 - append($('<img/>').addClass(button_class+'_privacy_dummy privacy_dummy').  
692 - attr({  
693 - alt: service.dummy_alt,  
694 - src: service.path_prefix + service[dummy_img]  
695 - }));  
696 -  
697 - $help_info.find('.dummy_btn img.privacy_dummy, span.switch').click(  
698 - buttonClickHandler(service_name));  
699 - }  
700 - $context.append($help_info);  
701 - }  
702 - }  
703 -  
704 - //  
705 - // append Info/Settings-area  
706 - //  
707 - if (any_unsafe) {  
708 - var $settings_info = $('<li class="settings_info"><div class="settings_info_menu off perma_option_off"><a>' +  
709 - '<span class="help_info icon"><span class="info">' + this_options.txt_help + '</span></span></a></div></li>');  
710 - var $info_link = $settings_info.find('> .settings_info_menu > a').attr('href', this_options.info_link);  
711 - if (this_options.info_link_target) {  
712 - $info_link.attr("target",this_options.info_link_target);  
713 - }  
714 - $context.append($settings_info);  
715 -  
716 - $context.find('.help_info').on('mouseenter', enterHelpInfo).on('mouseleave', leaveHelpInfo);  
717 -  
718 - // menu for permanently enabling of service buttons  
719 - if (this_options.perma_option && any_perm) {  
720 -  
721 - // define container  
722 - var $container_settings_info = $context.find('li.settings_info');  
723 -  
724 - // remove class that fomrats the i-icon, because perma-options are shown  
725 - var $settings_info_menu = $container_settings_info.find('.settings_info_menu');  
726 - $settings_info_menu.removeClass('perma_option_off');  
727 -  
728 - // append perma-options-icon (.settings) and form (hidden)  
729 - $settings_info_menu.append(  
730 - '<span class="settings">' + this_options.txt_settings + '</span><form><fieldset><legend>' +  
731 - this_options.settings_perma + '</legend></fieldset></form>');  
732 -  
733 - // write services with <input> and <label> and checked state from cookie  
734 - var $fieldset = $settings_info_menu.find('form fieldset');  
735 - for (var i = 0; i < order.length; ++ i) {  
736 - var service_name = order[i];  
737 - var service = this_options.services[service_name];  
738 -  
739 - if (service && service.status && service.perma_option && service.privacy !== 'safe') {  
740 - var class_name = service.class_name || service_name;  
741 - var perma = permas[service_name];  
742 - var $field = $('<label><input type="checkbox"' + (perma ? ' checked="checked"/>' : '/>') +  
743 - service.display_name + '</label>');  
744 - $field.find('input').attr('data-service', service_name);  
745 - $fieldset.append($field);  
746 -  
747 - // enable services when cookie set and refresh cookie  
748 - if (perma) {  
749 - $context.find('li.'+class_name+' span.switch').click();  
750 - this_options.set_perma_option(service_name, this_options);  
751 - }  
752 - }  
753 - }  
754 -  
755 - // indicate clickable setings gear  
756 - $container_settings_info.find('span.settings').css('cursor', 'pointer');  
757 -  
758 - // show settings menu on hover  
759 - $container_settings_info.on('mouseenter', enterSettingsInfo).on('mouseleave', leaveSettingsInfo);  
760 -  
761 - // interaction for <input> to enable services permanently  
762 - $container_settings_info.find('fieldset input').on('change', permCheckChangeHandler);  
763 - }  
764 - }  
765 - $share.trigger({type: 'socialshareprivacy:create', options: this_options});  
766 - });  
767 - };  
768 -  
769 - // expose helper functions:  
770 - socialSharePrivacy.absurl = absurl;  
771 - socialSharePrivacy.escapeHtml = escapeHtml;  
772 - socialSharePrivacy.getTitle = getTitle;  
773 - socialSharePrivacy.getImage = getImage;  
774 - socialSharePrivacy.getEmbed = getEmbed;  
775 - socialSharePrivacy.getDescription = getDescription;  
776 - socialSharePrivacy.abbreviateText = abbreviateText;  
777 - socialSharePrivacy.formatNumber = formatNumber;  
778 -  
779 - socialSharePrivacy.settings = {  
780 - 'services' : {},  
781 - 'info_link' : 'http://panzi.github.io/SocialSharePrivacy/',  
782 - 'info_link_target' : '',  
783 - 'txt_settings' : 'Settings',  
784 - 'txt_help' : 'If you activate these fields via click, data will be sent to a third party (Facebook, Twitter, Google, ...) and stored there. For more details click <em>i</em>.',  
785 - 'settings_perma' : 'Permanently enable share buttons:',  
786 - 'layout' : 'line', // possible values: 'line' (~120x20) or 'box' (~58x62)  
787 - 'set_perma_option' : setPermaOption,  
788 - 'del_perma_option' : delPermaOption,  
789 - 'get_perma_options' : getPermaOptions,  
790 - 'get_perma_option' : getPermaOption,  
791 - 'perma_option' : !!$.cookie,  
792 - 'cookie_path' : '/',  
793 - 'cookie_domain' : document.location.hostname,  
794 - 'cookie_expires' : 365,  
795 - 'path_prefix' : '',  
796 - 'css_path' : "stylesheets/socialshareprivacy.css",  
797 - 'uri' : getURI,  
798 - 'language' : 'en',  
799 - 'ignore_fragment' : true  
800 - };  
801 -  
802 - $.fn.socialSharePrivacy = socialSharePrivacy;  
803 -}(jQuery));  
plugins/social_share_privacy/public/socialshareprivacy/images/box_fbshare.png 0 → 100644

4.57 KB

plugins/social_share_privacy/public/socialshareprivacy/images/box_mail.png 0 → 100644

2.26 KB

plugins/social_share_privacy/public/socialshareprivacy/images/box_tumblr.png 0 → 100644

2.42 KB

plugins/social_share_privacy/public/socialshareprivacy/images/de/dummy_box_facebook.png 0 → 100644

1.01 KB

plugins/social_share_privacy/public/socialshareprivacy/images/de/dummy_facebook.png 0 → 100644

884 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_buffer.png 0 → 100644

1.53 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_delicious.png 0 → 100644

870 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_disqus.png 0 → 100644

984 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_facebook.png 0 → 100644

782 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_flattr.png 0 → 100644

1.09 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_gplus.png 0 → 100644

842 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_hackernews.png 0 → 100644

644 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_linkedin.png 0 → 100644

1.62 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_pinterest.png 0 → 100644

1.5 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_reddit.png 0 → 100644

964 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_stumbleupon.png 0 → 100644

1.05 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_twitter.png 0 → 100644

1.04 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_box_xing.png 0 → 100644

1.22 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_buffer.png 0 → 100644

1.29 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_delicious.png 0 → 100644

877 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_disqus.png 0 → 100644

856 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_facebook.png 0 → 100644

651 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_flattr.png 0 → 100644

825 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_gplus.png 0 → 100644

661 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_gplus_alt.png 0 → 100644

409 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_hackernews.png 0 → 100644

343 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_linkedin.png 0 → 100644

1.25 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_pinterest.png 0 → 100644

1.12 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_reddit.png 0 → 100644

1018 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_stumbleupon.png 0 → 100644

1.08 KB

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_twitter.png 0 → 100644

965 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/dummy_xing.png 0 → 100644

1.05 KB

plugins/social_share_privacy/public/socialshareprivacy/images/es/dummy_box_facebook.png 0 → 100644

880 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/es/dummy_facebook.png 0 → 100644

760 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/fbshare.png 0 → 100644

1.06 KB

plugins/social_share_privacy/public/socialshareprivacy/images/fr/dummy_box_facebook.png 0 → 100644

713 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/fr/dummy_facebook.png 0 → 100644

768 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/fr/dummy_twitter.png 0 → 100644

985 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/mail.png 0 → 100644

1.13 KB

plugins/social_share_privacy/public/socialshareprivacy/images/nl/dummy_box_facebook.png 0 → 100644

713 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/nl/dummy_facebook.png 0 → 100644

518 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/nl/dummy_twitter.png 0 → 100644

740 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/pt/dummy_box_facebook.png 0 → 100644

738 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/pt/dummy_box_twitter.png 0 → 100644

960 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/pt/dummy_facebook.png 0 → 100644

540 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/pt/dummy_twitter.png 0 → 100644

801 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/ru/dummy_box_facebook.png 0 → 100644

870 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/ru/dummy_facebook.png 0 → 100644

742 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/settings.png 0 → 100644

658 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/socialshareprivacy_info.png 0 → 100644

151 Bytes

plugins/social_share_privacy/public/socialshareprivacy/images/socialshareprivacy_on_off.png 0 → 100644

1.27 KB

plugins/social_share_privacy/public/socialshareprivacy/images/tumblr.png 0 → 100644

1.71 KB

plugins/social_share_privacy/public/socialshareprivacy/javascripts/autoload.js 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +jQuery(document).ready(function ($) {
  2 + $('*[data-social-share-privacy=true]:not([data-init=true])').
  3 + socialSharePrivacy().attr('data-init','true');
  4 +});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.de.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Buffer senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Buffer verbunden",txt_on:"mit Buffer verbunden"},delicious:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihr Lesezeichen auf Delicious speichern. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Delicious verbunden",txt_on:"mit Delicious verbunden",txt_button:"Sichern"},disqus:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Disqus senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Disqus verbunden",txt_on:"mit Disqus verbunden"},facebook:{dummy_line_img:"images/de/dummy_facebook.png",dummy_box_img:"images/de/dummy_box_facebook.png",txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Facebook verbunden",txt_on:"mit Facebook verbunden"},fbshare:{txt_info:"Auf Facebook mit anderen Leuten teilen."},flattr:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Flattr senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Flattr verbunden",txt_on:"mit Flattr verbunden"},gplus:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Google+ verbunden",txt_on:"mit Google+ verbunden"},hackernews:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Hacker News senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Hacker News verbunden",txt_on:"mit Hacker News verbunden",txt_n_points:"{} Punkte",txt_one_point:"1 Punkt"},linkedin:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an LinkedIn senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit LinkedIn verbunden",txt_on:"mit LinkedIn verbunden"},mail:{txt_info:"Per E-Mail an einen Freund senden.",txt_button:"Sende E-Mail"},pinterest:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Pinterest senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Pinterest verbunden",txt_on:"mit Pinterest verbunden"},reddit:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Reddit senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Reddit verbunden",txt_on:"mit Reddit verbunden"},stumbleupon:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an StumbleUpon senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit StumbleUpon verbunden",txt_on:"mit StumbleUpon verbunden"},tumblr:{txt_info:"Diesen Inhalt auf Tumblr posten.",txt_button:"Auf Tumblr teilen"},twitter:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit Twitter verbunden",txt_on:"mit Twitter verbunden"},xing:{txt_info:"Zwei Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an XING senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i</em>.",txt_off:"nicht mit XING verbunden",txt_on:"mit XING verbunden"}},info_link:"http://panzi.github.io/SocialSharePrivacy/index.de.html",txt_settings:"Einstellungen",txt_help:"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google etc. in die USA &uuml;bertragen und unter Umst&auml;nden auch dort gespeichert. N&auml;heres erfahren Sie durch einen Klick auf das <em>i</em>.",settings_perma:"Dauerhaft aktivieren und Daten&uuml;ber&shy;tragung zustimmen:",language:"de"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.es.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n y podr&aacute; hacer su recomendaci&oacute;n. Una vez activado, datos ser&aacute;n enviados a Buffer. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Buffer",txt_on:"conectado a Buffer"},delicious:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n y podr&aacute; guardar sus favoritos en Delicious. Una vez activado, datos ser&aacute;n enviados a Delicious. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexion a Delicious",txt_on:"connectado a Delicious",txt_button:"Guardar"},disqus:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n. Una vez activado, datos ser&aacute;n enviados a Disqus. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Disqus",txt_on:"conectado a Disqus"},facebook:{dummy_line_img:"images/es/dummy_facebook.png",dummy_box_img:"images/es/dummy_box_facebook.png",txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de Facebook. Una vez activado, datos ser&aacute;n enviados a Facebook. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Facebook",txt_on:"conectado a Facebook"},flattr:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de Flattr. Una vez activado, datos ser&aacute;n enviados a Flattr. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Flattr",txt_on:"conectado a Flattr"},gplus:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de Google+. Una vez activado, datos ser&aacute;n enviados a Google+. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Google+",txt_on:"conectado a Google+"},hackernews:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de Hacker News. Una vez activado, datos ser&aacute;n enviados a Hacker News. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Hacker News",txt_on:"conectado a Hacker News",txt_n_points:"{} Puntos",txt_one_point:"1 Punto"},linkedin:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de LinkedIn. Una vez activado, datos ser&aacute;n enviados a LinkedIn. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a LinkedIn",txt_on:"conectado a LinkedIn"},mail:{txt_info:"Enviar por Email a un amigo",txt_button:"Enviar E-Mail"},pinterest:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de Pinterest. Una vez activado, datos ser&aacute;n enviados a Pinterest. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Pinterest",txt_on:"conectado a Pinterest"},reddit:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de Reddit. Una vez activado, datos ser&aacute;n enviados a Reddit. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Reddit",txt_on:"conectado a Reddit"},stumbleupon:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de StumbleUpon. Una vez activado, datos ser&aacute;n enviados a StumbleUpon. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a StumbleUpon",txt_on:"conectado a StumbleUpon"},tumblr:{txt_info:"Postear contenido en Tumblr.",txt_button:"Compartir en Tumblr"},twitter:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de Twitter. Una vez activado, datos ser&aacute;n enviados a Twitter. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a Twitter",txt_on:"conectado a Twitter"},xing:{txt_info:"Dos Clics para mayor privacidad: Al dar clic, se activar&aacute; el bot&oacute;n de XING. Una vez activado, datos ser&aacute;n enviados a XING. Para mayor informaci&oacute;n ver el icono <em>i</em>",txt_off:"sin conexi&oacute;n a XING",txt_on:"conectado a XING"}},info_link:"http://panzi.github.io/SocialSharePrivacy/index.html",txt_settings:"Ajustes",txt_help:"Al dar Clic en alguno de estos campos o al activar algún bot&oacute;n, informaci&oacute;n ser&aacute; enviada a Facebook, Twitter, Google+, etc y probablemente ser&aacute; guardada en alg&uacute;n servidor en estados unidos. Para mayor informaci&oacute;n (en Ingl&eacute;s) haga clic en el bot&oacute;n <em>i</em>.",settings_perma:"Activar permanentemente y aceptar el envio de datos a terceros:",language:"es"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.fr.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Buffer. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Buffer",txt_on:"connect&eacute; &agrave; Buffer"},delicious:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Delicious. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Delicious",txt_on:"connect&eacute; &agrave; Delicious",txt_button:"Enregistrer"},disqus:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Disqus. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Disqus",txt_on:"connect&eacute; &agrave; Disqus"},facebook:{dummy_line_img:"images/fr/dummy_facebook.png",dummy_box_img:"images/fr/dummy_box_facebook.png",txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Facebook. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Facebook",txt_on:"connect&eacute; &agrave; Facebook"},flattr:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Flattr. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Flattr",txt_on:"connect&eacute; &agrave; Flattr"},gplus:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Google+. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Google+",txt_on:"connect&eacute; &agrave; Google+"},linkedin:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; LinkedIn. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; LinkedIn",txt_on:"connect&eacute; &agrave; LinkedIn"},mail:{txt_info:"Envoyer par courrier &eacute;lectronique &agrave; un ami.",txt_button:"Envoyer courriel"},pinterest:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Pinterest. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Pinterest",txt_on:"connect&eacute; &agrave; Pinterest"},reddit:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Reddit. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Reddit",txt_on:"connect&eacute; &agrave; Reddit"},stumbleupon:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; StumbleUpon. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; StumbleUpon",txt_on:"connect&eacute; &agrave; StumbleUpon"},tumblr:{txt_info:"Partager ce contenu sur Tumblr.",txt_button:"Partager sur Tumblr"},twitter:{dummy_line_img:"images/fr/dummy_twitter.png",txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; Twitter. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; Twitter",txt_on:"connect&eacute; &agrave; Twitter"},xing:{txt_info:"Deux clics pour une protection de donn&eacute;es am&eacute;lior&eacute;e: Ce n'est qu'apr&egrave;s avoir cliqu&eacute; ici que le bouton sera actif et vous pourrez envoyer votre recommandation &agrave; XING. D&eacute;j&agrave; lors de l'activation des donn&eacute;es seront transmis &agrave; des tiers &ndash; voir <em>i</em>.",txt_off:"pas connect&eacute; &agrave; XING",txt_on:"connect&eacute; &agrave; XING"}},txt_settings:"Param&eacute;tres",txt_help:"D&eacute;s que vous activez ces champs en cliquant dessus, des informations seront transf&eacute;r&eacute;s &agrave; Facebook, Twitter, Google, etc aux &Eacute;tats-Unis et peuvent y &ecirc;tre stock&eacute;s. Pour plus de d&eacute;tails, cliquez sur le <em>i</em>.",settings_perma:"Activer en permanence et accepter la transmission de donn&eacute;es:",language:"fr"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.it.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Due click per più privacy: il pulsante Buffer sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Buffer &ndash; vedere <em>i</em>.",txt_off:"non connesso a Buffer",txt_on:"connesso a Buffer"},delicious:{txt_info:"Due click per più privacy: il pulsante Delicious sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Delicious &ndash; vedere <em>i</em>.",txt_off:"non connesso a Delicious",txt_on:"connesso a Delicious",txt_button:"Salva"},disqus:{txt_info:"Due click per più privacy: il pulsante Disqus sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Disqus &ndash; vedere <em>i</em>.",txt_off:"non connesso a Disqus",txt_on:"connesso a Disqus"},facebook:{txt_info:"Due click per più privacy: il pulsante Facebook sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Facebook &ndash; vedere <em>i</em>.",txt_off:"non connesso a Facebook",txt_on:"connesso a Facebook"},fbshare:{txt_info:"Condividi con Facebook"},flattr:{txt_info:"Due click per più privacy: il pulsante Flattr sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Flattr &ndash; vedere <em>i</em>.",txt_off:"non connesso a Flattr",txt_on:"connesso a Flattr"},gplus:{txt_info:"Due click per più privacy: il pulsante Google+ sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Google+ &ndash; vedere <em>i</em>.",txt_off:"non connesso a Google+",txt_on:"connesso a Google+"},hackernews:{txt_info:"Due click per più privacy: il pulsante Hacker News sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Hacker News &ndash; vedere <em>i</em>.",txt_off:"non connesso a Hacker News",txt_on:"connesso a Hacker News",txt_n_points:"{points} punti",txt_one_point:"1 punto"},linkedin:{txt_info:"Due click per più privacy: il pulsante Linkedin sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Linkedin &ndash; vedere <em>i</em>.",txt_off:"non connesso a LinkedIn",txt_on:"connesso a LinkedIn"},mail:{txt_info:"Invia per posta elettronica ad un amico.",txt_button:"Invia per posta elettronica"},pinterest:{txt_info:"Due click per più privacy: il pulsante Pinterest sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Pinterest &ndash; vedere <em>i</em>.",txt_off:"non connesso a Pinterest",txt_on:"connesso a Pinterest"},reddit:{txt_info:"Due click per più privacy: il pulsante reddit this! sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a reddit &ndash; vedere <em>i</em>.",txt_off:"non connesso a Reddit",txt_on:"connesso a Reddit"},stumbleupon:{txt_info:"Due click per più privacy: il pulsante Stumble! sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Stumbleupon &ndash; vedere <em>i</em>.",txt_off:"non connesso a StumbleUpon",txt_on:"connesso a StumbleUpon"},tumblr:{txt_info:"Condividere questo contenuto su Tumblr.",txt_button:"Condividi su Tumblr"},twitter:{txt_info:"Due click per più privacy: il pulsante Tweet sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a Twitter &ndash; vedere <em>i</em>.",txt_off:"non connesso a Twitter",txt_on:"connesso a Twitter"},xing:{txt_info:"Due click per più privacy: il pulsante XING sarà attivato facendo clic qui. L'attivazione del pulsante invia già dati a XING &ndash; vedere <em>i</em>.",txt_off:"non connesso a XING",txt_on:"connesso a XING"}},txt_settings:"Impostazioni",txt_help:"Attivando questi campi, saranno inviati dati a terze parti (Facebook, Twitter, Google, ...). Per maggiori informazioni fare clic su <em>i</em>.",settings_perma:"Attivare in modo permanente i pulsanti di condivisione:",language:"it"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.nl.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Ter verduidelijking: De Buffer knop wordt hiermee geactiveerd. Hiermee wordt data naar Buffer verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Buffer",txt_on:"verbonden met Buffer"},delicious:{txt_info:"Ter verduidelijking: De Delicious knop wordt hiermee geactiveerd. Hiermee wordt data naar Delicious verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Delicious",txt_on:"verbonden met Delicious",txt_button:"Bewaren"},disqus:{txt_info:"Ter verduidelijking: De Disqus knop wordt hiermee geactiveerd. Hiermee wordt data naar Disqus verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Disqus",txt_on:"verbonden met Disqus"},facebook:{dummy_line_img:"images/nl/dummy_facebook.png",txt_info:"Ter verduidelijking: De Facebook knop wordt hiermee geactiveerd. Hiermee wordt data naar Facebook verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Facebook",txt_on:"verbonden met Facebook"},flattr:{txt_info:"Ter verduidelijking: De Flattr knop wordt hiermee geactiveerd. Hiermee wordt data naar Flattr verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Flattr",txt_on:"verbonden met Flattr"},gplus:{txt_info:"Ter verduidelijking: De Google+ knop wordt hiermee geactiveerd. Hiermee wordt data naar Google+ verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Google+",txt_on:"verbonden met Google+"},linkedin:{txt_info:"Ter verduidelijking: De LinkedIn knop wordt hiermee geactiveerd. Hiermee wordt data naar LinkedIn verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met LinkedIn",txt_on:"verbonden met LinkedIn"},mail:{txt_info:"Mail dit naar een vriend",txt_button:"Verzend e-mail"},pinterest:{txt_info:"Ter verduidelijking: De Pinterest knop wordt hiermee geactiveerd. Hiermee wordt data naar Pinterest verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Pinterest",txt_on:"verbonden met Pinterest"},reddit:{txt_info:"Ter verduidelijking: De Reddit knop wordt hiermee geactiveerd. Hiermee wordt data naar Reddit verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Reddit",txt_on:"verbonden met Reddit"},stumbleupon:{txt_info:"Ter verduidelijking: De StumbleUpon knop wordt hiermee geactiveerd. Hiermee wordt data naar StumbleUpon verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met StumbleUpon",txt_on:"verbonden met StumbleUpon"},tumblr:{txt_info:"Diesen Inhalt auf Tumblr posten.",txt_button:"Auf Tumblr teilen"},twitter:{dummy_line_img:"images/nl/dummy_twitter.png",txt_info:"Ter verduidelijking: De Twitter knop wordt hiermee geactiveerd. Hiermee wordt data naar Twitter verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met Twitter",txt_on:"verbonden met Twitter"},xing:{txt_info:"Ter verduidelijking: De XING knop wordt hiermee geactiveerd. Hiermee wordt data naar XING verzonden – Klik voor meer informatie op <em>i</em>.",txt_off:"niet verbonden met XING",txt_on:"verbonden met XING"}},txt_settings:"Instellingen",txt_help:"Als je een optie selecteert, wordt er data naar een derde partij (Facebook, Twitter, Google, ...) verzonden en daar opgeslagen. Klik voor meer informatie op <em>i</em>.",settings_perma:"Activeer al je social media accounts:",language:"nl"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.pl.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk Buffera. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Buffera. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z Bufferem",txt_on:"połączono z Bufferem"},delicious:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk Delicious. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Delicious. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z Delicious",txt_on:"połączono z Delicious",txt_button:"Wyślij"},disqus:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk Disqus. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Disqusa. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z Disqusem",txt_on:"połączono z Disqusem"},facebook:{txt_info:'Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk "Lubię to". Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Facebooka. Kliknij w <em>i</em>, aby dowiedzieć się więcej.',txt_off:"brak połączenia z Facebookiem",txt_on:"połączono z Facebookiem"},flattr:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk Flattr. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Flattr. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z Flattr",txt_on:"połączono z Flattr"},gplus:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk Google+. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Google+. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z Google+",txt_on:"połączono z Google+"},hackernews:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk Hacker News. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Hacker News. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z Hacker News",txt_on:"połączono z Hacker News",txt_n_points:"{} punktów",txt_one_point:"1 punkt"},linkedin:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk LinkedIn. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do LinkedIn. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z LinkedIn",txt_on:"połączono z LinkedIn"},mail:{txt_info:"Wyślij tę stronę znajomemu przez e-mail.",txt_button:"Wyślij e-mail"},pinterest:{txt_info:'Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk "Pin it!". Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Pinterestu. Kliknij w <em>i</em>, aby dowiedzieć się więcej.',txt_off:"brak połączenia z Pinterestem",txt_on:"połączono z Pinterestem"},reddit:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk Reddit. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Reddita. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z Redditem",txt_on:"połączono z Redditem"},stumbleupon:{txt_info:'Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk "Stumble!". Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do StumbleUpon. Kliknij w <em>i</em>, aby dowiedzieć się więcej.',txt_off:"brak połączenia ze StumbleUpon",txt_on:"połączono ze StumbleUpon"},tumblr:{txt_info:"Opublikuj to na Tumblrze.",txt_button:"Podziel się na Tumblrze"},twitter:{txt_info:'Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk "Tweetnij". Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do Twittera. Kliknij w <em>i</em>, aby dowiedzieć się więcej.',txt_off:"brak połączenia z Twitterem",txt_on:"połączono z Twitterem"},xing:{txt_info:"Dwa kliknięcia &ndash; więcej prywatności: Kliknięcie tutaj uruchomi przycisk XING. Samo uchuchomienie przycisku powoduje wysłanie Twoich danych do XING. Kliknij w <em>i</em>, aby dowiedzieć się więcej.",txt_off:"brak połączenia z XING",txt_on:"połączono z XING"}},info_link:"http://panzi.github.io/SocialSharePrivacy/",txt_settings:"Ustawienia",txt_help:"Klinięcie w poszczególne przyciski aktywuje daną usługę. Oznacza to wysłanie Twoich danych na serwery Facebooka, Google'a, Twittera, itp., oraz ich archiwizację. Kliknij <em>i</em>, aby dowiedzieć się więcej.",settings_perma:"Aktywuj na stałe następujące przyciski:",language:"pl"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.pt.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Buffer ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Buffer &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Buffer",txt_on:"conectado ao Buffer"},delicious:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Delicious ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Delicious &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Delicious",txt_on:"conectado ao Delicious",txt_button:"Salvar"},disqus:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Disqus ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Disqus &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Disqus",txt_on:"conectado ao Disqus"},facebook:{dummy_line_img:"images/pt/dummy_facebook.png",dummy_box_img:"images/pt/dummy_box_facebook.png",txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Facebook ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Facebook &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Facebook",txt_on:"conectado ao Facebook"},flattr:{txt_info:"Dois cliques para mais privacidade: o botão do Flattr será ativado quando você clicar aqui. Ativar este botão enviará dados ao Flattr &ndash; veja <em>i</em>.",txt_off:"não conectado ao Flattr",txt_on:"conectado ao Flattr"},gplus:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Google+ ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Google &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Google+",txt_on:"conectado ao Google+"},hackernews:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Hacker News ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Hacker News &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Hacker News",txt_on:"conectado ao Hacker News",txt_n_points:"{points} pontos",txt_one_point:"1 ponto"},linkedin:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do LinkedIn ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao LinkedIn &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao LinkedIn",txt_on:"conectado ao LinkedIn"},mail:{txt_info:"Enviar a um amigo por e-mail.",txt_button:"Enviar e-mail"},pinterest:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Pinterest ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Pinterest &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Pinterest",txt_on:"conectado ao Pinterest"},reddit:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Reddit ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Reddit &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Reddit",txt_on:"conectado ao Reddit"},stumbleupon:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do StumbleUpon ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao StumbleUpon &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao StumbleUpon",txt_on:"conectado ao StumbleUpon"},tumblr:{txt_info:"Postar esta p&aacute;gina no Tumblr.",txt_button:"Compartilhar no Tumblr"},twitter:{dummy_line_img:"images/pt/dummy_twitter.png",dummy_box_img:"images/pt/dummy_box_twitter.png",txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do Twitter ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao Twitter &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao Twitter",txt_on:"conectado ao Twitter"},xing:{txt_info:"Dois cliques para mais privacidade: o bot&atilde;o do XING ser&aacute; ativado quando voc&ecirc; clicar aqui. Ativar este bot&atilde;o enviar&aacute; dados ao XING &ndash; veja <em>i</em>.",txt_off:"n&atilde;o conectado ao XING",txt_on:"conectado ao XING"}},txt_settings:"Configura&ccedil;&otilde;es",txt_help:"Se voc&ecirc; ativar algum destes campos atrav&eacute;s de um clique, dados ser&atilde;o enviados a terceiros (Facebook, Twitter, Google, etc.) e armazenados por eles. Para mais detalhes, clique em <em>i</em>.",settings_perma:"Habilitar os seguintes bot&otilde;es permanentemente:",language:"pt"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/locale/jquery.socialshareprivacy.min.ru.js 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +jQuery.extend(!0,jQuery.fn.socialSharePrivacy.settings,{services:{buffer:{txt_info:"Два клика для большей конфедициальности: Кнопка Buffer активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Buffer &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Buffer",txt_on:"Соединиться с Buffer"},delicious:{txt_info:"Два клика для большей конфедициальности: Кнопка Delicious активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Delicious &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Delicious",txt_on:"Соединиться с Delicious",txt_button:"Delicious"},disqus:{txt_info:"Два клика для большей конфедициальности: Кнопка Disqus активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Disqus &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Disqus",txt_on:"Соединиться с Disqus"},facebook:{dummy_line_img:"images/ru/dummy_facebook.png",dummy_box_img:"images/ru/dummy_box_facebook.png",txt_info:"Два клика для большей конфедициальности: Кнопка Facebook активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Facebook &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Facebook",txt_on:"Соединиться с Facebook"},flattr:{txt_info:"Два клика для большей конфедициальности: Кнопка Flattr активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Flattr &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Flattr",txt_on:"Соединиться с Flattr"},gplus:{txt_info:"Два клика для большей конфедициальности: Кнопка Google+ активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Google &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Google+",txt_on:"Соединиться с Google+"},hackernews:{txt_info:"Два клика для большей конфедициальности: Кнопка Hacker News активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Buffer &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Hacker News",txt_on:"Соединиться с Hacker News",txt_n_points:"{} Пункт",txt_one_point:"1 Пункт"},linkedin:{txt_info:"Два клика для большей конфедициальности: Кнопка LinkedIn активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах LinkedIn &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с LinkedIn",txt_on:"Соединиться с LinkedIn"},mail:{txt_info:"Отправить по электронной почте другу.",txt_button:"Отправить E-Mail"},pinterest:{txt_info:"Два клика для большей конфедициальности: Кнопка Pinterest активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Pinterest &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Pinterest",txt_on:"Соединиться с Pinterest"},reddit:{txt_info:"Два клика для большей конфедициальности: Кнопка Reddit активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Reddit &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться Reddit",txt_on:"Соединиться с Reddit"},stumbleupon:{txt_info:"Два клика для большей конфедициальности: Кнопка StumbleUpon активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах StumbleUpon &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с StumbleUpon",txt_on:"Соединиться с StumbleUpon"},tumblr:{txt_info:"Отправить контент на Tumblr.",txt_button:"Tumblr"},twitter:{txt_info:"Два клика для большей конфедициальности: Кнопка Tweet активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах Twitter &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с Twitter",txt_on:"Соединиться с Twitter"},xing:{txt_info:"Два клика для большей конфедициальности: Кнопка XING активируется если клините по ней мышкой. Активация кнопки отправляет и хранит данные на серверах XING &ndash; для подробной информации нажмите <em>i</em>.",txt_off:"Не соединяться с XING",txt_on:"Соединиться с XING"}},info_link:"http://www.m0fx64.name/socialshareprivacy",txt_settings:"Настройки",txt_help:"Если вы активируете этих поля с помощью мыши, данные будут передаваться третьей стороне (Facebook, Twitter, Google, ...) и хранится там. Для более подробной информации нажмите <em>i</em>.",settings_perma:"Включить постоянно:",language:"ru"});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/localstorage.js 0 → 100644
@@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * Copyright (c) 2012 Mathias Panzenböck
  5 + *
  6 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  7 + *
  8 + * Spread the word, link to us if you can.
  9 + */
  10 +(function ($, undefined) {
  11 + "use strict";
  12 +
  13 + $.extend($.fn.socialSharePrivacy.settings, {
  14 + // Set perma_option to true.
  15 + // Initially it is only set to true if jQuery.cookie is available.
  16 + perma_option: true,
  17 + set_perma_option: function (service_name) {
  18 + localStorage.setItem('socialSharePrivacy_'+service_name, 'perma_on');
  19 + },
  20 + del_perma_option: function (service_name) {
  21 + localStorage.removeItem('socialSharePrivacy_'+service_name);
  22 + },
  23 + // Only one of the two methods "get_perma_options" and "get_perma_option" has
  24 + // to be implemented. Though the other has to be set to null, so the default
  25 + // cookie based method is not used.
  26 + get_perma_options: null,
  27 + get_perma_option: function (service_name) {
  28 + return localStorage.getItem('socialSharePrivacy_'+service_name) === 'perma_on';
  29 + }
  30 + });
  31 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/buffer.js 0 → 100644
@@ -0,0 +1,54 @@ @@ -0,0 +1,54 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +(function ($, undefined) {
  17 + "use strict";
  18 +
  19 + function get (self, options, uri, settings, name) {
  20 + var value = options[name];
  21 + if (typeof value === "function") {
  22 + return value.call(self, options, uri, settings);
  23 + }
  24 + return String(value);
  25 + }
  26 +
  27 + $.fn.socialSharePrivacy.settings.services.buffer = {
  28 + 'status' : true,
  29 + 'dummy_line_img' : 'images/dummy_buffer.png',
  30 + 'dummy_box_img' : 'images/dummy_box_buffer.png',
  31 + 'dummy_alt' : '"Buffer"-Dummy',
  32 + 'txt_info' : 'Two clicks for more privacy: The Buffer button will be enabled once you click here. Activating the button already sends data to Buffer &ndash; see <em>i</em>.',
  33 + 'txt_off' : 'not connected to Buffer',
  34 + 'txt_on' : 'connected to Buffer',
  35 + 'perma_option' : true,
  36 + 'display_name' : 'Buffer',
  37 + 'referrer_track' : '',
  38 + 'via' : '',
  39 + 'text' : $.fn.socialSharePrivacy.getTitle,
  40 + 'picture' : $.fn.socialSharePrivacy.getImage,
  41 + 'button' : function (options, uri, settings) {
  42 + return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr(
  43 + 'src', 'https://widgets.bufferapp.com/button/?'+$.param({
  44 + count : settings.layout === 'line' ? 'horizontal' : 'vertical',
  45 + via : get(this, options, uri, settings, 'via'),
  46 + text : $.fn.socialSharePrivacy.abbreviateText(
  47 + get(this, options, uri, settings, 'text'), 120),
  48 + picture : get(this, options, uri, settings, 'picture'),
  49 + url : uri + options.referrer_track,
  50 + source : 'button'
  51 + }));
  52 + }
  53 + };
  54 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/delicious.js 0 → 100644
@@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js
  3 + *
  4 + * Copyright (c) 2012 Mathias Panzenböck
  5 + *
  6 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  7 + *
  8 + * Code inspired by Delicious Button v1.1:
  9 + * http://code.google.com/p/delicious-button/
  10 + *
  11 + * Warning: this button uses plaintext http and can be harmful to users under opressive regimes
  12 + *
  13 + */
  14 +(function ($, undefined) {
  15 + "use strict";
  16 +
  17 + $.fn.socialSharePrivacy.settings.services.delicious = {
  18 + 'status' : true,
  19 + 'dummy_line_img' : 'images/dummy_delicious.png',
  20 + 'dummy_box_img' : 'images/dummy_box_delicious.png',
  21 + 'dummy_alt' : '"Delicious"-Dummy',
  22 + 'txt_info' : 'Two clicks for more privacy: The Delicious button will be enabled once you click here. Activating the button already sends data to Delicious &ndash; see <em>i</em>.',
  23 + 'txt_off' : 'not connected to Delicious',
  24 + 'txt_on' : 'connected to Delicious',
  25 + 'perma_option' : true,
  26 + 'display_name' : 'Delicious',
  27 + 'txt_button' : 'Save',
  28 + 'referrer_track' : '',
  29 + 'title' : $.fn.socialSharePrivacy.getTitle,
  30 + 'button' : function (options, uri, settings) {
  31 + var $button = $('<div class="delicious-widget"/>');
  32 + var url = uri + options.referrer_track;
  33 +
  34 + $.ajax({
  35 + url: "http://feeds.delicious.com/v2/json/urlinfo/data",
  36 + data: {url: url},
  37 + dataType: "jsonp",
  38 + success: function (counts) {
  39 + var hash, total_posts, title, txt_button;
  40 + for (var i = 0; i < counts.length; ++ i) {
  41 + var count = counts[i];
  42 + if (count.url === url) {
  43 + total_posts = parseInt(count.total_posts, 10);
  44 + hash = count.hash;
  45 + title = count.title;
  46 + break;
  47 + }
  48 + }
  49 + if (total_posts) txt_button = $.fn.socialSharePrivacy.formatNumber(total_posts);
  50 + else txt_button = options.txt_button;
  51 + var save_url = "http://delicious.com/save?"+$.param({
  52 + v: "5",
  53 + url: url,
  54 + title: (typeof options.title === "function" ?
  55 + options.title.call(this, options, uri, settings) :
  56 + String(options.title)) || title
  57 + });
  58 +
  59 + $button.html('<a target="delicious" class="icon"><div class="delicious1"></div><div class="delicious2"></div><div class="delicious3"></div></a><a class="count" target="delicious"><i></i><b></b></a>');
  60 + $button.find('i').text(options.txt_button);
  61 + $button.find('b').text(txt_button);
  62 + $button.find('a.icon').attr("href", hash ? "http://delicious.com/url/" + hash : save_url);
  63 + var $count = $button.find('a.count').attr("href", save_url).click(function (event) {
  64 + window.open(save_url + "&noui&jump=close", "delicious", "toolbar=no,width=555,height=555");
  65 + event.preventDefault();
  66 + });
  67 +
  68 + if (total_posts) {
  69 + $count.hover(function () {
  70 + var $self = $(this);
  71 + $self.find("b").stop(1, 1).css("display", "none");
  72 + $self.find("i").fadeIn();
  73 + }, function () {
  74 + var $self = $(this);
  75 + $self.find("i").stop(1, 1).css("display", "none");
  76 + $self.find("b").fadeIn();
  77 + });
  78 + }
  79 + }
  80 + });
  81 +
  82 + return $button;
  83 + }
  84 + };
  85 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/disqus.js 0 → 100644
@@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js
  3 + *
  4 + * Copyright (c) 2012 Mathias Panzenböck
  5 + *
  6 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  7 + *
  8 + */
  9 +(function ($, undefined) {
  10 + "use strict";
  11 +
  12 + var DISQUSWIDGETS = {
  13 + displayCount: function (data) {
  14 + $('.social_share_privacy_area .disqus .disqus-widget:not(.init)').each(function () {
  15 + var $widget = $(this);
  16 + var uri = data.counts[0].id;
  17 + if ($widget.attr("data-uri") === uri) {
  18 + var key = $widget.attr("data-count");
  19 + var count = data.counts[0][key];
  20 + var text = data.text[key];
  21 + var scount = $.fn.socialSharePrivacy.formatNumber(count);
  22 + $widget.attr('title', count === 0 ? text.zero : count === 1 ? text.one : text.multiple.replace('{num}', scount));
  23 + $widget.find('.count a').text(scount);
  24 + $widget.addClass('init');
  25 + }
  26 + });
  27 + }
  28 + };
  29 +
  30 + $.fn.socialSharePrivacy.settings.services.disqus = {
  31 + 'status' : true,
  32 + 'dummy_line_img' : 'images/dummy_disqus.png',
  33 + 'dummy_box_img' : 'images/dummy_box_disqus.png',
  34 + 'dummy_alt' : '"Disqus"-Dummy',
  35 + 'txt_info' : 'Two clicks for more privacy: The Disqus button will be enabled once you click here. Activating the button already sends data to Disqus &ndash; see <em>i</em>.',
  36 + 'txt_off' : 'not connected to Disqus',
  37 + 'txt_on' : 'connected to Disqus',
  38 + 'perma_option' : true,
  39 + 'display_name' : 'Disqus',
  40 + 'referrer_track' : '',
  41 + 'shortname' : '',
  42 + 'count' : 'comments',
  43 + 'onclick' : null,
  44 + 'button' : function (options, uri, settings) {
  45 + var shortname = options.shortname || window.disqus_shortname || '';
  46 + var $code;
  47 + if (settings.layout === 'line') {
  48 + $code = $('<div class="disqus-widget">'+
  49 + '<a href="#disqus_thread" class="name">Disq<span class="us">us</span></a>'+
  50 + '<span class="count"><i></i><u></u><a href="#disqus_thread">&nbsp;</a></span></div>');
  51 + }
  52 + else {
  53 + $code = $('<div class="disqus-widget">'+
  54 + '<div class="count"><i></i><u></u><a href="#disqus_thread">&nbsp;</a></div>'+
  55 + '<a href="#disqus_thread" class="name">Disq<span class="us">us</span></a></div>');
  56 + }
  57 +
  58 + $code.attr({
  59 + 'data-count' : options.count,
  60 + 'data-shortname' : shortname,
  61 + 'data-uri' : uri + options.referrer_track
  62 + });
  63 +
  64 + if (options.onclick) {
  65 + $code.find('a').click(typeof options.onclick === "function" ?
  66 + options.onclick : new Function("event", options.onclick));
  67 + }
  68 +
  69 + // this breaks every other usage of the disqus count API:
  70 + window.DISQUSWIDGETS = DISQUSWIDGETS;
  71 +
  72 + $.getScript('https://'+shortname+'.disqus.com/count-data.js?2='+encodeURIComponent(uri + options.referrer_track));
  73 +
  74 + return $code;
  75 + }
  76 + };
  77 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/facebook.js 0 → 100644
@@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +(function ($, undefined) {
  17 + "use strict";
  18 +
  19 + var locales = {"af":["ZA"],"ar":["AR"],"az":["AZ"],"be":["BY"],"bg":["BG"],"bn":["IN"],"bs":["BA"],"ca":["ES"],"cs":["CZ"],"cy":["GB"],"da":["DK"],"de":["DE"],"el":["GR"],"en":["GB","PI","UD","US"],"eo":["EO"],"es":["ES","LA"],"et":["EE"],"eu":["ES"],"fa":["IR"],"fb":["LT"],"fi":["FI"],"fo":["FO"],"fr":["CA","FR"],"fy":["NL"],"ga":["IE"],"gl":["ES"],"he":["IL"],"hi":["IN"],"hr":["HR"],"hu":["HU"],"hy":["AM"],"id":["ID"],"is":["IS"],"it":["IT"],"ja":["JP"],"ka":["GE"],"km":["KH"],"ko":["KR"],"ku":["TR"],"la":["VA"],"lt":["LT"],"lv":["LV"],"mk":["MK"],"ml":["IN"],"ms":["MY"],"nb":["NO"],"ne":["NP"],"nl":["NL"],"nn":["NO"],"pa":["IN"],"pl":["PL"],"ps":["AF"],"pt":["BR","PT"],"ro":["RO"],"ru":["RU"],"sk":["SK"],"sl":["SI"],"sq":["AL"],"sr":["RS"],"sv":["SE"],"sw":["KE"],"ta":["IN"],"te":["IN"],"th":["TH"],"tl":["PH"],"tr":["TR"],"uk":["UA"],"vi":["VN"],"zh":["CN","HK","TW"]};
  20 +
  21 + $.fn.socialSharePrivacy.settings.services.facebook = {
  22 + 'status' : true,
  23 + 'button_class' : 'fb_like',
  24 + 'dummy_line_img' : 'images/dummy_facebook.png',
  25 + 'dummy_box_img' : 'images/dummy_box_facebook.png',
  26 + 'dummy_alt' : 'Facebook "Like"-Dummy',
  27 + 'txt_info' : 'Two clicks for more privacy: The Facebook Like button will be enabled once you click here. Activating the button already sends data to Facebook &ndash; see <em>i</em>.',
  28 + 'txt_off' : 'not connected to Facebook',
  29 + 'txt_on' : 'connected to Facebook',
  30 + 'perma_option' : true,
  31 + 'display_name' : 'Facebook Like/Recommend',
  32 + 'referrer_track' : '',
  33 + 'action' : 'like',
  34 + 'colorscheme' : 'light',
  35 + 'font' : '',
  36 + 'button' : function (options, uri, settings) {
  37 + // ensure a locale that is supported by facebook
  38 + // otherwise facebook renders nothing
  39 + var match = /^([a-z]{2})_([A-Z]{2})$/.exec(options.language);
  40 + var locale = "en_US";
  41 +
  42 + if (match) {
  43 + if (match[1] in locales) {
  44 + var subs = locales[match[1]];
  45 + if ($.inArray(match[2], subs) !== -1) {
  46 + locale = options.language;
  47 + }
  48 + else {
  49 + locale = match[1]+"_"+subs[0];
  50 + }
  51 + }
  52 + }
  53 + else if (options.language in locales) {
  54 + locale = options.language+"_"+locales[options.language][0];
  55 + }
  56 +
  57 + var params = {
  58 + locale : locale,
  59 + href : uri + options.referrer_track,
  60 + send : 'false',
  61 + show_faces : 'false',
  62 + action : options.action,
  63 + colorscheme: options.colorscheme
  64 + };
  65 + if (options.font) params.font = options.font;
  66 +
  67 + if (settings.layout === 'line') {
  68 + params.width = '120';
  69 + params.height = '20';
  70 + params.layout = 'button_count';
  71 + }
  72 + else {
  73 + params.width = 62;
  74 + params.height = 61;
  75 + params.layout = 'box_count';
  76 + }
  77 + return $('<iframe scrolling="no" frameborder="0" allowtransparency="true"></iframe>').attr(
  78 + 'src', 'https://www.facebook.com/plugins/like.php?'+$.param(params));
  79 + }
  80 + };
  81 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/fbshare.js 0 → 100644
@@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
  1 +/*
  2 + * Facebook share module for jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * Fbshare module:
  13 + * copyright (c) 2013 zzzen.com
  14 + *
  15 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  16 + *
  17 + * Spread the word, link to us if you can.
  18 + */
  19 +(function ($, undefined) {
  20 + "use strict";
  21 +
  22 + $.fn.socialSharePrivacy.settings.services.fbshare = {
  23 + 'status' : true,
  24 + 'privacy' : 'safe',
  25 + 'button_class' : 'fbshare',
  26 + 'line_img' : 'images/fbshare.png',
  27 + 'box_img' : 'images/box_fbshare.png',
  28 + 'txt_info' : 'Share via facebook.',
  29 + 'txt_button' : 'Facebook Share',
  30 + 'display_name' : 'Facebook Share',
  31 + 'referrer_track' : '',
  32 + 'button' : function (options, uri, settings) {
  33 + return $('<a/>', {target: '_blank', href: 'https://www.facebook.com/sharer/sharer.php?'+$.param({u:uri + options.referrer_track})}).append(
  34 + $('<img>', {alt: options.txt_button,
  35 + src: options.path_prefix + (settings.layout === 'line' ? options.line_img : options.box_img)}));
  36 + }
  37 + };
  38 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/flattr.js 0 → 100644
@@ -0,0 +1,72 @@ @@ -0,0 +1,72 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * Copyright (c) 2012 Mathias Panzenböck
  5 + *
  6 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  7 + *
  8 + * Spread the word, link to us if you can.
  9 + */
  10 +
  11 +(function ($, undefined) {
  12 + "use strict";
  13 +
  14 + function get (self, options, uri, settings, name) {
  15 + var value = options[name];
  16 + if (typeof value === "function") {
  17 + return value.call(self, options, uri, settings);
  18 + }
  19 + return String(value);
  20 + }
  21 +
  22 + // using an unsupported language breaks the flattr button
  23 + var langs = {en:true,sq:true,ar:true,be:true,bg:true,ca:true,zh:true,hr:true,cs:true,da:true,nl:true,eo:true,et:true,fi:true,fr:true,es:true,de:true,el:true,iw:true,hi:true,hu:true,is:true,'in':true,ga:true,it:true,ja:true,ko:true,lv:true,lt:true,mk:true,ms:true,mt:true,no:true,nn:true,fa:true,pl:true,pt:true,ro:true,ru:true,sr:true,sk:true,sl:true,sv:true,th:true,tr:true,uk:true,vi:true};
  24 +
  25 + $.fn.socialSharePrivacy.settings.services.flattr = {
  26 + 'status' : true,
  27 + 'button_class' : 'flattr',
  28 + 'dummy_line_img' : 'images/dummy_flattr.png',
  29 + 'dummy_box_img' : 'images/dummy_box_flattr.png',
  30 + 'dummy_alt' : '"Flattr"-Dummy',
  31 + 'txt_info' : 'Two clicks for more privacy: The Flattr button will be enabled once you click here. Activating the button already sends data to Flattr &ndash; see <em>i</em>.',
  32 + 'txt_off' : 'not connected to Flattr',
  33 + 'txt_on' : 'connected to Flattr',
  34 + 'perma_option' : true,
  35 + 'display_name' : 'Flattr',
  36 + 'referrer_track' : '',
  37 + 'title' : $.fn.socialSharePrivacy.getTitle,
  38 + 'description' : $.fn.socialSharePrivacy.getDescription,
  39 + 'uid' : '',
  40 + 'category' : '',
  41 + 'tags' : '',
  42 + 'popout' : '',
  43 + 'hidden' : '',
  44 + 'button' : function (options, uri, settings) {
  45 + var attrs = {
  46 + href : uri + options.referrer_track,
  47 + title : get(this, options, uri, settings, 'title')
  48 + };
  49 + if (options.uid) attrs['data-flattr-uid'] = options.uid;
  50 + if (options.hidden) attrs['data-flattr-hidden'] = options.hidden;
  51 + if (options.popout) attrs['data-flattr-popout'] = options.popout;
  52 + if (options.category) attrs['data-flattr-category'] = options.category;
  53 + if (options.tags) attrs['data-flattr-tags'] = options.tags;
  54 + if (options.language) {
  55 + var lang = String(options.language).replace('-','_');
  56 + var baselang = lang.split('_')[0];
  57 + if (langs[baselang] === true) {
  58 + attrs['data-flattr-language'] = attrs.lang = lang;
  59 + }
  60 + }
  61 + if (settings.layout === 'line') attrs['data-flattr-button'] = 'compact';
  62 +
  63 + var $code = $('<a class="FlattrButton">' + get(this, options, uri, settings, 'description') +
  64 + '</a><script text="text/javscript" src="'+
  65 + 'https://api.flattr.com/js/0.6/load.js?mode=auto"></script>');
  66 +
  67 + $code.filter('a').attr(attrs);
  68 +
  69 + return $code;
  70 + }
  71 + };
  72 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/gplus.js 0 → 100644
@@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +(function ($, undefined) {
  17 + "use strict";
  18 +
  19 + $.fn.socialSharePrivacy.settings.services.gplus = {
  20 + 'status' : true,
  21 + 'button_class' : 'gplusone',
  22 + 'dummy_line_img' : 'images/dummy_gplus.png',
  23 + 'dummy_box_img' : 'images/dummy_box_gplus.png',
  24 + 'dummy_alt' : '"Google+1"-Dummy',
  25 + 'txt_info' : 'Two clicks for more privacy: The Google+ button will be enabled once you click here. Activating the button already sends data to Google &ndash; see <em>i</em>.',
  26 + 'txt_off' : 'not connected to Google+',
  27 + 'txt_on' : 'connected to Google+',
  28 + 'perma_option' : true,
  29 + 'display_name' : 'Google+',
  30 + 'referrer_track' : '',
  31 + 'button' : function (options, uri, settings) {
  32 + // we use the Google+ "asynchronous" code, standard code is flaky if inserted into dom after load
  33 + var $code = $('<div class="g-plusone"></div><script type="text/javascript">window.___gcfg = {lang: "' +
  34 + options.language.replace('_','-') + '"}; (function() { var po = document.createElement("script"); ' +
  35 + 'po.type = "text/javascript"; po.async = true; po.src = "https://apis.google.com/js/plusone.js"; ' +
  36 + 'var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(po, s); })(); </script>');
  37 + $code.filter('.g-plusone').attr({
  38 + 'data-href': uri + options.referrer_track,
  39 + 'data-size': settings.layout === 'line' ? 'medium' : 'tall'
  40 + });
  41 + return $code;
  42 + }
  43 + };
  44 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/hackernews.js 0 → 100644
@@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js
  3 + *
  4 + * Copyright (c) 2012 Mathias Panzenböck
  5 + *
  6 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  7 + *
  8 + */
  9 +(function ($, undefined) {
  10 + "use strict";
  11 +
  12 + $.fn.socialSharePrivacy.settings.services.hackernews = {
  13 + 'status' : true,
  14 + 'dummy_line_img' : 'images/dummy_hackernews.png',
  15 + 'dummy_box_img' : 'images/dummy_box_hackernews.png',
  16 + 'dummy_alt' : '"Hacker News"-Dummy',
  17 + 'txt_info' : 'Two clicks for more privacy: The Hacker News button will be enabled once you click here. Activating the button already sends data to Hacker News &ndash; see <em>i</em>.',
  18 + 'txt_off' : 'not connected to Hacker News',
  19 + 'txt_on' : 'connected to Hacker News',
  20 + 'perma_option' : true,
  21 + 'display_name' : 'Hacker News',
  22 + 'txt_n_points' : '{points} points',
  23 + 'txt_one_point' : '1 point',
  24 + 'referrer_track' : '',
  25 + 'title' : $.fn.socialSharePrivacy.getTitle,
  26 + 'button' : function (options, uri, settings) {
  27 + var url = uri + options.referrer_track;
  28 + var title = typeof(options.title) === 'function' ?
  29 + options.title.call(this, options, uri, settings) :
  30 + String(options.title);
  31 +
  32 + var $code;
  33 + if (settings.layout === 'line') {
  34 + $code = $('<div class="hackernews-widget">'+
  35 + '<a class="name" target="_blank">Y</a>'+
  36 + '<span class="points"><i></i><u></u><a target="_blank">submit</a></span></div>');
  37 + }
  38 + else {
  39 + $code = $('<div class="hackernews-widget">'+
  40 + '<div class="points"><i></i><u></u><a target="_blank">submit</a></div>'+
  41 + '<a class="name" target="_blank">Y</a></div>');
  42 + }
  43 +
  44 + $code.find("a").attr("href", "https://news.ycombinator.com/submitlink?"+$.param({
  45 + "u": url,
  46 + "t": title
  47 + }));
  48 +
  49 + $.ajax("https://api.thriftdb.com/api.hnsearch.com/items/_search?filter[fields][url][]="+encodeURIComponent(url), {
  50 + dataType: "jsonp",
  51 + success: function (data) {
  52 + var item = data.results[0];
  53 + if (item) {
  54 + item = item.item;
  55 + var points = $.fn.socialSharePrivacy.formatNumber(item.points);
  56 + $code.find("a").attr("href", "https://news.ycombinator.com/item?id="+item.id);
  57 + $code.find(".points a").text(points).attr('title',
  58 + item.points === 1 ?
  59 + options.txt_one_point :
  60 + options.txt_n_points.replace(/{points}/g, points));
  61 + }
  62 + }
  63 + });
  64 +
  65 + return $code;
  66 + }
  67 + };
  68 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/linkedin.js 0 → 100644
@@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +(function ($, undefined) {
  17 + "use strict";
  18 +
  19 + $.fn.socialSharePrivacy.settings.services.linkedin = {
  20 + 'status' : true,
  21 + 'dummy_line_img' : 'images/dummy_linkedin.png',
  22 + 'dummy_box_img' : 'images/dummy_box_linkedin.png',
  23 + 'dummy_alt' : '"LinkedIn"-Dummy',
  24 + 'txt_info' : 'Two clicks for more privacy: The Linked in button will be enabled once you click here. Activating the button already sends data to Linked in &ndash; see <em>i</em>.',
  25 + 'txt_off' : 'not connected to LinkedIn',
  26 + 'txt_on' : 'connected to LinkedIn',
  27 + 'perma_option' : true,
  28 + 'display_name' : 'LinkedIn',
  29 + 'referrer_track' : '',
  30 + 'onsuccess' : null,
  31 + 'onerror' : null,
  32 + 'showzero' : false,
  33 + 'button' : function (options, uri, settings) {
  34 + var attrs = {
  35 + 'data-counter' : settings.layout === 'line' ? 'right' : 'top',
  36 + 'data-url' : uri + options.referrer_track,
  37 + 'data-showzero': String(options.showzero)
  38 + };
  39 + if (options.onsuccess) attrs['data-onsuccess'] = options.onsuccess;
  40 + if (options.onerror) attrs['data-onerror'] = options.onerror;
  41 + var $code = $('<script type="IN/Share"></script>').attr(attrs);
  42 +
  43 + if (window.IN && window.IN.parse) {
  44 + $code = $code.add('<script type="text/javascript">IN.parse(document.body);</script>');
  45 + }
  46 + else if ($('script[src^="https://platform.linkedin.com/"]').length === 0) {
  47 + $code = $code.add('<script type="text/javascript" src="https://platform.linkedin.com/in.js"></script>');
  48 + }
  49 +
  50 + return $code;
  51 + }
  52 + };
  53 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/mail.js 0 → 100644
@@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * Copyright (c) 2012 Mathias Panzenböck
  5 + *
  6 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  7 + *
  8 + * Spread the word, link to us if you can.
  9 + */
  10 +(function ($, undefined) {
  11 + "use strict";
  12 +
  13 + function get (self, options, uri, settings, name) {
  14 + var value = options[name];
  15 + if (typeof value === "function") {
  16 + value = value.call(self, options, uri, settings);
  17 + }
  18 + return String(value);
  19 + }
  20 +
  21 + var getDescription = $.fn.socialSharePrivacy.getDescription;
  22 +
  23 + function getBody (options, uri, settings) {
  24 + return getDescription.call(this, options, uri, settings) + '\n\n' + uri + options.referrer_track;
  25 + }
  26 +
  27 + $.fn.socialSharePrivacy.settings.services.mail = {
  28 + 'status' : true,
  29 + 'privacy' : 'safe',
  30 + 'button_class' : 'mail',
  31 + 'line_img' : 'images/mail.png',
  32 + 'box_img' : 'images/box_mail.png',
  33 + 'txt_info' : 'Send this via email to a friend.',
  34 + 'txt_button' : 'Send Email',
  35 + 'display_name' : 'Mail',
  36 + 'referrer_track' : '',
  37 + 'subject' : $.fn.socialSharePrivacy.getTitle,
  38 + 'body' : getBody,
  39 + 'button' : function (options, uri, settings) {
  40 + return $('<a/>').attr(
  41 + 'href', 'mailto:?'+$.param({
  42 + subject : get(this, options, uri, settings, 'subject'),
  43 + body : get(this, options, uri, settings, 'body')
  44 + }).replace(/\+/g,'%20')).append($('<img>', {
  45 + alt: options.txt_button,
  46 + src: options.path_prefix + (settings.layout === 'line' ? options.line_img : options.box_img)
  47 + }));
  48 + }
  49 + };
  50 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/pinterest.js 0 → 100644
@@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +
  17 +(function ($, undefined) {
  18 + "use strict";
  19 +
  20 + function get (self, options, uri, settings, name) {
  21 + var value = options[name];
  22 + if (typeof value === "function") {
  23 + return value.call(self, options, uri, settings);
  24 + }
  25 + return String(value);
  26 + }
  27 +
  28 + var loadingScript = false;
  29 + function loadScript () {
  30 + // prevent already loaded buttons from being broken:
  31 + $('.social_share_privacy_area .pinterest .pinit a[data-pin-log]').attr('data-pin-do','ignore');
  32 + $.ajax({
  33 + url : 'https://assets.pinterest.com/js/pinit.js',
  34 + dataType : 'script',
  35 + cache : true
  36 + });
  37 + // because there is no callback yet I have no choice but to do this now:
  38 + loadingScript = false;
  39 + }
  40 +
  41 + $.fn.socialSharePrivacy.settings.services.pinterest = {
  42 + 'status' : true,
  43 + 'button_class' : 'pinit',
  44 + 'dummy_line_img' : 'images/dummy_pinterest.png',
  45 + 'dummy_box_img' : 'images/dummy_box_pinterest.png',
  46 + 'dummy_alt' : '"Pin it"-Dummy',
  47 + 'txt_info' : 'Two clicks for more privacy: The Pin it button will be enabled once you click here. Activating the button already sends data to Pinterest &ndash; see <em>i</em>.',
  48 + 'txt_off' : 'not connected to Pinterest',
  49 + 'txt_on' : 'connected to Pinterest',
  50 + 'perma_option' : true,
  51 + 'display_name' : 'Pinterest',
  52 + 'referrer_track' : '',
  53 + 'title' : $.fn.socialSharePrivacy.getTitle,
  54 + 'description' : $.fn.socialSharePrivacy.getDescription,
  55 + 'media' : $.fn.socialSharePrivacy.getImage,
  56 + 'button' : function (options, uri, settings) {
  57 + var params = {
  58 + url : uri + options.referrer_track,
  59 + media : get(this, options, uri, settings, 'media')
  60 + };
  61 + var title = get(this, options, uri, settings, 'title');
  62 + var description = get(this, options, uri, settings, 'description');
  63 + if (title) params.title = title;
  64 + if (description) params.description = description;
  65 +
  66 + var $code = $('<a data-pin-do="buttonPin"><img /></a>');
  67 +
  68 + $code.filter('a').attr({
  69 + 'data-pin-config' : settings.layout === 'line' ? 'beside' : 'above',
  70 + href : 'https://pinterest.com/pin/create/button/?'+$.param(params)
  71 + }).find('img').attr('src', 'https://assets.pinterest.com/images/pidgets/pin_it_button.png');
  72 +
  73 + // This way when the user has permanently enabled pinterest and there are several pinterest
  74 + // buttons on one webpage it will load the script only once and so the buttons will work:
  75 + if (!loadingScript) {
  76 + loadingScript = true;
  77 + setTimeout(loadScript, 10);
  78 + }
  79 +
  80 + return $code;
  81 + }
  82 + };
  83 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/reddit.js 0 → 100644
@@ -0,0 +1,72 @@ @@ -0,0 +1,72 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +
  17 +(function ($, undefined) {
  18 + "use strict";
  19 +
  20 + function get (self, options, uri, settings, name) {
  21 + var value = options[name];
  22 + if (typeof value === "function") {
  23 + return value.call(self, options, uri, settings);
  24 + }
  25 + return String(value);
  26 + }
  27 +
  28 + $.fn.socialSharePrivacy.settings.services.reddit = {
  29 + 'status' : true,
  30 + 'button_class' : 'reddit',
  31 + 'dummy_line_img' : 'images/dummy_reddit.png',
  32 + 'dummy_box_img' : 'images/dummy_box_reddit.png',
  33 + 'dummy_alt' : '"Reddit this!"-Dummy',
  34 + 'txt_info' : 'Two clicks for more privacy: The reddit this! button will be enabled once you click here. Activating the button already sends data to reddit &ndash; see <em>i</em>.',
  35 + 'txt_off' : 'not connected to reddit',
  36 + 'txt_on' : 'connected to reddit',
  37 + 'perma_option' : true,
  38 + 'display_name' : 'Reddit',
  39 + 'referrer_track' : '',
  40 + 'title' : $.fn.socialSharePrivacy.getTitle,
  41 + 'target' : '',
  42 + 'newwindow' : '1',
  43 + 'bgcolor' : 'transparent',
  44 + 'bordercolor' : '',
  45 + 'button' : function (options, uri, settings) {
  46 + var base_url, w, layout;
  47 + if (settings.layout === 'line') {
  48 + w = 120;
  49 + layout = '/button/button1.html?';
  50 + }
  51 + else {
  52 + w = 58;
  53 + layout = '/button/button2.html?';
  54 + }
  55 + base_url = 'https://redditstatic.s3.amazonaws.com';
  56 + var params = {
  57 + url : uri + options.referrer_track,
  58 + width : String(w)
  59 + };
  60 + var title = get(this, options, uri, settings, 'title');
  61 + var target = get(this, options, uri, settings, 'target');
  62 + if (title) params.title = title;
  63 + if (target) params.target = target;
  64 + if (options.bgcolor) params.bgcolor = options.bgcolor;
  65 + if (options.bordercolor) params.bordercolor = options.bordercolor;
  66 + if (options.newwindow) params.newwindow = options.newwindow;
  67 +
  68 + return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr(
  69 + 'src', base_url+layout+$.param(params));
  70 + }
  71 + };
  72 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/stumbleupon.js 0 → 100644
@@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Warning: this button uses plaintext http and can be harmful to users under opressive regimes
  15 + *
  16 + */
  17 +
  18 +(function ($, undefined) {
  19 + "use strict";
  20 +
  21 + $.fn.socialSharePrivacy.settings.services.stumbleupon = {
  22 + 'status' : true,
  23 + 'button_class' : 'stumbleupon',
  24 + 'dummy_line_img' : 'images/dummy_stumbleupon.png',
  25 + 'dummy_box_img' : 'images/dummy_box_stumbleupon.png',
  26 + 'dummy_alt' : '"Stumble!"-Dummy',
  27 + 'txt_info' : 'Two clicks for more privacy: The Stumble! button will be enabled once you click here. Activating the button already sends data to StumbleUpon &ndash; see <em>i</em>.',
  28 + 'txt_off' : 'not connected to StumbleUpon',
  29 + 'txt_on' : 'connected to StumbleUpon',
  30 + 'perma_option' : true,
  31 + 'display_name' : 'Stumble Upon',
  32 + 'referrer_track' : '',
  33 + 'button' : function (options, uri, settings) {
  34 + var base_url = 'https:' === document.location.protocol ? 'https://' : 'http://';
  35 + var w, h;
  36 +
  37 + if (settings.layout === 'line') {
  38 + w = '74';
  39 + h = '18';
  40 + base_url += 'badge.stumbleupon.com/badge/embed/1/?';
  41 + }
  42 + else {
  43 + w = '50';
  44 + h = '60';
  45 + base_url += 'badge.stumbleupon.com/badge/embed/5/?';
  46 + }
  47 +
  48 + return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr({
  49 + src: base_url+$.param({url: uri + options.referrer_track}),
  50 + width: w,
  51 + height: h
  52 + });
  53 + }
  54 + };
  55 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/tumblr.js 0 → 100644
@@ -0,0 +1,113 @@ @@ -0,0 +1,113 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * Copyright (c) 2012 Mathias Panzenböck
  5 + *
  6 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  7 + *
  8 + * Spread the word, link to us if you can.
  9 + */
  10 +(function ($, undefined) {
  11 + "use strict";
  12 +
  13 + function getQuote (options, uri, settings) {
  14 + var text = $.trim($('article, p').text());
  15 +
  16 + if (text.length <= 600) {
  17 + return text;
  18 + }
  19 +
  20 + var abbrev = text.slice(0, 597);
  21 + if (/^\w+$/.test(text.slice(596,598))) {
  22 + var match = /^(.*)\s\S*$/.exec(abbrev);
  23 + if (match) {
  24 + abbrev = match[1];
  25 + }
  26 + }
  27 + return $.trim(abbrev) + "\u2026";
  28 + }
  29 +
  30 + function getClickthru (options, uri) {
  31 + return uri + options.referrer_track;
  32 + }
  33 +
  34 + function get (self, options, uri, settings, name) {
  35 + var value = options[name];
  36 + if (typeof value === "function") {
  37 + return value.call(self, options, uri, settings);
  38 + }
  39 + return String(value);
  40 + }
  41 +
  42 + function openTumblr (event) {
  43 + var winx = window.screenX || window.screenLeft;
  44 + var winy = window.screenY || window.screenTop;
  45 + var winw = window.outerWidth || window.innerWidth;
  46 + var winh = window.outerHeight || window.innerHeight;
  47 + var width = 450;
  48 + var height = 430;
  49 + var x = Math.round(winx + (winw - width) * 0.5);
  50 + var y = Math.round(winy + (winh - height) * 0.5);
  51 + window.open(this.href, 't', 'left='+x+',top='+y+',toolbar=0,resizable=0,status=0,menubar=0,width='+width+',height='+height);
  52 + event.preventDefault();
  53 + }
  54 +
  55 + $.fn.socialSharePrivacy.settings.services.tumblr = {
  56 + 'status' : true,
  57 + 'privacy' : 'safe',
  58 + 'button_class' : 'tumblr',
  59 + 'line_img' : 'images/tumblr.png',
  60 + 'box_img' : 'images/box_tumblr.png',
  61 + 'txt_info' : 'Post this on Tumblr.',
  62 + 'txt_button' : 'Share on Tubmlr',
  63 + 'display_name' : 'Tumblr',
  64 + 'referrer_track' : '',
  65 + 'type' : 'link', // possible values are 'link', 'quote', 'photo' or 'video'
  66 + // type: 'link':
  67 + 'name' : $.fn.socialSharePrivacy.getTitle,
  68 + 'description' : $.fn.socialSharePrivacy.getDescription,
  69 + // type: 'quote':
  70 + 'quote' : getQuote,
  71 + // type: 'photo':
  72 + 'photo' : $.fn.socialSharePrivacy.getImage,
  73 + 'clickthrou' : getClickthru,
  74 + // type: 'video':
  75 + 'embed' : $.fn.socialSharePrivacy.getEmbed,
  76 + // type: 'photo' or 'video':
  77 + 'caption' : $.fn.socialSharePrivacy.getDescription,
  78 + 'button' : function (options, uri, settings) {
  79 + var $code = $('<a target="_blank"/>').click(openTumblr);
  80 + $('<img>', {
  81 + alt: options.txt_button,
  82 + src: options.path_prefix + (settings.layout === 'line' ? options.line_img : options.box_img)
  83 + }).appendTo($code);
  84 + switch (options.type) {
  85 + case 'link':
  86 + return $code.attr('href', 'https://www.tumblr.com/share/link?'+$.param({
  87 + url : uri + options.referrer_track,
  88 + name : get(this, options, uri, settings, 'name'),
  89 + description : get(this, options, uri, settings, 'description')
  90 + }));
  91 +
  92 + case 'quote':
  93 + return $code.attr('href', 'https://www.tumblr.com/share/quote?'+$.param({
  94 + source : uri + options.referrer_track,
  95 + quote : get(this, options, uri, settings, 'quote')
  96 + }));
  97 +
  98 + case 'photo':
  99 + return $code.attr('href', 'https://www.tumblr.com/share/photo?'+$.param({
  100 + source : get(this, options, uri, settings, 'photo'),
  101 + caption : get(this, options, uri, settings, 'caption'),
  102 + clickthrou : get(this, options, uri, settings, 'clickthrou')
  103 + }));
  104 +
  105 + case 'video':
  106 + return $code.attr('href', 'https://www.tumblr.com/share/video?'+$.param({
  107 + embed : get(this, options, uri, settings, 'embed'),
  108 + caption : get(this, options, uri, settings, 'caption')
  109 + }));
  110 + }
  111 + }
  112 + };
  113 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/twitter.js 0 → 100644
@@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +
  17 +(function ($, undefined) {
  18 + "use strict";
  19 +
  20 + $.fn.socialSharePrivacy.settings.services.twitter = {
  21 + 'status' : true,
  22 + 'button_class' : 'tweet',
  23 + 'dummy_line_img' : 'images/dummy_twitter.png',
  24 + 'dummy_box_img' : 'images/dummy_box_twitter.png',
  25 + 'dummy_alt' : '"Tweet this"-Dummy',
  26 + 'txt_info' : 'Two clicks for more privacy: The Tweet this button will be enabled once you click here. Activating the button already sends data to Twitter &ndash; see <em>i</em>.',
  27 + 'txt_off' : 'not connected to Twitter',
  28 + 'txt_on' : 'connected to Twitter',
  29 + 'perma_option' : true,
  30 + 'display_name' : 'Twitter',
  31 + 'referrer_track' : '',
  32 + 'via' : '',
  33 + 'related' : '',
  34 + 'hashtags' : '',
  35 + 'dnt' : true,
  36 + 'text' : $.fn.socialSharePrivacy.getTitle,
  37 + 'button' : function (options, uri, settings) {
  38 + var text = typeof(options.text) === 'function' ?
  39 + options.text.call(this, options, uri, settings) :
  40 + String(options.text);
  41 + // 120 is the max character count left after twitters automatic
  42 + // url shortening with t.co
  43 + text = $.fn.socialSharePrivacy.abbreviateText(text, 120);
  44 +
  45 + var params = {
  46 + url : uri + options.referrer_track,
  47 + counturl: uri,
  48 + text : text,
  49 + count : settings.layout === 'line' ? 'horizontal' : 'vertical',
  50 + lang : options.language
  51 + };
  52 + if (options.via) params.via = options.via;
  53 + if (options.related) params.related = options.related;
  54 + if (options.hashtags) params.hashtags = options.hashtags;
  55 + if (options.dnt) params.dnt = options.dnt;
  56 +
  57 + return $('<iframe allowtransparency="true" frameborder="0" scrolling="no"></iframe>').attr(
  58 + 'src', 'https://platform.twitter.com/widgets/tweet_button.html?' +
  59 + $.param(params).replace(/\+/g,'%20'));
  60 + }
  61 + };
  62 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/modules/xing.js 0 → 100644
@@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
  1 +/*
  2 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  3 + *
  4 + * http://www.heise.de/extras/socialshareprivacy/
  5 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  6 + *
  7 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  8 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  9 + *
  10 + * Copyright (c) 2012 Mathias Panzenböck
  11 + *
  12 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  13 + *
  14 + * Spread the word, link to us if you can.
  15 + */
  16 +(function ($, undefined) {
  17 + "use strict";
  18 +
  19 + $.fn.socialSharePrivacy.settings.services.xing = {
  20 + 'status' : true,
  21 + 'dummy_line_img' : 'images/dummy_xing.png',
  22 + 'dummy_box_img' : 'images/dummy_box_xing.png',
  23 + 'dummy_alt' : '"XING"-Dummy',
  24 + 'txt_info' : 'Two clicks for more privacy: The XING button will be enabled once you click here. Activating the button already sends data to XING &ndash; see <em>i</em>.',
  25 + 'txt_off' : 'not connected to XING',
  26 + 'txt_on' : 'connected to XING',
  27 + 'perma_option' : true,
  28 + 'display_name' : 'XING',
  29 + 'referrer_track' : '',
  30 + 'button' : function (options, uri, settings) {
  31 + var $code = $('<script type="XING/Share"></script>').attr({
  32 + 'data-counter' : settings.layout === 'line' ? 'right' : 'top',
  33 + 'data-url' : uri + options.referrer_track,
  34 + 'data-lang' : options.language
  35 + });
  36 +
  37 + return $code.add("<script type='text/javascript'>(function(d, s) { var x = d.createElement(s); s = d.getElementsByTagName(s)[0]; x.src = 'https://www.xing-share.com/js/external/share.js'; s.parentNode.insertBefore(x, s); })(document, 'script');</script>");
  38 + }
  39 + };
  40 +})(jQuery);
plugins/social_share_privacy/public/socialshareprivacy/javascripts/settings.js 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +/**
  2 + * @license
  3 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  4 + *
  5 + * Copyright (c) 2012-2013 Mathias Panzenböck
  6 + *
  7 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  8 + *
  9 + * Spread the word, link to us if you can.
  10 + */
  11 +
  12 +// load global settings
  13 +jQuery(document).ready(function ($) {
  14 + "use strict";
  15 +
  16 + $('script[type="application/x-social-share-privacy-settings"]').each(function () {
  17 + var settings = (new Function('return ('+(this.textContent||this.innerText||this.text)+');')).call(this);
  18 +
  19 + if (typeof settings === "object") {
  20 + $.extend(true, $.fn.socialSharePrivacy.settings, settings);
  21 + }
  22 + });
  23 +});
plugins/social_share_privacy/public/socialshareprivacy/javascripts/socialshareprivacy.js 0 → 100644
@@ -0,0 +1,803 @@ @@ -0,0 +1,803 @@
  1 +/**
  2 + * @license
  3 + * jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz
  4 + *
  5 + * http://www.heise.de/extras/socialshareprivacy/
  6 + * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html
  7 + *
  8 + * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt,
  9 + * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de
  10 + *
  11 + * Copyright (c) 2012-2013 Mathias Panzenböck
  12 + *
  13 + * is released under the MIT License http://www.opensource.org/licenses/mit-license.php
  14 + *
  15 + * Spread the word, link to us if you can.
  16 + */
  17 +(function ($, undefined) {
  18 + "use strict";
  19 +
  20 + /*
  21 + * helper functions
  22 + */
  23 +
  24 + /**
  25 + * Build an absolute url using a base url.
  26 + * The provided base url has to be a valid absolute url. It will not be validated!
  27 + * If no base url is given the document location is used.
  28 + * Schemes that behave other than http might not work.
  29 + * This function tries to support file:-urls, but might fail in some cases.
  30 + * email:-urls aren't supported at all (don't make sense anyway).
  31 + */
  32 + function absurl (url, base) {
  33 + if (!base) base = document.baseURI || $("html > head > base").last().attr("href") || document.location.href;
  34 + if (!url) {
  35 + return base;
  36 + }
  37 + else if (/^[a-z][-+\.a-z0-9]*:/i.test(url)) {
  38 + // The scheme actually could contain any kind of alphanumerical unicode
  39 + // character, but JavaScript regular expressions don't support unicode
  40 + // character classes. Maybe /^[^:]+:/ or even /^.*:/ would be sufficient?
  41 + return url;
  42 + }
  43 + else if (url.slice(0,2) === '//') {
  44 + return /^[^:]+:/.exec(base)[0]+url;
  45 + }
  46 +
  47 + var ch = url.charAt(0);
  48 + if (ch === '/') {
  49 + if (/^file:/i.test(base)) {
  50 + // file scheme has no hostname
  51 + return 'file://'+url;
  52 + }
  53 + else {
  54 + return /^[^:]+:\/*[^\/]+/i.exec(base)[0]+url;
  55 + }
  56 + }
  57 + else if (ch === '#') {
  58 + // assume "#" only occures at the end indicating the fragment
  59 + return base.replace(/#.*$/,'')+url;
  60 + }
  61 + else if (ch === '?') {
  62 + // assume "?" and "#" only occure at the end indicating the query
  63 + // and the fragment
  64 + return base.replace(/[\?#].*$/,'')+url;
  65 + }
  66 + else {
  67 + var path;
  68 + if (/^file:/i.test(base)) {
  69 + path = base.replace(/^file:\/{0,2}/i,'');
  70 + base = "file://";
  71 + }
  72 + else {
  73 + var match = /^([^:]+:\/*[^\/]+)(\/.*?)?(\?.*?)?(#.*)?$/.exec(base);
  74 + base = match[1];
  75 + path = match[2]||"/";
  76 + }
  77 +
  78 + path = path.split("/");
  79 + path.pop();
  80 + if (path.length === 0) {
  81 + // Ensure leading "/". Of course this is only valid on
  82 + // unix like filesystems. More magic would be needed to
  83 + // support other filesystems.
  84 + path.push("");
  85 + }
  86 + path.push(url);
  87 + return base+path.join("/");
  88 + }
  89 + }
  90 +
  91 + function formatNumber (number) {
  92 + number = Number(number);
  93 +
  94 + var prefix = "";
  95 + var suffix = "";
  96 + if (number < 0) {
  97 + prefix = "-";
  98 + number = -number;
  99 + }
  100 +
  101 + if (number === Infinity) {
  102 + return prefix + "Infinity";
  103 + }
  104 +
  105 + if (number > 9999) {
  106 + number = number / 1000;
  107 + suffix = "K";
  108 + }
  109 +
  110 + number = Math.round(number);
  111 + if (number === 0) {
  112 + return "0";
  113 + }
  114 +
  115 + var buf = [];
  116 + while (number > 0) {
  117 + var part = String(number % 1000);
  118 +
  119 + number = Math.floor(number / 1000);
  120 + if (number) {
  121 + while (part.length < 3) {
  122 + part = "0"+part;
  123 + }
  124 + }
  125 +
  126 + buf.unshift(part);
  127 + }
  128 +
  129 + return prefix + buf.join(",") + suffix;
  130 + }
  131 +
  132 + // helper function that gets the title of the current page
  133 + function getTitle (options, uri, settings) {
  134 + var title = settings && settings.title;
  135 + if (typeof title === "function") {
  136 + title = title.call(this, options, uri, settings);
  137 + }
  138 +
  139 + if (title) {
  140 + return title;
  141 + }
  142 +
  143 + var title = $('meta[name="DC.title"]').attr('content');
  144 + var creator = $('meta[name="DC.creator"]').attr('content');
  145 +
  146 + if (title && creator) {
  147 + return title + ' - ' + creator;
  148 + } else {
  149 + return title || $('meta[property="og:title"]').attr('content') || $('title').text();
  150 + }
  151 + }
  152 +
  153 + function getDescription (options, uri, settings) {
  154 + var description = settings && settings.description;
  155 + if (typeof description === "function") {
  156 + description = description.call(this, options, uri, settings);
  157 + }
  158 +
  159 + if (description) {
  160 + return description;
  161 + }
  162 +
  163 + return abbreviateText(
  164 + $('meta[name="twitter:description"]').attr('content') ||
  165 + $('meta[itemprop="description"]').attr('content') ||
  166 + $('meta[name="description"]').attr('content') ||
  167 + $.trim($('article, p').first().text()) || $.trim($('body').text()), 3500);
  168 + }
  169 +
  170 + var IMAGE_ATTR_MAP = {
  171 + META : 'content',
  172 + IMG : 'src',
  173 + A : 'href',
  174 + IFRAME : 'src',
  175 + LINK : 'href'
  176 + };
  177 +
  178 + // find the largest image of the website
  179 + // if no image at all is found use googles favicon service, which
  180 + // defaults to a small globe (so there is always some image)
  181 + function getImage (options, uri, settings) {
  182 + var imgs, img = settings && settings.image;
  183 + if (typeof img === "function") {
  184 + img = img.call(this, options, uri, settings);
  185 + }
  186 +
  187 + if (!img) {
  188 + imgs = $('meta[property="image"], meta[property="og:image"], meta[property="og:image:url"], meta[name="twitter:image"], link[rel="image_src"], itemscope *[itemprop="image"]').first();
  189 + if (imgs.length > 0) {
  190 + img = imgs.attr(IMAGE_ATTR_MAP[imgs[0].nodeName]);
  191 + }
  192 + }
  193 +
  194 + if (img) {
  195 + return absurl(img);
  196 + }
  197 +
  198 + imgs = $('img').filter(':visible').filter(function () {
  199 + return $(this).parents('.social_share_privacy_area').length === 0;
  200 + });
  201 + if (imgs.length === 0) {
  202 + img = $('link[rel~="shortcut"][rel~="icon"]').attr('href');
  203 + if (img) return absurl(img);
  204 + return 'http://www.google.com/s2/favicons?'+$.param({domain:location.hostname});
  205 + }
  206 + imgs.sort(function (lhs, rhs) {
  207 + return rhs.offsetWidth * rhs.offsetHeight - lhs.offsetWidth * lhs.offsetHeight;
  208 + });
  209 + // browser makes src absolute:
  210 + return imgs[0].src;
  211 + }
  212 +
  213 + // abbreviate at last blank before length and add "\u2026" (horizontal ellipsis)
  214 + function abbreviateText (text, length) {
  215 + // length of UTF-8 encoded string
  216 + if (unescape(encodeURIComponent(text)).length <= length) {
  217 + return text;
  218 + }
  219 +
  220 + // "\u2026" is actually 3 bytes long in UTF-8
  221 + // TODO: if any of the last 3 characters is > 1 byte long this truncates too much
  222 + var abbrev = text.slice(0, length - 3);
  223 +
  224 + if (!/\W/.test(text.charAt(length - 3))) {
  225 + var match = /^(.*)\s\S*$/.exec(abbrev);
  226 + if (match) {
  227 + abbrev = match[1];
  228 + }
  229 + }
  230 + return abbrev + "\u2026";
  231 + }
  232 +
  233 + var HTML_CHAR_MAP = {
  234 + '<': '&lt;',
  235 + '>': '&gt;',
  236 + '&': '&amp;',
  237 + '"': '&quot;',
  238 + "'": '&#39;'
  239 + };
  240 +
  241 + function escapeHtml (s) {
  242 + return s.replace(/[<>&"']/g, function (ch) {
  243 + return HTML_CHAR_MAP[ch];
  244 + });
  245 + }
  246 +
  247 + function getEmbed (options, uri, settings) {
  248 + var embed = settings && settings.embed;
  249 + if (typeof embed === "function") {
  250 + embed = embed.call(this, options, uri, settings);
  251 + }
  252 +
  253 + if (embed) {
  254 + return embed;
  255 + }
  256 +
  257 + embed = ['<iframe scrolling="no" frameborder="0" style="border:none;" allowtransparency="true"'];
  258 + var embed_url = $('meta[name="twitter:player"]').attr('content');
  259 +
  260 + if (embed_url) {
  261 + var width = $('meta[name="twitter:player:width"]').attr('content');
  262 + var height = $('meta[name="twitter:player:height"]').attr('content');
  263 +
  264 + if (width) embed.push(' width="',escapeHtml(width),'"');
  265 + if (height) embed.push(' height="',escapeHtml(height),'"');
  266 + }
  267 + else {
  268 + embed_url = uri + options.referrer_track;
  269 + }
  270 +
  271 + embed.push(' src="',escapeHtml(embed_url),'"></iframe>');
  272 + return embed.join('');
  273 + }
  274 +
  275 + // build URI from rel="canonical" or document.location
  276 + function getURI (options) {
  277 + var uri = document.location.href;
  278 + var canonical = $("link[rel=canonical]").attr("href") || $('head meta[property="og:url"]').attr("content");
  279 +
  280 + if (canonical) {
  281 + uri = absurl(canonical);
  282 + }
  283 + else if (options && options.ignore_fragment) {
  284 + uri = uri.replace(/#.*$/,'');
  285 + }
  286 +
  287 + return uri;
  288 + }
  289 +
  290 + function buttonClickHandler (service_name) {
  291 + function onclick (event) {
  292 + var $container = $(this).parents('li.help_info').first();
  293 + var $share = $container.parents('.social_share_privacy_area').first().parent();
  294 + var options = $share.data('social-share-privacy-options');
  295 + var service = options.services[service_name];
  296 + var button_class = service.button_class || service_name;
  297 + var uri = options.uri;
  298 + if (typeof uri === 'function') {
  299 + uri = uri.call($share[0], options);
  300 + }
  301 + var $switch = $container.find('span.switch');
  302 + if ($switch.hasClass('off')) {
  303 + $container.addClass('info_off');
  304 + $switch.addClass('on').removeClass('off').html(service.txt_on||'\u00a0');
  305 + $container.find('img.privacy_dummy').replaceWith(
  306 + typeof(service.button) === "function" ?
  307 + service.button.call($container.parent().parent()[0],service,uri,options) :
  308 + service.button);
  309 + $share.trigger({type: 'socialshareprivacy:enable', serviceName: service_name, isClick: !event.isTrigger});
  310 + } else {
  311 + $container.removeClass('info_off');
  312 + $switch.addClass('off').removeClass('on').html(service.txt_off||'\u00a0');
  313 + $container.find('.dummy_btn').empty().
  314 + append($('<img/>').addClass(button_class+'_privacy_dummy privacy_dummy').
  315 + attr({
  316 + alt: service.dummy_alt,
  317 + src: service.path_prefix + (options.layout === 'line' ?
  318 + service.dummy_line_img : service.dummy_box_img)
  319 + }).click(onclick));
  320 + $share.trigger({type: 'socialshareprivacy:disable', serviceName: service_name, isClick: !event.isTrigger});
  321 + }
  322 + };
  323 + return onclick;
  324 + }
  325 +
  326 + // display info-overlays a tiny bit delayed
  327 + function enterHelpInfo () {
  328 + var $info_wrapper = $(this);
  329 + if ($info_wrapper.hasClass('info_off')) return;
  330 + var timeout_id = window.setTimeout(function () {
  331 + $info_wrapper.addClass('display');
  332 + $info_wrapper.removeData('timeout_id');
  333 + }, 500);
  334 + $info_wrapper.data('timeout_id', timeout_id);
  335 + }
  336 +
  337 + function leaveHelpInfo () {
  338 + var $info_wrapper = $(this);
  339 + var timeout_id = $info_wrapper.data('timeout_id');
  340 + if (timeout_id !== undefined) {
  341 + window.clearTimeout(timeout_id);
  342 + }
  343 + $info_wrapper.removeClass('display');
  344 + }
  345 +
  346 + function permCheckChangeHandler () {
  347 + var $input = $(this);
  348 + var $share = $input.parents('.social_share_privacy_area').first().parent();
  349 + var options = $share.data('social-share-privacy-options');
  350 + if ($input.is(':checked')) {
  351 + options.set_perma_option($input.attr('data-service'), options);
  352 + $input.parent().addClass('checked');
  353 + } else {
  354 + options.del_perma_option($input.attr('data-service'), options);
  355 + $input.parent().removeClass('checked');
  356 + }
  357 + }
  358 +
  359 + function enterSettingsInfo () {
  360 + var $settings = $(this);
  361 + var timeout_id = window.setTimeout(function () {
  362 + $settings.find('.settings_info_menu').removeClass('off').addClass('on');
  363 + $settings.removeData('timeout_id');
  364 + }, 500);
  365 + $settings.data('timeout_id', timeout_id);
  366 + }
  367 +
  368 + function leaveSettingsInfo () {
  369 + var $settings = $(this);
  370 + var timeout_id = $settings.data('timeout_id');
  371 + if (timeout_id !== undefined) {
  372 + window.clearTimeout(timeout_id);
  373 + }
  374 + $settings.find('.settings_info_menu').removeClass('on').addClass('off');
  375 + }
  376 +
  377 + function setPermaOption (service_name, options) {
  378 + $.cookie('socialSharePrivacy_'+service_name, 'perma_on', options.cookie_expires, options.cookie_path, options.cookie_domain);
  379 + }
  380 +
  381 + function delPermaOption (service_name, options) {
  382 + $.cookie('socialSharePrivacy_'+service_name, null, -1, options.cookie_path, options.cookie_domain);
  383 + }
  384 +
  385 + function getPermaOption (service_name, options) {
  386 + return !!options.get_perma_options(options)[service_name];
  387 + }
  388 +
  389 + function getPermaOptions (options) {
  390 + var cookies = $.cookie();
  391 + var permas = {};
  392 + for (var name in cookies) {
  393 + var match = /^socialSharePrivacy_(.+)$/.exec(name);
  394 + if (match) {
  395 + permas[match[1]] = cookies[name] === 'perma_on';
  396 + }
  397 + }
  398 + return permas;
  399 + }
  400 +
  401 +
  402 + // extend jquery with our plugin function
  403 + function socialSharePrivacy (options) {
  404 +
  405 + if (typeof options === "string") {
  406 + var command = options;
  407 + if (arguments.length === 1) {
  408 + switch (command) {
  409 + case "enable":
  410 + this.find('.switch.off').click();
  411 + break;
  412 +
  413 + case "disable":
  414 + this.find('.switch.on').click();
  415 + break;
  416 +
  417 + case "toggle":
  418 + this.find('.switch').click();
  419 + break;
  420 +
  421 + case "options":
  422 + return this.data('social-share-privacy-options');
  423 +
  424 + case "destroy":
  425 + this.trigger({type: 'socialshareprivacy:destroy'});
  426 + this.children('.social_share_privacy_area').remove();
  427 + this.removeData('social-share-privacy-options');
  428 + break;
  429 +
  430 + case "enabled":
  431 + var enabled = {};
  432 + this.each(function () {
  433 + var $self = $(this);
  434 + var options = $self.data('social-share-privacy-options');
  435 + for (var name in options.services) {
  436 + enabled[name] = $self.find('.'+(options.services[name].class_name||name)+' .switch').hasClass('on');
  437 + }
  438 + });
  439 + return enabled;
  440 +
  441 + case "disabled":
  442 + var disabled = {};
  443 + this.each(function () {
  444 + var $self = $(this);
  445 + var options = $self.data('social-share-privacy-options');
  446 + for (var name in options.services) {
  447 + disabled[name] = $self.find('.'+(options.services[name].class_name||name)+' .switch').hasClass('off');
  448 + }
  449 + });
  450 + return disabled;
  451 +
  452 + default:
  453 + throw new Error("socialSharePrivacy: unknown command: "+command);
  454 + }
  455 + }
  456 + else {
  457 + var arg = arguments[1];
  458 + switch (command) {
  459 + case "enable":
  460 + this.each(function () {
  461 + var $self = $(this);
  462 + var options = $self.data('social-share-privacy-options');
  463 + $self.find('.'+(options.services[arg].class_name||arg)+' .switch.off').click();
  464 + });
  465 + break;
  466 +
  467 + case "disable":
  468 + this.each(function () {
  469 + var $self = $(this);
  470 + var options = $self.data('social-share-privacy-options');
  471 + $self.find('.'+(options.services[arg].class_name||arg)+' .switch.on').click();
  472 + });
  473 + break;
  474 +
  475 + case "toggle":
  476 + this.each(function () {
  477 + var $self = $(this);
  478 + var options = $self.data('social-share-privacy-options');
  479 + $self.find('.'+(options.services[arg].class_name||arg)+' .switch').click();
  480 + });
  481 + break;
  482 +
  483 + case "option":
  484 + if (arguments.length > 2) {
  485 + var value = {};
  486 + value[arg] = arguments[2];
  487 + this.each(function () {
  488 + $.extend(true, $(this).data('social-share-privacy-options'), value);
  489 + });
  490 + }
  491 + else {
  492 + return this.data('social-share-privacy-options')[arg];
  493 + }
  494 + break;
  495 +
  496 + case "options":
  497 + $.extend(true, options, arg);
  498 + break;
  499 +
  500 + case "enabled":
  501 + var options = this.data('social-share-privacy-options');
  502 + return this.find('.'+(options.services[arg].class_name||arg)+' .switch').hasClass('on');
  503 +
  504 + case "disabled":
  505 + var options = this.data('social-share-privacy-options');
  506 + return this.find('.'+(options.services[arg].class_name||arg)+' .switch').hasClass('off');
  507 +
  508 + default:
  509 + throw new Error("socialSharePrivacy: unknown command: "+command);
  510 + }
  511 + }
  512 + return this;
  513 + }
  514 +
  515 + return this.each(function () {
  516 + // parse options passed via data-* attributes:
  517 + var data = {};
  518 + if (this.lang) data.language = this.lang;
  519 + for (var i = 0, attrs = this.attributes; i < attrs.length; ++ i) {
  520 + var attr = attrs[i];
  521 + if (/^data-./.test(attr.name)) {
  522 + var path = attr.name.slice(5).replace(/-/g,"_").split(".");
  523 + var ctx = data, j = 0;
  524 + for (; j < path.length-1; ++ j) {
  525 + var name = path[j];
  526 + if (name in ctx) {
  527 + ctx = ctx[name];
  528 + if (typeof ctx === "string") {
  529 + ctx = (new Function("$", "return ("+ctx+");")).call(this, $);
  530 + }
  531 + }
  532 + else {
  533 + ctx = ctx[name] = {};
  534 + }
  535 + }
  536 + var name = path[j];
  537 + if (typeof ctx[name] === "object") {
  538 + ctx[name] = $.extend(true, (new Function("$", "return ("+attr.value+");")).call(this, $), ctx[name]);
  539 + }
  540 + else {
  541 + ctx[name] = attr.value;
  542 + }
  543 + }
  544 + }
  545 + // parse global option values:
  546 + if ('cookie_expires' in data) data.cookie_expires = Number(data.cookie_expires);
  547 + if ('perma_option' in data) data.perma_option = $.trim(data.perma_option).toLowerCase() === "true";
  548 + if ('ignore_fragment' in data) data.ignore_fragment = $.trim(data.ignore_fragment).toLowerCase() === "true";
  549 + if ('set_perma_option' in data) {
  550 + data.set_perma_option = new Function("service_name", "options", data.set_perma_option);
  551 + }
  552 + if ('del_perma_option' in data) {
  553 + data.del_perma_option = new Function("service_name", "options", data.del_perma_option);
  554 + }
  555 + if ('get_perma_option' in data) {
  556 + data.get_perma_option = new Function("service_name", "options", data.get_perma_option);
  557 + }
  558 + if ('get_perma_options' in data) {
  559 + data.get_perma_options = new Function("options", data.get_perma_options);
  560 + }
  561 + if ('order' in data) {
  562 + data.order = $.trim(data.order);
  563 + if (data.order) {
  564 + data.order = data.order.split(/\s+/g);
  565 + }
  566 + else {
  567 + delete data.order;
  568 + }
  569 + }
  570 + if (typeof data.services === "string") {
  571 + data.services = (new Function("$", "return ("+data.services+");")).call(this, $);
  572 + }
  573 + if ('options' in data) {
  574 + data = $.extend(data, (new Function("$", "return ("+data.options+");")).call(this, $));
  575 + delete data.options;
  576 + }
  577 + if ('services' in data) {
  578 + for (var service_name in data.services) {
  579 + var service = data.services[service_name];
  580 + if (typeof service === "string") {
  581 + data.services[service_name] = (new Function("$", "return ("+service+");")).call(this, $);
  582 + }
  583 + // only values of common options are parsed:
  584 + if (typeof service.status === "string") {
  585 + service.status = $.trim(service.status).toLowerCase() === "true";
  586 + }
  587 + if (typeof service.perma_option === "string") {
  588 + service.perma_option = $.trim(service.perma_option).toLowerCase() === "true";
  589 + }
  590 + }
  591 + }
  592 + // overwrite default values with user settings
  593 + var this_options = $.extend(true,{},socialSharePrivacy.settings,options,data);
  594 + var order = this_options.order || [];
  595 +
  596 + var dummy_img = this_options.layout === 'line' ? 'dummy_line_img' : 'dummy_box_img';
  597 + var any_on = false;
  598 + var any_perm = false;
  599 + var any_unsafe = false;
  600 + var unordered = [];
  601 + for (var service_name in this_options.services) {
  602 + var service = this_options.services[service_name];
  603 + if (service.status) {
  604 + any_on = true;
  605 + if ($.inArray(service_name, order) === -1) {
  606 + unordered.push(service_name);
  607 + }
  608 + if (service.privacy !== 'safe') {
  609 + any_unsafe = true;
  610 + if (service.perma_option) {
  611 + any_perm = true;
  612 + }
  613 + }
  614 + }
  615 + if (!('language' in service)) {
  616 + service.language = this_options.language;
  617 + }
  618 + if (!('path_prefix' in service)) {
  619 + service.path_prefix = this_options.path_prefix;
  620 + }
  621 + if (!('referrer_track' in service)) {
  622 + service.referrer_track = '';
  623 + }
  624 + }
  625 + unordered.sort();
  626 + order = order.concat(unordered);
  627 +
  628 + // check if at least one service is activated
  629 + if (!any_on) {
  630 + return;
  631 + }
  632 +
  633 + // insert stylesheet into document and prepend target element
  634 + if (this_options.css_path) {
  635 + var css_path = (this_options.path_prefix||"") + this_options.css_path;
  636 + // IE fix (needed for IE < 9 - but done for all IE versions)
  637 + if (document.createStyleSheet) {
  638 + document.createStyleSheet(css_path);
  639 + } else if ($('link[href="'+css_path+'"]').length === 0) {
  640 + $('<link/>',{rel:'stylesheet',type:'text/css',href:css_path}).appendTo(document.head);
  641 + }
  642 + }
  643 +
  644 + // get stored perma options
  645 + var permas;
  646 + if (this_options.perma_option && any_perm) {
  647 + if (this_options.get_perma_options) {
  648 + permas = this_options.get_perma_options(this_options);
  649 + }
  650 + else {
  651 + permas = {};
  652 + for (var service_name in this_options.services) {
  653 + permas[service_name] = this_options.get_perma_option(service_name, this_options);
  654 + }
  655 + }
  656 + }
  657 +
  658 + // canonical uri that will be shared
  659 + var uri = this_options.uri;
  660 + if (typeof uri === 'function') {
  661 + uri = uri.call(this, this_options);
  662 + }
  663 +
  664 + var $context = $('<ul class="social_share_privacy_area"></ul>').addClass(this_options.layout);
  665 + var $share = $(this);
  666 +
  667 + $share.prepend($context).data('social-share-privacy-options',this_options);
  668 +
  669 + for (var i = 0; i < order.length; ++ i) {
  670 + var service_name = order[i];
  671 + var service = this_options.services[service_name];
  672 +
  673 + if (service && service.status) {
  674 + var class_name = service.class_name || service_name;
  675 + var button_class = service.button_class || service_name;
  676 + var $help_info;
  677 +
  678 + if (service.privacy === 'safe') {
  679 + $help_info = $('<li class="help_info"><div class="info">' +
  680 + service.txt_info + '</div><div class="dummy_btn"></div></li>').addClass(class_name);
  681 + $help_info.find('.dummy_btn').
  682 + addClass(button_class).
  683 + append(service.button.call(this,service,uri,this_options));
  684 + }
  685 + else {
  686 + $help_info = $('<li class="help_info"><div class="info">' +
  687 + service.txt_info + '</div><span class="switch off">' + (service.txt_off||'\u00a0') +
  688 + '</span><div class="dummy_btn"></div></li>').addClass(class_name);
  689 + $help_info.find('.dummy_btn').
  690 + addClass(button_class).
  691 + append($('<img/>').addClass(button_class+'_privacy_dummy privacy_dummy').
  692 + attr({
  693 + alt: service.dummy_alt,
  694 + src: service.path_prefix + service[dummy_img]
  695 + }));
  696 +
  697 + $help_info.find('.dummy_btn img.privacy_dummy, span.switch').click(
  698 + buttonClickHandler(service_name));
  699 + }
  700 + $context.append($help_info);
  701 + }
  702 + }
  703 +
  704 + //
  705 + // append Info/Settings-area
  706 + //
  707 + if (any_unsafe) {
  708 + var $settings_info = $('<li class="settings_info"><div class="settings_info_menu off perma_option_off"><a>' +
  709 + '<span class="help_info icon"><span class="info">' + this_options.txt_help + '</span></span></a></div></li>');
  710 + var $info_link = $settings_info.find('> .settings_info_menu > a').attr('href', this_options.info_link);
  711 + if (this_options.info_link_target) {
  712 + $info_link.attr("target",this_options.info_link_target);
  713 + }
  714 + $context.append($settings_info);
  715 +
  716 + $context.find('.help_info').on('mouseenter', enterHelpInfo).on('mouseleave', leaveHelpInfo);
  717 +
  718 + // menu for permanently enabling of service buttons
  719 + if (this_options.perma_option && any_perm) {
  720 +
  721 + // define container
  722 + var $container_settings_info = $context.find('li.settings_info');
  723 +
  724 + // remove class that fomrats the i-icon, because perma-options are shown
  725 + var $settings_info_menu = $container_settings_info.find('.settings_info_menu');
  726 + $settings_info_menu.removeClass('perma_option_off');
  727 +
  728 + // append perma-options-icon (.settings) and form (hidden)
  729 + $settings_info_menu.append(
  730 + '<span class="settings">' + this_options.txt_settings + '</span><form><fieldset><legend>' +
  731 + this_options.settings_perma + '</legend></fieldset></form>');
  732 +
  733 + // write services with <input> and <label> and checked state from cookie
  734 + var $fieldset = $settings_info_menu.find('form fieldset');
  735 + for (var i = 0; i < order.length; ++ i) {
  736 + var service_name = order[i];
  737 + var service = this_options.services[service_name];
  738 +
  739 + if (service && service.status && service.perma_option && service.privacy !== 'safe') {
  740 + var class_name = service.class_name || service_name;
  741 + var perma = permas[service_name];
  742 + var $field = $('<label><input type="checkbox"' + (perma ? ' checked="checked"/>' : '/>') +
  743 + service.display_name + '</label>');
  744 + $field.find('input').attr('data-service', service_name);
  745 + $fieldset.append($field);
  746 +
  747 + // enable services when cookie set and refresh cookie
  748 + if (perma) {
  749 + $context.find('li.'+class_name+' span.switch').click();
  750 + this_options.set_perma_option(service_name, this_options);
  751 + }
  752 + }
  753 + }
  754 +
  755 + // indicate clickable setings gear
  756 + $container_settings_info.find('span.settings').css('cursor', 'pointer');
  757 +
  758 + // show settings menu on hover
  759 + $container_settings_info.on('mouseenter', enterSettingsInfo).on('mouseleave', leaveSettingsInfo);
  760 +
  761 + // interaction for <input> to enable services permanently
  762 + $container_settings_info.find('fieldset input').on('change', permCheckChangeHandler);
  763 + }
  764 + }
  765 + $share.trigger({type: 'socialshareprivacy:create', options: this_options});
  766 + });
  767 + };
  768 +
  769 + // expose helper functions:
  770 + socialSharePrivacy.absurl = absurl;
  771 + socialSharePrivacy.escapeHtml = escapeHtml;
  772 + socialSharePrivacy.getTitle = getTitle;
  773 + socialSharePrivacy.getImage = getImage;
  774 + socialSharePrivacy.getEmbed = getEmbed;
  775 + socialSharePrivacy.getDescription = getDescription;
  776 + socialSharePrivacy.abbreviateText = abbreviateText;
  777 + socialSharePrivacy.formatNumber = formatNumber;
  778 +
  779 + socialSharePrivacy.settings = {
  780 + 'services' : {},
  781 + 'info_link' : 'http://panzi.github.io/SocialSharePrivacy/',
  782 + 'info_link_target' : '',
  783 + 'txt_settings' : 'Settings',
  784 + 'txt_help' : 'If you activate these fields via click, data will be sent to a third party (Facebook, Twitter, Google, ...) and stored there. For more details click <em>i</em>.',
  785 + 'settings_perma' : 'Permanently enable share buttons:',
  786 + 'layout' : 'line', // possible values: 'line' (~120x20) or 'box' (~58x62)
  787 + 'set_perma_option' : setPermaOption,
  788 + 'del_perma_option' : delPermaOption,
  789 + 'get_perma_options' : getPermaOptions,
  790 + 'get_perma_option' : getPermaOption,
  791 + 'perma_option' : !!$.cookie,
  792 + 'cookie_path' : '/',
  793 + 'cookie_domain' : document.location.hostname,
  794 + 'cookie_expires' : 365,
  795 + 'path_prefix' : '',
  796 + 'css_path' : "stylesheets/socialshareprivacy.css",
  797 + 'uri' : getURI,
  798 + 'language' : 'en',
  799 + 'ignore_fragment' : true
  800 + };
  801 +
  802 + $.fn.socialSharePrivacy = socialSharePrivacy;
  803 +}(jQuery));
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/common.css 0 → 100644
@@ -0,0 +1,231 @@ @@ -0,0 +1,231 @@
  1 +.social_share_privacy_area {
  2 + clear: both;
  3 + margin: 5px 0;
  4 + list-style-type: none;
  5 + padding: 0;
  6 + width: auto;
  7 + display: block;
  8 +}
  9 +.social_share_privacy_area.line {
  10 + height: 25px;
  11 + line-height: 16px;
  12 +}
  13 +.social_share_privacy_area.box {
  14 + width: 95px;
  15 +}
  16 +.social_share_privacy_area li {
  17 + margin: 0 !important;
  18 + padding: 0 !important;
  19 + list-style-type: none !important;
  20 +}
  21 +.social_share_privacy_area.box li {
  22 + text-align: center;
  23 +}
  24 +.social_share_privacy_area.line li {
  25 + height: 21px;
  26 + float: left;
  27 + width: 33%;
  28 +}
  29 +.social_share_privacy_area li .dummy_btn {
  30 + cursor: pointer;
  31 + padding: 0;
  32 + height: inherit;
  33 +}
  34 +.social_share_privacy_area.line li .dummy_btn {
  35 + float: left;
  36 + margin: 0 10px 0 10px;
  37 +}
  38 +.social_share_privacy_area.box li .dummy_btn {
  39 + margin-bottom: 10px;
  40 +}
  41 +.social_share_privacy_area li .dummy_btn img.privacy_dummy,
  42 +.social_share_privacy_area li .dummy_btn iframe {
  43 + vertical-align: bottom;
  44 +}
  45 +.social_share_privacy_area li .dummy_btn iframe {
  46 + overflow: hidden;
  47 + height: inherit;
  48 + width: inherit;
  49 + border-style: none;
  50 +}
  51 +.social_share_privacy_area.line li {
  52 + display: inline-block;
  53 +}
  54 +/* Switch begin */
  55 +.social_share_privacy_area li .switch {
  56 + display: inline-block;
  57 + text-indent: -9999em;
  58 + background: transparent url(../images/socialshareprivacy_on_off.png) no-repeat 0 0 scroll;
  59 + width: 23px;
  60 + height: 12px;
  61 + overflow: hidden;
  62 + margin: 4px 0 0;
  63 + padding: 0;
  64 + cursor: pointer;
  65 +}
  66 +.social_share_privacy_area.line li .switch {
  67 + float: left;
  68 +}
  69 +.social_share_privacy_area li .switch.on {
  70 + background-position: 0 -12px;
  71 +}
  72 +/* Switch end */
  73 +/* Tooltips begin */
  74 +.social_share_privacy_area li.help_info {
  75 + position: relative;
  76 +}
  77 +.social_share_privacy_area li.settings_info,
  78 +.social_share_privacy_area li.help_info .info {
  79 + text-align: left;
  80 +}
  81 +.social_share_privacy_area li.help_info .info,
  82 +.social_share_privacy_area li .help_info.icon .info {
  83 + display: none;
  84 + position: absolute;
  85 + bottom: 40px;
  86 + width: 290px;
  87 + padding: 10px 15px;
  88 + margin: 0;
  89 + font-size: 12px;
  90 + line-height: 16px;
  91 + font-weight: bold;
  92 + border: 1px solid #ccc;
  93 + -moz-border-radius: 4px;
  94 + -webkit-border-radius: 4px;
  95 + border-radius: 4px;
  96 + -moz-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);
  97 + -webkit-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);
  98 + box-shadow: 0px 0px 15px rgba(0,0,0,0.4);
  99 + background-color: #fdfbec;
  100 + color: #000;
  101 + z-index: 500;
  102 +}
  103 +.social_share_privacy_area.line li.help_info .info,
  104 +.social_share_privacy_area li .help_info.icon .info {
  105 + left: 0;
  106 +}
  107 +.social_share_privacy_area.box li.help_info .info {
  108 + left: 100%;
  109 + top: 0px;
  110 + bottom: auto;
  111 +}
  112 +.social_share_privacy_area li .help_info.icon .info {
  113 + width: 350px;
  114 +}
  115 +.social_share_privacy_area li.help_info.display .info,
  116 +.social_share_privacy_area li .help_info.icon.display .info {
  117 + display: block;
  118 +}
  119 +.social_share_privacy_area li.help_info.info_off.display .info {
  120 + display: none;
  121 +}
  122 +.social_share_privacy_area li .help_info.icon {
  123 + background: #fff url(../images/socialshareprivacy_info.png) no-repeat center center scroll;
  124 + width: 25px;
  125 + height: 20px;
  126 + position: relative;
  127 + display: inline-block;
  128 + vertical-align: top;
  129 + border: 2px solid #e7e3e3;
  130 + border-right-width: 0;
  131 + -moz-border-radius: 5px 0 0 5px;
  132 + -webkit-border-radius: 5px 0 0 5px;
  133 + border-radius: 5px 0 0 5px;
  134 + margin: 0;
  135 + padding: 0;
  136 +}
  137 +.social_share_privacy_area li.settings_info .settings_info_menu.perma_option_off .help_info.icon {
  138 + border-right-width: 2px;
  139 + -moz-border-radius: 5px;
  140 + -webkit-border-radius: 5px;
  141 + border-radius: 5px;
  142 +}
  143 +/* Tooltips end */
  144 +/* Settings/Info begin */
  145 +.social_share_privacy_area li.settings_info {
  146 + position: relative;
  147 + top: -2px;
  148 +}
  149 +.social_share_privacy_area li.settings_info a {
  150 + text-decoration: none;
  151 + margin: 0 !important;
  152 +}
  153 +.social_share_privacy_area li.settings_info .settings_info_menu {
  154 + background-color: #f3f4f5;
  155 + color: #000;
  156 + border-style: none;
  157 + -moz-border-radius: 5px;
  158 + -webkit-border-radius: 5px;
  159 + border-radius: 5px;
  160 + -moz-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);
  161 + -webkit-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);
  162 + box-shadow: 0px 0px 15px rgba(0,0,0,0.4);
  163 + left: 0;
  164 + position: absolute;
  165 + top: 0;
  166 + min-width: 135px;
  167 + margin: 0;
  168 + padding: 0;
  169 +}
  170 +.social_share_privacy_area li.settings_info .settings_info_menu.on {
  171 + z-index: 1000;
  172 +}
  173 +.social_share_privacy_area li.settings_info .settings_info_menu.off {
  174 + border-width: 0;
  175 + -moz-box-shadow: none;
  176 + -webkit-box-shadow: none;
  177 + box-shadow: none;
  178 + background-color: transparent;
  179 +}
  180 +.social_share_privacy_area li.settings_info .settings_info_menu.off form {
  181 + display: none;
  182 + margin: 0;
  183 + padding: 0;
  184 +}
  185 +.social_share_privacy_area li.settings_info .settings_info_menu .settings {
  186 + text-indent: -9999em;
  187 + display: inline-block;
  188 + background: #fff url(../images/settings.png) no-repeat center center scroll;
  189 + width: 25px;
  190 + height: 20px;
  191 + border: 2px solid #e7e3e3;
  192 + -moz-border-radius: 0 5px 5px 0;
  193 + -webkit-border-radius: 0 5px 5px 0;
  194 + border-radius: 0 5px 5px 0;
  195 + border-left: 1px solid #ddd;
  196 + margin: 0;
  197 + padding: 0;
  198 +}
  199 +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset {
  200 + border-width: 0;
  201 + margin: 0;
  202 + padding: 0 10px 10px;
  203 +}
  204 +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset legend {
  205 + font-size: 11px;
  206 + font-weight: bold;
  207 + line-height: 14px;
  208 + margin: 0;
  209 + padding: 10px 0;
  210 + width: 115px;
  211 +}
  212 +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset input {
  213 + margin: 4px 10px 4px 0;
  214 + padding: 0;
  215 +}
  216 +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset label {
  217 + display: block;
  218 + font-size: 12px;
  219 + font-weight: bold;
  220 + line-height: 24px;
  221 + -moz-transition: color .5s ease-in;
  222 + -webkit-transition: color .5s ease-in;
  223 + transition: color .5s ease-in;
  224 + margin: 0;
  225 + padding: 0;
  226 + white-space: nowrap;
  227 +}
  228 +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset label.checked {
  229 + color: #090;
  230 +}
  231 +/* Settings/Info end */
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/buffer.css 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +.social_share_privacy_area.line .buffer iframe {
  2 + width: 110px;
  3 + height: 20px;
  4 +}
  5 +.social_share_privacy_area.line .buffer img {
  6 + width: 55px;
  7 + height: 20px;
  8 + margin-right: 55px;
  9 +}
  10 +.social_share_privacy_area.box .buffer iframe,
  11 +.social_share_privacy_area.box .buffer img {
  12 + width: 55px;
  13 + height: 62px;
  14 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/delicious.css 0 → 100644
@@ -0,0 +1,155 @@ @@ -0,0 +1,155 @@
  1 +/* Delicious Button v1.1
  2 +Blog : http://www.moretechtips.net
  3 +Project: http://code.google.com/p/delicious-button/
  4 +Copyright 2010 [Mike @ moretechtips.net]
  5 +Licensed under the Apache License, Version 2.0
  6 +(the "License"); you may not use this file except in compliance with the License.
  7 +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 */
  8 +.social_share_privacy_area.box .delicious .delicious-widget,
  9 +.social_share_privacy_area.box .delicious img.privacy_dummy {
  10 + width: 50px;
  11 + height: 62px;
  12 +}
  13 +.social_share_privacy_area.line .delicious .delicious-widget,
  14 +.social_share_privacy_area.line .delicious img.privacy_dummy {
  15 + width: 75px;
  16 + height: 20px;
  17 + margin-right: 20px;
  18 +}
  19 +.social_share_privacy_area.box .delicious div.delicious-widget {
  20 + font-family:Arial,Tahoma,Sans-Serif;
  21 + font-size:11px;
  22 + width:50px;
  23 + margin: 0 auto;
  24 +}
  25 +.social_share_privacy_area.box .delicious a.icon,
  26 +.social_share_privacy_area.box .delicious a.count {
  27 + color:#FFF!important;
  28 + display:block;
  29 + -webkit-border-radius:3px;
  30 + -moz-border-radius:3px;
  31 + -o-border-radius:3px;
  32 + border-radius:3px;
  33 + outline:none!important;
  34 + text-decoration:none!important;
  35 +}
  36 +.social_share_privacy_area.box .delicious a.icon {
  37 + background:#fff;
  38 + border:1px solid #ccc;
  39 + height:38px;
  40 + overflow:hidden;
  41 + position:relative;
  42 + direction:ltr;
  43 +}
  44 +.social_share_privacy_area.box .delicious a.icon:hover {
  45 + border-color:#666;
  46 +}
  47 +.social_share_privacy_area.box .delicious a.count {
  48 + margin-top:2px;
  49 + text-align:center;
  50 + font-size:12px;
  51 + line-height:18px;
  52 + height:18px;
  53 + background:#3274D0;
  54 + border:#3274D0 1px solid;
  55 + text-shadow:#2A5580 1px 1px 0;
  56 +}
  57 +.social_share_privacy_area.box .delicious a.count:hover {
  58 + background:#369;
  59 + border-color:#369;
  60 +}
  61 +.social_share_privacy_area.box .delicious a.count:active {
  62 + background:#000;
  63 + border:#333 1px solid;
  64 + text-shadow:#222 1px 1px 0;
  65 + outline:none;
  66 +}
  67 +.social_share_privacy_area.line .delicious div.delicious-widget {
  68 + font-family:Arial,Tahoma,Sans-Serif;
  69 + font-size:11px;
  70 + width:76px;
  71 +}
  72 +.social_share_privacy_area.line .delicious a.icon,
  73 +.social_share_privacy_area.line .delicious a.count {
  74 + display:block;
  75 + float:left;
  76 + line-height:18px;
  77 + border:#666 solid 1px;
  78 + -webkit-border-radius:3px;
  79 + -moz-border-radius:3px;
  80 + -o-border-radius:3px;
  81 + border-radius:3px;
  82 + outline:none!important;
  83 + text-decoration:none!important;
  84 + height:18px;
  85 + overflow:hidden;
  86 + color:#FFF!important;
  87 +}
  88 +.social_share_privacy_area.line .delicious a.icon {
  89 + background:#fff;
  90 + border-color:#ccc;
  91 + width:20px;
  92 + position:relative;
  93 + direction:ltr;
  94 + margin-right:1px;
  95 +}
  96 +.social_share_privacy_area.line .delicious a.icon:hover {
  97 + border-color:#666;
  98 +}
  99 +.social_share_privacy_area.line .delicious a.count {
  100 + font-size:12px;
  101 + background:#3274D0;
  102 + border-color:#3274D0;
  103 + width:50px;
  104 + text-align:center;
  105 + text-shadow:#2A5580 1px 1px 0;
  106 +}
  107 +.social_share_privacy_area.line .delicious a.count:hover {
  108 + background:#369;
  109 + border-color:#369;
  110 + text-shadow:#369 1px 1px 0;
  111 +}
  112 +.social_share_privacy_area.line .delicious a.count:active {
  113 + background:#000;
  114 + border-color:#333;
  115 + text-shadow:#222 1px 1px 0;
  116 +}
  117 +.social_share_privacy_area.box .delicious a.icon:hover *,
  118 +.social_share_privacy_area.line .delicious a.icon:hover * {
  119 + opacity:0.85;
  120 + filter:alpha(opacity=85);
  121 +}
  122 +.social_share_privacy_area.box .delicious a.icon *,
  123 +.social_share_privacy_area.line .delicious a.icon * {
  124 + width:50%;
  125 + height:50%;
  126 + position:absolute;
  127 + margin:0!important;
  128 +}
  129 +.social_share_privacy_area.box .delicious div.delicious1,
  130 +.social_share_privacy_area.line .delicious div.delicious1 {
  131 + background:#3274D0;
  132 + left:50%;
  133 + top:0;
  134 +}
  135 +.social_share_privacy_area.box .delicious div.delicious2,
  136 +.social_share_privacy_area.line .delicious div.delicious2 {
  137 + background:#000;
  138 + left:0;
  139 + top:50%;
  140 +}
  141 +.social_share_privacy_area.box .delicious div.delicious3,
  142 +.social_share_privacy_area.line .delicious div.delicious3 {
  143 + background:#D3D2D2;
  144 + left:50%;
  145 + top:50%;
  146 +}
  147 +.social_share_privacy_area.box .delicious a.count i,
  148 +.social_share_privacy_area.line .delicious a.count i {
  149 + display:none;
  150 + font-style:normal;
  151 +}
  152 +.social_share_privacy_area.box .delicious a.count b,
  153 +.social_share_privacy_area.line .delicious a.count b {
  154 + font-weight:normal;
  155 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/disqus.css 0 → 100644
@@ -0,0 +1,151 @@ @@ -0,0 +1,151 @@
  1 +.social_share_privacy_area.line .disqus img.privacy_dummy {
  2 + width: 49px;
  3 + height: 20px;
  4 + margin-right: 45px;
  5 +}
  6 +.social_share_privacy_area.box .disqus img.privacy_dummy {
  7 + width: 55px;
  8 + height: 61px;
  9 +}
  10 +.social_share_privacy_area .disqus .disqus-widget {
  11 + line-height: 20px;
  12 + font-size: 11px;
  13 + font-family: Arial, sans-serif;
  14 + cursor: text;
  15 + white-space: nowrap;
  16 + text-align: left;
  17 +}
  18 +.social_share_privacy_area .disqus .disqus-widget a,
  19 +.social_share_privacy_area .disqus .disqus-widget a:hover {
  20 + -webkit-text-shadow: none;
  21 + -moz-text-shadow: none;
  22 + -ms-text-shadow: none;
  23 + -o-text-shadow: none;
  24 + text-shadow: none;
  25 +}
  26 +.social_share_privacy_area .disqus .disqus-widget a.name {
  27 + overflow: hidden;
  28 + font-weight: bold;
  29 + text-transform: uppercase;
  30 + text-decoration: none;
  31 + color: #5E8BA9;
  32 + -webkit-text-shadow: 0 1px 0 rgba(255,255,255,0.5);
  33 + -moz-text-shadow: 0 1px 0 rgba(255,255,255,0.5);
  34 + -ms-text-shadow: 0 1px 0 rgba(255,255,255,0.5);
  35 + -o-text-shadow: 0 1px 0 rgba(255,255,255,0.5);
  36 + text-shadow: 0 1px 0 rgba(255,255,255,0.5);
  37 + height: 18px;
  38 + border: 1px solid #ccc;
  39 + border-radius: 3px;
  40 + background-color: #f8f8f8;
  41 + background-image: -webkit-gradient(linear,left top,left bottom,from(#fff),to(#dedede));
  42 + background-image: -moz-linear-gradient(top,#fff,#dedede);
  43 + background-image: -o-linear-gradient(top,#fff,#dedede);
  44 + background-image: -ms-linear-gradient(top,#fff,#dedede);
  45 + background-image: linear-gradient(top,#fff,#dedede);
  46 +}
  47 +.social_share_privacy_area .disqus .disqus-widget a.name .us {
  48 + color: #b84;
  49 +}
  50 +.social_share_privacy_area.line .disqus .disqus-widget {
  51 + min-width: 94px;
  52 +}
  53 +.social_share_privacy_area.line .disqus .disqus-widget .count,
  54 +.social_share_privacy_area.line .disqus .disqus-widget a.name {
  55 + display: inline-block;
  56 + padding: 0px 4px;
  57 + vertical-align: top;
  58 +}
  59 +.social_share_privacy_area.box .disqus .disqus-widget {
  60 + display: block;
  61 + width: 55px;
  62 + height: 61px;
  63 + margin: auto;
  64 +}
  65 +.social_share_privacy_area.box .disqus .disqus-widget .count,
  66 +.social_share_privacy_area.box .disqus .disqus-widget a.name {
  67 + display: block;
  68 + width: 53px;
  69 + text-align: center;
  70 +}
  71 +.social_share_privacy_area .disqus .disqus-widget a.name:hover {
  72 + border-color: #bbb;
  73 + background-image: -webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#d9d9d9));
  74 + background-image: -moz-linear-gradient(top,#f8f8f8,#d9d9d9);
  75 + background-image: -o-linear-gradient(top,#f8f8f8,#d9d9d9);
  76 + background-image: -ms-linear-gradient(top,#f8f8f8,#d9d9d9);
  77 + background-image: linear-gradient(top,#f8f8f8,#d9d9d9);
  78 +}
  79 +.social_share_privacy_area .disqus .disqus-widget a.name:active {
  80 + background-color: #efefef;
  81 + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);
  82 + -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);
  83 + box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);
  84 +}
  85 +.social_share_privacy_area .disqus .disqus-widget .count {
  86 + position: relative;
  87 + height: 18px;
  88 + border: 1px solid #bbb;
  89 + background: white;
  90 + border-radius: 3px;
  91 + text-align: center;
  92 +}
  93 +.social_share_privacy_area .disqus .disqus-widget .count a {
  94 + font-weight: normal;
  95 +}
  96 +.social_share_privacy_area.line .disqus .disqus-widget .count {
  97 + margin-left: 4px;
  98 + min-width: 1em;
  99 +}
  100 +.social_share_privacy_area.box .disqus .disqus-widget .count {
  101 + height: 34px;
  102 + line-height: 34px;
  103 + font-size: 14px;
  104 + margin-bottom: 5px;
  105 +}
  106 +.social_share_privacy_area.line .disqus .disqus-widget .count u,
  107 +.social_share_privacy_area.line .disqus .disqus-widget .count i {
  108 + position: absolute;
  109 + zoom: 1;
  110 + line-height: 0;
  111 + width: 0;
  112 + height: 0;
  113 + left: 0;
  114 + top: 50%;
  115 + margin: -4px 0 0 -4px;
  116 + border: 4px transparent solid;
  117 + border-right-color: #aaa;
  118 + border-left: 0;
  119 +}
  120 +.social_share_privacy_area.line .disqus .disqus-widget .count u {
  121 + margin-left: -3px;
  122 + border-right-color: #fff;
  123 +}
  124 +.social_share_privacy_area.box .disqus .disqus-widget .count u,
  125 +.social_share_privacy_area.box .disqus .disqus-widget .count i {
  126 + position: absolute;
  127 + zoom: 1;
  128 + line-height: 0;
  129 + top: auto;
  130 + left: 50%;
  131 + bottom: 0;
  132 + right: auto;
  133 + margin: 0 0 -4px -4px;
  134 + border: 4px transparent solid;
  135 + border-top-color: #aaa;
  136 + border-bottom: 0;
  137 + width: 0;
  138 + height: 0;
  139 +}
  140 +.social_share_privacy_area.box .disqus .disqus-widget .count u {
  141 + margin-bottom: -3px;
  142 + border-top-color: #fff;
  143 +}
  144 +.social_share_privacy_area .disqus .disqus-widget .count a {
  145 + color: #333;
  146 + text-decoration: none;
  147 +}
  148 +.social_share_privacy_area .disqus .disqus-widget .count a:hover {
  149 + color: #333;
  150 + text-decoration: underline;
  151 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/facebook.css 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +.social_share_privacy_area.line .facebook .fb_like {
  2 + width: 120px;
  3 +}
  4 +.social_share_privacy_area.line .facebook iframe {
  5 + width: 120px;
  6 + height: 21px;
  7 +}
  8 +.social_share_privacy_area.box .facebook iframe {
  9 + width: 62px;
  10 + height: 62px;
  11 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/flattr.css 0 → 100644
@@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
  1 +.social_share_privacy_area.line .flattr img {
  2 + width: 72px;
  3 + height: 20px;
  4 + margin-right: 48px;
  5 +}
  6 +.social_share_privacy_area.line .flattr a,
  7 +.social_share_privacy_area.line .flattr iframe {
  8 + width: 110px;
  9 + height: 20px;
  10 + margin-right: 10px;
  11 +}
  12 +.social_share_privacy_area.line .flattr a {
  13 + display: inline-block;
  14 +}
  15 +.social_share_privacy_area.box .flattr a,
  16 +.social_share_privacy_area.box .flattr img,
  17 +.social_share_privacy_area.box .flattr iframe {
  18 + width: 62px;
  19 + height: 62px;
  20 +}
  21 +.social_share_privacy_area.box .flattr a {
  22 + display: block;
  23 + visibility: hidden;
  24 + margin: auto;
  25 +}
  26 +.social_share_privacy_area.box .flattr .dummy_btn {
  27 + min-width: 62px;
  28 + min-height: 67px;
  29 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/gplus.css 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +.social_share_privacy_area.line .gplus img.gplusone_privacy_dummy {
  2 + width: 32px;
  3 +}
  4 +.social_share_privacy_area.line li div.gplusone {
  5 + width: 90px;
  6 +}
  7 +.social_share_privacy_area.box li div.gplusone {
  8 + min-width: 50px;
  9 + min-height: 65px;
  10 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/hackernews.css 0 → 100644
@@ -0,0 +1,128 @@ @@ -0,0 +1,128 @@
  1 +.social_share_privacy_area.line .hackernews img.privacy_dummy {
  2 + width: 20px;
  3 + height: 20px;
  4 + margin-right: 70px;
  5 +}
  6 +.social_share_privacy_area.box .hackernews img.privacy_dummy {
  7 + width: 62px;
  8 + height: 62px;
  9 +}
  10 +.social_share_privacy_area .hackernews .hackernews-widget {
  11 + line-height: 20px;
  12 + font-size: 11px;
  13 + font-family: Arial, sans-serif;
  14 + cursor: text;
  15 + white-space: nowrap;
  16 + text-align: left;
  17 +}
  18 +.social_share_privacy_area .hackernews .hackernews-widget a.name {
  19 + overflow: hidden;
  20 + font-weight: bold;
  21 + font-size: 12px;
  22 + text-decoration: none;
  23 + text-align: center;
  24 + color: #ffffff;
  25 + height: 20px;
  26 + border-radius: 3px;
  27 + background-color: #ff6600;
  28 +}
  29 +.social_share_privacy_area.line .hackernews .hackernews-widget {
  30 + min-width: 90px;
  31 +}
  32 +.social_share_privacy_area.line .hackernews .hackernews-widget .points {
  33 + display: inline-block;
  34 + padding: 0px 4px;
  35 + vertical-align: top;
  36 +}
  37 +.social_share_privacy_area.line .hackernews .hackernews-widget a.name {
  38 + display: inline-block;
  39 + width: 20px;
  40 +}
  41 +.social_share_privacy_area.box .hackernews .hackernews-widget {
  42 + display: block;
  43 + width: 62px;
  44 + height: 62px;
  45 + margin: auto;
  46 +}
  47 +.social_share_privacy_area.box .hackernews .hackernews-widget a.name {
  48 + display: block;
  49 + width: 62px;
  50 +}
  51 +.social_share_privacy_area .hackernews .hackernews-widget a.name:hover {
  52 + background-color: #ff8635;
  53 +}
  54 +.social_share_privacy_area .hackernews .hackernews-widget a.name:active {
  55 + background-color: #ff8635;
  56 + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);
  57 + -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);
  58 + box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);
  59 +}
  60 +.social_share_privacy_area .hackernews .hackernews-widget .points {
  61 + position: relative;
  62 + height: 18px;
  63 + border: 1px solid #bbb;
  64 + background: white;
  65 + border-radius: 3px;
  66 + text-align: center;
  67 +}
  68 +.social_share_privacy_area .hackernews .hackernews-widget .points a {
  69 + font-weight: normal;
  70 +}
  71 +.social_share_privacy_area.line .hackernews .hackernews-widget .points {
  72 + margin-left: 4px;
  73 + min-width: 1em;
  74 +}
  75 +.social_share_privacy_area.box .hackernews .hackernews-widget .points {
  76 + display: block;
  77 + width: 60px;
  78 + height: 35px;
  79 + line-height: 35px;
  80 + font-size: 14px;
  81 + margin-bottom: 5px;
  82 +}
  83 +.social_share_privacy_area.line .hackernews .hackernews-widget .points u,
  84 +.social_share_privacy_area.line .hackernews .hackernews-widget .points i {
  85 + position: absolute;
  86 + zoom: 1;
  87 + line-height: 0;
  88 + width: 0;
  89 + height: 0;
  90 + left: 0;
  91 + top: 50%;
  92 + margin: -4px 0 0 -4px;
  93 + border: 4px transparent solid;
  94 + border-right-color: #aaa;
  95 + border-left: 0;
  96 +}
  97 +.social_share_privacy_area.line .hackernews .hackernews-widget .points u {
  98 + margin-left: -3px;
  99 + border-right-color: #fff;
  100 +}
  101 +.social_share_privacy_area.box .hackernews .hackernews-widget .points u,
  102 +.social_share_privacy_area.box .hackernews .hackernews-widget .points i {
  103 + position: absolute;
  104 + zoom: 1;
  105 + line-height: 0;
  106 + top: auto;
  107 + left: 50%;
  108 + bottom: 0;
  109 + right: auto;
  110 + margin: 0 0 -4px -4px;
  111 + border: 4px transparent solid;
  112 + border-top-color: #aaa;
  113 + border-bottom: 0;
  114 + width: 0;
  115 + height: 0;
  116 +}
  117 +.social_share_privacy_area.box .hackernews .hackernews-widget .points u {
  118 + margin-bottom: -3px;
  119 + border-top-color: #fff;
  120 +}
  121 +.social_share_privacy_area .hackernews .hackernews-widget .points a {
  122 + color: #333;
  123 + text-decoration: none;
  124 +}
  125 +.social_share_privacy_area .hackernews .hackernews-widget .points a:hover {
  126 + color: #333;
  127 + text-decoration: underline;
  128 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/linkedin.css 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +.social_share_privacy_area.line .linkedin img.linkedin_privacy_dummy {
  2 + width: 63px;
  3 + height: 20px;
  4 +}
  5 +.social_share_privacy_area.box .linkedin img.linkedin_privacy_dummy {
  6 + width: 61px;
  7 + height: 62px;
  8 +}
  9 +.social_share_privacy_area.box .linkedin .dummy_btn {
  10 + min-width: 61px;
  11 + min-height: 62px;
  12 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/mail.css 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +.social_share_privacy_area.line .mail a {
  2 + display: inline-block;
  3 + width: 43px;
  4 + height: 20px;
  5 + margin-right: 20px;
  6 +}
  7 +.social_share_privacy_area.box .mail a {
  8 + display: block;
  9 + margin: auto;
  10 + width: 58px;
  11 + height: 39px;
  12 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/pinterest.css 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +.social_share_privacy_area.line li div.pinit {
  2 + width: 100px;
  3 +}
  4 +.social_share_privacy_area.box .pinterest .dummy_btn.pinit a {
  5 + /* pinterest style bugfix */
  6 + margin-top: 29px!important;
  7 +}
  8 +.social_share_privacy_area.line .pinterest .dummy_btn img.privacy_dummy {
  9 + width: 40px;
  10 + height: 20px;
  11 +}
  12 +.social_share_privacy_area.box .pinterest .dummy_btn img.privacy_dummy {
  13 + width: 40px;
  14 + height: 50px;
  15 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/reddit.css 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +.social_share_privacy_area.line .reddit iframe {
  2 + width: 120px;
  3 + height: 18px;
  4 +}
  5 +.social_share_privacy_area.box .reddit iframe {
  6 + width: 58px;
  7 + height: 66px;
  8 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/stumbleupon.css 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +.social_share_privacy_area.line .stumbleupon iframe,
  2 +.social_share_privacy_area.line .stumbleupon img {
  3 + width: 74px;
  4 + height: 18px;
  5 +}
  6 +.social_share_privacy_area.box .stumbleupon iframe,
  7 +.social_share_privacy_area.box .stumbleupon img {
  8 + width: 50px;
  9 + height: 60px;
  10 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/tumblr.css 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +.social_share_privacy_area.line .tumblr a {
  2 + display: inline-block;
  3 + width: 81px;
  4 + height: 20px;
  5 + margin-right: 20px;
  6 +}
  7 +.social_share_privacy_area.box .tumblr a {
  8 + display: block;
  9 + margin: auto;
  10 + width: 58px;
  11 + height: 58px;
  12 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/twitter.css 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +.social_share_privacy_area.line li div.tweet {
  2 + width: 115px;
  3 +}
  4 +.social_share_privacy_area.line .twitter iframe {
  5 + width: 120px;
  6 + height: 20px;
  7 +}
  8 +.social_share_privacy_area.box .twitter iframe {
  9 + width: 62px;
  10 + height: 62px;
  11 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/modules/xing.css 0 → 100644
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
  1 +.social_share_privacy_area.line .xing img.xing_privacy_dummy {
  2 + width: 55px;
  3 + height: 20px;
  4 + margin-right: 66px;
  5 +}
  6 +.social_share_privacy_area.box .xing img.xing_privacy_dummy {
  7 + width: 55px;
  8 + height: 62px;
  9 +}
  10 +.social_share_privacy_area.box .xing .dummy_btn {
  11 + min-width: 55px;
  12 + min-height: 62px;
  13 +}
  14 +.social_share_privacy_area.box .xing .dummy_btn div {
  15 + margin: auto;
  16 +}
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/socialshareprivacy.css 0 → 100644
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
  1 +@import url("common.css");
  2 +@import url("modules/buffer.css");
  3 +@import url("modules/delicious.css");
  4 +@import url("modules/disqus.css");
  5 +@import url("modules/facebook.css");
  6 +@import url("modules/flattr.css");
  7 +@import url("modules/gplus.css");
  8 +@import url("modules/hackernews.css");
  9 +@import url("modules/linkedin.css");
  10 +@import url("modules/mail.css");
  11 +@import url("modules/pinterest.css");
  12 +@import url("modules/reddit.css");
  13 +@import url("modules/stumbleupon.css");
  14 +@import url("modules/tumblr.css");
  15 +@import url("modules/twitter.css");
  16 +@import url("modules/xing.css");
plugins/social_share_privacy/public/stylesheets/common.css
@@ -1,231 +0,0 @@ @@ -1,231 +0,0 @@
1 -.social_share_privacy_area {  
2 - clear: both;  
3 - margin: 5px 0;  
4 - list-style-type: none;  
5 - padding: 0;  
6 - width: auto;  
7 - display: block;  
8 -}  
9 -.social_share_privacy_area.line {  
10 - height: 25px;  
11 - line-height: 16px;  
12 -}  
13 -.social_share_privacy_area.box {  
14 - width: 95px;  
15 -}  
16 -.social_share_privacy_area li {  
17 - margin: 0 !important;  
18 - padding: 0 !important;  
19 - list-style-type: none !important;  
20 -}  
21 -.social_share_privacy_area.box li {  
22 - text-align: center;  
23 -}  
24 -.social_share_privacy_area.line li {  
25 - height: 21px;  
26 - float: left;  
27 - width: 33%;  
28 -}  
29 -.social_share_privacy_area li .dummy_btn {  
30 - cursor: pointer;  
31 - padding: 0;  
32 - height: inherit;  
33 -}  
34 -.social_share_privacy_area.line li .dummy_btn {  
35 - float: left;  
36 - margin: 0 10px 0 10px;  
37 -}  
38 -.social_share_privacy_area.box li .dummy_btn {  
39 - margin-bottom: 10px;  
40 -}  
41 -.social_share_privacy_area li .dummy_btn img.privacy_dummy,  
42 -.social_share_privacy_area li .dummy_btn iframe {  
43 - vertical-align: bottom;  
44 -}  
45 -.social_share_privacy_area li .dummy_btn iframe {  
46 - overflow: hidden;  
47 - height: inherit;  
48 - width: inherit;  
49 - border-style: none;  
50 -}  
51 -.social_share_privacy_area.line li {  
52 - display: inline-block;  
53 -}  
54 -/* Switch begin */  
55 -.social_share_privacy_area li .switch {  
56 - display: inline-block;  
57 - text-indent: -9999em;  
58 - background: transparent url(../images/socialshareprivacy_on_off.png) no-repeat 0 0 scroll;  
59 - width: 23px;  
60 - height: 12px;  
61 - overflow: hidden;  
62 - margin: 4px 0 0;  
63 - padding: 0;  
64 - cursor: pointer;  
65 -}  
66 -.social_share_privacy_area.line li .switch {  
67 - float: left;  
68 -}  
69 -.social_share_privacy_area li .switch.on {  
70 - background-position: 0 -12px;  
71 -}  
72 -/* Switch end */  
73 -/* Tooltips begin */  
74 -.social_share_privacy_area li.help_info {  
75 - position: relative;  
76 -}  
77 -.social_share_privacy_area li.settings_info,  
78 -.social_share_privacy_area li.help_info .info {  
79 - text-align: left;  
80 -}  
81 -.social_share_privacy_area li.help_info .info,  
82 -.social_share_privacy_area li .help_info.icon .info {  
83 - display: none;  
84 - position: absolute;  
85 - bottom: 40px;  
86 - width: 290px;  
87 - padding: 10px 15px;  
88 - margin: 0;  
89 - font-size: 12px;  
90 - line-height: 16px;  
91 - font-weight: bold;  
92 - border: 1px solid #ccc;  
93 - -moz-border-radius: 4px;  
94 - -webkit-border-radius: 4px;  
95 - border-radius: 4px;  
96 - -moz-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);  
97 - -webkit-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);  
98 - box-shadow: 0px 0px 15px rgba(0,0,0,0.4);  
99 - background-color: #fdfbec;  
100 - color: #000;  
101 - z-index: 500;  
102 -}  
103 -.social_share_privacy_area.line li.help_info .info,  
104 -.social_share_privacy_area li .help_info.icon .info {  
105 - left: 0;  
106 -}  
107 -.social_share_privacy_area.box li.help_info .info {  
108 - left: 100%;  
109 - top: 0px;  
110 - bottom: auto;  
111 -}  
112 -.social_share_privacy_area li .help_info.icon .info {  
113 - width: 350px;  
114 -}  
115 -.social_share_privacy_area li.help_info.display .info,  
116 -.social_share_privacy_area li .help_info.icon.display .info {  
117 - display: block;  
118 -}  
119 -.social_share_privacy_area li.help_info.info_off.display .info {  
120 - display: none;  
121 -}  
122 -.social_share_privacy_area li .help_info.icon {  
123 - background: #fff url(../images/socialshareprivacy_info.png) no-repeat center center scroll;  
124 - width: 25px;  
125 - height: 20px;  
126 - position: relative;  
127 - display: inline-block;  
128 - vertical-align: top;  
129 - border: 2px solid #e7e3e3;  
130 - border-right-width: 0;  
131 - -moz-border-radius: 5px 0 0 5px;  
132 - -webkit-border-radius: 5px 0 0 5px;  
133 - border-radius: 5px 0 0 5px;  
134 - margin: 0;  
135 - padding: 0;  
136 -}  
137 -.social_share_privacy_area li.settings_info .settings_info_menu.perma_option_off .help_info.icon {  
138 - border-right-width: 2px;  
139 - -moz-border-radius: 5px;  
140 - -webkit-border-radius: 5px;  
141 - border-radius: 5px;  
142 -}  
143 -/* Tooltips end */  
144 -/* Settings/Info begin */  
145 -.social_share_privacy_area li.settings_info {  
146 - position: relative;  
147 - top: -2px;  
148 -}  
149 -.social_share_privacy_area li.settings_info a {  
150 - text-decoration: none;  
151 - margin: 0 !important;  
152 -}  
153 -.social_share_privacy_area li.settings_info .settings_info_menu {  
154 - background-color: #f3f4f5;  
155 - color: #000;  
156 - border-style: none;  
157 - -moz-border-radius: 5px;  
158 - -webkit-border-radius: 5px;  
159 - border-radius: 5px;  
160 - -moz-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);  
161 - -webkit-box-shadow: 0px 0px 15px rgba(0,0,0,0.4);  
162 - box-shadow: 0px 0px 15px rgba(0,0,0,0.4);  
163 - left: 0;  
164 - position: absolute;  
165 - top: 0;  
166 - min-width: 135px;  
167 - margin: 0;  
168 - padding: 0;  
169 -}  
170 -.social_share_privacy_area li.settings_info .settings_info_menu.on {  
171 - z-index: 1000;  
172 -}  
173 -.social_share_privacy_area li.settings_info .settings_info_menu.off {  
174 - border-width: 0;  
175 - -moz-box-shadow: none;  
176 - -webkit-box-shadow: none;  
177 - box-shadow: none;  
178 - background-color: transparent;  
179 -}  
180 -.social_share_privacy_area li.settings_info .settings_info_menu.off form {  
181 - display: none;  
182 - margin: 0;  
183 - padding: 0;  
184 -}  
185 -.social_share_privacy_area li.settings_info .settings_info_menu .settings {  
186 - text-indent: -9999em;  
187 - display: inline-block;  
188 - background: #fff url(../images/settings.png) no-repeat center center scroll;  
189 - width: 25px;  
190 - height: 20px;  
191 - border: 2px solid #e7e3e3;  
192 - -moz-border-radius: 0 5px 5px 0;  
193 - -webkit-border-radius: 0 5px 5px 0;  
194 - border-radius: 0 5px 5px 0;  
195 - border-left: 1px solid #ddd;  
196 - margin: 0;  
197 - padding: 0;  
198 -}  
199 -.social_share_privacy_area li.settings_info .settings_info_menu form fieldset {  
200 - border-width: 0;  
201 - margin: 0;  
202 - padding: 0 10px 10px;  
203 -}  
204 -.social_share_privacy_area li.settings_info .settings_info_menu form fieldset legend {  
205 - font-size: 11px;  
206 - font-weight: bold;  
207 - line-height: 14px;  
208 - margin: 0;  
209 - padding: 10px 0;  
210 - width: 115px;  
211 -}  
212 -.social_share_privacy_area li.settings_info .settings_info_menu form fieldset input {  
213 - margin: 4px 10px 4px 0;  
214 - padding: 0;  
215 -}  
216 -.social_share_privacy_area li.settings_info .settings_info_menu form fieldset label {  
217 - display: block;  
218 - font-size: 12px;  
219 - font-weight: bold;  
220 - line-height: 24px;  
221 - -moz-transition: color .5s ease-in;  
222 - -webkit-transition: color .5s ease-in;  
223 - transition: color .5s ease-in;  
224 - margin: 0;  
225 - padding: 0;  
226 - white-space: nowrap;  
227 -}  
228 -.social_share_privacy_area li.settings_info .settings_info_menu form fieldset label.checked {  
229 - color: #090;  
230 -}  
231 -/* Settings/Info end */  
plugins/social_share_privacy/public/stylesheets/modules/buffer.css
@@ -1,14 +0,0 @@ @@ -1,14 +0,0 @@
1 -.social_share_privacy_area.line .buffer iframe {  
2 - width: 110px;  
3 - height: 20px;  
4 -}  
5 -.social_share_privacy_area.line .buffer img {  
6 - width: 55px;  
7 - height: 20px;  
8 - margin-right: 55px;  
9 -}  
10 -.social_share_privacy_area.box .buffer iframe,  
11 -.social_share_privacy_area.box .buffer img {  
12 - width: 55px;  
13 - height: 62px;  
14 -}  
plugins/social_share_privacy/public/stylesheets/modules/delicious.css
@@ -1,155 +0,0 @@ @@ -1,155 +0,0 @@
1 -/* Delicious Button v1.1  
2 -Blog : http://www.moretechtips.net  
3 -Project: http://code.google.com/p/delicious-button/  
4 -Copyright 2010 [Mike @ moretechtips.net]  
5 -Licensed under the Apache License, Version 2.0  
6 -(the "License"); you may not use this file except in compliance with the License.  
7 -You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 */  
8 -.social_share_privacy_area.box .delicious .delicious-widget,  
9 -.social_share_privacy_area.box .delicious img.privacy_dummy {  
10 - width: 50px;  
11 - height: 62px;  
12 -}  
13 -.social_share_privacy_area.line .delicious .delicious-widget,  
14 -.social_share_privacy_area.line .delicious img.privacy_dummy {  
15 - width: 75px;  
16 - height: 20px;  
17 - margin-right: 20px;  
18 -}  
19 -.social_share_privacy_area.box .delicious div.delicious-widget {  
20 - font-family:Arial,Tahoma,Sans-Serif;  
21 - font-size:11px;  
22 - width:50px;  
23 - margin: 0 auto;  
24 -}  
25 -.social_share_privacy_area.box .delicious a.icon,  
26 -.social_share_privacy_area.box .delicious a.count {  
27 - color:#FFF!important;  
28 - display:block;  
29 - -webkit-border-radius:3px;  
30 - -moz-border-radius:3px;  
31 - -o-border-radius:3px;  
32 - border-radius:3px;  
33 - outline:none!important;  
34 - text-decoration:none!important;  
35 -}  
36 -.social_share_privacy_area.box .delicious a.icon {  
37 - background:#fff;  
38 - border:1px solid #ccc;  
39 - height:38px;  
40 - overflow:hidden;  
41 - position:relative;  
42 - direction:ltr;  
43 -}  
44 -.social_share_privacy_area.box .delicious a.icon:hover {  
45 - border-color:#666;  
46 -}  
47 -.social_share_privacy_area.box .delicious a.count {  
48 - margin-top:2px;  
49 - text-align:center;  
50 - font-size:12px;  
51 - line-height:18px;  
52 - height:18px;  
53 - background:#3274D0;  
54 - border:#3274D0 1px solid;  
55 - text-shadow:#2A5580 1px 1px 0;  
56 -}  
57 -.social_share_privacy_area.box .delicious a.count:hover {  
58 - background:#369;  
59 - border-color:#369;  
60 -}  
61 -.social_share_privacy_area.box .delicious a.count:active {  
62 - background:#000;  
63 - border:#333 1px solid;  
64 - text-shadow:#222 1px 1px 0;  
65 - outline:none;  
66 -}  
67 -.social_share_privacy_area.line .delicious div.delicious-widget {  
68 - font-family:Arial,Tahoma,Sans-Serif;  
69 - font-size:11px;  
70 - width:76px;  
71 -}  
72 -.social_share_privacy_area.line .delicious a.icon,  
73 -.social_share_privacy_area.line .delicious a.count {  
74 - display:block;  
75 - float:left;  
76 - line-height:18px;  
77 - border:#666 solid 1px;  
78 - -webkit-border-radius:3px;  
79 - -moz-border-radius:3px;  
80 - -o-border-radius:3px;  
81 - border-radius:3px;  
82 - outline:none!important;  
83 - text-decoration:none!important;  
84 - height:18px;  
85 - overflow:hidden;  
86 - color:#FFF!important;  
87 -}  
88 -.social_share_privacy_area.line .delicious a.icon {  
89 - background:#fff;  
90 - border-color:#ccc;  
91 - width:20px;  
92 - position:relative;  
93 - direction:ltr;  
94 - margin-right:1px;  
95 -}  
96 -.social_share_privacy_area.line .delicious a.icon:hover {  
97 - border-color:#666;  
98 -}  
99 -.social_share_privacy_area.line .delicious a.count {  
100 - font-size:12px;  
101 - background:#3274D0;  
102 - border-color:#3274D0;  
103 - width:50px;  
104 - text-align:center;  
105 - text-shadow:#2A5580 1px 1px 0;  
106 -}  
107 -.social_share_privacy_area.line .delicious a.count:hover {  
108 - background:#369;  
109 - border-color:#369;  
110 - text-shadow:#369 1px 1px 0;  
111 -}  
112 -.social_share_privacy_area.line .delicious a.count:active {  
113 - background:#000;  
114 - border-color:#333;  
115 - text-shadow:#222 1px 1px 0;  
116 -}  
117 -.social_share_privacy_area.box .delicious a.icon:hover *,  
118 -.social_share_privacy_area.line .delicious a.icon:hover * {  
119 - opacity:0.85;  
120 - filter:alpha(opacity=85);  
121 -}  
122 -.social_share_privacy_area.box .delicious a.icon *,  
123 -.social_share_privacy_area.line .delicious a.icon * {  
124 - width:50%;  
125 - height:50%;  
126 - position:absolute;  
127 - margin:0!important;  
128 -}  
129 -.social_share_privacy_area.box .delicious div.delicious1,  
130 -.social_share_privacy_area.line .delicious div.delicious1 {  
131 - background:#3274D0;  
132 - left:50%;  
133 - top:0;  
134 -}  
135 -.social_share_privacy_area.box .delicious div.delicious2,  
136 -.social_share_privacy_area.line .delicious div.delicious2 {  
137 - background:#000;  
138 - left:0;  
139 - top:50%;  
140 -}  
141 -.social_share_privacy_area.box .delicious div.delicious3,  
142 -.social_share_privacy_area.line .delicious div.delicious3 {  
143 - background:#D3D2D2;  
144 - left:50%;  
145 - top:50%;  
146 -}  
147 -.social_share_privacy_area.box .delicious a.count i,  
148 -.social_share_privacy_area.line .delicious a.count i {  
149 - display:none;  
150 - font-style:normal;  
151 -}  
152 -.social_share_privacy_area.box .delicious a.count b,  
153 -.social_share_privacy_area.line .delicious a.count b {  
154 - font-weight:normal;  
155 -}  
plugins/social_share_privacy/public/stylesheets/modules/disqus.css
@@ -1,151 +0,0 @@ @@ -1,151 +0,0 @@
1 -.social_share_privacy_area.line .disqus img.privacy_dummy {  
2 - width: 49px;  
3 - height: 20px;  
4 - margin-right: 45px;  
5 -}  
6 -.social_share_privacy_area.box .disqus img.privacy_dummy {  
7 - width: 55px;  
8 - height: 61px;  
9 -}  
10 -.social_share_privacy_area .disqus .disqus-widget {  
11 - line-height: 20px;  
12 - font-size: 11px;  
13 - font-family: Arial, sans-serif;  
14 - cursor: text;  
15 - white-space: nowrap;  
16 - text-align: left;  
17 -}  
18 -.social_share_privacy_area .disqus .disqus-widget a,  
19 -.social_share_privacy_area .disqus .disqus-widget a:hover {  
20 - -webkit-text-shadow: none;  
21 - -moz-text-shadow: none;  
22 - -ms-text-shadow: none;  
23 - -o-text-shadow: none;  
24 - text-shadow: none;  
25 -}  
26 -.social_share_privacy_area .disqus .disqus-widget a.name {  
27 - overflow: hidden;  
28 - font-weight: bold;  
29 - text-transform: uppercase;  
30 - text-decoration: none;  
31 - color: #5E8BA9;  
32 - -webkit-text-shadow: 0 1px 0 rgba(255,255,255,0.5);  
33 - -moz-text-shadow: 0 1px 0 rgba(255,255,255,0.5);  
34 - -ms-text-shadow: 0 1px 0 rgba(255,255,255,0.5);  
35 - -o-text-shadow: 0 1px 0 rgba(255,255,255,0.5);  
36 - text-shadow: 0 1px 0 rgba(255,255,255,0.5);  
37 - height: 18px;  
38 - border: 1px solid #ccc;  
39 - border-radius: 3px;  
40 - background-color: #f8f8f8;  
41 - background-image: -webkit-gradient(linear,left top,left bottom,from(#fff),to(#dedede));  
42 - background-image: -moz-linear-gradient(top,#fff,#dedede);  
43 - background-image: -o-linear-gradient(top,#fff,#dedede);  
44 - background-image: -ms-linear-gradient(top,#fff,#dedede);  
45 - background-image: linear-gradient(top,#fff,#dedede);  
46 -}  
47 -.social_share_privacy_area .disqus .disqus-widget a.name .us {  
48 - color: #b84;  
49 -}  
50 -.social_share_privacy_area.line .disqus .disqus-widget {  
51 - min-width: 94px;  
52 -}  
53 -.social_share_privacy_area.line .disqus .disqus-widget .count,  
54 -.social_share_privacy_area.line .disqus .disqus-widget a.name {  
55 - display: inline-block;  
56 - padding: 0px 4px;  
57 - vertical-align: top;  
58 -}  
59 -.social_share_privacy_area.box .disqus .disqus-widget {  
60 - display: block;  
61 - width: 55px;  
62 - height: 61px;  
63 - margin: auto;  
64 -}  
65 -.social_share_privacy_area.box .disqus .disqus-widget .count,  
66 -.social_share_privacy_area.box .disqus .disqus-widget a.name {  
67 - display: block;  
68 - width: 53px;  
69 - text-align: center;  
70 -}  
71 -.social_share_privacy_area .disqus .disqus-widget a.name:hover {  
72 - border-color: #bbb;  
73 - background-image: -webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#d9d9d9));  
74 - background-image: -moz-linear-gradient(top,#f8f8f8,#d9d9d9);  
75 - background-image: -o-linear-gradient(top,#f8f8f8,#d9d9d9);  
76 - background-image: -ms-linear-gradient(top,#f8f8f8,#d9d9d9);  
77 - background-image: linear-gradient(top,#f8f8f8,#d9d9d9);  
78 -}  
79 -.social_share_privacy_area .disqus .disqus-widget a.name:active {  
80 - background-color: #efefef;  
81 - -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);  
82 - -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);  
83 - box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);  
84 -}  
85 -.social_share_privacy_area .disqus .disqus-widget .count {  
86 - position: relative;  
87 - height: 18px;  
88 - border: 1px solid #bbb;  
89 - background: white;  
90 - border-radius: 3px;  
91 - text-align: center;  
92 -}  
93 -.social_share_privacy_area .disqus .disqus-widget .count a {  
94 - font-weight: normal;  
95 -}  
96 -.social_share_privacy_area.line .disqus .disqus-widget .count {  
97 - margin-left: 4px;  
98 - min-width: 1em;  
99 -}  
100 -.social_share_privacy_area.box .disqus .disqus-widget .count {  
101 - height: 34px;  
102 - line-height: 34px;  
103 - font-size: 14px;  
104 - margin-bottom: 5px;  
105 -}  
106 -.social_share_privacy_area.line .disqus .disqus-widget .count u,  
107 -.social_share_privacy_area.line .disqus .disqus-widget .count i {  
108 - position: absolute;  
109 - zoom: 1;  
110 - line-height: 0;  
111 - width: 0;  
112 - height: 0;  
113 - left: 0;  
114 - top: 50%;  
115 - margin: -4px 0 0 -4px;  
116 - border: 4px transparent solid;  
117 - border-right-color: #aaa;  
118 - border-left: 0;  
119 -}  
120 -.social_share_privacy_area.line .disqus .disqus-widget .count u {  
121 - margin-left: -3px;  
122 - border-right-color: #fff;  
123 -}  
124 -.social_share_privacy_area.box .disqus .disqus-widget .count u,  
125 -.social_share_privacy_area.box .disqus .disqus-widget .count i {  
126 - position: absolute;  
127 - zoom: 1;  
128 - line-height: 0;  
129 - top: auto;  
130 - left: 50%;  
131 - bottom: 0;  
132 - right: auto;  
133 - margin: 0 0 -4px -4px;  
134 - border: 4px transparent solid;  
135 - border-top-color: #aaa;  
136 - border-bottom: 0;  
137 - width: 0;  
138 - height: 0;  
139 -}  
140 -.social_share_privacy_area.box .disqus .disqus-widget .count u {  
141 - margin-bottom: -3px;  
142 - border-top-color: #fff;  
143 -}  
144 -.social_share_privacy_area .disqus .disqus-widget .count a {  
145 - color: #333;  
146 - text-decoration: none;  
147 -}  
148 -.social_share_privacy_area .disqus .disqus-widget .count a:hover {  
149 - color: #333;  
150 - text-decoration: underline;  
151 -}  
plugins/social_share_privacy/public/stylesheets/modules/facebook.css
@@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
1 -.social_share_privacy_area.line .facebook .fb_like {  
2 - width: 120px;  
3 -}  
4 -.social_share_privacy_area.line .facebook iframe {  
5 - width: 120px;  
6 - height: 21px;  
7 -}  
8 -.social_share_privacy_area.box .facebook iframe {  
9 - width: 62px;  
10 - height: 62px;  
11 -}  
plugins/social_share_privacy/public/stylesheets/modules/flattr.css
@@ -1,29 +0,0 @@ @@ -1,29 +0,0 @@
1 -.social_share_privacy_area.line .flattr img {  
2 - width: 72px;  
3 - height: 20px;  
4 - margin-right: 48px;  
5 -}  
6 -.social_share_privacy_area.line .flattr a,  
7 -.social_share_privacy_area.line .flattr iframe {  
8 - width: 110px;  
9 - height: 20px;  
10 - margin-right: 10px;  
11 -}  
12 -.social_share_privacy_area.line .flattr a {  
13 - display: inline-block;  
14 -}  
15 -.social_share_privacy_area.box .flattr a,  
16 -.social_share_privacy_area.box .flattr img,  
17 -.social_share_privacy_area.box .flattr iframe {  
18 - width: 62px;  
19 - height: 62px;  
20 -}  
21 -.social_share_privacy_area.box .flattr a {  
22 - display: block;  
23 - visibility: hidden;  
24 - margin: auto;  
25 -}  
26 -.social_share_privacy_area.box .flattr .dummy_btn {  
27 - min-width: 62px;  
28 - min-height: 67px;  
29 -}  
plugins/social_share_privacy/public/stylesheets/modules/gplus.css
@@ -1,10 +0,0 @@ @@ -1,10 +0,0 @@
1 -.social_share_privacy_area.line .gplus img.gplusone_privacy_dummy {  
2 - width: 32px;  
3 -}  
4 -.social_share_privacy_area.line li div.gplusone {  
5 - width: 90px;  
6 -}  
7 -.social_share_privacy_area.box li div.gplusone {  
8 - min-width: 50px;  
9 - min-height: 65px;  
10 -}  
plugins/social_share_privacy/public/stylesheets/modules/hackernews.css
@@ -1,128 +0,0 @@ @@ -1,128 +0,0 @@
1 -.social_share_privacy_area.line .hackernews img.privacy_dummy {  
2 - width: 20px;  
3 - height: 20px;  
4 - margin-right: 70px;  
5 -}  
6 -.social_share_privacy_area.box .hackernews img.privacy_dummy {  
7 - width: 62px;  
8 - height: 62px;  
9 -}  
10 -.social_share_privacy_area .hackernews .hackernews-widget {  
11 - line-height: 20px;  
12 - font-size: 11px;  
13 - font-family: Arial, sans-serif;  
14 - cursor: text;  
15 - white-space: nowrap;  
16 - text-align: left;  
17 -}  
18 -.social_share_privacy_area .hackernews .hackernews-widget a.name {  
19 - overflow: hidden;  
20 - font-weight: bold;  
21 - font-size: 12px;  
22 - text-decoration: none;  
23 - text-align: center;  
24 - color: #ffffff;  
25 - height: 20px;  
26 - border-radius: 3px;  
27 - background-color: #ff6600;  
28 -}  
29 -.social_share_privacy_area.line .hackernews .hackernews-widget {  
30 - min-width: 90px;  
31 -}  
32 -.social_share_privacy_area.line .hackernews .hackernews-widget .points {  
33 - display: inline-block;  
34 - padding: 0px 4px;  
35 - vertical-align: top;  
36 -}  
37 -.social_share_privacy_area.line .hackernews .hackernews-widget a.name {  
38 - display: inline-block;  
39 - width: 20px;  
40 -}  
41 -.social_share_privacy_area.box .hackernews .hackernews-widget {  
42 - display: block;  
43 - width: 62px;  
44 - height: 62px;  
45 - margin: auto;  
46 -}  
47 -.social_share_privacy_area.box .hackernews .hackernews-widget a.name {  
48 - display: block;  
49 - width: 62px;  
50 -}  
51 -.social_share_privacy_area .hackernews .hackernews-widget a.name:hover {  
52 - background-color: #ff8635;  
53 -}  
54 -.social_share_privacy_area .hackernews .hackernews-widget a.name:active {  
55 - background-color: #ff8635;  
56 - -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);  
57 - -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);  
58 - box-shadow: inset 0 3px 5px rgba(0,0,0,0.1);  
59 -}  
60 -.social_share_privacy_area .hackernews .hackernews-widget .points {  
61 - position: relative;  
62 - height: 18px;  
63 - border: 1px solid #bbb;  
64 - background: white;  
65 - border-radius: 3px;  
66 - text-align: center;  
67 -}  
68 -.social_share_privacy_area .hackernews .hackernews-widget .points a {  
69 - font-weight: normal;  
70 -}  
71 -.social_share_privacy_area.line .hackernews .hackernews-widget .points {  
72 - margin-left: 4px;  
73 - min-width: 1em;  
74 -}  
75 -.social_share_privacy_area.box .hackernews .hackernews-widget .points {  
76 - display: block;  
77 - width: 60px;  
78 - height: 35px;  
79 - line-height: 35px;  
80 - font-size: 14px;  
81 - margin-bottom: 5px;  
82 -}  
83 -.social_share_privacy_area.line .hackernews .hackernews-widget .points u,  
84 -.social_share_privacy_area.line .hackernews .hackernews-widget .points i {  
85 - position: absolute;  
86 - zoom: 1;  
87 - line-height: 0;  
88 - width: 0;  
89 - height: 0;  
90 - left: 0;  
91 - top: 50%;  
92 - margin: -4px 0 0 -4px;  
93 - border: 4px transparent solid;  
94 - border-right-color: #aaa;  
95 - border-left: 0;  
96 -}  
97 -.social_share_privacy_area.line .hackernews .hackernews-widget .points u {  
98 - margin-left: -3px;  
99 - border-right-color: #fff;  
100 -}  
101 -.social_share_privacy_area.box .hackernews .hackernews-widget .points u,  
102 -.social_share_privacy_area.box .hackernews .hackernews-widget .points i {  
103 - position: absolute;  
104 - zoom: 1;  
105 - line-height: 0;  
106 - top: auto;  
107 - left: 50%;  
108 - bottom: 0;  
109 - right: auto;  
110 - margin: 0 0 -4px -4px;  
111 - border: 4px transparent solid;  
112 - border-top-color: #aaa;  
113 - border-bottom: 0;  
114 - width: 0;  
115 - height: 0;  
116 -}  
117 -.social_share_privacy_area.box .hackernews .hackernews-widget .points u {  
118 - margin-bottom: -3px;  
119 - border-top-color: #fff;  
120 -}  
121 -.social_share_privacy_area .hackernews .hackernews-widget .points a {  
122 - color: #333;  
123 - text-decoration: none;  
124 -}  
125 -.social_share_privacy_area .hackernews .hackernews-widget .points a:hover {  
126 - color: #333;  
127 - text-decoration: underline;  
128 -}  
plugins/social_share_privacy/public/stylesheets/modules/linkedin.css
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -.social_share_privacy_area.line .linkedin img.linkedin_privacy_dummy {  
2 - width: 63px;  
3 - height: 20px;  
4 -}  
5 -.social_share_privacy_area.box .linkedin img.linkedin_privacy_dummy {  
6 - width: 61px;  
7 - height: 62px;  
8 -}  
9 -.social_share_privacy_area.box .linkedin .dummy_btn {  
10 - min-width: 61px;  
11 - min-height: 62px;  
12 -}  
plugins/social_share_privacy/public/stylesheets/modules/mail.css
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -.social_share_privacy_area.line .mail a {  
2 - display: inline-block;  
3 - width: 43px;  
4 - height: 20px;  
5 - margin-right: 20px;  
6 -}  
7 -.social_share_privacy_area.box .mail a {  
8 - display: block;  
9 - margin: auto;  
10 - width: 58px;  
11 - height: 39px;  
12 -}  
plugins/social_share_privacy/public/stylesheets/modules/pinterest.css
@@ -1,15 +0,0 @@ @@ -1,15 +0,0 @@
1 -.social_share_privacy_area.line li div.pinit {  
2 - width: 100px;  
3 -}  
4 -.social_share_privacy_area.box .pinterest .dummy_btn.pinit a {  
5 - /* pinterest style bugfix */  
6 - margin-top: 29px!important;  
7 -}  
8 -.social_share_privacy_area.line .pinterest .dummy_btn img.privacy_dummy {  
9 - width: 40px;  
10 - height: 20px;  
11 -}  
12 -.social_share_privacy_area.box .pinterest .dummy_btn img.privacy_dummy {  
13 - width: 40px;  
14 - height: 50px;  
15 -}  
plugins/social_share_privacy/public/stylesheets/modules/reddit.css
@@ -1,8 +0,0 @@ @@ -1,8 +0,0 @@
1 -.social_share_privacy_area.line .reddit iframe {  
2 - width: 120px;  
3 - height: 18px;  
4 -}  
5 -.social_share_privacy_area.box .reddit iframe {  
6 - width: 58px;  
7 - height: 66px;  
8 -}  
plugins/social_share_privacy/public/stylesheets/modules/stumbleupon.css
@@ -1,10 +0,0 @@ @@ -1,10 +0,0 @@
1 -.social_share_privacy_area.line .stumbleupon iframe,  
2 -.social_share_privacy_area.line .stumbleupon img {  
3 - width: 74px;  
4 - height: 18px;  
5 -}  
6 -.social_share_privacy_area.box .stumbleupon iframe,  
7 -.social_share_privacy_area.box .stumbleupon img {  
8 - width: 50px;  
9 - height: 60px;  
10 -}  
plugins/social_share_privacy/public/stylesheets/modules/tumblr.css
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -.social_share_privacy_area.line .tumblr a {  
2 - display: inline-block;  
3 - width: 81px;  
4 - height: 20px;  
5 - margin-right: 20px;  
6 -}  
7 -.social_share_privacy_area.box .tumblr a {  
8 - display: block;  
9 - margin: auto;  
10 - width: 58px;  
11 - height: 58px;  
12 -}  
plugins/social_share_privacy/public/stylesheets/modules/twitter.css
@@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
1 -.social_share_privacy_area.line li div.tweet {  
2 - width: 115px;  
3 -}  
4 -.social_share_privacy_area.line .twitter iframe {  
5 - width: 120px;  
6 - height: 20px;  
7 -}  
8 -.social_share_privacy_area.box .twitter iframe {  
9 - width: 62px;  
10 - height: 62px;  
11 -}  
plugins/social_share_privacy/public/stylesheets/modules/xing.css
@@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
1 -.social_share_privacy_area.line .xing img.xing_privacy_dummy {  
2 - width: 55px;  
3 - height: 20px;  
4 - margin-right: 66px;  
5 -}  
6 -.social_share_privacy_area.box .xing img.xing_privacy_dummy {  
7 - width: 55px;  
8 - height: 62px;  
9 -}  
10 -.social_share_privacy_area.box .xing .dummy_btn {  
11 - min-width: 55px;  
12 - min-height: 62px;  
13 -}  
14 -.social_share_privacy_area.box .xing .dummy_btn div {  
15 - margin: auto;  
16 -}  
plugins/social_share_privacy/public/stylesheets/socialshareprivacy.css
@@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
1 -@import url("common.css");  
2 -@import url("modules/buffer.css");  
3 -@import url("modules/delicious.css");  
4 -@import url("modules/disqus.css");  
5 -@import url("modules/facebook.css");  
6 -@import url("modules/flattr.css");  
7 -@import url("modules/gplus.css");  
8 -@import url("modules/hackernews.css");  
9 -@import url("modules/linkedin.css");  
10 -@import url("modules/mail.css");  
11 -@import url("modules/pinterest.css");  
12 -@import url("modules/reddit.css");  
13 -@import url("modules/stumbleupon.css");  
14 -@import url("modules/tumblr.css");  
15 -@import url("modules/twitter.css");  
16 -@import url("modules/xing.css");  
plugins/social_share_privacy/test/functional/content_viewer_controller_test.rb 0 → 100644
@@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +require File.dirname(__FILE__) + '/../../../../app/controllers/public/invite_controller'
  3 +
  4 +# Re-raise errors caught by the controller.
  5 +class ContentViewerController; def rescue_action(e) raise e end; end
  6 +
  7 +class ContentViewerControllerTest < ActionController::TestCase
  8 +
  9 + def setup
  10 + @controller = ContentViewerController.new
  11 + @request = ActionController::TestRequest.new
  12 + @response = ActionController::TestResponse.new
  13 +
  14 + @profile = create_user('testinguser').person
  15 + @environment = @profile.environment
  16 + @environment.enabled_plugins = ['SocialSharePrivacyPlugin']
  17 + @environment.save!
  18 + end
  19 +
  20 + should 'add social content on content view page' do
  21 + page = @profile.articles.build(:name => 'test')
  22 + page.save!
  23 +
  24 + get :view_page, :profile => @profile.identifier, :page => ['test']
  25 +
  26 + assert_tag :tag => 'script', :attributes => {:src => /\/javascripts\/plugins\/social_share_privacy\/socialshareprivacy\/javascripts\/socialshareprivacy\.js\??\d*/}
  27 + assert_tag :tag => 'div', :attributes => {:class => "social-buttons"}
  28 + end
  29 +
  30 + should 'add social share privacy modules acording to networks settings' do
  31 + page = @profile.articles.build(:name => 'test')
  32 + page.save!
  33 + Noosfero::Plugin::Settings.new(@environment, SocialSharePrivacyPlugin, :networks => ['twitter', 'gplus']).save!
  34 +
  35 + get :view_page, :profile => @profile.identifier, :page => ['test']
  36 +
  37 + assert_tag :tag => 'script', :attributes => {:src => /\/javascripts\/plugins\/social_share_privacy\/socialshareprivacy\/javascripts\/modules\/twitter\.js\??\d*/}
  38 + assert_tag :tag => 'script', :attributes => {:src => /\/javascripts\/plugins\/social_share_privacy\/socialshareprivacy\/javascripts\/modules\/gplus\.js\??\d*/}
  39 + end
  40 +
  41 + should 'add javascript with string translations if not english' do
  42 + page = @profile.articles.build(:name => 'test')
  43 + page.save!
  44 + FastGettext.stubs(:locale).returns('pt')
  45 +
  46 + get :view_page, :profile => @profile.identifier, :page => ['test']
  47 +
  48 + assert_tag :tag => 'script', :attributes => {:src => /\/javascripts\/plugins\/social_share_privacy\/socialshareprivacy\/javascripts\/locale\/jquery\.socialshareprivacy\.min\.pt\.js\??\d*/}
  49 +
  50 + FastGettext.stubs(:locale).returns('en')
  51 +
  52 + get :view_page, :profile => @profile.identifier, :page => ['test']
  53 +
  54 + assert_no_tag :tag => 'script', :attributes => {:src => /\/javascripts\/plugins\/social_share_privacy\/socialshareprivacy\/javascripts\/locale\/jquery\.socialshareprivacy\.min\.en\.js\??\d*/}
  55 + end
  56 +end
plugins/social_share_privacy/test/functional/social_share_privacy_plugin_admin_controller_test.rb 0 → 100644
@@ -0,0 +1,54 @@ @@ -0,0 +1,54 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +require File.dirname(__FILE__) + '/../../controllers/social_share_privacy_plugin_admin_controller'
  3 +
  4 +# Re-raise errors caught by the controller.
  5 +class SocialSharePrivacyPluginAdminController; def rescue_action(e) raise e end; end
  6 +
  7 +class SocialSharePrivacyPluginAdminControllerTest < ActionController::TestCase
  8 +
  9 + def setup
  10 + @environment = Environment.default
  11 + @profile = create_user('profile').person
  12 + @environment.add_admin(@profile)
  13 + login_as(@profile.identifier)
  14 + end
  15 +
  16 + attr_reader :environment
  17 +
  18 + should 'list networks not selected available in alphabetic order' do
  19 + Noosfero::Plugin::Settings.new(environment, SocialSharePrivacyPlugin, :networks => ['gplus']).save!
  20 + @controller.stubs(:social_share_privacy_networks).returns(['gplus', 'twitter', 'facebook'])
  21 + get :index
  22 + assert_equal ['facebook', 'twitter'], assigns(:available_networks)
  23 + end
  24 +
  25 + should 'list networks selected in order' do
  26 + Noosfero::Plugin::Settings.new(environment, SocialSharePrivacyPlugin, :networks => ['gplus', 'buffer']).save!
  27 + get :index
  28 + assert_equal ['gplus', 'buffer'], assigns(:settings).networks
  29 + end
  30 +
  31 + should 'save social networks buttons settings' do
  32 + post :index, :settings => {:networks => ['facebook', 'gplus']}
  33 + @settings = Noosfero::Plugin::Settings.new(environment.reload, SocialSharePrivacyPlugin)
  34 + assert_equal ['facebook', 'gplus'], @settings.settings[:networks]
  35 + end
  36 +
  37 + should 'remove all buttons if none selected' do
  38 + Noosfero::Plugin::Settings.new(environment, SocialSharePrivacyPlugin, :networks => ['twitter', 'gplus', 'buffer']).save!
  39 + post :index, :settings => {:networks => ['']}
  40 + @settings = Noosfero::Plugin::Settings.new(environment.reload, SocialSharePrivacyPlugin)
  41 + assert_equal [], @settings.settings[:networks]
  42 + end
  43 +
  44 + should 'ignore unknown networks' do
  45 + post :index, :settings => {:networks => ['orkut']}
  46 + @settings = Noosfero::Plugin::Settings.new(environment.reload, SocialSharePrivacyPlugin)
  47 + assert_equal [], @settings.settings[:networks]
  48 + end
  49 +
  50 + should 'redirect to index after save' do
  51 + post :index
  52 + assert_redirected_to :controller => 'plugins', :action => 'index'
  53 + end
  54 +end
plugins/social_share_privacy/test/unit/social_share_privacy_helper_test.rb 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +
  3 +class SocialSharePrivacyPluginHelperTest < ActiveSupport::TestCase
  4 +
  5 + include SocialSharePrivacyPluginHelper
  6 +
  7 + should 'list social networks provided' do
  8 + assert_equal ['buffer', 'facebook', 'gplus', 'mail', 'stumbleupon', 'xing', 'delicious', 'fbshare', 'hackernews', 'pinterest', 'tumblr', 'disqus', 'flattr', 'linkedin', 'reddit', 'twitter'].sort, social_share_privacy_networks.sort
  9 + end
  10 +
  11 +end
plugins/social_share_privacy/test/unit/social_share_privacy_test.rb 0 → 100644
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +
  3 +class SocialSharePrivacyPluginTest < ActiveSupport::TestCase
  4 +
  5 + include NoosferoTestHelper
  6 +
  7 + def setup
  8 + @plugin = SocialSharePrivacyPlugin.new
  9 + end
  10 +
  11 + should 'be a noosfero plugin' do
  12 + assert_kind_of Noosfero::Plugin, @plugin
  13 + end
  14 +
  15 + should 'have name' do
  16 + assert_equal "Social Share Privacy", SocialSharePrivacyPlugin.plugin_name
  17 + end
  18 +
  19 + should 'have description' do
  20 + assert_equal "A plugin that adds share buttons from other networks.", SocialSharePrivacyPlugin.plugin_description
  21 + end
  22 +
  23 + should 'have default value for networks setting' do
  24 + @settings = Noosfero::Plugin::Settings.new(Environment.default, SocialSharePrivacyPlugin)
  25 + assert_equal [], @settings.get_setting(:networks)
  26 + end
  27 +
  28 + should 'return html code for social share privacy buttons' do
  29 + self.stubs(:environment).returns(Environment.default)
  30 + content = @plugin.social_buttons_contents
  31 + assert self.instance_eval(&content)
  32 + end
  33 +
  34 +end
plugins/social_share_privacy/views/social_share_privacy_plugin_admin/index.html.erb
@@ -19,8 +19,8 @@ @@ -19,8 +19,8 @@
19 }); 19 });
20 </script> 20 </script>
21 21
22 -<div id='available-folders'>  
23 - <%= labelled_form_field(_('Available networks'), select_tag('networks[]', options_for_select(@tags), {:id => 'social-networks-list', :multiple => true, :size => 6 }) ) %> 22 +<div id='available-networks'>
  23 + <%= labelled_form_field(_('Available networks'), select_tag('networks[]', options_for_select(@available_networks), {:id => 'social-networks-list', :multiple => true, :size => 6 }) ) %>
24 </div> 24 </div>
25 25
26 <div id='selection-buttons'> 26 <div id='selection-buttons'>
@@ -29,8 +29,9 @@ @@ -29,8 +29,9 @@
29 </div> 29 </div>
30 30
31 <%= form_tag do %> 31 <%= form_tag do %>
32 - <div id='portal-folders'>  
33 - <%= labelled_form_field(_('Selected networks'), select_tag('networks[]', options_for_select(@selected), {:id => 'selected-social-networks', :multiple => true, :size => 6 })) %> 32 + <div id='selected-networks'>
  33 + <%= hidden_field_tag 'settings[networks][]' %>
  34 + <%= labelled_form_field(_('Selected networks'), select_tag('settings[networks]', options_for_select(@settings.networks), {:id => 'selected-social-networks', :multiple => true, :size => 6 })) %>
34 </div> 35 </div>
35 36
36 <p> 37 <p>