From 6313f504331fda5d3e84cc4bf09d90942e5cbf73 Mon Sep 17 00:00:00 2001 From: onli Date: Thu, 2 Oct 2014 18:11:13 +0200 Subject: [PATCH] Bundle Gravatar-plugin (not activated by default yet) --- plugins/serendipity_event_gravatar/ChangeLog | 366 ++++ .../UTF-8/documentation_cs.html | 433 +++++ .../UTF-8/documentation_cz.html | 433 +++++ .../UTF-8/lang_cs.inc.php | 62 + .../UTF-8/lang_cz.inc.php | 62 + .../UTF-8/lang_de.inc.php | 67 + .../UTF-8/lang_pl.inc.php | 64 + .../documentation/documentation.css | 11 + .../documentation/identicons.jpg | Bin 0 -> 15112 bytes .../documentation/monsterid.png | Bin 0 -> 6345 bytes .../documentation/wavatars.jpg | Bin 0 -> 10653 bytes .../documentation_cs.html | 433 +++++ .../documentation_cz.html | 433 +++++ .../documentation_de.html | 211 +++ .../documentation_en.html | 14 + .../lang_cs.inc.php | 62 + .../lang_cz.inc.php | 62 + .../lang_de.inc.php | 67 + .../lang_en.inc.php | 64 + .../lang_pl.inc.php | 64 + .../monsterid/README | 11 + .../monsterid/monsterid.php | 58 + .../monsterid/parts/arms_1.png | Bin 0 -> 313 bytes .../monsterid/parts/arms_2.png | Bin 0 -> 403 bytes .../monsterid/parts/arms_3.png | Bin 0 -> 393 bytes .../monsterid/parts/arms_4.png | Bin 0 -> 457 bytes .../monsterid/parts/arms_5.png | Bin 0 -> 897 bytes .../monsterid/parts/body_1.png | Bin 0 -> 550 bytes .../monsterid/parts/body_10.png | Bin 0 -> 565 bytes .../monsterid/parts/body_11.png | Bin 0 -> 805 bytes .../monsterid/parts/body_12.png | Bin 0 -> 611 bytes .../monsterid/parts/body_13.png | Bin 0 -> 598 bytes .../monsterid/parts/body_14.png | Bin 0 -> 601 bytes .../monsterid/parts/body_15.png | Bin 0 -> 605 bytes .../monsterid/parts/body_2.png | Bin 0 -> 617 bytes .../monsterid/parts/body_3.png | Bin 0 -> 441 bytes .../monsterid/parts/body_4.png | Bin 0 -> 825 bytes .../monsterid/parts/body_5.png | Bin 0 -> 648 bytes .../monsterid/parts/body_6.png | Bin 0 -> 617 bytes .../monsterid/parts/body_7.png | Bin 0 -> 685 bytes .../monsterid/parts/body_8.png | Bin 0 -> 592 bytes .../monsterid/parts/body_9.png | Bin 0 -> 677 bytes .../monsterid/parts/eyes_1.png | Bin 0 -> 380 bytes .../monsterid/parts/eyes_10.png | Bin 0 -> 524 bytes .../monsterid/parts/eyes_11.png | Bin 0 -> 447 bytes .../monsterid/parts/eyes_12.png | Bin 0 -> 286 bytes .../monsterid/parts/eyes_13.png | Bin 0 -> 561 bytes .../monsterid/parts/eyes_14.png | Bin 0 -> 551 bytes .../monsterid/parts/eyes_15.png | Bin 0 -> 458 bytes .../monsterid/parts/eyes_2.png | Bin 0 -> 430 bytes .../monsterid/parts/eyes_3.png | Bin 0 -> 390 bytes .../monsterid/parts/eyes_4.png | Bin 0 -> 314 bytes .../monsterid/parts/eyes_5.png | Bin 0 -> 380 bytes .../monsterid/parts/eyes_6.png | Bin 0 -> 328 bytes .../monsterid/parts/eyes_7.png | Bin 0 -> 333 bytes .../monsterid/parts/eyes_8.png | Bin 0 -> 396 bytes .../monsterid/parts/eyes_9.png | Bin 0 -> 247 bytes .../monsterid/parts/hair_1.png | Bin 0 -> 491 bytes .../monsterid/parts/hair_2.png | Bin 0 -> 369 bytes .../monsterid/parts/hair_3.png | Bin 0 -> 641 bytes .../monsterid/parts/hair_4.png | Bin 0 -> 316 bytes .../monsterid/parts/hair_5.png | Bin 0 -> 533 bytes .../monsterid/parts/image.info | 57 + .../monsterid/parts/legs_1.png | Bin 0 -> 319 bytes .../monsterid/parts/legs_2.png | Bin 0 -> 377 bytes .../monsterid/parts/legs_3.png | Bin 0 -> 367 bytes .../monsterid/parts/legs_4.png | Bin 0 -> 295 bytes .../monsterid/parts/legs_5.png | Bin 0 -> 364 bytes .../monsterid/parts/monsterparts.xcf | Bin 0 -> 65306 bytes .../monsterid/parts/mouth_1.png | Bin 0 -> 263 bytes .../monsterid/parts/mouth_10.png | Bin 0 -> 269 bytes .../monsterid/parts/mouth_2.png | Bin 0 -> 267 bytes .../monsterid/parts/mouth_3.png | Bin 0 -> 287 bytes .../monsterid/parts/mouth_4.png | Bin 0 -> 391 bytes .../monsterid/parts/mouth_5.png | Bin 0 -> 319 bytes .../monsterid/parts/mouth_6.png | Bin 0 -> 290 bytes .../monsterid/parts/mouth_7.png | Bin 0 -> 297 bytes .../monsterid/parts/mouth_8.png | Bin 0 -> 379 bytes .../monsterid/parts/mouth_9.png | Bin 0 -> 265 bytes .../serendipity_event_gravatar.php | 1527 +++++++++++++++++ .../wavatars/parts/brow1.png | Bin 0 -> 189 bytes .../wavatars/parts/brow2.png | Bin 0 -> 401 bytes .../wavatars/parts/brow3.png | Bin 0 -> 363 bytes .../wavatars/parts/brow4.png | Bin 0 -> 418 bytes .../wavatars/parts/brow5.png | Bin 0 -> 346 bytes .../wavatars/parts/brow6.png | Bin 0 -> 488 bytes .../wavatars/parts/brow7.png | Bin 0 -> 383 bytes .../wavatars/parts/brow8.png | Bin 0 -> 160 bytes .../wavatars/parts/eyes1.png | Bin 0 -> 941 bytes .../wavatars/parts/eyes10.png | Bin 0 -> 948 bytes .../wavatars/parts/eyes11.png | Bin 0 -> 871 bytes .../wavatars/parts/eyes12.png | Bin 0 -> 860 bytes .../wavatars/parts/eyes13.png | Bin 0 -> 929 bytes .../wavatars/parts/eyes2.png | Bin 0 -> 502 bytes .../wavatars/parts/eyes3.png | Bin 0 -> 883 bytes .../wavatars/parts/eyes4.png | Bin 0 -> 1235 bytes .../wavatars/parts/eyes5.png | Bin 0 -> 903 bytes .../wavatars/parts/eyes6.png | Bin 0 -> 934 bytes .../wavatars/parts/eyes7.png | Bin 0 -> 160 bytes .../wavatars/parts/eyes8.png | Bin 0 -> 715 bytes .../wavatars/parts/eyes9.png | Bin 0 -> 709 bytes .../wavatars/parts/fade1.png | Bin 0 -> 501 bytes .../wavatars/parts/fade2.png | Bin 0 -> 3051 bytes .../wavatars/parts/fade3.png | Bin 0 -> 1210 bytes .../wavatars/parts/fade4.png | Bin 0 -> 160 bytes .../wavatars/parts/mask1.png | Bin 0 -> 1865 bytes .../wavatars/parts/mask10.png | Bin 0 -> 2422 bytes .../wavatars/parts/mask11.png | Bin 0 -> 2189 bytes .../wavatars/parts/mask2.png | Bin 0 -> 759 bytes .../wavatars/parts/mask3.png | Bin 0 -> 1895 bytes .../wavatars/parts/mask4.png | Bin 0 -> 1210 bytes .../wavatars/parts/mask5.png | Bin 0 -> 1138 bytes .../wavatars/parts/mask6.png | Bin 0 -> 969 bytes .../wavatars/parts/mask7.png | Bin 0 -> 822 bytes .../wavatars/parts/mask8.png | Bin 0 -> 1586 bytes .../wavatars/parts/mask9.png | Bin 0 -> 1445 bytes .../wavatars/parts/mouth1.png | Bin 0 -> 308 bytes .../wavatars/parts/mouth10.png | Bin 0 -> 226 bytes .../wavatars/parts/mouth11.png | Bin 0 -> 962 bytes .../wavatars/parts/mouth12.png | Bin 0 -> 1028 bytes .../wavatars/parts/mouth13.png | Bin 0 -> 350 bytes .../wavatars/parts/mouth14.png | Bin 0 -> 391 bytes .../wavatars/parts/mouth15.png | Bin 0 -> 1430 bytes .../wavatars/parts/mouth16.png | Bin 0 -> 314 bytes .../wavatars/parts/mouth17.png | Bin 0 -> 719 bytes .../wavatars/parts/mouth18.png | Bin 0 -> 786 bytes .../wavatars/parts/mouth19.png | Bin 0 -> 571 bytes .../wavatars/parts/mouth2.png | Bin 0 -> 548 bytes .../wavatars/parts/mouth3.png | Bin 0 -> 446 bytes .../wavatars/parts/mouth4.png | Bin 0 -> 457 bytes .../wavatars/parts/mouth5.png | Bin 0 -> 421 bytes .../wavatars/parts/mouth6.png | Bin 0 -> 290 bytes .../wavatars/parts/mouth7.png | Bin 0 -> 188 bytes .../wavatars/parts/mouth8.png | Bin 0 -> 360 bytes .../wavatars/parts/mouth9.png | Bin 0 -> 486 bytes .../wavatars/parts/pupils1.png | Bin 0 -> 529 bytes .../wavatars/parts/pupils10.png | Bin 0 -> 478 bytes .../wavatars/parts/pupils11.png | Bin 0 -> 298 bytes .../wavatars/parts/pupils2.png | Bin 0 -> 516 bytes .../wavatars/parts/pupils3.png | Bin 0 -> 462 bytes .../wavatars/parts/pupils4.png | Bin 0 -> 454 bytes .../wavatars/parts/pupils5.png | Bin 0 -> 397 bytes .../wavatars/parts/pupils6.png | Bin 0 -> 308 bytes .../wavatars/parts/pupils7.png | Bin 0 -> 241 bytes .../wavatars/parts/pupils8.png | Bin 0 -> 309 bytes .../wavatars/parts/pupils9.png | Bin 0 -> 849 bytes .../wavatars/parts/shine1.png | Bin 0 -> 5561 bytes .../wavatars/parts/shine10.png | Bin 0 -> 4153 bytes .../wavatars/parts/shine11.png | Bin 0 -> 4242 bytes .../wavatars/parts/shine2.png | Bin 0 -> 3016 bytes .../wavatars/parts/shine3.png | Bin 0 -> 3772 bytes .../wavatars/parts/shine4.png | Bin 0 -> 3386 bytes .../wavatars/parts/shine5.png | Bin 0 -> 3219 bytes .../wavatars/parts/shine6.png | Bin 0 -> 3464 bytes .../wavatars/parts/shine7.png | Bin 0 -> 3704 bytes .../wavatars/parts/shine8.png | Bin 0 -> 3224 bytes .../wavatars/parts/shine9.png | Bin 0 -> 3261 bytes .../wavatars/wavatars.php | 145 ++ .../ycon/ycon.image.php | 14 + .../serendipity_event_gravatar/ycon/ycon.php | 285 +++ 160 files changed, 5005 insertions(+) create mode 100644 plugins/serendipity_event_gravatar/ChangeLog create mode 100644 plugins/serendipity_event_gravatar/UTF-8/documentation_cs.html create mode 100644 plugins/serendipity_event_gravatar/UTF-8/documentation_cz.html create mode 100644 plugins/serendipity_event_gravatar/UTF-8/lang_cs.inc.php create mode 100644 plugins/serendipity_event_gravatar/UTF-8/lang_cz.inc.php create mode 100644 plugins/serendipity_event_gravatar/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_gravatar/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_gravatar/documentation/documentation.css create mode 100644 plugins/serendipity_event_gravatar/documentation/identicons.jpg create mode 100644 plugins/serendipity_event_gravatar/documentation/monsterid.png create mode 100644 plugins/serendipity_event_gravatar/documentation/wavatars.jpg create mode 100644 plugins/serendipity_event_gravatar/documentation_cs.html create mode 100644 plugins/serendipity_event_gravatar/documentation_cz.html create mode 100644 plugins/serendipity_event_gravatar/documentation_de.html create mode 100644 plugins/serendipity_event_gravatar/documentation_en.html create mode 100644 plugins/serendipity_event_gravatar/lang_cs.inc.php create mode 100644 plugins/serendipity_event_gravatar/lang_cz.inc.php create mode 100644 plugins/serendipity_event_gravatar/lang_de.inc.php create mode 100644 plugins/serendipity_event_gravatar/lang_en.inc.php create mode 100644 plugins/serendipity_event_gravatar/lang_pl.inc.php create mode 100644 plugins/serendipity_event_gravatar/monsterid/README create mode 100644 plugins/serendipity_event_gravatar/monsterid/monsterid.php create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/arms_1.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/arms_2.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/arms_3.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/arms_4.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/arms_5.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_1.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_10.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_11.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_12.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_13.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_14.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_15.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_2.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_3.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_4.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_5.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_6.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_7.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_8.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/body_9.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_1.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_10.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_11.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_12.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_13.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_14.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_15.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_2.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_3.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_4.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_5.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_6.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_7.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_8.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/eyes_9.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/hair_1.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/hair_2.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/hair_3.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/hair_4.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/hair_5.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/image.info create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/legs_1.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/legs_2.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/legs_3.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/legs_4.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/legs_5.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/monsterparts.xcf create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_1.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_10.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_2.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_3.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_4.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_5.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_6.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_7.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_8.png create mode 100644 plugins/serendipity_event_gravatar/monsterid/parts/mouth_9.png create mode 100755 plugins/serendipity_event_gravatar/serendipity_event_gravatar.php create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow1.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow2.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow3.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow4.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow5.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow6.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow7.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/brow8.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes1.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes10.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes11.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes12.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes13.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes2.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes3.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes4.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes5.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes6.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes7.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes8.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/eyes9.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/fade1.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/fade2.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/fade3.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/fade4.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask1.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask10.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask11.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask2.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask3.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask4.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask5.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask6.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask7.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask8.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mask9.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth1.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth10.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth11.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth12.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth13.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth14.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth15.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth16.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth17.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth18.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth19.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth2.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth3.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth4.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth5.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth6.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth7.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth8.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/mouth9.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils1.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils10.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils11.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils2.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils3.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils4.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils5.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils6.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils7.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils8.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/pupils9.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine1.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine10.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine11.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine2.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine3.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine4.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine5.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine6.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine7.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine8.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/parts/shine9.png create mode 100644 plugins/serendipity_event_gravatar/wavatars/wavatars.php create mode 100644 plugins/serendipity_event_gravatar/ycon/ycon.image.php create mode 100644 plugins/serendipity_event_gravatar/ycon/ycon.php diff --git a/plugins/serendipity_event_gravatar/ChangeLog b/plugins/serendipity_event_gravatar/ChangeLog new file mode 100644 index 00000000..5a2ec1c6 --- /dev/null +++ b/plugins/serendipity_event_gravatar/ChangeLog @@ -0,0 +1,366 @@ +# + * Allows other plugins to fetch user metadata via + avatar_fetch_userinfos hook. + * supports !# twitter links now, too. + +Version 1.57: (brockhaus) + * Better Gravatar handling, as the call changed a little + * Doesn't accept existing but empty images anymore. + +Version 1.56: (brockhaus) +------------------------------------------------------------------------ + * Removed inline styles, added class avatar_right and avatar_left. + If not found set in css, the plugin will emit a default style for + those two. + +Version 1.55: (brockhaus) +------------------------------------------------------------------------ + * Twitter and identica where not fetched correctly if fetched first. + +Version 1.54: +------------------------------------------------------------------------ + * Made PLUGIN_GRAVATAR_SUPPORTED recognize %s as variable for + list of supported services + +Version 1.52: +------------------------------------------------------------------------ + * Changed display of supported avatars in the comment area in order + to allow nice linebreaks. + +Version 1.51: +------------------------------------------------------------------------ + * Use strtolower() for mail names + +Version 1.49 (brockhaus) +------------------------------------------------------------------------ + * Pavatar in blogs having redirection didn't work, if Pavatar link + was only available in rel link info. + +Version 1.48 (brockhaus) +------------------------------------------------------------------------ + * FIX: PHP compatibility was broken since 1.46 :-/ + * Added Identica Avatar. + This is mainly used for Identica Pingbacks and should be used in + front of Favatar, else the Identica sign will show up. + * Code cleanup. + +Version 1.47 (brockhaus) +------------------------------------------------------------------------ + * Disabled debug logging into template_c + +Version 1.46 (brockhaus) +------------------------------------------------------------------------ + + * Added Twitter Avatar (if URL points to a twitter profile) + This is mainly used for Tweetbacks and should be used in front of + Favatar, else the twitter sign will show up. + * Code cleanup. + +Version 1.45 (brockhaus) +------------------------------------------------------------------------ + + * Helpfiles + * Cleanup. + +Version 1.44 (brockhaus) +------------------------------------------------------------------------ + + * Added buildin wavatar suport. + * Support for Gravatar fallbacks identyicon, monsterid and wavatar. + * Optimized trackback avatars: Querypars will be stripped from URL. + Now in example S8Y blogs always get the same Avatar cached, not + one per trackback. + +Version 1.43 (brockhaus) +------------------------------------------------------------------------ + + * Option for adding the authors name to the ALT attribute of the + avatar image. Normaly this is filled with a *, but blind people + depend on the ALT tag. + +Version 1.42 (brockhaus) +------------------------------------------------------------------------ + + * Encoded _ in user urls in order to differ them from the + seperators. urlencode doesn't encode _. Thanks to Tino Schwarze + finding and fixing this. + +Version 1.41 (garvinhicking) +------------------------------------------------------------------------ + + * Fixed Last-Modified Header of avatar images. + +Version 1.40 () +------------------------------------------------------------------------ + + * Added ycon support (mo, http://moblog.wiredwings.com) + +------------------------------------------------------------------------ +Version 1.39 (brockhaus): + + * Monster Avatars are cached now, too, as creating them costs time. + +------------------------------------------------------------------------ +Version 1.38 (brockhaus): + + * Support for Monster ID avatars (details found on + http://www.splitbrain.org/go/monsterid) + * Crashed while fresh installing and cache time set to 0 + * Allows configuring absolute path to standard avatar now. + * After saving the configuration now the cache is *always* cleared, + in order to make the changes visible immidiately even if caching + is enabled. + * If the plugin is unable to write into the cache, it will log it + in debug mode and show the default image, if no cached file found. + +------------------------------------------------------------------------ +Version 1.37 (brockhaus): + + * The avatar type infoline below the comments editor is optional now + +------------------------------------------------------------------------ +Version 1.36 (brockhaus): + + * Added new option: You can define, that the plugin should not + produce avatar image directly but a smarty tag only. If this + option is switched on, you can define in your comments template, + where the avatar should be displayed using the smarty tag + $comment.comment_avatar + * Css class of avatar will change depending on where it is + displayed. For normal comments it will be "comment_avatar", for the + recent entries plugin it will be "serendipity_plugin_comments_avatar" + in order to have the possibility to easily style it. + * Avatar alignment configuration: The configured alignment will be + used, if the avatar is written directliy (no smarty tag). + * New option for switching on/off the avatar images in the sidebar + plugin (recent comments). + * Supported avatar methods where displayed in the contact form + plugin too, but this made no sense. Disabled it there. + * Some more changes in the language files. + +------------------------------------------------------------------------ +Version 1.35 (brockhaus): + + * Corrected errors in English language file. (Thanks to Don!) + +------------------------------------------------------------------------ +Version 1.34 (brockhaus): + + * Gravatars rating doesn't work reliable. My G rated Gravatar is only + shown, if I use Gravatar X rating. :-/ + Added an option to switch off Gravatars rating parameter (what + should be the same as using X rating) + +------------------------------------------------------------------------ +Version 1.33 (brockhaus): + + * Pavatar: X-Pavatar Header is supported now again and is the first + pavatar autodetect method used. + +------------------------------------------------------------------------ +Version 1.32 (brockhaus): + + * MyBlogLog default avatar was not detected correctly anmore. :-/ + * If no email nor url is given, but default avatar is defined, now + the default avatar is displayed. + +------------------------------------------------------------------------ +Version 1.31 (brockhaus): + + * Changed call-time pass-by-reference bug (fetchAvatar) + +------------------------------------------------------------------------ +Version 1.30 (brockhaus): + + * Standard Avatar was not displayed in subdirectory blog + installtions. + * Gravatar link was slightly wrong (but working) + +------------------------------------------------------------------------ +Version 1.29 (brockhaus): + + * Bugfix 1.27 added http:// even if no URL was given at all. + +------------------------------------------------------------------------ +Version 1.28 (brockhaus): + + * With Serendipity 1.1 it was not possible to configure a default + avatar. The configuration was not 1.1 compatible. + +------------------------------------------------------------------------ +Version 1.27 (brockhaus): + + * If the writer entered his url as www.domain.de instead of + http://www.domain.de, the Avatar was not always loaded correctly + +------------------------------------------------------------------------ +Version 1.26 (brockhaus): + + * MyBlogLog changed avatar calling slightly resuling MyBlogLog Avatar + fallback not working anymore. + +------------------------------------------------------------------------ +Version 1.25 (garvinhicking): + + * Replaced align with style attributes, as there is no align in + XHTML + +------------------------------------------------------------------------ +Version 1.24 (brockhaus): + + * Check MyBlogLog result if it really is an image. + * Cleaning up cache directory when setting cache to 0. + * Debug logging disabled. + +------------------------------------------------------------------------ +Version 1.23 (brockhaus): + + * While fresh fetching P/Favatars, the Plugin will only accept + responses declared as image by the remote server. This will + prevent accepting potential error html pages as Avatar images. + +------------------------------------------------------------------------ +Version 1.22 (brockhaus): + + * Fetch redirected P/Favatars, too. + +------------------------------------------------------------------------ +Version 1.21 (brockhaus): + + * Avatar fetching was broken when cache was disabled. + * Browser was not able to cache default avatars, because a wrong + cache time (in the past) was sent. + * Checks, if cached file looks like an image, before sending it + to the client. + +------------------------------------------------------------------------ +Version 1.20 (brockhaus): + + * Avatar image title is the author's name now instead of Avatar (V.) + +------------------------------------------------------------------------ +Version 1.19 (brockhaus): + + * Made the browser cache avatars resulting in a very good + performance boost! + +------------------------------------------------------------------------ +Version 1.18 (brockhaus): + + * Debugging loging disabled. + +------------------------------------------------------------------------ +Version 1.17 (brockhaus): + + * If cache is enabled, *everything* is cached now. Known writers + won't produce *any* external server call, if allready cached. + This is a very nice performance boost! Thanks to garvin for hinting + me. + * Anti hacking patches by garvinhickins + +------------------------------------------------------------------------ +Version 1.16 (garvinhicking): + + * Coding style + +------------------------------------------------------------------------ +Version 1.14 (brockhaus): + + * Fallback possibility for MyBlogLog implemented! :-) But it is + slow even with caching optimazation. MBL shouldn't be the first + option. + * Fifth method slot in configuration, as MBL now supports fallback, too. + +------------------------------------------------------------------------ +Version 1.13 (brockhaus): + + * Advice changed: It is not the statistic plugin producing not + working Pavatars/Favatars but the exit tracking plugin. + +------------------------------------------------------------------------ +Version 1.12 (brockhaus): + + * MyBlogLog avatars are cached now, too. + + * Pages redirecting to a default page, if the requested item was not + found, are supported now, too. Former the Avatar Plugin assumed, + that the default page is the P/Favatar. + + * Default configuration now ordered like this: Gravatar -> Pavatar + -> Favatar -> Default Avatar. + + * Added advice, that this plugin has to be executed before any link + changing plugin. + + * Reading configured plugin path. Former it was 'plugin' always. + + * Dropped gravatar border setting, as it is not working (anymore?) + +------------------------------------------------------------------------ +Version 1.11, testing version not released to CVS/Spartacus (brockhaus): + + * Fallback for Gravatar working! But this shows an default avatar + to Gravatar, not mattering the settings. So revoked this setting. + +------------------------------------------------------------------------ +Version 1.10 (brockhaus): + + * Pavatar / Avatar information where never loaded from cache + + * .. but after beeing loaded from cache it produced an endless + request loop for images loaded from the local blog (if comment + sidebar plugin was enabled) + + * Height setting for image was called "heigth".. :-/ + + * Gravarar caching didn't work reliable, if a default avatar was + given. + +------------------------------------------------------------------------ +Version 1.9 (brockhaus): + + * While searching for Pavatar, the Favatar was loaded as Pavatar, + if no Pavatar image but a favicon was found. (Thanks to El Burro) + +------------------------------------------------------------------------ +Version 1.8 (brockhaus): + + * Plugin was unable to load Favatars/Pavatars, if a redirection was + signaled at the url given by the commentor as homepage. Garvin's + blog is such a page.. + +------------------------------------------------------------------------ +Version 1.7 (brockhaus): + + * Added support for Pavatars (www.pavatar.com) + + * Added support for MyBlogLog Avatars (www.mybloglog.com) + + * The order for trying avatar methods and what kind of avatars are + supported is now configurable. + + * Standard avatar may be one of them (should be last) + + * Option for not giving the default avatar to gravatar even if one + is defined. (We want less dataprofiles..) + + * Fetch default avatar via mediadatabase in the configuration. + + * Image size is assured now in HTML code. + + * Below the comment only actual configured avatar methods are shown + as supported. + +------------------------------------------------------------------------ +Version 1.6 (garvinhickins): + +------------------------------------------------------------------------ +Version 1.5 (garvinhickins): + +------------------------------------------------------------------------ +Version 1.4 (garvinhickins): + +------------------------------------------------------------------------ +Version 1.3 (garvinhickins): + + * Fix errors on invalid domains diff --git a/plugins/serendipity_event_gravatar/UTF-8/documentation_cs.html b/plugins/serendipity_event_gravatar/UTF-8/documentation_cs.html new file mode 100644 index 00000000..de89b5ab --- /dev/null +++ b/plugins/serendipity_event_gravatar/UTF-8/documentation_cs.html @@ -0,0 +1,433 @@ + + + + Dokumentace: Avatar Plugin + + + + +

Dokumentace k pluginu 'Gravatar'

+ +

Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 26.6.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i aktuální německou dokumentaci, anglickou dokumentaci a ChangeLog. + +

+ +

Dokumentace k pluginu: Avatar Plugin (Gravatar)

+
+
+

Obsah

+
    +
  1. Přehled
  2. + +
      +
    1. Gravatar
    2. +
    3. Pavatar
    4. +
    5. Favatar
    6. +
    7. Twitter
    8. +
    9. Identica
    10. +
    11. MyBlogLog
    12. +
    13. Wavatar
    14. +
    15. MonsterID
    16. +
    17. Identicon/YCon
    18. +
    19. Standardavatar
    20. +
    + +
  3. Nastavení
  4. + +
      +
    1. Pořadí vložení Avatarů
    2. +
    3. Standard-Avatar
    4. +
    5. Zobrazovat v postranním panelu
    6. +
    7. Zobrazovat podporované typy avatarů
    8. +
    9. Jméno autora v atributu ALT
    10. +
    11. Generovat Smarty Tag
    12. +
    13. Zarovnání
    14. +
    15. Velikost obrázku
    16. +
    17. Doba cachování
    18. +
    19. Indikace Gravataru
    20. +
    21. Gravatar Fallback (zpracování chyby)
    22. +
    23. Vždy vyžadovat Gravatar Fallback
    24. +
    + +
  5. ChangeLog (historie verzí)
  6. +
+
+ + +

Přehled

+

Pomocí pluginu Avatar lze přiřadit komentujícím v blogu přiřadit "obličej". Každému samostatnému komentátorovi lze přiřadit takzvaný Avatar, který ho reprezentuje. K tomu lze použít několik různých mechanizmů, jak umožnit komentujícím použití avatara, které budou v následujícím textu probrány. +

+

Vždy je použit první mechanizmus, který nalezne avatara. Další způsoby pak nejsou ani zkoušeny. To znamená, že je třeba seřadit metody v tom pořadí, aby byly co nejdříve použity nejčastěji používané mechanizmy. Způsoby, které poskytnou avatara v každém případě, by měly být umístěny až na konci, protože po nich zařazené metody nebudou přirozeně nikdy uplatněny. +

+

Důležité: Tento plugin musí být umístěn v seznamu pluginů před všemi pluginy, které mění odkazy, jako například "Markup: Sledování odchodů" (Exit Tracking Plugin). Jinak nemusejí fungovat například avatary, které jsou generovány na základě odkazů na stránky komentátorů. +

+

Následuje popis aktuálně dostupných mechanizmů, jak přiřadit avatara komentátorům:

+

nahoru

+ + +

Gravatar

+

Gravatar je jedna z nejznámějších služeb pro uživatele avatarů. Uživatele se mohou u této služby registrovat pomocí emailu, na který je vázán obrázek avatara.

+

Gravatary jsou tedy spřažené s emailem komentátora. Pouze pokud komentátor zadá svůj mail, je možné dotázat se Gravataru, jestli je pro daný mail registrován obrázek avatara.

+

nahoru

+ + +

Pavatar

+

Pavatary jsou avatary (obrázky), které pro tento účel nahrál uživatel na svoji domovskou stránku.

+

Oproti velmi podobným Favatarům sem může uživatel nahrát obrázek avatara v libovolném rozlišení.

+

V tomto případě se zjišťuje avatar na základě domovské stránky, kterou zadal komentátor, konkrétně jestli tato domovská stránka obsahuje Pavatara. Tento způsob zjišťování avatara je použit přirozeně pouze v případě, že komentátor zadal domovksou webovou stránku.

+

nahoru

+ + +

Favatar

+

Toto je koncept, pomocí kterého má spousta vlastníků webových stránek Avatara, aniž pro to musejí cokoliv udělat:

+

Blog použije jednoduše favicon (ikonku webu) ze stránky, kterou komentátor zadal jako svoji domovskou. +Favicon je obvykle jenom obyčejná ikona, která bývá docela malá a často nevypadá jako avatar. +

+

nahoru

+ + +

Twitter

+

V případě, že komentátor zadá adresu domovské stránky jako URL profilu na Twitteru, pak bude tento profil prohledán, jestli obsahuje profilovou fotku, která bude následně použita jako avatar.

+

Poznámka: Pokud je zároveň použito hledání metodou "Favatar", pak musí stát tato metoda Twitter před Favatarem, protože jinak bude místo obrázku z profilu použita favicona Twitteru. Což může být na druhou stranu použito úmyslně, například k jasnému a jednoznačnému označení "tweetbacků" z Twitteru. +

+

nahoru

+ + +

Identica

+

Toto je zvláštní avatar pro pingbacky Identica. V tomto případě je hledán profilový obrázek uživatele, který poslal pingback.

+

Poznámka: Pokud je zároveň použito hledání metodou "Favatar", pak musí stát tato metoda Identica před Favatarem, protože jinak bude místo obrázku z profilu použita favicona Identicy. Což může být na druhou stranu použito úmyslně, například k jasnému a jednoznačnému označení "tweetbacků" z Identicy. +

+

nahoru

+ + +

MyBlogLog

+

Toto je opět centrální služba (podobně jako Gravatar). MyBlogLog je služba poskytující blogy, ale zároveň z ní lze získat avatary.

+

Přítomnost MyBlogLog avatarů je zjištěna z domovské adresy komentátorů. +

nahoru

+ + +

Wavatar

+

Wavatar je dynamicky vyroben z domovské stránky a emailové adresy komentátorů. Poskytuje pro každého uživatele jiný, ale vždy stejný obrázek. Tímto způsobem je vždycky vložen avatar, tedy všechny metody zařazené po této budou ignorovány. Wavatary vypadají asi následovně:

+

+

nahoru

+ + +

MonsterID

+

MonsterID avatary jsou generovány stejným mechanizmem jako Wavatary nebo Idnetikony. V tomto případě jsou vygenerovány takovéto roztomilé "příšerky" (monstra).

+

Podobně jako u Wavataru a Identikon je tímto způsobem vždycky vložen avatar, tedy všechny metody zařazené po této budou ignorovány. +

+

nahoru

+ + +

Identicon/YCon

+

+Avatary Identicon (identikony) jsou generovány stejným mechanizmem jako Wavatary nebo MonsterID. V tomto případě jsou vygenerovány abstraktní obrazce.

+

Podobně jako u Wavataru a MonsterID je tímto způsobem vždycky vložen avatar, tedy všechny metody zařazené po této budou ignorovány.

+

+

nahoru

+ + +

Standardavatar

+

Metoda "Standardavatar" poskytuje vždycky stejný obrázek pro všechny uživatele. Obrázek, který bude použit, lze zadat v sekci "Nastavení".

+

nahoru

+ + +

Nastavení

+ + +

Pořadí vložení Avatarů

+

Zde je zadáno pořadí zkoušení jednotlivých metod pro zjištšění avatarů ke komentátorům.

+

V současnosti existuje 6 metod, ze kterých je možné pořadí sestavit. Je třeba dát pozor na to, že metody, které generují avatara pokaždé, jsou poslední, které jsou vyzkoušeny, všechny následující metody jsou ignorovány.

+

nahoru

+ + +

Standard-Avatar

+

URL adresa ke standardnímu avataru. Tady musíte zadat relativní nebo absolutní URL adresu k obrázku standardního avataru.

+

nahoru

+ + +

Zobrazovat v postranním panelu

+

Mají se obrázky avatarů zobrazovat i v postranním panelu (poslední komentáře)?

+

nahoru

+ + +

Zobrazovat podporované typy avatarů

+

Pokud je zaškrtnuto, pak se pod políčkem k vložení komentáře objeví řádek s výčtem podporovaných avatarů.

+

nahoru

+ + +

Jméno autora v atributu ALT

+

Normálně je umístěho jméno autora v atributu TITLE u obrázku, atribut ALT je pak vyplněn hvězdičkou "*", aby se v rozvržení stránky nic nerozházelo, pokud nejsou nataženy obrázky. Nicméně z hlediska přístupnosti stránky i pro slepé čtenáře je důležité, aby v atributu ALT něco bylo, protože je to právě tento atribut, který jim je předčítán a podle kterého poznají, co je na obrázku. Pokud tedy chcete podporovat i tyto postižené čtenáře, měli byste tuto volbu povolit.

+

nahoru

+ + +

Generovat Smarty Tag

+

Pokud je zaškrtnuta tato volby, není obrázek avatara vložen přímo do komentáře, ale místo toho je generován Smarty Tag {$comment.avatar}, který při generování stránky obsahuje HTML kód pro zobrazení obrázku. Tuto volbu byste měli zapnout pouze pokud víte, že šablona vzhledu, kterou požíváte, podporuje tento tag. Jestli tomu tak opravdu je, můžete jednoduše vyzkoušet.

+

nahoru

+ + +

Zarovnání

+

Pomocí této volby můžete zadat zarovnání avatara vzhledem ke komentáři, tedy pokud nepoužítáve volbu Smarty Tag. V případě, že Smarty Tag používáte, pak musíte k zarovnání obrázku použít odpovídající CSS třídu ve stylopisu.

+

nahoru

+ + +

Velikost obrázku

+

Maximální zobrazená velikost avataru v pixelech.

+

nahoru

+ + +

Doba cachování

+

Když mají být avatary dočasně ukládány (doporučeno!), musí být zde uveden počet hodin, během kterých se mají obrázky natahovat z blogového serveru, namísto serveru vzdáleneé avatarové služby. Sice to způsobí lehké zvýšení provozu na vašem blogovém serveru, na druhou stranu se stanou obrázky víceméně nezávislé na přístupnosti serveru externích služeb. "0" znamená vypnutí cachování.

+

nahoru

+ + +

Indikace Gravataru

+

Dětská pojistka :)

+

nahoru

+ + +

Gravatar Fallback (zpracování chyby)

+

Metoda Gravatar umožňuje chybovou metodu pro případ, kdy pro uživatele není nalezen žádný avatar. Tou může být jedna z Monster ID, Identicon nebo Wavatar. Pokud nastavíte tuto chybovou metodu pro Gravatara, nebudou zkoušeny žádné další metody pro zjištění avatara, pokud uživatel zadal emailovou adresu.

+

nahoru

+ + +

Vždy vyžadovat Gravatar Fallback

+

Vyžadovat zpracování chyby Gravatar (Gravatar Fallback) také pokud uživatel nezadal žádný email (ale pokud zadal URL adresu domovské stránky nebo jméno).

+

nahoru

+ + +

Historie verzí (ChangeLog)

+ + +

nahoru

+ + + diff --git a/plugins/serendipity_event_gravatar/UTF-8/documentation_cz.html b/plugins/serendipity_event_gravatar/UTF-8/documentation_cz.html new file mode 100644 index 00000000..de89b5ab --- /dev/null +++ b/plugins/serendipity_event_gravatar/UTF-8/documentation_cz.html @@ -0,0 +1,433 @@ + + + + Dokumentace: Avatar Plugin + + + + +

Dokumentace k pluginu 'Gravatar'

+ +

Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 26.6.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i aktuální německou dokumentaci, anglickou dokumentaci a ChangeLog. + +

+ +

Dokumentace k pluginu: Avatar Plugin (Gravatar)

+
+
+

Obsah

+
    +
  1. Přehled
  2. + +
      +
    1. Gravatar
    2. +
    3. Pavatar
    4. +
    5. Favatar
    6. +
    7. Twitter
    8. +
    9. Identica
    10. +
    11. MyBlogLog
    12. +
    13. Wavatar
    14. +
    15. MonsterID
    16. +
    17. Identicon/YCon
    18. +
    19. Standardavatar
    20. +
    + +
  3. Nastavení
  4. + +
      +
    1. Pořadí vložení Avatarů
    2. +
    3. Standard-Avatar
    4. +
    5. Zobrazovat v postranním panelu
    6. +
    7. Zobrazovat podporované typy avatarů
    8. +
    9. Jméno autora v atributu ALT
    10. +
    11. Generovat Smarty Tag
    12. +
    13. Zarovnání
    14. +
    15. Velikost obrázku
    16. +
    17. Doba cachování
    18. +
    19. Indikace Gravataru
    20. +
    21. Gravatar Fallback (zpracování chyby)
    22. +
    23. Vždy vyžadovat Gravatar Fallback
    24. +
    + +
  5. ChangeLog (historie verzí)
  6. +
+
+ + +

Přehled

+

Pomocí pluginu Avatar lze přiřadit komentujícím v blogu přiřadit "obličej". Každému samostatnému komentátorovi lze přiřadit takzvaný Avatar, který ho reprezentuje. K tomu lze použít několik různých mechanizmů, jak umožnit komentujícím použití avatara, které budou v následujícím textu probrány. +

+

