Commit d070f74a509b61e0e8451c4fab2a15023af9653e

Authored by Larissa Reis
1 parent c05eb777

social-share: updates upstream os it\'s the same as merge request

Showing 105 changed files with 2953 additions and 17 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 105 files displayed.

plugins/social_share_privacy/controllers/social_share_privacy_plugin_admin_controller.rb
1 1 class SocialSharePrivacyPluginAdminController < AdminController
2 2 append_view_path File.join(File.dirname(__FILE__) + '/../views')
3 3  
  4 + protect 'edit_environment_features', :environment
  5 +
  6 + include SocialSharePrivacyPluginHelper
  7 +
4 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 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 22 end
  23 + redirect_to :controller => 'plugins', :action => 'index'
15 24 end
16 25 end
17 26  
... ...
plugins/social_share_privacy/lib/social_share_privacy_plugin.rb
... ... @@ -8,16 +8,23 @@ class SocialSharePrivacyPlugin &lt; Noosfero::Plugin
8 8 _("A plugin that adds share buttons from other networks.")
9 9 end
10 10  
  11 + def self.networks_default_setting
  12 + []
  13 + end
  14 +
11 15 def stylesheet?
12 16 true
13 17 end
14 18  
15   - def social_buttons_javascript(article)
  19 + def social_buttons_contents
16 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 28 end
22 29 end
23 30  
... ...
plugins/social_share_privacy/lib/social_share_privacy_plugin_helper.rb 0 → 100644
... ... @@ -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/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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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");
... ...