Commit 8321fe42c7cdd73d876762d94ec480c4f2a20407
1 parent
76c22144
Exists in
master
and in
27 other branches
socia-share: creates plugin
Creates the plugin to add to noosfero the jQuery plugin
SocialSharePrivacy.
Social Share Privacy is a jQuery plugin under the MIT license. More
information:
* http://panzi.github.io/SocialSharePrivacy
* https://github.com/panzi/SocialSharePrivacy
(ActionItem3238)
Showing
108 changed files
with
5353 additions
and
0 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 108 files displayed.
plugins/social_share_privacy/lib/social_share_privacy_plugin.rb
0 → 100644
plugins/social_share_privacy/public/socialshareprivacy/README.md
0 → 100644
| ... | ... | @@ -0,0 +1,1460 @@ |
| 1 | +Social Share Privacy | |
| 2 | +==================== | |
| 3 | + | |
| 4 | +Social Share Privacy is a jQuery plugin that lets you add social share buttons | |
| 5 | +to your website that don't allow the social sites to track your users. The buttons | |
| 6 | +are first disabled and a user needs to click them to enable them. So in order to | |
| 7 | +e.g. like a site on facebook with these social share buttons a user needs to click | |
| 8 | +two times. But in return for this extra click a user can only be tracked be this | |
| 9 | +third party sites when he decides to enable the buttons. Using the settings menu | |
| 10 | +a user can also permanently enable a social share button. | |
| 11 | + | |
| 12 | +Supported share services: | |
| 13 | + | |
| 14 | + * [Buffer](#buffer-options-buffer) | |
| 15 | + * [Delicious](#delicious-options-delicious) | |
| 16 | + * [Disqus](#disqus-options-disqus) | |
| 17 | + * [EMail](#email-options-mail) | |
| 18 | + * [Facebook Like/Recommend](#facebook-like-recommend-options-facebook) | |
| 19 | + * [Facebook Share](#facebook-share-options-fbshare) | |
| 20 | + * [Flattr](#flattr-options-flattr) | |
| 21 | + * [Google+](#google-options-gplus) | |
| 22 | + * [Hacker News](#hacker-news-options-hackernews) | |
| 23 | + * [Linked in](#linked-in-options-linkedin) | |
| 24 | + * [Pinterest](#pinterest-options-pinterest) | |
| 25 | + * [reddit](#reddit-options-reddit) | |
| 26 | + * [Stumble Upon](#stumble-upon-options-stumbleupon) | |
| 27 | + * [Tumblr](#tumblr-options-tumblr) | |
| 28 | + * [Twitter](#twitter-options-twitter) | |
| 29 | + * [XING](#xing-options-xing) | |
| 30 | + | |
| 31 | +Note that Tumblr and email are just normal links and thus always enabled. | |
| 32 | + | |
| 33 | +This is a fork of socialSharePrivacy by Heise. In this fork the service support | |
| 34 | +was made extensible, some services where added and some bugs fixed. It has some | |
| 35 | +incompatible changes, though (consolidated option names, use of the boolean values | |
| 36 | +`true` and `false` instead of the strings `"on"` and `"off"` etc.). | |
| 37 | + | |
| 38 | +The original can be found here: | |
| 39 | +[http://www.heise.de/extras/socialshareprivacy/](http://www.heise.de/extras/socialshareprivacy/) | |
| 40 | + | |
| 41 | +The Delicious support was heavily inspired by the delicious button jQuery plugin: | |
| 42 | +[http://code.google.com/p/delicious-button/](http://code.google.com/p/delicious-button/) | |
| 43 | +The style for this button was atually copied and only slightly adapted from this plugin. | |
| 44 | + | |
| 45 | +Overview | |
| 46 | +-------- | |
| 47 | + | |
| 48 | + * [Dependencies](#dependencies) | |
| 49 | + * [How to use](#how-to-use) | |
| 50 | + * [Methods](#methods) | |
| 51 | + * [Events](#events) | |
| 52 | + * [Options](#options) | |
| 53 | + * [Global Options](#global-options) | |
| 54 | + * [Common Service Options](#common-service-options) | |
| 55 | + * [Custom Services](#custom-services) | |
| 56 | + * [Helper Functions](#helper-functions-jqueryfnsocialshareprivacy) | |
| 57 | + * [Build.sh](#buildsh) | |
| 58 | + * [Known Issues](#known-issues) | |
| 59 | + * [License](#license) | |
| 60 | + | |
| 61 | +<span id="dependencies">Dependencies</span> | |
| 62 | +------------------------------------------- | |
| 63 | + | |
| 64 | + * [jQuery](http://jquery.com/) | |
| 65 | + * [jQuery cookies plugin](https://github.com/panzi/jQuery-Cookies) (optional) | |
| 66 | + * [uglifyjs](https://npmjs.org/package/uglify-js) (for [build.sh](#buildsh)) | |
| 67 | + * [uglifycss](https://npmjs.org/package/uglifycss) (for [build.sh](#buildsh)) | |
| 68 | + | |
| 69 | +The jQuery cookies plugin is needed in order to enable services permanently. | |
| 70 | +However, you can plug in you own replacement to store this options differently | |
| 71 | +(e.g. via ajax in the user profile or in the browsers local store). For an | |
| 72 | +example that stores the perma options in HTML5 local storage instead of cookies | |
| 73 | +see the file | |
| 74 | +[localstorage.js](https://github.com/panzi/SocialSharePrivacy/blob/master/javascripts/localstorage.js). | |
| 75 | + | |
| 76 | +<span id="how-to-use">How to use</span> | |
| 77 | +---------------------------------------- | |
| 78 | + | |
| 79 | +```html | |
| 80 | +<html> | |
| 81 | +<head> | |
| 82 | +… | |
| 83 | +<script type="text/javascript" src="jquery.js"></script> | |
| 84 | +<script type="text/javascript" src="jquery.socialshareprivacy.min.js"></script> | |
| 85 | +<script type="text/javascript"> | |
| 86 | +$(document).ready(function () { | |
| 87 | + $('.share').socialSharePrivacy(); | |
| 88 | +}); | |
| 89 | +</script> | |
| 90 | +… | |
| 91 | +</head> | |
| 92 | +<body> | |
| 93 | +… | |
| 94 | +<div class="share"></div> | |
| 95 | +… | |
| 96 | +</body> | |
| 97 | +</html> | |
| 98 | +``` | |
| 99 | + | |
| 100 | +You only need to include the JavaScript files of the services you want to use. I | |
| 101 | +recommend to pack all needed files into one using a JavaScript packer/compressor. | |
| 102 | +The included [pack.sh](#packsh) script can do that for you, if you've got | |
| 103 | +[uglifyjs](https://npmjs.org/package/uglify-js) and [uglifycss](https://npmjs.org/package/uglifycss) | |
| 104 | +installed. | |
| 105 | + | |
| 106 | +However, for your convenience I provide these precompiled versions of the scripts: | |
| 107 | + | |
| 108 | + * [jquery.socialshareprivacy.min.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.js) <sup>1</sup> | |
| 109 | + * [jquery.socialshareprivacy.min.autoload.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.autoload.js) <sup>2</sup> | |
| 110 | + * [jquery.socialshareprivacy.min.de.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.de.js) <sup>3</sup> | |
| 111 | + * [jquery.socialshareprivacy.min.es.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.es.js) <sup>3</sup> | |
| 112 | + * [jquery.socialshareprivacy.min.fr.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.fr.js) <sup>3</sup> | |
| 113 | + * [jquery.socialshareprivacy.min.it.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.it.js) <sup>3</sup> | |
| 114 | + * [jquery.socialshareprivacy.min.nl.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.nl.js) <sup>3</sup> | |
| 115 | + * [jquery.socialshareprivacy.min.pl.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.pl.js) <sup>3</sup> | |
| 116 | + * [jquery.socialshareprivacy.min.pt.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.pt.js) <sup>3</sup> | |
| 117 | + * [jquery.socialshareprivacy.min.ru.js](http://panzi.github.io/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.ru.js) <sup>3</sup> | |
| 118 | + * [jquery.socialshareprivacy.min.css](http://panzi.github.io/SocialSharePrivacy/stylesheets/jquery.socialshareprivacy.min.css) | |
| 119 | + | |
| 120 | +1 This file contains all JavaScripts except the `jquery.socialshareprivacy.localstorage.js` module and the translations. | |
| 121 | +2 This file contains the same as 1, but it also automatically initializes elements with the attribute `data-social-share-privacy="true"` set. | |
| 122 | +3 These files contain only translation strings and have to be included in addition to `jquery.socialshareprivacy.min.js`. | |
| 123 | + | |
| 124 | +You can also asynchronously load the buttons if you use the `jquery.socialshareprivacy.min.autoload.js` script: | |
| 125 | + | |
| 126 | +```html | |
| 127 | +<html> | |
| 128 | +<head> | |
| 129 | +… | |
| 130 | +<script type="text/javascript" src="jquery.js"></script> | |
| 131 | +… | |
| 132 | +</head> | |
| 133 | +<body> | |
| 134 | +… | |
| 135 | +<div data-social-share-privacy="true"></div> | |
| 136 | +… | |
| 137 | +<div data-social-share-privacy="true"></div> | |
| 138 | +… | |
| 139 | +<script type="text/javascript"> | |
| 140 | +(function () { | |
| 141 | + var s = document.createElement('script'); | |
| 142 | + var t = document.getElementsByTagName('script')[0]; | |
| 143 | + | |
| 144 | + s.type = 'text/javascript'; | |
| 145 | + s.async = true; | |
| 146 | + s.src = 'jquery.socialshareprivacy.min.autoload.js'; | |
| 147 | + | |
| 148 | + t.parentNode.insertBefore(s, t); | |
| 149 | +})(); | |
| 150 | +</script> | |
| 151 | +</body> | |
| 152 | +</html> | |
| 153 | +``` | |
| 154 | + | |
| 155 | +<span id="methods">Methods</span> | |
| 156 | +--------------------------------- | |
| 157 | + | |
| 158 | +### socialSharePrivacy | |
| 159 | + | |
| 160 | +```javascript | |
| 161 | +.socialSharePrivacy([options]) | |
| 162 | +``` | |
| 163 | + | |
| 164 | +Add social share buttons to all elements in the set. Returns `this`. | |
| 165 | + | |
| 166 | +### destroy | |
| 167 | + | |
| 168 | +```javascript | |
| 169 | +.socialSharePrivacy("destroy") | |
| 170 | +``` | |
| 171 | +Remove all social share buttons. This will return all elements in the set back | |
| 172 | +to their pre-init state. Returns `this`. | |
| 173 | + | |
| 174 | +### disable | |
| 175 | + | |
| 176 | +```javascript | |
| 177 | +.socialSharePrivacy("disable", [service_name]) | |
| 178 | +``` | |
| 179 | + | |
| 180 | +Disable the named service or disable all services if no `service_name` is given. | |
| 181 | +Returns `this`. | |
| 182 | + | |
| 183 | +### disabled | |
| 184 | + | |
| 185 | +```javascript | |
| 186 | +.socialSharePrivacy("disabled", [service_name]) | |
| 187 | +``` | |
| 188 | + | |
| 189 | +Returns `true` if the given service is disabled, `false` otherwise. If | |
| 190 | +`service_name` is not given then it will return an object that maps | |
| 191 | +service names to their disabled-value. | |
| 192 | + | |
| 193 | +### enable | |
| 194 | + | |
| 195 | +```javascript | |
| 196 | +.socialSharePrivacy("enable", [service_name]) | |
| 197 | +``` | |
| 198 | + | |
| 199 | +Enable the named service or enable all services if no `service_name` is given. | |
| 200 | +Returns `this`. | |
| 201 | + | |
| 202 | +### enabled | |
| 203 | + | |
| 204 | +```javascript | |
| 205 | +.socialSharePrivacy("enabled", [service_name]) | |
| 206 | +``` | |
| 207 | + | |
| 208 | +Returns `true` if the given service is enabled, `false` otherwise. If | |
| 209 | +`service_name` is not given then it will return an object that maps | |
| 210 | +service names to their enabled-value. | |
| 211 | + | |
| 212 | +### option | |
| 213 | + | |
| 214 | +```javascript | |
| 215 | +.socialSharePrivacy("option", option_name, [value]) | |
| 216 | +``` | |
| 217 | + | |
| 218 | +Get or set an option. If no `value` is specified it will act as a getter. | |
| 219 | +Returns `this` when acting as setter. | |
| 220 | + | |
| 221 | +### options | |
| 222 | + | |
| 223 | +```javascript | |
| 224 | +.socialSharePrivacy("options", [options]) | |
| 225 | +``` | |
| 226 | + | |
| 227 | +Get or set all options. If no `options` are specified it will act as a getter. | |
| 228 | +Returns `this` when acting as setter. | |
| 229 | + | |
| 230 | +### toggle | |
| 231 | + | |
| 232 | +```javascript | |
| 233 | +.socialSharePrivacy("toggle", [service_name]) | |
| 234 | +``` | |
| 235 | + | |
| 236 | +Toggle the named service or toggle all services if no `service_name` is given. | |
| 237 | +Returns `this`. | |
| 238 | + | |
| 239 | +<span id="events">Events</span> | |
| 240 | +------------------------------- | |
| 241 | + | |
| 242 | +### socialshareprivacy:create | |
| 243 | + | |
| 244 | +This event is emitted after the `socialSharePrivacy` method created a Social | |
| 245 | +Share privacy widget. The event object will have an `options` attribute holding | |
| 246 | +the option object of the initialized widget. | |
| 247 | + | |
| 248 | +### socialshareprivacy:destroy | |
| 249 | + | |
| 250 | +This event is emitted before a Social Share Privacy widget is destroyed. | |
| 251 | + | |
| 252 | +### socialshareprivacy:disable | |
| 253 | + | |
| 254 | +This event is emitted after a certain service was disabled. The event object | |
| 255 | +will have a `serviceName` property, holding the name of the service that was | |
| 256 | +disabled, and an `isClick` property, wich is `true` if a click by a user caused | |
| 257 | +this event (`false` if it was disabled via JavaScript). | |
| 258 | + | |
| 259 | +### socialshareprivacy:enable | |
| 260 | + | |
| 261 | +This event is emitted after a certain service was enabled. The event object | |
| 262 | +will have a `serviceName` property, holding the name of the service that was | |
| 263 | +enabled, and an `isClick` property, wich is `true` if a click by a user caused | |
| 264 | +this event (`false` if it was enabled via JavaScript). | |
| 265 | + | |
| 266 | +<span id="options">Options</span> | |
| 267 | +--------------------------------- | |
| 268 | + | |
| 269 | +Options can be set globally via `$.fn.socialSharePrivacy.settings`, via an | |
| 270 | +options object passed to the `socialSharePrivacy` function or via `data-*` | |
| 271 | +attributes of the share element. If options are defined in more than one way | |
| 272 | +the `data-*` attributes will overwrite the options from the passed options | |
| 273 | +object and the options from passed options object will overwrite the | |
| 274 | +globally defined options. | |
| 275 | + | |
| 276 | +### `data-*` attributes | |
| 277 | + | |
| 278 | +In order to pass the options as `data-*` attributes simply prepend `data-` to | |
| 279 | +all option names. For the language option you can also use the standard `lang` | |
| 280 | +attribute. If you want to set an option of an service just use a `data-*` | |
| 281 | +attribute that includes dots (`.`) as if it where a JavaScript property | |
| 282 | +expression: | |
| 283 | + | |
| 284 | +```html | |
| 285 | +<div class="share" | |
| 286 | + lang="de" | |
| 287 | + data-uri="http://example.com/" | |
| 288 | + data-image="http://example.com/image.png" | |
| 289 | + data-services.tumblr.type="photo" | |
| 290 | + data-order="facebook twitter tumblr"></div> | |
| 291 | +``` | |
| 292 | + | |
| 293 | +If you want you can combine all options of a service and pass a JSON string as | |
| 294 | +attribute value: | |
| 295 | + | |
| 296 | +```html | |
| 297 | +<div class="share" | |
| 298 | + lang="de" | |
| 299 | + data-uri="http://example.com/" | |
| 300 | + data-image="http://example.com/image.png" | |
| 301 | + data-services.tumblr='{"type":"photo"}' | |
| 302 | + data-order="facebook twitter tumblr"></div> | |
| 303 | +``` | |
| 304 | + | |
| 305 | +You can also do this for all services: | |
| 306 | + | |
| 307 | +```html | |
| 308 | +<div class="share" | |
| 309 | + lang="de" | |
| 310 | + data-uri="http://example.com/" | |
| 311 | + data-image="http://example.com/image.png" | |
| 312 | + data-services='{"tumblr":{"type":"photo"}}' | |
| 313 | + data-order="facebook twitter tumblr"></div> | |
| 314 | +``` | |
| 315 | + | |
| 316 | +Or even all options at once: | |
| 317 | + | |
| 318 | +```html | |
| 319 | +<div class="share" | |
| 320 | + data-options='{ | |
| 321 | + "language" : "de", | |
| 322 | + "uri" : "http://example.com/", | |
| 323 | + "image" : "http://example.com/image.png", | |
| 324 | + "services" : { | |
| 325 | + "tumblr" : { | |
| 326 | + "type" : "photo" | |
| 327 | + } | |
| 328 | + }, | |
| 329 | + "order" : ["facebook", "twitter", "tumblr"] | |
| 330 | + }'></div> | |
| 331 | +``` | |
| 332 | + | |
| 333 | +Actually these aren't JSON objects but JavaScript expressions. This way | |
| 334 | +you can pass JavaScript code that will evaluate the option values when the | |
| 335 | +`socialSharePrivacy` function is called. You can even pass a whole new | |
| 336 | +service implementation inline, if you want: | |
| 337 | + | |
| 338 | +```html | |
| 339 | +<div class="share" | |
| 340 | + data-options="{ | |
| 341 | + language : document.documentElement.lang, | |
| 342 | + title : document.title, | |
| 343 | + services : { | |
| 344 | + my_inline_service : { | |
| 345 | + status : true, | |
| 346 | + dummy_line_img : 'dummy.png', | |
| 347 | + dummy_alt : 'DISABLED', | |
| 348 | + display_name : 'My Inline Service', | |
| 349 | + txt_info : 'Click to enable.', | |
| 350 | + perma_option : true, | |
| 351 | + button : function (options, uri, settings) { | |
| 352 | + return $('<div>ENABLED</div>'); | |
| 353 | + } | |
| 354 | + } | |
| 355 | + } | |
| 356 | + }"></div> | |
| 357 | +``` | |
| 358 | + | |
| 359 | +The main advantage of using the `data-*` attributes is, that you can easily | |
| 360 | +render several *different* share elements on your webserver and then initialize | |
| 361 | +them with one single JavaScript function call (no need for uniqe element IDs | |
| 362 | +and separate JavaScript calls for each element). | |
| 363 | + | |
| 364 | +**NOTE:** When passing service options via `data-*` attributes all option | |
| 365 | +values (except the common service options) are treated as strings. If you | |
| 366 | +need to pass values of other types (numbers, booleans, arrays or functions) | |
| 367 | +you need to use the JavaScript object syntax. | |
| 368 | + | |
| 369 | +### <span id="global-options">Global Options</span> | |
| 370 | + | |
| 371 | +Set these options like this: | |
| 372 | + | |
| 373 | +```javascript | |
| 374 | +$.fn.socialSharePrivacy.settings.title = "Title of the thing to share."; | |
| 375 | +… | |
| 376 | +``` | |
| 377 | + | |
| 378 | +Or like this: | |
| 379 | + | |
| 380 | +```html | |
| 381 | +<script type="application/x-social-share-privacy-settings"> | |
| 382 | +{ | |
| 383 | + path_prefix: "/socialshareprivacy", | |
| 384 | + css_path: "socialshareprivacy.css", | |
| 385 | + … | |
| 386 | +} | |
| 387 | +</script> | |
| 388 | +``` | |
| 389 | + | |
| 390 | +The version using `script` tags uses again JavaScript expressions to enable | |
| 391 | +inline service definitions. | |
| 392 | + | |
| 393 | +<table> | |
| 394 | +<thead> | |
| 395 | +<tr> | |
| 396 | +<th>Option</th> | |
| 397 | +<th>Default Value</th> | |
| 398 | +<th>Description</th> | |
| 399 | +</tr> | |
| 400 | +</thead> | |
| 401 | +<tbody> | |
| 402 | +<tr> | |
| 403 | +<td>info_link</td> | |
| 404 | +<td><a href="http://panzi.github.io/SocialSharePrivacy/">http://panzi.github.io/SocialSharePrivacy/</a></td> | |
| 405 | +<td>The link of the <em>i</em>-icon that links users to more information about this.</td> | |
| 406 | +</tr> | |
| 407 | +<tr> | |
| 408 | +<td>info_link_target</td> | |
| 409 | +<td></td> | |
| 410 | +<td>The target attribute of the info link. Possible values are <code>_blank</code>, | |
| 411 | +<code>_self</code>, <code>_parent</code>, <code>_top</code> or a frame name.</td> | |
| 412 | +</tr> | |
| 413 | +<tr> | |
| 414 | +<td>txt_settings</td> | |
| 415 | +<td>Settings</td> | |
| 416 | +<td>The text of the settings icon.</td> | |
| 417 | +</tr> | |
| 418 | +<tr> | |
| 419 | +<td>txt_help</td> | |
| 420 | +<td>[Text]</td> | |
| 421 | +<td>Tooltip text of the settings menu.</td> | |
| 422 | +</tr> | |
| 423 | +<tr> | |
| 424 | +<td>settings_perma</td> | |
| 425 | +<td>[Text]</td> | |
| 426 | +<td>Headline of the settings menu.</td> | |
| 427 | +</tr> | |
| 428 | +<tr> | |
| 429 | +<td>layout</td> | |
| 430 | +<td>line</td> | |
| 431 | +<td>Possible values: <code>line</code> or <code>box</code></td> | |
| 432 | +</tr> | |
| 433 | +<tr> | |
| 434 | +<td>set_perma_option</td> | |
| 435 | +<td>function (service_name, settings)</td> | |
| 436 | +<td>Function that stores the perma setting of the service specified by service_name.</td> | |
| 437 | +</tr> | |
| 438 | +<tr> | |
| 439 | +<td>del_perma_option</td> | |
| 440 | +<td>function (service_name, settings)</td> | |
| 441 | +<td>Function that removes the perma setting of the service specified by service_name.</td> | |
| 442 | +</tr> | |
| 443 | +<tr> | |
| 444 | +<td>get_perma_options</td> | |
| 445 | +<td>function (settings)</td> | |
| 446 | +<td>Function that gets the perma setting of all services in an object where the keys are | |
| 447 | +the service names and the values are boolean. Services that are missing are assumed as | |
| 448 | +false.</td> | |
| 449 | +</tr> | |
| 450 | +<tr> | |
| 451 | +<td>get_perma_option</td> | |
| 452 | +<td>function (service_name, settings)</td> | |
| 453 | +<td>Function that gets the perma setting of the service specified by service_name. | |
| 454 | +Returns a boolean value.<br/> | |
| 455 | +<br/> | |
| 456 | +Only one of the two functions get_perma_options and get_perma_option | |
| 457 | +need to be implemented. In that case the respective other needs to be set to | |
| 458 | +null.</td> | |
| 459 | +</tr> | |
| 460 | +<tr> | |
| 461 | +<td>perma_option</td> | |
| 462 | +<td>true (if the jQuery cookies plugin is installed)</td> | |
| 463 | +<td>Give users the posibility to permanently enable services. (Boolean)</td> | |
| 464 | +</tr> | |
| 465 | +<tr> | |
| 466 | +<td>cookie_path</td> | |
| 467 | +<td>/</td> | |
| 468 | +<td></td> | |
| 469 | +</tr> | |
| 470 | +<tr> | |
| 471 | +<td>cookie_domain</td> | |
| 472 | +<td><code>document.location.hostname</code></td> | |
| 473 | +<td></td> | |
| 474 | +</tr> | |
| 475 | +<tr> | |
| 476 | +<td>cookie_expires</td> | |
| 477 | +<td>365</td> | |
| 478 | +<td>Days until the cookie expires.</td> | |
| 479 | +</tr> | |
| 480 | +<tr> | |
| 481 | +<td>path_prefix</td> | |
| 482 | +<td></td> | |
| 483 | +<td>Prefix to all paths (css_path, dummy_line_img, dummy_box_img)</td> | |
| 484 | +</tr> | |
| 485 | +<tr> | |
| 486 | +<td>css_path</td> | |
| 487 | +<td>socialshareprivacy/socialshareprivacy.css</td> | |
| 488 | +<td></td> | |
| 489 | +</tr> | |
| 490 | +<tr> | |
| 491 | +<td>language</td> | |
| 492 | +<td>en</td> | |
| 493 | +<td></td> | |
| 494 | +</tr> | |
| 495 | +<tr> | |
| 496 | +<td>uri</td> | |
| 497 | +<td>[Function]</td> | |
| 498 | +<td>URI of the thing to share that is passed on to the share services. The default function | |
| 499 | +uses the value of the first <code>link</code> element with the <code>rel</code> attribute | |
| 500 | +<code>canonical</code> or the first <code>meta</code> element with the <code>property</code> | |
| 501 | +attribute <code>og:url</code> it can find or <code>location.href</code> if there are no such | |
| 502 | +elements. (Function or string)</td> | |
| 503 | +</tr> | |
| 504 | +<tr> | |
| 505 | +<td>title</td> | |
| 506 | +<td></td> | |
| 507 | +<td>The title to pass to any share service that want's one.</td> | |
| 508 | +</tr> | |
| 509 | +<tr> | |
| 510 | +<td>description</td> | |
| 511 | +<td></td> | |
| 512 | +<td>The description to pass to any share service that want's one.</td> | |
| 513 | +</tr> | |
| 514 | +<tr> | |
| 515 | +<td>image</td> | |
| 516 | +<td></td> | |
| 517 | +<td>Image URL to pass to any share service that want's one.</td> | |
| 518 | +</tr> | |
| 519 | +<tr> | |
| 520 | +<td>embed</td> | |
| 521 | +<td></td> | |
| 522 | +<td>HTML embed code to pass to any share service that want's one.</td> | |
| 523 | +</tr> | |
| 524 | +<tr> | |
| 525 | +<td>ignore_fragment</td> | |
| 526 | +<td>true</td> | |
| 527 | +<td>Ignore the <code>#fragment</code> part of the url. (Boolean)</td> | |
| 528 | +</tr> | |
| 529 | +</tbody> | |
| 530 | +</table> | |
| 531 | + | |
| 532 | +### <span id="common-service-options">Common Service Options</span> | |
| 533 | + | |
| 534 | +<table> | |
| 535 | +<thead> | |
| 536 | +<tr> | |
| 537 | +<th>Option</th> | |
| 538 | +<th>Default Value</th> | |
| 539 | +<th>Description</th> | |
| 540 | +</tr> | |
| 541 | +</thead> | |
| 542 | +<tbody> | |
| 543 | +<tr> | |
| 544 | +<td>status</td> | |
| 545 | +<td>true</td> | |
| 546 | +<td>Enable/disable this service. (Boolean)</td> | |
| 547 | +</tr> | |
| 548 | +<tr> | |
| 549 | +<td>class_name</td> | |
| 550 | +<td>[service specific]</td> | |
| 551 | +<td>The HTML class of the share button wrapper. Per default it is the key of the | |
| 552 | +service as it is registered in <code>jQuery.fn.socialSharePrivacy.settings.services</code>.</td> | |
| 553 | +</tr> | |
| 554 | +<tr> | |
| 555 | +<td>button_class</td> | |
| 556 | +<td></td> | |
| 557 | +<td>HTML class of the share button. Per default the same as class_name.</td> | |
| 558 | +</tr> | |
| 559 | +<tr> | |
| 560 | +<td>dummy_line_img</td> | |
| 561 | +<td></td> | |
| 562 | +<td>Placeholder image for deactivated button in <code>line</code> layout.</td> | |
| 563 | +</tr> | |
| 564 | +<tr> | |
| 565 | +<td>dummy_box_img</td> | |
| 566 | +<td></td> | |
| 567 | +<td>Placeholder image for deactivated button in <code>box</code> layout.</td> | |
| 568 | +</tr> | |
| 569 | +<tr> | |
| 570 | +<td>dummy_alt</td> | |
| 571 | +<td>[Text]</td> | |
| 572 | +<td>Alt text of the placeholder image.</td> | |
| 573 | +</tr> | |
| 574 | +<tr> | |
| 575 | +<td>txt_info</td> | |
| 576 | +<td>[Text]</td> | |
| 577 | +<td>Help text for deactivated button.</td> | |
| 578 | +</tr> | |
| 579 | +<tr> | |
| 580 | +<td>txt_off</td> | |
| 581 | +<td>[Text]</td> | |
| 582 | +<td>Status text if button is deactivated.</td> | |
| 583 | +</tr> | |
| 584 | +<tr> | |
| 585 | +<td>txt_on</td> | |
| 586 | +<td>[Text]</td> | |
| 587 | +<td>Status text if button is activated.</td> | |
| 588 | +</tr> | |
| 589 | +<tr> | |
| 590 | +<td>perma_option</td> | |
| 591 | +<td>true</td> | |
| 592 | +<td>Give users the posibility to permanently enable this service.<br/> | |
| 593 | +(Boolean)</td> | |
| 594 | +</tr> | |
| 595 | +<tr> | |
| 596 | +<td>display_name</td> | |
| 597 | +<td>[Text]</td> | |
| 598 | +<td>Name of the service.</td> | |
| 599 | +</tr> | |
| 600 | +<tr> | |
| 601 | +<td>referrer_track</td> | |
| 602 | +<td></td> | |
| 603 | +<td>A string that is appended to the URI for this service, so you can track from | |
| 604 | +where your users are coming.</td> | |
| 605 | +</tr> | |
| 606 | +<tr> | |
| 607 | +<td>language</td> | |
| 608 | +<td></td> | |
| 609 | +<td>Override the global language just for this service.</td> | |
| 610 | +</tr> | |
| 611 | +<tr> | |
| 612 | +<td>path_prefix</td> | |
| 613 | +<td></td> | |
| 614 | +<td>Override the global <code>path_prefix</code> just for this service.</td> | |
| 615 | +</tr> | |
| 616 | +</tbody> | |
| 617 | +</table> | |
| 618 | + | |
| 619 | +### <span id="buffer-options-buffer">Buffer Options</span> (`buffer`) | |
| 620 | + | |
| 621 | +See also: [official documentation](http://bufferapp.com/extras/button) | |
| 622 | + | |
| 623 | +Example: | |
| 624 | + | |
| 625 | +```javascript | |
| 626 | +$(document).ready(function () { | |
| 627 | + $('#share').socialSharePrivacy({ | |
| 628 | + services: { | |
| 629 | + buffer: { | |
| 630 | + text : 'Some descriptive text...' | |
| 631 | + } | |
| 632 | + } | |
| 633 | + }); | |
| 634 | +}); | |
| 635 | +``` | |
| 636 | + | |
| 637 | +<table> | |
| 638 | +<thead> | |
| 639 | +<tr> | |
| 640 | +<th>Option</th> | |
| 641 | +<th>Default Value</th> | |
| 642 | +<th>Description</th> | |
| 643 | +</tr> | |
| 644 | +</thead> | |
| 645 | +<tbody> | |
| 646 | +<tr> | |
| 647 | +<td>text</td> | |
| 648 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 649 | +<td>Tweet text (excluding the URL). It will be truncated to 120 characters, leaving | |
| 650 | +place for 20 characters for the shortened URL. (Function or string)</td> | |
| 651 | +</tr> | |
| 652 | +<tr> | |
| 653 | +<td>via</td> | |
| 654 | +<td></td> | |
| 655 | +<td>Twitter username (without the leading <code>@</code>). (Function or string)</td> | |
| 656 | +</tr> | |
| 657 | +<tr> | |
| 658 | +<td>picture</td> | |
| 659 | +<td><a href="#getimageoptions-uri-settings">jQuery.fn.socialSharePrivacy.getImage</a></td> | |
| 660 | +<td>URL of image that represents the thing to share. (Function or string)</td> | |
| 661 | +</tr> | |
| 662 | +</tbody> | |
| 663 | +</table> | |
| 664 | + | |
| 665 | + | |
| 666 | +### <span id="delicious-options-delicious">Delicious Options</span> (`delicious`) | |
| 667 | + | |
| 668 | +See also: [official documentation](http://delicious.com/tools) | |
| 669 | + | |
| 670 | +Example: | |
| 671 | + | |
| 672 | +```javascript | |
| 673 | +$(document).ready(function () { | |
| 674 | + $('#share').socialSharePrivacy({ | |
| 675 | + services: { | |
| 676 | + delicious: { | |
| 677 | + title : 'Bookmark title' | |
| 678 | + } | |
| 679 | + } | |
| 680 | + }); | |
| 681 | +}); | |
| 682 | +``` | |
| 683 | + | |
| 684 | +<table> | |
| 685 | +<thead> | |
| 686 | +<tr> | |
| 687 | +<th>Option</th> | |
| 688 | +<th>Default Value</th> | |
| 689 | +<th>Description</th> | |
| 690 | +</tr> | |
| 691 | +</thead> | |
| 692 | +<tbody> | |
| 693 | +<tr> | |
| 694 | +<td>title</td> | |
| 695 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 696 | +<td>Title of the new bookmark. (Function or string)</td> | |
| 697 | +</tr> | |
| 698 | +</tbody> | |
| 699 | +</table> | |
| 700 | + | |
| 701 | +### <span id="disqus-options-disqus">Disqus Options</span> (`disqus`) | |
| 702 | + | |
| 703 | +See also: [official documentation](http://socialshareprivacy.disqus.com/admin/universal/) | |
| 704 | + | |
| 705 | +**WARNING:** This is a hack. Using this Disqus button will break any usage of the comment | |
| 706 | +count code as shown on the linked page above. This button does of course not interfere | |
| 707 | +with the main Disqus widget. | |
| 708 | + | |
| 709 | +Example: | |
| 710 | + | |
| 711 | +```javascript | |
| 712 | +$(document).ready(function () { | |
| 713 | + $('#share').socialSharePrivacy({ | |
| 714 | + services: { | |
| 715 | + disqus: { | |
| 716 | + shortname : 'myforumshortname', | |
| 717 | + count : 'reactions' | |
| 718 | + } | |
| 719 | + } | |
| 720 | + }); | |
| 721 | +}); | |
| 722 | +``` | |
| 723 | + | |
| 724 | +<table> | |
| 725 | +<thead> | |
| 726 | +<tr> | |
| 727 | +<th>Option</th> | |
| 728 | +<th>Default Value</th> | |
| 729 | +<th>Description</th> | |
| 730 | +</tr> | |
| 731 | +</thead> | |
| 732 | +<tbody> | |
| 733 | +<tr> | |
| 734 | +<td>shortname</td> | |
| 735 | +<td></td> | |
| 736 | +<td>Your Disqus forum shortname. If an empty string is given it tries to use | |
| 737 | +<code>window.disqus_shortname</code>. (String)</td> | |
| 738 | +</tr> | |
| 739 | +<tr> | |
| 740 | +<td>count</td> | |
| 741 | +<td>comments</td> | |
| 742 | +<td>What count to show.<br/> | |
| 743 | +Possible values: <code>comments</code> or <code>reactions</code></td> | |
| 744 | +</tr> | |
| 745 | +<tr> | |
| 746 | +<td>onclick</td> | |
| 747 | +<td></td> | |
| 748 | +<td>Function to call when the Disqus button was clicked. (Function or String)</td> | |
| 749 | +</tr> | |
| 750 | +</tbody> | |
| 751 | +</table> | |
| 752 | + | |
| 753 | +### <span id="email-options-mail">EMail Options</span> (`mail`) | |
| 754 | + | |
| 755 | +<table> | |
| 756 | +<thead> | |
| 757 | +<tr> | |
| 758 | +<th>Option</th> | |
| 759 | +<th>Default Value</th> | |
| 760 | +<th>Description</th> | |
| 761 | +</tr> | |
| 762 | +</thead> | |
| 763 | +<tbody> | |
| 764 | +<tr> | |
| 765 | +<td>subject</td> | |
| 766 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 767 | +<td>Subject of the new email. (Function or string)</td> | |
| 768 | +</tr> | |
| 769 | +<tr> | |
| 770 | +<td>body</td> | |
| 771 | +<td>[Function]</td> | |
| 772 | +<td>Body of the new email. (Function or string)</td> | |
| 773 | +</tr> | |
| 774 | +</tbody> | |
| 775 | +</table> | |
| 776 | + | |
| 777 | +### <span id="facebook-like-recommend-options-facebook">Facebook Like/Recommend Options</span> (`facebook`) | |
| 778 | + | |
| 779 | +Note that facebook only supports certain languages and requires the region suffix (e.g. | |
| 780 | +`en_US`). The facebook service ensures that only supported language strings are sent | |
| 781 | +to facebook, because otherwise facebook fails to render anything. | |
| 782 | + | |
| 783 | +See also: [official documentation](https://developers.facebook.com/docs/reference/plugins/like/) | |
| 784 | + | |
| 785 | +Example: | |
| 786 | + | |
| 787 | +```javascript | |
| 788 | +$(document).ready(function () { | |
| 789 | + $('#share').socialSharePrivacy({ | |
| 790 | + services: { | |
| 791 | + facebook: { | |
| 792 | + action : 'recommend', | |
| 793 | + colorscheme : 'dark' | |
| 794 | + } | |
| 795 | + } | |
| 796 | + }); | |
| 797 | +}); | |
| 798 | +``` | |
| 799 | + | |
| 800 | +<table> | |
| 801 | +<thead> | |
| 802 | +<tr> | |
| 803 | +<th>Option</th> | |
| 804 | +<th>Default Value</th> | |
| 805 | +<th>Description</th> | |
| 806 | +</tr> | |
| 807 | +</thead> | |
| 808 | +<tbody> | |
| 809 | +<tr> | |
| 810 | +<td>action</td> | |
| 811 | +<td>like</td> | |
| 812 | +<td>Possible values: <code>like</code> or <code>recommend</code></td> | |
| 813 | +</tr> | |
| 814 | +<tr> | |
| 815 | +<td>colorscheme</td> | |
| 816 | +<td>light</td> | |
| 817 | +<td>Possible values: <code>light</code> or <code>dark</code></td> | |
| 818 | +</tr> | |
| 819 | +<tr> | |
| 820 | +<td>font</td> | |
| 821 | +<td></td> | |
| 822 | +<td>Possible values: <code>arial</code>, <code>lucida grande</code>, <code>segoe ui</code>, <code>tahoma</code>, | |
| 823 | +<code>trebuchet ms</code> or <code>verdana</code></td> | |
| 824 | +</tr> | |
| 825 | +</tbody> | |
| 826 | +</table> | |
| 827 | + | |
| 828 | +### <span id="facebook-share-options-facebook">Facebook Share Options</span> (`fbshare`) | |
| 829 | + | |
| 830 | +There are no Facebook Share specific options. | |
| 831 | + | |
| 832 | +See also: [official documentation](https://developers.facebook.com/docs/plugins/share/) | |
| 833 | + | |
| 834 | +### <span id="flattr-options-flattr">Flattr Options</span> (`flattr`) | |
| 835 | + | |
| 836 | +See also: [official documentation](http://developers.flattr.net/button/) | |
| 837 | + | |
| 838 | +Example: | |
| 839 | +```javascript | |
| 840 | +$(document).ready(function () { | |
| 841 | + $('#share').socialSharePrivacy({ | |
| 842 | + services: { | |
| 843 | + flattr: { | |
| 844 | + uid : 'yourflattrid', | |
| 845 | + category : 'Text' | |
| 846 | + } | |
| 847 | + } | |
| 848 | + }); | |
| 849 | +}); | |
| 850 | +``` | |
| 851 | + | |
| 852 | +<table> | |
| 853 | +<thead> | |
| 854 | +<tr> | |
| 855 | +<th>Option</th> | |
| 856 | +<th>Default Value</th> | |
| 857 | +<th>Description</th> | |
| 858 | +</tr> | |
| 859 | +</thead> | |
| 860 | +<tbody> | |
| 861 | +<tr> | |
| 862 | +<td>title</td> | |
| 863 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 864 | +<td>Title of the thing to share. (Function or string)</td> | |
| 865 | +</tr> | |
| 866 | +<tr> | |
| 867 | +<td>description</td> | |
| 868 | +<td><a href="#getdescriptionoptions-uri-settings">jQuery.fn.socialSharePrivacy.getDescription</a></td> | |
| 869 | +<td>Description of the thing to share. (Function or string)</td> | |
| 870 | +</tr> | |
| 871 | +<tr> | |
| 872 | +<td>uid</td> | |
| 873 | +<td></td> | |
| 874 | +<td>Flattr username.</td> | |
| 875 | +</tr> | |
| 876 | +<tr> | |
| 877 | +<td>category</td> | |
| 878 | +<td></td> | |
| 879 | +<td>Possible values: <code>text</code>, <code>images</code>, <code>video</code>, <code>audio</code>, | |
| 880 | +<code>software</code>, <code>people</code> or <code>rest</code></td> | |
| 881 | +</tr> | |
| 882 | +<tr> | |
| 883 | +<td>tags</td> | |
| 884 | +<td></td> | |
| 885 | +<td>Multiple tags are seperated by a comma <code>,</code>. Only alpha characters are supported in tags.</td> | |
| 886 | +</tr> | |
| 887 | +<tr> | |
| 888 | +<td>popout</td> | |
| 889 | +<td></td> | |
| 890 | +<td>When set to <code>0</code> no popout will appear when the Flattr button is hovered.</td> | |
| 891 | +</tr> | |
| 892 | +<tr> | |
| 893 | +<td>hidden</td> | |
| 894 | +<td></td> | |
| 895 | +<td>When set to <code>1</code> your content will not be publicly listed on Flattr.</td> | |
| 896 | +</tr> | |
| 897 | +</tbody> | |
| 898 | +</table> | |
| 899 | + | |
| 900 | +### <span id="google-options-gplus">Google+ Options</span> (`gplus`) | |
| 901 | + | |
| 902 | +There are no Google+ specific options. | |
| 903 | + | |
| 904 | +See also: [official documentation](http://www.google.com/webmasters/+1/button/) | |
| 905 | + | |
| 906 | +### <span id="hacker-news-options-hackernews">Hacker News Options</span> (`hackernews`) | |
| 907 | + | |
| 908 | +See also: [HNSearch API documentation](http://www.hnsearch.com/api) | |
| 909 | + | |
| 910 | +<table> | |
| 911 | +<thead> | |
| 912 | +<tr> | |
| 913 | +<th>Option</th> | |
| 914 | +<th>Default Value</th> | |
| 915 | +<th>Description</th> | |
| 916 | +</tr> | |
| 917 | +</thead> | |
| 918 | +<tbody> | |
| 919 | +<tr> | |
| 920 | +<td>title</td> | |
| 921 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 922 | +<td>Title of the news to share. (Function or string)</td> | |
| 923 | +</tr> | |
| 924 | +</tbody> | |
| 925 | +</table> | |
| 926 | + | |
| 927 | +### <span id="pinterest-options-pinterest">Pinterest Options</span> (`pinterest`) | |
| 928 | + | |
| 929 | +See also: [official documentation](http://business.pinterest.com/widget-builder/#do_pin_it_button) | |
| 930 | + | |
| 931 | +<table> | |
| 932 | +<thead> | |
| 933 | +<tr> | |
| 934 | +<th>Option</th> | |
| 935 | +<th>Default Value</th> | |
| 936 | +<th>Description</th> | |
| 937 | +</tr> | |
| 938 | +</thead> | |
| 939 | +<tbody> | |
| 940 | +<tr> | |
| 941 | +<td>title</td> | |
| 942 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 943 | +<td>Title of the thing to share. (Function or string)</td> | |
| 944 | +</tr> | |
| 945 | +<tr> | |
| 946 | +<td>description</td> | |
| 947 | +<td><a href="#getdescriptionoptions-uri-settings">jQuery.fn.socialSharePrivacy.getDescription</a></td> | |
| 948 | +<td>Description of the thing to share. (Function or string)</td> | |
| 949 | +</tr> | |
| 950 | +<tr> | |
| 951 | +<td>media</td> | |
| 952 | +<td><a href="#getimageoptions-uri-settings">jQuery.fn.socialSharePrivacy.getImage</a></td> | |
| 953 | +<td>URL of image that represents the thing to share. (Function or string)</td> | |
| 954 | +</tr> | |
| 955 | +</tbody> | |
| 956 | +</table> | |
| 957 | + | |
| 958 | +### <span id="linked-in-options-linkedin">Linked in Options</span> (`linkedin`) | |
| 959 | + | |
| 960 | +See also: [official documentation](http://developer.linkedin.com/share-plugin) | |
| 961 | + | |
| 962 | +<table> | |
| 963 | +<thead> | |
| 964 | +<tr> | |
| 965 | +<th>Option</th> | |
| 966 | +<th>Default Value</th> | |
| 967 | +<th>Description</th> | |
| 968 | +</tr> | |
| 969 | +</thead> | |
| 970 | +<tbody> | |
| 971 | +<tr> | |
| 972 | +<td>onsuccess</td> | |
| 973 | +<td></td> | |
| 974 | +<td>Name of a callback function that shall invoked when the link was successfully shared. | |
| 975 | +The shared url will be passed as a parameter. (String)</td> | |
| 976 | +</tr> | |
| 977 | +<tr> | |
| 978 | +<td>onerror</td> | |
| 979 | +<td></td> | |
| 980 | +<td>Name of a callback function that shall invoked if link sharing failed. | |
| 981 | +The shared url will be passed as a parameter. (String)</td> | |
| 982 | +</tr> | |
| 983 | +<tr> | |
| 984 | +<td>showzero</td> | |
| 985 | +<td>false</td> | |
| 986 | +<td>Even show count and no placeholder if there are zero shares. (Boolean)</td> | |
| 987 | +</tr> | |
| 988 | +</tbody> | |
| 989 | +</table> | |
| 990 | + | |
| 991 | +### <span id="reddit-options-reddit">Reddit Options</span> (`reddit`) | |
| 992 | + | |
| 993 | +See also: [official documentation](http://www.reddit.com/buttons/) | |
| 994 | + | |
| 995 | +Example: | |
| 996 | + | |
| 997 | +```javascript | |
| 998 | +$(document).ready(function () { | |
| 999 | + $('#share').socialSharePrivacy({ | |
| 1000 | + services: { | |
| 1001 | + reddit: { | |
| 1002 | + newwindow : false, | |
| 1003 | + bgcolor : '#ffff00' | |
| 1004 | + } | |
| 1005 | + } | |
| 1006 | + }); | |
| 1007 | +}); | |
| 1008 | +``` | |
| 1009 | + | |
| 1010 | +<table> | |
| 1011 | +<thead> | |
| 1012 | +<tr> | |
| 1013 | +<th>Option</th> | |
| 1014 | +<th>Default Value</th> | |
| 1015 | +<th>Description</th> | |
| 1016 | +</tr> | |
| 1017 | +</thead> | |
| 1018 | +<tbody> | |
| 1019 | +<tr> | |
| 1020 | +<td>title</td> | |
| 1021 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 1022 | +<td>Title of the thing to share. (Function or string)</td> | |
| 1023 | +</tr> | |
| 1024 | +<tr> | |
| 1025 | +<td>target</td> | |
| 1026 | +<td></td> | |
| 1027 | +<td>A cummunity to target.</td> | |
| 1028 | +</tr> | |
| 1029 | +<tr> | |
| 1030 | +<td>newwindow</td> | |
| 1031 | +<td>1</td> | |
| 1032 | +<td>Opens reddit in a new window when set to <code>1</code>. Set this option to an empty string or | |
| 1033 | +anything that evaluates to false to open reddit in the same window.</td> | |
| 1034 | +</tr> | |
| 1035 | +<tr> | |
| 1036 | +<td>bgcolor</td> | |
| 1037 | +<td>transparent</td> | |
| 1038 | +<td>HTML color.</td> | |
| 1039 | +</tr> | |
| 1040 | +<tr> | |
| 1041 | +<td>bordercolor</td> | |
| 1042 | +<td></td> | |
| 1043 | +<td>HTML color.</td> | |
| 1044 | +</tr> | |
| 1045 | +</tbody> | |
| 1046 | +</table> | |
| 1047 | + | |
| 1048 | +### <span id="stumble-upon-options-stumbleupon">Stumble Upon Options</span> (`stumbleupon`) | |
| 1049 | + | |
| 1050 | +There are no Stumble Upon specific options. | |
| 1051 | + | |
| 1052 | +See also: [official documentation](http://www.stumbleupon.com/dt/badges/create) | |
| 1053 | + | |
| 1054 | +### <span id="tumblr-options-tumblr">Tumblr Options</span> (`tumblr`) | |
| 1055 | + | |
| 1056 | +See also: [official documentation](http://www.tumblr.com/docs/en/buttons) | |
| 1057 | + | |
| 1058 | +Example: | |
| 1059 | + | |
| 1060 | +```javascript | |
| 1061 | +$(document).ready(function () { | |
| 1062 | + $('#share').socialSharePrivacy({ | |
| 1063 | + services: { | |
| 1064 | + tumblr: { | |
| 1065 | + type : 'photo', | |
| 1066 | + photo : 'http://example.com/example.png' | |
| 1067 | + } | |
| 1068 | + } | |
| 1069 | + }); | |
| 1070 | +}); | |
| 1071 | +``` | |
| 1072 | + | |
| 1073 | +<table> | |
| 1074 | +<thead> | |
| 1075 | +<tr> | |
| 1076 | +<th>Option</th> | |
| 1077 | +<th>Default Value</th> | |
| 1078 | +<th>Description</th> | |
| 1079 | +</tr> | |
| 1080 | +</thead> | |
| 1081 | +<tbody> | |
| 1082 | +<tr> | |
| 1083 | +<td>type</td> | |
| 1084 | +<td>link</td> | |
| 1085 | +<td>Possible values: <code>link</code>, <code>quote</code>, <code>photo</code> or <code>video</code></td> | |
| 1086 | +</tr> | |
| 1087 | +<tr> | |
| 1088 | +<td>name</td> | |
| 1089 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 1090 | +<td>Title of the thing to share. (Function or string)<br/> | |
| 1091 | +<br/> | |
| 1092 | +This option is only defined for the type <code>link</code>.</td> | |
| 1093 | +</tr> | |
| 1094 | +<tr> | |
| 1095 | +<td>description</td> | |
| 1096 | +<td><a href="#getdescriptionoptions-uri-settings">jQuery.fn.socialSharePrivacy.getDescription</a></td> | |
| 1097 | +<td>Description of the thing to share. (Function or string)<br/> | |
| 1098 | +<br/> | |
| 1099 | +This option is only defined for the type <code>link</code>.</td> | |
| 1100 | +</tr> | |
| 1101 | +<tr> | |
| 1102 | +<td>quote</td> | |
| 1103 | +<td>[Function]</td> | |
| 1104 | +<td>Quote to share. (Function or string)<br/> | |
| 1105 | +<br/> | |
| 1106 | +This option is only defined for the type <code>quote</code>.</td> | |
| 1107 | +</tr> | |
| 1108 | +<tr> | |
| 1109 | +<td>photo</td> | |
| 1110 | +<td><a href="#getimageoptions-uri-settings">jQuery.fn.socialSharePrivacy.getImage</a></td> | |
| 1111 | +<td>Image URL of the thing to share. (Function or string)<br/> | |
| 1112 | +<br/> | |
| 1113 | +This option is only defined for the type <code>photo</code>.</td> | |
| 1114 | +</tr> | |
| 1115 | +<tr> | |
| 1116 | +<td>clickthrou</td> | |
| 1117 | +<td>[Function]</td> | |
| 1118 | +<td>The URL to where you get when you click the image. Per default it's the | |
| 1119 | +shared URI including the referrer_track. (Function or string)<br/> | |
| 1120 | +<br/> | |
| 1121 | +This option is only defined for the type <code>photo</code>.</td> | |
| 1122 | +</tr> | |
| 1123 | +<tr> | |
| 1124 | +<td>embed</td> | |
| 1125 | +<td><a href="#getembedoptions-uri-settings">jQuery.fn.socialSharePrivacy.getEmbed</a></td> | |
| 1126 | +<td>Embed code of the thing to share. (Function or string)<br/> | |
| 1127 | +<br/> | |
| 1128 | +This option is only defined for the type <code>video</code>.</td> | |
| 1129 | +</tr> | |
| 1130 | +<tr> | |
| 1131 | +<td>caption</td> | |
| 1132 | +<td><a href="#getdescriptionoptions-uri-settings">jQuery.fn.socialSharePrivacy.getDescription</a></td> | |
| 1133 | +<td>Caption of the thing to share. (Function or string)<br/> | |
| 1134 | +<br/> | |
| 1135 | +This option is only defined for the types <code>photo</code> and <code>video</code>.</td> | |
| 1136 | +</tr> | |
| 1137 | +</tbody> | |
| 1138 | +</table> | |
| 1139 | + | |
| 1140 | +### <span id="twitter-options-twitter">Twitter Options</span> (`twitter`) | |
| 1141 | + | |
| 1142 | +See also: [official documentation](https://twitter.com/about/resources/buttons#tweet) | |
| 1143 | + | |
| 1144 | +Example: | |
| 1145 | + | |
| 1146 | +```javascript | |
| 1147 | +$(document).ready(function () { | |
| 1148 | + $('#share').socialSharePrivacy({ | |
| 1149 | + services: { | |
| 1150 | + twitter: { | |
| 1151 | + hashtags : 'win' | |
| 1152 | + } | |
| 1153 | + } | |
| 1154 | + }); | |
| 1155 | +}); | |
| 1156 | +``` | |
| 1157 | + | |
| 1158 | +<table> | |
| 1159 | +<thead> | |
| 1160 | +<tr> | |
| 1161 | +<th>Option</th> | |
| 1162 | +<th>Default Value</th> | |
| 1163 | +<th>Description</th> | |
| 1164 | +</tr> | |
| 1165 | +</thead> | |
| 1166 | +<tbody> | |
| 1167 | +<tr> | |
| 1168 | +<td>text</td> | |
| 1169 | +<td><a href="#gettitleoptions-uri-settings">jQuery.fn.socialSharePrivacy.getTitle</a></td> | |
| 1170 | +<td>Tweet text (excluding the URL). It will be truncated to 120 characters, leaving | |
| 1171 | +place for 20 characters for the shortened URL. (Function or string)</td> | |
| 1172 | +</tr> | |
| 1173 | +<tr> | |
| 1174 | +<td>via</td> | |
| 1175 | +<td></td> | |
| 1176 | +<td>Twitter username (without the leading <code>@</code>).</td> | |
| 1177 | +</tr> | |
| 1178 | +<tr> | |
| 1179 | +<td>related</td> | |
| 1180 | +<td></td> | |
| 1181 | +<td>Twitter username (without the leading <code>@</code>).</td> | |
| 1182 | +</tr> | |
| 1183 | +<tr> | |
| 1184 | +<td>hashtags</td> | |
| 1185 | +<td></td> | |
| 1186 | +<td>Hashtag to add to the tweet (without the leading <code>#</code>).</td> | |
| 1187 | +</tr> | |
| 1188 | +<tr> | |
| 1189 | +<td>dnt</td> | |
| 1190 | +<td>true</td> | |
| 1191 | +<td>Do not tailor.</td> | |
| 1192 | +</tr> | |
| 1193 | +</tbody> | |
| 1194 | +</table> | |
| 1195 | + | |
| 1196 | +### <span id="xing-options-xing">XING Options</span> (`xing`) | |
| 1197 | + | |
| 1198 | +There are no XING specific options. | |
| 1199 | + | |
| 1200 | +Note that the view counter will not work unless the XING button is enabled by the | |
| 1201 | +user. | |
| 1202 | + | |
| 1203 | +See also: [official documentation](https://www.xing.com/app/share?op=button_builder) | |
| 1204 | + | |
| 1205 | +<span id="custom-services">Custom Services</span> | |
| 1206 | +------------------------------------------------- | |
| 1207 | + | |
| 1208 | +```javascript | |
| 1209 | +(function ($, undefined) { | |
| 1210 | + $.fn.socialSharePrivacy.settings.services.myservice = { | |
| 1211 | + /* default values for common service options... */ | |
| 1212 | + 'button': function (options, uri, settings) { | |
| 1213 | + return $('<iframe scrolling="no" frameborder="0" allowtransparency="true"></iframe>').attr( | |
| 1214 | + 'src', 'http://myservice.example/?' + $.param({ | |
| 1215 | + url: uri + options.referrer_track | |
| 1216 | + }); | |
| 1217 | + } | |
| 1218 | + }; | |
| 1219 | +})(jQuery); | |
| 1220 | +``` | |
| 1221 | + | |
| 1222 | +### <span id="helper-functions-jqueryfnsocialshareprivacy">Helper Functions</span> (`jQuery.fn.socialSharePrivacy.*`) | |
| 1223 | + | |
| 1224 | +Some helper functions that might be handy to use in your custom service. | |
| 1225 | + | |
| 1226 | +#### <span id="absurlurl--baseurl">absurl(url [, baseurl])</span> | |
| 1227 | + | |
| 1228 | +Build an absolute url using a base url. | |
| 1229 | +The provided base url has to be a valid absolute url. It will not be validated! | |
| 1230 | +If no base url is given the documents base url/location is used. | |
| 1231 | +Schemes that behave other than http might not work. | |
| 1232 | +This function tries to support `file:`-urls, but might fail in some cases. | |
| 1233 | +`email:`-urls aren't supported at all (don't make sense anyway). | |
| 1234 | + | |
| 1235 | +#### <span id="abbreviatetexttext-length">abbreviateText(text, length)</span> | |
| 1236 | + | |
| 1237 | +Abbreviate at last blank before length and add `"\u2026"` (…, horizontal ellipsis). | |
| 1238 | +The length is the number of UTF-8 encoded bytes, not the number of unicode code | |
| 1239 | +points, because twitters 140 "characters" are actually bytes. | |
| 1240 | + | |
| 1241 | +#### <span id="escapehtmltext">escapeHtml(text)</span> | |
| 1242 | + | |
| 1243 | +Escapes text so it can be used safely in HTML strings. | |
| 1244 | + | |
| 1245 | +<table> | |
| 1246 | +<thead> | |
| 1247 | +<tr> | |
| 1248 | +<th>Character</th> | |
| 1249 | +<th>Replacement</th> | |
| 1250 | +</tr> | |
| 1251 | +</thead> | |
| 1252 | +<tbody> | |
| 1253 | +<tr> | |
| 1254 | +<td><code><</code></td> | |
| 1255 | +<td><code>&lt;</code></td> | |
| 1256 | +</tr> | |
| 1257 | +<tr> | |
| 1258 | +<td><code>></code></td> | |
| 1259 | +<td><code>&gt;</code></td> | |
| 1260 | +</tr> | |
| 1261 | +<tr> | |
| 1262 | +<td><code>&</code></td> | |
| 1263 | +<td><code>&amp;</code></td> | |
| 1264 | +</tr> | |
| 1265 | +<tr> | |
| 1266 | +<td><code>"</code></td> | |
| 1267 | +<td><code>&quot;</code></td> | |
| 1268 | +</tr> | |
| 1269 | +<tr> | |
| 1270 | +<td><code>'</code></td> | |
| 1271 | +<td><code>&#39;</code></td> | |
| 1272 | +</tr> | |
| 1273 | +</tbody> | |
| 1274 | +</table> | |
| 1275 | + | |
| 1276 | +#### <span id="formatnumber-number">formatNumber(number)</span> | |
| 1277 | + | |
| 1278 | +Format a number to be displayed in a typical number bubble. It will | |
| 1279 | +abbreviate numbers bigger than 9999 using the `K` suffix, rounding the | |
| 1280 | +number to the closest thousand and it inserts thousands delimeter | |
| 1281 | +characters. | |
| 1282 | + | |
| 1283 | +Example: | |
| 1284 | + | |
| 1285 | +```javascript | |
| 1286 | +$.fn.socialSharePrivacy.formatNumber(1234) => "1,234" | |
| 1287 | +$.fn.socialSharePrivacy.formatNumber(12345) => "12K" | |
| 1288 | +$.fn.socialSharePrivacy.formatNumber(1234567) => "1,235K" | |
| 1289 | +``` | |
| 1290 | + | |
| 1291 | +#### <span id="gettitleoptions-uri-settings">getTitle(options, uri, settings)</span> | |
| 1292 | + | |
| 1293 | +Lookup title of shared thing in several places: | |
| 1294 | + | |
| 1295 | + * `settings.title`, which may be a string or a function with the same parameters. | |
| 1296 | + * `$('meta[name="DC.title"]').attr('content') + ' - ' + $('meta[name="DC.creator"]').attr('content')` | |
| 1297 | + * `$('meta[name="DC.title"]').attr('content')` | |
| 1298 | + * `$('meta[property="og:title"]').attr('content')` | |
| 1299 | + * `$('title').text()` | |
| 1300 | + | |
| 1301 | +The element of the share button is passed as `this`. | |
| 1302 | + | |
| 1303 | +#### <span id="getimageoptions-uri-settings">getImage(options, uri, settings)</span> | |
| 1304 | + | |
| 1305 | +Lookup image URL of shared thing in several places: | |
| 1306 | + | |
| 1307 | + * `settings.image`, which may be a string or a function with the same parameters. | |
| 1308 | + * `$('meta[property="image"], meta[property="og:image"], meta[property="og:image:url"], ' +`<br/> | |
| 1309 | + `'meta[name="twitter:image"], link[rel="image_src"], itemscope *[itemprop="image"]').`<br/> | |
| 1310 | + `first().attr('content'` / `'src'` / `'href')` | |
| 1311 | + * `$('img').filter(':visible').filter(function () { return $(this).parents('.social_share_privacy_area').length === 0; })`, | |
| 1312 | + using the image with the biggest area. | |
| 1313 | + * `$('link[rel~="shortcut"][rel~="icon"]').attr('href')` | |
| 1314 | + * `'http://www.google.com/s2/favicons?'+$.param({domain:location.hostname})` | |
| 1315 | + | |
| 1316 | +The element of the share button is passed as `this`. | |
| 1317 | + | |
| 1318 | +#### <span id="getembedoptions-uri-settings">getEmbed(options, uri, settings)</span> | |
| 1319 | + | |
| 1320 | +Lookup image URL of shared thing in several places: | |
| 1321 | + | |
| 1322 | + * `settings.embed`, which may be a string or a function with the same parameters. | |
| 1323 | + | |
| 1324 | +If there is no embed code found it will construct it's own embed code. For this it | |
| 1325 | +first searches for a meta element with the name `twitter:player` and use it's | |
| 1326 | +content as the `src` of an iframe element. If meta tags with the names | |
| 1327 | +`twitter:player:width` and `twitter:player:height` are found they are used for the | |
| 1328 | +width and height attributes of the iframe. If no `twitter:player` meta elements is | |
| 1329 | +found the url of the current page will be used as the iframe `src` | |
| 1330 | +(`uri + options.referrer_track`). | |
| 1331 | + | |
| 1332 | +The element of the share button is passed as `this`. | |
| 1333 | + | |
| 1334 | +#### <span id="getdescriptionoptions-uri-settings">getDescription(options, uri, settings)</span> | |
| 1335 | + | |
| 1336 | +Lookup description of shared thing in several places: | |
| 1337 | + | |
| 1338 | + * `settings.description`, which may be a string or a function with the same parameters. | |
| 1339 | + * `$('meta[name="twitter:description"]').attr('content')` | |
| 1340 | + * `$('meta[itemprop="description"]').attr('content')` | |
| 1341 | + * `$('meta[name="description"]').attr('content')` | |
| 1342 | + * `$('article, p').first().text()` | |
| 1343 | + * `$('body').text()` | |
| 1344 | + | |
| 1345 | +If not defined in `settings.description` the found text is truncated at 3500 bytes. | |
| 1346 | + | |
| 1347 | +The element of the share button is passed as `this`. | |
| 1348 | + | |
| 1349 | +<span id="buildsh">Build.sh</span> | |
| 1350 | +---------------------------------- | |
| 1351 | + | |
| 1352 | +You can use `build.sh` to pack the modules and languages you want. This requires | |
| 1353 | +[uglifyjs](https://npmjs.org/package/uglify-js) and | |
| 1354 | +[uglifycss](https://npmjs.org/package/uglifycss) to be installed. | |
| 1355 | + | |
| 1356 | +Example: | |
| 1357 | + | |
| 1358 | +```sh | |
| 1359 | +./build.sh -m twitter,facebook,gplus -l de,fr | |
| 1360 | +``` | |
| 1361 | + | |
| 1362 | +This generates these files: | |
| 1363 | + | |
| 1364 | +``` | |
| 1365 | +build/jquery.socialshareprivacy.min.js | |
| 1366 | +build/jquery.socialshareprivacy.min.autoload.js | |
| 1367 | +build/jquery.socialshareprivacy.min.de.js | |
| 1368 | +build/jquery.socialshareprivacy.min.fr.js | |
| 1369 | +build/jquery.socialshareprivacy.min.css | |
| 1370 | +``` | |
| 1371 | + | |
| 1372 | +These files then contain only the JavaScript/CSS code for Twitter, Facebook and Google+. | |
| 1373 | +`jquery.socialshareprivacy.min.de.js` and `jquery.socialshareprivacy.min.fr.js` only | |
| 1374 | +contain translation strings, so you need to include them after `jquery.socialshareprivacy.min.js` | |
| 1375 | +in your HTML document. | |
| 1376 | + | |
| 1377 | +### Usage | |
| 1378 | + | |
| 1379 | + Usage: | |
| 1380 | + ./build.sh [options] | |
| 1381 | + | |
| 1382 | + Options: | |
| 1383 | + -h Print this help message. | |
| 1384 | + -m <modules> Comma separated list of JavaScript modules to pack. Possible values: | |
| 1385 | + all, none, buffer, delicious, disqus, facebook, flattr, | |
| 1386 | + gplus, hackernews, linkedin, mail, pinterest, reddit, | |
| 1387 | + stumbleupon, tumblr, twitter, xing | |
| 1388 | + default: all | |
| 1389 | + | |
| 1390 | + -l <languages> Comma separated list of languages to pack. Possible values: | |
| 1391 | + all, none, de, es, fr, nl, pl, pt, ru | |
| 1392 | + default: all | |
| 1393 | + | |
| 1394 | + -a <enabled> Autoload. Possible values: on, off (default: on) | |
| 1395 | + -c <enabled> Pack stylesheets. Possible values: on, off (default: on) | |
| 1396 | + -i <enabled> Pack images. Possible values: on, off (default: on) | |
| 1397 | + -p <path> Prefix to stylesheet and dummy image paths. (empty per default) | |
| 1398 | + -s <path> Stylesheet path in the generated JavaScript file. | |
| 1399 | + default: stylesheets/jquery.socialshareprivacy.min.css | |
| 1400 | + -o <directory> Output directory. (default: build) | |
| 1401 | + | |
| 1402 | +<span id="known-issues">Known Issues</span> | |
| 1403 | +------------------------------------------- | |
| 1404 | + | |
| 1405 | +In Internet Explorer <= 8 the Disqus widget doesn't work the first time you enable it. | |
| 1406 | +You have to disable and then enable it again. I could not figure out what might cause | |
| 1407 | +this. | |
| 1408 | + | |
| 1409 | +It is recommended to declare a compatibility mode of Internet Explorer >= 9. E.g. add | |
| 1410 | +this to the head of your HTML documents: | |
| 1411 | + | |
| 1412 | +```html | |
| 1413 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 1414 | +``` | |
| 1415 | + | |
| 1416 | +Internet Explorer <= 7 is not supported. | |
| 1417 | + | |
| 1418 | +<span id="license">License</span> | |
| 1419 | +--------------------------------- | |
| 1420 | + | |
| 1421 | +Most of this plugin is licensed under the [MIT license](http://www.opensource.org/licenses/mit-license.php): | |
| 1422 | + | |
| 1423 | +Copyright (c) 2012 Mathias Panzenböck | |
| 1424 | +Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, | |
| 1425 | +Juergen Schmidt, Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de | |
| 1426 | + | |
| 1427 | +Permission is hereby granted, free of charge, to any person obtaining a copy of | |
| 1428 | +this software and associated documentation files (the "Software"), to deal in | |
| 1429 | +the Software without restriction, including without limitation the rights to | |
| 1430 | +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | |
| 1431 | +the Software, and to permit persons to whom the Software is furnished to do so, | |
| 1432 | +subject to the following conditions: | |
| 1433 | + | |
| 1434 | +The above copyright notice and this permission notice shall be included in all | |
| 1435 | +copies or substantial portions of the Software. | |
| 1436 | + | |
| 1437 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 1438 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | |
| 1439 | +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | |
| 1440 | +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | |
| 1441 | +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |
| 1442 | +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
| 1443 | + | |
| 1444 | +The file `stylesheets/jquery.socialshareprivacy.delicious.css` is licensed under | |
| 1445 | +the Apache License, Version 2.0: | |
| 1446 | + | |
| 1447 | +Copyright (c) 2012 Mathias Panzenböck | |
| 1448 | +Copyright (c) 2010 [Mike @ moretechtips.net] | |
| 1449 | + | |
| 1450 | +Licensed under the Apache License, Version 2.0 (the "License"); | |
| 1451 | +you may not use this file except in compliance with the License. | |
| 1452 | +You may obtain a copy of the License at | |
| 1453 | + | |
| 1454 | +> [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) | |
| 1455 | + | |
| 1456 | +Unless required by applicable law or agreed to in writing, software | |
| 1457 | +distributed under the License is distributed on an "AS IS" BASIS, | |
| 1458 | +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 1459 | +See the License for the specific language governing permissions and | |
| 1460 | +limitations under the License. | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/build.sh
0 → 100755
| ... | ... | @@ -0,0 +1,153 @@ |
| 1 | +#!/bin/bash | |
| 2 | + | |
| 3 | +modules=all | |
| 4 | +autoload=on | |
| 5 | +css=on | |
| 6 | +img=on | |
| 7 | +pathprefix= | |
| 8 | +stylefile=stylesheets/jquery.socialshareprivacy.min.css | |
| 9 | +langs=all | |
| 10 | +builddir=build | |
| 11 | +allmodules=`ls javascripts/modules/*.js|sed 's/javascripts\/modules\/\(.*\)\.js/\1/'` | |
| 12 | +alllangs=`ls -d javascripts/locale/??|xargs -n 1 basename` | |
| 13 | + | |
| 14 | +while getopts ":m:a:s:p:c:i:l:o:h" opt; do | |
| 15 | + case $opt in | |
| 16 | + m) | |
| 17 | + modules="$OPTARG" | |
| 18 | + ;; | |
| 19 | + a) | |
| 20 | + autoload="$OPTARG" | |
| 21 | + ;; | |
| 22 | + c) | |
| 23 | + css="$OPTARG" | |
| 24 | + ;; | |
| 25 | + i) | |
| 26 | + img="$OPTARG" | |
| 27 | + ;; | |
| 28 | + p) | |
| 29 | + pathprefix="$OPTARG" | |
| 30 | + ;; | |
| 31 | + s) | |
| 32 | + stylefile="$OPTARG" | |
| 33 | + ;; | |
| 34 | + l) | |
| 35 | + langs="`echo "$OPTARG"|tr ',' ' '`" | |
| 36 | + ;; | |
| 37 | + o) | |
| 38 | + builddir="$OPTARG" | |
| 39 | + ;; | |
| 40 | + h) | |
| 41 | + echo "Usage:" | |
| 42 | + echo " ./build.sh [options]" | |
| 43 | + echo | |
| 44 | + echo "Options:" | |
| 45 | + echo " -h Print this help message." | |
| 46 | + echo " -m <modules> Comma separated list of JavaScript modules to pack. Possible values:" | |
| 47 | + echo all none $allmodules|sed 's/ /, /g'|fmt -60|xargs -n 1 -d '\n' echo " " | |
| 48 | + echo " default: all" | |
| 49 | + echo | |
| 50 | + echo " -l <languages> Comma separated list of languages to pack. Possible values:" | |
| 51 | + echo all none $alllangs|sed 's/ /, /g'|fmt -60|xargs -n 1 -d '\n' echo " " | |
| 52 | + echo " default: all" | |
| 53 | + echo | |
| 54 | + echo " -a <enabled> Autoload. Possible values: on, off (default: on)" | |
| 55 | + echo " -c <enabled> Pack stylesheets. Possible values: on, off (default: on)" | |
| 56 | + echo " -i <enabled> Pack images. Possible values: on, off (default: on)" | |
| 57 | + echo " -p <path> Prefix to stylesheet and dummy image paths. (empty per default)" | |
| 58 | + echo " -s <path> Stylesheet path in the generated JavaScript file." | |
| 59 | + echo " default: stylesheets/jquery.socialshareprivacy.min.css" | |
| 60 | + echo " -o <directory> Output directory. (default: build)" | |
| 61 | + echo | |
| 62 | + exit | |
| 63 | + ;; | |
| 64 | + \?) | |
| 65 | + echo "Invalid option: -$OPTARG" >&2 | |
| 66 | + echo "See -h for a list of available options." >&2 | |
| 67 | + exit 1 | |
| 68 | + ;; | |
| 69 | + esac | |
| 70 | +done | |
| 71 | + | |
| 72 | +if [ "$modules" = "all" ]; then | |
| 73 | + modules=`echo -n $allmodules|tr ' ' ','` | |
| 74 | +elif [ "$modules" = "" ]; then | |
| 75 | + modules="none" | |
| 76 | +fi | |
| 77 | + | |
| 78 | +if [ "$langs" = "all" ]; then | |
| 79 | + langs="$alllangs" | |
| 80 | +elif [ "$langs" = "" ]; then | |
| 81 | + langs="none" | |
| 82 | +fi | |
| 83 | + | |
| 84 | +mkdir -p "$builddir/javascripts" || exit 1 | |
| 85 | + | |
| 86 | +files="javascripts/socialshareprivacy.js" | |
| 87 | +if [ "$modules" != "none" ]; then | |
| 88 | + files="$files `eval echo javascripts/modules/{$modules}.js`" | |
| 89 | +fi | |
| 90 | +files="$files javascripts/settings.js" | |
| 91 | + | |
| 92 | +uglifyjs $files \ | |
| 93 | + --compress=warnings=false \ | |
| 94 | + | sed -e "s|path_prefix:\"\"|path_prefix:\"$pathprefix\"|g" \ | |
| 95 | + | sed -e "s|stylesheets/socialshareprivacy.css|$stylefile|g" \ | |
| 96 | + > "$builddir/javascripts/jquery.socialshareprivacy.min.js" || exit 1 | |
| 97 | +echo "created $builddir/javascripts/jquery.socialshareprivacy.min.js" | |
| 98 | + | |
| 99 | + | |
| 100 | +if [ "$autoload" = "on" ]; then | |
| 101 | + uglifyjs $files javascripts/autoload.js \ | |
| 102 | + --compress=warnings=false \ | |
| 103 | + | sed -e "s|path_prefix:\"\"|path_prefix:\"$pathprefix\"|g" \ | |
| 104 | + | sed -e "s|stylesheets/socialshareprivacy.css|$stylefile|g" \ | |
| 105 | + > "$builddir/javascripts/jquery.socialshareprivacy.min.autoload.js" || exit 1 | |
| 106 | + echo "created $builddir/javascripts/jquery.socialshareprivacy.min.autoload.js" | |
| 107 | +fi | |
| 108 | + | |
| 109 | +if [ "$langs" != "none" ]; then | |
| 110 | + for lang in $langs; do | |
| 111 | + files="javascripts/locale/$lang/socialshareprivacy.js" | |
| 112 | + if [ "$modules" != "none" ]; then | |
| 113 | + files="$files `eval ls javascripts/locale/$lang/modules/{$modules}.js 2>/dev/null`" | |
| 114 | + fi | |
| 115 | + node join-trans.js $files | uglifyjs \ | |
| 116 | + --compress=warnings=false \ | |
| 117 | + --output="$builddir/javascripts/jquery.socialshareprivacy.min.$lang.js" || exit 1 | |
| 118 | + echo "created $builddir/javascripts/jquery.socialshareprivacy.min.$lang.js" | |
| 119 | + done | |
| 120 | +fi | |
| 121 | + | |
| 122 | +if [ "$img" = "on" ]; then | |
| 123 | + mkdir -p "$builddir/images" || exit 1 | |
| 124 | + files="`eval ls images/socialshareprivacy_* images/settings.png images/{dummy_,}{box_,}{$modules}.* 2>/dev/null`" | |
| 125 | + if [ "$files" != "" ]; then | |
| 126 | + cp $files "$builddir/images" || exit 1 | |
| 127 | + echo "copied images to $builddir/images" | |
| 128 | + fi | |
| 129 | + | |
| 130 | + if [ "$langs" != "none" ]; then | |
| 131 | + for lang in $langs; do | |
| 132 | + if [ -d "images/$lang" ]; then | |
| 133 | + mkdir -p "$builddir/images/$lang" || exit 1 | |
| 134 | + files="`eval ls images/$lang/{dummy_,}{box_,}{$modules}.* 2>/dev/null`" | |
| 135 | + if [ "$files" != "" ]; then | |
| 136 | + cp $files "$builddir/images/$lang" || exit 1 | |
| 137 | + echo "copied images to $builddir/images/$lang" | |
| 138 | + fi | |
| 139 | + fi | |
| 140 | + done | |
| 141 | + fi | |
| 142 | +fi | |
| 143 | + | |
| 144 | +if [ "$css" = "on" ]; then | |
| 145 | + styledir="`dirname "$builddir/$stylefile"`" | |
| 146 | + mkdir -p "$styledir" || exit 1 | |
| 147 | + files="stylesheets/common.css" | |
| 148 | + if [ "$modules" != "none" ]; then | |
| 149 | + files="$files `eval ls stylesheets/modules/{$modules}.css 2>/dev/null`" | |
| 150 | + fi | |
| 151 | + uglifycss $files > "$builddir/$stylefile" || exit 1 | |
| 152 | + echo "created $builddir/$stylefile" | |
| 153 | +fi | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/demo1.html
0 → 100644
| ... | ... | @@ -0,0 +1,58 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Demo 1</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 21 | +<script type="text/javascript"> | |
| 22 | +// <![CDATA[ | |
| 23 | +// define the default order of the buttons: | |
| 24 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter', 'reddit']; | |
| 25 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 26 | + | |
| 27 | +$(document).ready(function () { | |
| 28 | + $('.share').socialSharePrivacy({enable_all: false}); | |
| 29 | + $('#other').socialSharePrivacy({uri: 'http://example.com/'}); | |
| 30 | +}); | |
| 31 | +// ]]> | |
| 32 | +</script> | |
| 33 | +</head> | |
| 34 | +<body> | |
| 35 | + | |
| 36 | +<h1>Social Share Privacy: Demo 1</h1> | |
| 37 | + | |
| 38 | +<p> | |
| 39 | +Demo share buttons: | |
| 40 | +</p> | |
| 41 | + | |
| 42 | +<div class="share"></div> | |
| 43 | + | |
| 44 | +<p> | |
| 45 | +Social share privacy actually supports more than one share button list in one document. | |
| 46 | +</p> | |
| 47 | + | |
| 48 | +<div class="share"></div> | |
| 49 | + | |
| 50 | +<p> | |
| 51 | +Different share buttons can have different options. E.g. these share buttons use the URI | |
| 52 | +"http://example.com/" instead of the document.location. | |
| 53 | +</p> | |
| 54 | + | |
| 55 | +<div id="other"></div> | |
| 56 | + | |
| 57 | +</body> | |
| 58 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/demo1_de.html
0 → 100644
| ... | ... | @@ -0,0 +1,71 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="de"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Demo 1</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 21 | +<script type="text/javascript" src="../javascripts/locale/de/socialshareprivacy.js"></script> | |
| 22 | +<script type="text/javascript" src="../javascripts/locale/de/modules/facebook.js"></script> | |
| 23 | +<script type="text/javascript" src="../javascripts/locale/de/modules/twitter.js"></script> | |
| 24 | +<script type="text/javascript" src="../javascripts/locale/de/modules/gplus.js"></script> | |
| 25 | +<script type="text/javascript" src="../javascripts/locale/de/modules/tumblr.js"></script> | |
| 26 | +<script type="text/javascript" src="../javascripts/locale/de/modules/reddit.js"></script> | |
| 27 | +<script type="text/javascript" src="../javascripts/locale/de/modules/pinterest.js"></script> | |
| 28 | +<script type="text/javascript" src="../javascripts/locale/de/modules/flattr.js"></script> | |
| 29 | +<script type="text/javascript" src="../javascripts/locale/de/modules/stumbleupon.js"></script> | |
| 30 | +<script type="text/javascript" src="../javascripts/locale/de/modules/mail.js"></script> | |
| 31 | +<script type="text/javascript" src="../javascripts/locale/de/modules/linkedin.js"></script> | |
| 32 | +<script type="text/javascript" src="../javascripts/locale/de/modules/xing.js"></script> | |
| 33 | +<script type="text/javascript" src="../javascripts/locale/de/modules/buffer.js"></script> | |
| 34 | +<script type="text/javascript"> | |
| 35 | +// <![CDATA[ | |
| 36 | +// Default reihenfolge der Buttons festlegen: | |
| 37 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter', 'tumblr']; | |
| 38 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 39 | + | |
| 40 | +$(document).ready(function () { | |
| 41 | + $('.share').socialSharePrivacy(); | |
| 42 | + $('#other').socialSharePrivacy({uri: 'http://example.com/'}); | |
| 43 | +}); | |
| 44 | +// ]]> | |
| 45 | +</script> | |
| 46 | +</head> | |
| 47 | +<body> | |
| 48 | + | |
| 49 | +<h1>Social Share Privacy: Demo 1</h1> | |
| 50 | + | |
| 51 | +<p> | |
| 52 | +Demo share Buttons: | |
| 53 | +</p> | |
| 54 | + | |
| 55 | +<div class="share"></div> | |
| 56 | + | |
| 57 | +<p> | |
| 58 | +Social share privacy unterstützt mehr als eine share Button Liste pro Dokument. | |
| 59 | +</p> | |
| 60 | + | |
| 61 | +<div class="share"></div> | |
| 62 | + | |
| 63 | +<p> | |
| 64 | +Unterschiedliche share Buttons können unterschiedliche Optionen verwenden. Diese | |
| 65 | +share Buttons verwenden z.B. die URI "http://example.com/" statt document.location. | |
| 66 | +</p> | |
| 67 | + | |
| 68 | +<div id="other"></div> | |
| 69 | + | |
| 70 | +</body> | |
| 71 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/demo1_es.html
0 → 100644
| ... | ... | @@ -0,0 +1,71 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Demo 1</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 21 | +<script type="text/javascript" src="../javascripts/locale/es/socialshareprivacy.js"></script> | |
| 22 | +<script type="text/javascript" src="../javascripts/locale/es/modules/facebook.js"></script> | |
| 23 | +<script type="text/javascript" src="../javascripts/locale/es/modules/twitter.js"></script> | |
| 24 | +<script type="text/javascript" src="../javascripts/locale/es/modules/gplus.js"></script> | |
| 25 | +<script type="text/javascript" src="../javascripts/locale/es/modules/tumblr.js"></script> | |
| 26 | +<script type="text/javascript" src="../javascripts/locale/es/modules/reddit.js"></script> | |
| 27 | +<script type="text/javascript" src="../javascripts/locale/es/modules/pinterest.js"></script> | |
| 28 | +<script type="text/javascript" src="../javascripts/locale/es/modules/flattr.js"></script> | |
| 29 | +<script type="text/javascript" src="../javascripts/locale/es/modules/stumbleupon.js"></script> | |
| 30 | +<script type="text/javascript" src="../javascripts/locale/es/modules/mail.js"></script> | |
| 31 | +<script type="text/javascript" src="../javascripts/locale/es/modules/linkedin.js"></script> | |
| 32 | +<script type="text/javascript" src="../javascripts/locale/es/modules/xing.js"></script> | |
| 33 | +<script type="text/javascript" src="../javascripts/locale/es/modules/buffer.js"></script> | |
| 34 | +<script type="text/javascript"> | |
| 35 | +// <![CDATA[ | |
| 36 | +// define the default order of the buttons: | |
| 37 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter', 'tumblr', 'reddit']; | |
| 38 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 39 | + | |
| 40 | +$(document).ready(function () { | |
| 41 | + $('.share').socialSharePrivacy(); | |
| 42 | + $('#other').socialSharePrivacy({uri: 'http://example.com/'}); | |
| 43 | +}); | |
| 44 | +// ]]> | |
| 45 | +</script> | |
| 46 | +</head> | |
| 47 | +<body> | |
| 48 | + | |
| 49 | +<h1>Social Share Privacy: Demo 1</h1> | |
| 50 | + | |
| 51 | +<p> | |
| 52 | +Demostración Botón para compartir: | |
| 53 | +</p> | |
| 54 | + | |
| 55 | +<div class="share"></div> | |
| 56 | + | |
| 57 | +<p> | |
| 58 | +Social share privacy soporta más de una lista de botones en un documento. | |
| 59 | +</p> | |
| 60 | + | |
| 61 | +<div class="share"></div> | |
| 62 | + | |
| 63 | +<p> | |
| 64 | +Diferentes botones pueden tener diferentes opciones. Por Ejemplo estos botones usa la URL | |
| 65 | +"http://example.com" en vez de document.location. | |
| 66 | +</p> | |
| 67 | + | |
| 68 | +<div id="other"></div> | |
| 69 | + | |
| 70 | +</body> | |
| 71 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/demo1_fr.html
0 → 100644
| ... | ... | @@ -0,0 +1,71 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="de"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Demo 1</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 21 | +<script type="text/javascript" src="../javascripts/locale/fr/socialshareprivacy.js"></script> | |
| 22 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/facebook.js"></script> | |
| 23 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/twitter.js"></script> | |
| 24 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/gplus.js"></script> | |
| 25 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/tumblr.js"></script> | |
| 26 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/reddit.js"></script> | |
| 27 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/pinterest.js"></script> | |
| 28 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/flattr.js"></script> | |
| 29 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/stumbleupon.js"></script> | |
| 30 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/mail.js"></script> | |
| 31 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/linkedin.js"></script> | |
| 32 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/xing.js"></script> | |
| 33 | +<script type="text/javascript" src="../javascripts/locale/fr/modules/buffer.js"></script> | |
| 34 | +<script type="text/javascript"> | |
| 35 | +// <![CDATA[ | |
| 36 | +// Default reihenfolge der Buttons festlegen: | |
| 37 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter', 'tumblr']; | |
| 38 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 39 | + | |
| 40 | +$(document).ready(function () { | |
| 41 | + $('.share').socialSharePrivacy(); | |
| 42 | + $('#other').socialSharePrivacy({uri: 'http://example.com/'}); | |
| 43 | +}); | |
| 44 | +// ]]> | |
| 45 | +</script> | |
| 46 | +</head> | |
| 47 | +<body> | |
| 48 | + | |
| 49 | +<h1>Social Share Privacy: Demo 1</h1> | |
| 50 | + | |
| 51 | +<p> | |
| 52 | +Boutons de démonstrations: | |
| 53 | +</p> | |
| 54 | + | |
| 55 | +<div class="share"></div> | |
| 56 | + | |
| 57 | +<p> | |
| 58 | +Social share privacy supporte plus qu'une seule liste de boutons par document. | |
| 59 | +</p> | |
| 60 | + | |
| 61 | +<div class="share"></div> | |
| 62 | + | |
| 63 | +<p> | |
| 64 | +Divers boutons peuvent utiliser divers options. Les boutons suivants | |
| 65 | +utilisent par exemple l'URI "http://example.com/" au lieu de document.location. | |
| 66 | +</p> | |
| 67 | + | |
| 68 | +<div id="other"></div> | |
| 69 | + | |
| 70 | +</body> | |
| 71 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/demo1_it.html
0 → 100644
| ... | ... | @@ -0,0 +1,71 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Demo 1</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 21 | +<script type="text/javascript" src="../javascripts/locale/it/socialshareprivacy.js"></script> | |
| 22 | +<script type="text/javascript" src="../javascripts/locale/it/modules/facebook.js"></script> | |
| 23 | +<script type="text/javascript" src="../javascripts/locale/it/modules/twitter.js"></script> | |
| 24 | +<script type="text/javascript" src="../javascripts/locale/it/modules/gplus.js"></script> | |
| 25 | +<script type="text/javascript" src="../javascripts/locale/it/modules/tumblr.js"></script> | |
| 26 | +<script type="text/javascript" src="../javascripts/locale/it/modules/reddit.js"></script> | |
| 27 | +<script type="text/javascript" src="../javascripts/locale/it/modules/pinterest.js"></script> | |
| 28 | +<script type="text/javascript" src="../javascripts/locale/it/modules/flattr.js"></script> | |
| 29 | +<script type="text/javascript" src="../javascripts/locale/it/modules/stumbleupon.js"></script> | |
| 30 | +<script type="text/javascript" src="../javascripts/locale/it/modules/mail.js"></script> | |
| 31 | +<script type="text/javascript" src="../javascripts/locale/it/modules/linkedin.js"></script> | |
| 32 | +<script type="text/javascript" src="../javascripts/locale/it/modules/xing.js"></script> | |
| 33 | +<script type="text/javascript" src="../javascripts/locale/it/modules/buffer.js"></script> | |
| 34 | +<script type="text/javascript"> | |
| 35 | +// <![CDATA[ | |
| 36 | +// define the default order of the buttons: | |
| 37 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter', 'tumblr', 'reddit']; | |
| 38 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 39 | + | |
| 40 | +$(document).ready(function () { | |
| 41 | + $('.share').socialSharePrivacy(); | |
| 42 | + $('#other').socialSharePrivacy({uri: 'http://example.com/'}); | |
| 43 | +}); | |
| 44 | +// ]]> | |
| 45 | +</script> | |
| 46 | +</head> | |
| 47 | +<body> | |
| 48 | + | |
| 49 | +<h1>Social Share Privacy: Demo 1</h1> | |
| 50 | + | |
| 51 | +<p> | |
| 52 | +Dimostrazione pulsanti di condivisione: | |
| 53 | +</p> | |
| 54 | + | |
| 55 | +<div class="share"></div> | |
| 56 | + | |
| 57 | +<p> | |
| 58 | +Social share privacy può gestire piu liste di pulsanti di consivisione nello stesso documento. | |
| 59 | +</p> | |
| 60 | + | |
| 61 | +<div class="share"></div> | |
| 62 | + | |
| 63 | +<p> | |
| 64 | +Diversi pulsanti possono avere diverse opzioni. Ad esempio, questi pulsanti usano la URI | |
| 65 | +"http://example.com/" anziché la document.location. | |
| 66 | +</p> | |
| 67 | + | |
| 68 | +<div id="other"></div> | |
| 69 | + | |
| 70 | +</body> | |
| 71 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/demo1_nl.html
0 → 100644
| ... | ... | @@ -0,0 +1,71 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="de"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Demo 1</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 21 | +<script type="text/javascript" src="../javascripts/locale/nl/socialshareprivacy.js"></script> | |
| 22 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/facebook.js"></script> | |
| 23 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/twitter.js"></script> | |
| 24 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/gplus.js"></script> | |
| 25 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/tumblr.js"></script> | |
| 26 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/reddit.js"></script> | |
| 27 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/pinterest.js"></script> | |
| 28 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/flattr.js"></script> | |
| 29 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/stumbleupon.js"></script> | |
| 30 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/mail.js"></script> | |
| 31 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/linkedin.js"></script> | |
| 32 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/xing.js"></script> | |
| 33 | +<script type="text/javascript" src="../javascripts/locale/nl/modules/buffer.js"></script> | |
| 34 | +<script type="text/javascript"> | |
| 35 | +// <![CDATA[ | |
| 36 | +// Default reihenfolge der Buttons festlegen: | |
| 37 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter', 'tumblr']; | |
| 38 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 39 | + | |
| 40 | +$(document).ready(function () { | |
| 41 | + $('.share').socialSharePrivacy(); | |
| 42 | + $('#other').socialSharePrivacy({uri: 'http://example.com/'}); | |
| 43 | +}); | |
| 44 | +// ]]> | |
| 45 | +</script> | |
| 46 | +</head> | |
| 47 | +<body> | |
| 48 | + | |
| 49 | +<h1>Social Share Privacy: Demo 1</h1> | |
| 50 | + | |
| 51 | +<p> | |
| 52 | +Boutons de démonstrations: | |
| 53 | +</p> | |
| 54 | + | |
| 55 | +<div class="share"></div> | |
| 56 | + | |
| 57 | +<p> | |
| 58 | +Social share privacy supporte plus qu'une seule liste de boutons par document. | |
| 59 | +</p> | |
| 60 | + | |
| 61 | +<div class="share"></div> | |
| 62 | + | |
| 63 | +<p> | |
| 64 | +Divers boutons peuvent utiliser divers options. Les boutons suivants | |
| 65 | +utilisent par exemple l'URI "http://example.com/" au lieu de document.location. | |
| 66 | +</p> | |
| 67 | + | |
| 68 | +<div id="other"></div> | |
| 69 | + | |
| 70 | +</body> | |
| 71 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/demo1_pt.html
0 → 100644
| ... | ... | @@ -0,0 +1,70 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="pt"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Demo 1</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 21 | +<script type="text/javascript" src="../javascripts/locale/pt/socialshareprivacy.js"></script> | |
| 22 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/facebook.js"></script> | |
| 23 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/twitter.js"></script> | |
| 24 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/gplus.js"></script> | |
| 25 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/tumblr.js"></script> | |
| 26 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/reddit.js"></script> | |
| 27 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/pinterest.js"></script> | |
| 28 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/flattr.js"></script> | |
| 29 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/stumbleupon.js"></script> | |
| 30 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/mail.js"></script> | |
| 31 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/linkedin.js"></script> | |
| 32 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/xing.js"></script> | |
| 33 | +<script type="text/javascript" src="../javascripts/locale/pt/modules/buffer.js"></script> | |
| 34 | +<script type="text/javascript"> | |
| 35 | +// <![CDATA[ | |
| 36 | +// Default reihenfolge der Buttons festlegen: | |
| 37 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter', 'tumblr']; | |
| 38 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 39 | + | |
| 40 | +$(document).ready(function () { | |
| 41 | + $('.share').socialSharePrivacy(); | |
| 42 | + $('#other').socialSharePrivacy({uri: 'http://example.com/'}); | |
| 43 | +}); | |
| 44 | +// ]]> | |
| 45 | +</script> | |
| 46 | +</head> | |
| 47 | +<body> | |
| 48 | + | |
| 49 | +<h1>Social Share Privacy: Demo 1</h1> | |
| 50 | + | |
| 51 | +<p> | |
| 52 | +Demonstração dos botões: | |
| 53 | +</p> | |
| 54 | + | |
| 55 | +<div class="share"></div> | |
| 56 | + | |
| 57 | +<p> | |
| 58 | +Social share privacy tem suporte a mais de uma lista de botões no mesmo documento. | |
| 59 | +</p> | |
| 60 | + | |
| 61 | +<div class="share"></div> | |
| 62 | + | |
| 63 | +<p> | |
| 64 | +Diferentes botões de compartilhamento podem ter opções diferentes. Por exemplo, estes botões usam a URI "http://example.com/" em vez de document.location. | |
| 65 | +</p> | |
| 66 | + | |
| 67 | +<div id="other"></div> | |
| 68 | + | |
| 69 | +</body> | |
| 70 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/dynamic_layout.html
0 → 100644
| ... | ... | @@ -0,0 +1,49 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Dynamic Layout</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 13 | +<script type="text/javascript"> | |
| 14 | +// <![CDATA[ | |
| 15 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 16 | + | |
| 17 | +$(document).ready(function () { | |
| 18 | + $('.share').socialSharePrivacy({layout:window.innerWidth < 640 ? 'box' : 'line'}); | |
| 19 | + | |
| 20 | + $(window).resize(function () { | |
| 21 | + var layout = window.innerWidth < 640 ? 'box' : 'line'; | |
| 22 | + var $share = $('.share'); | |
| 23 | + if ($share.socialSharePrivacy('options').layout !== layout) { | |
| 24 | + var enabled = $share.socialSharePrivacy('enabled'); | |
| 25 | + $share.socialSharePrivacy('destroy').socialSharePrivacy({layout:layout}); | |
| 26 | + | |
| 27 | + for (var name in enabled) { | |
| 28 | + if (enabled[name]) { | |
| 29 | + $share.socialSharePrivacy('enable',name); | |
| 30 | + } | |
| 31 | + } | |
| 32 | + } | |
| 33 | + }); | |
| 34 | +}); | |
| 35 | +// ]]> | |
| 36 | +</script> | |
| 37 | +</head> | |
| 38 | +<body> | |
| 39 | + | |
| 40 | +<h1>Social Share Privacy: Dynamic Layout</h1> | |
| 41 | + | |
| 42 | +<div class="share"></div> | |
| 43 | + | |
| 44 | +<p> | |
| 45 | +This demonstrates how to change the layout dynamically without loosing the state. | |
| 46 | +</p> | |
| 47 | + | |
| 48 | +</body> | |
| 49 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/events.html
0 → 100644
| ... | ... | @@ -0,0 +1,45 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Events</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 13 | +<script type="text/javascript"> | |
| 14 | +// <![CDATA[ | |
| 15 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 16 | + | |
| 17 | +$(document).ready(function () { | |
| 18 | + // I simply call enable/disable on ALL share elements. This does not result in | |
| 19 | + // an endless-loops because enabling/disabling an already enabled/disabled | |
| 20 | + // service does nothing and thus doesn't trigger the event recursively. | |
| 21 | + $('.share').socialSharePrivacy(). | |
| 22 | + on('socialshareprivacy:enable', function (event) { | |
| 23 | + $('.share').socialSharePrivacy('enable',event.serviceName); | |
| 24 | + }). | |
| 25 | + on('socialshareprivacy:disable', function (event) { | |
| 26 | + $('.share').socialSharePrivacy('disable',event.serviceName); | |
| 27 | + }); | |
| 28 | +}); | |
| 29 | +// ]]> | |
| 30 | +</script> | |
| 31 | +</head> | |
| 32 | +<body> | |
| 33 | + | |
| 34 | +<h1>Social Share Privacy: Events</h1> | |
| 35 | + | |
| 36 | +<div class="share"></div> | |
| 37 | + | |
| 38 | +<p> | |
| 39 | +This demo demonstrates how multiple social share privacy widgets can be synchronized using events. | |
| 40 | +</p> | |
| 41 | + | |
| 42 | +<div class="share"></div> | |
| 43 | + | |
| 44 | +</body> | |
| 45 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/fbshare.html
0 → 100644
| ... | ... | @@ -0,0 +1,41 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Test the fbshare module</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/fbshare.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 14 | +<script type="text/javascript"> | |
| 15 | +// <![CDATA[ | |
| 16 | +// define button order and other defaults: | |
| 17 | +$.fn.socialSharePrivacy.settings.order = ['mail', 'fbshare', 'facebook', 'twitter', 'gplus']; | |
| 18 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 19 | +//$.fn.socialSharePrivacy.settings.perma_option = false; | |
| 20 | +$.fn.socialSharePrivacy.settings.info_link_target = '_blank'; | |
| 21 | + | |
| 22 | +$(document).ready(function () { | |
| 23 | + $('.share').socialSharePrivacy(); | |
| 24 | +}); | |
| 25 | +// ]]> | |
| 26 | +</script> | |
| 27 | +</head> | |
| 28 | +<body> | |
| 29 | + | |
| 30 | +<h1>Social Share Privacy: Test the fbshare module</h1> | |
| 31 | + | |
| 32 | +<div class="share"></div> | |
| 33 | +<div style="float:left" class="share" data-layout="box"></div> | |
| 34 | + | |
| 35 | +<p> | |
| 36 | +This page tests fbshare in "line" and "box" layouts.<br> | |
| 37 | +The rest of the share buttons are here so that it doesn't feel too lonely :) | |
| 38 | +</p> | |
| 39 | + | |
| 40 | +</body> | |
| 41 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/options.html
0 → 100644
| ... | ... | @@ -0,0 +1,124 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: More Options</title> | |
| 6 | + | |
| 7 | +<meta property="og:image" content="http://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Example.svg/600px-Example.svg.png"/> | |
| 8 | + | |
| 9 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 10 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 12 | +<script type="text/javascript" src="../javascripts/modules/buffer.js"></script> | |
| 13 | +<script type="text/javascript" src="../javascripts/modules/disqus.js"></script> | |
| 14 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 15 | +<script type="text/javascript" src="../javascripts/modules/flattr.js"></script> | |
| 16 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 17 | +<script type="text/javascript" src="../javascripts/modules/linkedin.js"></script> | |
| 18 | +<script type="text/javascript" src="../javascripts/modules/mail.js"></script> | |
| 19 | +<script type="text/javascript" src="../javascripts/modules/pinterest.js"></script> | |
| 20 | +<script type="text/javascript" src="../javascripts/modules/reddit.js"></script> | |
| 21 | +<script type="text/javascript" src="../javascripts/modules/stumbleupon.js"></script> | |
| 22 | +<script type="text/javascript" src="../javascripts/modules/tumblr.js"></script> | |
| 23 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 24 | +<script type="text/javascript" src="../javascripts/modules/xing.js"></script> | |
| 25 | +<script type="text/javascript" src="../javascripts/modules/delicious.js"></script> | |
| 26 | +<script type="text/javascript" src="../javascripts/modules/hackernews.js"></script> | |
| 27 | +<script type="text/javascript" src="../javascripts/settings.js"></script> | |
| 28 | +<script type="application/x-social-share-privacy-settings"> | |
| 29 | +// You can define global options like this. | |
| 30 | +// This is actually not JSON but a single JavaScript expression. | |
| 31 | +// This way you could define an inline service here. | |
| 32 | +{ | |
| 33 | + path_prefix: '../', | |
| 34 | + // define the default order of the buttons: | |
| 35 | + // services that aren't listed are added at the end sorted alphabetiacally | |
| 36 | + order: ['facebook', 'gplus', 'twitter', 'tumblr'] | |
| 37 | +} | |
| 38 | +</script> | |
| 39 | +<script type="text/javascript"> | |
| 40 | +// <![CDATA[ | |
| 41 | +$(document).ready(function () { | |
| 42 | + $('#share1').socialSharePrivacy({ | |
| 43 | + services: { | |
| 44 | + facebook: { status: false }, | |
| 45 | + tumblr: { | |
| 46 | + type : 'video', | |
| 47 | + caption : "RickRoll'D", | |
| 48 | + embed : '<iframe width="420" height="315" src="http://www.youtube.com/embed/oHg5SJYRHA0" frameborder="0" allowfullscreen></iframe>' | |
| 49 | + }, | |
| 50 | + disqus: { | |
| 51 | + shortname : 'socialshareprivacy', | |
| 52 | + count : 'reactions' | |
| 53 | + } | |
| 54 | + } | |
| 55 | + }); | |
| 56 | + $('#share2').socialSharePrivacy(); | |
| 57 | + $('#share3').socialSharePrivacy({ | |
| 58 | + services: { | |
| 59 | + tumblr: { | |
| 60 | + type : 'link', | |
| 61 | + name : 'Post a link on Tumblr', | |
| 62 | + description : 'Demo showing how to use Shocial Share Privacy to post a link on Tumblr.' | |
| 63 | + } | |
| 64 | + }, | |
| 65 | + uri: 'http://example.com/' | |
| 66 | + }); | |
| 67 | + $('#share4').socialSharePrivacy({ | |
| 68 | + title: 'An orc drawn with pencil, traced and colored in inkscape.', | |
| 69 | + image: 'http://www.deviantart.com/download/4617948/orc__blizzard_x_mas_like____colored.png', | |
| 70 | + services: { | |
| 71 | + facebook : { status : false }, | |
| 72 | + twitter : { status : false }, | |
| 73 | + gplus : { status : false }, | |
| 74 | + tumblr : { type : 'photo' } | |
| 75 | + } | |
| 76 | + }); | |
| 77 | +}); | |
| 78 | +// ]]> | |
| 79 | +</script> | |
| 80 | +<style type="text/css"> | |
| 81 | +body { | |
| 82 | + padding-left: 110px; | |
| 83 | +} | |
| 84 | +#share2 { | |
| 85 | + position: absolute; | |
| 86 | + top: 40px; | |
| 87 | + left: 10px; | |
| 88 | +} | |
| 89 | +</style> | |
| 90 | +</head> | |
| 91 | +<body> | |
| 92 | + | |
| 93 | +<h1>Social Share Privacy: More Options</h1> | |
| 94 | + | |
| 95 | +<p> | |
| 96 | +... | |
| 97 | +</p> | |
| 98 | + | |
| 99 | +<div id="share1"></div> | |
| 100 | + | |
| 101 | +<p> | |
| 102 | +... | |
| 103 | +</p> | |
| 104 | + | |
| 105 | +<div id="share2" | |
| 106 | + data-layout="box" | |
| 107 | + data-uri="http://panzi.github.com/SocialSharePrivacy/" | |
| 108 | + data-services.tumblr="{type:'quote',quote:'The best way to use social sharing.'}" | |
| 109 | + data-services.disqus.shortname="socialshareprivacy"></div> | |
| 110 | + | |
| 111 | +<p> | |
| 112 | +... | |
| 113 | +</p> | |
| 114 | + | |
| 115 | +<div id="share3"></div> | |
| 116 | + | |
| 117 | +<p> | |
| 118 | +... | |
| 119 | +</p> | |
| 120 | + | |
| 121 | +<div id="share4"></div> | |
| 122 | + | |
| 123 | +</body> | |
| 124 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/perma_option.html
0 → 100644
| ... | ... | @@ -0,0 +1,95 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: Perma Option</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../javascripts/socialshareprivacy.js"></script> | |
| 9 | +<script type="text/javascript" src="../javascripts/modules/facebook.js"></script> | |
| 10 | +<script type="text/javascript" src="../javascripts/modules/twitter.js"></script> | |
| 11 | +<script type="text/javascript" src="../javascripts/modules/gplus.js"></script> | |
| 12 | +<script type="text/javascript"> | |
| 13 | +// <![CDATA[ | |
| 14 | +// define the default order of the buttons: | |
| 15 | +$.fn.socialSharePrivacy.settings.order = ['facebook', 'gplus', 'twitter']; | |
| 16 | +$.fn.socialSharePrivacy.settings.path_prefix = '../'; | |
| 17 | + | |
| 18 | +$(document).ready(function () { | |
| 19 | + $('#share1').socialSharePrivacy({ | |
| 20 | + perma_option: false, | |
| 21 | + info_link_target: '_blank' | |
| 22 | + }); | |
| 23 | + | |
| 24 | + $('#share2').socialSharePrivacy({ | |
| 25 | + // Set perma_option to true. | |
| 26 | + // Initially it is only set to true if jQuery.cookie is available. | |
| 27 | + perma_option: true, | |
| 28 | + set_perma_option: function (service_name) { | |
| 29 | + localStorage.setItem('socialSharePrivacy_'+service_name, 'perma_on'); | |
| 30 | + }, | |
| 31 | + del_perma_option: function (service_name) { | |
| 32 | + localStorage.removeItem('socialSharePrivacy_'+service_name); | |
| 33 | + }, | |
| 34 | + // Only one of the two methods "get_perma_options" and "get_perma_option" has | |
| 35 | + // to be implemented. Though the other has to be set to null, so the default | |
| 36 | + // cookie based method is not used. | |
| 37 | + get_perma_options: null, | |
| 38 | + get_perma_option: function (service_name) { | |
| 39 | + return localStorage.getItem('socialSharePrivacy_'+service_name) === 'perma_on'; | |
| 40 | + } | |
| 41 | + }); | |
| 42 | + | |
| 43 | + var $share3 = $('#share3').socialSharePrivacy({ | |
| 44 | + // no perma options menu: | |
| 45 | + perma_option: false | |
| 46 | + }).on('socialshareprivacy:enable', function (event) { | |
| 47 | + // set perma option for enabled service: | |
| 48 | + var options = $(this).socialSharePrivacy('options'); | |
| 49 | + options.set_perma_option(event.serviceName, options); | |
| 50 | + }).on('socialshareprivacy:disable', function (event) { | |
| 51 | + // delete perma option for disabled service: | |
| 52 | + var options = $(this).socialSharePrivacy('options'); | |
| 53 | + options.del_perma_option(event.serviceName, options); | |
| 54 | + }); | |
| 55 | + | |
| 56 | + // manually enable services for which the perma option is set: | |
| 57 | + var options = $share3.socialSharePrivacy('options'); | |
| 58 | + var perma = options.get_perma_options(options); | |
| 59 | + for (var service_name in options.services) { | |
| 60 | + if (perma[service_name]) { | |
| 61 | + $share3.socialSharePrivacy('enable',service_name); | |
| 62 | + } | |
| 63 | + } | |
| 64 | + | |
| 65 | + // prevent ref-cycles via closures (not needed for somewhat recent browsers, | |
| 66 | + // but I like to do it anyway): | |
| 67 | + options = $share3 = perma = null; | |
| 68 | +}); | |
| 69 | +// ]]> | |
| 70 | +</script> | |
| 71 | +</head> | |
| 72 | +<body> | |
| 73 | + | |
| 74 | +<h1>Social Share Privacy: perma Option</h1> | |
| 75 | + | |
| 76 | +<p> | |
| 77 | +Share buttons without perma option: | |
| 78 | +</p> | |
| 79 | + | |
| 80 | +<div id="share1"></div> | |
| 81 | + | |
| 82 | +<p> | |
| 83 | +Share buttons that use HTML5 localStorage for perma options: | |
| 84 | +</p> | |
| 85 | + | |
| 86 | +<div id="share2"></div> | |
| 87 | + | |
| 88 | +<p> | |
| 89 | +Automatically set the perma option if you enable a service: | |
| 90 | +</p> | |
| 91 | + | |
| 92 | +<div id="share3"></div> | |
| 93 | + | |
| 94 | +</body> | |
| 95 | +</html> | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/demo/testbuild.html
0 → 100644
| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | +<!DOCTYPE html> | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | |
| 5 | +<title>Social Share Privacy: test build.sh output</title> | |
| 6 | +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
| 7 | +<script type="text/javascript" src="http://panzi.github.com/SocialSharePrivacy/javascripts/jquery.cookies.js"></script> | |
| 8 | +<script type="text/javascript" src="../build/javascripts/jquery.socialshareprivacy.min.js"></script> | |
| 9 | +<script type="text/javascript"> | |
| 10 | +// <![CDATA[ | |
| 11 | +// define module order (1-click modules first) and other defaults | |
| 12 | +$.fn.socialSharePrivacy.settings.order = ['mail','tumblr','fbshare','facebook']; | |
| 13 | +$.fn.socialSharePrivacy.settings.description = 'SocialSharePrivacy build tester'; | |
| 14 | +$.fn.socialSharePrivacy.settings.path_prefix = '../build/'; | |
| 15 | +// flattr needs a valid id or it fails. It's not a hint that you should flattr panzi ;) | |
| 16 | +$.fn.socialSharePrivacy.settings.services.flattr.uid = 'panzi'; | |
| 17 | + | |
| 18 | +$(document).ready(function () { | |
| 19 | + $('.share').socialSharePrivacy(); | |
| 20 | +}); | |
| 21 | +// ]]> | |
| 22 | +</script> | |
| 23 | +</head> | |
| 24 | +<body> | |
| 25 | + | |
| 26 | +<h1>Social Share Privacy: test build.sh output</h1> | |
| 27 | +<div style="height:42px"><!-- leave space for tooltips --></div> | |
| 28 | +<div class="share"></div> | |
| 29 | +<div style="clear:both; float:left" class="share" data-layout="box"></div> | |
| 30 | +<div style="margin-top:23px"><!-- Not sure why I need this, but apparently - I do :( --> | |
| 31 | +If you've used <code>build.sh</code>, you should see here all modules you've included (in both line and box layouts).<br> | |
| 32 | +If you haven't - you won't see anything here :)<br> | |
| 33 | +Run <code>./build.sh -h</code> from <code>..</code> to see available options. | |
| 34 | +</div> | |
| 35 | +</body> | |
| 36 | +</html> | ... | ... |
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
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 – 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 – 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 – 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"> </a></span></div>'); | |
| 51 | + } | |
| 52 | + else { | |
| 53 | + $code = $('<div class="disqus-widget">'+ | |
| 54 | + '<div class="count"><i></i><u></u><a href="#disqus_thread"> </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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 | + '<': '<', | |
| 235 | + '>': '>', | |
| 236 | + '&': '&', | |
| 237 | + '"': '"', | |
| 238 | + "'": ''' | |
| 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/join-trans.js
0 → 100644
| ... | ... | @@ -0,0 +1,23 @@ |
| 1 | +var fs = require('fs'); | |
| 2 | +var extend = require('extend'); | |
| 3 | + | |
| 4 | +var jQuery = { | |
| 5 | + fn: {socialSharePrivacy: {settings: {services: {}}}}, | |
| 6 | + extend: extend | |
| 7 | +}; | |
| 8 | + | |
| 9 | +for (var i = 2; i < process.argv.length; ++ i) { | |
| 10 | + var filename = process.argv[i]; | |
| 11 | + var m = /modules\/(.*)?\.js$/.exec(filename); | |
| 12 | + | |
| 13 | + if (m) { | |
| 14 | + jQuery.fn.socialSharePrivacy.settings.services[m[1]] = {}; | |
| 15 | + } | |
| 16 | + | |
| 17 | + eval(fs.readFileSync(filename,'utf8')); | |
| 18 | +} | |
| 19 | + | |
| 20 | +var script = 'jQuery.extend(true,jQuery.fn.socialSharePrivacy.settings,'+ | |
| 21 | + JSON.stringify(jQuery.fn.socialSharePrivacy.settings)+');\n'; | |
| 22 | + | |
| 23 | +process.stdout.write(script,"utf8"); | ... | ... |
plugins/social_share_privacy/public/socialshareprivacy/stylesheets/common.css
0 → 100644
| ... | ... | @@ -0,0 +1,230 @@ |
| 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 | +} | |
| 28 | +.social_share_privacy_area li .dummy_btn { | |
| 29 | + cursor: pointer; | |
| 30 | + padding: 0; | |
| 31 | + height: inherit; | |
| 32 | +} | |
| 33 | +.social_share_privacy_area.line li .dummy_btn { | |
| 34 | + float: left; | |
| 35 | + margin: 0 20px 0 10px; | |
| 36 | +} | |
| 37 | +.social_share_privacy_area.box li .dummy_btn { | |
| 38 | + margin-bottom: 10px; | |
| 39 | +} | |
| 40 | +.social_share_privacy_area li .dummy_btn img.privacy_dummy, | |
| 41 | +.social_share_privacy_area li .dummy_btn iframe { | |
| 42 | + vertical-align: bottom; | |
| 43 | +} | |
| 44 | +.social_share_privacy_area li .dummy_btn iframe { | |
| 45 | + overflow: hidden; | |
| 46 | + height: inherit; | |
| 47 | + width: inherit; | |
| 48 | + border-style: none; | |
| 49 | +} | |
| 50 | +.social_share_privacy_area.line li { | |
| 51 | + display: inline-block; | |
| 52 | +} | |
| 53 | +/* Switch begin */ | |
| 54 | +.social_share_privacy_area li .switch { | |
| 55 | + display: inline-block; | |
| 56 | + text-indent: -9999em; | |
| 57 | + background: transparent url(../images/socialshareprivacy_on_off.png) no-repeat 0 0 scroll; | |
| 58 | + width: 23px; | |
| 59 | + height: 12px; | |
| 60 | + overflow: hidden; | |
| 61 | + margin: 4px 0 0; | |
| 62 | + padding: 0; | |
| 63 | + cursor: pointer; | |
| 64 | +} | |
| 65 | +.social_share_privacy_area.line li .switch { | |
| 66 | + float: left; | |
| 67 | +} | |
| 68 | +.social_share_privacy_area li .switch.on { | |
| 69 | + background-position: 0 -12px; | |
| 70 | +} | |
| 71 | +/* Switch end */ | |
| 72 | +/* Tooltips begin */ | |
| 73 | +.social_share_privacy_area li.help_info { | |
| 74 | + position: relative; | |
| 75 | +} | |
| 76 | +.social_share_privacy_area li.settings_info, | |
| 77 | +.social_share_privacy_area li.help_info .info { | |
| 78 | + text-align: left; | |
| 79 | +} | |
| 80 | +.social_share_privacy_area li.help_info .info, | |
| 81 | +.social_share_privacy_area li .help_info.icon .info { | |
| 82 | + display: none; | |
| 83 | + position: absolute; | |
| 84 | + bottom: 40px; | |
| 85 | + width: 290px; | |
| 86 | + padding: 10px 15px; | |
| 87 | + margin: 0; | |
| 88 | + font-size: 12px; | |
| 89 | + line-height: 16px; | |
| 90 | + font-weight: bold; | |
| 91 | + border: 1px solid #ccc; | |
| 92 | + -moz-border-radius: 4px; | |
| 93 | + -webkit-border-radius: 4px; | |
| 94 | + border-radius: 4px; | |
| 95 | + -moz-box-shadow: 0px 0px 15px rgba(0,0,0,0.4); | |
| 96 | + -webkit-box-shadow: 0px 0px 15px rgba(0,0,0,0.4); | |
| 97 | + box-shadow: 0px 0px 15px rgba(0,0,0,0.4); | |
| 98 | + background-color: #fdfbec; | |
| 99 | + color: #000; | |
| 100 | + z-index: 500; | |
| 101 | +} | |
| 102 | +.social_share_privacy_area.line li.help_info .info, | |
| 103 | +.social_share_privacy_area li .help_info.icon .info { | |
| 104 | + left: 0; | |
| 105 | +} | |
| 106 | +.social_share_privacy_area.box li.help_info .info { | |
| 107 | + left: 100%; | |
| 108 | + top: 0px; | |
| 109 | + bottom: auto; | |
| 110 | +} | |
| 111 | +.social_share_privacy_area li .help_info.icon .info { | |
| 112 | + width: 350px; | |
| 113 | +} | |
| 114 | +.social_share_privacy_area li.help_info.display .info, | |
| 115 | +.social_share_privacy_area li .help_info.icon.display .info { | |
| 116 | + display: block; | |
| 117 | +} | |
| 118 | +.social_share_privacy_area li.help_info.info_off.display .info { | |
| 119 | + display: none; | |
| 120 | +} | |
| 121 | +.social_share_privacy_area li .help_info.icon { | |
| 122 | + background: #fff url(../images/socialshareprivacy_info.png) no-repeat center center scroll; | |
| 123 | + width: 25px; | |
| 124 | + height: 20px; | |
| 125 | + position: relative; | |
| 126 | + display: inline-block; | |
| 127 | + vertical-align: top; | |
| 128 | + border: 2px solid #e7e3e3; | |
| 129 | + border-right-width: 0; | |
| 130 | + -moz-border-radius: 5px 0 0 5px; | |
| 131 | + -webkit-border-radius: 5px 0 0 5px; | |
| 132 | + border-radius: 5px 0 0 5px; | |
| 133 | + margin: 0; | |
| 134 | + padding: 0; | |
| 135 | +} | |
| 136 | +.social_share_privacy_area li.settings_info .settings_info_menu.perma_option_off .help_info.icon { | |
| 137 | + border-right-width: 2px; | |
| 138 | + -moz-border-radius: 5px; | |
| 139 | + -webkit-border-radius: 5px; | |
| 140 | + border-radius: 5px; | |
| 141 | +} | |
| 142 | +/* Tooltips end */ | |
| 143 | +/* Settings/Info begin */ | |
| 144 | +.social_share_privacy_area li.settings_info { | |
| 145 | + position: relative; | |
| 146 | + top: -2px; | |
| 147 | +} | |
| 148 | +.social_share_privacy_area li.settings_info a { | |
| 149 | + text-decoration: none; | |
| 150 | + margin: 0 !important; | |
| 151 | +} | |
| 152 | +.social_share_privacy_area li.settings_info .settings_info_menu { | |
| 153 | + background-color: #f3f4f5; | |
| 154 | + color: #000; | |
| 155 | + border-style: none; | |
| 156 | + -moz-border-radius: 5px; | |
| 157 | + -webkit-border-radius: 5px; | |
| 158 | + border-radius: 5px; | |
| 159 | + -moz-box-shadow: 0px 0px 15px rgba(0,0,0,0.4); | |
| 160 | + -webkit-box-shadow: 0px 0px 15px rgba(0,0,0,0.4); | |
| 161 | + box-shadow: 0px 0px 15px rgba(0,0,0,0.4); | |
| 162 | + left: 0; | |
| 163 | + position: absolute; | |
| 164 | + top: 0; | |
| 165 | + min-width: 135px; | |
| 166 | + margin: 0; | |
| 167 | + padding: 0; | |
| 168 | +} | |
| 169 | +.social_share_privacy_area li.settings_info .settings_info_menu.on { | |
| 170 | + z-index: 1000; | |
| 171 | +} | |
| 172 | +.social_share_privacy_area li.settings_info .settings_info_menu.off { | |
| 173 | + border-width: 0; | |
| 174 | + -moz-box-shadow: none; | |
| 175 | + -webkit-box-shadow: none; | |
| 176 | + box-shadow: none; | |
| 177 | + background-color: transparent; | |
| 178 | +} | |
| 179 | +.social_share_privacy_area li.settings_info .settings_info_menu.off form { | |
| 180 | + display: none; | |
| 181 | + margin: 0; | |
| 182 | + padding: 0; | |
| 183 | +} | |
| 184 | +.social_share_privacy_area li.settings_info .settings_info_menu .settings { | |
| 185 | + text-indent: -9999em; | |
| 186 | + display: inline-block; | |
| 187 | + background: #fff url(../images/settings.png) no-repeat center center scroll; | |
| 188 | + width: 25px; | |
| 189 | + height: 20px; | |
| 190 | + border: 2px solid #e7e3e3; | |
| 191 | + -moz-border-radius: 0 5px 5px 0; | |
| 192 | + -webkit-border-radius: 0 5px 5px 0; | |
| 193 | + border-radius: 0 5px 5px 0; | |
| 194 | + border-left: 1px solid #ddd; | |
| 195 | + margin: 0; | |
| 196 | + padding: 0; | |
| 197 | +} | |
| 198 | +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset { | |
| 199 | + border-width: 0; | |
| 200 | + margin: 0; | |
| 201 | + padding: 0 10px 10px; | |
| 202 | +} | |
| 203 | +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset legend { | |
| 204 | + font-size: 11px; | |
| 205 | + font-weight: bold; | |
| 206 | + line-height: 14px; | |
| 207 | + margin: 0; | |
| 208 | + padding: 10px 0; | |
| 209 | + width: 115px; | |
| 210 | +} | |
| 211 | +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset input { | |
| 212 | + margin: 4px 10px 4px 0; | |
| 213 | + padding: 0; | |
| 214 | +} | |
| 215 | +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset label { | |
| 216 | + display: block; | |
| 217 | + font-size: 12px; | |
| 218 | + font-weight: bold; | |
| 219 | + line-height: 24px; | |
| 220 | + -moz-transition: color .5s ease-in; | |
| 221 | + -webkit-transition: color .5s ease-in; | |
| 222 | + transition: color .5s ease-in; | |
| 223 | + margin: 0; | |
| 224 | + padding: 0; | |
| 225 | + white-space: nowrap; | |
| 226 | +} | |
| 227 | +.social_share_privacy_area li.settings_info .settings_info_menu form fieldset label.checked { | |
| 228 | + color: #090; | |
| 229 | +} | |
| 230 | +/* 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,12 @@ |
| 1 | +.social_share_privacy_area.line .facebook .fb_like { | |
| 2 | + margin-right: 30px; | |
| 3 | + width: 120px; | |
| 4 | +} | |
| 5 | +.social_share_privacy_area.line .facebook iframe { | |
| 6 | + width: 130px; | |
| 7 | + height: 21px; | |
| 8 | +} | |
| 9 | +.social_share_privacy_area.box .facebook iframe { | |
| 10 | + width: 62px; | |
| 11 | + height: 62px; | |
| 12 | +} | ... | ... |
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: 98px; | |
| 5 | +} | |
| 6 | +.social_share_privacy_area.line .flattr a, | |
| 7 | +.social_share_privacy_area.line .flattr iframe { | |
| 8 | + width: 150px; | |
| 9 | + height: 20px; | |
| 10 | + margin-right: 20px; | |
| 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
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 | +} | ... | ... |