Vždy je použit první mechanizmus, který nalezne avatara. Další způsoby pak nejsou ani zkoušeny. To znamená, že je třeba seřadit metody v tom pořadí, aby byly co nejdříve použity nejčastěji používané mechanizmy. Způsoby, které poskytnou avatara v každém případě, by měly být umístěny až na konci, protože po nich zařazené metody nebudou přirozeně nikdy uplatněny. +

+

Důležité: Tento plugin musí být umístěn v seznamu pluginů před všemi pluginy, které mění odkazy, jako například "Markup: Sledování odchodů" (Exit Tracking Plugin). Jinak nemusejí fungovat například avatary, které jsou generovány na základě odkazů na stránky komentátorů. +

+

Následuje popis aktuálně dostupných mechanizmů, jak přiřadit avatara komentátorům:

+

nahoru

+ + +

Gravatar

+

Gravatar je jedna z nejznámějších služeb pro uživatele avatarů. Uživatele se mohou u této služby registrovat pomocí emailu, na který je vázán obrázek avatara.

+

Gravatary jsou tedy spřažené s emailem komentátora. Pouze pokud komentátor zadá svůj mail, je možné dotázat se Gravataru, jestli je pro daný mail registrován obrázek avatara.

+

nahoru

+ + +

Pavatar

+

Pavatary jsou avatary (obrázky), které pro tento účel nahrál uživatel na svoji domovskou stránku.

+

Oproti velmi podobným Favatarům sem může uživatel nahrát obrázek avatara v libovolném rozlišení.

+

V tomto případě se zjišťuje avatar na základě domovské stránky, kterou zadal komentátor, konkrétně jestli tato domovská stránka obsahuje Pavatara. Tento způsob zjišťování avatara je použit přirozeně pouze v případě, že komentátor zadal domovksou webovou stránku.

+

nahoru

+ + +

Favatar

+

Toto je koncept, pomocí kterého má spousta vlastníků webových stránek Avatara, aniž pro to musejí cokoliv udělat:

+

Blog použije jednoduše favicon (ikonku webu) ze stránky, kterou komentátor zadal jako svoji domovskou. +Favicon je obvykle jenom obyčejná ikona, která bývá docela malá a často nevypadá jako avatar. +

+

nahoru

+ + +

Twitter

+

V případě, že komentátor zadá adresu domovské stránky jako URL profilu na Twitteru, pak bude tento profil prohledán, jestli obsahuje profilovou fotku, která bude následně použita jako avatar.

+

Poznámka: Pokud je zároveň použito hledání metodou "Favatar", pak musí stát tato metoda Twitter před Favatarem, protože jinak bude místo obrázku z profilu použita favicona Twitteru. Což může být na druhou stranu použito úmyslně, například k jasnému a jednoznačnému označení "tweetbacků" z Twitteru. +

+

nahoru

+ + +

Identica

+

Toto je zvláštní avatar pro pingbacky Identica. V tomto případě je hledán profilový obrázek uživatele, který poslal pingback.

+

Poznámka: Pokud je zároveň použito hledání metodou "Favatar", pak musí stát tato metoda Identica před Favatarem, protože jinak bude místo obrázku z profilu použita favicona Identicy. Což může být na druhou stranu použito úmyslně, například k jasnému a jednoznačnému označení "tweetbacků" z Identicy. +

+

nahoru

+ + +

MyBlogLog

+

Toto je opět centrální služba (podobně jako Gravatar). MyBlogLog je služba poskytující blogy, ale zároveň z ní lze získat avatary.

+

Přítomnost MyBlogLog avatarů je zjištěna z domovské adresy komentátorů. +

nahoru

+ + +

Wavatar

+

Wavatar je dynamicky vyroben z domovské stránky a emailové adresy komentátorů. Poskytuje pro každého uživatele jiný, ale vždy stejný obrázek. Tímto způsobem je vždycky vložen avatar, tedy všechny metody zařazené po této budou ignorovány. Wavatary vypadají asi následovně:

+

+

nahoru

+ + +

MonsterID

+

MonsterID avatary jsou generovány stejným mechanizmem jako Wavatary nebo Idnetikony. V tomto případě jsou vygenerovány takovéto roztomilé "příšerky" (monstra).

+

Podobně jako u Wavataru a Identikon je tímto způsobem vždycky vložen avatar, tedy všechny metody zařazené po této budou ignorovány. +

+

nahoru

+ + +

Identicon/YCon

+

+Avatary Identicon (identikony) jsou generovány stejným mechanizmem jako Wavatary nebo MonsterID. V tomto případě jsou vygenerovány abstraktní obrazce.

+

Podobně jako u Wavataru a MonsterID je tímto způsobem vždycky vložen avatar, tedy všechny metody zařazené po této budou ignorovány.

+

+

nahoru

+ + +

Standardavatar

+

Metoda "Standardavatar" poskytuje vždycky stejný obrázek pro všechny uživatele. Obrázek, který bude použit, lze zadat v sekci "Nastavení".

+

nahoru

+ + +

Nastavení

+ + +

Pořadí vložení Avatarů

+

Zde je zadáno pořadí zkoušení jednotlivých metod pro zjištšění avatarů ke komentátorům.

+

V současnosti existuje 6 metod, ze kterých je možné pořadí sestavit. Je třeba dát pozor na to, že metody, které generují avatara pokaždé, jsou poslední, které jsou vyzkoušeny, všechny následující metody jsou ignorovány.

+

nahoru

+ + +

Standard-Avatar

+

URL adresa ke standardnímu avataru. Tady musíte zadat relativní nebo absolutní URL adresu k obrázku standardního avataru.

+

nahoru

+ + +

Zobrazovat v postranním panelu

+

Mají se obrázky avatarů zobrazovat i v postranním panelu (poslední komentáře)?

+

nahoru

+ + +

Zobrazovat podporované typy avatarů

+

Pokud je zaškrtnuto, pak se pod políčkem k vložení komentáře objeví řádek s výčtem podporovaných avatarů.

+

nahoru

+ + +

Jméno autora v atributu ALT

+

Normálně je umístěho jméno autora v atributu TITLE u obrázku, atribut ALT je pak vyplněn hvězdičkou "*", aby se v rozvržení stránky nic nerozházelo, pokud nejsou nataženy obrázky. Nicméně z hlediska přístupnosti stránky i pro slepé čtenáře je důležité, aby v atributu ALT něco bylo, protože je to právě tento atribut, který jim je předčítán a podle kterého poznají, co je na obrázku. Pokud tedy chcete podporovat i tyto postižené čtenáře, měli byste tuto volbu povolit.

+

nahoru

+ + +

Generovat Smarty Tag

+

Pokud je zaškrtnuta tato volby, není obrázek avatara vložen přímo do komentáře, ale místo toho je generován Smarty Tag {$comment.avatar}, který při generování stránky obsahuje HTML kód pro zobrazení obrázku. Tuto volbu byste měli zapnout pouze pokud víte, že šablona vzhledu, kterou požíváte, podporuje tento tag. Jestli tomu tak opravdu je, můžete jednoduše vyzkoušet.

+

nahoru

+ + +

Zarovnání

+

Pomocí této volby můžete zadat zarovnání avatara vzhledem ke komentáři, tedy pokud nepoužítáve volbu Smarty Tag. V případě, že Smarty Tag používáte, pak musíte k zarovnání obrázku použít odpovídající CSS třídu ve stylopisu.

+

nahoru

+ + +

Velikost obrázku

+

Maximální zobrazená velikost avataru v pixelech.

+

nahoru

+ + +

Doba cachování

+

Když mají být avatary dočasně ukládány (doporučeno!), musí být zde uveden počet hodin, během kterých se mají obrázky natahovat z blogového serveru, namísto serveru vzdáleneé avatarové služby. Sice to způsobí lehké zvýšení provozu na vašem blogovém serveru, na druhou stranu se stanou obrázky víceméně nezávislé na přístupnosti serveru externích služeb. "0" znamená vypnutí cachování.

+

nahoru

+ + +

Indikace Gravataru

+

Dětská pojistka :)

+

nahoru

+ + +

Gravatar Fallback (zpracování chyby)

+

Metoda Gravatar umožňuje chybovou metodu pro případ, kdy pro uživatele není nalezen žádný avatar. Tou může být jedna z Monster ID, Identicon nebo Wavatar. Pokud nastavíte tuto chybovou metodu pro Gravatara, nebudou zkoušeny žádné další metody pro zjištění avatara, pokud uživatel zadal emailovou adresu.

+

nahoru

+ + +

Vždy vyžadovat Gravatar Fallback

+

Vyžadovat zpracování chyby Gravatar (Gravatar Fallback) také pokud uživatel nezadal žádný email (ale pokud zadal URL adresu domovské stránky nebo jméno).

+

nahoru

+ + +

Historie verzí (ChangeLog)

+ + +

nahoru

+ + + diff --git a/plugins/serendipity_event_gravatar/UTF-8/lang_cs.inc.php b/plugins/serendipity_event_gravatar/UTF-8/lang_cs.inc.php new file mode 100644 index 00000000..f2690be6 --- /dev/null +++ b/plugins/serendipity_event_gravatar/UTF-8/lang_cs.inc.php @@ -0,0 +1,62 @@ + + * @translated 2009/07/06 + * @author Vladimír Ajgl + * @revisionDate 2011/04/17 + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Zobrazuje avatary (ikona či obrázek přispěvatele) v komentářích. Podporovány jsou služby Gravatar, Pavatar, Favatar a MyBlogLog.'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Tvořit smarty tag'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'Pokud je tato volba zapnuta, obrázky avatarů nejsou zapsány přímo do textu komentáře, ale je místo toho vygenerován tag {$comment.avatar} pro šablonovací systém smarty. Pak budou avatary zobrazovat pouze styly vzhledu, které tento tag používají. Nejjednodušší způsob, jak zjistit, jestli Váš styl vzhledu podporuje avatary, je vyzkoušet zapnout toto nastavení.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Výchozí avatar'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'Velikost'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Hodnocení Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'Žádné hodnocení'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'Obecné - General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Omezené - Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Rodičovské vedení - Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicitní (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'Jaká je URL adresa k výchozímu avataru? Zadejte absolutní URL cestu nebo relativní URL cestu, vzhledem ke kořenové složce serveru.'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Největší rozměr avataru (v pixelech)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Hodnocení obrázku'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Cachovací čas'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Pokud chcete cachovat avatary (doporučeno!), zadejte čas v hodinách, během které bude avatar vkládán do blogu z Vašeho serveru, aniž by byl kontaktován server služby s avatary. Výhoda cachování je, že se ušetří komunikace mezi blogem a serverem s avatary, a že bude blog poněkud nezávislejší na momentálním stavu avatarových služeb, Hodnota "0" vypne cachování.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Zarovnání'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'Tato volba určuje zarovnání avataru, ale pouze pokud není používána volba "smarty tag". Při použití zmíněné volby je na Vás zařídit zarovnání po svém pomocí CSS stylu pro obrázek s avatarem.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'vlevo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'vpravo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'bez zarovnání'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'Použít v postranním sloupci'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Mají se avatary zobrazovat také v postranním sloupci v bloku s nejnovějšími komentáři?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Zobrazovat informaci o typu avataru'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'Pokud je zapnuto, pak se pod polem pro zadání textu komentáře bude zobrazovat informace, které avatary jsou momentálně podporovány.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Výchozí avatar'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD', 'Stahovat avatary pomocí'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DESC', 'Pokud předchozí pokus selže, zkus tento. Typy "Monster ID", "Defaultavatar" a "---" nikdy neselžou. Všechny metody, které následují po jedné ze zmíněných metod, nebudou nikdy zkoušeny!'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s obrázky autorů podporovány.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Jméno autora v atributu ALT v obrázku'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Obvykle se jméno autora zobrazuje v atributu TITLE v obrázku s avatarem a atribut ALT je vyplněn hvězdičkami. To zabraňuje zhroucení vzhledu stránky, pokud není prohlížeč schopen natáhnout obrázky. Ale slepci používají pro prohlížení internetu často právě atribut ALT, takže pokud jim chcete zpřístupnit své stránky, zapněte tuto volbu.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatar je centrální úložiště obrázků uživatelů spřažené s emailovou adresou, ' . + 'Favatar poskytuje favicony načtené z osobních stránek uživatele, Pavatar ' . + 'jsou obrázky uložené na osobních stránkách pisatele, MyBlogLog avatar jsou centrálně ukládané obrázky a ' . + 'Monster ID, Identicon a Wavatar avatary jsou nahrávané obrázky vytvořené jednotlivými uživateli.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'POZOR! Tento plugin musí být zařazen před všemi pluginy, které mění odkazy (jako např. plugin "exit tracking plugin")! ' . + 'Jinak nebudou pracovat avatary služeb Pavatar, Favatar a MayBlogLog!'); + +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK', 'Gravatar fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC', 'Gravatar má implementovaných několik návratových metod pro případ, že pro požadovaného uživatele není znám žádný avatar. Implementovány jsou též Moster ID, Identicon a Wavatar. Pokud vyberete některý z těchto zíněných, nebudou uskutečňovány žádné další pokusy o načtení avataru, pokud uživatel zadá email.'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS', 'Vždy návratová hodnota pro Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC', 'Používat návratovou hodnotu Gravatar i v případě, že uživatel nezadá email (zadá tedy url nebo jméno)'); \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/UTF-8/lang_cz.inc.php b/plugins/serendipity_event_gravatar/UTF-8/lang_cz.inc.php new file mode 100644 index 00000000..f2690be6 --- /dev/null +++ b/plugins/serendipity_event_gravatar/UTF-8/lang_cz.inc.php @@ -0,0 +1,62 @@ + + * @translated 2009/07/06 + * @author Vladimír Ajgl + * @revisionDate 2011/04/17 + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Zobrazuje avatary (ikona či obrázek přispěvatele) v komentářích. Podporovány jsou služby Gravatar, Pavatar, Favatar a MyBlogLog.'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Tvořit smarty tag'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'Pokud je tato volba zapnuta, obrázky avatarů nejsou zapsány přímo do textu komentáře, ale je místo toho vygenerován tag {$comment.avatar} pro šablonovací systém smarty. Pak budou avatary zobrazovat pouze styly vzhledu, které tento tag používají. Nejjednodušší způsob, jak zjistit, jestli Váš styl vzhledu podporuje avatary, je vyzkoušet zapnout toto nastavení.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Výchozí avatar'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'Velikost'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Hodnocení Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'Žádné hodnocení'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'Obecné - General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Omezené - Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Rodičovské vedení - Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicitní (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'Jaká je URL adresa k výchozímu avataru? Zadejte absolutní URL cestu nebo relativní URL cestu, vzhledem ke kořenové složce serveru.'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Největší rozměr avataru (v pixelech)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Hodnocení obrázku'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Cachovací čas'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Pokud chcete cachovat avatary (doporučeno!), zadejte čas v hodinách, během které bude avatar vkládán do blogu z Vašeho serveru, aniž by byl kontaktován server služby s avatary. Výhoda cachování je, že se ušetří komunikace mezi blogem a serverem s avatary, a že bude blog poněkud nezávislejší na momentálním stavu avatarových služeb, Hodnota "0" vypne cachování.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Zarovnání'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'Tato volba určuje zarovnání avataru, ale pouze pokud není používána volba "smarty tag". Při použití zmíněné volby je na Vás zařídit zarovnání po svém pomocí CSS stylu pro obrázek s avatarem.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'vlevo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'vpravo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'bez zarovnání'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'Použít v postranním sloupci'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Mají se avatary zobrazovat také v postranním sloupci v bloku s nejnovějšími komentáři?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Zobrazovat informaci o typu avataru'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'Pokud je zapnuto, pak se pod polem pro zadání textu komentáře bude zobrazovat informace, které avatary jsou momentálně podporovány.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Výchozí avatar'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD', 'Stahovat avatary pomocí'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DESC', 'Pokud předchozí pokus selže, zkus tento. Typy "Monster ID", "Defaultavatar" a "---" nikdy neselžou. Všechny metody, které následují po jedné ze zmíněných metod, nebudou nikdy zkoušeny!'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s obrázky autorů podporovány.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Jméno autora v atributu ALT v obrázku'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Obvykle se jméno autora zobrazuje v atributu TITLE v obrázku s avatarem a atribut ALT je vyplněn hvězdičkami. To zabraňuje zhroucení vzhledu stránky, pokud není prohlížeč schopen natáhnout obrázky. Ale slepci používají pro prohlížení internetu často právě atribut ALT, takže pokud jim chcete zpřístupnit své stránky, zapněte tuto volbu.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatar je centrální úložiště obrázků uživatelů spřažené s emailovou adresou, ' . + 'Favatar poskytuje favicony načtené z osobních stránek uživatele, Pavatar ' . + 'jsou obrázky uložené na osobních stránkách pisatele, MyBlogLog avatar jsou centrálně ukládané obrázky a ' . + 'Monster ID, Identicon a Wavatar avatary jsou nahrávané obrázky vytvořené jednotlivými uživateli.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'POZOR! Tento plugin musí být zařazen před všemi pluginy, které mění odkazy (jako např. plugin "exit tracking plugin")! ' . + 'Jinak nebudou pracovat avatary služeb Pavatar, Favatar a MayBlogLog!'); + +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK', 'Gravatar fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC', 'Gravatar má implementovaných několik návratových metod pro případ, že pro požadovaného uživatele není znám žádný avatar. Implementovány jsou též Moster ID, Identicon a Wavatar. Pokud vyberete některý z těchto zíněných, nebudou uskutečňovány žádné další pokusy o načtení avataru, pokud uživatel zadá email.'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS', 'Vždy návratová hodnota pro Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC', 'Používat návratovou hodnotu Gravatar i v případě, že uživatel nezadá email (zadá tedy url nebo jméno)'); \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/UTF-8/lang_de.inc.php b/plugins/serendipity_event_gravatar/UTF-8/lang_de.inc.php new file mode 100644 index 00000000..83d2bd2e --- /dev/null +++ b/plugins/serendipity_event_gravatar/UTF-8/lang_de.inc.php @@ -0,0 +1,67 @@ + + * @revisionDate 2009/08/20 + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Avatare bei Kommentaren anzeigen. Unterstützt werden Gravatare, Pavatare, Favatare, Twitter, Identica und MyBlogLog Avatare'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Smarty Tag erzeugen'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'Wenn diese Option eingeschaltet ist, so wird das Avatar Bild nicht direkt in den Kommentar geschrieben, sondern es wird ein Smarty Tag {$comment.avatar} erzeugt, in dem der HTML Code des Images steht. Sie sollten diese Option nur einschalten, wenn sie wissen, dass ihr Template dieses Smarty Tag unterstützt. Ob das der Fall ist, sollten sie einfach ausprobieren.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Standard-Avatar'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'Bildgröße'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Gravatar Indizierung'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'Keine Indizierung benutzen'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicit (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Standardavatar'); +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'URL zu ihrem Standard-Avatar. Hier müssen Sie den relativen oder absoluten Pfad bezogen auf ihre Server URL zu ihrem Standard Avatar angeben. ACHTUNG: Damit es benutzt wird, muss eine Methode auf "' . PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT . '" stehen!'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Maximal dargestellte Größe des Avatar-Bildes in Pixeln'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Kinderschutz :)'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Cache Zeit'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Wenn Avatare zwischengespeichert werden sollen (empfohlen!), muss hier die Anzahl der Stunden eingetragen werden, die Bilder vom eigenen Server anstatt vom externen Service abgeholt werden sollen. Dies wird mehr Traffic auf diesem Blog Server verursachen, dafür macht es die Avatar Darstellung unabhängiger vom externen zentralen Server. "0" stellt das Zwischenspeichern ab.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Ausrichtung'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'Mit dieser Option kann die Ausrichtung des Avatars im Kommentar konfiguriert werden, falls sie nicht die Smarty Tag Option verwenden. Bei der Smarty Tag Option muss die Ausrichtung über die entsprechende CSS Klasse im Stylesheet konfiguriert werden.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'links'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'rechts'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'keine Ausrichtung'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'In der Seitenleiste anzeigen'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Sollen Avatar Bilder auch in der Seitenleiste (letze Kommentare) angezeigt werden?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Avatar Typ anzeigen'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'Wenn angeschaltet, wird eine Zeile unterhalb des Kommentar Editors ausgegeben, die angibt, welche Avatar Typen aktuell unterstützt werden.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD', 'Avatar laden über'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s Autoren-Bilder werden unterstützt.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Autorenname im ALT Attribut'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Normaler Weise wird der Autorenname im TITLE Attribut des Avatar Bildes angegeben, das ALT Attribut wird mit einem * gefüllt, um das Seitenlayout nicht zu zerstören, wenn der Browser das Bild nicht laden kann. Allerdings wird blinden Lesern das ALT Attribut vorgelesen. Falls Sie diese Leser unterstützen wollen, sollten Sie diese Option einschalten.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatare werden von einem zentralem Server anhand der EMail Information des Kommentators abgeholt, ' . + 'Favatare sind die favicons auf der Homepage, die der Kommentator angegeben hat, ' . + 'Twitter lädt Bilder aus Twitter Profilen, ' . + 'Identica lädt Bilder aus Identica Profilen, ' . + 'Pavatare zeigen auf ein Bild, das der Besucher auf seiner Homepage hat, ' . + 'MyBlogLog Avatare werden von einem zentralen Server geladen und ' . + 'Monster ID, Identicon und Wavatar Avatare sind lokal erstellte und für jeden Schreiber einzigartige Bilder.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'ACHTUNG! Dieses Plugin muss vor allen Plugins ausgeführt werden, die Links verändern (wie z.B. das Exit Tracking Plugin)!
' . + 'Ansonsten werden Pavatare, Favatare und MyBlogLog Avatare nicht funktionieren!'); + +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK', 'Gravatar Fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC', 'Gravatar implementiert einige eigene Fallback Methoden für den Fal, dass kein Gravatar für den Benutzer gefunden wurde. Es wurde ebenso Moster ID, Identicon und Wavatar. Wenn Du einen dieser Fallbacks einstellst, so wird keine weitere Methode nach Gravatar versucht, falls der Benutzer eine EMail angegeben hat.'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS', 'Gravatar Fallback immer benutzen'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC', 'Gravatar Fallbacks auch dann benutzen, wenn der Benutzer keine EMail (aber eine URL oder einen Namen) eingegeben hat.'); + +// Next lines were translated on 2009/08/20 +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DESC', 'Wenn die vorherigen Methoden fehlschlagen, versuche diese. Der Typ "' . PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT . '", "Monster ID", "Wavatar", "Identicon" und "---" wird niemals fehlschlagen. Alles unterhalb dieser Methoden wird nicht versucht.'); \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/UTF-8/lang_pl.inc.php b/plugins/serendipity_event_gravatar/UTF-8/lang_pl.inc.php new file mode 100644 index 00000000..84d537d8 --- /dev/null +++ b/plugins/serendipity_event_gravatar/UTF-8/lang_pl.inc.php @@ -0,0 +1,64 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Pokazuje avatary w komentarzach. Gravatars, Pavatars, Favatars und MyBlogLog avatars are supported.'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Produce smarty tag'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'If this option is switched on, the avatar images are not written directly into the comment output but a smarty tag {$comment.avatar} is produced. Only templates, that support this smarty tag, will display the avatar, if this option is set to true. The best way is to try it, if your template supports this smarty tag.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Domy¶lny obrazek avatara'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'rozmiar obrazka'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Rating'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'No rating'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicit (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'Jaki jest adres URL do domy¶lnego obrazka avatara?'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Maksymalny rozmiar avatara (w pikselach)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Wybierz Rating (poziom przyznawany przez gravatar.com ka¿demu obrazkowi avatara), jaki ma byæ wy¶wietlany na stronie'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Buforowaæ Avatars?'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Je¶li chcesz buforowaæ obrazki avatarów, wpisz ilo¶æ godzin, w ci±gu których obrazek bêdzie pobierany z Twojego serwera zamiast z centralnego serwera www.gravatar.com. Pamiêtaj, ¿e to spowoduje wzrost obci±¿enia Twojego hosta. Plusem buforowania jest odci±¿enie serwerów Gravatara i przynajmniej czasowe uniezale¿nienie siê od centralnych serwerów na wypadek np. ich awarii. "0" wy³±cza buforowanie.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Alignment'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'This option configures the alignment of the avatar, if the smarty tag option is not used. For smarty tags you have to do the alignment using the CSS class of the avatar.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'left'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'right'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'no alignment'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'Use in sidebar'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Should avatar images be shown in the recent comments sidebar, too?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Show avatar type info'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'If switched on an infoline is displayed below the comment box which types of avatars are supported at the moment.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Defaultavatar'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_1', 'First try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_1_DESC', 'Try this avatar getting method first. Type "Defaultavatar" will load the default avatar, "---" will load no picture. '); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_2', 'Second try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_2_DESC', 'If method 1 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_3', 'Third try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_3_DESC', 'If method 2 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4', 'Fourth try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4_DESC', 'If method 3 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4', 'Fifth try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4_DESC', 'If method 4 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s author images supported.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Authorname in ALT attribute'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Normaly the authors name is displayed in the TITLE attribute of the avatar image, the ALT attribute is filled with an *. This prevents destroying the layout, when the browser is not able to load the image. But for blind people the ALT attribute is read, so if you want to support them, switch this option on.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatars are central-served avatar images by email, ' . + 'Favatars are favicons of the writer\'s site, Pavatars ' . + 'are images at the writer\'s site, MyBlogLog avatars are central-served avatar images again and ' . + 'Monster ID avatars are localy created monster images unique for each writer.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'CAUTION! This plugin has to be executed before any plugin changing links (like i.e. the exit tracking plugin)! ' . + 'Else Pavatars, Favatars and MayBlogLog avatars won\'t work!'); diff --git a/plugins/serendipity_event_gravatar/documentation/documentation.css b/plugins/serendipity_event_gravatar/documentation/documentation.css new file mode 100644 index 00000000..8e08128d --- /dev/null +++ b/plugins/serendipity_event_gravatar/documentation/documentation.css @@ -0,0 +1,11 @@ +body { + font-family: Arial, sans-serif!important; + margin: 20; +} +#title { + background: #cfcfcf; + margin: 0; +}#content { + background: #efefef; + margin: 0; +} \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/documentation/identicons.jpg b/plugins/serendipity_event_gravatar/documentation/identicons.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ae8ef3ab805e5197e1c9c8c9b9c6ce79e4710e7 GIT binary patch literal 15112 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 R%?}=j`2D(h?*>`_e*>EJScw1t literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/documentation/monsterid.png b/plugins/serendipity_event_gravatar/documentation/monsterid.png new file mode 100644 index 0000000000000000000000000000000000000000..795acad3b36d418f5aaf1ec36d9572291f6b5ff1 GIT binary patch literal 6345 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 LNkvXXu0mjfNv}g& literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/documentation/wavatars.jpg b/plugins/serendipity_event_gravatar/documentation/wavatars.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6baedd3999e20a3f759d7dd54ae435ff1ed4e653 GIT binary patch literal 10653 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 Pf0@y~tBH4)-Y)!qRz2{y literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/documentation_cs.html b/plugins/serendipity_event_gravatar/documentation_cs.html new file mode 100644 index 00000000..b07b967c --- /dev/null +++ b/plugins/serendipity_event_gravatar/documentation_cs.html @@ -0,0 +1,433 @@ + + + + Dokumentace: Avatar Plugin + + + + +

Dokumentace k pluginu 'Gravatar'

+ +

Dokumentaci k tomuto pluginu peloil do etiny Vladimr Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 26.6.2011. Od t doby mohl bt plugin pozmnn nebo mohly bt rozen jeho funkce. Zkontrolujte pro jistotu i aktuln nmeckou dokumentaci, anglickou dokumentaci a ChangeLog. + +

+ + + +

Pehled

+

Pomoc pluginu Avatar lze piadit komentujcm v blogu piadit "obliej". Kadmu samostatnmu komenttorovi lze piadit takzvan Avatar, kter ho reprezentuje. K tomu lze pout nkolik rznch mechanizm, jak umonit komentujcm pouit avatara, kter budou v nsledujcm textu probrny. +

+

Vdy je pouit prvn mechanizmus, kter nalezne avatara. Dal zpsoby pak nejsou ani zkoueny. To znamen, e je teba seadit metody v tom poad, aby byly co nejdve pouity nejastji pouvan mechanizmy. Zpsoby, kter poskytnou avatara v kadm ppad, by mly bt umstny a na konci, protoe po nich zaazen metody nebudou pirozen nikdy uplatnny. +

+

Dleit: Tento plugin mus bt umstn v seznamu plugin ped vemi pluginy, kter mn odkazy, jako napklad "Markup: Sledovn odchod" (Exit Tracking Plugin). Jinak nemusej fungovat napklad avatary, kter jsou generovny na zklad odkaz na strnky komenttor. +

+

Nsleduje popis aktuln dostupnch mechanizm, jak piadit avatara komenttorm:

+

nahoru

+ + +

Gravatar

+

Gravatar je jedna z nejznmjch slueb pro uivatele avatar. Uivatele se mohou u tto sluby registrovat pomoc emailu, na kter je vzn obrzek avatara.

+

Gravatary jsou tedy spaen s emailem komenttora. Pouze pokud komenttor zad svj mail, je mon dotzat se Gravataru, jestli je pro dan mail registrovn obrzek avatara.

+

nahoru

+ + +

Pavatar

+

Pavatary jsou avatary (obrzky), kter pro tento el nahrl uivatel na svoji domovskou strnku.

+

Oproti velmi podobnm Favatarm sem me uivatel nahrt obrzek avatara v libovolnm rozlien.

+

V tomto ppad se zjiuje avatar na zklad domovsk strnky, kterou zadal komenttor, konkrtn jestli tato domovsk strnka obsahuje Pavatara. Tento zpsob zjiovn avatara je pouit pirozen pouze v ppad, e komenttor zadal domovksou webovou strnku.

+

nahoru

+ + +

Favatar

+

Toto je koncept, pomoc kterho m spousta vlastnk webovch strnek Avatara, ani pro to musej cokoliv udlat:

+

Blog pouije jednodue favicon (ikonku webu) ze strnky, kterou komenttor zadal jako svoji domovskou. +Favicon je obvykle jenom obyejn ikona, kter bv docela mal a asto nevypad jako avatar. +

+

nahoru

+ + +

Twitter

+

V ppad, e komenttor zad adresu domovsk strnky jako URL profilu na Twitteru, pak bude tento profil prohledn, jestli obsahuje profilovou fotku, kter bude nsledn pouita jako avatar.

+

Poznmka: Pokud je zrove pouito hledn metodou "Favatar", pak mus stt tato metoda Twitter ped Favatarem, protoe jinak bude msto obrzku z profilu pouita favicona Twitteru. Co me bt na druhou stranu pouito mysln, napklad k jasnmu a jednoznanmu oznaen "tweetback" z Twitteru. +

+

nahoru

+ + +

Identica

+

Toto je zvltn avatar pro pingbacky Identica. V tomto ppad je hledn profilov obrzek uivatele, kter poslal pingback.

+

Poznmka: Pokud je zrove pouito hledn metodou "Favatar", pak mus stt tato metoda Identica ped Favatarem, protoe jinak bude msto obrzku z profilu pouita favicona Identicy. Co me bt na druhou stranu pouito mysln, napklad k jasnmu a jednoznanmu oznaen "tweetback" z Identicy. +

+

nahoru

+ + +

MyBlogLog

+

Toto je opt centrln sluba (podobn jako Gravatar). MyBlogLog je sluba poskytujc blogy, ale zrove z n lze zskat avatary.

+

Ptomnost MyBlogLog avatar je zjitna z domovsk adresy komenttor. +

nahoru

+ + +

Wavatar

+

Wavatar je dynamicky vyroben z domovsk strnky a emailov adresy komenttor. Poskytuje pro kadho uivatele jin, ale vdy stejn obrzek. Tmto zpsobem je vdycky vloen avatar, tedy vechny metody zaazen po tto budou ignorovny. Wavatary vypadaj asi nsledovn:

+

+

nahoru

+ + +

MonsterID

+

MonsterID avatary jsou generovny stejnm mechanizmem jako Wavatary nebo Idnetikony. V tomto ppad jsou vygenerovny takovto roztomil "perky" (monstra).

+

Podobn jako u Wavataru a Identikon je tmto zpsobem vdycky vloen avatar, tedy vechny metody zaazen po tto budou ignorovny. +

+

nahoru

+ + +

Identicon/YCon

+

+Avatary Identicon (identikony) jsou generovny stejnm mechanizmem jako Wavatary nebo MonsterID. V tomto ppad jsou vygenerovny abstraktn obrazce.

+

Podobn jako u Wavataru a MonsterID je tmto zpsobem vdycky vloen avatar, tedy vechny metody zaazen po tto budou ignorovny.

+

+

nahoru

+ + +

Standardavatar

+

Metoda "Standardavatar" poskytuje vdycky stejn obrzek pro vechny uivatele. Obrzek, kter bude pouit, lze zadat v sekci "Nastaven".

+

nahoru

+ + +

Nastaven

+ + +

Poad vloen Avatar

+

Zde je zadno poad zkouen jednotlivch metod pro zjitn avatar ke komenttorm.

+

V souasnosti existuje 6 metod, ze kterch je mon poad sestavit. Je teba dt pozor na to, e metody, kter generuj avatara pokad, jsou posledn, kter jsou vyzkoueny, vechny nsledujc metody jsou ignorovny.

+

nahoru

+ + +

Standard-Avatar

+

URL adresa ke standardnmu avataru. Tady muste zadat relativn nebo absolutn URL adresu k obrzku standardnho avataru.

+

nahoru

+ + +

Zobrazovat v postrannm panelu

+

Maj se obrzky avatar zobrazovat i v postrannm panelu (posledn komente)?

+

nahoru

+ + +

Zobrazovat podporovan typy avatar

+

Pokud je zakrtnuto, pak se pod polkem k vloen komente objev dek s vtem podporovanch avatar.

+

nahoru

+ + +

Jmno autora v atributu ALT

+

Normln je umstho jmno autora v atributu TITLE u obrzku, atribut ALT je pak vyplnn hvzdikou "*", aby se v rozvren strnky nic nerozhzelo, pokud nejsou nataeny obrzky. Nicmn z hlediska pstupnosti strnky i pro slep tene je dleit, aby v atributu ALT nco bylo, protoe je to prv tento atribut, kter jim je pedtn a podle kterho poznaj, co je na obrzku. Pokud tedy chcete podporovat i tyto postien tene, mli byste tuto volbu povolit.

+

nahoru

+ + +

Generovat Smarty Tag

+

Pokud je zakrtnuta tato volby, nen obrzek avatara vloen pmo do komente, ale msto toho je generovn Smarty Tag {$comment.avatar}, kter pi generovn strnky obsahuje HTML kd pro zobrazen obrzku. Tuto volbu byste mli zapnout pouze pokud vte, e ablona vzhledu, kterou povte, podporuje tento tag. Jestli tomu tak opravdu je, mete jednodue vyzkouet.

+

nahoru

+ + +

Zarovnn

+

Pomoc tto volby mete zadat zarovnn avatara vzhledem ke komenti, tedy pokud nepoutve volbu Smarty Tag. V ppad, e Smarty Tag pouvte, pak muste k zarovnn obrzku pout odpovdajc CSS tdu ve stylopisu.

+

nahoru

+ + +

Velikost obrzku

+

Maximln zobrazen velikost avataru v pixelech.

+

nahoru

+ + +

Doba cachovn

+

Kdy maj bt avatary doasn ukldny (doporueno!), mus bt zde uveden poet hodin, bhem kterch se maj obrzky natahovat z blogovho serveru, namsto serveru vzdlene avatarov sluby. Sice to zpsob lehk zven provozu na vaem blogovm serveru, na druhou stranu se stanou obrzky vcemn nezvisl na pstupnosti serveru externch slueb. "0" znamen vypnut cachovn.

+

nahoru

+ + +

Indikace Gravataru

+

Dtsk pojistka :)

+

nahoru

+ + +

Gravatar Fallback (zpracovn chyby)

+

Metoda Gravatar umouje chybovou metodu pro ppad, kdy pro uivatele nen nalezen dn avatar. Tou me bt jedna z Monster ID, Identicon nebo Wavatar. Pokud nastavte tuto chybovou metodu pro Gravatara, nebudou zkoueny dn dal metody pro zjitn avatara, pokud uivatel zadal emailovou adresu.

+

nahoru

+ + +

Vdy vyadovat Gravatar Fallback

+

Vyadovat zpracovn chyby Gravatar (Gravatar Fallback) tak pokud uivatel nezadal dn email (ale pokud zadal URL adresu domovsk strnky nebo jmno).

+

nahoru

+ + +

Historie verz (ChangeLog)

+ +
    +
  • verze 1.54
  • +
      +
    • Do jazykov konstanty PLUGIN_EVENT_GRAVATAR_SUPPORTED byl pidn parametr %s pro zobrazen podporovanch avatarovch slueb.
    • +
    +
  • verze 1.52
  • +
      +
    • Zmnno zobrazen podporovanch avatar pod polem pro koment, aby podporovalo hezk zalamovn dk.
    • +
    +
  • verze 1.51
  • +
      +
    • Pouit funkce strtolower() pro mailov adresy.
    • +
    +
  • verze 1.49 [brockhaus]
  • +
      +
    • Pavatar v blozch s pesmrovnm nefungoval, pokud byl odkaz na Pavatar pstupn pouze v informacch tagu "rel link"
    • +
    +
  • verze 1.48 [brockhaus]
  • +
      +
    • Oprava: Kompatibilita PHP byla poruena pi oprav 1.46 :-/
    • +
    • Pidn avatar Identica. Pouito hlavn pro pingbacky Indetica a mlo by bt pouito ped Favatarem, jinak se bude zobrazovat znaka Identica msto obrzku uivatele.
    • +
    • Vyitn kdu
    • +
    +
  • verze 1.47 [brockhaus]
  • +
      +
    • Vypnut ladicch vpis v template_c
    • +
    +
  • verze 1.46 [brockhaus]
  • +
      +
    • Pidn Twitter Avatar (pokud URL odkazuje na profil na Twitteru). To je vtinou pouito pro Tweetbacky a mlo by bt pouito ped Favatarem, jinak se bude zobrazovat logo Twitteru.
    • +
    • Vyitn kdu
    • +
    +
  • verze 1.45 [brockhaus]
  • +
      +
    • Npovda
    • +
    • Vyitn
    • +
    +
  • verze 1.44 [brockhaus]
  • +
      +
    • Pidna podpora Wavatar
    • +
    • Podpora pro oeten chyb (fallback) Gravataru pomoc indetyicon, MonsterID a Wavataru.
    • +
    • Optimalizace zptnch voln (trackback) avatar: Querypars budou odstieny z URL. Nyn v ukzkovm Serendipity blogu dostanete vdycky stejnho cachovanho Avatara, ne samostatnho pro jin strnky.
    • +
    +
  • verze 1.43 [brockhaus]
  • +
      +
    • Volba nastaven pro pidn jmna autora do attributu ALT u obrzku avatara. Normln je to vyplnno hvzdikou "*", ale slepci jsou pi prohlen strnek zvisl na tagu ALT, kter jim teky pedtaj, aby se dozvdli, co je obsahem obrzku.
    • +
    +
  • verze 1.42 [brockhaus]
  • +
      +
    • Kdovn podtrtka "_" v URL adresch uivatel, aby se odliily od oddlova. Funkce "urlencode" je nekduje. Dky uivateli [Tino Schwarze] za objeven a opravu.
    • +
    +
  • verze 1.41 [garvinhicking]
  • +
      +
    • Opravena hlavika "Last-Modified" u obrzk avatar.
    • +
    +
  • verze 1.40
  • + +
  • verze 1.39 [brockhaus]
  • +
      +
    • Avatary Monster ID je nyn tak cachovn, protoe jejich vytven trv dlouho.
    • +
    +
  • verze 1.38 [brockhaus]
  • +
    +
  • verze 1.37 [brockhaus]
  • +
      +
    • dka pod oknem komente informujc o podporovanch typech avatar lze skrt pomoc nastaven.
    • +
    +
  • verze 1.36 [brockhaus]
  • +
      +
    • Pidna nov volba: Mete nastavit, e plugin nebude vytvet avatary pmo, ale msto toho pouze tag pro smarty. Pokud je tato volba zapnut, mete si definovat v ablon pro komente, kde se maj avatary zobrazovat, a to pomoc tagu $comment.comment_avatar.
    • +
    • CSS tda avataru se bude mnit podle toho, kde je zobrazen. Pro normln komente bude mt tdu "comment_avatar", pro plugin "nejnovj pspvky" to bude tda "serendipity_plugin_comments_avatar", aby byla monost jednodue je oznait, ostylovat.
    • +
    • Nastaven zarovnn avatar: Nastaven zarovnn bude pouito, pokud je avatar vykreslen pmo (ne pomoc smarty).
    • +
    • Nov volba pro vypnn/zapnn obrzk avatar v postrannm sloupci (nejnovj komente).
    • +
    • Podporovan metody avatar se zobrazovaly i pod kontaktnm formulem, co ale nemlo logick smysl. V tomto fromuli byly tedy avatary vypnuty.
    • +
    • Dal zmny v jazykovch souborech.
    • +
    +
  • verze 1.35 [brockhaus]
  • +
      +
    • Opraveny chyby v anglickm jazykovm souboru. (Dky Donovi!)
    • +
    +
  • verze 1.34 [brockhaus]
  • +
      +
    • Hodnocen Gravatar nepracuje spolehliv. Mj Gravatar hodnocen jako G je zobrazen pouze pi pouit hodnocen gravatar X. :-/
      + Pidna volba pro vypnut parametru hodnocen Gravatar, co by mlo mt stejn efekt jako nastaven hodnocen X.
    • +
    +
  • verze 1.33 [brockhaus]
  • +
      +
    • Pavatar: X-Pavatar Header je nyn znovu podporovn a je prvn pouitou metodou automatick detekce Pavatara.
    • +
    +
  • verze 1.32 [brockhaus]
  • +
      +
    • Vchoz avatar MyBlogLog nebyl sprvn detekovn. :-/
    • +
    • Pokud nen zadn email ani url adresa, ale je definovn vchoz avatar, je nyn zobrazen prv vchoz avatar.
    • +
    +
  • verze 1.31 [brockhaus]
  • +
      +
    • Zmna asu voln (call-time) chyby (pass-by-reference) (fetchAvatar).
    • +
    +
  • verze 1.30 [brockhaus]
  • +
      +
    • Standradn Avatar se nezobrazoval, pokud byl blog nainstalovn v podadresi webu a ne pmo v koenov sloce.
    • +
    • Odkaz na Gravatara byl trochu patn (pesto fungoval).
    • +
    +
  • verze 1.29 [brockhaus]
  • +
      +
    • Oprava chyby 1.27 pidvala k URL "http://", i kdy nebyla zadna vbec dn URL adresa.
    • +
    +
  • verze 1.28 [brockhaus]
  • +
      +
    • V Serendipity 1.1 nebylo mon natavit vchozho avatara. Nastaven nebylo kompatibiln s verz Serendipity 1.1.
    • +
    +
  • verze 1.27 [brockhaus]
  • +
      +
    • Pokud pisatel zadal svoji adresu jako "www.domena.cz" msto "http://www.domena.cz", Avatar nebyl naten sprvn.
    • +
    +
  • verze 1.26 [brockhaus]
  • +
      +
    • MyBlogLog trochu pozmnil zpsob voln avatara, co mlo za nsledek, e oeten chybovch vstup (fallback) pro MyBlogLog pestal fungovat.
    • +
    +
  • verze 1.25 [garvinhicking]
  • +
      +
    • Zarovnn (algin) nahraceno definic pomoc CSS styl, take XHTML u neobsahuje dn definice zarovnn.
    • +
    +
  • verze 1.24 [brockhaus]
  • +
      +
    • Kontrola odpovdi MyBlogLog, jestli obsahuje opravdu obrzek.
    • +
    • Vyitn pamti cache pi nastaven hodnoty cachovn na 0.
    • +
    • Vypnut ladicch vpis.
    • +
    +
  • verze 1.23 [brockhaus]
  • +
      +
    • Pi vkldn erstvch P/favatar, plugin pijme pouze odpovdi oznaen vzdlenm serverem jako obrzky. To zamez pijet potencilnch html strnek jako obrzku avatara.
    • +
    +
  • verze 1.22 [brockhaus]
  • +
      +
    • Vkldn i pesmrovanch P/Favatar.
    • +
    +
  • verze 1.21 [brockhaus]
  • +
      +
    • Vkldn avatar se rozbilo pi vypnut cache.
    • +
    • Prohle nebyl schopen cachovat vchoz avatary kvli patn nastavenmu asu cache.
    • +
    • Kontrola, jestli cachovan soubor vypad jako obrzek, pedtm, ne je odesln na klienta.
    • +
    +
  • verze 1.20 [brockhaus]
  • +
      +
    • Titulek obrzku avatara nyn zobrazuje jmno autora msto "Avatar" (V.)
    • +
    +
  • verze 1.19 [brockhaus]
  • +
      +
    • Vyuit cache prohlee m za nsledek dobr vylepen vkonu!
    • +
    +
  • verze 1.18 [brockhaus]
  • +
      +
    • Vypnut ladicch vpis
    • +
    +
  • verze 1.17 [brockhaus]
  • +
      +
    • Pokud je zapnuto cachovn, je nyn cachovno vechno. Znm pispvatel a komenttoi nyn nezpsob dn voln cizch server, pokud u jsou jejich obrzky cachovny. Velmi pkn poslen vkonu. Dky Garvinovi za npad.
    • +
    • Zplata proti hackovn od uivatele [garvinhickins]
    • +
    +
  • verze 1.16 [garvinhicking]
  • +
      +
    • uhlazen kdu
    • +
    +
  • verze 1.14 [brockhaus]
  • +
      +
    • Implementovno zpracovn chyb pro MyBlogLog! :-) Ale je pomal, dokonce i s optimalizac pomoc cachovn. MyBlogLog by neml bt prvn v poad avatar.
    • +
    • Pidna pt kolonka pro vbr metody avatar, protoe MyBlogLog nyn tak podporuje zpracovn chyb (fallback).
    • +
    +
  • verze 1.13 [brockhaus]
  • +
      +
    • Doporuen zmnno: Nen to plugin "statistika", kter znefunkn Pavatary/Favatary, ale plugin "sledovn odchod" (exit tracking plugin)
    • +
    +
  • verze 1.12 [brockhaus]
  • +
      +
    • MyBlogLog avatary jsou nyn tak cachovny.
    • +
    • Strnky s pesmrovnm na vchoz strnku, pokud nebyla nalazena vchoz poloka, jsou nyn podporovny. Dvj plugin avatar pedpokldal, e vchoz strnka ja P/Favatar.
    • +
    • Vchoz nastaven poad avatar je nyn: Gravatar -> Pavatar + -> Favatar -> vchoz Avatar
    • +
    • Pidno doporuen, e plugin by ml bt zaazen ped pluginy, kter mn odkazy.
    • +
    • Natn nastaven cesty pluginu. Dve to byl vdy adres 'plugin'.
    • +
    • Vyazeno nastaven okraje gravatara, protoe u nefunguje (napod?).
    • +
    +
  • verze 1.11 [brockhaus], testovac verze nebyla releasovna do CVS/Spartacus
  • +
      +
    • Fallback (zpracovn chyby) pro Gravatar funguje! Ale zobrazuje vchozho avatara nezvisle na nastaven. Take toto nastaven bylo smazno.
    • +
    +
  • verze 1.10 [brockhaus]
  • +
      +
    • Informace o Pavatar / Avatar nebyly nikdy naten z cache
    • +
    • ...ale po naten z cache zpsobily nekonenou smyku pro obrzky naten z loklnho blogu (pokud byl povolen postrann blugin s komenti - comment sidebar)
    • +
    • Nastaven vky obrzku bylo pojmenovno "height" ... :-/
    • +
    • Cachovn Gravataru nefungovalo spolehliv, pokud byl nastaven vchoz avatar.
    • +
    +
  • verze 1.9 [brockhaus]
  • +
      +
    • Pi hledn Pavatara byl nataen Favatar jako Pavatar, pokud nebyl nalezen Pavatar, ale favicon. Dky uivateli [El Burro]
    • +
    +
  • verze 1.8 [brockhaus]
  • +
      +
    • Plugin nebych schopen nast Favatary/Pavatary, pokud bylo pesmrovn nasmrovno na URL strnky nastaven jako domovsk strnka komentujcho. Teba Garvin m takov blog...
    • +
    +
  • verze 1.7 [brockhaus]
  • +
      +
    • Pidna podpora Pavatar (www.pavatar.com)
    • +
    • Pidna podpora MyBlogLog avatar (www.mybloglog.com)
    • +
    • Poad pro vbr avatar a jak typy avatar jsou podporovny, ve je nyn nastaviteln.
    • +
    • Standardn avatar me bt jeden z nich (ml by bt posledn).
    • +
    • Volba pro nenastaven Gravatara jako vchozho avatara, i kdy je definovan. (Chceme mn datovch profil...)
    • +
    • Vloen vchozho avatara pomoc mediatky v nastaven pluginu.
    • +
    • Velikost obrzku je nyn zajitna pomoc HTML kdu.
    • +
    • Pod polem pro koment jsou zobrazovny pouze aktuln nastaven metody avatara jako podporovan.
    • +
    +
  • verze 1.6 [garvinhickins]
  • +
  • verze 1.5 [garvinhickins]
  • +
  • verze 1.4 [garvinhickins]
  • +
  • verze 1.3 [garvinhickins]
  • +
      +
    • Opraveny chyby neplatnosti domny
    • +
    +
+

nahoru

+ + + diff --git a/plugins/serendipity_event_gravatar/documentation_cz.html b/plugins/serendipity_event_gravatar/documentation_cz.html new file mode 100644 index 00000000..c12ae4b7 --- /dev/null +++ b/plugins/serendipity_event_gravatar/documentation_cz.html @@ -0,0 +1,433 @@ + + + + Dokumentace: Avatar Plugin + + + + +

Dokumentace k pluginu 'Gravatar'

+ +

Dokumentaci k tomuto pluginu peloil do etiny Vladimr Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 26.6.2011. Od t doby mohl bt plugin pozmnn nebo mohly bt rozen jeho funkce. Zkontrolujte pro jistotu i aktuln nmeckou dokumentaci, anglickou dokumentaci a ChangeLog. + +

+ + + +

Pehled

+

Pomoc pluginu Avatar lze piadit komentujcm v blogu piadit "obliej". Kadmu samostatnmu komenttorovi lze piadit takzvan Avatar, kter ho reprezentuje. K tomu lze pout nkolik rznch mechanizm, jak umonit komentujcm pouit avatara, kter budou v nsledujcm textu probrny. +

+

Vdy je pouit prvn mechanizmus, kter nalezne avatara. Dal zpsoby pak nejsou ani zkoueny. To znamen, e je teba seadit metody v tom poad, aby byly co nejdve pouity nejastji pouvan mechanizmy. Zpsoby, kter poskytnou avatara v kadm ppad, by mly bt umstny a na konci, protoe po nich zaazen metody nebudou pirozen nikdy uplatnny. +

+

Dleit: Tento plugin mus bt umstn v seznamu plugin ped vemi pluginy, kter mn odkazy, jako napklad "Markup: Sledovn odchod" (Exit Tracking Plugin). Jinak nemusej fungovat napklad avatary, kter jsou generovny na zklad odkaz na strnky komenttor. +

+

Nsleduje popis aktuln dostupnch mechanizm, jak piadit avatara komenttorm:

+

nahoru

+ + +

Gravatar

+

Gravatar je jedna z nejznmjch slueb pro uivatele avatar. Uivatele se mohou u tto sluby registrovat pomoc emailu, na kter je vzn obrzek avatara.

+

Gravatary jsou tedy spaen s emailem komenttora. Pouze pokud komenttor zad svj mail, je mon dotzat se Gravataru, jestli je pro dan mail registrovn obrzek avatara.

+

nahoru

+ + +

Pavatar

+

Pavatary jsou avatary (obrzky), kter pro tento el nahrl uivatel na svoji domovskou strnku.

+

Oproti velmi podobnm Favatarm sem me uivatel nahrt obrzek avatara v libovolnm rozlien.

+

V tomto ppad se zjiuje avatar na zklad domovsk strnky, kterou zadal komenttor, konkrtn jestli tato domovsk strnka obsahuje Pavatara. Tento zpsob zjiovn avatara je pouit pirozen pouze v ppad, e komenttor zadal domovksou webovou strnku.

+

nahoru

+ + +

Favatar

+

Toto je koncept, pomoc kterho m spousta vlastnk webovch strnek Avatara, ani pro to musej cokoliv udlat:

+

Blog pouije jednodue favicon (ikonku webu) ze strnky, kterou komenttor zadal jako svoji domovskou. +Favicon je obvykle jenom obyejn ikona, kter bv docela mal a asto nevypad jako avatar. +

+

nahoru

+ + +

Twitter

+

V ppad, e komenttor zad adresu domovsk strnky jako URL profilu na Twitteru, pak bude tento profil prohledn, jestli obsahuje profilovou fotku, kter bude nsledn pouita jako avatar.

+

Poznmka: Pokud je zrove pouito hledn metodou "Favatar", pak mus stt tato metoda Twitter ped Favatarem, protoe jinak bude msto obrzku z profilu pouita favicona Twitteru. Co me bt na druhou stranu pouito mysln, napklad k jasnmu a jednoznanmu oznaen "tweetback" z Twitteru. +

+

nahoru

+ + +

Identica

+

Toto je zvltn avatar pro pingbacky Identica. V tomto ppad je hledn profilov obrzek uivatele, kter poslal pingback.

+

Poznmka: Pokud je zrove pouito hledn metodou "Favatar", pak mus stt tato metoda Identica ped Favatarem, protoe jinak bude msto obrzku z profilu pouita favicona Identicy. Co me bt na druhou stranu pouito mysln, napklad k jasnmu a jednoznanmu oznaen "tweetback" z Identicy. +

+

nahoru

+ + +

MyBlogLog

+

Toto je opt centrln sluba (podobn jako Gravatar). MyBlogLog je sluba poskytujc blogy, ale zrove z n lze zskat avatary.

+

Ptomnost MyBlogLog avatar je zjitna z domovsk adresy komenttor. +

nahoru

+ + +

Wavatar

+

Wavatar je dynamicky vyroben z domovsk strnky a emailov adresy komenttor. Poskytuje pro kadho uivatele jin, ale vdy stejn obrzek. Tmto zpsobem je vdycky vloen avatar, tedy vechny metody zaazen po tto budou ignorovny. Wavatary vypadaj asi nsledovn:

+

+

nahoru

+ + +

MonsterID

+

MonsterID avatary jsou generovny stejnm mechanizmem jako Wavatary nebo Idnetikony. V tomto ppad jsou vygenerovny takovto roztomil "perky" (monstra).

+

Podobn jako u Wavataru a Identikon je tmto zpsobem vdycky vloen avatar, tedy vechny metody zaazen po tto budou ignorovny. +

+

nahoru

+ + +

Identicon/YCon

+

+Avatary Identicon (identikony) jsou generovny stejnm mechanizmem jako Wavatary nebo MonsterID. V tomto ppad jsou vygenerovny abstraktn obrazce.

+

Podobn jako u Wavataru a MonsterID je tmto zpsobem vdycky vloen avatar, tedy vechny metody zaazen po tto budou ignorovny.

+

+

nahoru

+ + +

Standardavatar

+

Metoda "Standardavatar" poskytuje vdycky stejn obrzek pro vechny uivatele. Obrzek, kter bude pouit, lze zadat v sekci "Nastaven".

+

nahoru

+ + +

Nastaven

+ + +

Poad vloen Avatar

+

Zde je zadno poad zkouen jednotlivch metod pro zjitn avatar ke komenttorm.

+

V souasnosti existuje 6 metod, ze kterch je mon poad sestavit. Je teba dt pozor na to, e metody, kter generuj avatara pokad, jsou posledn, kter jsou vyzkoueny, vechny nsledujc metody jsou ignorovny.

+

nahoru

+ + +

Standard-Avatar

+

URL adresa ke standardnmu avataru. Tady muste zadat relativn nebo absolutn URL adresu k obrzku standardnho avataru.

+

nahoru

+ + +

Zobrazovat v postrannm panelu

+

Maj se obrzky avatar zobrazovat i v postrannm panelu (posledn komente)?

+

nahoru

+ + +

Zobrazovat podporovan typy avatar

+

Pokud je zakrtnuto, pak se pod polkem k vloen komente objev dek s vtem podporovanch avatar.

+

nahoru

+ + +

Jmno autora v atributu ALT

+

Normln je umstho jmno autora v atributu TITLE u obrzku, atribut ALT je pak vyplnn hvzdikou "*", aby se v rozvren strnky nic nerozhzelo, pokud nejsou nataeny obrzky. Nicmn z hlediska pstupnosti strnky i pro slep tene je dleit, aby v atributu ALT nco bylo, protoe je to prv tento atribut, kter jim je pedtn a podle kterho poznaj, co je na obrzku. Pokud tedy chcete podporovat i tyto postien tene, mli byste tuto volbu povolit.

+

nahoru

+ + +

Generovat Smarty Tag

+

Pokud je zakrtnuta tato volby, nen obrzek avatara vloen pmo do komente, ale msto toho je generovn Smarty Tag {$comment.avatar}, kter pi generovn strnky obsahuje HTML kd pro zobrazen obrzku. Tuto volbu byste mli zapnout pouze pokud vte, e ablona vzhledu, kterou povte, podporuje tento tag. Jestli tomu tak opravdu je, mete jednodue vyzkouet.

+

nahoru

+ + +

Zarovnn

+

Pomoc tto volby mete zadat zarovnn avatara vzhledem ke komenti, tedy pokud nepoutve volbu Smarty Tag. V ppad, e Smarty Tag pouvte, pak muste k zarovnn obrzku pout odpovdajc CSS tdu ve stylopisu.

+

nahoru

+ + +

Velikost obrzku

+

Maximln zobrazen velikost avataru v pixelech.

+

nahoru

+ + +

Doba cachovn

+

Kdy maj bt avatary doasn ukldny (doporueno!), mus bt zde uveden poet hodin, bhem kterch se maj obrzky natahovat z blogovho serveru, namsto serveru vzdlene avatarov sluby. Sice to zpsob lehk zven provozu na vaem blogovm serveru, na druhou stranu se stanou obrzky vcemn nezvisl na pstupnosti serveru externch slueb. "0" znamen vypnut cachovn.

+

nahoru

+ + +

Indikace Gravataru

+

Dtsk pojistka :)

+

nahoru

+ + +

Gravatar Fallback (zpracovn chyby)

+

Metoda Gravatar umouje chybovou metodu pro ppad, kdy pro uivatele nen nalezen dn avatar. Tou me bt jedna z Monster ID, Identicon nebo Wavatar. Pokud nastavte tuto chybovou metodu pro Gravatara, nebudou zkoueny dn dal metody pro zjitn avatara, pokud uivatel zadal emailovou adresu.

+

nahoru

+ + +

Vdy vyadovat Gravatar Fallback

+

Vyadovat zpracovn chyby Gravatar (Gravatar Fallback) tak pokud uivatel nezadal dn email (ale pokud zadal URL adresu domovsk strnky nebo jmno).

+

nahoru

+ + +

Historie verz (ChangeLog)

+ +
    +
  • verze 1.54
  • +
      +
    • Do jazykov konstanty PLUGIN_EVENT_GRAVATAR_SUPPORTED byl pidn parametr %s pro zobrazen podporovanch avatarovch slueb.
    • +
    +
  • verze 1.52
  • +
      +
    • Zmnno zobrazen podporovanch avatar pod polem pro koment, aby podporovalo hezk zalamovn dk.
    • +
    +
  • verze 1.51
  • +
      +
    • Pouit funkce strtolower() pro mailov adresy.
    • +
    +
  • verze 1.49 [brockhaus]
  • +
      +
    • Pavatar v blozch s pesmrovnm nefungoval, pokud byl odkaz na Pavatar pstupn pouze v informacch tagu "rel link"
    • +
    +
  • verze 1.48 [brockhaus]
  • +
      +
    • Oprava: Kompatibilita PHP byla poruena pi oprav 1.46 :-/
    • +
    • Pidn avatar Identica. Pouito hlavn pro pingbacky Indetica a mlo by bt pouito ped Favatarem, jinak se bude zobrazovat znaka Identica msto obrzku uivatele.
    • +
    • Vyitn kdu
    • +
    +
  • verze 1.47 [brockhaus]
  • +
      +
    • Vypnut ladicch vpis v template_c
    • +
    +
  • verze 1.46 [brockhaus]
  • +
      +
    • Pidn Twitter Avatar (pokud URL odkazuje na profil na Twitteru). To je vtinou pouito pro Tweetbacky a mlo by bt pouito ped Favatarem, jinak se bude zobrazovat logo Twitteru.
    • +
    • Vyitn kdu
    • +
    +
  • verze 1.45 [brockhaus]
  • +
      +
    • Npovda
    • +
    • Vyitn
    • +
    +
  • verze 1.44 [brockhaus]
  • +
      +
    • Pidna podpora Wavatar
    • +
    • Podpora pro oeten chyb (fallback) Gravataru pomoc indetyicon, MonsterID a Wavataru.
    • +
    • Optimalizace zptnch voln (trackback) avatar: Querypars budou odstieny z URL. Nyn v ukzkovm Serendipity blogu dostanete vdycky stejnho cachovanho Avatara, ne samostatnho pro jin strnky.
    • +
    +
  • verze 1.43 [brockhaus]
  • +
      +
    • Volba nastaven pro pidn jmna autora do attributu ALT u obrzku avatara. Normln je to vyplnno hvzdikou "*", ale slepci jsou pi prohlen strnek zvisl na tagu ALT, kter jim teky pedtaj, aby se dozvdli, co je obsahem obrzku.
    • +
    +
  • verze 1.42 [brockhaus]
  • +
      +
    • Kdovn podtrtka "_" v URL adresch uivatel, aby se odliily od oddlova. Funkce "urlencode" je nekduje. Dky uivateli [Tino Schwarze] za objeven a opravu.
    • +
    +
  • verze 1.41 [garvinhicking]
  • +
      +
    • Opravena hlavika "Last-Modified" u obrzk avatar.
    • +
    +
  • verze 1.40
  • + +
  • verze 1.39 [brockhaus]
  • +
      +
    • Avatary Monster ID je nyn tak cachovn, protoe jejich vytven trv dlouho.
    • +
    +
  • verze 1.38 [brockhaus]
  • +
    +
  • verze 1.37 [brockhaus]
  • +
      +
    • dka pod oknem komente informujc o podporovanch typech avatar lze skrt pomoc nastaven.
    • +
    +
  • verze 1.36 [brockhaus]
  • +
      +
    • Pidna nov volba: Mete nastavit, e plugin nebude vytvet avatary pmo, ale msto toho pouze tag pro smarty. Pokud je tato volba zapnut, mete si definovat v ablon pro komente, kde se maj avatary zobrazovat, a to pomoc tagu $comment.comment_avatar.
    • +
    • CSS tda avataru se bude mnit podle toho, kde je zobrazen. Pro normln komente bude mt tdu "comment_avatar", pro plugin "nejnovj pspvky" to bude tda "serendipity_plugin_comments_avatar", aby byla monost jednodue je oznait, ostylovat.
    • +
    • Nastaven zarovnn avatar: Nastaven zarovnn bude pouito, pokud je avatar vykreslen pmo (ne pomoc smarty).
    • +
    • Nov volba pro vypnn/zapnn obrzk avatar v postrannm sloupci (nejnovj komente).
    • +
    • Podporovan metody avatar se zobrazovaly i pod kontaktnm formulem, co ale nemlo logick smysl. V tomto fromuli byly tedy avatary vypnuty.
    • +
    • Dal zmny v jazykovch souborech.
    • +
    +
  • verze 1.35 [brockhaus]
  • +
      +
    • Opraveny chyby v anglickm jazykovm souboru. (Dky Donovi!)
    • +
    +
  • verze 1.34 [brockhaus]
  • +
      +
    • Hodnocen Gravatar nepracuje spolehliv. Mj Gravatar hodnocen jako G je zobrazen pouze pi pouit hodnocen gravatar X. :-/
      + Pidna volba pro vypnut parametru hodnocen Gravatar, co by mlo mt stejn efekt jako nastaven hodnocen X.
    • +
    +
  • verze 1.33 [brockhaus]
  • +
      +
    • Pavatar: X-Pavatar Header je nyn znovu podporovn a je prvn pouitou metodou automatick detekce Pavatara.
    • +
    +
  • verze 1.32 [brockhaus]
  • +
      +
    • Vchoz avatar MyBlogLog nebyl sprvn detekovn. :-/
    • +
    • Pokud nen zadn email ani url adresa, ale je definovn vchoz avatar, je nyn zobrazen prv vchoz avatar.
    • +
    +
  • verze 1.31 [brockhaus]
  • +
      +
    • Zmna asu voln (call-time) chyby (pass-by-reference) (fetchAvatar).
    • +
    +
  • verze 1.30 [brockhaus]
  • +
      +
    • Standradn Avatar se nezobrazoval, pokud byl blog nainstalovn v podadresi webu a ne pmo v koenov sloce.
    • +
    • Odkaz na Gravatara byl trochu patn (pesto fungoval).
    • +
    +
  • verze 1.29 [brockhaus]
  • +
      +
    • Oprava chyby 1.27 pidvala k URL "http://", i kdy nebyla zadna vbec dn URL adresa.
    • +
    +
  • verze 1.28 [brockhaus]
  • +
      +
    • V Serendipity 1.1 nebylo mon natavit vchozho avatara. Nastaven nebylo kompatibiln s verz Serendipity 1.1.
    • +
    +
  • verze 1.27 [brockhaus]
  • +
      +
    • Pokud pisatel zadal svoji adresu jako "www.domena.cz" msto "http://www.domena.cz", Avatar nebyl naten sprvn.
    • +
    +
  • verze 1.26 [brockhaus]
  • +
      +
    • MyBlogLog trochu pozmnil zpsob voln avatara, co mlo za nsledek, e oeten chybovch vstup (fallback) pro MyBlogLog pestal fungovat.
    • +
    +
  • verze 1.25 [garvinhicking]
  • +
      +
    • Zarovnn (algin) nahraceno definic pomoc CSS styl, take XHTML u neobsahuje dn definice zarovnn.
    • +
    +
  • verze 1.24 [brockhaus]
  • +
      +
    • Kontrola odpovdi MyBlogLog, jestli obsahuje opravdu obrzek.
    • +
    • Vyitn pamti cache pi nastaven hodnoty cachovn na 0.
    • +
    • Vypnut ladicch vpis.
    • +
    +
  • verze 1.23 [brockhaus]
  • +
      +
    • Pi vkldn erstvch P/favatar, plugin pijme pouze odpovdi oznaen vzdlenm serverem jako obrzky. To zamez pijet potencilnch html strnek jako obrzku avatara.
    • +
    +
  • verze 1.22 [brockhaus]
  • +
      +
    • Vkldn i pesmrovanch P/Favatar.
    • +
    +
  • verze 1.21 [brockhaus]
  • +
      +
    • Vkldn avatar se rozbilo pi vypnut cache.
    • +
    • Prohle nebyl schopen cachovat vchoz avatary kvli patn nastavenmu asu cache.
    • +
    • Kontrola, jestli cachovan soubor vypad jako obrzek, pedtm, ne je odesln na klienta.
    • +
    +
  • verze 1.20 [brockhaus]
  • +
      +
    • Titulek obrzku avatara nyn zobrazuje jmno autora msto "Avatar" (V.)
    • +
    +
  • verze 1.19 [brockhaus]
  • +
      +
    • Vyuit cache prohlee m za nsledek dobr vylepen vkonu!
    • +
    +
  • verze 1.18 [brockhaus]
  • +
      +
    • Vypnut ladicch vpis
    • +
    +
  • verze 1.17 [brockhaus]
  • +
      +
    • Pokud je zapnuto cachovn, je nyn cachovno vechno. Znm pispvatel a komenttoi nyn nezpsob dn voln cizch server, pokud u jsou jejich obrzky cachovny. Velmi pkn poslen vkonu. Dky Garvinovi za npad.
    • +
    • Zplata proti hackovn od uivatele [garvinhickins]
    • +
    +
  • verze 1.16 [garvinhicking]
  • +
      +
    • uhlazen kdu
    • +
    +
  • verze 1.14 [brockhaus]
  • +
      +
    • Implementovno zpracovn chyb pro MyBlogLog! :-) Ale je pomal, dokonce i s optimalizac pomoc cachovn. MyBlogLog by neml bt prvn v poad avatar.
    • +
    • Pidna pt kolonka pro vbr metody avatar, protoe MyBlogLog nyn tak podporuje zpracovn chyb (fallback).
    • +
    +
  • verze 1.13 [brockhaus]
  • +
      +
    • Doporuen zmnno: Nen to plugin "statistika", kter znefunkn Pavatary/Favatary, ale plugin "sledovn odchod" (exit tracking plugin)
    • +
    +
  • verze 1.12 [brockhaus]
  • +
      +
    • MyBlogLog avatary jsou nyn tak cachovny.
    • +
    • Strnky s pesmrovnm na vchoz strnku, pokud nebyla nalazena vchoz poloka, jsou nyn podporovny. Dvj plugin avatar pedpokldal, e vchoz strnka ja P/Favatar.
    • +
    • Vchoz nastaven poad avatar je nyn: Gravatar -> Pavatar + -> Favatar -> vchoz Avatar
    • +
    • Pidno doporuen, e plugin by ml bt zaazen ped pluginy, kter mn odkazy.
    • +
    • Natn nastaven cesty pluginu. Dve to byl vdy adres 'plugin'.
    • +
    • Vyazeno nastaven okraje gravatara, protoe u nefunguje (napod?).
    • +
    +
  • verze 1.11 [brockhaus], testovac verze nebyla releasovna do CVS/Spartacus
  • +
      +
    • Fallback (zpracovn chyby) pro Gravatar funguje! Ale zobrazuje vchozho avatara nezvisle na nastaven. Take toto nastaven bylo smazno.
    • +
    +
  • verze 1.10 [brockhaus]
  • +
      +
    • Informace o Pavatar / Avatar nebyly nikdy naten z cache
    • +
    • ...ale po naten z cache zpsobily nekonenou smyku pro obrzky naten z loklnho blogu (pokud byl povolen postrann blugin s komenti - comment sidebar)
    • +
    • Nastaven vky obrzku bylo pojmenovno "height" ... :-/
    • +
    • Cachovn Gravataru nefungovalo spolehliv, pokud byl nastaven vchoz avatar.
    • +
    +
  • verze 1.9 [brockhaus]
  • +
      +
    • Pi hledn Pavatara byl nataen Favatar jako Pavatar, pokud nebyl nalezen Pavatar, ale favicon. Dky uivateli [El Burro]
    • +
    +
  • verze 1.8 [brockhaus]
  • +
      +
    • Plugin nebych schopen nast Favatary/Pavatary, pokud bylo pesmrovn nasmrovno na URL strnky nastaven jako domovsk strnka komentujcho. Teba Garvin m takov blog...
    • +
    +
  • verze 1.7 [brockhaus]
  • +
      +
    • Pidna podpora Pavatar (www.pavatar.com)
    • +
    • Pidna podpora MyBlogLog avatar (www.mybloglog.com)
    • +
    • Poad pro vbr avatar a jak typy avatar jsou podporovny, ve je nyn nastaviteln.
    • +
    • Standardn avatar me bt jeden z nich (ml by bt posledn).
    • +
    • Volba pro nenastaven Gravatara jako vchozho avatara, i kdy je definovan. (Chceme mn datovch profil...)
    • +
    • Vloen vchozho avatara pomoc mediatky v nastaven pluginu.
    • +
    • Velikost obrzku je nyn zajitna pomoc HTML kdu.
    • +
    • Pod polem pro koment jsou zobrazovny pouze aktuln nastaven metody avatara jako podporovan.
    • +
    +
  • verze 1.6 [garvinhickins]
  • +
  • verze 1.5 [garvinhickins]
  • +
  • verze 1.4 [garvinhickins]
  • +
  • verze 1.3 [garvinhickins]
  • +
      +
    • Opraveny chyby neplatnosti domny
    • +
    +
+

nahoru

+ + + diff --git a/plugins/serendipity_event_gravatar/documentation_de.html b/plugins/serendipity_event_gravatar/documentation_de.html new file mode 100644 index 00000000..48f9e811 --- /dev/null +++ b/plugins/serendipity_event_gravatar/documentation_de.html @@ -0,0 +1,211 @@ + + + + Hilfedatei: Avatar Plugin + + + + + + + +

Überblick

+

Mit dem Avatar Plugin kann man Kommentatoren in seinem Blog "ein Gesicht" geben. +Für jeden einzelnen Kommentator im Blog wird ein so genanntes Avatar zur Verfügung gestellt, das ihn repräsentiert. +Dafür werden unterschiedliche Mechanismen angeboten, die nacheinander durchprobiert werden, ob sie ein Avatar für +den Kommentator liefern.

+

Der erste Mechanismus, der ein Avatar findet, wird benutzt, nachfolgende Mechanismen +dann nicht mehr ausprobiert. Dies bedeutet, dass man die Methoden so sortieren sollte, dass die am meisten bevorzugte +zuerst ausprobiert wird. Methoden, die auf jeden Fall immer ein Avatar liefern, sollten als letzte konfiguriert werden, +da nach diesen natürlich keine weiteren Methoden ausprobiert werden. +

+

Wichtig: Dieses Plugin muss vor allen Plugins in der Liste stehen, die Links verändern, wie +z.B. das "Exit Tracking Plugin". Ansonsten können Avatare, die auf den Links der Kommentatoren beruhen, nicht +funktionieren.

+

Hier folgt eine Beschreibung der aktuell verfügbaren Mechanismen, ein Avatar für einen Kommentator zu ermitteln:

+

top

+ + +

Gravatar

+

Gravatar ist einer der bekanntesten Services für Benutzer Avatare. +Benutzer können sich bei diesem Service mit einer EMail registrieren und für sich ein Avatar Bild hinterlegen

+

Gravatare sind also von der vom Kommentator eingegebenen EMail abhängig. Nur wenn eine solche angegeben wurde, kann +ermittelt werden, ob für diese ein Avatar beim Gravatar Service hinterlegt wurde.

+

top

+ + +

Pavatar

+

Pavatare sind Avatare (Bilddateien), die der Schreber genau +für diesen Zweck auf seiner Homepage hinterlegt hat.

+

Im Gegensatz zu den recht ähnlichen Favataren kann man hier also ein eigenes Avatar Bild +mit einer beliebigen Auflösung hinterlegen.

+

Hier wird anhand der vom Kommentator angegebenen Homepage ermittelt, ob diese ein Pavatar liefert. Pavatare sind +also nur ladbar, wenn der Kommentator eine Homepage angegeben hat

+

top

+ + +

Favatar

+

Dies ist ein Konzept mit dem viele Hompage Besitzer automatisch einen Avatar haben, ohne dass sie dafür irgendetwas tun müssen:

+

Das Blog holt sich hier einfach das favicon der Homepage, die der Benutzer als seine URL angegeben hat. +Dafür ist das favicon aber eben ein Icon und somit normaler Weise auch recht klein und nicht immer als Avatar geeignet.

+

top

+ + +

Twitter

+

Falls der Kommentator als URL ein Twitter Profil angegeben hat, dann wird versucht, hier das Profilbild für diesen +Benutzer zu laden.

+

Anmerkung: Falls auch Favatare geladen werden sollen, dann muss Twitter vor diesen versucht werden, sonst wird das +Favicon von Twitter geladen. Dies kann allerdings auch gewollt sein, um z.B. "Tweetbacks" von Twitter klar zu markieren.

+

top

+ + +

Identica

+

Dies ist ein spezielles Avatar für Identica Pingbacks. Es wird versucht, +das Profilbild des Benutzers zu laden, der den Pingback ausgelöst hat.

+

Anmerkung: Falls auch Favatare geladen werden sollen, dann muss Identica vor diesen versucht werden, sonst wird das +Favicon von Identica geladen. Dies kann allerdings auch gewollt sein, um z.B. "Tweetbacks" von Identica klar zu markieren.

+

top

+ + +

MyBlogLog

+

Dies ist wieder ein (dem Gravatar Service sehr ähnlicher) zentraler Service. MyBlogLog ist eigentlich ein Blog Community Service, +aber man kann aus diesem ebenfalls Avatare ermitteln

+

Das Vorhandensein eines MyBlogLog Avatars wird über die Homepage Angabe des Kommentators ermittelt. +

top

+ + +

Wavatar

+

Das Wavatar wird dynamisch erzeugt aus der Eingabe von Hompage und EMail des Kommentators. Es liefert für jeden Benutzer ein anderes +aber immer selbes Avatar. Da es immer ein Avatar liefert, werden alle nachfolgenden Avatar Methoden ignoriert. +Wavatare sehen in etwa wie folgt aus:

+

+

top

+ + +

MonsterID

+

MonsterID Avatare werden nach dem selben Mechanismus erzeugt, wie Wavatare und Indenticons, hier werden kleine niedliche "Monster" +aus den Benutzer Angaben erzeugt.

+

Genau wie Wavatar und Identicon liefern sie immer einen Avatar für den Kommentator.

+

+

top

+ + +

Identicon/YCon

+

Identicon werden nach dem selben Mechanismus erzeugt, wie Wavatare und MonsterIDs, sie sehen nur anders aus. Hier werden +abstrakte Gebilde erzeugt.

+

Genau wie Wavatar und MonsterID liefern sie immer einen Avatar für den Kommentator.

+

+

top

+ + +

Standardavatar

+

Die Methode "Standardavatar" liefert immer das selbe Avatar für alle Benutzer. Das Bild, das hier benutzt werden soll, kann +weiter unten konfiguriert werden.

+

top

+ + +

Konfiguration

+ + +

Avatar laden über

+

Hiermit wird die Reihenfolge festgelegt, in der versucht wird, ein Avatar für den Kommentator zu erzeugen.

+

Es gibt derzeit 6 Einschübe, mit denen die Reihenfolge festgelegt wird. Zu beachten ist, dass Methoden, +die auf jeden Fall ein Avatar liefern, alle nachfolgenden Methoden nicht zur Probe bringen.

+

top

+ + +

Standard-Avatar

+

URL zu ihrem Standard-Avatar. Hier müssen Sie den relativen oder absoluten Pfad bezogen auf ihre Server URL zu ihrem Standard Avatar angeben.

+

top

+ + +

In der Seitenleiste anzeigen

+

Sollen Avatar Bilder auch in der Seitenleiste (letze Kommentare) angezeigt werden?

+

top

+ + +

Avatar Typ anzeigen

+

Wenn angeschaltet, wird eine Zeile unterhalb des Kommentar Editors ausgegeben, die angibt, welche Avatar Typen aktuell unterstützt werden.

+

top

+ + +

Autorenname im ALT Attribut

+

Normaler Weise wird der Autorenname im TITLE Attribut des Avatar Bildes angegeben, das ALT Attribut wird mit einem * gefüllt, um das Seitenlayout nicht zu zerstören, wenn der Browser das Bild nicht laden kann. Allerdings wird blinden Lesern das ALT Attribut vorgelesen. Falls Sie diese Leser unterstützen wollen, sollten Sie diese Option einschalten.

+

top

+ + +

Smarty Tag erzeugen

+

Wenn diese Option eingeschaltet ist, so wird das Avatar Bild nicht direkt in den Kommentar geschrieben, sondern es wird ein Smarty Tag {$comment.avatar} erzeugt, in dem der HTML Code des Images steht. Sie sollten diese Option nur einschalten, wenn sie wissen, dass ihr Template dieses Smarty Tag unterstützt. Ob das der Fall ist, sollten sie einfach ausprobieren.

+

top

+ + +

Ausrichtung

+

Mit dieser Option kann die Ausrichtung des Avatars im Kommentar konfiguriert werden, falls sie nicht die Smarty Tag Option verwenden. Bei der Smarty Tag Option muss die Ausrichtung über die entsprechende CSS Klasse im Stylesheet konfiguriert werden.

+

top

+ + +

Bildgröße

+

Maximal dargestellte Größe des Avatar-Bildes in Pixeln

+

top

+ + +

Cache Zeit

+

Wenn Avatare zwischengespeichert werden sollen (empfohlen!), muss hier die Anzahl der Stunden eingetragen werden, die Bilder vom eigenen Server anstatt vom externen Service abgeholt werden sollen. Dies wird mehr Traffic auf diesem Blog Server verursachen, dafür macht es die Avatar Darstellung unabhängiger vom externen zentralen Server. "0" stellt das Zwischenspeichern ab.

+

top

+ + +

Gravatar Indizierung

+

Kinderschutz :)

+

top

+ + +

Gravatar Fallback

+

Gravatar implementiert einige eigene Fallback Methoden für den Fal, dass kein Gravatar für den Benutzer gefunden wurde. Es wurde ebenso Moster ID, Identicon und Wavatar. Wenn Du einen dieser Fallbacks einstellst, so wird keine weitere Methode nach Gravatar versucht, falls der Benutzer eine EMail angegeben hat.

+

top

+ + +

Gravatar Fallback immer benutzen

+

Gravatar Fallbacks auch dann benutzen, wenn der Benutzer keine EMail (aber eine URL oder einen Namen) eingegeben hat.

+

top

+ + + \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/documentation_en.html b/plugins/serendipity_event_gravatar/documentation_en.html new file mode 100644 index 00000000..8fd90cba --- /dev/null +++ b/plugins/serendipity_event_gravatar/documentation_en.html @@ -0,0 +1,14 @@ + + + Helpfile: Avatar Plugin + + + + +
+

Helpfile: Avatar Plugin

+
+

Hopefully coming soon

+

If you understand the german language, you can read the german version of the helpfile.

+ + \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/lang_cs.inc.php b/plugins/serendipity_event_gravatar/lang_cs.inc.php new file mode 100644 index 00000000..dca79ec0 --- /dev/null +++ b/plugins/serendipity_event_gravatar/lang_cs.inc.php @@ -0,0 +1,62 @@ + + * @translated 2009/07/06 + * @author Vladimr Ajgl + * @revisionDate 2011/04/17 + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Zobrazuje avatary (ikona i obrzek pispvatele) v komentch. Podporovny jsou sluby Gravatar, Pavatar, Favatar a MyBlogLog.'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Tvoit smarty tag'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'Pokud je tato volba zapnuta, obrzky avatar nejsou zapsny pmo do textu komente, ale je msto toho vygenerovn tag {$comment.avatar} pro ablonovac systm smarty. Pak budou avatary zobrazovat pouze styly vzhledu, kter tento tag pouvaj. Nejjednodu zpsob, jak zjistit, jestli V styl vzhledu podporuje avatary, je vyzkouet zapnout toto nastaven.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Vchoz avatar'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'Velikost'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Hodnocen Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'dn hodnocen'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'Obecn - General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Omezen - Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Rodiovsk veden - Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicitn (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'Jak je URL adresa k vchozmu avataru? Zadejte absolutn URL cestu nebo relativn URL cestu, vzhledem ke koenov sloce serveru.'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Nejvt rozmr avataru (v pixelech)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Hodnocen obrzku'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Cachovac as'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Pokud chcete cachovat avatary (doporueno!), zadejte as v hodinch, bhem kter bude avatar vkldn do blogu z Vaeho serveru, ani by byl kontaktovn server sluby s avatary. Vhoda cachovn je, e se uet komunikace mezi blogem a serverem s avatary, a e bude blog ponkud nezvislej na momentlnm stavu avatarovch slueb, Hodnota "0" vypne cachovn.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Zarovnn'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'Tato volba uruje zarovnn avataru, ale pouze pokud nen pouvna volba "smarty tag". Pi pouit zmnn volby je na Vs zadit zarovnn po svm pomoc CSS stylu pro obrzek s avatarem.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'vlevo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'vpravo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'bez zarovnn'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'Pout v postrannm sloupci'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Maj se avatary zobrazovat tak v postrannm sloupci v bloku s nejnovjmi komenti?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Zobrazovat informaci o typu avataru'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'Pokud je zapnuto, pak se pod polem pro zadn textu komente bude zobrazovat informace, kter avatary jsou momentln podporovny.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Vchoz avatar'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD', 'Stahovat avatary pomoc'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DESC', 'Pokud pedchoz pokus sele, zkus tento. Typy "Monster ID", "Defaultavatar" a "---" nikdy neselou. Vechny metody, kter nsleduj po jedn ze zmnnch metod, nebudou nikdy zkoueny!'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s obrzky autor podporovny.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Jmno autora v atributu ALT v obrzku'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Obvykle se jmno autora zobrazuje v atributu TITLE v obrzku s avatarem a atribut ALT je vyplnn hvzdikami. To zabrauje zhroucen vzhledu strnky, pokud nen prohle schopen nathnout obrzky. Ale slepci pouvaj pro prohlen internetu asto prv atribut ALT, take pokud jim chcete zpstupnit sv strnky, zapnte tuto volbu.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatar je centrln loit obrzk uivatel spaen s emailovou adresou, ' . + 'Favatar poskytuje favicony naten z osobnch strnek uivatele, Pavatar ' . + 'jsou obrzky uloen na osobnch strnkch pisatele, MyBlogLog avatar jsou centrln ukldan obrzky a ' . + 'Monster ID, Identicon a Wavatar avatary jsou nahrvan obrzky vytvoen jednotlivmi uivateli.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'POZOR! Tento plugin mus bt zaazen ped vemi pluginy, kter mn odkazy (jako nap. plugin "exit tracking plugin")! ' . + 'Jinak nebudou pracovat avatary slueb Pavatar, Favatar a MayBlogLog!'); + +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK', 'Gravatar fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC', 'Gravatar m implementovanch nkolik nvratovch metod pro ppad, e pro poadovanho uivatele nen znm dn avatar. Implementovny jsou t Moster ID, Identicon a Wavatar. Pokud vyberete nkter z tchto znnch, nebudou uskuteovny dn dal pokusy o naten avataru, pokud uivatel zad email.'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS', 'Vdy nvratov hodnota pro Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC', 'Pouvat nvratovou hodnotu Gravatar i v ppad, e uivatel nezad email (zad tedy url nebo jmno)'); \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/lang_cz.inc.php b/plugins/serendipity_event_gravatar/lang_cz.inc.php new file mode 100644 index 00000000..5194bdb6 --- /dev/null +++ b/plugins/serendipity_event_gravatar/lang_cz.inc.php @@ -0,0 +1,62 @@ + + * @translated 2009/07/06 + * @author Vladimr Ajgl + * @revisionDate 2011/04/17 + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Zobrazuje avatary (ikona i obrzek pispvatele) v komentch. Podporovny jsou sluby Gravatar, Pavatar, Favatar a MyBlogLog.'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Tvoit smarty tag'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'Pokud je tato volba zapnuta, obrzky avatar nejsou zapsny pmo do textu komente, ale je msto toho vygenerovn tag {$comment.avatar} pro ablonovac systm smarty. Pak budou avatary zobrazovat pouze styly vzhledu, kter tento tag pouvaj. Nejjednodu zpsob, jak zjistit, jestli V styl vzhledu podporuje avatary, je vyzkouet zapnout toto nastaven.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Vchoz avatar'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'Velikost'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Hodnocen Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'dn hodnocen'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'Obecn - General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Omezen - Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Rodiovsk veden - Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicitn (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'Jak je URL adresa k vchozmu avataru? Zadejte absolutn URL cestu nebo relativn URL cestu, vzhledem ke koenov sloce serveru.'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Nejvt rozmr avataru (v pixelech)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Hodnocen obrzku'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Cachovac as'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Pokud chcete cachovat avatary (doporueno!), zadejte as v hodinch, bhem kter bude avatar vkldn do blogu z Vaeho serveru, ani by byl kontaktovn server sluby s avatary. Vhoda cachovn je, e se uet komunikace mezi blogem a serverem s avatary, a e bude blog ponkud nezvislej na momentlnm stavu avatarovch slueb, Hodnota "0" vypne cachovn.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Zarovnn'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'Tato volba uruje zarovnn avataru, ale pouze pokud nen pouvna volba "smarty tag". Pi pouit zmnn volby je na Vs zadit zarovnn po svm pomoc CSS stylu pro obrzek s avatarem.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'vlevo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'vpravo'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'bez zarovnn'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'Pout v postrannm sloupci'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Maj se avatary zobrazovat tak v postrannm sloupci v bloku s nejnovjmi komenti?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Zobrazovat informaci o typu avataru'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'Pokud je zapnuto, pak se pod polem pro zadn textu komente bude zobrazovat informace, kter avatary jsou momentln podporovny.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Vchoz avatar'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD', 'Stahovat avatary pomoc'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DESC', 'Pokud pedchoz pokus sele, zkus tento. Typy "Monster ID", "Defaultavatar" a "---" nikdy neselou. Vechny metody, kter nsleduj po jedn ze zmnnch metod, nebudou nikdy zkoueny!'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s obrzky autor podporovny.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Jmno autora v atributu ALT v obrzku'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Obvykle se jmno autora zobrazuje v atributu TITLE v obrzku s avatarem a atribut ALT je vyplnn hvzdikami. To zabrauje zhroucen vzhledu strnky, pokud nen prohle schopen nathnout obrzky. Ale slepci pouvaj pro prohlen internetu asto prv atribut ALT, take pokud jim chcete zpstupnit sv strnky, zapnte tuto volbu.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatar je centrln loit obrzk uivatel spaen s emailovou adresou, ' . + 'Favatar poskytuje favicony naten z osobnch strnek uivatele, Pavatar ' . + 'jsou obrzky uloen na osobnch strnkch pisatele, MyBlogLog avatar jsou centrln ukldan obrzky a ' . + 'Monster ID, Identicon a Wavatar avatary jsou nahrvan obrzky vytvoen jednotlivmi uivateli.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'POZOR! Tento plugin mus bt zaazen ped vemi pluginy, kter mn odkazy (jako nap. plugin "exit tracking plugin")! ' . + 'Jinak nebudou pracovat avatary slueb Pavatar, Favatar a MayBlogLog!'); + +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK', 'Gravatar fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC', 'Gravatar m implementovanch nkolik nvratovch metod pro ppad, e pro poadovanho uivatele nen znm dn avatar. Implementovny jsou t Moster ID, Identicon a Wavatar. Pokud vyberete nkter z tchto znnch, nebudou uskuteovny dn dal pokusy o naten avataru, pokud uivatel zad email.'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS', 'Vdy nvratov hodnota pro Gravatar'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC', 'Pouvat nvratovou hodnotu Gravatar i v ppad, e uivatel nezad email (zad tedy url nebo jmno)'); \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/lang_de.inc.php b/plugins/serendipity_event_gravatar/lang_de.inc.php new file mode 100644 index 00000000..e04e584a --- /dev/null +++ b/plugins/serendipity_event_gravatar/lang_de.inc.php @@ -0,0 +1,67 @@ + + * @revisionDate 2009/08/20 + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Avatare bei Kommentaren anzeigen. Untersttzt werden Gravatare, Pavatare, Favatare, Twitter, Identica und MyBlogLog Avatare'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Smarty Tag erzeugen'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'Wenn diese Option eingeschaltet ist, so wird das Avatar Bild nicht direkt in den Kommentar geschrieben, sondern es wird ein Smarty Tag {$comment.avatar} erzeugt, in dem der HTML Code des Images steht. Sie sollten diese Option nur einschalten, wenn sie wissen, dass ihr Template dieses Smarty Tag untersttzt. Ob das der Fall ist, sollten sie einfach ausprobieren.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Standard-Avatar'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'Bildgre'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Gravatar Indizierung'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'Keine Indizierung benutzen'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicit (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Standardavatar'); +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'URL zu ihrem Standard-Avatar. Hier mssen Sie den relativen oder absoluten Pfad bezogen auf ihre Server URL zu ihrem Standard Avatar angeben. ACHTUNG: Damit es benutzt wird, muss eine Methode auf "' . PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT . '" stehen!'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Maximal dargestellte Gre des Avatar-Bildes in Pixeln'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Kinderschutz :)'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Cache Zeit'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Wenn Avatare zwischengespeichert werden sollen (empfohlen!), muss hier die Anzahl der Stunden eingetragen werden, die Bilder vom eigenen Server anstatt vom externen Service abgeholt werden sollen. Dies wird mehr Traffic auf diesem Blog Server verursachen, dafr macht es die Avatar Darstellung unabhngiger vom externen zentralen Server. "0" stellt das Zwischenspeichern ab.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Ausrichtung'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'Mit dieser Option kann die Ausrichtung des Avatars im Kommentar konfiguriert werden, falls sie nicht die Smarty Tag Option verwenden. Bei der Smarty Tag Option muss die Ausrichtung ber die entsprechende CSS Klasse im Stylesheet konfiguriert werden.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'links'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'rechts'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'keine Ausrichtung'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'In der Seitenleiste anzeigen'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Sollen Avatar Bilder auch in der Seitenleiste (letze Kommentare) angezeigt werden?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Avatar Typ anzeigen'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'Wenn angeschaltet, wird eine Zeile unterhalb des Kommentar Editors ausgegeben, die angibt, welche Avatar Typen aktuell untersttzt werden.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD', 'Avatar laden ber'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s Autoren-Bilder werden untersttzt.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Autorenname im ALT Attribut'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Normaler Weise wird der Autorenname im TITLE Attribut des Avatar Bildes angegeben, das ALT Attribut wird mit einem * gefllt, um das Seitenlayout nicht zu zerstren, wenn der Browser das Bild nicht laden kann. Allerdings wird blinden Lesern das ALT Attribut vorgelesen. Falls Sie diese Leser untersttzen wollen, sollten Sie diese Option einschalten.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatare werden von einem zentralem Server anhand der EMail Information des Kommentators abgeholt, ' . + 'Favatare sind die favicons auf der Homepage, die der Kommentator angegeben hat, ' . + 'Twitter ldt Bilder aus Twitter Profilen, ' . + 'Identica ldt Bilder aus Identica Profilen, ' . + 'Pavatare zeigen auf ein Bild, das der Besucher auf seiner Homepage hat, ' . + 'MyBlogLog Avatare werden von einem zentralen Server geladen und ' . + 'Monster ID, Identicon und Wavatar Avatare sind lokal erstellte und fr jeden Schreiber einzigartige Bilder.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'ACHTUNG! Dieses Plugin muss vor allen Plugins ausgefhrt werden, die Links verndern (wie z.B. das Exit Tracking Plugin)!
' . + 'Ansonsten werden Pavatare, Favatare und MyBlogLog Avatare nicht funktionieren!'); + +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK', 'Gravatar Fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC', 'Gravatar implementiert einige eigene Fallback Methoden fr den Fal, dass kein Gravatar fr den Benutzer gefunden wurde. Es wurde ebenso Moster ID, Identicon und Wavatar. Wenn Du einen dieser Fallbacks einstellst, so wird keine weitere Methode nach Gravatar versucht, falls der Benutzer eine EMail angegeben hat.'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS', 'Gravatar Fallback immer benutzen'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC', 'Gravatar Fallbacks auch dann benutzen, wenn der Benutzer keine EMail (aber eine URL oder einen Namen) eingegeben hat.'); + +// Next lines were translated on 2009/08/20 +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DESC', 'Wenn die vorherigen Methoden fehlschlagen, versuche diese. Der Typ "' . PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT . '", "Monster ID", "Wavatar", "Identicon" und "---" wird niemals fehlschlagen. Alles unterhalb dieser Methoden wird nicht versucht.'); \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/lang_en.inc.php b/plugins/serendipity_event_gravatar/lang_en.inc.php new file mode 100644 index 00000000..723c604c --- /dev/null +++ b/plugins/serendipity_event_gravatar/lang_en.inc.php @@ -0,0 +1,64 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Show avatars inside comments. Gravatars, Pavatars, Favatars, Twitter, Identica and MyBlogLog avatars are supported.'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Produce smarty tag'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'If this option is switched on, the avatar images are not written directly into the comment output but a smarty tag {$comment.avatar} is produced. Only templates, that support this smarty tag, will display the avatar, if this option is set to true. The best way is to try it, if your template supports this smarty tag.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Default Avatar image'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'Image size'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Gravatar rating'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'No rating'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicit (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Defaultavatar'); +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'What is the URL to your default avatar image? Please enter here the absulute or relative URL based from your servers URL. ATTENTION! To have the default avatar displayed, one mthod has to be set to "' . PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT . '".'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Maximum size of the avatar picture (in pixels)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Picture Rating'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Caching time'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'If you want to cache the avatars (recommended!), enter the amount of hours the images will be fetched from your own host instead of contacting the external service. Bear in mind that this will cause traffic on your host. The advantage of caching is to relax traffic for the external service and to be a bit more independent of this central service. "0" disables caching.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Alignment'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'This option configures the alignment of the avatar, if the smarty tag option is not used. For smarty tags you have to do the alignment using the CSS class of the avatar.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'left'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'right'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'no alignment'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'Use in sidebar'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Should avatar images be shown in the recent comments sidebar, too?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Show avatar type info'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'If switched on an infoline is displayed below the comment box which types of avatars are supported at the moment.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD', 'Load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DESC', 'If previous fails, try this one. The types "' . PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT . '", "Monster ID", "Wavatar", "Identicon" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s author images supported.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Authorname in ALT attribute'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Normaly the authors name is displayed in the TITLE attribute of the avatar image, the ALT attribute is filled with an *. This prevents destroying the layout, when the browser is not able to load the image. But for blind people the ALT attribute is read, so if you want to support them, switch this option on.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatars are central-served avatar images by email, ' . + 'Favatars are favicons of the writer\'s site, ' . + 'Pavatars are images at the writer\'s site, ' . + 'Twitter loads twitter profile images, ' . + 'Identica loads identi.ca profile images, ' . + 'MyBlogLog avatars are central-served avatar images again and ' . + 'Monster ID, Identicon and Wavatar Avatare are localy created monster images unique for each writer.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'CAUTION! This plugin has to be executed before any plugin changing links (like i.e. the exit tracking plugin)! ' . + 'Else Pavatars, Favatars and MayBlogLog avatars won\'t work!'); + +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK', 'Gravatar fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC', 'Gravatar implements some fallback methods in case, no Gravatar is known for the user. It implements also Moster ID, Identicon and Wavatar. If you choose one of these, no further method after Gravatar is evaluated, if the user entered an email.'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS', 'Gravatar always fallback'); +@define('PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC', 'Use Gravatar fallbacks even if the user didn\'t enter an email (but an url or a name)'); diff --git a/plugins/serendipity_event_gravatar/lang_pl.inc.php b/plugins/serendipity_event_gravatar/lang_pl.inc.php new file mode 100644 index 00000000..3054403c --- /dev/null +++ b/plugins/serendipity_event_gravatar/lang_pl.inc.php @@ -0,0 +1,64 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +@define('PLUGIN_EVENT_GRAVATAR_NAME', 'Avatar Plugin'); +@define('PLUGIN_EVENT_GRAVATAR_DESC', 'Pokazuje avatary w komentarzach. Gravatars, Pavatars, Favatars und MyBlogLog avatars are supported.'); + +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY', 'Produce smarty tag'); +@define('PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC', 'If this option is switched on, the avatar images are not written directly into the comment output but a smarty tag {$comment.avatar} is produced. Only templates, that support this smarty tag, will display the avatar, if this option is set to true. The best way is to try it, if your template supports this smarty tag.'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR', 'Domylny obrazek avatara'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE', 'rozmiar obrazka'); +@define('PLUGIN_EVENT_GRAVATAR_RATING', 'Rating'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_NO', 'No rating'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_G', 'General (G)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_R', 'Restricted (R)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_PG', 'Parental Guidance (PG)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_X', 'Explicit (X)'); + +@define('PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC', 'Jaki jest adres URL do domylnego obrazka avatara?'); +@define('PLUGIN_EVENT_GRAVATAR_SIZE_DESC', 'Maksymalny rozmiar avatara (w pikselach)'); +@define('PLUGIN_EVENT_GRAVATAR_RATING_DESC', 'Wybierz Rating (poziom przyznawany przez gravatar.com kademu obrazkowi avatara), jaki ma by wywietlany na stronie'); + +@define('PLUGIN_EVENT_GRAVATAR_CACHING', 'Buforowa Avatars?'); +@define('PLUGIN_EVENT_GRAVATAR_CACHING_DESC', 'Jeli chcesz buforowa obrazki avatarw, wpisz ilo godzin, w cigu ktrych obrazek bdzie pobierany z Twojego serwera zamiast z centralnego serwera www.gravatar.com. Pamitaj, e to spowoduje wzrost obcienia Twojego hosta. Plusem buforowania jest odcienie serwerw Gravatara i przynajmniej czasowe uniezalenienie si od centralnych serwerw na wypadek np. ich awarii. "0" wycza buforowanie.'); + +@define('PLUGIN_EVENT_GRAVATAR_ALIGN', 'Alignment'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_DESC', 'This option configures the alignment of the avatar, if the smarty tag option is not used. For smarty tags you have to do the alignment using the CSS class of the avatar.'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT', 'left'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT', 'right'); +@define('PLUGIN_EVENT_GRAVATAR_ALIGN_NONE', 'no alignment'); + +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES', 'Use in sidebar'); +@define('PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC','Should avatar images be shown in the recent comments sidebar, too?'); + +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE', 'Show avatar type info'); +@define('PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC', 'If switched on an infoline is displayed below the comment box which types of avatars are supported at the moment.'); + +@define('PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT', 'Defaultavatar'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_1', 'First try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_1_DESC', 'Try this avatar getting method first. Type "Defaultavatar" will load the default avatar, "---" will load no picture. '); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_2', 'Second try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_2_DESC', 'If method 1 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_3', 'Third try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_3_DESC', 'If method 2 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4', 'Fourth try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4_DESC', 'If method 3 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4', 'Fifth try to load avatar via'); +@define('PLUGIN_EVENT_GRAVATAR_METHOD_4_DESC', 'If method 4 fails, try this one. The types "Monster ID", "Defaultavatar" and "---" will never fail. Everything below this methods won\'t be tried!'); +@define('PLUGIN_EVENT_GRAVATAR_SUPPORTED', '%s author images supported.'); + +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT', 'Authorname in ALT attribute'); +@define('PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC', 'Normaly the authors name is displayed in the TITLE attribute of the avatar image, the ALT attribute is filled with an *. This prevents destroying the layout, when the browser is not able to load the image. But for blind people the ALT attribute is read, so if you want to support them, switch this option on.'); + +@define('PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION', 'Gravatars are central-served avatar images by email, ' . + 'Favatars are favicons of the writer\'s site, Pavatars ' . + 'are images at the writer\'s site, MyBlogLog avatars are central-served avatar images again and ' . + 'Monster ID avatars are localy created monster images unique for each writer.'); +@define('PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING', 'CAUTION! This plugin has to be executed before any plugin changing links (like i.e. the exit tracking plugin)! ' . + 'Else Pavatars, Favatars and MayBlogLog avatars won\'t work!'); diff --git a/plugins/serendipity_event_gravatar/monsterid/README b/plugins/serendipity_event_gravatar/monsterid/README new file mode 100644 index 00000000..eff74524 --- /dev/null +++ b/plugins/serendipity_event_gravatar/monsterid/README @@ -0,0 +1,11 @@ +monsterid was inspired by a post by Don Park [1] and the Combinatoric Critters [2]. + +All graphics were created by Andreas Gohr [3]. The source code and the graphics are provided +under the Creative Commons Attribution 2.5 License [4] + +If you use this software and/or graphics please link back to http://www.splitbrain.org/go/monsterid + +[1] http://www.docuverse.com/blog/donpark/2007/01/18/visual-security-9-block-ip-identification +[2] http://www.levitated.net/bones/walkingFaces/index.html +[3] http://www.splitbrain.org +[4] http://creativecommons.org/licenses/by/2.5/ diff --git a/plugins/serendipity_event_gravatar/monsterid/monsterid.php b/plugins/serendipity_event_gravatar/monsterid/monsterid.php new file mode 100644 index 00000000..1370830a --- /dev/null +++ b/plugins/serendipity_event_gravatar/monsterid/monsterid.php @@ -0,0 +1,58 @@ + rand(1,5), + 'hair' => rand(1,5), + 'arms' => rand(1,5), + 'body' => rand(1,15), + 'eyes' => rand(1,15), + 'mouth'=> rand(1,10) + ); + + // create backgound + $monster = @imagecreatetruecolor(120, 120) + or die("GD image create failed"); + $white = imagecolorallocate($monster, 255, 255, 255); + imagefill($monster,0,0,$white); + + // add parts + foreach($parts as $part => $num){ + $file = dirname(__FILE__).'/parts/'.$part.'_'.$num.'.png'; + + $im = @imagecreatefrompng($file); + if(!$im) die('Failed to load '.$file); + imageSaveAlpha($im, true); + imagecopy($monster,$im,0,0,0,0,120,120); + imagedestroy($im); + + // color the body + if($part == 'body'){ + $color = imagecolorallocate($monster, rand(20,235), rand(20,235), rand(20,235)); + imagefill($monster,60,60,$color); + } + } + + // restore random seed + if($seed) srand(); + + // resize if needed, then output + if($size && $size < 400){ + $out = @imagecreatetruecolor($size,$size); + if (!$out) return false; // Problems creating image! + imagecopyresampled($out,$monster,0,0,0,0,$size,$size,120,120); + imagepng($out,$filename); + imagedestroy($out); + imagedestroy($monster); + return true; + }else{ + //header ("Content-type: image/png"); + imagepng($monster,$filename); + imagedestroy($monster); + return true; + } +} diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/arms_1.png b/plugins/serendipity_event_gravatar/monsterid/parts/arms_1.png new file mode 100644 index 0000000000000000000000000000000000000000..787499650e8bba41b6775f941af96f499266512c GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu)MHE{-7;x87c}7CNB7!RqkwU%A=Z+%xW1?yAMMJ!DMQ z1ggObCU{r>YM!-JfNzG`r|%&rX3xt|{4f0N?Y(1658HU<-n;IJ@hQ1~(^=S)t>mZT zdw+Lrzb{`l|4C&$bk`t-f6Woa@V(JaDUk}&JXlQ!2^Os2{v$8gTe~ HDWM4fU0qp6 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/arms_2.png b/plugins/serendipity_event_gravatar/monsterid/parts/arms_2.png new file mode 100644 index 0000000000000000000000000000000000000000..807868fb8006e85f13a8fce60a46f8bb15959d11 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu+E-E{-7;x8B}3EqK^~gVo{TziPGXXP!KX?@8R=c*3Sp zWGyRD6#)?ZWJ!N-s<|WMb)Il_^S5!2s~%i@mOphaC(IkdH4N>c_HR!HN$7xtJYD@<);T3K F0RWazk+J{) literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/arms_3.png b/plugins/serendipity_event_gravatar/monsterid/parts/arms_3.png new file mode 100644 index 0000000000000000000000000000000000000000..63034378cf128d1ffbc2f7c6240e38e772b8a803 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*K!tBTT^vIyZoRz`&DUfgz#4Fh&-YI2>q2oA9l`pIoLr}P z))x!yQz)^T&X#c*s2mx%2Qt00ROu@%aV~LFU3BC3+mB_7Ue9lu_agl6>dt*rV_E*J zys?$b&U?rGs?e`*p4V-i$=bh8a^1e7&0B76UhQ=6QG}4oi66z`?-iNX#qmeW6gTs( zUieGRGW@{I$-h4zGjEtJ9N3~Cm0#Uu zzE=EH3IA=7n~=bP$XAo~@68SO`66Udy{P>_W#Ii|s_F*imCyDW-KxC3Wm$Pu?532v z4`OFLIG|=R=Kzzk0aJ4Gvz7yDH$;06aP+Wt3p3452sdGR{PXmj18Ndh@#lerez@9= zXFUgWq_2zS7R?k0Pbe(Zt!Ar!_Q)&k>5hMq7574GPTu5}kqUe8T70=?x^BUREnGD+ z$tCkc8vC2WK3Vp$^51XY_0c?oLvg`Nmgy&U&Mv;W ef)V2NTh&Ype!9y46)wpF33$5txvXh7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=B+9JzX3_DsH`{X(hw&cC09-7j*)&rb22d^P&X>}NcMvaVk~d`=gBD0lZx z==xBf>l3XbHzs~I%j!(OzRG1w*g?MZR|b#zdN?*Oinq!?{X(wpUeu8!)Ot3bzaJl=|RR_*3vP_yUaOfa+)YhF9 zPh?`#-)I%cTha@=lRSqBe#F0OJhzpM0N zp|z1o_`XHE-1HxC@rn!1y>WE!-ICB76L(y{m{Svy@Gjx3dx-3uH?nI2(hJYuDrQrE zzvA_S*b_fruUTxTv_atf=h&KUv)An~-`;K6Ja=csmJ_1i+p>4Cu&ejJGTs|-bnni^ zQtayUd$r&7ie6p&I7qfM@x#kUR==4K{FC}V>!p3;(*yDO?UqX2%bE+{yG)Eewp6XL zFn`Yupo!*Z4sMLqIn1IqulDS5_wx_K*oDs@e3qoH$@=WKhe_lF$Am|c?9MJ0&4mW&iIeBKwD&J@yV^%r=7OX=UHx3v IIVCg!0P4Jwpa1{> literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_1.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0d98acffb70293484d57f9cb553e2bbf1abe2f GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E82o-U3d6}R5rxtM#%K!i0wrgTBxAswGfk-I$2i|T)L z1b9EW^y6mT^BQHvn$PQe9d^b5O^1UAB1eTxRvWKf+8}-S&yQXIejK{}`}u@y?FZ_? zKci>3%N^2Vk}J`Q-^#s<`LL=VfHRRG4ZU}Cl1EzkxsKVuG{XY zU1=F8Uf9WFcKC@~_}AH9aks?`ch0=4|87^(fy`{np!Hp0r#-c1oip7#Gfr6NPAC6d zEvs$Imd|^jb?m5il*{HC%FO0+?;JyzDdAfF0&qAl$r#ibwaPqhFN9@IU;PiXB=pFd-(72?db>J zdEain?EAim@%Ju~3t4Iv4`23j+z=_Zo17!L?op2Vb3woDFXc`MebqR;!gj}uJ2KpR zzo=Bt`Jne?YSTA|56ug{|5N@F&R44Y-acr<<~OaS4d)}pqx|6k2xBxv)-da?DOe}M R<7EL7^K|udS?83{1OOv`)sO%H literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_10.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_10.png new file mode 100644 index 0000000000000000000000000000000000000000..ef71f1ad80dc56543d12a6011fcefda3e22d6043 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E7jJzX3_DsH{Kd)N1{gFx#=9~b5;4$V`Xny)x;9_Hrf zSolX_(wjTB&m|i_Jda#2e9}$^XgU-q#I^pf-}`&xiZ46#*UP8ZfB5^>^4p9hZ121e z&Etq=YCr1RTXW~ftlz8i)!n&mzRaq2ee!Xh&gpdjSw;sNgO*t+7V!W7%VeK*OK4fe zueA>Ml@DEC8$9ztj&8w&FMjc>d<%Yv$ouAh6Pf+sgQl28O_w^`J666D?wl@Gw+B;~ z?*NhyXU`V1D4A@Wx;eFTn~QPfX4MUx+ZGDmIOdkX0z}&wMQ*SZuN9JLRFC@m_*7tH zy^VMCh67tacs`fvIluu#ItGSncGDJw|9n(`XtAu%234s>bCajZ!HtK%8!$yL((Px8 z7GveRlQ8vw`JANFU)Y5Ibey>Cx8`JH_T~M1ubTc?=l%7_X{S?tU+%}9n7C=D*KOD7 zzaRg(y~Jqm&+iA#cdGfvN$%PG;nR+LHz$((B n=W552fRy7*uuuij4R33i`m{=$9L~MD3gUaZ`njxgN@xNAASvl} literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_11.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_11.png new file mode 100644 index 0000000000000000000000000000000000000000..46fa3eb22a4090e0091d6c1587eee7f6a3c9af26 GIT binary patch literal 805 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnY1_q{1PZ!6Kid%2*UJO(=6mShZ?JAVAsWDfA#Z9ec;opVZ zG@2Q2FAiH>`p(?-WbO0JB@^9>tr&q8AcLowUIh}i$!j_7Jl?!Mefz5YkI&yLqxN#z zDQvuda<1;KwE+iO-oD@7@z?27S(E+AKPyjH*H&`tUt3(1?vWR{Dfzwa0d_U-FRV8Jl zv-P58pU;N^JC2v-YKz@Z^(rJyxSH-!=kHekK&ex%g3q(?#Fs^0QekhFoj(;V-Neau z@J959_Me(uT-%=QaTLG1q{8q0Gr2j@qFB2+t_87s-FLm8#!Ni`Yl$Y&rdgR zUcGnSoim(zh973>elMBz`PC_1@p$!Zc}>%OJ}xnryS|%Uzld>}ymvX!%RBbqy-Y2giqM@e^E7pn8^e6_wpkWzJ2oXk_}mu}ZExi~J43%o*9BwB z)Q=zCv*WEsMR%^%W>;f$HwxP(SKNAeJnoxP zq}w;;>g^{|TJ?qFG-Gy~+0R$4d9o_#p zd|}>q$MV;Ap8GE&|0-;m9b{Da_?E!M-7+oL#Is&2ZmMOh;oUXsz4pCL8pw$U%sx>6 Yk8x|$+do!6`rSYRp00i_>zopr0N@2xTL1t6 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_12.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_12.png new file mode 100644 index 0000000000000000000000000000000000000000..03536113589494d0aab46ad86f7e21ab63a4568c GIT binary patch literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnY1_s9Co-U3d6}R5rJso)1fWbAe)04l%iFJxEYl)L+(qSfv z6E`Nj_*`;s-pm=@DL47TG=XNr!Qv~dcFEkpWmeafjc98(Y%hm zsUNH!ulSoEbMU$KfwJ`*)E9*}z8BeEeq*lFby@d!jTb^6Ot?5(ZdccA*`Ej3Hq5X6 z^*Gz@!=vZ-niucnk}K!*H`d(~a_9kw-IjdZK zULI4oPCThj~;z|twqr1`3|Obztc?Tg|A;$ zDP$G<-ZhW^&-AL?!(H5~E-LSk+W9w@YohXXON*K(TrxWr2vuwbsy{AjVe@Xn0b?DT zvQFzqMk}Xncz$T}{zn%?WM#^qut)!@pAvS9>A>7I7d9BzoY;2b_oC@s*(~ktbDui< zTXzM2%h`}0bfaUgQGw>;eH;_^EqppH`u5u`-Y-jL2j7}uWd33Lh5Fvwr*Yq>#Y@im kxgh#QAtO8*7#JLy%4;sHYs+q3?gbL{boFyt=akR{06?e!%K!iX literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_13.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_13.png new file mode 100644 index 0000000000000000000000000000000000000000..b9870efd715a0fb0bbc1f7a51e335a57822cd7df GIT binary patch literal 598 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnY1_s7mo-U3d6}R5rJ?MMbK%y2d*A z!ltlU|NCPjB(B2u)da+gl|^z+}g|FOG2n_tWddXRl( zww+$Qw%p_y_0JOTr2nxHTy@}idOirey1^u`yiH-6^l<$l+PnGZQ z2syfUaq`Lwar5+-Y6ahna+?Gt8U=5B z{!rBT+J3%8=z}}YwLOl zDk;0erEaeo=kn1 zbCG|4fppIG+js4(-u{~Mt!dR^G1;B5=WQhOpYls9ZF_z5{KG8{k@~BwaxZ>g`^%#0 zuVKp4;!RdHaxuKiw}n;SiM9KXUuYZm(Qun}Ps!1>RZkbUTFa^L33+n$d~aD?Nx_|S zjmzE39#y}HUZIy5%*5Y&M>o&wLG_c>PUSqa#eUphzVq>ak6Vf#4!cCl!$Tg-SkNs$ W+hW!2CXT=*Aik%opUXO@geCxnj{!{p literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_15.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_15.png new file mode 100644 index 0000000000000000000000000000000000000000..9844bbeed2b592dff4df48317b6851e298805515 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E71JzX3_DsH{Kdol2^0T0^)tK)n*hgf>fvg8~Rc{cU& zt?bKc({yX^Tf48_KS?%Y)@fFt;c$?!e;JGZYvb$teB+jEb6OEE|9*GfkI%o;Z~VHY z)4D5ciGAygr>5W2nf3~ooR<3VE{T=BE@Q`Hr#$WQgS`jduYJ4H_VbH`&1`qh>s)I- zIRD@8^jrPy>^8xL>fAr4=$Jh{n|paLliG(p3J+vvH3)9_C?j1Uy;0$DB)jy*)%~iE zE%hF#Jt=%_ndS0(g5$)b>3>gO>-f)Xono0{S&$l0oN{1o!H%^q?BZ`9g)MFNE-kzw zeN$2Ur*zZ-zl&>1?rJB<_B03@Fu5JzkYMDVAy{>^!MkRaa#63R&u4y4yVI?Cf`@i%Q=gYS*3adGdP_qx$@W=ws!&jk0fUmA{G0aZ$hD zyAE_^^2YF~wJWzhlqm?J#OOJYQ_H*V*M7SDMfJd}7V&X02JT%mPX; cNMOn*?k~~JWm&zipMpd^UHx3vIVCg!0O08QO8@`> literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_2.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d11ad85f90e299bdb0cc1aef0c974bd6704deef0 GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E8CJzX3_DsH{K>*#mbK)@l;`VrTh4pH^Aqn#ElkpU`V zs$L5|-gx|7WtvBC{jp5%C@)5!>0rq`Pu2k%mp<>FpqfQ>%=txcCsfKethFpm zD9pXMZue%kbN|}hVl6k6ugKqRH-J7L`v{Gw<%yv-ouF;{zAIj-2jyGCRM2595+CKb!mQz`Fg+Yc5`U z=%ZSYn{)Bx_N>OqyNx#J2YbrRVBD73=(`~|Dq$L5PFMJhgo)+Xm!6Zmv3;k00q?d@ z_Kq2A7UnJdTY2egU5stsdfwkZG9EO&TYGS&xy--MKdSFq%hu-R^ha$FPJA8O|Nq3s tFaMrjRJQ$@+1a<*cgs6iT!85{&xFsepPj14n==E%_jL7hS?83{1OVNo0s;U4 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_3.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a63937cc724b396dd3629de924ff3496bf1d51c3 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E92o-U3d6}R5r-6+VUDBuvdfj4@S%;^m>(VO^sOahdi zi$&Dvn^^yAywg*(6lg9SICNxj9NHp!Y`2~T$4xbl?^5f&AHSZy{dDDzAJ=C(RyR*L zs(o$!^$&u(-wEtU<&&yi?6TED^3l#k`BjbAJMXZ#C9sIy_`L4G>9=AVUATJ=aKI3g zvH=tUMP;;KE#J&E`yh5%plC^{-y+cp=gWFU8GbZ8({Xk{QrNlj4iWF>9@00Ny!L_t(|+U?!jZR0Qy z1yIvS6Yj)?rHmA|oopH0A3G4Tk*(*D8l3~^D-JC4YN(;CD3=QW00000000000KjDR zv32EokU^WewcMx6pRd1{#{2f4(sQ_v0h{Fhd5ic=v-T-?-wqYe8nxQ%AJ zqH4QtxJu6zEZhzh;pVMg%Op*f>J>2EPR|1FGh7v%JlyWTY*_rq+ot6MEt7=YKHNR0 z=+oYh)%u(pRl%ycgX)b6_&ek$VaMGZAJs*d!Di|X)MA-b414Z?NglAHa(Ay$1Wjat?OO&M6cD zGnvN;Z#bp)*k^=(;h(9|8dpSLCNbLfY#{946h zo#PfEym*4mCNs)}D^G7LdhcgRhd*U!#y;%*kEm9KJoB<*ZIwZE7hQhYMqj(Zy0Ep7A^7`5sws1U$kzcxfe%is`K}h^W_Fj%V=ZN z@}Fy*A>en-${wGqCKxjS0000000000000000P^?;-<=so%z{cb00000NkvXXu0mjf D#|M9u literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_5.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ab2a46f8faeaccaa27c6fbc94e7bd29c3e5935e5 GIT binary patch literal 648 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnY1_s7Ao-U3d6}R5rJ?P79D8PEb$Aw+Q-CX8H+oKhVF+~g_ zDi_qYJ^yXnS$(bk`R$WV7IT4y!vNpznEGWF>^gT|*)Q*(zCC(y|$M zeqHhPe-q^^=MLH=#IE|y63=3l-*tYPx_3XR{U!EV?`j>l0*RR*@qN{Go z?Qz_p%_+m_sHe!KT4D*Ww9o$%&HBb=u57{1iy>R8^5iz~+xcv$ zdMEdRD>#P9Y%f#Zt{bWk4!FLn+L0Z5QCMs*i_DH2bMMdEYM;Uz^GB%Qfk^rP1l32m zml_1T4m1Yu`L+IWj`6`&mCX(EA|9L;86_-QICh|52$fS&*owtDnm{r-UW|sJ|0E literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_6.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b1550b8ea535b44dce6740dd695d716340c1e5e0 GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnY1_s8no-U3d6}R5r_4PY!AmVoMMv|t&xBW6K)tZmJ7HWlN z+t=HrpVHX((O*?Wo*if~1Qbjc`;#M{Jn?%#c;Np1_tyXW@$qNz_4|{Kty=0{+a~>S z_5tQY`;=ZaUz~lQyZx{G7qt(~g{xcF%IxB_Rw)s-(0S+iLhXa+ovDYzI__|vzcph= z{of_GOWE}ItAyX0yqeW-&eq`Ruk`Y^spWmsS!d9!|12`^!42lnsp8eYcc+lRVKPw;HBdH>P4 zvr&7_frq~f;(xwfa)D>t|69$15{-fp2`p|2Wn4AK%?%-z%@Y zAp8A(min!?`(~Ox>Mq}VBRa?b-UIW@o8IPOv-gHFAJ@OByk9!@-{gOp6W!}Y?ktsQ zJpC!FQQ7JIuB78fBMugZ^X$2zdHZO@!p%3YmH~;UQx-1NZu8}~G5MlZ&aTd8*Za5U rg?iw0iQRMm*}qEK1B(tY{lKCx{=M!zg+E8*OF;sju6{1-oD!Mh7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=B+yo-U3d6}R5rz36+`K%n8_jwE)oM5beDOlFB)A6S@H zF52Q-`+WENYWJ+a$IE2AZkhoNhk*tS<(sc>ir2kmis$|+(t@YRtS7=Y_9n6dai6`NLTd*2f1CfEcu$3 znf!aJlb^J=_s%$andy9A_0a@BZfV1A|EuR4?H9eRU#sIN{veM{-hT4-4oPX#?)lr) z7A3pQ-01RNI`MI_QFYdOE%n1Woo)$H>~`fY3;h!I&)DvwY`~%I%Bk21F0;)yHU z+1I!GmE86t%@cSE!)G5n{pRG%xcjThS89HLd}95(^;JBcf>y~l^jFtQzP!=2kK6cU zeeKJS3W?8r;#70C9^mh-dA2NbX5s1|Ggln$3tWBnnpxxfxhF*rh4IyV_E{&g&H2G< zrF6Sj95u&_Voh_VAEyg$)<-yRm5Ao{@m8YXwMt(P{$EV>2a Nd%F6$taD0e0sz!0C)WS~ literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_8.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2bf316ccbaa67c11188b7321582e67dff23e70 GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnY1_s70o-U3d6}R5rHS{~|AkcR4O;^+BfP(+Cnm%8c$)+eI z$hqXi@AGe}Wo17exA0C{uP+WX90DHrw>f`Uz4&yYv@f&Gk=MshUp=3H{{7RwhbyGM ze|xb0gYpl79g%mmCbsY3=e1?YlQ6HGl|J>OZ-4b?YdNO>$yM4%eE&M@7$2Nk<7y|Q zRyph5y~%TAeq@-O47(^Aepd8ftJI@!eRITqybvoZeWIE7e(O<@?cYyTz56D<_x7o( z8F%izKYsbiH@oVyQ}uJMzqI|lmA|lh{;K(Vo_~9GTcuI(#;V8!Ztdk6EN%%bViJvl z5EPLBkUw7{Vq)uKW|sdTzNf37 J%Q~loCIH91^)CPb literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/body_9.png b/plugins/serendipity_event_gravatar/monsterid/parts/body_9.png new file mode 100644 index 0000000000000000000000000000000000000000..98acb0a1d5a5669eccd55d523d33c67185f586d8 GIT binary patch literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=B-1o-U3d6}R5reVu#9K%h0Sca}%BXKGpXI;Wq)ECvZb zb}F?`e=d?R<5$_1DuZ){K%=2x!?M$gKlTWftxOi!x#NH0{QrNde(?YQ`$g#Q!42H~7ba0J) z#dghk8}H3*%)Y#ERjyjaa?N`mb1#_%+kAGec~{54wr*|NyahY{M#w%YvvzfJ-M0GE z+!NaE?}WDfc0D&cKYEwj`)xOCpRT?Uw*2F{#PI#TGq*{9?$!Qx?Rde{-xm@u?}@sy zgq?T0`@6D>UqV;!_tk2iAp652uV(w44=uV+Yd_4D=I}~jnODNCTyP;uu1@Q3d1)Qz zofp$O_Z+z1@cUt^z0FjE-g5i1v$oz<)BIp+bc0|2f!Bllme{9%*H7n-@7eu{uTM1T z{IAw^5B`R)UBoT(Z*S})KJLA5<(<0CKX=YJ@Ngn4U%$?WC%@|(jhEkGnVr<=yYT>r zOr5Ll2F^O0*^f6dPe1(5+Tz}d%{ON5JMc`)v|#2v!{Z0)R}0H*Kds{Wk8>&izDe7- z{=90luUUWX!{fUjcW?MB_wrp}`0g8#U+4GkxX%uYNf5nY`Tk<&wKhv+4>Nzopr05Z8Uvj6}9 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_1.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0dbeb5a67705e6796f11543d845031236c6f0349 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpuz{9E{-7;x8B}3&DRvb!+PM_kN^8)%y$_)d}_*~VVs@i z#J@L438)SkH2hsE=HlW~`qtBoC*#S#RjZVYZ-0G$GmYi7_2cr0t%@sV{p#)9;QL|Y zPe1;T)+_#O&2xUMY9l3ozWOTXj~9oxT5mfoND-0y>>FVdQ&MBb@0Cu2)w*UYD literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_10.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_10.png new file mode 100644 index 0000000000000000000000000000000000000000..c38b90a0645740c2c3edd1d2f710d74e8d82bb54 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E6~o-U3d6}R5ryq(uNIRi>S> zQA^OQ-os{n8{{eksF@bfwCvNATdfMWlBXKUSt$iwF)(WX#kElD+xiB+`Nwn4M6Qr@ zzGvKan`;}Ny3)1|3BQKG9g|=C`?JW_C_PBd*qe0yzQ5JlEr(=#tN*-vKJUUoaow|X zKg{y}qCMeUX{tzEe(Q-8|7-is7Ff$}74h1u)HCg0-1B?3KWrbbS<}61Q_A|1{AbVK zoVc!R_PPGelBv~I{S7>Ke|I$8k9?t{Xs7q!aZ$}3vDlr-5fy=-dG_sE{A$tv<%iQI zFWO#v>dMWTOno;UkDui0&V9SW_-l9gsl})6ZOhn@+BLO#^3BY!)z$B7PE0g?kalA7 z_WLt>w{CjFr`FhTU+~k536GDw*Iw;iv#nq=yN%VF4sEs5hvxnG_Vsi7|647A#)tsI c!Lqw#e(2gQ#VJm&e}hzby85}Sb4q9e0G3vq|?#`gsZ579h z=eZWFFTci`Zw@pR1}rviVwvssYu4S=9kOpE>?OmevXyguD_`Ny{Y|te^TTtu7YiA# z9rDe|uR8EJRD!)p!g_tLM@{CnJMY>0X1?{^#&W&9Oj&mFIlFn`Zlz~;#J_64cFFM0 z+{fE;s~5X}IrH&%|2Hm+l=*r4x4N>$gl?X7rOM{Gd4=1FxyL_;etY0O-)0f>y}}Ty zqg#HoR3A^ce`CjvDZMZDZ#Um`$oq4Ep7pHtmmbU#N#L~DymxD9ZB=#f{WIl%NXit literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_12.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_12.png new file mode 100644 index 0000000000000000000000000000000000000000..b63ca48d5adecfae9322326aa09022fd1318b529 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu#3k7srr_TW_x!@--;%um&ioRY~vpuldEy=;4EuJ2N&^ z=D)u2Z&{`nP$@F-QDlF$boRyTLYdL)f33Uz_~f3q$&$Ix|ECAZY`npulVB4$PX}2& bPIf|?`L`~1-sN5G0U$M=u6{1-oD!Mh7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E7@JzX3_DsH{Kb$eZt0}pF}*Ps9K?S0QhL6O zrEr#yTxjV-vA_2lwOM1!tL_y!aqOx%G5?fU6CTuM| z@Ji~#or7i^Ke80l4{tpqXKCBV^*yb+s7zy$-u_e_v3GY;uUtH6H$P^&{I6r{G+p*= zd3x;O@q>rMS0?at{#d~EUbe{Y?eC}Sjz8`Zkmikc=ZSxszey(U;M_yGu_rC>JTc2W zdU{Fzw^PP;=MP@aTb&)KyQ?DoQ~#tzQ+4jh^Z&f|u+Ls@(<##qMqn@!1_inGAxql- TPyT%)8>HCN)z4*}Q$iB}g!AIs literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_14.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_14.png new file mode 100644 index 0000000000000000000000000000000000000000..6a25529d8d56aaef6ee0b15219da6e55aff83839 GIT binary patch literal 551 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E9jo-U3d6}R5ryqI;^fQR*h#+(23k=0xh*ZqQCIIo$* z+}c~(`owM1n>=ZtsUWanPQ}Nq&!ykF?=ih_=6sFvqC2)XyV-6opFVS^?0UTmmsYXP z@ol&n{w{LC+515U`123?E}ggS>ErJmFIHQxW|0+L{hi~@Y_mJ<@u{|YR~Pjg+}_YP z|F`Lm`2PJfwoLyNo@=!)Dt-N}lH2RFc@kB%cC0-Y*&rUR9Q;MAT{L<yEzthx2kA zjP?b8ZMj$0`n%M$#BH1v&TpZ&>_MWm{pufCiSI*KeP8vpZ`qsG7qoLGhwX3Jv-`em z>y7mn@1{@HcsNyG={-w%dX!x5)Kx5d^yBs&{_ra?>)N#6|JR#2PG9vP@bp|;mbZ<^ zmh5r{I{xzJF8R>cPabYyv;Vpwc^ljLecbD8T;IFOUHVp9y}|0Xu=R_G6b@h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E8Vo-U3d6}R5rb`(0Kz{46)u;>5O$IGixO4znc4gj^zHg(JxNQM&D3=U=88|22>lf- z>AKA^t$<&B@1oOk3=jD1uG-qL-qE;IJA2FCCAZ%>d&$RS{>?9upJUYC$77*+XNl0> zYgwwdPJZorcS%WgTNlHQ=JQ4T(xGKs-ya;_t@*(1VO{3JsCTY++{@W*3psZyU87YpdzZ(!O_htRm5=s*k^5b-kT3chL%^c-0gG<0xBoPI&C<|S7ysOEy}15G zEO% literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_2.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a8467182bad2503ee2eef7d699f9e46a47935249 GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E7yo-U3d6}R5r@aAha;9)(W_UK=DnYoTqlwBb6(Tp^2 zQI-8SJS+DCjYNQ7qN+DUZoXE3FgHQ@nz7!}JNw$0;yBB-Z}=#NSJrv{NZ28}IOc%o zxjTZh9S@w`_5Iqi_OhEBj0^3OFXuIAMsKKQoyXicQE~fwoux~-EJNAlHFI2QO76bU zJGbQ7NwX?*r=D9OZ+G{;(EfkKd~Rvk!_9H~vYr)8zx%bnu;%;6*!hzb2Jle5Tt~Fj?=Mkr``ELCm_ED+2GFy9AwB e5uU)o`f*TN(K}qVK1%lhNQI}XpUXO@geCxP(UsW% literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_3.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_3.png new file mode 100644 index 0000000000000000000000000000000000000000..bae0a8c165e60b1fbf629688d2c39f49e2889394 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu$(4E{-7;x87cNl?-^s9k zud1f9Bhk)S){7CS8VR@wo}9NmZMEyNhU~R}Ym}32Rq0r5pW^)?^gwgl?^V^-irf_k zZq6w?8O8OsJAl>ZVA9m1v)=7CP`dgf&ZzADzPt5%53t%)e4lr4o@4Z;2mS6}CMSEZ z`yD2CeeUniK5Ki@KYYED`@i_k>}7h{m#+QGI9$fY|IKqs;i|JT1vMXyTwW>lSWUd& p`*hi5R-2*|S!j+!awn9zzkvBqN!+HXf$>Ek5l>e?mvv4FO#s!rhw}gc literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_4.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_4.png new file mode 100644 index 0000000000000000000000000000000000000000..70be6241ae6c3560c689cfbba7cc24fea66ed9ca GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu%~cE{-7;x87bit; literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_5.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_5.png new file mode 100644 index 0000000000000000000000000000000000000000..25054a5388b3e44a855c364db6bc778a28358807 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpuz{9E{-7;x8B~cl$!g&GD9@+Pgs@UxHzl1)y_e1Q5VzPDf^R-W-g@2?) zseAp~e)h!duf^iaZau$Xc0;l1b*ulUz01z*3i)k1eR9O%M(uT;SL@d=e)wt9SA>gj bva)_MnC}dJu+)QRA4rX-tDnm{r-UW|$y0%! literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_6.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e581dcc347985641a6344bcde8d3c0649a3a14ae GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu#ntE{-7;x87bq&2=b%$MvGypa1cF%&RRf*d1tmw#HOz z3g4k;m+qu80+phGhLu?_Vq^`HQy!$>c=tOw)YW~TU-xg0-_K%Go}B)&L%zxSV14+H zniId7sqY&IL((y85}Sb4q9e004_-jsO4v literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_7.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_7.png new file mode 100644 index 0000000000000000000000000000000000000000..57614b4c0e61b1bc511f4342251a48125f99e707 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu&xwE{-7;x8B|` literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/eyes_8.png b/plugins/serendipity_event_gravatar/monsterid/parts/eyes_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4bead7f0cfde1607917cce0eb388bf21c828af13 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu!KHE{-7;x8B~^E!5<|!y0ht!~gwz%b>nj}*2D9~0tG;h%hy90iI&HumgeEOPMn}j~7 zE}Oscy6yFe=_MJ5qWV4K&+Scq{!j4%_u1XEM6l7pvIbiTjewOSWnUid}EI>&#@Mdy* kRMv&a^Ky)65?Hy#ysh7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E9^o-U3d6}R5r@ZNSvL4YN|`uW@X(|?!wnK&stEPij{ z<{QcTqlyt|qQTrdAHC%d{rxrTO1CMq*tsVyvg{?-dyT5N#&;K!zcjHV+!z~s&?YQ2_ zioXy1y>GGI`-j)>P7<7H-dp{6_eYO?#t-71gmc=>uD_cU?bDEX{prnHb7bR!Z{10h zrdax$~87@m0-*^U~)UaAt9{`3!~DfD#pb6Mw<&;$T0 C7r*%c literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/hair_2.png b/plugins/serendipity_event_gravatar/monsterid/parts/hair_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6af8be94c616f808a2f6dc51b2f88b5fea2d68e9 GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu(%3E{-7;x8B|`u?^s4Zh~$>on0#4o*X4*iCl}T};E_D3)GaN1 z>#9e}?(ioM3r|}oJ)b9)F2MOiI8T-L&gOIqgor0wq>!O zi#h#dKkqoEZTzixb;x`wpzV~^z=DX`X-cvuOn(Y65|5{sScG;5$ z3T|f&<<(C-3d`RAaZ01%gJs+EOze4Ytc*8IYk#}>L&VnAsnyFm%Io#7rsSS{pxYnz zb7_yOV{mxTvd58HcQs>bwajT z6PJWCOufUox$@@qnvEU{ve)URF5_x=ptJ)RGx&kQO#3?PEhne(Xa<86db;|#taD0e F0stQ|58eO( literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/hair_4.png b/plugins/serendipity_event_gravatar/monsterid/parts/hair_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a1856934e16138cd2c963c9d38044d406eb1a965 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpuz>7E{-7;x87bqDA=GNz~X4|f6jH58jaApZ@Y{e1TC&J z0o5=x)W1DsdNl6Ksl*3c@=lnps+*JFVdQ&MBb@0L?*L AaR2}S literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/hair_5.png b/plugins/serendipity_event_gravatar/monsterid/parts/hair_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d04a3286e1b253c176b29ce81d92e90229d5a018 GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*3=E8wo-U3d6}R5r^3FSKz{7e#;KSebXWlil`R1OSc4B7f zL#?V`6a3=zfkrYgG;lBa`TYE=V!@`hw(J`N1(c7?zbjUrvxhnPK-0@QS6%5mz8XJ2 zIc;U067xRga{y7P`R+nI5htKXS@YYA^zQA~}SPmIdXFEa1d`TKz?cV-kwO}W7nduz!Wp@``X>t#+>-8jp=_G0d} zYr26Vd=`Fl81{#r-TC=k{~>D|zdv`ci56eg`sL#~H&*Q5MU6Yt?3Y@0wcq~tJ@9JT uhvkpI&0c(4oP$-YL7ae literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/image.info b/plugins/serendipity_event_gravatar/monsterid/parts/image.info new file mode 100644 index 00000000..df7be013 --- /dev/null +++ b/plugins/serendipity_event_gravatar/monsterid/parts/image.info @@ -0,0 +1,57 @@ +image 120x120 /var/www/splitbrain/_static/monsterid/parts/monsterparts.xcf +layer 120x120 0,0 Mouth_10.png +layer 120x120 0,0 Mouth_9.png +layer 120x120 0,0 Mouth_8.png +layer 120x120 0,0 Mouth_7.png +layer 120x120 0,0 Mouth_6.png +layer 120x120 0,0 Mouth_5.png +layer 120x120 0,0 Mouth_4.png +layer 120x120 0,0 Mouth_3.png +layer 120x120 0,0 Mouth_2.png +layer 120x120 0,0 Mouth_1.png +layer 120x120 0,0 Eyes_15.png +layer 120x120 0,0 Eyes_14.png +layer 120x120 0,0 Eyes_13.png +layer 120x120 0,0 Eyes_12.png +layer 120x120 0,0 Eyes_11.png +layer 120x120 0,0 Eyes_10.png +layer 120x120 0,0 Eyes_9.png +layer 120x120 0,0 Eyes_8.png +layer 120x120 0,0 Eyes_7.png +layer 120x120 0,0 Eyes_6.png +layer 120x120 0,0 Eyes_5.png +layer 120x120 0,0 Eyes_4.png +layer 120x120 0,0 Eyes_3.png +layer 120x120 0,0 Eyes_2.png +layer 120x120 0,0 Eyes_1.png +layer 120x120 0,0 Body_15.png +layer 120x120 0,0 Body_14.png +layer 120x120 0,0 Body_13.png +layer 120x120 0,0 Body_12.png +layer 120x120 0,0 Body_11.png +layer 120x120 0,0 Body_10.png +layer 120x120 0,0 Body_9.png +layer 120x120 0,0 Body_8.png +layer 120x120 0,0 Body_7.png +layer 120x120 0,0 Body_6.png +layer 120x120 0,0 Body_5.png +layer 120x120 0,0 Body_4.png +layer 120x120 0,0 Body_3.png +layer 120x120 0,0 Body_2.png +layer 120x120 0,0 Body_1.png +layer 120x120 0,0 Arms_5.png +layer 120x120 0,0 Arms_4.png +layer 120x120 0,0 Arms_3.png +layer 120x120 0,0 Arms_2.png +layer 120x120 0,0 Arms_1.png +layer 120x120 0,0 Hair_5.png +layer 120x120 0,0 Hair_4.png +layer 120x120 0,0 Hair_3.png +layer 120x120 0,0 Hair_2.png +layer 120x120 0,0 Hair_1.png +layer 120x120 0,0 Legs_5.png +layer 120x120 0,0 Legs_4.png +layer 120x120 0,0 Legs_3.png +layer 120x120 0,0 Legs_2.png +layer 120x120 0,0 Legs_1.png +layer 120x120 0,0 Background diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/legs_1.png b/plugins/serendipity_event_gravatar/monsterid/parts/legs_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6ddc62459a75455554400ad160575dc4916bb4 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*K!uAvT^vIyZoR!?$k(7C;Ck?C#eePkZ0=-7lbfZ>+L9_A zM1hJ3fdi*MU7ROY_C3+8k<~4M1%kvR8U-OJ0wx5MfQw4XTTF_R$;c{7WT<9Fg8J@0wF6*2UngD>^Rl5KH literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/legs_2.png b/plugins/serendipity_event_gravatar/monsterid/parts/legs_2.png new file mode 100644 index 0000000000000000000000000000000000000000..01f4d6f06bcc71c37ba49628a3bd93106728dd8a GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu)SJE{-7;x8B}#B`&3!J3zM?SP#h$N{ fnN7?L3=Zk)LQa;f4&krcLGJf-^>bP0l+XkK<*s^* literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/legs_3.png b/plugins/serendipity_event_gravatar/monsterid/parts/legs_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e29f5c125e8a5f399d49f5b1a94ea6afd0d4b9eb GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu)?ZE{-7;x8B|i>}xjQaSfE-_+NLnZi9eV&bgoOJ+983 zKE;d)sEh#USdp3k;zCJYOr5}urnTV-+-?ahaiv$L9r(QTfSm#7oq|r)4}V0LA9xqs zc=ssN`)!YeD*kl^CzNkI@GhybJi3t6rv9krhTSukX_vVu7kszAVIIpAz2SL6qb>jD zyuEcF%1yZMe9RF0;r@DSNu%zL-*>Z*_CDfzlTr8OR@KM;&39f3zPNVZSDPK^%m)3~ XS)MvlIRTe{fE?}V>gTe~DWM4fjy-?5 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/legs_4.png b/plugins/serendipity_event_gravatar/monsterid/parts/legs_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a786b2e40bed7e0c7feff529b5b4f1b2b5dff880 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu%oX7srr_TW_y#dm VDVuvH&zT7zuBWS?%Q~loCIDO^NyGpE literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/legs_5.png b/plugins/serendipity_event_gravatar/monsterid/parts/legs_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0136dc7fa1169d32d5b4b1581c1fc99a4216feb3 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu!8DE{-7;x8C0F=4>$#ak=R7X8+S04GTD$&dmvK*l?$& z=1?CaP#Jy@6S>yDMtJ)Em!11E5vS`o_c_z=fJ!8#}iwhbd)q$KHQ()LlHUI#Mxe1-xm#N1=Km>&K(uAm_jmV-^6hVDfP#&IL7mT$&-B;I R61GDio~Nsy%Q~loCIAY1dlvuz literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/monsterparts.xcf b/plugins/serendipity_event_gravatar/monsterid/parts/monsterparts.xcf new file mode 100644 index 0000000000000000000000000000000000000000..7e2c7d6880724e2fa0aab57e6bd72c02a2030e2b GIT binary patch literal 65306 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 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/mouth_1.png b/plugins/serendipity_event_gravatar/monsterid/parts/mouth_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aa49c33e1bfb2dd5eba1142488d5439922c05319 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYN_tvTsppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu%iV7srr_TW>Eb@-Y~2Fc|*$zu4TkcNXIbZ)a!cv196L@Yj>J;re~+>E>-9Nl#Zlmvv4FO#ne+ BKPLbH literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/mouth_10.png b/plugins/serendipity_event_gravatar/monsterid/parts/mouth_10.png new file mode 100644 index 0000000000000000000000000000000000000000..42fb3fe0032c17141b8c567b55264d875564ca2c GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu$2=7srr_TW_yz9DfdME#j)z_l-qlb`{&7us&bIDr>mdK II;Vst0OuD&(EtDd literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/mouth_2.png b/plugins/serendipity_event_gravatar/monsterid/parts/mouth_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d8768820869bb8f5322e5a1b36200d5fac81f903 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhZw`O4`Cppa~dYeb22er|4RUI~M9QEFmIYKlU6 zW=V!ZNJgrHyQgo!`xMnYpu&7l7srr_TW_yj)PqY7Rx5F(>?yS)1WeKe5RbiWyU#GiAe0^@*9hZc~ b5Q`^lotN1ku5wYj3zGG8^>bP0l+XkK+UQKG literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/mouth_4.png b/plugins/serendipity_event_gravatar/monsterid/parts/mouth_4.png new file mode 100644 index 0000000000000000000000000000000000000000..977397714ea331f47bf7a322e3124f16ddebf86f GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*K!vY8T^vIyZoR#+SFp)JfGyx$oX#P`gF+ciTpnu<9O241 zB&1TPaVW`P(#4PWU2azEC-x~O?vKuEUj)>P7tCmwa`QLe&a28##qy%3^2@I%kKHj# z<>4{D%4yC!azo=a{@9+y2omyEPe){Ou zs(U$IkIQV=eQ&qB6Dd=BLh9D4J)GaB{$0o~T<}Bj^=!pgmw6X9|9@h$?~jbValTn% k*5teWe5H&SPHVVt&3MMq%>KpE@4G>gp00i_>zopr0A7-WKL7v# literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/mouth_5.png b/plugins/serendipity_event_gravatar/monsterid/parts/mouth_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0eb0becc95e607ddcd75b1f96b1f45d6e5566f GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*K!uAvT^vIyZoR#3DAa7g!{Q)6`G0++<|UR{7E71j?OHhb z{I15WKxKFV-vq_tYgay>n3AyCuHSRt^L596mpv~s<^Mh}YE$(??*q?6ivH!S4O85& zmha0q<+_kB)#(1b}_yZ5mx7XN8c zVFD_`3m$~;{PAXMqTKaO3u;}jUjA`ceV16PE!)~vCwv;!ZJcdW_^p4kh7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*K!x``T^vIyZoR#3&39OVhasS&=)d;m&Q>XpReTXu`6i66 zKZKWx0M+3G4J=uczURFAVqU&1D@XTS@!GH1dykj>PRrh0JpYJ)QL0y7N#p8>?A+b? z)23|y7#yoQ^F`C*bFrn@f1Ig!w$34}Rrz4O%*DqN^Hj~H4%>>&y(w&QY_SXf}{an^LB{Ts5&VYgY literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/monsterid/parts/mouth_9.png b/plugins/serendipity_event_gravatar/monsterid/parts/mouth_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b6f5590bfa153f5ed9cede45d7d55002dfdbca40 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^bwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^?ulvhYd>h7#ZKq1)@*N775{M_8syb=cIqSVBa)D(sC z%#sX+kc?CXcTeAd_bIA*K!v%UE{-7;x87bm$jhL>!Q!~(|GbZnPxJAm3u)bG2xA1Q zzy~yc@hMG~lbo1-Q_1?F{hs5w&CetJLuS7&=f$S$CtoBV|F@p+YPld;Pgg&ebxsLQ E08%add('name', PLUGIN_EVENT_GRAVATAR_NAME); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_DESC); + $propbag->add('stackable', false); + $propbag->add('author', 'Garvin Hicking, Grischa Brockhaus'); + $propbag->add('requirements', array( + 'serendipity' => '0.7', + 'smarty' => '2.6.7', + 'php' => '4.1.0' + )); + $propbag->add('version', PLUGIN_EVENT_GRAVATAR_VERSION); + $propbag->add('groups', array('IMAGES')); + $propbag->add('event_hooks', array( + 'frontend_display' => true, + 'frontend_comment' => true, + 'external_plugin' => true, + 'css' => true, + )); + $configuration = array('longdescription','seperator'); + $config_methods = array(); + for ($idx=1; $idx<=PLUGIN_EVENT_GRAVATAR_METHOD_MAX; $idx++) { + $config_methods[] = "method_$idx"; + } + + + $propbag->add('configuration', + array_merge($configuration, $config_methods, + array('defaultavatar', 'recent_entries', 'infoline', + 'autoralt', 'smartyimage', 'align', 'size', 'cache', 'rating', + 'gravatar_fallback','gravatar_fallback_use_always','warning') + ) + ); + } + + + function introspect_config_item($name, &$propbag) + { + global $serendipity; + + $types = array( + 'gravatar' => "Gravatar", + 'favatar' => "Favatar", + 'pavatar' => "Pavatar", + 'twitter' => "Twitter", + 'identica' => "Identica", + 'mybloglog' => "MyBlogLog", + 'monsterid' => "Monster ID", + 'wavatars' => "Wavatars", + 'identicon' => "Identicon/YCon", + 'default' => PLUGIN_EVENT_GRAVATAR_METHOD_DEFAULT, + 'none' => "---", + ); + + // Add config for methods. + for ($idx=1; $idx<=PLUGIN_EVENT_GRAVATAR_METHOD_MAX; $idx++) { + if ($name=="method_$idx") { + $propbag->add('type', 'select'); + $propbag->add('name', "($idx) " . PLUGIN_EVENT_GRAVATAR_METHOD); + $propbag->add('description',PLUGIN_EVENT_GRAVATAR_METHOD_DESC); + $propbag->add('select_values', $types); + $propbag->add('default', 'pavatar'); + return true; + } + } + + $gravatar_fallbacks = array( + 'monsterid' => "Monster ID", + 'wavatar' => "Wavatar", + 'identicon' => "Identicon", + 'default' => "Gravatar symbol", + 'none' => "---", + ); + + switch($name) { + case 'smartyimage': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_USE_SMARTY); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_USE_SMARTY_DESC); + $propbag->add('default', false); + break; + + case 'infoline': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_INFOLINE); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_INFOLINE_DESC); + $propbag->add('default', true); + break; + + case 'recent_entries': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_RECENT_ENTRIES_DESC); + $propbag->add('default', true); + break; + + case 'warning': + $propbag->add('type', 'content'); + $propbag->add('default', PLUGIN_EVENT_GRAVATAR_EXTLING_WARNING); + break; + case 'longdescription': + $propbag->add('type', 'content'); + $propbag->add('default', PLUGIN_EVENT_GRAVATAR_LONG_DESCRIPTION); + break; + case 'seperator': + $propbag->add('type', 'seperator'); + break; + case 'gravatar_fallback': + $propbag->add('type', 'select'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_FALLBACK); + $propbag->add('description',PLUGIN_EVENT_GRAVATAR_FALLBACK_DESC); + $propbag->add('select_values', $gravatar_fallbacks); + $propbag->add('default', 'none'); + break; + case 'gravatar_fallback_use_always': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS); + $propbag->add('description',PLUGIN_EVENT_GRAVATAR_FALLBACK_ALLWAYS_DESC); + $propbag->add('default', false); + break; + + case 'defaultavatar': + if (version_compare('1.2',$serendipity['version'])==1) {// 1 if 1.2 higher than actual version number + $propbag->add('type', 'string'); + } else { + $propbag->add('type', 'media'); + } + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_DEFAULTAVATAR_DESC); + $propbag->add('default', ''); + break; + + case 'cache': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_CACHING); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_CACHING_DESC); + $propbag->add('default', 48); + break; + + case 'size': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_SIZE); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_SIZE_DESC); + $propbag->add('default', '40'); + break; + + case 'border': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_BORDER); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_BORDER_DESC); + $propbag->add('default', ''); + break; + + case 'rating': + $propbag->add('type', 'radio'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_RATING); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_RATING_DESC); + $propbag->add('radio', array( + 'value' => array('-', 'G', 'PG', 'R', 'X'), + 'desc' => array(PLUGIN_EVENT_GRAVATAR_RATING_NO,PLUGIN_EVENT_GRAVATAR_RATING_G, PLUGIN_EVENT_GRAVATAR_RATING_PG, PLUGIN_EVENT_GRAVATAR_RATING_R, PLUGIN_EVENT_GRAVATAR_RATING_X) + )); + $propbag->add('radio_per_row', '1'); + $propbag->add('default', '-'); + break; + + case 'align': + $align = array( + 'left' => PLUGIN_EVENT_GRAVATAR_ALIGN_LEFT, + 'right' => PLUGIN_EVENT_GRAVATAR_ALIGN_RIGHT, + 'noalign' => PLUGIN_EVENT_GRAVATAR_ALIGN_NONE, + ); + + $propbag->add('type', 'select'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_ALIGN); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_ALIGN_DESC); + $propbag->add('select_values', $align); + $propbag->add('default', 'right'); + break; + + case 'autoralt': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_GRAVATAR_AUTOR_ALT); + $propbag->add('description', PLUGIN_EVENT_GRAVATAR_AUTOR_ALT_DESC); + $propbag->add('default', false); + break; + + } + + return true; + } + + function generate_content(&$title) { + $title = PLUGIN_EVENT_GRAVATAR_NAME; + } + + /** + * Will be called while saving settings + */ + function cleanup() { + // *Always* clean up the cache after changing configuration, else + // the configuration change will first be seen after cache time is run out. + $this->log("-------"); + $cacheDir = $this->getCacheDirectory(); + if (is_dir($cacheDir) && $handle = opendir($cacheDir)) { + while (false !== ($file = readdir($handle))) { + $filename = $cacheDir . '/' . $file; + if (!is_dir($filename)) { + $this->log("CLEANUP CACHE: " . $filename); + unlink($filename); + } + } + } + } + + function event_hook($event, &$bag, &$eventData, $addData = null) + { + global $serendipity; + static $cache = null; + static $method = null; + + $hooks = &$bag->get('event_hooks'); + + if ($cache === null) { + $cache = $this->get_config('cache') * 60 * 60; // convert hours to seconds + $this ->cache_seconds = $cache; + } + + if ($method === null) { + $method = $this->get_config('method', 'gravatar'); + } + + if (isset($hooks[$event])) { + switch($event) { + + // Catch external_plugin event for fresh fetching avatar icons + // This will response with an image (not with html code) + case 'external_plugin': + $parts = explode('_', $eventData); + if (count($parts)<4) { + return false; + } + if ($parts[0] == 'fetchAvatar') { + if (count($parts)!=5) return false; + $info = array(); + $info['url'] = $this->urldecode($parts[1]); + $info['email_md5'] = $parts[2]; + $info['author'] = $this->urldecode($parts[3]); + $info['cid'] = $parts[4]; + $this->log("-------"); + $this->log("fetch Avatar: " . urldecode($parts[1])); + $this->fetchAvatar($info); + return true; + } else if ($parts[0] == 'cachedAvatar') { + if (count($parts)!=4) return false; + $cache_file = $this->getCacheDirectory() . '/' . $parts[1] .'_' .$parts[2] . '_' .$parts[3]; + $lastrun = $cache_file . '.lastrun'; + $this->log("-------"); + $this->log("show cached Avatar: $cache_file"); + // Get last run information + if (file_exists($lastrun)){ + $fp = fopen($lastrun, 'rb'); + $this->avatarConfiguration = unserialize(fread($fp, filesize($lastrun))); + fclose($fp); + } + $this->show($cache_file); + return true; + } else { + return false; + } + + + break; + + // Print out image html for the user avatar into the frontend_display + case 'frontend_display': + if (!isset($eventData['comment'])) { + return true; + } + + $this->printAvatarHtml($eventData, $addData); + + return true; + break; + case 'css': + // avatar css has to be emitted no matter of smarty enabled: the sidebar needs it. + //$useSmarty = serendipity_db_bool($this->get_config('smartyimage', false)); + //if (!$useSmarty && !(strpos($eventData, '.avatar_left') || strpos($eventData, '.avatar_rigth'))) { + if (!(strpos($eventData, '.avatar_left') || strpos($eventData, '.avatar_rigth'))) { +?> +.avatar_left { + float:left; + margin-left:0px; + margin-right:10px; +} +.avatar_right { + float:right; + margin-right:0px; + margin-left:10px; +} +get_config('infoline', true))){ + return false; + } + + // The contact form uses the comments, too. We don't want this information line there and detect it by the missing properties entry. + if (empty($eventData['properties'])){ + return false; + } + $supported_methods = ''; + for($methodnr = 1; $methodnr <= PLUGIN_EVENT_GRAVATAR_METHOD_MAX; $methodnr++){ + $act_method = $this->get_config("method_".$methodnr); + switch ($act_method){ + case 'gravatar': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Gravatar'; + break; + case 'favatar': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Favatar'; + break; + case 'pavatar': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Pavatar'; + break; + case 'twitter': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Twitter'; + break; + case 'identica': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Identica'; + break; + case 'mybloglog': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'MyBlogLog'; + break; + case 'monsterid': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Monster ID'; + break; + case 'identicon': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Identicon/Ycon'; + break; + case 'wavatars': + $supported_methods .= (empty($supported_methods) ? '' : ', ') . 'Wavatars'; + break; + } + } + echo '
' . sprintf(PLUGIN_EVENT_GRAVATAR_SUPPORTED, $supported_methods) . '
'; + return true; + break; + + default: + return false; + } + } else { + return false; + } + } + + /** + * Returns HTML displaying the user avatar. This is done without any call to external servers. + * If a cached avatar is found, the image will have it as SRC, else the SRC will be filled with + * an external_plugin call, that will try to fetch a fresh avatar later. + * + */ + function printAvatarHtml(&$eventData, &$addData){ + global $serendipity; + + $useSmarty = serendipity_db_bool($this->get_config('smartyimage', false)); + + // comments sidebar plugin doesn't support smarty, so switch it off, if detected + if ($addData['from'] == 'serendipity_plugin_comments:generate_content') { + if (!serendipity_db_bool($this->get_config('recent_entries', true))) { + return false; + } + $useSmarty = false; + } + + if (empty($eventData['url']) && empty($eventData['email']) && empty($eventData['author']) && !$this->supportDefaultAvatar()) { + $this->log("No url nor email handed and default avatar not supported!"); + return false; + } + + if (!empty($eventData['url']) && !preg_match('@^https*://@i',$eventData['url'])){ + $this->log("Changed wrong url: {$eventData['url']}"); + $eventData['url'] = 'http://' . $eventData['url']; + } + + $url = ''; + if (!empty($eventData['url'])) { + $url = $eventData['url']; + } + + if (!empty($eventData['url'])) { // Strip Query paras + $urlparts = explode('?', $eventData['url']); + $url = $urlparts[0]; + } + $title = ''; + $author = 'unknown'; + if (isset($eventData['author'])) { + $author = htmlspecialchars($eventData['author']); + $title = $author; + } + + if (isset($eventData['email']) && !empty($eventData['email'])) { + $email_md5 = md5(strtolower($eventData['email'])); + } + else { + $email_md5 = ''; + } + if ($this->cache_seconds > 0) { + $cache_file = $this->getCacheFilePath($eventData); + // if no cache filename was generated, no usable user data was found. + // this meens: it won't be possible to generate any image, so break at this point. + if (!isset($cache_file)) { + return false; + } + $this->log("comment print: " . print_r($eventData, true)); + // If there is a cache file that's new enough, return the image immidiatly + if (file_exists($cache_file) && (time() - filemtime($cache_file) < $this->cache_seconds)) { + $url = $serendipity['baseURL'] . $serendipity['indexFile'] . '?/' + . $this->getPermaPluginPath() . '/cachedAvatar_' . md5($url) . '_' . $email_md5 + . '_' . md5($author); + } else { // no image cached yet, call external plugin hook for fetching a new one + $url = $serendipity['baseURL'] . $serendipity['indexFile'] . '?/' + . $this->getPermaPluginPath() . '/fetchAvatar_' . $this->urlencode($url) . '_' . $email_md5 + . '_' . $this->urlencode($author) . '_' . $eventData['id']; + } + + } else { // call external plugin hook for fetching a new one + $url = $serendipity['baseURL'] . $serendipity['indexFile'] . '?/' + . $this->getPermaPluginPath() . '/fetchAvatar_' . $this->urlencode($url) . '_' . $email_md5 + . '_' . $this->urlencode($author) . '_' . $eventData['id']; + } + + $image_html = $this->generateImageHtml($url, $title, $this->get_config('align', 'right'), !$useSmarty, $this->generateAvatarCssClass($addData)); + if ($useSmarty) { + $eventData['avatar'] = $image_html; + } + else { + $eventData['comment'] = $image_html . $eventData['comment']; + } + + return true; + } + + /** + * Generates a CSS class for the avatar depending where it is displayed. + * Defaults to comment_avatar in comments and is unique for plugins. + */ + function generateAvatarCssClass($addData){ + if (empty($addData)) { + return "avatar"; + } + $from = $addData['from']; + $parts = explode(':',$from); + $css = $parts[0]; + return ($css == 'functions_entries'? 'comment' : $css ) . '_avatar'; + } + + /** + * Tests wether the default avatar is supported + */ + function supportDefaultAvatar(){ + + // Check if a default avatar is defined + $default = $this->getDefaultImageConfiguration(); + if (empty($default['defaultavatar'])) { + return false; + } + + // check if default avatar method is configured as one of the avatar methods. + for($methodnr = 1; $methodnr <= PLUGIN_EVENT_GRAVATAR_METHOD_MAX; $methodnr++){ + $method = $this->get_config("method_" . $methodnr); + + // if none is configured, ignore later methods! + if ($method == 'none'){ + return false; + } + + // return true if default avatar method is found + if ($method == 'default'){ + return true; + } + } + return false; + } + + /** + * Will try to fetch a fresh avatar image by user configuration. If retreiving was successfull, + * the image will cached and displayed as binary image response. + */ + function fetchAvatar(&$eventData) { + global $serendipity; + + $methodnr = 1; + + // Assure existance of cache directory + @mkdir($this->getCacheDirectory()); + $default = $this->getDefaultImageConfiguration(); + + // load configuration of last run + $lastrun_fname = $this->getCacheFilePath($eventData) . '.lastrun'; + if (file_exists($lastrun_fname) && (time() - filemtime($lastrun_fname))< $this->cache_seconds) { + $this->log("Found fresh lastrun: $lastrun_fname"); + $fp = fopen($lastrun_fname, 'rb'); + $this->avatarConfiguration = unserialize(fread($fp, filesize($lastrun_fname))); + fclose($fp); + $this->avatarConfiguration['loaded_from_cache'] = true; + // go to last successfull methodnr: + if (isset($this->avatarConfiguration['methodnr'])) { + $methodnr = $this->avatarConfiguration['methodnr']; + $this->log("MethodNr by lastrun: $methodnr"); + } + } + + $success = false; + while (!$success && $methodnr <= PLUGIN_EVENT_GRAVATAR_METHOD_MAX) { + $method = $this->get_config("method_" . $methodnr); + switch ($method){ + case 'gravatar': + $success = $this->fetchGravatar($eventData); + break; + case 'favatar': + $success = $this->fetchPFavatar($eventData, 'F'); + break; + case 'pavatar': + $success = $this->fetchPFavatar($eventData, 'P'); + break; + case 'twitter': + $success = $this->fetchTwitter($eventData); + break; + case 'identica': + $success = $this->fetchIdentica($eventData); + break; + case 'mybloglog': + $success = $this->fetchMyBlogLog($eventData); + break; + case 'monsterid': + $success = $this->fetchMonster($eventData); + break; + case 'wavatars': + $success = $this->fetchWavatar($eventData); + break; + case 'identicon': + $success = $this->fetchYcon($eventData); + break; + case 'default': + $success = $this->fetchDefault(); + break; + case 'none': + $success = true; + break; + } + if ($success){ + $this->log("fetchAvater success."); + $this->avatarConfiguration['methodnr'] = $methodnr; + $this->avatarConfiguration['fetch_date'] = time(); + // save configuration of this check, if it was not loaded from cache. + if (!isset($this->avatarConfiguration['loaded_from_cache'])) { + $fp = fopen($lastrun_fname, 'wb'); + fwrite($fp,serialize($this->avatarConfiguration)); + fclose($fp); + } + return true; + } + $methodnr++; + } + } + + /** + * Fetches a Gravatar and returns it as a binary image response. + * + * @param array eventdata the data given by the event + * @param int cache hours for fetching images from cache + * + * @return boolean true, if Avatar was found and added to the comment buffer + */ + function fetchGravatar(&$eventData){ + global $serendipity; + + $this->log("Gravatar: url=" . $eventData['url'] . " email_md5=" . $eventData['email_md5'] . " author=" .$eventData['author']) ; + // Was lastrun successfull? + if (isset($this->avatarConfiguration['gravatar_found']) && !$this->avatarConfiguration['gravatar_found']) { + return false; + } + if (empty($eventData['email_md5'])) { + if (!serendipity_db_bool($this->get_config('gravatar_fallback_use_always', false)) || (empty($eventData['url']) && empty($eventData['author']))) { + return false; + } + else { + if (empty($eventData['url'])) $email_md5 = md5($eventData['author']); + else $email_md5 = md5($eventData['url']); + } + } + else { + $email_md5 = $eventData['email_md5']; + } + $default = $this->getDefaultImageConfiguration(); + + $gravatar_fallback = $this->get_config("gravatar_fallback"); + $fallback = ""; + if ($gravatar_fallback != 'none') { + $fallback = '&d=' . $gravatar_fallback; + } + else { + //$defaultavatar = urlencode((empty($default['defaultavatar'])? $serendipity['baseURL'] . 'dummy.gif': 'http://' . $_SERVER['SERVER_NAME'] . $default['defaultavatar'])); + $defaultavatar = urlencode($serendipity['serendipityHTTPPath'] . 'dummy456.gif123'); // Add a not existing image to produce an error we can check + $fallback = '&d=' . $defaultavatar; + } + + $urltpl = 'http://www.gravatar.com/avatar.php?' + . 'gravatar_id=' . $email_md5 + . $fallback + . '&size=' . $default['size'] + . ($default['rating']=='-'?'':'&rating='. $default['rating']); + + // Assure a default avatar, because we need it for testing if the avatar given by Gravatar is a dummy image. + $this->log("Gravatar Link: " . $urltpl) ; + + $success = $this->saveAndResponseAvatar($eventData, $urltpl, 1); + $this->avatarConfiguration['gravatar_found'] = $success; + return $success; + } + + /** + * Tries to add a MyBlogLog.com avatar to the comment. + * + * @param array eventdata the data given by the event + * @param int cache hours for fetching images from cache + * @param array default default values for avatar images + * + * @return boolean true, if Avatar was found and added to the comment buffer + */ + function fetchMyBlogLog(&$eventData){ + require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; + global $serendipity; + + // Was lastrun successfull? + if (isset($this->avatarConfiguration['mybloglog_found']) && !$this->avatarConfiguration['mybloglog_found']) { + return false; + } + if (empty($eventData['url'])) { + return false; + } + + // Get configured plugin path: + $pluginPath = 'plugin'; + if (isset($serendipity['permalinkPluginPath'])){ + $pluginPath = $serendipity['permalinkPluginPath']; + } + + $author_url = 'http://pub.mybloglog.com/coiserv.php?' + . 'href=' . $eventData['url'] + . '&n=' . (!empty($eventData['author']) ? $eventData['author'] : '*'); + + $check = $this->saveAndResponseMyBlogAvatar($eventData, $author_url); + $this->avatarConfiguration['mybloglog_found'] = $check; + + return $check; + } + + + /** + * Tries to add a favatar or pavatar (depending on the given mode) to the comment. + * + * @param array eventdata the data given by the event + * @param int cache hours for fetching images from cache + * @param string mode has to be 'P' for Pavatar or 'F' for Favatar loading. + * + * @return boolean true, if Avatar was found and added to the comment buffer + */ + function fetchPFavatar(&$eventData, $mode="F"){ + require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; + global $serendipity; + + $default = $this->getDefaultImageConfiguration(); + + $url = $eventData['url']; + if (empty($url)) { + return false; + } + $favicon = false; + + $this->log($mode . " - Trying to fetch for $url"); + + // Try to get the URL + $parts = @parse_url($url); + if (!is_array($parts)) { + return false; + } + + $ip = @gethostbyname($parts['host']); + if (!$ip || $ip == $parts['host']) { + return false; + } + + $this->log($mode . " - URL ok."); + + $cache_file = $this->getCacheFilePath($eventData); + + // Load icon url detected in last run + if (isset($this->avatarConfiguration['img_url_'.$mode])){ + $favicon = $this->avatarConfiguration['img_url_'.$mode]; + $this->log($mode . " - using last run url: $favicon"); + } + + if ($favicon === false) { + // use optimization for localhost + $islocalhost = ($_SERVER['HTTP_HOST'] == $parts['host']); + + if (function_exists('serendipity_request_start')) { + serendipity_request_start(); + } + + + // Evaluate URL of P/Favatar + $req = new HTTP_Request($url, array('allowRedirects' => true, 'maxRedirects' => 3)); + $favicon = false; + // code 200: OK, code 30x: REDIRECTION + $responses = "/(200 OK)|(30[0-9] Found)/"; // |(30[0-9] Moved) + if (!$islocalhost && (PEAR::isError($req->sendRequest()) || preg_match($responses, $req->getResponseCode()))) { + // nothing to do, + $favicon = false; + $this->log($mode . " - Error fetching $url: " . $req->getResponseCode()); + } + else { + $pavatarHeaderIcon = $req->getResponseHeader("X-Pavatar"); + $fContent = $req->getResponseBody(); + if ($mode=='P' && !empty($pavatarHeaderIcon)){ + $faviconURL = $pavatarHeaderIcon; + $this->log("Found x-pavatar in head: $faviconURL"); + } + else if (!$islocalhost && + ($mode=='P' && preg_match('/]+rel="pavatar"[^>]+?href="([^"]+?)"/si', $fContent, $matches)) || + ($mode=='F' && preg_match('/]+rel="(?:shortcut )?icon"[^>]+?href="([^"]+?)"/si', $fContent, $matches)) + ) + { + + // Attempt to grab an avatar link from their webpage url + $linkUrl = html_entity_decode($matches[1]); + if (substr($linkUrl, 0, 1) == '/') { + if ($urlParts = parse_url($url)) { + $faviconURL = $urlParts['scheme'] . '://' . $urlParts['host'] . $linkUrl; + } + } else if (substr($linkUrl, 0, 7) == 'http://' || substr($linkUrl, 0, 8) == 'https://') { + $faviconURL = $linkUrl; + } else if (substr($url, -1, 1) == '/') { + $faviconURL = $url . $linkUrl; + } else { + $faviconURL = $url . '/' . $linkUrl; + } + + $this->log($mode . " - Found link rel to url $faviconURL"); + } + else { + // If unsuccessful, attempt to "guess" the favicon location + $urlParts = parse_url($url); + $faviconURL = $urlParts['scheme'] . '://' . $urlParts['host'] . ($mode=='F'?'/favicon.ico':'/pavatar.png'); + $this->log($mode . " - Not found link rel, guessing $faviconURL"); + } + + // Split image URL and check if image is available using a fast and timed out socket: + + $url_parts = @parse_url($faviconURL); + if (!is_array($url_parts)) { + $url_parts = array(); + } + + if (!empty($url_parts['path'])) { + $documentpath = $url_parts['path']; + } else { + $documentpath = '/'; + } + + if (!empty($url_parts['query'])) { + $documentpath .= '?' . $url_parts["query"]; + } + + if (empty($url_parts['port'])) { + $url_parts['port'] = '80'; + } + + if (!empty($url_parts['host'])) { + $socket = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, 30); + + if ($socket) { + fwrite($socket, "HEAD " . $documentpath . " HTTP/1.0\r\nHost: {$url_parts['host']}\r\n\r\n"); + $http_response = fgets($socket, 25); + + $this->log($mode . ' Testing server ' . $url_parts['host'] . " dopath: $documentpath - HEAD Response: $http_response"); + + if (preg_match($responses, $http_response)) // We only test for server existance + { + $favicon = $faviconURL; + } + fclose($socket); + } + } + + // Remember the last result of the P/Favatar search + $this->avatarConfiguration['img_url_'.$mode] = $favicon; + } + if (function_exists('serendipity_request_end')) { + serendipity_request_end(); + } + } // if favicon url not loaded from cache + + if (!empty($favicon)) { + $this->log($mode . " - found at: $favicon"); + return $this->saveAndResponseAvatar($eventData, $favicon); + } + else { + return false; + } + + } + + function fetchTwitter(&$eventData) { + require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; + + // Was lastrun successfull? + if (isset($this->avatarConfiguration['twitter_found']) && !$this->avatarConfiguration['twitter_found']) { + return false; + } + + // Let other plugins fill metadata. CommentSpice is perhaps able to fetch twitter infos. + try { + $original_url = $eventData['url']; + $this->log("hook_event: avatar_fetch_userinfos"); + $askforData = array("type" => "twitter"); + serendipity_plugin_api::hook_event('avatar_fetch_userinfos', $eventData, $askforData); + } catch (Exception $e) { + $this->log($e); + } + + if (empty($eventData['url'])) { + return false; + } + $url = $eventData['url']; + $eventData['url'] = $original_url; + $parts = @parse_url($url); + if (!is_array($parts)) { + return false; + } + if ($parts['host'] == 'twitter.com' || $parts['host'] == 'www.twitter.com') { + $path = trim($parts['path']); + $dirs = explode('/',$path); + $twittername = $dirs[1]; + //if ($twittername=='#!') $twittername = $dirs[2]; + + $this->log("Twitteruser found ($url): $twittername"); + + $twitter_search = 'http://search.twitter.com/search.atom?q=from%3A' . $twittername . '&rpp=1'; + serendipity_request_start(); + $req = new HTTP_Request($twitter_search); + $req->sendRequest(); + $this->last_error = $req->getResponseCode(); + if ($req->getResponseCode() != 200) { + $this->last_error = $req->getResponseCode(); + serendipity_request_end(); + $this->log("Twitter Error: {$this->last_error}"); + return false; + } + $response = trim($req->getResponseBody()); + serendipity_request_end(); + $parser = xml_parser_create(); + $vals=array(); $index=array(); + $success = xml_parse_into_struct($parser, $response, $vals, $index); + xml_parser_free($parser); + if ($success) { + foreach ($index['LINK'] as $index) { + if ($vals[$index]['attributes']['REL'] == 'image') { + $img_url = $vals[$index]['attributes']['HREF']; + $success = true; + break; + } + } + if ($success) { + $success = $this->saveAndResponseAvatar($eventData, $img_url); + } + } + $this->avatarConfiguration['twitter_found'] = $success; + return $success; + } + return false; + + } + + function fetchIdentica(&$eventData) { + require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; + + // Was lastrun successfull? + if (isset($this->avatarConfiguration['identica_found']) && !$this->avatarConfiguration['identica_found']) { + return false; + } + if (empty($eventData['url'])) { + return false; + } + $url = $eventData['url']; + + if (preg_match('@^http://identi\.ca/notice/(\d+)$@',$url,$matches)) { + $status_id = $matches[1]; + $search = "http://identi.ca/api/statuses/show/$status_id.xml"; + serendipity_request_start(); + $req = new HTTP_Request($search); + $req->sendRequest(); + $this->last_error = $req->getResponseCode(); + if ($req->getResponseCode() != 200) { + $this->last_error = $req->getResponseCode(); + serendipity_request_end(); + $this->log("Identica Error: {$this->last_error}"); + return false; + } + $response = trim($req->getResponseBody()); + serendipity_request_end(); + $parser = xml_parser_create(); + $vals=array(); $index=array(); + $success = xml_parse_into_struct($parser, $response, $vals, $index); + xml_parser_free($parser); + if ($success) { + $img_url = $vals[$index['PROFILE_IMAGE_URL'][0]]['value']; + $success = $this->saveAndResponseAvatar($eventData, $img_url); + } + $this->avatarConfiguration['identica_found'] = $success; + return $success; + } + + return false; + + } + + /** + * Shows a monster id avatar. + * + * @param array eventdata the data given by the event + * + * @return boolean true, if Avatar was found and added to the comment buffer + */ + function fetchMonster(&$eventData){ + require_once dirname(__FILE__) . '/monsterid/monsterid.php'; + + $seed = md5($eventData['author']) . $eventData['email_md5'] . md5($eventData['url']); + $default = $this->getDefaultImageConfiguration(); + $size = $default['size']; + + // Save monster image + @mkdir($this->getCacheDirectory()); + $cache_file = $this->getCacheFilePath($eventData); + $this->log("Caching monster avatar: " . $cache_file); + if (build_monster($cache_file, $seed, $size)) { + $this->log("Success caching monster."); + $this->avatarConfiguration['mime-type'] = "image/png"; + $this->show($cache_file); + } + else if ($this->supportDefaultAvatar()){ + $this->fetchDefault(); + } + + return true; + } + + /** + * Shows a monster id avatar. + * + * @param array eventdata the data given by the event + * + * @return boolean true, if Avatar was found and added to the comment buffer + */ + function fetchWavatar(&$eventData){ + require_once dirname(__FILE__) . '/wavatars/wavatars.php'; + + $seed = md5($eventData['author']) . $eventData['email_md5'] . md5($eventData['url']); + $default = $this->getDefaultImageConfiguration(); + $size = $default['size']; + + // Save monster image + @mkdir($this->getCacheDirectory()); + $cache_file = $this->getCacheFilePath($eventData); + $this->log("Caching wavatar avatar: " . $cache_file); + if (wavatar_build($cache_file, $seed, $size)) { + $this->log("Success caching wavatar."); + $this->avatarConfiguration['mime-type'] = "image/png"; + $this->show($cache_file); + } + else if ($this->supportDefaultAvatar()){ + $this->fetchDefault(); + } + + return true; + } + + /** + * Shows an identicon/ycon avatar (generated locally). + * http://www.docuverse.com/blog/donpark/2007/01/18/visual-security-9-block-ip-identification + * http://www.evilissexy.com/ + * + * @param array eventdata the data given by the event + * + * @return boolean true, if Avatar was found and added to the comment buffer + */ + function fetchYcon(&$eventData){ + require_once dirname(__FILE__) . '/ycon/ycon.image.php'; + + $seed = md5($eventData['author']) . $eventData['email_md5'] . md5($eventData['url']); + $default = $this->getDefaultImageConfiguration(); + $size = $default['size']; + + // Save monster image + @mkdir($this->getCacheDirectory()); + $cache_file = $this->getCacheFilePath($eventData); + $this->log("Caching Identicon/Ycon avatar: " . $cache_file); + if (build_ycon($cache_file,$seed,$size)) { + $this->log("Success caching ycon."); + $this->avatarConfiguration['mime-type'] = "image/png"; + $this->show($cache_file); + } + else if ($this->supportDefaultAvatar()){ + $this->fetchDefault(); + } + + return true; + } + + /** + * Shows the local default avatar. + * + * @param array eventdata the data given by the event + * + * @return boolean true, if Avatar was found and added to the comment buffer + */ + function fetchDefault(){ + global $serendipity; + + $default = $this->getDefaultImageConfiguration(); + if (empty($default['defaultavatar'])) { + return false; + } + + $this->log("FetchDefault"); + // Set fetch date. Show will use this for caclculating cache. + $this->avatarConfiguration['fetch_date'] = time(); + // Show default avatar + $defaultUrl = $default['defaultavatar']; + $this->log("DefaultUrl CFG: " . $defaultUrl); + $defaultUrl = preg_replace('@^http[s]*?://[^/]*?/@si','',$defaultUrl); // Remove protocol and server part, if entered. + $this->log("DefaultUrl RPL: " . $defaultUrl); + $this->log("FetchDefault: DOC_ROOT" . $_SERVER["DOCUMENT_ROOT"]); + $this->show($_SERVER["DOCUMENT_ROOT"] . '/' . $defaultUrl); + + return true; + } + + + /** + * Caches an avatar and streams it back to the browser. + */ + function saveAndResponseAvatar($eventData, $url, $allow_redirection = 3){ + require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; + global $serendipity; + $fContent = null; + + if (function_exists('serendipity_request_start')) { + serendipity_request_start(); + } + + if ($allow_redirection) { + $request_pars['allowRedirects'] = true; + $request_pars['maxRedirects'] = $allow_redirection; + } + else { + $request_pars['allowRedirects'] = false; + } + + $req = new HTTP_Request($url, $request_pars); + + // if the request leads to an error we don't want to have it: return false + if (PEAR::isError($req->sendRequest()) || ($req->getResponseCode() != '200')) { + $fContent = null; + if ($req->getResponseCode() != '200') { + $this->log("Avatar fetch error: " . $req->getResponseCode() . " for url=" . $url); + } + else { + $this->log("Avatar fetch error: PEAR reported ERROR for url=" . $url); + } + + } + else { + // Allow only images as Avatar! + $mime = $req->getResponseHeader("content-type"); + $this->log("Avatar fetch mimetype: $mime" . " for url=" . $url); + $mimeparts = explode('/',$mime); + if (count($mimeparts)==2 && $mimeparts[0]=='image') { + $fContent = $req->getResponseBody(); + } + } + + if (function_exists('serendipity_request_start')) { + serendipity_request_end(); + } + + // if no content was fetched, return false + if (!isset($fContent) || empty($fContent)){ + $this->log("Avatar fetch: no Content!"); + return false; + } + + $cache_file = $this->cacheAvatar($eventData, $fContent,$req); + if ($cache_file) { + $this->show($cache_file); + } + else if ($this->supportDefaultAvatar()){ + $this->fetchDefault(); + } + + return true; + } + + function saveAndResponseMyBlogAvatar($eventData, $url) { + global $serendipity; + + $request_pars['allowRedirects'] = false; + + $this->log("saveAndResponseMyBlogAvatar: " . $url); + + // First a dummy icon is fetched. This is done by fetching a MyBlog Avatar for a not existing domain. + // If we have done this before, the dummy_md5 is already set, so we can skip this fetching here. + if (!isset($this->mybloglog_dummy_md5)) { + + $cachefilename = '_mybloglogdummy.md5'; + $cache_file = $this->getCacheDirectory() . '/' . $cachefilename; + + // Look up the cache for the md5 of the MyBlogLog dummy icon saved earlier: + if (file_exists($cache_file) && time() - filemtime($cache_file) < $this->cache_seconds){ + $fp = fopen($cache_file, 'rb'); + $this->mybloglog_dummy_md5 = fread($fp, filesize($cache_file)); + fclose($fp); + $this->log("Loaded dummy MD5: " . $this->mybloglog_dummy_md5); + } + else { // dummy MD5 file was not cached or was too old. We have to fetch the dummy icon now + $dummyurl = 'http://pub.mybloglog.com/coiserv.php?href=http://grunz.grunz.grunz&n=*'; + $this->log("trying dummyUrl: " . $dummyurl); + if (function_exists('serendipity_request_start')) { + serendipity_request_start(); + } + $reqdummy = new HTTP_Request($dummyurl, $request_pars); + if (PEAR::isError($reqdummy->sendRequest()) || ($reqdummy->getResponseCode() != '200')) { + if (function_exists('serendipity_request_start')) { + serendipity_request_end(); + } + $this->avatarConfiguration["mybloglog_dummy_error!"]=$reqdummy->getResponseCode(); + // unable to fetch a dummy picture! + $this->log("unable to fetch a dummy picture!" . $dummyurl); + return false; // what can we say else.. + } + else { + + // Allow only images as Avatar! + $mime = $reqdummy->getResponseHeader("content-type"); + $this->log("MyBlogLog Avatar fetch mimetype: $mime"); + $mimeparts = explode('/',$mime); + if (count($mimeparts)!=2 || $mimeparts[0]!='image') { + // unable to fetch a dummy picture! + $this->log("unable to fetch a dummy picture!" . $dummyurl); + if (function_exists('serendipity_request_start')) { + serendipity_request_end(); + } + return false; // what can we say else.. + } + + $fContent = $reqdummy->getResponseBody(); + $this->mybloglog_dummy_md5 = md5($fContent); + // Save MD5 of dummy icon for later runs + $fp = fopen($cache_file, 'wb'); + fwrite($fp,$this->mybloglog_dummy_md5); + fclose($fp); + $this->log("dummy MD5 saved: " . $this->mybloglog_dummy_md5); + } + if (function_exists('serendipity_request_start')) { + serendipity_request_end(); + } + } + } + + // Fetch the correct icon and compare: + if (isset($this->mybloglog_dummy_md5)) { + $cachefilename = $this->getCacheFilePath($eventData); + + // fetch the icon + if (function_exists('serendipity_request_start')) { + serendipity_request_start(); + } + $this->log("Fetching mbl: " . $url); + $req = new HTTP_Request($url, $request_pars); + if (PEAR::isError($req->sendRequest()) || ($req->getResponseCode() != '200')) { + if (function_exists('serendipity_request_start')) { + serendipity_request_end(); + } + $this->log("Unable to fetch the correct image!"); + // Unable to fetch the correct image! + return false; + } + else { + // Test, if this realy is an image! + $mime_type = $req->getResponseHeader('content-type'); + if (!empty($mime_type)) $mt_parts = explode('/',$mime_type); + if (isset($mt_parts) && is_array($mt_parts) && $mt_parts[0] == 'image') { + $fContent = $req->getResponseBody(); + $avtmd5 = md5($fContent); + $this->log("mbl image fetched, MD5: " . $avtmd5); + if ($this->mybloglog_dummy_md5 != $avtmd5) { + $this->log("caching mbl image: " . $cachefilename); + $this->cacheAvatar($eventData,$fContent,$req); + } + } else { + $this->log("MyBlogLog did not return an image: " . $mime_type ); + $avtmd5 = $this->mybloglog_dummy_md5; // Declare it as dummy in order not to save it. + } + + } + if (function_exists('serendipity_request_start')) { + serendipity_request_end(); + } + + if ($this->mybloglog_dummy_md5 == $avtmd5){ // This seems to be a dummy avatar! + return false; + } + else { + $this->show($cachefilename); + return true; + } + } + return false; + } + + /** + * Caches an avatar file. + * + * @param string cache_file name of file used for caching + * @param string fContent content to be cached + * @param request req optional the request that produced this content (for logging) + */ + function cacheAvatar($eventData, $fContent, $req=null){ + + $cache_file = $this->getCacheFilePath($eventData); + $this->log("cacheAvatar: " . $cache_file); + + // Save image + @mkdir($this->getCacheDirectory()); + $fp = @fopen($cache_file, 'wb'); + if (!$fp) { + $this->log("! Error writing cache file $cache_file"); + if (file_exists($cache_file)) { + return $cache_file; + } + else { + return false; + } + } + fwrite($fp, $fContent); + fclose($fp); + + if (isset($req)){ + // Remember mime type + $mime_type = $req->getResponseHeader('content-type'); + $this->avatarConfiguration['mime-type'] = $mime_type; + } + return $cache_file; + } + + + + /** + * Return binary response for an image + */ + function show($filename) { + $this->log("show: $filename"); + if (!file_exists($filename)) { + header('X-Avatar: No-Image'); + return false; + } else { + header('X-Avatar: Found'); + } + $mime_type = null; + if (isset($this->avatarConfiguration['mime-type'])) { + $mime_type = $this->avatarConfiguration['mime-type']; + } + if (!isset($mime_type)) { + $size = @getimagesize($filename); + $mime_type = $size['mime']; + $this->avatarConfiguration['mime-type'] = $mime_type; + } + + // test wether this really is (at least declared as) an image! + // else deny it. + $mime_parts = explode('/', $mime_type); + if (count($mime_parts)!=2 || $mime_parts[0]!='image') { + return false; + } + + $fp = @fopen($filename, "rb"); + if ($fp) { + if (isset($this->avatarConfiguration['fetch_date'])) { + $filemtime = $this->avatarConfiguration['fetch_date']; + $this->log("Fetch date found: " . date("D, d M Y H:i:s T", $filemtime)); + } else { + $filemtime = filemtime($filename); + } + header("Content-type: $mime_type"); + header("Content-Length: ". filesize($filename)); + header("Date: " . date("D, d M Y H:i:s T")); + header("Last-Modified: " . date("D, d M Y H:i:s T", $filemtime), true); + if ($this->cache_seconds>0) { + $expires = $filemtime + $this->cache_seconds; + $expires_txt = date("D, d M Y H:i:s T",$expires); + header("Expires: $expires_txt". true); + // HTTP 1.1 + $max_age_seconds = $filemtime + $this->cache_seconds - time(); + header("Cache-Control: public, max-age=" . $max_age_seconds, true); // delta seconds + header("Pragma:", true); + } + fpassthru($fp); + fclose($fp); + } + return true; + } + + /** + * Generates an Avatar image from given parameters + * + * @param array default The default configuration evaluated + * @param string title the title for that image + * @return string the html code representing the Avatar + */ + function generateImageHtml($url, $title = null, $align = 'right', $addAlignClass = true, $cssClass = "comment_avatar"){ + + $default = $this->getDefaultImageConfiguration(); + + if (empty($title)){ + $title = 'Avatar'; + } + if (PLUGIN_EVENT_GRAVATAR_DEBUG) $title .= ' (Avatar Plugin V.' . PLUGIN_EVENT_GRAVATAR_VERSION . ' DEBUG)'; + + // set alignment by configuration + $cssAlign = ''; + if ($addAlignClass && ($align == 'right' || $align == 'left')) + $cssAlign = "avatar_$align"; + $alt = '*'; + if (serendipity_db_bool($this->get_config('autoralt', false))) { + $alt = $title; + } + return '' . $alt . ''; + } + + /** + * Just generates comments into the comment block. Used for debugging only! + */ + function generateComment(&$eventData, $comment){ + $eventData['comment'] = "-- $comment --
\n" . $eventData['comment']; + } + + /** + * Returns the avatar cache directory + */ + function getCacheDirectory(){ + global $serendipity; + if ($this->cache_dir === null) { + $this->cache_dir = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE . '/serendipity_event_avatar'; + } + return $this->cache_dir; + } + + /** + * Returns the Path of the avatar cache file by the given user data found in eventData + * If no relevant user data was found, null is returned. + * + */ + function getCacheFilePath($eventData){ + global $serendipity; + + $cache_filename = $this->getCacheFileName($eventData); + if (!isset($cache_filename)) { + return null; + } + return $this->getCacheDirectory() .'/' . $cache_filename;; + } + + /** + * Returns the URL of the cached avatar by the given user data found in eventData + * If no relevant user data was found, null is returned. + * + */ + function getCacheFileUrl($eventData){ + global $serendipity; + + $cache_filename = $this->getCacheFileName($eventData); + if (!isset($cache_filename)) { + return null; + } + return $serendipity['baseURL'] . '/' . PATH_SMARTY_COMPILE . '/serendipity_event_gravatar/' . $cache_filename; + } + + /** + * Returns a URL encoded and signed variable. + */ + function urlencode($url) { + $hash = md5($this->instance_id . $url); + return $hash . str_replace ('_', '%5F', urlencode($url)); + } + + function urldecode($url) { + $hash = substr($url, 0, 32); + $real_url = urldecode(substr($url, 32)); + + if ($hash == md5($this->instance_id . $real_url)) { + // Valid hash was found. + return $real_url; + } else { + // Invalid hash. + return ''; + } + } + + /** + * Returns only the name of the cached avatar by the given user data found in eventData + * If no relevant user data was found, null is returned. + * + */ + function getCacheFileName($eventData){ + global $serendipity; + + if (!isset($eventData['email']) && !isset($eventData['email_md5']) && !isset($eventData['url'])) { + return null; + } + $email_md5 = ''; + if (isset($eventData['email_md5'])) { + $email_md5 = $eventData['email_md5']; + } + else if (isset($eventData['email'])) { + $email_md5 = md5(strtolower($eventData['email'])); + } + + $author_md5= isset($eventData['author'])? md5($eventData['author']) : ''; + $url_md5 = isset($eventData['url'])? md5($eventData['url']) : '' ; + + return $url_md5 . '_' . $email_md5 . '_' . $author_md5; + } + + /** + * Builds an array of default image configuration + */ + function getDefaultImageConfiguration() { + global $serendipity; + + if ($this->defaultImageConfigurationdefault === null) { + $this->defaultImageConfigurationdefault = array( + 'defaultavatar' => ($this->get_config('defaultavatar')==''?'': $this->get_config('defaultavatar', '')), + 'size' => $this->get_config('size', '40'), + 'rating' => $this->get_config('rating', '-') + ); + } + return $this->defaultImageConfigurationdefault; + } + + function getPermaPluginPath() { + global $serendipity; + + // Get configured plugin path: + $pluginPath = 'plugin'; + if (isset($serendipity['permalinkPluginPath'])){ + $pluginPath = $serendipity['permalinkPluginPath']; + } + + return $pluginPath; + + } + + function log($message){ + if (!PLUGIN_EVENT_GRAVATAR_DEBUG) return; + $fp = fopen($this->getCacheDirectory() . '.log','a'); + fwrite($fp, $message . "\n"); + fclose($fp); + } +} + +/* vim: set sts=4 ts=4 expandtab : */ +?> diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/brow1.png b/plugins/serendipity_event_gravatar/wavatars/parts/brow1.png new file mode 100644 index 0000000000000000000000000000000000000000..15695e96aa8dd85a607b2ab2b1939f962e8d2d73 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1Tk+@4ng*Z{ zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^D%_wjUb45_&F_SQj81_d7G16Dg1 zhldMryY6ZJ!?p0g3s42a{2A7jGjIN70Wt$pWbUOqtAj*=KxCD~Rq2P!5Do)Feq?r; V-lYTcS=WF>JYD@<);T3K0RYeDF>U|= literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/brow2.png b/plugins/serendipity_event_gravatar/wavatars/parts/brow2.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc32bdf8cfa9ca773e0e8f1406b3cd3cba14255 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1+h8(hOc79s zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9xuHfn77*cWT?d^qLM+#&Pd_3tY z$lC07M`f|9h9-4im|}mH#!PCtdwJ(+nZ+o#G6CPE~)obL5En&htDB|Jvh9qSGJv z^ct=Xw2zYhY1`j-Ok%gFuFG}HbwWVb<-RsGd7o1v`PNnYqC(Z#+D-O5vpyvGoJpSR z82UdlqUYM;-c4KXt~WRzZ8H5O6C+Ru1H*wW-u*$B+2_CHeCoSpX0>B%K~&A&_PP7w zMFdgVorg!1+p74^)*PS^ zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^D%|K;i87*cWT?QKOr=0E|43-d!l zLJC^ET=)+fYFRKabvh_%PqcO74{UtE;laXm&~%1p_KgE+oFCMeyjPvP<^O-*bo1<4 zGc$RkcCYel=o6d2W^SlD>y>KRn)-Eq91Q=q*B;4wbTjoxaO$Sl9lsCW`nH1)XsPTO zrFGSRZ&V(6Y<}*&l3tbl#4VjWWNx0fe|Njk<3-7JVW~icAmDa)%g3%4`6q(% zzh$Q1ERU=`T(9bVJaX&Vx)1aDy3Q%TQ@VF6@l8coZSmezXGcG#l;DF`G8=5Z7xb*W xKBq+{_1v-c+xp*%_3v-1EL{XKl7XQ>>mFldxA@(Ph7~(NVxF#kF6*2UngH8aj-mhn literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/brow4.png b/plugins/serendipity_event_gravatar/wavatars/parts/brow4.png new file mode 100644 index 0000000000000000000000000000000000000000..6d29c401eeaec6d63392aa1cd6374fb480161de5 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1hvSP^kv33> zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9xZs_Ua7*cWT?d^sBhaE)NA9xFJ zurPHh98?fEp{g*!gGH#*K}kT^gN3Paj*Ef-hz3#|M_8B+?mxI&q_Lqi`g$D4{po)u zE#3Y4UhE~|>P)ZLiZ@TfXPk3>$@JpFosRc?UgGRNIZtmt->PQ*>&Mew&5R6EH+y5Q z^hEaX?ACc@wCQfbzYnW3fNqmGT=nE#`|F?fZ+~Apy4O`K>llxcb*%Wcei=UlyK;v6 zmtXij@X>LNlRk6a+A?Fe2T%(T{M&m?Iz8E{BgbuC)-hT4FlGIv+ z(!aV@R?C-9{CTPSrB~g~H)f&wh52Vb?Av>y_=(k~n5v1Jw@qDj?R)5|TMu$iOIJ)@ zwRk~z)kohsu6{u`jm_+D{Sg*CI*Hd-FA#8Ol40_%R0^u67zKRb6Mw<&;$Sv CU8Xbu literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/brow5.png b/plugins/serendipity_event_gravatar/wavatars/parts/brow5.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4f12bc4357dda279ab2e1fc6d5ad0401b5992b GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1M~G9SI}j+u zS>O>_%)sEM0K$x7wKMMl1zFM^eH|GXHuiJ>Nn{1`UwXPYhE&{odrQ}k*^!~`p{Iv~ zf`A7LQ{xi`4wY#vk&SB{lmt0gm^xh)1g6R`G`bYEbjdLUHa=B$HEEd?JL_bKjsGXL z*?(uw44r*8PjhST+1&f#^LyXPJ=<0urO(zN7bpIvK6|eL!;AdfldtXo7Yc#{BE)R<$|xhS4*bHU5dQ5#^ku0m9PIxW!vSB hM}I=J0m+1^wM+_@;^HhUmu`XtJzf1=);T3K0RVKggAD)x literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/brow6.png b/plugins/serendipity_event_gravatar/wavatars/parts/brow6.png new file mode 100644 index 0000000000000000000000000000000000000000..556c9ef7d4c6223c5f2f3211eefc829a48e7cfa5 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1M~-3M@hYGY zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DXz1-8qF{I+w+dGPW%#I?*K6+{k zii(kv__?0rano%K85sT_+_~f4DXYSSIo}oeDuj-&-Sl9tMMBXky&Ym#CE5PE1AWQB za3Oo;=LNTt0;3)7ObYsHkayN|o8lYdojV9r}ckXaz$;GT6-e~)vC&LJ^#jViCZKb8kP))zi? zwrJb3d`AD>tY_}lvVRUpcW-vdDqL;8`pO2b-g`2iq@?!SY$`mbwfL4qp}_G(neV&n zT(^}79xs+LzvsAbcFX$mvPZH@&P%#mCUnP3F0;IS!n)(AvyAt90ol`YI3YFz$@(vx X@zEM@QzmBb0*QIL`njxgN@xNAGflo+ literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/brow7.png b/plugins/serendipity_event_gravatar/wavatars/parts/brow7.png new file mode 100644 index 0000000000000000000000000000000000000000..314c1a22084579f37cabc82725c13f5e9a7cdb33 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1M|Z#9vK*ig zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DXozK(7F{I+w+uMd-%#I=r4@JE< zZn)sZ%DR5Sq3(!?Tijett>zzC#O66~_@Jc8B&MXT#MLF%lz&6eWy_4DP1%3!en>i* zy*VS68F$H~d82IXx4oQo1#^3e3NvlyOETYUG$o|kGhZ>RHR-LvQwz08tmvUc)0(U{#Lxh}IS zV^6PrUYZ&;8|Y;a__uzN;`0kjFP2E{%X|8DbN7oa*L?q9V)m)uYu6*Uc=-#vs=Qq{ z|3;Sx?{&Xk>AODu^Y53t+NEZ%`pR&*U+~-F*7$q=?6YdJ=Um_IRm}u3l7WG%hC%wC Uj$XmdKI;Vst0Op95v;Y7A literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/brow8.png b/plugins/serendipity_event_gravatar/wavatars/parts/brow8.png new file mode 100644 index 0000000000000000000000000000000000000000..2716f7ef6632d0b583d43311a9291b1a8a68e085 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1PdV$r%a=eQ z&H|6fVg?331rTNwtDSidD9DoT=` e>>@xWR`4M;Wf}vcaKp4hkhG_(pUXO@geCxfKq349 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/eyes1.png b/plugins/serendipity_event_gravatar/wavatars/parts/eyes1.png new file mode 100644 index 0000000000000000000000000000000000000000..831a572a736de26ccfcd7ffc6cbf43346f2dc82f GIT binary patch literal 941 zcmV;e15*5nP)8K(duyk000SaNLh0L08StP08StQ7JZrC00004XF*Lt006O%3;baP0009#NklWKJ{$A?LRlL<#u*X^9=R>gX1}8@B6&Z^PU~qI6FtD zTPEuA&Bw(89lQ6;F5J&_eXCcpcLncSrt70LYc93-h&Vec)(2wk*p6>U%%X#}Rc?GG z66m}CAhINa*i0V`B3eQ>uU!4>pME9~5Sw%J?P$Xq`wO9e{22P!MzU`T`Y^fn*mhQ? zj|veH(Te0WTduXND;M3DE{pNcU&K)VfH=DUfV-i@`YZgg?@ShpcJxDk#33HzU_6Yg zx~L|LZBi)kwD%sqtGJ>?xv;MU@}*o{ePM}D(dbc=6BCi|JXouNyqP{*h=_=Yh=_=m z64&VeWRsAs*vkyi{|ePSlH7 z)E|4QM5}}5s9Rg)Id$l;U+q&Oi&Zng(rf0QkqI_zr#6mqPcUhuk^kcH84NS6Z1{$0d!Sv7}jC}F@w+g zL~B_^;vzpCfUKjpIv$I`0t828*eL>@VL_|bHL_|bHL_|bHw9@?n`dN110}~F# P00000NkvXXu0mjfTu`pJ literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/eyes10.png b/plugins/serendipity_event_gravatar/wavatars/parts/eyes10.png new file mode 100644 index 0000000000000000000000000000000000000000..82c43974597ddf5a1d55e20520437b097a63b88f GIT binary patch literal 948 zcmV;l155mgP)rC0-v`=?jq#gb-b+mKqQ`U17^k3f zpixWn3kO%N6>j9Q>LtufSi0&RM<=YAolpfWlG~7#e%2d}N~L1GOOhFWk|gP<*XtRg zD895~hVQ0*EqBTDs@*dzGLsM?X05EO9G`7%c%Hv!d4|<$_3!3OmgTROXGl`{%H^_= z&1Qc=R|_G85OM`_Jn*wnC>XU`%}AwEnji?zpfe4TV~jRE`WZ)2lzpe(mz!YPA6r{n z7e11xs_JRC+cHSiMv)4BfOy|YD%fB>;1TNqRSak`AP84gkokZJA%qY@=!O#n;dwfp zKBlKV=;@C{BGG})G(-;C@AEwWkOn(X6h#d>-!Pz}DBs7OmnoG>jt(F({gGeS^|^7+ z`~7}Li(@umyxZ+2n$6~ge{64W4;)Qs23f_A>0i<*c5=C#PR9+<3vi_U^`W!<6A*&w zRm^%oFs=z0XFVVo*945S9uSOc0>)Vn2*zx{TdW6MWIZ4lvjKyw2fWLAKrlWt6UFBI zp4Q3WBXn4V5JCtcgb+dqq5tz*pT*U9p1# W&%~^~) zT08*!qf)8Vu5ILwLOuxCl@9}CVn^2}lgYPg$q4`e00000aEgp{eHiY>NTpIQjC7SuMHzNc8RVT9h8Yae$b*XQ zYQ-yq$4WnsX%*Dj&vG=>GxlJKW?zop{M5dgYPEWa7Sri;z8cx-N~JPuS_Ol_;4fOt z{QP`=xGV_5IxRjHi|KAbD&-uEL?X%tRS#Dpk$5>?hMbobt@wC6{=>*QXyht3+*4(= zHw*v(00000000000002~1E!9uTbM(Qq2Cu!c7PQG;eNm0&+qT=&z4H1V+Yb#S66#Z zr?bVf?30<9nP-JU;ov;vIP(T1JH<7d&3EN;`P$yz-c;KQhrPIbUM9bRgP&=6<)^?LHJm(Yv|1>CjBdFw)xE+5w6C x!g1Uqa!=YiFF61J00000000000000?_Zz@F$o{_KW%&RA002ovPDHLkV1jg2o3sD` literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/eyes12.png b/plugins/serendipity_event_gravatar/wavatars/parts/eyes12.png new file mode 100644 index 0000000000000000000000000000000000000000..520abe11cb8dceba86445d7b6e283051ada759fb GIT binary patch literal 860 zcmV-i1Ec(jP)0nRZtM$z{po#Grmo`1wPx%W_%_4mND%($yg z&i#d!Z;f&shq=oqCnwA_&0^epa&NII?{XrMxVW`qCX;#IXf&?RjBVTO4sl?OSeC^+ zC*JnFG;#Y+PfvZH-+d-1Vam<)hviKe3sWAHJl+Ux>wM0$c&9$3(;mvzTuwM<<(Wi6{e*OV zH;3iNL)i+wUQhZas;XY6r8G^O$ky+4I-woFTZuK%G|}d*6WAA%bTcN8!aK!EfSIZQ zvti4lY$DAA5-P``tm2|#DJtQi%p?_95h~{qGn4=T00000000000000GiSV-O@y3W0 zWmRADMqg|gSF6>_GKSG;be(Dmr5lk=%saVaPUXh^>=Z{h}$F6 zG{5Za?b)qXOS(hNW|Qsi?%JtTimDuU)+okWF!-hNif{NgMR=N~(`hT2OjeZTi^*0I m0{{R30000000000?uUPx0!+BBCM+ue0000XCE+ literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/eyes13.png b/plugins/serendipity_event_gravatar/wavatars/parts/eyes13.png new file mode 100644 index 0000000000000000000000000000000000000000..471026a7f66443eacb1d23f9c40287a9e4d39f8d GIT binary patch literal 929 zcmV;S177@zP)92?g0-@ei(2KBFQuZR~MQ^N#pfG|0 zA)@G+h?Jg$s9qFh8Wl!L5k79t*)~u2Yc1At_j-2UDJ-@r4lQZv(lMe zaqH4$sY~R`E1HVMV_zl~xsX$8MtVTL{(cGt1CxfGcb@GKbsq1{#CVjU&ItNO4&+if z>#>3QYKuyS_HExGx^LeRg9D#t*9GWhQ`I>IXUyW!25k|8SoDFu&}ZU5?}&(qh=_=Y zh=_=Yh=_wX2`Ne_Wm#>u8R;c(gI4IWT6ig#G zwm41~%oFpKIX^bD23c-b-^afGv|avpZ+b0GSJn{rvBhz^V4j$7N;}m*Mp~U`R>HP)$;s6OY_btqeo20niwA!t-JSz z^pEQ#o?Vh8cLVCt4((F~^T2#CFX^>93p|+(n@Y>?*A#fBkL*7Xe)`~{h(sc$14f(Y zPkO|$)`L;R)|Zq%)B9?Y%-w`I#G@bdH{aYCC&r6dj6c~0lVN%np0Bm;+(#(~QH$N~=n4h`FT&w4zFQvYcevDk$NW60c=t3q9F7X7%T*hRgtypi8Xliu zo%H+hm;{TaY0=mIQTu|E5fKp)5fKp)5fKp)5y|=iau2&o%$FdgVorgzQMe)6cMLbZ5 zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9x-st=2zvIP-Gv6~+ zJd)Ief8RB+4t@JPVXbEO-;I<1Ot;d#oHuouP1z)a>zPN&l+D9dUrm%gUbvk}j)g(1 zud1uqws*m$+diR-)I6QUSs4ywY`dMSI(b>9D9ge0-!_5gHu+SoTXA2*F|#HA^wUoo z6Es#&dRp*pZrb+Sp8AV)yx&SM2(kxyhk@ZmqEXF4>y%5+zg>|}jr6O%KRvEv#=M`l zUoOtuWSP1#LMACgy`pp8OS#RC3&ocHTxKY#e#4xhrZ?t_OW43-g1zbr>mdKI;Vst0B9!EtpET3 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/eyes3.png b/plugins/serendipity_event_gravatar/wavatars/parts/eyes3.png new file mode 100644 index 0000000000000000000000000000000000000000..e648a4bb09220cab5b5721f517ee850351b49ef2 GIT binary patch literal 883 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 IM6N<$f)aMK5C8xG literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/eyes7.png b/plugins/serendipity_event_gravatar/wavatars/parts/eyes7.png new file mode 100644 index 0000000000000000000000000000000000000000..7df55aed4bee0d0f7d154ed1ce9692baa2b8f6cb GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgzQjqzDQl_*e% zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9>>wCI5hE&{odytVA$UC&)yMHb} ey9khp6?{ldna02<+%T;WB<<FdgVorgz+pLgB){UCYH z0*}aI1_nO`5M~ssop}!^$dc~p>&U>cv7h@-A}a#}Q+ji_9zHkU->xro(s)}$ybR|iFUw4^nmftaH2BiXFTcNr zdmGKH*}gjM$cL=Ot6rV{`mbnb&DPavyB6wgzZa<^cK-VnpwH$!*jPM4fn#ZfO`T+~ zTm84+f7c&>HY00mR7&vPIQ8RCW=v9fDQ>vnzH$7`lQRoH@MTTD{`zlX$n(m7yXVRP z^#j43(m7X|SsXvGGBuhVFPybVqks0w3hz+w$42yYG6xPV-yt{N~w=Me|pmOeso!a4^B)%@di8dzZMG zO7SL{ACFlWFe8s&=k%vDd3+FSA>@Pl z@9I}}pMTC-60~yXy!xV3b!#H3&K>Rw(D5B~N$Jm!V8;l|iILH5X=VR-(R(eU02W>e;3e~`GRtDnm{r-UW|IQ>Wa literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/eyes9.png b/plugins/serendipity_event_gravatar/wavatars/parts/eyes9.png new file mode 100644 index 0000000000000000000000000000000000000000..70c8191f9b2c6a07fbd7774b9be4df270c766cf7 GIT binary patch literal 709 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+U%z_&zb!x^ z&H|6fVg?331rTNwtDSidD9DoT=N8M#D2R73e?h9HG9dcUtavXr6bn8 zdv$8$wD*!%buRAy`F4-usu(xzLk~X`mzHf^4Ge;U%O7n1PgxTv(z@cSds$JMh0e31 zy=;8!kIQ!7zkTMStwZ1Ad#|p>>Rp$%-r3x7G)aET!%H5MTpoS=vAebi7$hL@TxqVK z_v?O>EB|*-FDt%cD%Jb-@1(4)UT>bQcvN}Ma;~3wnT-Tb$J{%PU#j-@%9dNnCYh(V zEp2yyTUNdJTGrNSKu!DsB1h$4Z;e{}?QUM5)!SdEo)(3#PP{zr`^lLHqwYG~{i)mc z*lx4V>Yn3|e}Aoty{XO)u^UQWiCH0RXc#+Z#r^%-QoUVIi)PLU)Di1c;8@>(vtMlW z{2eovX`DJ7ppl}r`sp0M=aZAaEqFVdQ&MBb@0OjmRpa1{> literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/fade1.png b/plugins/serendipity_event_gravatar/wavatars/parts/fade1.png new file mode 100644 index 0000000000000000000000000000000000000000..66eadd1ddf34bfcbe0ddea5677ccfad4753c2570 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorjlE&)`PpgBYL? zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DXy~WeTF{I+w+gTTV4?76BbhczD zlwPP8HF02k!mL@-z$COFA$)?X@p9Su_a}c!UwiNDJ4^B7?XM5THvWG4Ic)ETob@mE zUwHo`X6J_uPyR;iop7!~>z8%$%9x0yd!}7$TDtAb)|Bdl;pGR_(+`$z=zrI=wE9N< zv_CKPeu(CunDl+albXY_dOr`xemENYK_u7WiS^Ulkr#SvdCE02_8RvHs5pii*d45J zjI!CQpgS+lVBgVe%f*yg*1A6sY`UiW^&QJ~<^RsxkLWtSF4i;8?yldZn#XzU|Eg|( zgSZJ|{`wx>f^Wo9*g_qJTsA~ckemY*TrR%k=w_KWM@PrI>a!B^kuf=wSel{ymC zXaAW0WP5bd=_B*EUFx*YS?b)N#G-M?HlT%5MA1QT+XfC{4W|aBoJ2vjfEEVV8;6v9 z7H}|jZD@6!;ULH)lE~d{&eDb;p*%yV$a zrAYAd;xQNucXntuBKl`5|7zuJD<4{^TS=|lwDL_WKP0~BAH4s)mB&_gtt?u(Yvold z+r*mW;$K+nwv{W^wkB5pmNj)3{k@f6`Nvf&uj#+rDlw)_v*<(@A(K7P)? zcl@|c)4SPh_E)}m&F6P>e*A(lb&tDmiTDd^T=DsZP;ke<1=A0Ju{(d4_~4bi9p8j+ z{bTog;=8xfFhzURPh1dM(j=m-_cR#cI z*2)uKc-zYNV)yRCH>~X^zW6O)_zh!E^46VI-na5^(A;f*W}Mv(j|nWZ;m7{U7rx|k z-EVaQ%Pbk!YrweV-;NmX`0npm!!=<1j(n^LTXzQeHu0mx^ z_L+BVI8po_(5@NfzLhzn6J;+%kzAJ;l_-3}dsP0!7dQO6D@OH_AGpCcNPJ?=ynSE= z5Ac9DtbD_~-LoYT@rlnlU3g1|wYG}06(h1<`2`njstZ?fnykdpd>Y9UOum?bCgj5KvLHls+E~ZTi6Qp{NS^>@tpeei`WZ+p zzmQn|$bw3RPjPGlUqwgnxlv;1k|5U9PY@6MH!8egWixsn*2T?^HOUTS3yRTLGIFl~ znJC(#j>N<^%!!Dg{s6B}?7S7f-d5dn)RUN4k-d_JpDg3`lAhxl<)kAq7b0^dLijCk zSQ*!ybR@n&B0xk!>xL06fWsU9?MmHKiDNH7#Azjsi2-hum2cs?E7XB#R)Ao~oXq(* z?T5E4H*nt(HF`egKFrQuq}+nY5U@=29OOEY%FSLZOAbV|*NOkAX&C5Nl+QM.m1 zLP4NYd@dj2m~tly?*JKQEk=y_A~`AQsWlBAX7Diuyh;OyJx>_9u}c z1wn2UNG&x0-2=!7phRl|fD1zem;~Zd1GGRQn>B!}X_$93K%Hi=rWey{*2K4t@hKC& zwE}5@)h5@b#-xh*P@C2==@Rxk-XEVKL+Bbn>V0H(0g5cjhU_6Q%bZ&Th5nrYoCQ=f zD`3&&8l(oO2LVYDnlW(~bQ?-EH0#=sjRO`_+;xs(h##pD35$u>Jy z{gQ<>xY_`v$8d@IN~Y8zJ9VrB*g?xWamhn;wK3btBh&X-_}d)s6Rav zpfWcXV0u*90g&2wRxfp3e9Cy~EstQP`g*Tx3rqrY33x zI{++xqm@?FpGOD-TQKJ(hdMNWZ!a~qW(wbU!~0KFEDRXDF>Xf2mh|b%tt$k0r$B9} z9{``VVEy7t{tjSW2+m_prz8ZY0a`3(=Oh+;mU$6iGZA2=07_$E@8~)t>Q^gMScHgVsz=k0SL*fJp(&fjhO}G=mYyh(!;eHOyI~&&;@Yp2!|8wt?v3PWvG~1pN<# z!x|RNyor+(51bd-o|%b!^NQ~k=gmaJnVbdG@<*!{v;d;-jR~kD9*aTC+!nJIiyENz zy&N!|Gb^t(@A;%Qw`NfT)a*rmip=#|{W!kX0njM2v1ldg7phW99mx05iiYW{Mu1wz z0M%wDWnMf_1;BcO3dR7n{Lum^<&!pP7MNg)S|1)z1c~Ohn&aq~7}YsoCz0i*eIOcW zLw%ED2NstD#P4)O*AXBk2fZGaTN~4WHJi9Z(_0PIrnA6U5&_JC)4=_59>AG%Zl-?I`Ai}fJ5;lbj_8@Bmr!$Jwdo`vWXVwU zF4Q&Vl50*a;)ROuk4NU|z39vo~g5oE(5AP|Ry#8w^<40l=x91&_&rnRVjDhgjyCQ=h%5y&1Qo zs=*4~x(=h@L6_)mMJx_lzzgF6(L*lLAGDSsa0SX_kTL*k!}reVuof{X04V?_50K!v zWRE)X$E5|(>oRF@m+JC+3ps;z5^I6RoJiAfq|rXqk^SW4iz z)a9~Lz1-(mhVKF<$+_pvNXgakF=T$)(d##Md51Yw<&|xzyrP6gcpWm z$t)?%Jrb>#DIpJAQc+GTB~5#NBgg20-p2^uryu7MYW40kiA4Pnj>ywF4oMqJm~M+T z>Ub`Ab%E%8hTcxBg zcU^*5J%29*O9;yHGWIi`1CP6Kn&+W-9FbAlVhcYrvI^I8_od`p1Zy() z)L$Oe9yzw-?R9=8?d7YWuiL~;J~E;U@5ioJNO)pMiq}~o?0ul5LpUdAzwg-Z+)5jm zIfA@VR<0`@M7&RsN(lDOjp8DaPe^XUj>PQMF_Pt#715|TrHt{urLsP&v(`r3Pwk?8 zqC80!LFiEyVb@c3XsAPFo389sE;KCp+B24GE$m{-S%bH$jyM)R?1j_TaC{+LG3+s_r z4hUS3ozpZR?QIrm|F55RxFIf|&_*GO14NFvDdc_W9~XI{J;;Gk3G(&xHs@G8&>Ky2 zUgweL5m?gwol0N{iPjvqgv3b%=0Y{{I8C0{LccVDQM)Qf;-s+F1PW tc`hnTF6DVv;XH*vJf72KJuzGM{09T6AIhJn1Y-aI002ovPDHLkV1ik)rI`Q# literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/fade3.png b/plugins/serendipity_event_gravatar/wavatars/parts/fade3.png new file mode 100644 index 0000000000000000000000000000000000000000..98393c238bd36e17413e7e8ea1b06d26c9285838 GIT binary patch literal 1210 zcmV;r1V#IaP)LI?X}UF6A>um527_(9NtwGe;o}^@lt#OJzka4^`pO;G z*RMPG!W%j@eMB8*2{~SN6HBbaC~5MKE*iB zoD1(cwcA>kYfA0=hGR}5fKFcc4i{i%HWeE?Yh;Dj;osy6nngFIRsctG6J_v6ow)p`*8z-IhI4KXSf-yhtLp1%GEg#a1sRTmMK!KlFBy= z7o(7g3N#7q#me0hfmuaZpha;16F6JBYsK=Zd@WY)N=RWV(z1L~gh^4m%Oypk=u5+L zsOTtPi_%>vvPXek6z-ntVJXY8s(rGM>+T073;`NQo@&`xQwnAULeQJ5` z2YwwpCw*Tf8$8x1wKnQIW?)mL64@yOyHX41uz{|q(HS~wRo&;_;Fz}X|U(k$*) zhC+(nP|GpUMQxOpndY$yN#c!K=uQ@DFYZC@y4y1E>w*pJMQzk5d``0$mpZhDM#Kz@ zAy|{zHDyHNT-HDhwJXDjs8JNfR@8FP$r^?coF_fCTq9t(%XVV>Oj32L(#G~Rqo`G3 zCjY+f!R%sNi@gs9x}-Nou`7Bh1l`cfL9i>mxg_aMZwx_K^yU!kPH!qnT+mBV?1tVH zf-dOgAlQ}OFiG6eOCjin-W-D6>BULnl3q@dbZ;WKdvUii#A#T&?lMIgMuJ;ra+ zmfzBm>=0A?xwzDk)EGD#gDvUJ4lPqLSd-q|oSK|bw-~>PrmFb*+T*w4={~$ybNu!Y z7)8#mYmMKy1NH2r-+KJ^n1o4?bHH-^ru`}+dacFy?J?!!ON<;G@IA>laZHN$p33`s z$QIv^li0#BGs8w91OW63ntRz$V_dM=QFihDIE7sqHVPqB1oj4P7}?<_@@pfd79pt! z>>VjX5MtTJxJ$1VvMt(}AtI#~A=Yh-XV9w1wrFGArdJEHHEqmLky48gt2V|nXjNrv z+8FQY)r9PlHfF>~sYZyljqwax6WJwgjQ8|vO17kp88K3-6H?m7cm}PhY)KpAJ-xb+ z&1qvsjFe`CNZT0CpmmYWX=A*nS5LCnR2ws5q_iLeo~%_mcL2CXZXPXCT7h;t$B96%pjpVqPvWs6Zc5a^QPN8*TLM}ZNZiJFjucDK z*wMu~SL=IW4}|1EQ>8A*AL;Qnu57dDqCg8H@Haf(RwKGnYc_>7PPa;3%jhZs4@clA zsaqquq@bM|Y44A>)vRY>T`Ss!JwD!6GrCfsi3#xZcw4RLvH~qz1ABnxs-8)8T`rgB Y4*>B;#5cWQg#Z8m07*qoM6N<$g5d`}O#lD@ literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/fade4.png b/plugins/serendipity_event_gravatar/wavatars/parts/fade4.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea6a155f928a110b81ba323b5d9365d3bd4c03a GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVokxIImz8fG<1C;M zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^D%*Y|XB45_&F_8=oKkauXocmG^| eb`c;GEBKI_GL3;zxM5l$NZQlY&t;ucLK6VMs31fD literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mask1.png b/plugins/serendipity_event_gravatar/wavatars/parts/mask1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd471062d0de32bcf8386afaf35bd7d363268848 GIT binary patch literal 1865 zcmV-P2e$Z$P)EC1 zo}HatQ3ML<@)n3B?Uz_vqW!KF)H66OESqO#WkpxJsi~>UDvVcsRH`g-b8}O-(89uk zHIAmWPFzflj*ebwP=kYmsK%Jy4NRSk%pcD#u^nd3iZIQ?rbC z?>5=3Fjcmry4A+I6$k{bG@Ff$4Sd+IyiMif5=J#d&d<*!T9H`!$;rua@6-Ds3OC1X z^ze`y z(J~A=VE8ACp>2xVAVFynkZ9ob^ zimLeJ3W9E&mc?FUgJIiamq3Ff*!#iJR{ z(%+EIArUqI3(|;45g;lC~9kK zk!T+mW-nj9Y@eK*B zklRpW8J_DZ5a(Xkt#?7f>Y@pVeJa9w6wzoDpIOQzuXhhI@Y(T(y6#CgOHf$#Y6vp< zFs(E;HfAJ`JG#5O*~D2FG0-PHJzWxsU@$1%y?fVq>jSD5x4%L{*#WRqrlh18S1~r$ zP)ImG>FDT)d7aq?=jP^w6C4>~ukmkYFP4;9uxK#j_w?Q*pNnKhln{tdSikAMi!(Db z$^QPn5Q4TgFb@t6mPC+K+xkzs?60$u)A-)z$cn`%dKytgo+gpYG4h z%#ebDf(~BFt`7_ha3j~%)rIY5mTPr@+{WVKV#nn2^71gN=1NXO5+@R5d3o6~vHAIV zdGA`4;V$4I?_pM1Ss6Dp0K)*v%gZUT0@sP@kbNjA!I?N^zt}8-vk5Bve6 z`M;3xNEdg;6JBIPfSdZNF>5-`Gp9F!{o(_7u2wro_VdeQ=_4W`w&02w6t(H zm=W;cYE4ZIU3=^i17BOhfT#iBWo2dZYAz9gl~-6;NPX0`UfW0ylSnZ3glVDy-P4lN zD*5=)oq{M!a?;-3?zL?!p}xMJw#ZT^`a2DMJkH67U2#+2;dJDedTTaM!AjXK1@$qr5dm&d~gqNgj zUAi7tcD}m0>b1VE04M5_5>V(GetGcVf!BJv3iU9-j9G)29=t$yDG2`&2VV8S{H+A6 zXyg|Q=zAaZT{9|g+7ck_3-lx2X5%5!($b`&q9W9{leg^9t5>hQ?qNcJV?5~lj~Sy_ zItr`(?~B_EwHu=m4ZGXz?vFNMrIA=MV0dR|$7|h$02c><6EkJ47;p<#9$xDv1Pu)h zn5~#8Yh@bq5SsQkw|yMMrCn-jD(d?I==rlzc`MVHLC6A?m6cxW=qmE_^D$d7V?4_s zYW&XD)|S^Z4Og(Vv_xG3?t!SWMT?7zUhB&h>OVH(NB0lZsShE;!^2+d%?0ps6t)wi zH6nKBGahk+UIC-?a&vRhc&4T-ZW*!>GoDeRBGA#%LA$Iw0iQOoj)dHZ3Fe8}*;(pT zGQDLb8UskMv9Zx>TU`LVYE@MgHC&fN{ltJM-Yz`QOooPrJTY2tZ!b04De)@Gn3FN_ zt-XvN@feC5^GGxp{#`AsBB;^kiO9FAV1uSX`V2m9NtZ!Fq^+$@J_E74yDJA3(HM5j z@%#4nw(PfPZf>SVqCSk@pjbT-;Z^hD!-o$aK6v3jQH3mIr|H3800000NkvXXu0mjf DUtEG# literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mask10.png b/plugins/serendipity_event_gravatar/wavatars/parts/mask10.png new file mode 100644 index 0000000000000000000000000000000000000000..458cf4cf0af9191a5b067cd64a202ce64d7be6a5 GIT binary patch literal 2422 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 OX7F_Nb6Mw<&;$S~!Bc$z literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mask3.png b/plugins/serendipity_event_gravatar/wavatars/parts/mask3.png new file mode 100644 index 0000000000000000000000000000000000000000..68d0c0c1d1f44a1179d25c621b403a10816819c3 GIT binary patch literal 1895 zcmV-t2blPYP)My}000SaNLh0L08StP08StQ7JZrC00004XF*Lt006O%3;baP000K|NkleB9LGoZuRE@;?m`5?2p+T;$U(^^5(zmJOdxnsu!ly}oT5gll|sy=w3nEg zLrVfpsgwkAD6O}8Fr@)2g=(?X7D_cu&=L!))n<3qb+_B!S2nV{&g{OKee-5*=L53t z%$v90-~0c2e@2oFXK86E0q~i6y(sky0%Sf|MBuYH`CV2Dl=85xC|hi)u@*~=6sJ7Z zs}ftUCSwYTL=si2eLi0#H30rEEiK(SG)m3dOv?{q?CI%=s|D)n>WZbMqgt$)g(4@1 z0UtkpeB`FmwF1TC@r02m_{=As3yCby{Z^(}g27-y3+wCa+A2RQisgZ>wdjnjS@q_f zJ9jjhJU%|IZn7TJGn){_DnP~KBbLZm!&w-BTEnYE)`m`&<*zauXk62!s=vQKs#ch< zUAwlc_MB3|w$U>&mLH`uZKsd4jv>utDyYk>ktLHLMt#)JiZ>@FCgPeZaSEfOqer{1 zii(P-dL#7v{XZzCq2Bf|wSi#nA6ZF@(CKvUX^o(yq$HH4HZy=$vzgjMZYBe_+r7{F zFeTBE;*wVvpfrNyZnA}iCcIwnr<0SD=yg6bTT3dZ$)kuUwYs>D`=+R(HgH!<7lH7G zi=y6gVQpSD#x~SBESw7pja#A@4kT^oV(2fUtN*h`5rHlE3sg zRJ*&o$nv0(+NztHnsR1oE>4{~g)Be8JJmj%nVHE~+ac4_)0nFnXZdXwpClZKL_9W| zjjPe|cpNRjOY(QhvW3g$lQf<`e?CGHa2E#TDZ*g()U}vB%%P{gVS|A3!*)(LGA6#8s{nqI04F-cV z`8+Rc-6^I8tXfI=dVpBFFiK!@B$FT11pH`}z(64IJ&$5i4S#|+h*Q$CaFdPB&Q9(M z5hoXMz~}Ql=Pl6d^{#RgNSx*^P~yE3KQJ)BZOwRic$j&+kA;PWg@uKM#j&N+?RIbC z(`+HfiN?~>(v|l1_VCu$*1^ybD{A;o1MsJ~Z??cfM5aXh5{tN)rO5{F*VNR65MC;@ z1z*uP9F8GbmLu47t%u}h?FhxwZ?-KWIZHgPp8MelWYcQe0+;5c*T%9SYD`?i!L@ic>jZalYL79tpY zQ_uV>Yno_%D^ycOMaAsq=B8UfK@bkMsM7c_M!t0eeO+OBM(aBe7O-RK`t|Gom~E^P zT)lcVPF44|#F%)xA>Z<4u6euT2Alz${S}p27iw#3g`Oohn&gQbwpWOypx1r*o&K7r zI=^=A+&NL1W*B2*W76E*+~?HxeIW98U3R;DKi~I1m<{F+lP@JQWq|v}nKNg&o-P&* zj_OEeuKLli=DYj%@0*>A9PAayK8zWD=S+s)HM>(?wVfC(qE#0|IV77 hKo%Aj78Vu<{0p<|3eF82q7?uD002ovPDHLkV1m$6o?id} literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mask4.png b/plugins/serendipity_event_gravatar/wavatars/parts/mask4.png new file mode 100644 index 0000000000000000000000000000000000000000..842a505da03a607dd35759b5d1c9388f18666c52 GIT binary patch literal 1210 zcmV;r1V#IaP)>Fb~Y@fkb}$P8H0%yQO#9kX{n8V-A)t)@=gxa zDK-d#`y9mr;*j&EF@wv?OZj&Ly8L}% zECA@qc`0Rw>w65)I_smXJLwslSJ3x3pfmnXw3sl$3mH+?*4EyXR?IP%Y@wgAi67th zGgCY5bJRtjik~{Iz||35!^7$4X%oYBa^cnj`dI%ag#&mqQ45*8Q5g=d*l`?FW$>of z+v!C{nV@O=7b~1dKwzjMB&;H$DC+QzleyR|qtpFRMmY4I`+j$Kw^jC_|AmC*Oc7vZ zqaxS@c|)Sp`dN86jBGg4YRj6C=(K*&9!@kQ^aG8B{4l2$vl-Ok*0>advXxv4j_m>YN17885SyKUT!dl-f{ zXp`Mi5s+sO;I=;EIPR(lm)t<%-m4U9eWT1 z(-Hx0+ecCKw9Elxmh-iXGTTvg%_B4|d@B+z*Nr||inQOfwBA^EE_o;qhshI8Yx@me z%vyVSEE;KE%2?DMPR63q9wGiVrIq$XELzcFWmzkW*{ zn^lQ>dwVg8ePP<$OiHv;UP|JN{r!DwFDzEeOK|}~P0N~QXJ_Yr7UWqeaeI3k-g&2{ zrASMJv+m>-;}izq!!QJSho%Rmn?o3QN%9U%55^P+MIge000SaNLh0L08StP08StQ7JZrC00004XF*Lt006O%3;baP000C5Nkl+cOijjP;vgY>&>o)eYs`-qx zisQ66ep7i!FAF1kTxsucA94*?jyvWxjZBJDUgB5jm6EK>I^ffrX0T%zNT&xLC-c z_J@iBt1-oMnE8;Z;bI}j+9A?_C8tg}qalxuj--w`fshmJP#joSV}?TwIUEj``ccx! zYiwo$%>$F+v_hVrpBpuo1QrO+hEobj5Cq{S?k+ij=vIxhAs;%tsP~gFiLZ-2m)67) z2k~<%X5$@&WLLp8i-UDnCeB#Q>MVFRy9yD5RR$QhSB%+n!QxQlD%qMvncj?7WM4+c z9!KeRy$-!zPkK>Rq{XppxI!)JbhkW{oh==E9I2-~RDipjIsr{voalx#Y7wh>8Ck^Z z4Fc6_^#xWqKaGGRPaVjR`AnGzMYMpGEt2%)9_D5hF+qs=UMIK2+khk>` z**x|^SKii2WCOm!lE;A^VtZVrl@~h_uWXO6wDLAyBKwMcGA(aoC4#)m%gdttJ?=9giRJq4?(P};@efu_Oo3s&UjH$jPCLb`5eHi$mcUZT<6ug}5LhaC947Hs zBvI>cMsx*sYPH(e`F!5AEkp%&V!4^kX7JaN$`W-1cET{cUMv=mY>UuASE8!GjgZID zkyw%4z}ql+0L?gk#Z%w+;h$};w&_)=R6yQi+dGpW2*PFl0z@oS;P!~gJOBUy07*qoM6N<$ Ef+S-a;{X5v literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mask6.png b/plugins/serendipity_event_gravatar/wavatars/parts/mask6.png new file mode 100644 index 0000000000000000000000000000000000000000..76c60805cd0c23ecb50bf58ce60176d49c930201 GIT binary patch literal 969 zcmV;)12+7LP)1wT-!LPS$>a&Fm{L*MVp2s_i{%y_ z4u{`$3ikW` EXUhjuWv2M5fCD)^DQK@3GMU{$il#)7~2=ST!m@*Y5PITgq$s5N0&u;LnuR+MR{`uS-LdJ3qlpTG|JrP0#(WrVKjAp(9e= z0tpQV3W)^=0*MV*2vRI!Ou)tIbUGiT;lv|~Nw_%C7wCIw$mMeR&m`PzHhWgS%%&i< z;7malf{U|StxzC!78=GNLE)ewQQ)8;QQh;v)9YEkZ7! zP%J{&L$ipn`~2&(Wl)X5k(deBtpvopGs02Z9Cw;JZ{b~9VpT9Phipl<k>)Gb5$ZKd9Fz$DbE#&q~%eU=!86~5}lGqO`?<#{F1mOL*c+Lm`A@o+fU_Mw#B zZbw4iNn-Ty`E)!UZF`Z5xMNq{AGnE}FB1i>b00000NkvXXu0mjf%&E8B literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mask7.png b/plugins/serendipity_event_gravatar/wavatars/parts/mask7.png new file mode 100644 index 0000000000000000000000000000000000000000..7853634d94d2c064b8b44fd33ce4e6ed22df25fa GIT binary patch literal 822 zcmV-61Ihe}P)8E9+b?m(~u( zU^<2%`llvl;rMSY5S7v&Ud8S-&=DkeZl^B` z??Y5eF%wYW78%$UMv>Jz9;ou zXgllmnvPTX7n|rn&i5igpSe%$U{F$2R7_G-RSWE5Gn(ZL0Shlm>^>Zmu--#1(!{b zsRx&AkhuldL9>C5MUq(Fc1V72m%ZQ0S1Bq13`d+AizLa0a`ux92-tQIRTD~qBzoe$e{*F z{i6OI4u^gZt@}ccV$&imtq0t#p?*+*%pVcYJ;>|z8Yj5igQV+yv}7@QaJdDUY;dUu znN4u11(|Jdv4b2;aIPRn%B!>JHMrma000b=ze~Q?Lq)zvB>(^b07*qoM6N<$f+4VN A1^@s6 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mask8.png b/plugins/serendipity_event_gravatar/wavatars/parts/mask8.png new file mode 100644 index 0000000000000000000000000000000000000000..f44437ec05f95c69a62414d4b2bc8a6d16eb2736 GIT binary patch literal 1586 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 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth1.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth1.png new file mode 100644 index 0000000000000000000000000000000000000000..1e50574db742af2dd7510330b6997a237a170872 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+)v|QT;(VYG zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^D%KkVt^7*cWT?QO+8CP#_3hq(qX zzA?<;Vo_i5lF@=|60<^9p-jW#0tTH$V!cYG8v8sIB7-k3O^o_hImtZI{D03Z!P_Pb zC7&mmWyV$uG`Jgk$7e=W3otP3(s=*0XsLGov!b=y@1NDzZq3ervG|(-&_;#>zV|L` z$zC!$dwIpTfW4A3ATbbVuumyyHxUH+&Ii=><&NY-4f#NZi3QytLp)vmT-G@yGywn>8E~rr literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth10.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth10.png new file mode 100644 index 0000000000000000000000000000000000000000..fc30bdb46a689313d62669b89b051df338bc6b08 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+gY|vr!lghV z&H|6fVg?331rTNwtDSidD9DoT=%8My1R$BxvNipz0UAl{{K{S=0fnnOjzx;1!vI8|UoKf9vUYv8) zmkGoHfdf6G6&7 MUHx3vIVCg!0R6H?-v9sr literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth11.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth11.png new file mode 100644 index 0000000000000000000000000000000000000000..4edb73899be468db6b980f176aaa23b0aaa0b331 GIT binary patch literal 962 zcmV;z13mnSP)ON90%~@M2egQg+v%CL)$cI!)&@abSh~W9a!tqu54Y@#G#8x|AHbd1-0sN2yf0Gm6a#0ROOIkB1lfTa8-j zK6iUZGx$6#RXNvPc#6$rA000000072;q9_gN^k-FJ3&s2?EJ0b8yUz9X zI_KAqzAwdWaE;B=$m{j;oyIc3=ksj|OR!KVyx=|6#)HM$+1Ys}EJ5$(VkVus+n6T?BAt$+giAuEt_9?&Mfo z>htl+6Vr1z9Ggz3Q(IqO*E)ZuV9(h)sym*Vnu=U|VgLXD0000000000000000AOf# zcD9+z<+`ql(O)HFbmh#TD{IWw_Zyex=XSdbqULPspEw6;Hk*>wdVaSRO1!IHU+%ST z*!q6svivB|2~l$vx&i40{uYf!MTQiP@@v-X^|zwp3BTK&*XylCB9X~TrE{vK9E{$KOJib#te#$E>dW$A@|gv;Gw4nBpB# z+z%B0@pVq-rra`ho|fmd$AswdeyvuUpsyO1!^6XNeu|=$Wm&G-Y_?xie7C#1`<@;% kv>c2&c>n+a001!Q5BB-OKYZKc`~Uy|07*qoM6N<$f?rC=TL1t6 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth12.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth12.png new file mode 100644 index 0000000000000000000000000000000000000000..8a866a167c5b014ea1ebb93c6f551013d5717d1f GIT binary patch literal 1028 zcmV+f1pE7mP)7z000SaNLh0L08StP08StQ7JZrC00004XF*Lt006O%3;baP000A%NklF|90%|>mNj^OGFS}%tTqiOVFW97x5Neyl5wh5Y$5j5(Ghd zG3X$R$MDi6Xhm5Rq*EYl1-dQa5-ZuJyKdI>d*+Bc&bBkdtW){@z~bzC@ArPcc_Z$+ zK8LY0K+!e`1-)cqV&dre*w`2o2tRgdBYS#!oIacXLNFN2(_>BBe&Wg$bRJ$6PE-$; zmzPgmU%fUsv(DvmIc0o&oPR$ReC6%bU!fNy>NO4z5A)bPx7)3oiMLb#K8^d~^jQPI zf8>EANk8eaO~*Ga&q6<r->z&tx(z9*_SqfcMk5DjNTa2T}ZY zY7QAqC>R|W3Wf56gM*dU7rfB)^z>RPmAYitd~9`fRrk%S_L7!*uHy6ARvZ8T00000 z06^I^2ZO=4Uayz$W#AuYD0KXp+Mdv{-?6G{YHGFz1_nz0;gQDVXzc4#E6nfrzZo4J zEm@crkD=IyX7ic)d{CC<{d79r=5o2rgdN~96nmHE_)wMt1A#ztety1!m@ZDmV`+}_ zG*`rEjNuP3CnqPB-Q8Ww#U1DIc-Y9uh~eBN`Fy^2+O17yX=CY9PZ`N==n@NpaKW~- zJw)G=w`?m=6n_s>w|83E=BbUPIk5)}000000000000000007`@ux}fPd6zvN&m&ou zd$ZZBtGm0Kb#`{LuC6ZD+S+&CN-ho13h^zn>Mmi;`7*K0Yta@1Z=`DBpX^o2C3w>X!bs z1@w{p(9lp~YirB9va-UOnwnTN8ZFm(6ySMyKFV7~`NLGl7pjNfvCaA(y&`O1Kv5JQ z*VWZ+$K&zJ+S=MvS+G*54j0vPk?Pu^r#EapUz=;aO)m_05{U%=$L-TwAp>|lRF|7x zv|iBDD|XFm>jE}3G)&FR%-H_(%`Utys?XKf*!aw@Iqh7)ic~7)?&#=nU}=ow_0bDW yo6~jZk|gP9&;H;1pgKP~y;cAK00000;FwFdgVorgz+L-mSvV=hpL zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9>zx8x+45_&F_Rjv?Lk=SB54<%b z8W<%QRN9oJ4Vavlq%??#7%+BC5j1kqQd1Cr*rau7bFE!U{roSJV{GoqPk&zS$2sr% z%ZEQd#6SG>@aO7pt0eb_zGY?bIq45187^Ei3#iVqKAGLlx{o!>zBn!RJ_pcJ2A{)< z5%pZxzAF`JNLs#m*?y}vd$@?2>>1>hRgr} literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth14.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth14.png new file mode 100644 index 0000000000000000000000000000000000000000..76319e24b26253f93ae6576e54f616158b4c70a3 GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorg!1SF|r&e=|^s zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9xF6Qat7*cWT?QKOrW=9dW2b>*~ z6a+*$RG1na6fBs;6(0(4JmF$t3T$*x($<>D!2%X%n`VA9b4Cu=!lrjl`}BWaHa9-` z?n=(3x3i}(M4Zb`k=og9lA0%E`Jy_Rq5kF$<8%DiemZZ9{1nB&z;i4!W%-ra6WgZ5&*|v8+YkZnCT{kir;^piz3ed23kUFQW?NB!Gf2{f=F a@i&9z3AIT%{xwTM=6kyOxvXO6EqQ@1}iG^KoL<7f`TGNgL)7|F`y4Gm7v1ANb%r7sE7v- z(vt@dA|5<=6sp#O6c3?zYK7V&R8UGpU#q+rW2WCXWS8u^F^MKGV80&>GqdyWn{Rh# z#?NoV*#D6%Ri4MHlO27RCgh!5EA;pG^UKT2 z1RaHa0fK;AF-8e!pm2 zUtiB$E?1)C#|JGr@aL>Jap`nA5yK!H{+@pJxECuxe-9~Fx7lnC;&JfgguW}o1dTO(9drv7f!|3#l^)OPS^_jSTt2tRdO2ZLH#?Z^HsV9 zBM5>Z2!bF8f*=Tjcx&Y5=036)Sg@W8(C1$%6A(>oySuxxL5M{RMd)ebcDrRGQG0v) zll=DfwxW#`L!XZ+6VT~&2GACWcEP>9JuwJctn%~od3ANQFtOo3SXq?GEjrIsrZ{X{ zQc~heKzLk@>SJcH2|RkWfmEG#JUXgX$*=g#Nzap(h0zq)h?h`eiRYLbPLEUc}q ztwLal%F0SvC^Qex%*=>1v_&U?+;j;i1H#;{udmAj;cY%WJ(csv$H$61)`d1dr(G~L zCX;Cg-()n5<6A3%X}kty0i)6Q@rw&a5ClOG1VIo4K@bE%5ClOG1VIo4K@bE%XkxWm z!$(I){O0CHc*c0WUVeLfD||luen0nkJc{oY@i)ED#RnZ&v_L}G*D1b5Jo?zrKKgI7<4^qY-|*QcXoCPZ?ch*5qYxc_=T=X zwY9Z;ZEa1VoRyUoURPJgySlo>=eAnqEaGb=^@++;U&C=rOH1WE%4e}y{?4?nG%=ga zzxVX?hzS^tMsBm&L>e6$qrW#s=f>IDS@gD)UHQt&%EV+P2S^sfTTcBMuoUp7u{fS~ zIPTQc)Fa&7?=!8dn1C{Zi;IiAqM{-p_d!%FDl?I~iG=d(`qfz9O?gTWwPRh%F`HCjkNc_2CKs=>9frl#geIVvBo zVT}FbI51ui#{G_^(P=kRd<(naCwzs+$H)1`#)d)}O!botYShZd_RvoN`uhz1{s`?m zzT{+5_j4bw;~j)=VAt-2xGES7>cZi0*4^EmEFbLH|G?%D%*n~|L-vQOtE)YT4FdgVorjOnLgmanJqe%? zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^D%Kk4b>7*cWT?QKJ@Lk1!Y0i`;z zcWoNVK5)n#u(qh?`Koj8h_XdUdHC^1Dj7y0E_08ViQQ`!I5FW#yM2rQrPm*qocI*| z%9eql%7Rp8i#X(hd2K{u*9;d`FoPXyJqBNiW~# z&p&*%^x!VHA8&1%uQUQhAz(tl;{PSHgHnDb?w`>ce|-7vyBqg}Og8&|>1ujK|6%U- zZ-skw*QO+#m=XHoS}wczbsou`o*VQ)dV6;;*YRrS-W7c01mb$S`njxgN@xNAdpUS7 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth17.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth17.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8ac6d2a26a26eaecba6cc0ea63ed406cbc4181 GIT binary patch literal 719 zcmV;=0x3!fme+=2xX z5=eX+zmgQkwH^9d$P>9$>ITs6hN`bXTjr=!O6zUZb-jC!E7R%< zXJ)s5cV^b>wQkQw8?tTe;o-k=S6imjsr^x|lT%-%D$rQYg;iyg1%NPZ#p}Mpv0IN0 z&0MOg3f4V|WMx;jd$G&xH9GVLyI0?vVd^B!%^m;%z;U7eOrvz{U(05mCGp}ANj>)^ zrMeTxP6Wz6O6@Rb%Ct8Plm1d>U4e36O`P@BJ?bma+H5wRCrItI(cNZFaZ)+c-mQ#- z0{{R3001zObLD?7yM4v~FLvL6qb*q6y<5`7-%+b4BQ-F0qf$xpW$ z(${UHvr!(c`NAf3Ox?%k?YEo`bDj_WFmY^Ux=XHSM4@s?eGhtoIZ#sHsi!#WwDggO zoW}c-ZFVkt`{GaiBXR4RHh&gRu&(RQtNY&NE7!i3P7nY900000000000Kns^i4V$J z+clfb_SQT2K1(^P-ggskO*|ZXK>ymycF^EDRltdt5*G81bA=k1Ci^#@_bKM2JCKAk?;8SMXWu~Hu>7^Y5EYx^DbrZLl547 z_Fj#BfMVX1JSe53y<$x~8~Z?o=;d-5yhnxZS*7oRv3?~#ljrAB1I}HG9J9T@tX8W- zpR_DZes@Z>SNi9tuFDT#${N{|!L0xQ00024qu+$R`QCIBAy@za002ovPDHLkV1nlZ BO)>xg literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth18.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth18.png new file mode 100644 index 0000000000000000000000000000000000000000..af8ad85ee4260f1e2dfcf6d3418260fdb8189d55 GIT binary patch literal 786 zcmV+t1MU2YP)QLJ>EirG;=e?XU8B&tmo4Y`t4?MhF?#KJRw{TpK_s%e= zUHh4g-O`3uD6|)Ju}4N}a?&0YVm0VG=mg~b z^#wOm$QF{$m5Lv_KXgqD2=URKHQ>x1D2|S{HU+c=TAr}xrEGYp-ZwF!?c}u-h!Omx zT8y5vtR4aPRDl@58wcy_{|jDT-qcp1Mk8ug@kJrBK^H*d?Pn z_3Vv3 zp;O2Dx7M)3uqKPO;&zadmd~ z`-YTfg0A(SV7}JXL|N4niPV;VTUO%+Sf}Ij3_A5xG2u{1?k+8*##1Th58F33*06qR zZm#@J%IQk=!yMGat+;9KZzmGYwDn3hYj0YXoiI)HEso)!iz6Z;A|g`$0=j&$9$!U2 QivR!s07*qoM6N<$f@SP!82|tP literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth19.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth19.png new file mode 100644 index 0000000000000000000000000000000000000000..5526f1a17fcb37b92ae6abf2bc90b08d16da8872 GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVokxI$RnYB(!y%v$ zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DX{gkJRV@SoVw|Dku3nwxh`)I!N zo@>9e_tsdMONzl-8Wtt5`3s6mvzPldC5ta~W@A0h7klT6{RMl64NF`3VoNfQvx$f* zNqIyYY94w1^xi4OiIbM>3xE5ang9E}r}wJsQ+Dk(H)N|_@ps#QllOd#AJ#_qPEHNq zc6;5Xtn!jQ&%QA-{M{wgld~f!@@8PvsVTMvDx)t zm#@YDOTLEPlLZ?FC;Hjq+RDRL6(-f6t_hwQ?B=_xCf_93F3|ktq<#9Q*tg&Pv~$mT zae3h%$9&J}Uq8IUQqWC5q-O1!Y#~1Oy*u_btbX^aeCluc+xB+m{np!!m#@+OEO+eZ z^^(U)AHtaL2Cw`3Q0BLO5$|NbZ?irH%naT1{Pw2U^E(&q3Av};Umff7_Kru>0|OnA zZ)fc{lzh6vd8HxB>t_1mtoMCtA9r_ESNcO7`hW8Ll>4D?6m8f4010@y`njxgN@xNA Dh}-v! literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth2.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth2.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f374ed0cc82d3eeee7a3a540f83471c1bfe52c GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+P0{yi#xI}{ zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DXeY2;FV@SoVw|CBaF*(W{_&D?L z>ep_GtfC@!P4s1Vm9CurQn9LW-U8=*0b9rG@9yp{eR0LHgK4A5_4v&*QoR!{KFIm{ z_dr9RecOEd>vI#!Lp1krZJoCMSe>Q7{m0_gQJ%ZD%eZ;Jeg5xlN__y2iTue~VXw}8 zwLW0~sQ;Ygr@6)K41Zj;1MkFlKbkl7;F&A)_1Rr+#^hgZHi+h0e8#sH=wO3QQb(D; z?z=Mi>yA%3$uZ}{nr3#)tFaT-jvuT}XwA?Dt;NmowAR%wSj8c+P3bU)xp&NSCqr)0|Sp7^X{b~fbw#Zo(n zX;3ofg1!8qePNUI_@-J3O{|@qaMvcUIx4opOFpjDnt$DA?X`Of&Z@k9Qq3Ehcs=Hx zSkpy07h&`FR@Z~FLbBg>J+F=0Q+T>N`_a1C=T>2>@650|gMUK5{t)7i%`=*u(Wu_>pN3E7MEFdgVorgz+%|JcXg99kU zS>O>_%)sEM0K$x7wKMMl1zFM^eH|GXHuiJ>Nn{0T_w{sf45_&F_KvL=v!hJg$B7Tv zrZF}rr6wK-$+qHNd*zUFL=}TI_iTq2kt&YA#HOdiY_9)hBtmdiI*lgzAFmWq1%?lz&)yy2`hQ z+t2uJU74kKcVGDLFF%~`FOB~7?y7H@jrrYs<}ELIubho4dU@}->DAEXtCr9H5c9w` zJ*MjO_AA@00@FdgVorgz+ok3!`=To2% zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DXJ;Kw)F{I+w+uMfThaDu2eZ0)q zDzIU}?B*uFi;e{seA(@rB%uwmiH4w5A#knRt?khEiE@)&98s$X7IhKc~MXJ|4rwE=!23Uma7Eb z39_5gdZ6}tZ27gDGrrwb(EX%8wbAGb>)BuL!h_~lPSt*Tr+mE|f0uR4jY%uF+2v_n zKh;~b+Vx*f!8ysPxvB0qL)*OkpV#me`Z|gioMGA$6875l#f+@~8PAWuo_Hpt+UvCX l&-t&aj{gHi4gp=fS?83{1OQQ%xt#z2 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth5.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth5.png new file mode 100644 index 0000000000000000000000000000000000000000..adeac8210a83f67717c897256108666677483d2a GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+ox8tuLM~8< zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9xZsO_U7*cWT?VXKYhaDss9;|pE zp!`CbBk$y}7a_!Y>87ITqD>a%n9wZO?3}lmGLlb$3Cz zqV0}?={n30c5kh0ZQk=ELrdEC)XwWnYjz#;G*Y|1+2e5AqePz#;+3<;*HYm1++ zohzQXdt01;?vlJ0CXY%Tzi!XmtA8EnItGUS&ac0hHt(tEoT9$XT+a8@T|euH@=ZNk zu728NWVQY7wzXHx*SIcO+%Y>oWPhK9&r2DwE)a3|)t?)06!guMe3i_qCE_og+hsPX z?BP~H=8FCj$&YtRqwRY(Kg(zQJ9DYroxbIT_LnM;cpmX%_x1T+AD4Rd_$0aMhRg2x z@4H_AvAN^%nq4caOXvNaxAXj}<*zg!Ej+iqaPhlea?C(`)=cu}?)H@S+}dRTvewhp K&t;ucLK6TQUat}W literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth6.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth6.png new file mode 100644 index 0000000000000000000000000000000000000000..5efe620fd0a14c14797c4e2e4eeb9eaca20fdbd0 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+UF=QqpDjQk z&H|6fVg?331rTNwtDSidD9DoT=$UOI9B1!s6`{a-Da5f4m{GstITfLxat-=F=|)j9sN)-)Z*I zJ2z)`9Y`1i8vdL7p83xF)~=haYfc;NTPNRM+g3LHqa6E8D>b9mJB8D(zkFO|RincW bRI71{J5R`3aLc>mk07m{u6{1-oD!M<@@Q)> literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth7.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth7.png new file mode 100644 index 0000000000000000000000000000000000000000..5874c663f1edb402771ec1df35d44045e33d431e GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+UFqy`4o095 zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^D%_x5yg45_&F_NE~hg8~n;L+wug z^%h+#7A!a|o1)eD#+S1p?%tipi?|Os`2^MRGXr%1K|}bh$u@jU5Dtu7%=P=W$lH0x R_DX<6JYD@<);T3K0RTHDF!ule literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/mouth8.png b/plugins/serendipity_event_gravatar/wavatars/parts/mouth8.png new file mode 100644 index 0000000000000000000000000000000000000000..7d701a7a7496407435ec6baec603d8a4a6839518 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgz+UGGStixyCb zv%n*=n1R7h0fZUFYG>X93bLd-`Z_W&Z0zU$lgJ9>fA@5845_&F_I5W{vw{f2g>C=; zr+;6-d!0*tw_o&ghXA3Xo!=&O`w4F@*_vbho$u9$OF1|5QeNc0e#!DfdHE&YpXDD) zLU--|!Tx{A5j{%`n|AQ!V_0@v#;8k}ya@70u=^ADcAuK1EimvOt)Gmf+Ol7Je) zV8v9e+q=7>mWU>1FAU$znjq-Lky3g&Cv)$0jm|f64$tPD*sJm`aYyf?=#$(xMD8Eq z2wZwec>C9`eu4V$3`V>EboOL~UzT8CXt=+d;krW2bJ0jeBap$Ku6{1-oD!MFdgVorgz+-O_#0!M8vm z&H|6fVg?331rTNwtDSidD9DoT=dpoD+|~C?cKblaFh3>BbD>g=Rdu*{l$%4mmFf|S_N7KtvPq&jk96Ealh4DfX)Pg z1!b-8`P&@L!?<#8sxi#`ug2(WDAl*PSLv;;=-UNSFEoy-b_t5UjakXJZ0?rddw;LG zQ`+|`R`c5y|93{r5F?=Et&2Z?Z#uN#wRW%Q>2G%m``*6JvCFFZ6tyz4!u17%nwNN& zxVE3zF}X+Q4qb`aGjY-VFCVx5I%X!C5&bfz@W+RL*Sggwzb}=&Up`wqJ9PGj;6FhZ zuZw@ba?J4T->Ky<{cFMt7rfBic4>}o`n$W=BfqYx@cG=!Rcie{8Ek*T#2Ti&th9NI Rcce5x0-mmZF6*2UngCq<&n*A| literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/pupils1.png b/plugins/serendipity_event_gravatar/wavatars/parts/pupils1.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8c4884eb0b75b962cbb5031f633e46aae14671 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgzQm;aGX-%X$p zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DXeSxQoV@SoVw|DHl4?D;l`*>PY z%q#kijLfdp34-nW7(a^sFsrfL$5UR*YV|U}MHVR2E46A{=lRCQh*=L@Zy)*f_dvh5 z{&(|*OMUfBpY`9&Dm!=SZEu?P$|@U=)bnlUE_q&kd{E|vOZoD>ys`7XtqrxcW9UxW zd{gdqu+uHR93JN!u3X`^Olpx+o6Ov9gDI&NTAsBCaB zVxwKhq4qgNcaNx)zgyRB`pxsHRVv$y+LwoU&n6@#5|C(N639ep~1MKgH0z zp8fBh1utCv=Fa3dsCLY-Uq9#D*UQ~Lt1f?j2{9aO!w3DT`+vVZs2dqjwB&|iUSNaa zyZ7pR?12^W%gs*D_{n(1#b0>x8(%wL=@|-PGTDdNOEWgFnJMSsdu45CA$RsNyL~ym zwHH&OL%07FzIQsHCPOJ%b@!|*)n#jYZin5QZMOaO1vRimU_xgD|Jo&8Mgba}hd_K! LS3j3^P6FdgVorjl|SCe(obVZ;L zXMsm#F$0620thpT)y}*J6l6(v^mSxl*x1kgCy^DXJ=fF4F{I+w+gp3R4hM)F_;@Rn zS!hFX)&bSci)XKvJTk#F`kGC%$gY$RqQ7{Q&M8?uVKv&>QOL!o^@!c<9=D*A$K@qi zMN|Lt^O-E4etGuoOAqJpu+{shh3s{^zi%J!?QQZVzPn#n+rK!b)AzVi)BIFD&+FA< zvf)q4e(eipu=Sec@^7_I*G>hFdosr>BUdI&i=LL9yjy9zX42x{pP3jK_G@cLZaKGU z&Ff3MR|_zG`rdQr<{{vLJS*Y*Ch z>%1?^oijRY*6n-wj#gauthACMBi${T9HzNOe=RIiCZFdpk=$}p@$Qa;R$zm`#DV>V z3Xg)0tnDZk+}(98*qC25^d`r{Z)3&T6Nr@XW{Ez?<09*uh0LrZso4cuI96r zt*l{s=`wNFsVLz>jYo&R|2_V)dwX}-iEdmT;EOQ))GwCDO$8i}vNWnef}XB^ JF6*2UngDLg!m$7V literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/pupils11.png b/plugins/serendipity_event_gravatar/wavatars/parts/pupils11.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e62c7039342c4e3f84174cd93b162788aefdc1 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVoku{_T)QBE#SJLL zS>O>_%)sEM0K$x7wKMMl1zFM^eH|GXHuiJ>Nn{1`cY3-whE&{od&`jPkbwx>gQj~6 z7BsiNcqD5xsd@G8X7-hn*EO{lT@iny5)mbMdD{DC`C9>#%*{?}cYWOH9=5Z4!BNGc z)3GcJH5+LZl5*1S<(e!|MAe~xnZ3DZv!C+0L4>%`fbhMqRR ieM0Z^9Ee(m;BPESRuVlsD?Wijg2B_(&t;ucLK6V(kZmRa literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/pupils2.png b/plugins/serendipity_event_gravatar/wavatars/parts/pupils2.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e4ea45b799fd2e554876c749ff1a44f857dcbe GIT binary patch literal 516 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 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/pupils8.png b/plugins/serendipity_event_gravatar/wavatars/parts/pupils8.png new file mode 100644 index 0000000000000000000000000000000000000000..15084148f12ff78c34c8b1295f5f9f69a89ffb29 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r5#=yY%Q|yp6ki%Z$>FdgVorgzQ-}>V|iFZID z&H|6fVg?331rTNwtDSidD9DoT=7m`GiPJ4>B@~-w!Qw@vX_sI_<^<^c)M!O_9?c9 ze+F+qX1v?P=eN-2<6N785+HEE`1ReFwnx*&*Jl>*tn=UexHz^;39({$gP8boFyt=akR{00%;IkpKVy literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/pupils9.png b/plugins/serendipity_event_gravatar/wavatars/parts/pupils9.png new file mode 100644 index 0000000000000000000000000000000000000000..752da686ecd175f540de8a82fdb562efe64dda9a GIT binary patch literal 849 zcmV-X1FrmuP)(DSCl($UNFyj%XrUn32v&A>DYdY-v9Qz5{09mmq!26= zQp8R{3k4f7l15Qcj6WiYoZrX3lX1Ac?5^yc#?J>HGqdw%cJ}R$+ne`hL-;#rZ`nRB znecowu4}}F=U+d)SMu76JBK~+4Uf*oYF=FcgDyX9h92j;H2=x$g5c-_~hkx`!l7RrXnS>Z3c&VGiWal2$Yg5)Z2B=?&HIRrXr& z`J6#na4E`<_Rt%P^}G4*_Bsc6FDb9~(X|2XvKz@~xGFJH)rujT*=p+)zUia47_w=% zCz45@x&r_J00000000000001}M(rL)_jJAsnbX@=PG1R`Gu)iowm6|x*7KRO4!}IF z<}9Dh^SahStp@BKs2Rxo*&#Dn+ct&FW&EtGSHy_!q`xEG6FK#^KGYUmtVn0upp00T z@y09wB{rrlkx6tGe0#HK1Va+}Fyj#u=e?ihXkVj6`ukHh)!g^VsC-kh)erD$$buJ+ zN#=C5d?{!=I|1>MAG>9z)c%F)b}K*YI(7yA7=!`K2J#dpHHyk-m9#AKNa<ZOg; literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/shine1.png b/plugins/serendipity_event_gravatar/wavatars/parts/shine1.png new file mode 100644 index 0000000000000000000000000000000000000000..82949956d9c3c7a0460e615efb70ea40c1566c2d GIT binary patch literal 5561 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 Dt$XDK literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/shine11.png b/plugins/serendipity_event_gravatar/wavatars/parts/shine11.png new file mode 100644 index 0000000000000000000000000000000000000000..86286e02d304fabe4bace0666d3bda0da1a73331 GIT binary patch literal 4242 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 KMNUMnLSTY5MZbdp literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/shine3.png b/plugins/serendipity_event_gravatar/wavatars/parts/shine3.png new file mode 100644 index 0000000000000000000000000000000000000000..082c756ce2aea4836b2fee3d4ffbb8ac295c33e6 GIT binary patch literal 3772 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 FV1l1|HHZKJ literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/parts/shine6.png b/plugins/serendipity_event_gravatar/wavatars/parts/shine6.png new file mode 100644 index 0000000000000000000000000000000000000000..07d3f09dfc32834d9cc3d3f9b44212a0f7e1040a GIT binary patch literal 3464 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 literal 0 HcmV?d00001 diff --git a/plugins/serendipity_event_gravatar/wavatars/wavatars.php b/plugins/serendipity_event_gravatar/wavatars/wavatars.php new file mode 100644 index 00000000..9e075a6f --- /dev/null +++ b/plugins/serendipity_event_gravatar/wavatars/wavatars.php @@ -0,0 +1,145 @@ +240 || $h<0) return array(0,0,0); + if ($s>240 || $s<0) return array(0,0,0); + if ($l>240 || $l<0) return array(0,0,0); + if ($h<=40) { + $R=255; + $G=(int)($h/40*256); + $B=0; + } elseif ($h>40 && $h<=80) { + $R=(1-($h-40)/40)*256; + $G=255; + $B=0; + } elseif ($h>80 && $h<=120) { + $R=0; + $G=255; + $B=($h-80)/40*256; + } elseif ($h>120 && $h<=160) { + $R=0; + $G=(1-($h-120)/40)*256; + $B=255; + } elseif ($h>160 && $h<=200) { + $R=($h-160)/40*256; + $G=0; + $B=255; + } elseif ($h>200) { + $R=255; + $G=0; + $B=(1-($h-200)/40)*256; + } + $R=$R+(240-$s)/240*(128-$R); + $G=$G+(240-$s)/240*(128-$G); + $B=$B+(240-$s)/240*(128-$B); + if ($l<120) { + $R=($R/120)*$l; + $G=($G/120)*$l; + $B=($B/120)*$l; + } else { + $R=$l*((256-$R)/120)+2*$R-256; + $G=$l*((256-$G)/120)+2*$G-256; + $B=$l*((256-$B)/120)+2*$B-256; + } + if ($R<0) $R=0; + if ($R>255) $R=255; + if ($G<0) $G=0; + if ($G>255) $G=255; + if ($B<0) $B=0; + if ($B>255) $B=255; + return array((int)$R,(int)$G,(int)$B); + +} + +/*----------------------------------------------------------------------------- +Helper function for building a wavatar. This loads an image and adds it to +our composite using the given color values. +-----------------------------------------------------------------------------*/ + +function wavatar_apply_image ($base, $part) +{ + + $file = dirname(__FILE__).'/parts/' . $part . '.png'; + //echo $file . "
    "; + $im = @imagecreatefrompng($file); + if(!$im) + return; + imageSaveAlpha($im, true); + imagecopy($base,$im, 0, 0, 0, 0, WAVATAR_SIZE, WAVATAR_SIZE); + imagedestroy($im); + +} + +/*----------------------------------------------------------------------------- +Builds the avatar. +-----------------------------------------------------------------------------*/ + +function wavatar_build ($filename, $seed, $size) +{ + if (!function_exists (imagecreatetruecolor)) { + return false; + } + $face = 1 + (hexdec (substr ($seed, 1, 2)) % (WAVATAR_FACES)); + $bg_color = (hexdec (substr ($seed, 3, 2)) % 240); + $fade = 1 + (hexdec (substr ($seed, 5, 2)) % (WAVATAR_BACKGROUNDS)); + $wav_color = (hexdec (substr ($seed, 7, 2)) % 240); + $brow = 1 + (hexdec (substr ($seed, 9, 2)) % (WAVATAR_BROWS)); + $eyes = 1 + (hexdec (substr ($seed, 11, 2)) % (WAVATAR_EYES)); + $pupil = 1 + (hexdec (substr ($seed, 13, 2)) % (WAVATAR_PUPILS)); + $mouth = 1 + (hexdec (substr ($seed, 15, 2)) % (WAVATAR_MOUTHS)); + // create backgound + $avatar = imagecreatetruecolor (WAVATAR_SIZE, WAVATAR_SIZE); + //Pick a random color for the background + $c = wavatar_hsl ($bg_color, 240, 50); + $bg = imagecolorallocate ($avatar, $c[0], $c[1], $c[2]); + imagefill($avatar,0,0,$bg); + $c = wavatar_hsl ($wav_color, 240, 170); + $bg = imagecolorallocate ($avatar, $c[0], $c[1], $c[2]); + //Now add the various layers onto the image + wavatar_apply_image ($avatar, "fade$fade"); + wavatar_apply_image ($avatar, "mask$face"); + imagefill($avatar, WAVATAR_SIZE / 2,WAVATAR_SIZE / 2,$bg); + wavatar_apply_image ($avatar, "shine$face"); + wavatar_apply_image ($avatar, "brow$brow"); + wavatar_apply_image ($avatar, "eyes$eyes"); + wavatar_apply_image ($avatar, "pupils$pupil"); + wavatar_apply_image ($avatar, "mouth$mouth"); + //resize if needed + if ($size != WAVATAR_SIZE) { + $out = imagecreatetruecolor($size,$size); + imagecopyresampled ($out,$avatar, 0, 0, 0, 0, $size, $size, WAVATAR_SIZE, WAVATAR_SIZE); + //header ("Content-type: image/png"); + imagepng($out, $filename); + imagedestroy($out); + imagedestroy($avatar); + } else { + imagepng($avatar, $filename); + imagedestroy($avatar); + } + return true; +} + +?> diff --git a/plugins/serendipity_event_gravatar/ycon/ycon.image.php b/plugins/serendipity_event_gravatar/ycon/ycon.image.php new file mode 100644 index 00000000..b20a117b --- /dev/null +++ b/plugins/serendipity_event_gravatar/ycon/ycon.image.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/plugins/serendipity_event_gravatar/ycon/ycon.php b/plugins/serendipity_event_gravatar/ycon/ycon.php new file mode 100644 index 00000000..5574765f --- /dev/null +++ b/plugins/serendipity_event_gravatar/ycon/ycon.php @@ -0,0 +1,285 @@ +_> + +// THIS SOFTWARE IS PROVIDED BY Ben Hendel-Doying ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL Ben Hendel-Doying BE LIABLE FOR ANY +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +//////////////////////////////////////////////////////////////////////////////// + +// this is an arbitrary prime number, nice to add before hashing if you want to +// additionally secure the seed value (ex: IP, e-mail, internal userid, etc). +// HEY! DON'T USE THE PRIME PROVIDED HERE! GO FIND YOUR OWN! FOR SERIOUSLY! + +$ycon_salt = 263167; + +// some web sites that provide prime numbers: +// * http://www.rsok.com/~jrm/printprimes.html +// * http://en.wikipedia.org/wiki/List_of_prime_numbers + +//////////////////////////////////////////////////////////////////////////////// + +// the actual function! returns a true-color image resource, suitable for +// imagepng'ing, or whatever else you'd like to do with it. + +// $hash is a 16-byte hash (for example, as generated from md5()) +// $size is the total width and height, in pixels, of the ycon to be generated +// $bg_* describe the background (transparent) color to be used, [0..255] + +function ycon($hash, $size, $bg_red, $bg_green, $bg_blue) +{ + $draw_size = $size * 4; + + $red = hexdec(substr($hash, 0, 3)) % 12; // 0-192 for color + $green = hexdec(substr($hash, 3, 3)) % 12; // (in increments of 16) + $blue = hexdec(substr($hash, 6, 3)) % 12; + + $corners = hexdec(substr($hash, 9, 1)) % 16; // 14 gylphs + $corners_i = hexdec(substr($hash, 10, 1)) % 2; // inverted? + $corners_a = hexdec(substr($hash, 11, 1)) % 4; // 4 rotations + + $edges = hexdec(substr($hash, 12, 1)) % 16; + $edges_i = hexdec(substr($hash, 13, 1)) % 2; + $edges_a = hexdec(substr($hash, 14, 1)) % 4; + + $center = hexdec(substr($hash, 15, 2)) % 6; // 3 gylphs + 3 inverted + + $square = $draw_size / 3; + + $icon = imagecreatetruecolor($size, $size); + $draw_icon = imagecreatetruecolor($draw_size, $draw_size); + + $background = imagecolorallocate($icon, $bg_red, $bg_green, $bg_blue); + $color = imagecolorallocate($icon, $red * 16, $green * 16, $blue * 16); + + imagecolortransparent($icon, $background); + + $shape = $corners; + $inverted = ($corners_i == 0); + $rotation = $corners_a; + + draw_glpyh($draw_icon, 0, 0, $square, $color, $background, $shape, $rotation % 4, $inverted); + draw_glpyh($draw_icon, $square * 2, 0, $square, $color, $background, $shape, ($rotation + 1) % 4, $inverted); + draw_glpyh($draw_icon, $square * 2, $square * 2, $square, $color, $background, $shape, ($rotation + 2) % 4, $inverted); + draw_glpyh($draw_icon, 0, $square * 2, $square, $color, $background, $shape, ($rotation + 3) % 4, $inverted); + + $shape = $edges; + $inverted = ($edges_i == 0); + $rotation = $edges_a; + + draw_glpyh($draw_icon, $square, 0, $square, $color, $background, $shape, $rotation % 4, $inverted); + draw_glpyh($draw_icon, $square * 2, $square, $square, $color, $background, $shape, ($rotation + 1) % 4, $inverted); + draw_glpyh($draw_icon, $square, $square * 2, $square, $color, $background, $shape, ($rotation + 2) % 4, $inverted); + draw_glpyh($draw_icon, 0, $square, $square, $color, $background, $shape, ($rotation + 3) % 4, $inverted); + + $shape = (int)($center / 2); + $inverted = (($center % 2) == 0); + + draw_glpyh($draw_icon, $square, $square, $square, $color, $background, $shape, 0, $inverted); + + imagecopyresampled($icon, $draw_icon, 0, 0, 0, 0, $size, $size, $draw_size, $draw_size); + + imagedestroy($draw_icon); + + return $icon; +} + +//////////////////////////////////////////////////////////////////////////////// + +// function used internally to draw an individual glyph; one of the little guys +// that goes into one of the 9-squares of ycon. you probably won't need to +// call this yourself, but there it is... + +function draw_glpyh(&$image, $x, $y, $full, $fg_color, $bg_color, $shape, $rotation, $inverted) +{ + $quarter = $full / 4; + $half = $full / 2; + + if($inverted) + { + imagefilledpolygon($image, array(0 + $x, 0 + $y, 0 + $x, $full + $y, $full + $x, $full + $y, $full + $x, 0 + $y), 4, $fg_color); + $drawing_color = $bg_color; + } + else + { + imagefilledpolygon($image, array(0 + $x, 0 + $y, 0 + $x, $full + $y, $full + $x, $full + $y, $full + $x, 0 + $y), 4, $bg_color); + $drawing_color = $fg_color; + } + + switch($shape) + { + // the first few shapes are visually unchanged by 90 rotations, and thus + // suitable for the center glyph + + case 0: // full square + $points = array( + 0, 0, + $full, 0, + $full, $full, + 0, $full); + break; + + case 1: // large diamond + $points = array( + $half, 0, + $full, $half, + $half, $full, + 0, $half); + break; + + case 2: // center square + $points = array( + $quarter, $quarter, + $half + $quarter, $quarter, + $half + $quarter, $half + $quarter, + $quarter, $half + $quarter); + break; + + // okay, now we start with the interesting ones that change with rotation + + case 3: // tilted isosceles triangle + $points = array( + $full, 0, + $half, $full, + 0, $half); + break; + + case 4: // squat isosceles triangle + $points = array( + $half, $half, + $full, $full, + 0, $full); + break; + + case 5: // corner square + $points = array( + $half, $half, + $half, $full, + 0, $full, + 0, $half); + break; + + case 6: // rectangle + $points = array( + 0, $half, + $full, $half, + $full, $full, + 0, $full); + break; + + case 7: // skewed hourglass on its side + $points = array( + 0, 0, + $full, $full, + $full, $half, + 0, $half); + break; + + case 8: // upsidedown squat isosceles triangle + $points = array( + 0, $half, + $full, $half, + $half, $full); + break; + + case 9: // corner square, except one corner is pulled to the kitty-corner + $points = array( + $full, 0, + $half, $full, + 0, $full, + 0, $half); + break; + + case 10: // large isosceles triangle + $points = array( + $half, 0, + $full, $full, + 0, $full); + break; + + case 11: // large right triangle + $points = array( + 0, 0, + $full, $full, + 0, $full); + break; + + case 12: // hourglass + $points = array( + 0, 0, + $full, $full, + 0, $full, + $full, 0); + break; + + case 13: // squat diamond + $points = array( + $quarter, 0, + $half, $half, + $quarter, $full, + 0, $half); + break; + + case 14: // hourglass on its side (and kinda' squished...) + $points = array( + 0, $half, + $full, $full, + $full, $half, + 0, $full); + break; + + case 15: // corner triangle + $points = array( + 0, $half, + $half, $half, + $half, $full); + break; + + default: + die('$shape must be in range [0..13] (' . $shape . ' is out of range)'); + } + + // for each point + for($p = 0; $p < count($points) / 2; ++$p) + { + // normalized + $normalized_x = $points[$p * 2] - $half; + $normalized_y = $points[$p * 2 + 1] - $half; + + // then rotate + for($i = 0; $i < $rotation; ++$i) + { + $old_x = $normalized_x; + + $normalized_x = -$normalized_y; + $normalized_y = $old_x; + } + + // then de-normalize and offset + $points[$p * 2] = $normalized_x + $half + $x; + $points[$p * 2 + 1] = $normalized_y + $half + $y; + } + + // draw the bastard + imagefilledpolygon($image, $points, count($points) / 2, $drawing_color); +} +?>