diff --git a/web/sites/all/modules/contrib/service_links/LICENSE.txt b/web/sites/all/modules/contrib/service_links/LICENSE.txt new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/LICENSE.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/web/sites/all/modules/contrib/service_links/README.txt b/web/sites/all/modules/contrib/service_links/README.txt new file mode 100644 index 0000000..b2c3f89 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/README.txt @@ -0,0 +1,89 @@ +Service Links 2.x: +------------------ +Author and mantainer: Fabio Mucciante aka TheCrow (since the 2.x branch) +Current co-mantainer: Simon Georges +Requirements: Drupal 7 +License: GPL (see LICENSE.txt) + +Introduction +------------ +This module is the enhanced version of Service Links 1.x developed +by Fredrik Jonsson, rewritten and improved to fit the new purposes: +extend easily the number of services supported and provide APIs to +print links everywhere within any content. +At the address http://servicelinks.altervista.org/?q=service +a web interface helps to create a module including the services +not availables in the standard package. + +Overview +--------- +Service Links provide an amount of 70+ social networks +from around the World where submit the link of a given content, +below a short list: + +* del.icio.us +* Digg +* Facebook +* Furl +* Google +* IceRocket +* LinkedIn +* MySpace +* Newsvine +* Reddit +* StumbleUpon +* Technorati +* Twitter +* Yahoo +* ... + +The admin decides: +- the style to render the links: text, image, text + image +- to show links only for certain node types or some categories +- to add links within the content body, among the other links, or in a block +- what roles are allowed to see the selected links. + +Within the 2.x branch has been introduced: +- modular management of services, grouped by different language area, + through external modules implementing the hook_service_links() +- sorting of services through drag'n drop +- support for buttons which make use of Javascript without break the + XHTML specifies to keep the module more 'accessible' as possible +- improved the use with not node pages +- support for other Drupal modules: Display Suite, Forward, Views, Short Url +- support for sprites to render the service images +- support for browser bookmarking (Chrome, Firefox, IE, Opera) +- two APIs to print easily the whole set of services or a customs subset of them +- configurable list of pages to show/hide on also through PHP code + +A more detailed list of options and related explaining is available at the page: +http://servicelinks.altervista.org/?q=about + +Installation and configuration +------------------------------- +1) Copy the whole 'service_links' folder under your 'modules' directory and then + +2) Point your browser to administer >> modules', enable 'Service Links' and one + of the 'XXX Services' provided, 'General Services' contain the most know social + networks, and 'Widgets Services' the most used buttons + +3) Go to 'administer >> access control' for allow users to watch the links. + +4) At 'administer >> settings >> service links' select for what type of content + enable Service Links and in 'Services' tab select the services to show. + +More information +---------------- + +The file 'template.php' contains some examples about phptemplate variables + +The file 'service_links.api.php' contains info about the hooks implemented + +More info regarding installation and first configuration, set up of the available +options, either extension of the number of services and theming output are available +on the online documentation at the address: +http://servicelinks.altervista.org/?q=about + +More services can be included and packed within an external module customizable +through a web interface available at the address: +http://servicelinks.altervista.org/?q=service diff --git a/web/sites/all/modules/contrib/service_links/css/service_links_fisheye.css b/web/sites/all/modules/contrib/service_links/css/service_links_fisheye.css new file mode 100644 index 0000000..b8334f8 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/css/service_links_fisheye.css @@ -0,0 +1,32 @@ +.fisheye{ + text-align: center; + height: 50px; + position: relative; +} +.fisheyeContainer { + position: absolute; + height: 50px; + /*background: url(bg.gif);*/ + padding-left: 20px; +} +a.fisheyeItem:hover {text-decoration: none} +a.fisheyeItem { + text-align: center; + color: #000; + font-weight: bold; + text-decoration: none; + width: 16px; + position: absolute; + display: block; + top: 0; +} +.fisheyeItem img { + border: none; + margin: 5px 10px 0px; + width: 100%; +} +.fisheyeContainer span { + display: none; + padding-left: 20px; +} + diff --git a/web/sites/all/modules/contrib/service_links/images/_de_alltagz.png b/web/sites/all/modules/contrib/service_links/images/_de_alltagz.png new file mode 100644 index 0000000..76f1a05 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_alltagz.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_colivia.png b/web/sites/all/modules/contrib/service_links/images/_de_colivia.png new file mode 100644 index 0000000..4fafe78 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_colivia.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_icio.png b/web/sites/all/modules/contrib/service_links/images/_de_icio.png new file mode 100644 index 0000000..48a11f2 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_icio.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_infopirat.png b/web/sites/all/modules/contrib/service_links/images/_de_infopirat.png new file mode 100644 index 0000000..4a4b20b Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_infopirat.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_linkarena.png b/web/sites/all/modules/contrib/service_links/images/_de_linkarena.png new file mode 100644 index 0000000..9aef543 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_linkarena.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_meinvz.png b/web/sites/all/modules/contrib/service_links/images/_de_meinvz.png new file mode 100644 index 0000000..dbf5300 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_meinvz.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_netselektor.png b/web/sites/all/modules/contrib/service_links/images/_de_netselektor.png new file mode 100644 index 0000000..a589ad3 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_netselektor.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_oneview.png b/web/sites/all/modules/contrib/service_links/images/_de_oneview.png new file mode 100644 index 0000000..e1b632d Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_oneview.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_readster.png b/web/sites/all/modules/contrib/service_links/images/_de_readster.png new file mode 100644 index 0000000..c19355b Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_readster.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_seekxl.png b/web/sites/all/modules/contrib/service_links/images/_de_seekxl.png new file mode 100644 index 0000000..725938e Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_seekxl.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_seoigg.png b/web/sites/all/modules/contrib/service_links/images/_de_seoigg.png new file mode 100644 index 0000000..3d14741 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_seoigg.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_weblinkr.png b/web/sites/all/modules/contrib/service_links/images/_de_weblinkr.png new file mode 100644 index 0000000..a21d1b9 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_weblinkr.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_webnews.png b/web/sites/all/modules/contrib/service_links/images/_de_webnews.png new file mode 100644 index 0000000..9e38b5e Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_webnews.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_xing.png b/web/sites/all/modules/contrib/service_links/images/_de_xing.png new file mode 100644 index 0000000..b2b5e82 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_xing.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_de_yigg.png b/web/sites/all/modules/contrib/service_links/images/_de_yigg.png new file mode 100644 index 0000000..0844480 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_yigg.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_es_barrapunto.png b/web/sites/all/modules/contrib/service_links/images/_es_barrapunto.png new file mode 100644 index 0000000..862998c Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_barrapunto.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_es_fresqui.png b/web/sites/all/modules/contrib/service_links/images/_es_fresqui.png new file mode 100644 index 0000000..ef8ffed Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_fresqui.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_es_latafanera.png b/web/sites/all/modules/contrib/service_links/images/_es_latafanera.png new file mode 100644 index 0000000..dd517bb Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_latafanera.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_es_meneame.png b/web/sites/all/modules/contrib/service_links/images/_es_meneame.png new file mode 100644 index 0000000..169e20d Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_meneame.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_es_tuenti.png b/web/sites/all/modules/contrib/service_links/images/_es_tuenti.png new file mode 100644 index 0000000..7046690 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_tuenti.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_eu_aupatu.png b/web/sites/all/modules/contrib/service_links/images/_eu_aupatu.png new file mode 100644 index 0000000..ec3ddde Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_eu_aupatu.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_eu_bildu.png b/web/sites/all/modules/contrib/service_links/images/_eu_bildu.png new file mode 100644 index 0000000..335fa0f Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_eu_bildu.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_eu_zabaldu.png b/web/sites/all/modules/contrib/service_links/images/_eu_zabaldu.png new file mode 100644 index 0000000..75440a0 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_eu_zabaldu.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_balatarin.png b/web/sites/all/modules/contrib/service_links/images/_fa_balatarin.png new file mode 100644 index 0000000..3e03ff6 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_balatarin.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_donbaleh.png b/web/sites/all/modules/contrib/service_links/images/_fa_donbaleh.png new file mode 100644 index 0000000..611f42a Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_donbaleh.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_friendfa.png b/web/sites/all/modules/contrib/service_links/images/_fa_friendfa.png new file mode 100644 index 0000000..28cb8a5 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_friendfa.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_viwio.png b/web/sites/all/modules/contrib/service_links/images/_fa_viwio.png new file mode 100644 index 0000000..04afe2e Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_viwio.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_hu_iwiw.png b/web/sites/all/modules/contrib/service_links/images/_hu_iwiw.png new file mode 100644 index 0000000..1314091 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_hu_iwiw.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_it_diggita.png b/web/sites/all/modules/contrib/service_links/images/_it_diggita.png new file mode 100644 index 0000000..eab0dd5 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_diggita.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_it_meemi.png b/web/sites/all/modules/contrib/service_links/images/_it_meemi.png new file mode 100644 index 0000000..d5406df Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_meemi.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_it_oknotizie.png b/web/sites/all/modules/contrib/service_links/images/_it_oknotizie.png new file mode 100644 index 0000000..8d4cfe1 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_oknotizie.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_it_segnalo.png b/web/sites/all/modules/contrib/service_links/images/_it_segnalo.png new file mode 100644 index 0000000..a12be6a Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_segnalo.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_it_technotizie.png b/web/sites/all/modules/contrib/service_links/images/_it_technotizie.png new file mode 100644 index 0000000..f50b19c Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_technotizie.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_it_wikio.png b/web/sites/all/modules/contrib/service_links/images/_it_wikio.png new file mode 100644 index 0000000..14e4e5c Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_wikio.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_it_ziczac.png b/web/sites/all/modules/contrib/service_links/images/_it_ziczac.png new file mode 100644 index 0000000..7c5bca7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_ziczac.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_nl_ekudos.png b/web/sites/all/modules/contrib/service_links/images/_nl_ekudos.png new file mode 100644 index 0000000..95ea494 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_nl_ekudos.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_nl_hyves.png b/web/sites/all/modules/contrib/service_links/images/_nl_hyves.png new file mode 100644 index 0000000..d02bc88 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_nl_hyves.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_nl_nujij.png b/web/sites/all/modules/contrib/service_links/images/_nl_nujij.png new file mode 100644 index 0000000..2985542 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_nl_nujij.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_pl_blip.png b/web/sites/all/modules/contrib/service_links/images/_pl_blip.png new file mode 100644 index 0000000..f6ff1f3 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_pl_blip.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_pl_sledzik.png b/web/sites/all/modules/contrib/service_links/images/_pl_sledzik.png new file mode 100644 index 0000000..d5df104 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_pl_sledzik.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_pl_wykop.png b/web/sites/all/modules/contrib/service_links/images/_pl_wykop.png new file mode 100644 index 0000000..e9cb4a7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_pl_wykop.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_100zakladok.png b/web/sites/all/modules/contrib/service_links/images/_ru_100zakladok.png new file mode 100644 index 0000000..b8b45a4 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_100zakladok.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_bobrdobr.png b/web/sites/all/modules/contrib/service_links/images/_ru_bobrdobr.png new file mode 100644 index 0000000..6bac123 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_bobrdobr.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_communizm.png b/web/sites/all/modules/contrib/service_links/images/_ru_communizm.png new file mode 100644 index 0000000..a190e05 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_communizm.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_linksiua.png b/web/sites/all/modules/contrib/service_links/images/_ru_linksiua.png new file mode 100644 index 0000000..56b4899 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_linksiua.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_linkstore.png b/web/sites/all/modules/contrib/service_links/images/_ru_linkstore.png new file mode 100644 index 0000000..b467d1a Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_linkstore.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_lopas.png b/web/sites/all/modules/contrib/service_links/images/_ru_lopas.png new file mode 100644 index 0000000..bbb57d1 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_lopas.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_memori.png b/web/sites/all/modules/contrib/service_links/images/_ru_memori.png new file mode 100644 index 0000000..c61d283 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_memori.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_moemesto.png b/web/sites/all/modules/contrib/service_links/images/_ru_moemesto.png new file mode 100644 index 0000000..63caf74 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_moemesto.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_myscoop.png b/web/sites/all/modules/contrib/service_links/images/_ru_myscoop.png new file mode 100644 index 0000000..011b539 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_myscoop.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_news2.png b/web/sites/all/modules/contrib/service_links/images/_ru_news2.png new file mode 100644 index 0000000..1eab15d Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_news2.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_newsland.png b/web/sites/all/modules/contrib/service_links/images/_ru_newsland.png new file mode 100644 index 0000000..37b4277 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_newsland.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_ruspace.png b/web/sites/all/modules/contrib/service_links/images/_ru_ruspace.png new file mode 100644 index 0000000..cfaa6de Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_ruspace.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_smi2.png b/web/sites/all/modules/contrib/service_links/images/_ru_smi2.png new file mode 100644 index 0000000..3f39cf8 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_smi2.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_vaau.png b/web/sites/all/modules/contrib/service_links/images/_ru_vaau.png new file mode 100644 index 0000000..9ca028f Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_vaau.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_vkontakte.png b/web/sites/all/modules/contrib/service_links/images/_ru_vkontakte.png new file mode 100644 index 0000000..e970bc3 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_vkontakte.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_yandex.png b/web/sites/all/modules/contrib/service_links/images/_ru_yandex.png new file mode 100644 index 0000000..f983b9e Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_yandex.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_se_bloggy.png b/web/sites/all/modules/contrib/service_links/images/_se_bloggy.png new file mode 100644 index 0000000..9f3471e Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_se_bloggy.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/_se_pusha.png b/web/sites/all/modules/contrib/service_links/images/_se_pusha.png new file mode 100644 index 0000000..f743e61 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_se_pusha.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/blinklist.png b/web/sites/all/modules/contrib/service_links/images/blinklist.png new file mode 100644 index 0000000..e34f00e Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/blinklist.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/box.png b/web/sites/all/modules/contrib/service_links/images/box.png new file mode 100644 index 0000000..6509cc4 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/box.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/delicious.png b/web/sites/all/modules/contrib/service_links/images/delicious.png new file mode 100644 index 0000000..fe891ee Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/delicious.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/digg.png b/web/sites/all/modules/contrib/service_links/images/digg.png new file mode 100644 index 0000000..4627f83 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/digg.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/diigo.png b/web/sites/all/modules/contrib/service_links/images/diigo.png new file mode 100644 index 0000000..6578845 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/diigo.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/facebook.png b/web/sites/all/modules/contrib/service_links/images/facebook.png new file mode 100644 index 0000000..49dfb91 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/facebook.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/favorite.png b/web/sites/all/modules/contrib/service_links/images/favorite.png new file mode 100644 index 0000000..41387cd Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/favorite.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/forward.png b/web/sites/all/modules/contrib/service_links/images/forward.png new file mode 100644 index 0000000..ed44b75 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/forward.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/furl.png b/web/sites/all/modules/contrib/service_links/images/furl.png new file mode 100644 index 0000000..ce7d90f Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/furl.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/google.png b/web/sites/all/modules/contrib/service_links/images/google.png new file mode 100644 index 0000000..ee484e4 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/google.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/google_plus.png b/web/sites/all/modules/contrib/service_links/images/google_plus.png new file mode 100644 index 0000000..200c8f7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/google_plus.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/google_plus_one.png b/web/sites/all/modules/contrib/service_links/images/google_plus_one.png new file mode 100644 index 0000000..56a65a9 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/google_plus_one.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/icerocket.png b/web/sites/all/modules/contrib/service_links/images/icerocket.png new file mode 100644 index 0000000..7a83eb7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/icerocket.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/identica.png b/web/sites/all/modules/contrib/service_links/images/identica.png new file mode 100644 index 0000000..a587fc8 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/identica.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/linkedin.png b/web/sites/all/modules/contrib/service_links/images/linkedin.png new file mode 100644 index 0000000..aac1182 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/linkedin.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/misterwong.png b/web/sites/all/modules/contrib/service_links/images/misterwong.png new file mode 100644 index 0000000..6ade4b9 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/misterwong.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/mixx.png b/web/sites/all/modules/contrib/service_links/images/mixx.png new file mode 100644 index 0000000..1bcbca2 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/mixx.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/myspace.png b/web/sites/all/modules/contrib/service_links/images/myspace.png new file mode 100644 index 0000000..0055aa7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/myspace.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/newskicks.png b/web/sites/all/modules/contrib/service_links/images/newskicks.png new file mode 100644 index 0000000..564ba77 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/newskicks.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/newsvine.png b/web/sites/all/modules/contrib/service_links/images/newsvine.png new file mode 100644 index 0000000..bdbc1e7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/newsvine.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/pingthis.png b/web/sites/all/modules/contrib/service_links/images/pingthis.png new file mode 100644 index 0000000..57e02b7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/pingthis.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/pinterest.png b/web/sites/all/modules/contrib/service_links/images/pinterest.png new file mode 100644 index 0000000..61e546a Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/pinterest.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/print.png b/web/sites/all/modules/contrib/service_links/images/print.png new file mode 100644 index 0000000..96b47ff Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/print.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/printmail.png b/web/sites/all/modules/contrib/service_links/images/printmail.png new file mode 100644 index 0000000..4d1ea80 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/printmail.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/printpdf.png b/web/sites/all/modules/contrib/service_links/images/printpdf.png new file mode 100644 index 0000000..1e04554 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/printpdf.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/reddit.png b/web/sites/all/modules/contrib/service_links/images/reddit.png new file mode 100644 index 0000000..9a158b8 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/reddit.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/slashdot.png b/web/sites/all/modules/contrib/service_links/images/slashdot.png new file mode 100644 index 0000000..b0541e7 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/slashdot.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/stumbleit.png b/web/sites/all/modules/contrib/service_links/images/stumbleit.png new file mode 100644 index 0000000..dc11bd6 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/stumbleit.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/technorati.png b/web/sites/all/modules/contrib/service_links/images/technorati.png new file mode 100644 index 0000000..200ebbf Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/technorati.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/twitter.png b/web/sites/all/modules/contrib/service_links/images/twitter.png new file mode 100644 index 0000000..84704eb Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/twitter.png differ diff --git a/web/sites/all/modules/contrib/service_links/images/yahoo.png b/web/sites/all/modules/contrib/service_links/images/yahoo.png new file mode 100644 index 0000000..c699d85 Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/yahoo.png differ diff --git a/web/sites/all/modules/contrib/service_links/js/facebook_like.js b/web/sites/all/modules/contrib/service_links/js/facebook_like.js new file mode 100644 index 0000000..c9bcf56 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/js/facebook_like.js @@ -0,0 +1,25 @@ +(function ($) { + Drupal.behaviors.ws_fl = { + attach: function (context, settings) { + $('a.service-links-facebook-like', context).each(function(){ + var iframe = document.createElement('iframe'); + + iframe.src = $(this).attr('href').replace('http://', '//').replace(/http[s]*\%3A\/\//, ''); + iframe.setAttribute('scrolling', 'no'); + iframe.setAttribute('frameborder', 0); + iframe.setAttribute('allowTransparency', 'true'); + + $(iframe).css({ + 'border': 'none', + 'overflow': 'hidden', + 'width': Drupal.settings.ws_fl.width + 'px', + 'height': Drupal.settings.ws_fl.height + 'px', + }); + + $(iframe).addClass($(this).attr('class')); + + $(this).replaceWith(iframe); + }); + } + } +})(jQuery); diff --git a/web/sites/all/modules/contrib/service_links/js/facebook_share.js b/web/sites/all/modules/contrib/service_links/js/facebook_share.js new file mode 100644 index 0000000..112baa6 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/js/facebook_share.js @@ -0,0 +1,42 @@ +(function ($) { + Drupal.behaviors.ws_fs = { + scriptadded: false, + + attach: function (context, settings) { + if (!this.scriptadded) { + var fdiv_root, js, div_root ; + var fjs = document.getElementsByTagName('script')[0]; + + if (!document.getElementById('fb-root')) { + div_root = document.createElement('div'); + div_root.id = 'fb-root'; + document.body.appendChild(div_root); + } + + if (!document.getElementById('facebook-jssdk')) { + js = document.createElement('script'); + js.id = 'facebook-jssdk'; + js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=" + Drupal.settings.ws_fs.app_id; + fjs.parentNode.insertBefore(js, fjs); + this.scriptadded = true; + } + } + + $('a.service-links-facebook-share', context).once(function(){ + var f_text = document.createElement('fb:share-button'); + var css = Drupal.settings.ws_fs.css.split(';'); + var key_value = new Array(); + + f_text.setAttribute('type', Drupal.settings.ws_fs.type); + f_text.setAttribute('href', $(this).attr('rel')); + + for (i = 0; i < css.length; i++){ + key_value = css[i].split(':'); + $(f_text).css(key_value[0], key_value[1]); + } + + $(this).replaceWith(f_text); + }); + } + } +})(jQuery); diff --git a/web/sites/all/modules/contrib/service_links/js/favorite_services.js b/web/sites/all/modules/contrib/service_links/js/favorite_services.js new file mode 100644 index 0000000..9e61397 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/js/favorite_services.js @@ -0,0 +1,40 @@ +(function ($) { + Drupal.behaviors.sl_fs = { + attach: function(context, settings) { + var $favorites = $("a.service-links-favorite", context).once('service-links-favorite'); + var message = ''; + + $favorites.show(); + if (window.chrome) { + message= Drupal.t('Use CTRL + D to add this to your bookmarks'); + } else if (window.opera && window.print) { + $favorites.each(function(){ + var url = $(this).attr('href').split('&favtitle='); + var title = decodeURI(url[1]); + url = url[0]; + $(this).attr('rel', 'sidebar').attr('href', url).attr('title', title); + }); + } else if (window.sidebar || window.external) { + $favorites.click(function(event){ + event.preventDefault(); + var url = $(this).attr('href').split('&favtitle='); + var title = decodeURI(url[1]); + url = url[0]; + if (window.sidebar) { + window.sidebar.addPanel(title, url, ''); + } else if (window.external) { + window.external.AddFavorite(url, title); + } + }); + } else { + message = Drupal.t('Please use your browser to bookmark this page.'); + } + if (message) { + $favorites.click(function(event){ + event.preventDefault(); + alert(message); + }); + } + } + } +})(jQuery); diff --git a/web/sites/all/modules/contrib/service_links/js/google_plus_one.js b/web/sites/all/modules/contrib/service_links/js/google_plus_one.js new file mode 100644 index 0000000..13a7b29 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/js/google_plus_one.js @@ -0,0 +1,48 @@ +(function ($) { + Drupal.behaviors.ws_gpo = { + scriptadded: false, + + attach: function (context, settings) { + $('a.service-links-google-plus-one', context).once(function(){ + var g_text = document.createElement('g:plusone'); + + g_text.setAttribute('href', $(this).attr('href')); + g_text.setAttribute('width', Drupal.settings.ws_gpo.width); + + if (Drupal.settings.ws_gpo.size != '') { + g_text.setAttribute('size', Drupal.settings.ws_gpo.size); + } + if (Drupal.settings.ws_gpo.annotation != '') { + g_text.setAttribute('annotation', Drupal.settings.ws_gpo.annotation); + } + if (Drupal.settings.ws_gpo.callback) { + g_text.setAttribute('callback', Drupal.settings.ws_gpo.callback); + } + + $(this).replaceWith(g_text); + }); + + if (this.scriptadded) { + gapi.plusone.go(); + } else { + var params = { parsetags: "explicit" }; + + if (Drupal.settings.ws_gpo.lang != '') { + params.lang = Drupal.settings.ws_gpo.lang; + } + + window.___gcfg = params + + $.ajax({ + url: "https://apis.google.com/js/plusone.js", + dataType: "script", + cache: true, + success: function () { + this.scriptadded = true; + gapi.plusone.go(); + } + }); + } + } + } +})(jQuery); diff --git a/web/sites/all/modules/contrib/service_links/js/interface.js b/web/sites/all/modules/contrib/service_links/js/interface.js new file mode 100644 index 0000000..bcb2855 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/js/interface.js @@ -0,0 +1,12 @@ +/** + * Interface Elements for jQuery + * + * http://interface.eyecon.ro + * + * Copyright (c) 2006 Stefan Petre + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * + */ + eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('k.f2={2r:u(M){E q.1E(u(){if(!M.aR||!M.aZ)E;D el=q;el.2l={aq:M.aq||cO,aR:M.aR,aZ:M.aZ,8e:M.8e||\'fV\',aJ:M.aJ||\'fV\',2Y:M.2Y&&2g M.2Y==\'u\'?M.2Y:I,3i:M.2Y&&2g M.3i==\'u\'?M.3i:I,7U:M.7U&&2g M.7U==\'u\'?M.7U:I,as:k(M.aR,q),8f:k(M.aZ,q),H:M.H||8J,67:M.67||0};el.2l.8f.2G().B(\'W\',\'9R\').eq(0).B({W:el.2l.aq+\'U\',19:\'2B\'}).2T();el.2l.as.1E(u(2N){q.7X=2N}).gC(u(){k(q).2R(el.2l.aJ)},u(){k(q).4i(el.2l.aJ)}).1J(\'5h\',u(e){if(el.2l.67==q.7X)E;el.2l.as.eq(el.2l.67).4i(el.2l.8e).2T().eq(q.7X).2R(el.2l.8e).2T();el.2l.8f.eq(el.2l.67).5w({W:0},el.2l.H,u(){q.14.19=\'1o\';if(el.2l.3i){el.2l.3i.1D(el,[q])}}).2T().eq(q.7X).1Y().5w({W:el.2l.aq},el.2l.H,u(){q.14.19=\'2B\';if(el.2l.2Y){el.2l.2Y.1D(el,[q])}}).2T();if(el.2l.7U){el.2l.7U.1D(el,[q,el.2l.8f.K(q.7X),el.2l.as.K(el.2l.67),el.2l.8f.K(el.2l.67)])}el.2l.67=q.7X}).eq(0).2R(el.2l.8e).2T();k(q).B(\'W\',k(q).B(\'W\')).B(\'2U\',\'2K\')})}};k.fn.gN=k.f2.2r;k.aA={2r:u(M){E q.1E(u(){D el=q;D 7E=2*18.2Q/f1;D an=2*18.2Q;if(k(el).B(\'Y\')!=\'2s\'&&k(el).B(\'Y\')!=\'1P\'){k(el).B(\'Y\',\'2s\')}el.1l={1R:k(M.1R,q),2F:M.2F,6q:M.6q,aD:M.aD,an:an,1N:k.1a.2o(q),Y:k.1a.3w(q),26:18.2Q/2,bi:M.bi,8p:M.6r,6r:[],aG:I,7E:2*18.2Q/f1};el.1l.fB=(el.1l.1N.w-el.1l.2F)/2;el.1l.7D=(el.1l.1N.h-el.1l.6q-el.1l.6q*el.1l.8p)/2;el.1l.2D=2*18.2Q/el.1l.1R.1N();el.1l.ba=el.1l.1N.w/2;el.1l.b9=el.1l.1N.h/2-el.1l.6q*el.1l.8p;D ak=1h.3F(\'22\');k(ak).B({Y:\'1P\',3I:1,Q:0,O:0});k(el).1S(ak);el.1l.1R.1E(u(2N){a6=k(\'1T\',q).K(0);W=T(el.1l.6q*el.1l.8p);if(k.3a.4t){3E=1h.3F(\'1T\');k(3E).B(\'Y\',\'1P\');3E.2J=a6.2J;3E.14.5E=\'gE 9n:9w.9y.cC(1G=60, 14=1, gB=0, gA=0, gv=0, gF=0)\'}P{3E=1h.3F(\'3E\');if(3E.fD){4L=3E.fD("2d");3E.14.Y=\'1P\';3E.14.W=W+\'U\';3E.14.Z=el.1l.2F+\'U\';3E.W=W;3E.Z=el.1l.2F;4L.gu();4L.gO(0,W);4L.gk(1,-1);4L.gp(a6,0,0,el.1l.2F,W);4L.6H();4L.gm="gG-4l";D ap=4L.hy(0,0,0,W);ap.fs(1,"fr(1V, 1V, 1V, 1)");ap.fs(0,"fr(1V, 1V, 1V, 0.6)");4L.hx=ap;if(hA.hB.3J(\'hw\')!=-1){4L.hv()}P{4L.hu(0,0,el.1l.2F,W)}}}el.1l.6r[2N]=3E;k(ak).1S(3E)}).1J(\'9z\',u(e){el.1l.aG=1b;el.1l.H=el.1l.7E*0.1*el.1l.H/18.3S(el.1l.H);E I}).1J(\'8B\',u(e){el.1l.aG=I;E I});k.aA.7T(el);el.1l.H=el.1l.7E*0.2;el.1l.ht=1X.6V(u(){el.1l.26+=el.1l.H;if(el.1l.26>an)el.1l.26=0;k.aA.7T(el)},20);k(el).1J(\'8B\',u(){el.1l.H=el.1l.7E*0.2*el.1l.H/18.3S(el.1l.H)}).1J(\'3D\',u(e){if(el.1l.aG==I){1s=k.1a.4a(e);fz=el.1l.1N.w-1s.x+el.1l.Y.x;el.1l.H=el.1l.bi*el.1l.7E*(el.1l.1N.w/2-fz)/(el.1l.1N.w/2)}})})},7T:u(el){el.1l.1R.1E(u(2N){b8=el.1l.26+2N*el.1l.2D;x=el.1l.fB*18.5H(b8);y=el.1l.7D*18.83(b8);f9=T(2a*(el.1l.7D+y)/(2*el.1l.7D));fk=(el.1l.7D+y)/(2*el.1l.7D);Z=T((el.1l.2F-el.1l.aD)*fk+el.1l.aD);W=T(Z*el.1l.6q/el.1l.2F);q.14.Q=el.1l.b9+y-W/2+"U";q.14.O=el.1l.ba+x-Z/2+"U";q.14.Z=Z+"U";q.14.W=W+"U";q.14.3I=f9;el.1l.6r[2N].14.Q=T(el.1l.b9+y+W-1-W/2)+"U";el.1l.6r[2N].14.O=T(el.1l.ba+x-Z/2)+"U";el.1l.6r[2N].14.Z=Z+"U";el.1l.6r[2N].14.W=T(W*el.1l.8p)+"U"})}};k.fn.hI=k.aA.2r;k.23({G:{c8:u(p,n,1W,1H,1m){E((-18.5H(p*18.2Q)/2)+0.5)*1H+1W},hK:u(p,n,1W,1H,1m){E 1H*(n/=1m)*n*n+1W},fl:u(p,n,1W,1H,1m){E-1H*((n=n/1m-1)*n*n*n-1)+1W},hm:u(p,n,1W,1H,1m){if((n/=1m/2)<1)E 1H/2*n*n*n*n+1W;E-1H/2*((n-=2)*n*n*n-2)+1W},8l:u(p,n,1W,1H,1m){if((n/=1m)<(1/2.75)){E 1H*(7.aB*n*n)+1W}P if(n<(2/2.75)){E 1H*(7.aB*(n-=(1.5/2.75))*n+.75)+1W}P if(n<(2.5/2.75)){E 1H*(7.aB*(n-=(2.25/2.75))*n+.gY)+1W}P{E 1H*(7.aB*(n-=(2.h2/2.75))*n+.gX)+1W}},cr:u(p,n,1W,1H,1m){if(k.G.8l)E 1H-k.G.8l(p,1m-n,0,1H,1m)+1W;E 1W+1H},gW:u(p,n,1W,1H,1m){if(k.G.cr&&k.G.8l)if(n<1m/2)E k.G.cr(p,n*2,0,1H,1m)*.5+1W;E k.G.8l(p,n*2-1m,0,1H,1m)*.5+1H*.5+1W;E 1W+1H},gQ:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m)==1)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}E-(a*18.6b(2,10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p))+1W},gT:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}E a*18.6b(2,-10*n)*18.83((n*1m-s)*(2*18.2Q)/p)+1H+1W},gV:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}if(n<1){E-.5*(a*18.6b(2,10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p))+1W}E a*18.6b(2,-10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p)*.5+1H+1W}}});k.6n={2r:u(M){E q.1E(u(){D el=q;el.1F={1R:k(M.1R,q),1Z:k(M.1Z,q),1M:k.1a.3w(q),2F:M.2F,ax:M.ax,7Y:M.7Y,ge:M.ge,51:M.51,6x:M.6x};k.6n.aH(el,0);k(1X).1J(\'gU\',u(){el.1F.1M=k.1a.3w(el);k.6n.aH(el,0);k.6n.7T(el)});k.6n.7T(el);el.1F.1R.1J(\'9z\',u(){k(el.1F.ax,q).K(0).14.19=\'2B\'}).1J(\'8B\',u(){k(el.1F.ax,q).K(0).14.19=\'1o\'});k(1h).1J(\'3D\',u(e){D 1s=k.1a.4a(e);D 5s=0;if(el.1F.51&&el.1F.51==\'cv\')D aI=1s.x-el.1F.1M.x-(el.4c-el.1F.2F*el.1F.1R.1N())/2-el.1F.2F/2;P if(el.1F.51&&el.1F.51==\'2L\')D aI=1s.x-el.1F.1M.x-el.4c+el.1F.2F*el.1F.1R.1N();P D aI=1s.x-el.1F.1M.x;D fP=18.6b(1s.y-el.1F.1M.y-el.5W/2,2);el.1F.1R.1E(u(2N){45=18.ez(18.6b(aI-2N*el.1F.2F,2)+fP);45-=el.1F.2F/2;45=45<0?0:45;45=45>el.1F.7Y?el.1F.7Y:45;45=el.1F.7Y-45;bB=el.1F.6x*45/el.1F.7Y;q.14.Z=el.1F.2F+bB+\'U\';q.14.O=el.1F.2F*2N+5s+\'U\';5s+=bB});k.6n.aH(el,5s)})})},aH:u(el,5s){if(el.1F.51)if(el.1F.51==\'cv\')el.1F.1Z.K(0).14.O=(el.4c-el.1F.2F*el.1F.1R.1N())/2-5s/2+\'U\';P if(el.1F.51==\'O\')el.1F.1Z.K(0).14.O=-5s/el.1F.1R.1N()+\'U\';P if(el.1F.51==\'2L\')el.1F.1Z.K(0).14.O=(el.4c-el.1F.2F*el.1F.1R.1N())-5s/2+\'U\';el.1F.1Z.K(0).14.Z=el.1F.2F*el.1F.1R.1N()+5s+\'U\'},7T:u(el){el.1F.1R.1E(u(2N){q.14.Z=el.1F.2F+\'U\';q.14.O=el.1F.2F*2N+\'U\'})}};k.fn.hi=k.6n.2r;k.N={1c:S,8R:S,3A:S,2I:S,4y:S,cl:S,1d:S,2h:S,1R:S,5o:u(){k.N.8R.5o();if(k.N.3A){k.N.3A.2G()}},4w:u(){k.N.1R=S;k.N.2h=S;k.N.4y=k.N.1d.2y;if(k.N.1c.B(\'19\')==\'2B\'){if(k.N.1d.1f.fx){3m(k.N.1d.1f.fx.1u){1e\'c6\':k.N.1c.7a(k.N.1d.1f.fx.1m,k.N.5o);1r;1e\'1z\':k.N.1c.fq(k.N.1d.1f.fx.1m,k.N.5o);1r;1e\'a7\':k.N.1c.g3(k.N.1d.1f.fx.1m,k.N.5o);1r}}P{k.N.1c.2G()}if(k.N.1d.1f.3i)k.N.1d.1f.3i.1D(k.N.1d,[k.N.1c,k.N.3A])}P{k.N.5o()}1X.bH(k.N.2I)},dQ:u(){D 1d=k.N.1d;D 4d=k.N.aY(1d);if(1d&&4d.3o!=k.N.4y&&4d.3o.1g>=1d.1f.aL){k.N.4y=4d.3o;k.N.cl=4d.3o;81={2n:k(1d).1p(\'hj\')||\'2n\',2y:4d.3o};k.hl({1u:\'hk\',81:k.hf(81),he:u(fZ){1d.1f.4e=k(\'3o\',fZ);1N=1d.1f.4e.1N();if(1N>0){D 5p=\'\';1d.1f.4e.1E(u(2N){5p+=\'<8P 4I="\'+k(\'2y\',q).3g()+\'" 8K="\'+2N+\'" 14="9b: ad;">\'+k(\'3g\',q).3g()+\'\'});if(1d.1f.aU){D 3M=k(\'2y\',1d.1f.4e.K(0)).3g();1d.2y=4d.3j+3M+1d.1f.3N+4d.66;k.N.6J(1d,4d.3o.1g!=3M.1g?(4d.3j.1g+4d.3o.1g):3M.1g,4d.3o.1g!=3M.1g?(4d.3j.1g+3M.1g):3M.1g)}if(1N>0){k.N.cj(1d,5p)}P{k.N.4w()}}P{k.N.4w()}},5N:1d.1f.aN})}},cj:u(1d,5p){k.N.8R.3x(5p);k.N.1R=k(\'8P\',k.N.8R.K(0));k.N.1R.9z(k.N.di).1J(\'5h\',k.N.dj);D Y=k.1a.3w(1d);D 1N=k.1a.2o(1d);k.N.1c.B(\'Q\',Y.y+1N.hb+\'U\').B(\'O\',Y.x+\'U\').2R(1d.1f.aM);if(k.N.3A){k.N.3A.B(\'19\',\'2B\').B(\'Q\',Y.y+1N.hb+\'U\').B(\'O\',Y.x+\'U\').B(\'Z\',k.N.1c.B(\'Z\')).B(\'W\',k.N.1c.B(\'W\'))}k.N.2h=0;k.N.1R.K(0).3l=1d.1f.7H;k.N.8Q(1d,1d.1f.4e.K(0),\'7J\');if(k.N.1c.B(\'19\')==\'1o\'){if(1d.1f.bV){D cp=k.1a.aT(1d,1b);D cm=k.1a.6U(1d,1b);k.N.1c.B(\'Z\',1d.4c-(k.dF?(cp.l+cp.r+cm.l+cm.r):0)+\'U\')}if(1d.1f.fx){3m(1d.1f.fx.1u){1e\'c6\':k.N.1c.7f(1d.1f.fx.1m);1r;1e\'1z\':k.N.1c.fo(1d.1f.fx.1m);1r;1e\'a7\':k.N.1c.gb(1d.1f.fx.1m);1r}}P{k.N.1c.1Y()}if(k.N.1d.1f.2Y)k.N.1d.1f.2Y.1D(k.N.1d,[k.N.1c,k.N.3A])}},dO:u(){D 1d=q;if(1d.1f.4e){k.N.4y=1d.2y;k.N.cl=1d.2y;D 5p=\'\';1d.1f.4e.1E(u(2N){2y=k(\'2y\',q).3g().6c();fY=1d.2y.6c();if(2y.3J(fY)==0){5p+=\'<8P 4I="\'+k(\'2y\',q).3g()+\'" 8K="\'+2N+\'" 14="9b: ad;">\'+k(\'3g\',q).3g()+\'\'}});if(5p!=\'\'){k.N.cj(1d,5p);q.1f.9x=1b;E}}1d.1f.4e=S;q.1f.9x=I},6J:u(2n,26,2T){if(2n.b1){D 6t=2n.b1();6t.hp(1b);6t.dI("ck",26);6t.ha("ck",-2T+26);6t.8C()}P if(2n.aF){2n.aF(26,2T)}P{if(2n.5q){2n.5q=26;2n.dN=2T}}2n.6K()},f0:u(2n){if(2n.5q)E 2n.5q;P if(2n.b1){D 6t=1h.6J.dZ();D eX=6t.h9();E 0-eX.dI(\'ck\',-h6)}},aY:u(2n){D 4P={2y:2n.2y,3j:\'\',66:\'\',3o:\'\'};if(2n.1f.aQ){D 8N=I;D 5q=k.N.f0(2n)||0;D 4T=4P.2y.7C(2n.1f.3N);24(D i=0;i<4T.1g;i++){if((4P.3j.1g+4T[i].1g>=5q||5q==0)&&!8N){if(4P.3j.1g<=5q)4P.3o=4T[i];P 4P.66+=4T[i]+(4T[i]!=\'\'?2n.1f.3N:\'\');8N=1b}P if(8N){4P.66+=4T[i]+(4T[i]!=\'\'?2n.1f.3N:\'\')}if(!8N){4P.3j+=4T[i]+(4T.1g>1?2n.1f.3N:\'\')}}}P{4P.3o=4P.2y}E 4P},bU:u(e){1X.bH(k.N.2I);D 1d=k.N.aY(q);D 3K=e.7L||e.7K||-1;if(/13|27|35|36|38|40|9/.48(3K)&&k.N.1R){if(1X.2k){1X.2k.bT=1b;1X.2k.c0=I}P{e.aP();e.aW()}if(k.N.2h!=S)k.N.1R.K(k.N.2h||0).3l=\'\';P k.N.2h=-1;3m(3K){1e 9:1e 13:if(k.N.2h==-1)k.N.2h=0;D 2h=k.N.1R.K(k.N.2h||0);D 3M=2h.5C(\'4I\');q.2y=1d.3j+3M+q.1f.3N+1d.66;k.N.4y=1d.3o;k.N.6J(q,1d.3j.1g+3M.1g+q.1f.3N.1g,1d.3j.1g+3M.1g+q.1f.3N.1g);k.N.4w();if(q.1f.68){4u=T(2h.5C(\'8K\'))||0;k.N.8Q(q,q.1f.4e.K(4u),\'68\')}if(q.7W)q.7W(I);E 3K!=13;1r;1e 27:q.2y=1d.3j+k.N.4y+q.1f.3N+1d.66;q.1f.4e=S;k.N.4w();if(q.7W)q.7W(I);E I;1r;1e 35:k.N.2h=k.N.1R.1N()-1;1r;1e 36:k.N.2h=0;1r;1e 38:k.N.2h--;if(k.N.2h<0)k.N.2h=k.N.1R.1N()-1;1r;1e 40:k.N.2h++;if(k.N.2h==k.N.1R.1N())k.N.2h=0;1r}k.N.8Q(q,q.1f.4e.K(k.N.2h||0),\'7J\');k.N.1R.K(k.N.2h||0).3l=q.1f.7H;if(k.N.1R.K(k.N.2h||0).7W)k.N.1R.K(k.N.2h||0).7W(I);if(q.1f.aU){D aK=k.N.1R.K(k.N.2h||0).5C(\'4I\');q.2y=1d.3j+aK+q.1f.3N+1d.66;if(k.N.4y.1g!=aK.1g)k.N.6J(q,1d.3j.1g+k.N.4y.1g,1d.3j.1g+aK.1g)}E I}k.N.dO.1D(q);if(q.1f.9x==I){if(1d.3o!=k.N.4y&&1d.3o.1g>=q.1f.aL)k.N.2I=1X.9T(k.N.dQ,q.1f.54);if(k.N.1R){k.N.4w()}}E 1b},8Q:u(2n,3o,1u){if(2n.1f[1u]){D 81={};ar=3o.f3(\'*\');24(i=0;i\');k.N.3A=k(\'#ds\')}k(\'2e\',1h).1S(\'<22 id="dr" 14="Y: 1P; Q: 0; O: 0; z-cZ: h3; 19: 1o;"><9h 14="6w: 0;8F: 0; h1-14: 1o; z-cZ: h0;">&7k;\');k.N.1c=k(\'#dr\');k.N.8R=k(\'9h\',k.N.1c)}E q.1E(u(){if(q.4Y!=\'ch\'&&q.5C(\'1u\')!=\'3g\')E;q.1f={};q.1f.aN=M.aN;q.1f.aL=18.3S(T(M.aL)||1);q.1f.aM=M.aM?M.aM:\'\';q.1f.7H=M.7H?M.7H:\'\';q.1f.68=M.68&&M.68.1K==2A?M.68:S;q.1f.2Y=M.2Y&&M.2Y.1K==2A?M.2Y:S;q.1f.3i=M.3i&&M.3i.1K==2A?M.3i:S;q.1f.7J=M.7J&&M.7J.1K==2A?M.7J:S;q.1f.bV=M.bV||I;q.1f.aQ=M.aQ||I;q.1f.3N=q.1f.aQ?(M.3N||\', \'):\'\';q.1f.aU=M.aU?1b:I;q.1f.54=18.3S(T(M.54)||aC);if(M.fx&&M.fx.1K==7M){if(!M.fx.1u||!/c6|1z|a7/.48(M.fx.1u)){M.fx.1u=\'1z\'}if(M.fx.1u==\'1z\'&&!k.fx.1z)E;if(M.fx.1u==\'a7\'&&!k.fx.61)E;M.fx.1m=18.3S(T(M.fx.1m)||8J);if(M.fx.1m>q.1f.54){M.fx.1m=q.1f.54-2a}q.1f.fx=M.fx}q.1f.4e=S;q.1f.9x=I;k(q).1p(\'bU\',\'eN\').6K(u(){k.N.1d=q;k.N.4y=q.2y}).dH(k.N.eJ).6y(k.N.bU).5B(u(){k.N.2I=1X.9T(k.N.4w,hM)})})}};k.fn.hR=k.N.2r;k.1y={2I:S,4Q:S,29:S,2D:10,26:u(el,4J,2D,eG){k.1y.4Q=el;k.1y.29=4J;k.1y.2D=T(2D)||10;k.1y.2I=1X.6V(k.1y.eF,T(eG)||40)},eF:u(){24(i=0;i0&&k.1y.29[i].2X.y+k.1y.29[i].2X.t>69.y){k.1y.29[i].3d-=k.1y.2D}P if(k.1y.29[i].2X.t<=k.1y.29[i].2X.h&&k.1y.29[i].2X.t+k.1y.29[i].2X.hb<69.y+69.hb){k.1y.29[i].3d+=k.1y.2D}if(k.1y.29[i].2X.l>0&&k.1y.29[i].2X.x+k.1y.29[i].2X.l>69.x){k.1y.29[i].3c-=k.1y.2D}P if(k.1y.29[i].2X.l<=k.1y.29[i].2X.hP&&k.1y.29[i].2X.l+k.1y.29[i].2X.1C<69.x+69.1C){k.1y.29[i].3c+=k.1y.2D}}},8o:u(){1X.5T(k.1y.2I);k.1y.4Q=S;k.1y.29=S;24(i in k.1y.29){k.1y.29[i].2X=S}}};k.11={1c:S,F:S,4U:u(){E q.1E(u(){if(q.9I){q.A.5e.3q(\'5v\',k.11.bN);q.A=S;q.9I=I;if(k.3a.4t){q.bE="eN"}P{q.14.hq=\'\';q.14.e1=\'\';q.14.e7=\'\'}}})},bN:u(e){if(k.11.F!=S){k.11.9A(e);E I}D C=q.3U;k(1h).1J(\'3D\',k.11.bX).1J(\'5P\',k.11.9A);C.A.1s=k.1a.4a(e);C.A.4B=C.A.1s;C.A.7q=I;C.A.ho=q!=q.3U;k.11.F=C;if(C.A.5i&&q!=q.3U){bS=k.1a.3w(C.31);bQ=k.1a.2o(C);bR={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};dx=C.A.4B.x-bS.x-bQ.1C/2-bR.x;dy=C.A.4B.y-bS.y-bQ.hb/2-bR.y;k.3b.5c(C,[dx,dy])}E k.7n||I},ea:u(e){D C=k.11.F;C.A.7q=1b;D 9G=C.14;C.A.7V=k.B(C,\'19\');C.A.4n=k.B(C,\'Y\');if(!C.A.cz)C.A.cz=C.A.4n;C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.9B=0;C.A.ai=0;if(k.3a.4t){D bW=k.1a.6U(C,1b);C.A.9B=bW.l||0;C.A.ai=bW.t||0}C.A.1B=k.23(k.1a.3w(C),k.1a.2o(C));if(C.A.4n!=\'2s\'&&C.A.4n!=\'1P\'){9G.Y=\'2s\'}k.11.1c.5o();D 5g=C.fI(1b);k(5g).B({19:\'2B\',O:\'2P\',Q:\'2P\'});5g.14.5K=\'0\';5g.14.5z=\'0\';5g.14.5k=\'0\';5g.14.5j=\'0\';k.11.1c.1S(5g);D 3Y=k.11.1c.K(0).14;if(C.A.bD){3Y.Z=\'9F\';3Y.W=\'9F\'}P{3Y.W=C.A.1B.hb+\'U\';3Y.Z=C.A.1B.1C+\'U\'}3Y.19=\'2B\';3Y.5K=\'2P\';3Y.5z=\'2P\';3Y.5k=\'2P\';3Y.5j=\'2P\';k.23(C.A.1B,k.1a.2o(5g));if(C.A.2V){if(C.A.2V.O){C.A.2c.x+=C.A.1s.x-C.A.1B.x-C.A.2V.O;C.A.1B.x=C.A.1s.x-C.A.2V.O}if(C.A.2V.Q){C.A.2c.y+=C.A.1s.y-C.A.1B.y-C.A.2V.Q;C.A.1B.y=C.A.1s.y-C.A.2V.Q}if(C.A.2V.2L){C.A.2c.x+=C.A.1s.x-C.A.1B.x-C.A.1B.hb+C.A.2V.2L;C.A.1B.x=C.A.1s.x-C.A.1B.1C+C.A.2V.2L}if(C.A.2V.4D){C.A.2c.y+=C.A.1s.y-C.A.1B.y-C.A.1B.hb+C.A.2V.4D;C.A.1B.y=C.A.1s.y-C.A.1B.hb+C.A.2V.4D}}C.A.2v=C.A.2c.x;C.A.2q=C.A.2c.y;if(C.A.8s||C.A.2p==\'94\'){8U=k.1a.6U(C.31,1b);C.A.1B.x=C.8t+(k.3a.4t?0:k.3a.7I?-8U.l:8U.l);C.A.1B.y=C.8G+(k.3a.4t?0:k.3a.7I?-8U.t:8U.t);k(C.31).1S(k.11.1c.K(0))}if(C.A.2p){k.11.c5(C);C.A.5t.2p=k.11.ce}if(C.A.5i){k.3b.ct(C)}3Y.O=C.A.1B.x-C.A.9B+\'U\';3Y.Q=C.A.1B.y-C.A.ai+\'U\';3Y.Z=C.A.1B.1C+\'U\';3Y.W=C.A.1B.hb+\'U\';k.11.F.A.9E=I;if(C.A.gx){C.A.5t.6a=k.11.c7}if(C.A.3I!=I){k.11.1c.B(\'3I\',C.A.3I)}if(C.A.1G){k.11.1c.B(\'1G\',C.A.1G);if(1X.71){k.11.1c.B(\'5E\',\'8V(1G=\'+C.A.1G*2a+\')\')}}if(C.A.7O){k.11.1c.2R(C.A.7O);k.11.1c.K(0).7c.14.19=\'1o\'}if(C.A.4o)C.A.4o.1D(C,[5g,C.A.2c.x,C.A.2c.y]);if(k.1x&&k.1x.8D>0){k.1x.ed(C)}if(C.A.46==I){9G.19=\'1o\'}E I},c5:u(C){if(C.A.2p.1K==b0){if(C.A.2p==\'94\'){C.A.28=k.23({x:0,y:0},k.1a.2o(C.31));D 8S=k.1a.6U(C.31,1b);C.A.28.w=C.A.28.1C-8S.l-8S.r;C.A.28.h=C.A.28.hb-8S.t-8S.b}P if(C.A.2p==\'1h\'){D bY=k.1a.bm();C.A.28={x:0,y:0,w:bY.w,h:bY.h}}}P if(C.A.2p.1K==7F){C.A.28={x:T(C.A.2p[0])||0,y:T(C.A.2p[1])||0,w:T(C.A.2p[2])||0,h:T(C.A.2p[3])||0}}C.A.28.dx=C.A.28.x-C.A.1B.x;C.A.28.dy=C.A.28.y-C.A.1B.y},9H:u(F){if(F.A.8s||F.A.2p==\'94\'){k(\'2e\',1h).1S(k.11.1c.K(0))}k.11.1c.5o().2G().B(\'1G\',1);if(1X.71){k.11.1c.B(\'5E\',\'8V(1G=2a)\')}},9A:u(e){k(1h).3q(\'3D\',k.11.bX).3q(\'5P\',k.11.9A);if(k.11.F==S){E}D F=k.11.F;k.11.F=S;if(F.A.7q==I){E I}if(F.A.44==1b){k(F).B(\'Y\',F.A.4n)}D 9G=F.14;if(F.5i){k.11.1c.B(\'9b\',\'8j\')}if(F.A.7O){k.11.1c.4i(F.A.7O)}if(F.A.6N==I){if(F.A.fx>0){if(!F.A.1O||F.A.1O==\'4j\'){D x=12 k.fx(F,{1m:F.A.fx},\'O\');x.1L(F.A.2c.x,F.A.8y)}if(!F.A.1O||F.A.1O==\'49\'){D y=12 k.fx(F,{1m:F.A.fx},\'Q\');y.1L(F.A.2c.y,F.A.8v)}}P{if(!F.A.1O||F.A.1O==\'4j\')F.14.O=F.A.8y+\'U\';if(!F.A.1O||F.A.1O==\'49\')F.14.Q=F.A.8v+\'U\'}k.11.9H(F);if(F.A.46==I){k(F).B(\'19\',F.A.7V)}}P if(F.A.fx>0){F.A.9E=1b;D dh=I;if(k.1x&&k.1t&&F.A.44){dh=k.1a.3w(k.1t.1c.K(0))}k.11.1c.5w({O:dh?dh.x:F.A.1B.x,Q:dh?dh.y:F.A.1B.y},F.A.fx,u(){F.A.9E=I;if(F.A.46==I){F.14.19=F.A.7V}k.11.9H(F)})}P{k.11.9H(F);if(F.A.46==I){k(F).B(\'19\',F.A.7V)}}if(k.1x&&k.1x.8D>0){k.1x.eO(F)}if(k.1t&&F.A.44){k.1t.fC(F)}if(F.A.2Z&&(F.A.8y!=F.A.2c.x||F.A.8v!=F.A.2c.y)){F.A.2Z.1D(F,F.A.b3||[0,0,F.A.8y,F.A.8v])}if(F.A.3T)F.A.3T.1D(F);E I},c7:u(x,y,dx,dy){if(dx!=0)dx=T((dx+(q.A.gx*dx/18.3S(dx))/2)/q.A.gx)*q.A.gx;if(dy!=0)dy=T((dy+(q.A.gy*dy/18.3S(dy))/2)/q.A.gy)*q.A.gy;E{dx:dx,dy:dy,x:0,y:0}},ce:u(x,y,dx,dy){dx=18.3L(18.3r(dx,q.A.28.dx),q.A.28.w+q.A.28.dx-q.A.1B.1C);dy=18.3L(18.3r(dy,q.A.28.dy),q.A.28.h+q.A.28.dy-q.A.1B.hb);E{dx:dx,dy:dy,x:0,y:0}},bX:u(e){if(k.11.F==S||k.11.F.A.9E==1b){E}D F=k.11.F;F.A.4B=k.1a.4a(e);if(F.A.7q==I){45=18.ez(18.6b(F.A.1s.x-F.A.4B.x,2)+18.6b(F.A.1s.y-F.A.4B.y,2));if(450){k.1x.al(F)}E I},2r:u(o){if(!k.11.1c){k(\'2e\',1h).1S(\'<22 id="e8">\');k.11.1c=k(\'#e8\');D el=k.11.1c.K(0);D 4J=el.14;4J.Y=\'1P\';4J.19=\'1o\';4J.9b=\'8j\';4J.eu=\'1o\';4J.2U=\'2K\';if(1X.71){el.bE="e4"}P{4J.gi=\'1o\';4J.e7=\'1o\';4J.e1=\'1o\'}}if(!o){o={}}E q.1E(u(){if(q.9I||!k.1a)E;if(1X.71){q.gh=u(){E I};q.gj=u(){E I}}D el=q;D 5e=o.3v?k(q).gf(o.3v):k(q);if(k.3a.4t){5e.1E(u(){q.bE="e4"})}P{5e.B(\'-gI-7R-8C\',\'1o\');5e.B(\'7R-8C\',\'1o\');5e.B(\'-gH-7R-8C\',\'1o\')}q.A={5e:5e,6N:o.6N?1b:I,46:o.46?1b:I,44:o.44?o.44:I,5i:o.5i?o.5i:I,8s:o.8s?o.8s:I,3I:o.3I?T(o.3I)||0:I,1G:o.1G?2m(o.1G):I,fx:T(o.fx)||S,6R:o.6R?o.6R:I,5t:{},1s:{},4o:o.4o&&o.4o.1K==2A?o.4o:I,3T:o.3T&&o.3T.1K==2A?o.3T:I,2Z:o.2Z&&o.2Z.1K==2A?o.2Z:I,1O:/49|4j/.48(o.1O)?o.1O:I,6M:o.6M?T(o.6M)||0:0,2V:o.2V?o.2V:I,bD:o.bD?1b:I,7O:o.7O||I};if(o.5t&&o.5t.1K==2A)q.A.5t.7R=o.5t;if(o.4m&&o.4m.1K==2A)q.A.4m=o.4m;if(o.2p&&((o.2p.1K==b0&&(o.2p==\'94\'||o.2p==\'1h\'))||(o.2p.1K==7F&&o.2p.1g==4))){q.A.2p=o.2p}if(o.2O){q.A.2O=o.2O}if(o.6a){if(2g o.6a==\'gz\'){q.A.gx=T(o.6a)||1;q.A.gy=T(o.6a)||1}P if(o.6a.1g==2){q.A.gx=T(o.6a[0])||1;q.A.gy=T(o.6a[1])||1}}if(o.3H&&o.3H.1K==2A){q.A.3H=o.3H}q.9I=1b;5e.1E(u(){q.3U=el});5e.1J(\'5v\',k.11.bN)})}};k.fn.23({aS:k.11.4U,7t:k.11.2r});k.1x={du:u(5J,5G,7Q,7S){E 5J<=k.11.F.A.2v&&(5J+7Q)>=(k.11.F.A.2v+k.11.F.A.1B.w)&&5G<=k.11.F.A.2q&&(5G+7S)>=(k.11.F.A.2q+k.11.F.A.1B.h)?1b:I},cV:u(5J,5G,7Q,7S){E!(5J>(k.11.F.A.2v+k.11.F.A.1B.w)||(5J+7Q)(k.11.F.A.2q+k.11.F.A.1B.h)||(5G+7S)k.11.F.A.4B.x&&5Gk.11.F.A.4B.y?1b:I},5r:I,3Q:{},8D:0,3P:{},ed:u(C){if(k.11.F==S){E}D i;k.1x.3Q={};D bJ=I;24(i in k.1x.3P){if(k.1x.3P[i]!=S){D 1j=k.1x.3P[i].K(0);if(k(k.11.F).is(\'.\'+1j.1i.a)){if(1j.1i.m==I){1j.1i.p=k.23(k.1a.7G(1j),k.1a.74(1j));1j.1i.m=1b}if(1j.1i.ac){k.1x.3P[i].2R(1j.1i.ac)}k.1x.3Q[i]=k.1x.3P[i];if(k.1t&&1j.1i.s&&k.11.F.A.44){1j.1i.el=k(\'.\'+1j.1i.a,1j);C.14.19=\'1o\';k.1t.cT(1j);1j.1i.ay=k.1t.8x(k.1p(1j,\'id\')).7l;C.14.19=C.A.7V;bJ=1b}if(1j.1i.9i){1j.1i.9i.1D(k.1x.3P[i].K(0),[k.11.F])}}}}if(bJ){k.1t.26()}},dS:u(){k.1x.3Q={};24(i in k.1x.3P){if(k.1x.3P[i]!=S){D 1j=k.1x.3P[i].K(0);if(k(k.11.F).is(\'.\'+1j.1i.a)){1j.1i.p=k.23(k.1a.7G(1j),k.1a.74(1j));if(1j.1i.ac){k.1x.3P[i].2R(1j.1i.ac)}k.1x.3Q[i]=k.1x.3P[i];if(k.1t&&1j.1i.s&&k.11.F.A.44){1j.1i.el=k(\'.\'+1j.1i.a,1j);C.14.19=\'1o\';k.1t.cT(1j);C.14.19=C.A.7V}}}}},al:u(e){if(k.11.F==S){E}k.1x.5r=I;D i;D bK=I;D eQ=0;24(i in k.1x.3Q){D 1j=k.1x.3Q[i].K(0);if(k.1x.5r==I&&k.1x[1j.1i.t](1j.1i.p.x,1j.1i.p.y,1j.1i.p.1C,1j.1i.p.hb)){if(1j.1i.hc&&1j.1i.h==I){k.1x.3Q[i].2R(1j.1i.hc)}if(1j.1i.h==I&&1j.1i.7x){bK=1b}1j.1i.h=1b;k.1x.5r=1j;if(k.1t&&1j.1i.s&&k.11.F.A.44){k.1t.1c.K(0).3l=1j.1i.eV;k.1t.al(1j)}eQ++}P if(1j.1i.h==1b){if(1j.1i.7y){1j.1i.7y.1D(1j,[e,k.11.1c.K(0).7c,1j.1i.fx])}if(1j.1i.hc){k.1x.3Q[i].4i(1j.1i.hc)}1j.1i.h=I}}if(k.1t&&!k.1x.5r&&k.11.F.44){k.1t.1c.K(0).14.19=\'1o\'}if(bK){k.1x.5r.1i.7x.1D(k.1x.5r,[e,k.11.1c.K(0).7c])}},eO:u(e){D i;24(i in k.1x.3Q){D 1j=k.1x.3Q[i].K(0);if(1j.1i.ac){k.1x.3Q[i].4i(1j.1i.ac)}if(1j.1i.hc){k.1x.3Q[i].4i(1j.1i.hc)}if(1j.1i.s){k.1t.7s[k.1t.7s.1g]=i}if(1j.1i.9l&&1j.1i.h==1b){1j.1i.h=I;1j.1i.9l.1D(1j,[e,1j.1i.fx])}1j.1i.m=I;1j.1i.h=I}k.1x.3Q={}},4U:u(){E q.1E(u(){if(q.9j){if(q.1i.s){id=k.1p(q,\'id\');k.1t.5L[id]=S;k(\'.\'+q.1i.a,q).aS()}k.1x.3P[\'d\'+q.c2]=S;q.9j=I;q.f=S}})},2r:u(o){E q.1E(u(){if(q.9j==1b||!o.3C||!k.1a||!k.11){E}q.1i={a:o.3C,ac:o.9J||I,hc:o.a5||I,eV:o.58||I,9l:o.gq||o.9l||I,7x:o.7x||o.dC||I,7y:o.7y||o.fO||I,9i:o.9i||I,t:o.6I&&(o.6I==\'du\'||o.6I==\'cV\')?o.6I:\'1s\',fx:o.fx?o.fx:I,m:I,h:I};if(o.cQ==1b&&k.1t){id=k.1p(q,\'id\');k.1t.5L[id]=q.1i.a;q.1i.s=1b;if(o.2Z){q.1i.2Z=o.2Z;q.1i.ay=k.1t.8x(id).7l}}q.9j=1b;q.c2=T(18.6o()*c9);k.1x.3P[\'d\'+q.c2]=k(q);k.1x.8D++})}};k.fn.23({dR:k.1x.4U,do:k.1x.2r});k.gD=k.1x.dS;k.3B={1c:S,8L:u(){3g=q.2y;if(!3g)E;14={dz:k(q).B(\'dz\')||\'\',4A:k(q).B(\'4A\')||\'\',8Z:k(q).B(\'8Z\')||\'\',dP:k(q).B(\'dP\')||\'\',dT:k(q).B(\'dT\')||\'\',dU:k(q).B(\'dU\')||\'\',c3:k(q).B(\'c3\')||\'\',dY:k(q).B(\'dY\')||\'\'};k.3B.1c.B(14);3x=k.3B.dX(3g);3x=3x.4E(12 bb("\\\\n","g"),"
");k.3B.1c.3x(\'gL\');ci=k.3B.1c.K(0).4c;k.3B.1c.3x(3x);Z=k.3B.1c.K(0).4c+ci;if(q.6l.2M&&Z>q.6l.2M[0]){Z=q.6l.2M[0]}q.14.Z=Z+\'U\';if(q.4Y==\'cf\'){W=k.3B.1c.K(0).5W+ci;if(q.6l.2M&&W>q.6l.2M[1]){W=q.6l.2M[1]}q.14.W=W+\'U\'}},dX:u(3g){cg={\'&\':\'&gK;\',\'<\':\'&gJ;\',\'>\':\'>\',\'"\':\'&gs;\'};24(i in cg){3g=3g.4E(12 bb(i,\'g\'),cg[i])}E 3g},2r:u(2M){if(k.3B.1c==S){k(\'2e\',1h).1S(\'<22 id="dE" 14="Y: 1P; Q: 0; O: 0; 3n: 2K;">\');k.3B.1c=k(\'#dE\')}E q.1E(u(){if(/cf|ch/.48(q.4Y)){if(q.4Y==\'ch\'){dB=q.5C(\'1u\');if(!/3g|gr/.48(dB)){E}}if(2M&&(2M.1K==bn||(2M.1K==7F&&2M.1g==2))){if(2M.1K==bn)2M=[2M,2M];P{2M[0]=T(2M[0])||8J;2M[1]=T(2M[1])||8J}q.6l={2M:2M}}k(q).5B(k.3B.8L).6y(k.3B.8L).dH(k.3B.8L);k.3B.8L.1D(q)}})}};k.fn.kc=k.3B.2r;k.4K=u(e){if(/^kd$|^ke$|^ka$|^6L$|^k9$|^k5$|^k4$|^k6$|^k7$|^2e$|^k8$|^kf$|^kg$|^kn$|^ko$|^kp$|^kq$/i.48(e.9N))E I;P E 1b};k.fx.a0=u(e,65){D c=e.7c;D cs=c.14;cs.Y=65.Y;cs.5K=65.3G.t;cs.5j=65.3G.l;cs.5k=65.3G.b;cs.5z=65.3G.r;cs.Q=65.Q+\'U\';cs.O=65.O+\'U\';e.31.ew(c,e);e.31.km(e)};k.fx.9P=u(e){if(!k.4K(e))E I;D t=k(e);D es=e.14;D 73=I;if(t.B(\'19\')==\'1o\'){5Y=t.B(\'3n\');t.B(\'3n\',\'2K\').1Y();73=1b}D V={};V.Y=t.B(\'Y\');V.1q=k.1a.2o(e);V.3G=k.1a.cy(e);D co=e.4Z?e.4Z.ei:t.B(\'hU\');V.Q=T(t.B(\'Q\'))||0;V.O=T(t.B(\'O\'))||0;D eo=\'kl\'+T(18.6o()*c9);D 6u=1h.3F(/^1T$|^br$|^kh$|^hr$|^8C$|^kj$|^8T$|^3A$|^kk$|^k3$|^k2$|^9h$|^dl$|^jM$/i.48(e.9N)?\'22\':e.9N);k.1p(6u,\'id\',eo);D jN=k(6u).2R(\'jO\');D 4h=6u.14;D Q=0;D O=0;if(V.Y==\'2s\'||V.Y==\'1P\'){Q=V.Q;O=V.O}4h.Q=Q+\'U\';4h.O=O+\'U\';4h.Y=V.Y!=\'2s\'&&V.Y!=\'1P\'?\'2s\':V.Y;4h.W=V.1q.hb+\'U\';4h.Z=V.1q.1C+\'U\';4h.5K=V.3G.t;4h.5z=V.3G.r;4h.5k=V.3G.b;4h.5j=V.3G.l;4h.2U=\'2K\';if(k.3a.4t){4h.ei=co}P{4h.jK=co}if(k.3a=="4t"){es.5E="8V(1G="+0.ex*2a+")"}es.1G=0.ex;e.31.ew(6u,e);6u.jF(e);es.5K=\'2P\';es.5z=\'2P\';es.5k=\'2P\';es.5j=\'2P\';es.Y=\'1P\';es.eu=\'1o\';es.Q=\'2P\';es.O=\'2P\';if(73){t.2G();es.3n=5Y}E{V:V,3p:k(6u)}};k.fx.8E={jE:[0,1V,1V],jG:[eD,1V,1V],jH:[e6,e6,jI],jP:[0,0,0],ks:[0,0,1V],jY:[dv,42,42],jZ:[0,1V,1V],k0:[0,0,7w],k1:[0,7w,7w],jX:[cn,cn,cn],jS:[0,2a,0],jR:[jT,jU,eb],jV:[7w,0,7w],kr:[85,eb,47],kP:[1V,eA,0],kN:[kO,50,kx],kF:[7w,0,0],kD:[ku,f8,kt],ky:[kH,0,9C],kL:[1V,0,1V],kM:[1V,kJ,0],kv:[0,6C,0],kA:[75,0,kE],kC:[eD,eB,eA],kG:[kI,kB,eB],kw:[e0,1V,1V],kz:[eL,kK,eL],kQ:[9C,9C,9C],jC:[1V,iy,iz],iA:[1V,1V,e0],iB:[0,1V,0],ix:[1V,0,1V],iv:[6C,0,0],iq:[0,0,6C],ip:[6C,6C,0],ir:[1V,dv,0],it:[1V,ah,iu],iC:[6C,0,6C],iD:[1V,0,0],iK:[ah,ah,ah],iL:[1V,1V,1V],iM:[1V,1V,0]};k.fx.6D=u(4x,dm){if(k.fx.8E[4x])E{r:k.fx.8E[4x][0],g:k.fx.8E[4x][1],b:k.fx.8E[4x][2]};P if(2W=/^6Y\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)$/.a4(4x))E{r:T(2W[1]),g:T(2W[2]),b:T(2W[3])};P if(2W=/6Y\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)$/.a4(4x))E{r:2m(2W[1])*2.55,g:2m(2W[2])*2.55,b:2m(2W[3])*2.55};P if(2W=/^#([a-fA-79-9])([a-fA-79-9])([a-fA-79-9])$/.a4(4x))E{r:T("77"+2W[1]+2W[1]),g:T("77"+2W[2]+2W[2]),b:T("77"+2W[3]+2W[3])};P if(2W=/^#([a-fA-79-9]{2})([a-fA-79-9]{2})([a-fA-79-9]{2})$/.a4(4x))E{r:T("77"+2W[1]),g:T("77"+2W[2]),b:T("77"+2W[3])};P E dm==1b?I:{r:1V,g:1V,b:1V}};k.fx.dD={5Q:1,5b:1,5O:1,4S:1,4D:1,4A:1,W:1,O:1,c3:1,iI:1,5k:1,5j:1,5z:1,5K:1,8b:1,6x:1,8c:1,av:1,1G:1,iE:1,iF:1,5n:1,4X:1,5U:1,5M:1,2L:1,jD:1,Q:1,Z:1,3I:1};k.fx.dA={7i:1,iG:1,iH:1,io:1,im:1,4x:1,i2:1};k.fx.8A=[\'i3\',\'i4\',\'i5\',\'i1\'];k.fx.cc={\'cd\':[\'2E\',\'dK\'],\'a8\':[\'2E\',\'bh\'],\'6w\':[\'6w\',\'\'],\'8F\':[\'8F\',\'\']};k.fn.23({5w:u(5X,H,G,J){E q.1w(u(){D a1=k.H(H,G,J);D e=12 k.dM(q,a1,5X)})},c4:u(H,J){E q.1w(u(){D a1=k.H(H,J);D e=12 k.c4(q,a1)})},8o:u(2D){E q.1E(u(){if(q.6d)k.by(q,2D)})},i0:u(2D){E q.1E(u(){if(q.6d)k.by(q,2D);if(q.1w&&q.1w[\'fx\'])q.1w.fx=[]})}});k.23({c4:u(2f,M){D z=q,3t;z.2D=u(){if(k.fQ(M.21))M.21.1D(2f)};z.2I=6V(u(){z.2D()},M.1m);2f.6d=z},G:{c8:u(p,n,1W,1H,1m){E((-18.5H(p*18.2Q)/2)+0.5)*1H+1W}},dM:u(2f,M,5X){D z=q,3t;D y=2f.14;D fR=k.B(2f,"2U");D 72=k.B(2f,"19");D 2j={};z.9O=(12 7g()).7z();M.G=M.G&&k.G[M.G]?M.G:\'c8\';z.ag=u(2w,43){if(k.fx.dD[2w]){if(43==\'1Y\'||43==\'2G\'||43==\'3R\'){if(!2f.6v)2f.6v={};D r=2m(k.6E(2f,2w));2f.6v[2w]=r&&r>-c9?r:(2m(k.B(2f,2w))||0);43=43==\'3R\'?(72==\'1o\'?\'1Y\':\'2G\'):43;M[43]=1b;2j[2w]=43==\'1Y\'?[0,2f.6v[2w]]:[2f.6v[2w],0];if(2w!=\'1G\')y[2w]=2j[2w][0]+(2w!=\'3I\'&&2w!=\'8Z\'?\'U\':\'\');P k.1p(y,"1G",2j[2w][0])}P{2j[2w]=[2m(k.6E(2f,2w)),2m(43)||0]}}P if(k.fx.dA[2w])2j[2w]=[k.fx.6D(k.6E(2f,2w)),k.fx.6D(43)];P if(/^6w$|8F$|2E$|a8$|cd$/i.48(2w)){D m=43.4E(/\\s+/g,\' \').4E(/6Y\\s*\\(\\s*/g,\'6Y(\').4E(/\\s*,\\s*/g,\',\').4E(/\\s*\\)/g,\')\').d5(/([^\\s]+)/g);3m(2w){1e\'6w\':1e\'8F\':1e\'cd\':1e\'a8\':m[3]=m[3]||m[1]||m[0];m[2]=m[2]||m[0];m[1]=m[1]||m[0];24(D i=0;iM.1m+z.9O){5T(z.2I);z.2I=S;24(p in 2j){if(p=="1G")k.1p(y,"1G",2j[p][1]);P if(2g 2j[p][1]==\'8T\')y[p]=\'6Y(\'+2j[p][1].r+\',\'+2j[p][1].g+\',\'+2j[p][1].b+\')\';P y[p]=2j[p][1]+(p!=\'3I\'&&p!=\'8Z\'?\'U\':\'\')}if(M.2G||M.1Y)24(D p in 2f.6v)if(p=="1G")k.1p(y,p,2f.6v[p]);P y[p]="";y.19=M.2G?\'1o\':(72!=\'1o\'?72:\'2B\');y.2U=fR;2f.6d=S;if(k.fQ(M.21))M.21.1D(2f)}P{D n=t-q.9O;D 8w=n/M.1m;24(p in 2j){if(2g 2j[p][1]==\'8T\'){y[p]=\'6Y(\'+T(k.G[M.G](8w,n,2j[p][0].r,(2j[p][1].r-2j[p][0].r),M.1m))+\',\'+T(k.G[M.G](8w,n,2j[p][0].g,(2j[p][1].g-2j[p][0].g),M.1m))+\',\'+T(k.G[M.G](8w,n,2j[p][0].b,(2j[p][1].b-2j[p][0].b),M.1m))+\')\'}P{D bz=k.G[M.G](8w,n,2j[p][0],(2j[p][1]-2j[p][0]),M.1m);if(p=="1G")k.1p(y,"1G",bz);P y[p]=bz+(p!=\'3I\'&&p!=\'8Z\'?\'U\':\'\')}}}};z.2I=6V(u(){z.2D()},13);2f.6d=z},by:u(2f,2D){if(2D)2f.6d.9O-=iO;P{1X.5T(2f.6d.2I);2f.6d=S;k.2H(2f,"fx")}}});k.bl=u(5Z){D 5f={};if(2g 5Z==\'4V\'){5Z=5Z.6c().7C(\';\');24(D i=0;i<5Z.1g;i++){6X=5Z[i].7C(\':\');if(6X.1g==2){5f[k.g6(6X[0].4E(/\\-(\\w)/g,u(m,c){E c.jo()}))]=k.g6(6X[1])}}}E 5f};k.fn.23({g3:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'4F\',G)})},gb:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'4r\',G)})},jl:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'fJ\',G)})},jk:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'O\',G)})},jg:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'2L\',G)})},jf:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'fh\',G)})}});k.fx.61=u(e,H,J,2S,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.1N=k.1a.2o(e);z.G=2g J==\'4V\'?J:G||S;if(!e.4s)e.4s=z.el.B(\'19\');if(2S==\'fJ\'){2S=z.el.B(\'19\')==\'1o\'?\'4r\':\'4F\'}P if(2S==\'fh\'){2S=z.el.B(\'19\')==\'1o\'?\'2L\':\'O\'}z.el.1Y();z.H=H;z.J=2g J==\'u\'?J:S;z.fx=k.fx.9P(e);z.2S=2S;z.21=u(){if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}if(z.2S==\'4r\'||z.2S==\'2L\'){z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s)}P{z.el.2G()}k.fx.a0(z.fx.3p.K(0),z.fx.V);k.2H(z.el.K(0),\'1n\')};3m(z.2S){1e\'4F\':63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');63.1L(z.fx.V.1q.hb,0);1r;1e\'4r\':z.fx.3p.B(\'W\',\'9R\');z.el.1Y();63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');63.1L(0,z.fx.V.1q.hb);1r;1e\'O\':63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');63.1L(z.fx.V.1q.1C,0);1r;1e\'2L\':z.fx.3p.B(\'Z\',\'9R\');z.el.1Y();63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');63.1L(0,z.fx.V.1q.1C);1r}};k.fn.ji=u(5D,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D e=12 k.fx.f4(q,5D,J);e.bp()})};k.fx.f4=u(e,5D,J){D z=q;z.el=k(e);z.el.1Y();z.J=J;z.5D=T(5D)||40;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=T(z.el.B(\'Q\'))||0;z.V.O=T(z.el.B(\'O\'))||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.3V=5;z.5y=1;z.bp=u(){z.5y++;z.e=12 k.fx(z.el.K(0),{1m:jj,21:u(){z.e=12 k.fx(z.el.K(0),{1m:80,21:u(){z.5D=T(z.5D/2);if(z.5y<=z.3V)z.bp();P{z.el.B(\'Y\',z.V.Y).B(\'Q\',z.V.Q+\'U\').B(\'O\',z.V.O+\'U\');k.2H(z.el.K(0),\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}}}},\'Q\');z.e.1L(z.V.Q-z.5D,z.V.Q)}},\'Q\');z.e.1L(z.V.Q,z.V.Q-z.5D)}};k.fn.23({jy:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'4l\',G)})},jz:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'in\',G)})},jA:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'3R\',G)})},jB:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'4l\',G)})},jx:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'in\',G)})},jw:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'3R\',G)})},js:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'4l\',G)})},jt:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'in\',G)})},ju:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'3R\',G)})},jv:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'4l\',G)})},je:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'in\',G)})},jd:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'3R\',G)})}});k.fx.4f=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=z.el.B(\'Q\');z.V.O=z.el.B(\'O\');if(!e.4s)e.4s=z.el.B(\'19\');if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'in\':\'4l\'}z.el.1Y();if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.1u=1u;J=2g J==\'u\'?J:S;8H=1;3m(2S){1e\'4F\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.62=2m(z.V.Q)||0;z.9K=z.fG;8H=-1;1r;1e\'4r\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.62=2m(z.V.Q)||0;z.9K=z.fG;1r;1e\'2L\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.62=2m(z.V.O)||0;z.9K=z.fy;1r;1e\'O\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.62=2m(z.V.O)||0;z.9K=z.fy;8H=-1;1r}z.e2=12 k.fx(z.el.K(0),k.H(H,z.G,u(){z.el.B(z.V);if(z.1u==\'4l\'){z.el.B(\'19\',\'1o\')}P z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s);k.2H(z.el.K(0),\'1n\')}),\'1G\');if(1u==\'in\'){z.e.1L(z.62+2a*8H,z.62);z.e2.1L(0,1)}P{z.e.1L(z.62,z.62+2a*8H);z.e2.1L(1,0)}};k.fn.23({j0:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'fp\',G)})},iW:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'9M\',G)})},iV:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'3R\',G)})}});k.fx.9L=u(e,H,W,J,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'9M\':\'fp\'}z.H=H;z.W=W&&W.1K==bn?W:20;z.fx=k.fx.9P(e);z.1u=1u;z.21=u(){if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}if(z.1u==\'9M\'){z.el.1Y()}P{z.el.2G()}k.fx.a0(z.fx.3p.K(0),z.fx.V);k.2H(z.el.K(0),\'1n\')};if(z.1u==\'9M\'){z.el.1Y();z.fx.3p.B(\'W\',z.W+\'U\').B(\'Z\',\'9R\');z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,u(){z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');z.ef.1L(z.W,z.fx.V.1q.hb)}),\'Z\');z.ef.1L(0,z.fx.V.1q.1C)}P{z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,u(){z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');z.ef.1L(z.fx.V.1q.1C,0)}),\'W\');z.ef.1L(z.fx.V.1q.hb,z.W)}};k.fn.iR=u(H,4x,J,G){E q.1w(\'fv\',u(){q.6W=k(q).1p("14")||\'\';G=2g J==\'4V\'?J:G||S;J=2g J==\'u\'?J:S;D 9S=k(q).B(\'7i\');D 8I=q.31;7d(9S==\'cu\'&&8I){9S=k(8I).B(\'7i\');8I=8I.31}k(q).B(\'7i\',4x);if(2g q.6W==\'8T\')q.6W=q.6W["9X"];k(q).5w({\'7i\':9S},H,G,u(){k.2H(q,\'fv\');if(2g k(q).1p("14")==\'8T\'){k(q).1p("14")["9X"]="";k(q).1p("14")["9X"]=q.6W}P{k(q).1p("14",q.6W)}if(J)J.1D(q)})})};k.fn.23({iT:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'49\',\'6g\',G)})},iU:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'4j\',\'6g\',G)})},j1:u(H,J,G){E q.1w(\'1n\',u(){if(k.B(q,\'19\')==\'1o\'){12 k.fx.5m(q,H,J,\'4j\',\'6Z\',G)}P{12 k.fx.5m(q,H,J,\'4j\',\'6g\',G)}})},j2:u(H,J,G){E q.1w(\'1n\',u(){if(k.B(q,\'19\')==\'1o\'){12 k.fx.5m(q,H,J,\'49\',\'6Z\',G)}P{12 k.fx.5m(q,H,J,\'49\',\'6g\',G)}})},j9:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'49\',\'6Z\',G)})},ja:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'4j\',\'6Z\',G)})}});k.fx.5m=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;D 73=I;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;z.1u=1u;z.H=H;z.2i=k.1a.2o(e);z.V={};z.V.Y=z.el.B(\'Y\');z.V.19=z.el.B(\'19\');if(z.V.19==\'1o\'){5Y=z.el.B(\'3n\');z.el.1Y();73=1b}z.V.Q=z.el.B(\'Q\');z.V.O=z.el.B(\'O\');if(73){z.el.2G();z.el.B(\'3n\',5Y)}z.V.Z=z.2i.w+\'U\';z.V.W=z.2i.h+\'U\';z.V.2U=z.el.B(\'2U\');z.2i.Q=T(z.V.Q)||0;z.2i.O=T(z.V.O)||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.el.B(\'2U\',\'2K\').B(\'W\',1u==\'6Z\'&&2S==\'49\'?1:z.2i.h+\'U\').B(\'Z\',1u==\'6Z\'&&2S==\'4j\'?1:z.2i.w+\'U\');z.21=u(){z.el.B(z.V);if(z.1u==\'6g\')z.el.2G();P z.el.1Y();k.2H(z.el.K(0),\'1n\')};3m(2S){1e\'49\':z.eh=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'W\');z.et=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');if(z.1u==\'6g\'){z.eh.1L(z.2i.h,0);z.et.1L(z.2i.Q,z.2i.Q+z.2i.h/2)}P{z.eh.1L(0,z.2i.h);z.et.1L(z.2i.Q+z.2i.h/2,z.2i.Q)}1r;1e\'4j\':z.eh=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Z\');z.et=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');if(z.1u==\'6g\'){z.eh.1L(z.2i.w,0);z.et.1L(z.2i.O,z.2i.O+z.2i.w/2)}P{z.eh.1L(0,z.2i.w);z.et.1L(z.2i.O+z.2i.w/2,z.2i.O)}1r}};k.fn.bg=u(H,3V,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D fx=12 k.fx.bg(q,H,3V,J);fx.bf()})};k.fx.bg=u(el,H,3V,J){D z=q;z.3V=3V;z.5y=1;z.el=el;z.H=H;z.J=J;k(z.el).1Y();z.bf=u(){z.5y++;z.e=12 k.fx(z.el,k.H(z.H,u(){z.ef=12 k.fx(z.el,k.H(z.H,u(){if(z.5y<=z.3V)z.bf();P{k.2H(z.el,\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el)}}}),\'1G\');z.ef.1L(0,1)}),\'1G\');z.e.1L(1,0)}};k.fn.23({jb:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,1,2a,1b,J,\'fa\',G)})},jc:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,2a,1,1b,J,\'b4\',G)})},j8:u(H,J,G){E q.1w(\'1n\',u(){D G=G||\'fl\';12 k.fx.6G(q,H,2a,f8,1b,J,\'6h\',G)})},6G:u(H,57,30,6H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,57,30,6H,J,\'6G\',G)})}});k.fx.6G=u(e,H,57,30,6H,J,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.57=T(57)||2a;z.30=T(30)||2a;z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;z.1m=k.H(H).1m;z.6H=6H||S;z.2i=k.1a.2o(e);z.V={Z:z.el.B(\'Z\'),W:z.el.B(\'W\'),4A:z.el.B(\'4A\')||\'2a%\',Y:z.el.B(\'Y\'),19:z.el.B(\'19\'),Q:z.el.B(\'Q\'),O:z.el.B(\'O\'),2U:z.el.B(\'2U\'),4S:z.el.B(\'4S\'),5O:z.el.B(\'5O\'),5Q:z.el.B(\'5Q\'),5b:z.el.B(\'5b\'),5M:z.el.B(\'5M\'),5U:z.el.B(\'5U\'),5n:z.el.B(\'5n\'),4X:z.el.B(\'4X\')};z.Z=T(z.V.Z)||e.4c||0;z.W=T(z.V.W)||e.5W||0;z.Q=T(z.V.Q)||0;z.O=T(z.V.O)||0;1q=[\'em\',\'U\',\'j7\',\'%\'];24(i in 1q){if(z.V.4A.3J(1q[i])>0){z.fg=1q[i];z.4A=2m(z.V.4A)}if(z.V.4S.3J(1q[i])>0){z.fc=1q[i];z.bw=2m(z.V.4S)||0}if(z.V.5O.3J(1q[i])>0){z.fe=1q[i];z.bc=2m(z.V.5O)||0}if(z.V.5Q.3J(1q[i])>0){z.fL=1q[i];z.bA=2m(z.V.5Q)||0}if(z.V.5b.3J(1q[i])>0){z.g8=1q[i];z.bt=2m(z.V.5b)||0}if(z.V.5M.3J(1q[i])>0){z.g4=1q[i];z.bx=2m(z.V.5M)||0}if(z.V.5U.3J(1q[i])>0){z.g9=1q[i];z.bv=2m(z.V.5U)||0}if(z.V.5n.3J(1q[i])>0){z.gc=1q[i];z.bj=2m(z.V.5n)||0}if(z.V.4X.3J(1q[i])>0){z.fK=1q[i];z.b7=2m(z.V.4X)||0}}if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.el.B(\'2U\',\'2K\');z.1u=1u;3m(z.1u){1e\'fa\':z.4b=z.Q+z.2i.h/2;z.5a=z.Q;z.4k=z.O+z.2i.w/2;z.59=z.O;1r;1e\'b4\':z.5a=z.Q+z.2i.h/2;z.4b=z.Q;z.59=z.O+z.2i.w/2;z.4k=z.O;1r;1e\'6h\':z.5a=z.Q-z.2i.h/4;z.4b=z.Q;z.59=z.O-z.2i.w/4;z.4k=z.O;1r}z.be=I;z.t=(12 7g).7z();z.4w=u(){5T(z.2I);z.2I=S};z.2D=u(){if(z.be==I){z.el.1Y();z.be=1b}D t=(12 7g).7z();D n=t-z.t;D p=n/z.1m;if(t>=z.1m+z.t){9T(u(){o=1;if(z.1u){t=z.5a;l=z.59;if(z.1u==\'6h\')o=0}z.bs(z.30,l,t,1b,o)},13);z.4w()}P{o=1;if(!k.G||!k.G[z.G]){s=((-18.5H(p*18.2Q)/2)+0.5)*(z.30-z.57)+z.57}P{s=k.G[z.G](p,n,z.57,(z.30-z.57),z.1m)}if(z.1u){if(!k.G||!k.G[z.G]){t=((-18.5H(p*18.2Q)/2)+0.5)*(z.5a-z.4b)+z.4b;l=((-18.5H(p*18.2Q)/2)+0.5)*(z.59-z.4k)+z.4k;if(z.1u==\'6h\')o=((-18.5H(p*18.2Q)/2)+0.5)*(-0.9Y)+0.9Y}P{t=k.G[z.G](p,n,z.4b,(z.5a-z.4b),z.1m);l=k.G[z.G](p,n,z.4k,(z.59-z.4k),z.1m);if(z.1u==\'6h\')o=k.G[z.G](p,n,0.9Y,-0.9Y,z.1m)}}z.bs(s,l,t,I,o)}};z.2I=6V(u(){z.2D()},13);z.bs=u(4q,O,Q,fM,1G){z.el.B(\'W\',z.W*4q/2a+\'U\').B(\'Z\',z.Z*4q/2a+\'U\').B(\'O\',O+\'U\').B(\'Q\',Q+\'U\').B(\'4A\',z.4A*4q/2a+z.fg);if(z.bw)z.el.B(\'4S\',z.bw*4q/2a+z.fc);if(z.bc)z.el.B(\'5O\',z.bc*4q/2a+z.fe);if(z.bA)z.el.B(\'5Q\',z.bA*4q/2a+z.fL);if(z.bt)z.el.B(\'5b\',z.bt*4q/2a+z.g8);if(z.bx)z.el.B(\'5M\',z.bx*4q/2a+z.g4);if(z.bv)z.el.B(\'5U\',z.bv*4q/2a+z.g9);if(z.bj)z.el.B(\'5n\',z.bj*4q/2a+z.gc);if(z.b7)z.el.B(\'4X\',z.b7*4q/2a+z.fK);if(z.1u==\'6h\'){if(1X.71)z.el.K(0).14.5E="8V(1G="+1G*2a+")";z.el.K(0).14.1G=1G}if(fM){if(z.6H){z.el.B(z.V)}if(z.1u==\'b4\'||z.1u==\'6h\'){z.el.B(\'19\',\'1o\');if(z.1u==\'6h\'){if(1X.71)z.el.K(0).14.5E="8V(1G="+2a+")";z.el.K(0).14.1G=1}}P z.el.B(\'19\',\'2B\');if(z.J)z.J.1D(z.el.K(0));k.2H(z.el.K(0),\'1n\')}}};k.fn.23({9U:u(H,1O,G){o=k.H(H);E q.1w(\'1n\',u(){12 k.fx.9U(q,o,1O,G)})},j6:u(H,1O,G){E q.1E(u(){k(\'a[@3h*="#"]\',q).5h(u(e){fW=q.3h.7C(\'#\');k(\'#\'+fW[1]).9U(H,1O,G);E I})})}});k.fx.9U=u(e,o,1O,G){D z=q;z.o=o;z.e=e;z.1O=/fT|gd/.48(1O)?1O:I;z.G=G;p=k.1a.3w(e);s=k.1a.6z();z.4w=u(){5T(z.2I);z.2I=S;k.2H(z.e,\'1n\')};z.t=(12 7g).7z();s.h=s.h>s.ih?(s.h-s.ih):s.h;s.w=s.w>s.iw?(s.w-s.iw):s.w;z.5a=p.y>s.h?s.h:p.y;z.59=p.x>s.w?s.w:p.x;z.4b=s.t;z.4k=s.l;z.2D=u(){D t=(12 7g).7z();D n=t-z.t;D p=n/z.o.1m;if(t>=z.o.1m+z.t){z.4w();9T(u(){z.d3(z.5a,z.59)},13)}P{if(!z.1O||z.1O==\'fT\'){if(!k.G||!k.G[z.G]){9V=((-18.5H(p*18.2Q)/2)+0.5)*(z.5a-z.4b)+z.4b}P{9V=k.G[z.G](p,n,z.4b,(z.5a-z.4b),z.o.1m)}}P{9V=z.4b}if(!z.1O||z.1O==\'gd\'){if(!k.G||!k.G[z.G]){9W=((-18.5H(p*18.2Q)/2)+0.5)*(z.59-z.4k)+z.4k}P{9W=k.G[z.G](p,n,z.4k,(z.59-z.4k),z.o.1m)}}P{9W=z.4k}z.d3(9V,9W)}};z.d3=u(t,l){1X.j4(l,t)};z.2I=6V(u(){z.2D()},13)};k.fn.cY=u(3V,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D e=12 k.fx.cY(q,3V,J);e.cG()})};k.fx.cY=u(e,3V,J){D z=q;z.el=k(e);z.el.1Y();z.3V=T(3V)||3;z.J=J;z.5y=1;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=T(z.el.B(\'Q\'))||0;z.V.O=T(z.el.B(\'O\'))||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.cG=u(){z.5y++;z.e=12 k.fx(z.el.K(0),{1m:60,21:u(){z.e=12 k.fx(z.el.K(0),{1m:60,21:u(){z.e=12 k.fx(e,{1m:60,21:u(){if(z.5y<=z.3V)z.cG();P{z.el.B(\'Y\',z.V.Y).B(\'Q\',z.V.Q+\'U\').B(\'O\',z.V.O+\'U\');k.2H(z.el.K(0),\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}}}},\'O\');z.e.1L(z.V.O-20,z.V.O)}},\'O\');z.e.1L(z.V.O+20,z.V.O-20)}},\'O\');z.e.1L(z.V.O,z.V.O+20)}};k.fn.23({fo:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'in\',G)})},fq:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'4l\',G)})},iY:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'3R\',G)})},iX:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'in\',G)})},jr:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'4l\',G)})},jq:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'3R\',G)})},jp:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'in\',G)})},jn:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'4l\',G)})},jm:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'3R\',G)})},iP:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'in\',G)})},ic:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'4l\',G)})},ib:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'3R\',G)})}});k.fx.1z=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'in\':\'4l\'}if(!e.4s)e.4s=z.el.B(\'19\');z.el.1Y();z.H=H;z.fx=k.fx.9P(e);z.1u=1u;z.2S=2S;z.21=u(){if(z.1u==\'4l\')z.el.B(\'3n\',\'2K\');k.fx.a0(z.fx.3p.K(0),z.fx.V);if(z.1u==\'in\'){z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s)}P{z.el.B(\'19\',\'1o\');z.el.B(\'3n\',\'dd\')}if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}k.2H(z.el.K(0),\'1n\')};3m(z.2S){1e\'4F\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');z.7v=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G),\'W\');if(z.1u==\'in\'){z.ef.1L(-z.fx.V.1q.hb,0);z.7v.1L(0,z.fx.V.1q.hb)}P{z.ef.1L(0,-z.fx.V.1q.hb);z.7v.1L(z.fx.V.1q.hb,0)}1r;1e\'4r\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');if(z.1u==\'in\'){z.ef.1L(z.fx.V.1q.hb,0)}P{z.ef.1L(0,z.fx.V.1q.hb)}1r;1e\'O\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');z.7v=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G),\'Z\');if(z.1u==\'in\'){z.ef.1L(-z.fx.V.1q.1C,0);z.7v.1L(0,z.fx.V.1q.1C)}P{z.ef.1L(0,-z.fx.V.1q.1C);z.7v.1L(z.fx.V.1q.1C,0)}1r;1e\'2L\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');if(z.1u==\'in\'){z.ef.1L(z.fx.V.1q.1C,0)}P{z.ef.1L(0,z.fx.V.1q.1C)}1r}};k.3f=S;k.fn.ig=u(o){E q.1w(\'1n\',u(){12 k.fx.dG(q,o)})};k.fx.dG=u(e,o){if(k.3f==S){k(\'2e\',1h).1S(\'<22 id="3f">\');k.3f=k(\'#3f\')}k.3f.B(\'19\',\'2B\').B(\'Y\',\'1P\');D z=q;z.el=k(e);if(!o||!o.30){E}if(o.30.1K==b0&&1h.9e(o.30)){o.30=1h.9e(o.30)}P if(!o.30.dq){E}if(!o.1m){o.1m=g5}z.1m=o.1m;z.30=o.30;z.8r=o.3l;z.21=o.21;if(z.8r){k.3f.2R(z.8r)}z.a3=0;z.a2=0;if(k.dF){z.a3=(T(k.3f.B(\'5b\'))||0)+(T(k.3f.B(\'5O\'))||0)+(T(k.3f.B(\'4X\'))||0)+(T(k.3f.B(\'5U\'))||0);z.a2=(T(k.3f.B(\'4S\'))||0)+(T(k.3f.B(\'5Q\'))||0)+(T(k.3f.B(\'5M\'))||0)+(T(k.3f.B(\'5n\'))||0)}z.26=k.23(k.1a.3w(z.el.K(0)),k.1a.2o(z.el.K(0)));z.2T=k.23(k.1a.3w(z.30),k.1a.2o(z.30));z.26.1C-=z.a3;z.26.hb-=z.a2;z.2T.1C-=z.a3;z.2T.hb-=z.a2;z.J=o.21;k.3f.B(\'Z\',z.26.1C+\'U\').B(\'W\',z.26.hb+\'U\').B(\'Q\',z.26.y+\'U\').B(\'O\',z.26.x+\'U\').5w({Q:z.2T.y,O:z.2T.x,Z:z.2T.1C,W:z.2T.hb},z.1m,u(){if(z.8r)k.3f.4i(z.8r);k.3f.B(\'19\',\'1o\');if(z.21&&z.21.1K==2A){z.21.1D(z.el.K(0),[z.30])}k.2H(z.el.K(0),\'1n\')})};k.1v={M:{2E:10,ec:\'1Q/iJ.eZ\',e3:\'<1T 2J="1Q/6g.da" />\',eW:0.8,d8:\'iN a6\',dc:\'57\',3W:8J},jQ:I,jW:I,6j:S,8m:I,8k:I,d1:u(2k){if(!k.1v.8k||k.1v.8m)E;D 3K=2k.7L||2k.7K||-1;3m(3K){1e 35:if(k.1v.6j)k.1v.26(S,k(\'a[@4I=\'+k.1v.6j+\']:jJ\').K(0));1r;1e 36:if(k.1v.6j)k.1v.26(S,k(\'a[@4I=\'+k.1v.6j+\']:jL\').K(0));1r;1e 37:1e 8:1e 33:1e 80:1e kb:D 9p=k(\'#87\');if(9p.K(0).53!=S){9p.K(0).53.1D(9p.K(0))}1r;1e 38:1r;1e 39:1e 34:1e 32:1e gl:1e 78:D 9k=k(\'#88\');if(9k.K(0).53!=S){9k.K(0).53.1D(9k.K(0))}1r;1e 40:1r;1e 27:k.1v.au();1r}},7q:u(M){if(M)k.23(k.1v.M,M);if(1X.2k){k(\'2e\',1h).1J(\'6y\',k.1v.d1)}P{k(1h).1J(\'6y\',k.1v.d1)}k(\'a\').1E(u(){el=k(q);en=el.1p(\'4I\')||\'\';e9=el.1p(\'3h\')||\'\';ev=/\\.da|\\.gw|\\.8X|\\.eZ|\\.gn/g;if(e9.6c().d5(ev)!=S&&en.6c().3J(\'eU\')==0){el.1J(\'5h\',k.1v.26)}});if(k.3a.4t){3A=1h.3F(\'3A\');k(3A).1p({id:\'cN\',2J:\'ek:I;\',ej:\'cD\',ep:\'cD\'}).B({19:\'1o\',Y:\'1P\',Q:\'0\',O:\'0\',5E:\'9n:9w.9y.cC(1G=0)\'});k(\'2e\').1S(3A)}8n=1h.3F(\'22\');k(8n).1p(\'id\',\'cP\').B({Y:\'1P\',19:\'1o\',Q:\'0\',O:\'0\',1G:0}).1S(1h.8M(\' \')).1J(\'5h\',k.1v.au);6A=1h.3F(\'22\');k(6A).1p(\'id\',\'eK\').B({4X:k.1v.M.2E+\'U\'}).1S(1h.8M(\' \'));cE=1h.3F(\'22\');k(cE).1p(\'id\',\'dg\').B({4X:k.1v.M.2E+\'U\',5n:k.1v.M.2E+\'U\'}).1S(1h.8M(\' \'));cF=1h.3F(\'a\');k(cF).1p({id:\'gg\',3h:\'#\'}).B({Y:\'1P\',2L:k.1v.M.2E+\'U\',Q:\'0\'}).1S(k.1v.M.e3).1J(\'5h\',k.1v.au);7m=1h.3F(\'22\');k(7m).1p(\'id\',\'cM\').B({Y:\'2s\',cA:\'O\',6w:\'0 9F\',3I:1}).1S(6A).1S(cE).1S(cF);2b=1h.3F(\'1T\');2b.2J=k.1v.M.ec;k(2b).1p(\'id\',\'eM\').B({Y:\'1P\'});4G=1h.3F(\'a\');k(4G).1p({id:\'87\',3h:\'#\'}).B({Y:\'1P\',19:\'1o\',2U:\'2K\',ey:\'1o\'}).1S(1h.8M(\' \'));4M=1h.3F(\'a\');k(4M).1p({id:\'88\',3h:\'#\'}).B({Y:\'1P\',2U:\'2K\',ey:\'1o\'}).1S(1h.8M(\' \'));1Z=1h.3F(\'22\');k(1Z).1p(\'id\',\'eE\').B({19:\'1o\',Y:\'2s\',2U:\'2K\',cA:\'O\',6w:\'0 9F\',Q:\'0\',O:\'0\',3I:2}).1S([2b,4G,4M]);6F=1h.3F(\'22\');k(6F).1p(\'id\',\'ao\').B({19:\'1o\',Y:\'1P\',2U:\'2K\',Q:\'0\',O:\'0\',cA:\'cv\',7i:\'cu\',hC:\'0\'}).1S([1Z,7m]);k(\'2e\').1S(8n).1S(6F)},26:u(e,C){el=C?k(C):k(q);9t=el.1p(\'4I\');D 6B,4u,4G,4M;if(9t!=\'eU\'){k.1v.6j=9t;8Y=k(\'a[@4I=\'+9t+\']\');6B=8Y.1N();4u=8Y.cZ(C?C:q);4G=8Y.K(4u-1);4M=8Y.K(4u+1)}89=el.1p(\'3h\');6A=el.1p(\'4g\');3O=k.1a.6z();8n=k(\'#cP\');if(!k.1v.8k){k.1v.8k=1b;if(k.3a.4t){k(\'#cN\').B(\'W\',18.3r(3O.ih,3O.h)+\'U\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\').1Y()}8n.B(\'W\',18.3r(3O.ih,3O.h)+\'U\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\').1Y().fX(cO,k.1v.M.eW,u(){k.1v.cw(89,6A,3O,6B,4u,4G,4M)});k(\'#ao\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\')}P{k(\'#87\').K(0).53=S;k(\'#88\').K(0).53=S;k.1v.cw(89,6A,3O,6B,4u,4G,4M)}E I},cw:u(89,gP,3O,6B,4u,4G,4M){k(\'#cW\').bk();aX=k(\'#87\');aX.2G();aO=k(\'#88\');aO.2G();2b=k(\'#eM\');1Z=k(\'#eE\');6F=k(\'#ao\');7m=k(\'#cM\').B(\'3n\',\'2K\');k(\'#eK\').3x(6A);k.1v.8m=1b;if(6B)k(\'#dg\').3x(k.1v.M.d8+\' \'+(4u+1)+\' \'+k.1v.M.dc+\' \'+6B);if(4G){aX.K(0).53=u(){q.5B();k.1v.26(S,4G);E I}}if(4M){aO.K(0).53=u(){q.5B();k.1v.26(S,4M);E I}}2b.1Y();82=k.1a.2o(1Z.K(0));56=18.3r(82.1C,2b.K(0).Z+k.1v.M.2E*2);6f=18.3r(82.hb,2b.K(0).W+k.1v.M.2E*2);2b.B({O:(56-2b.K(0).Z)/2+\'U\',Q:(6f-2b.K(0).W)/2+\'U\'});1Z.B({Z:56+\'U\',W:6f+\'U\'}).1Y();dw=k.1a.bm();6F.B(\'Q\',3O.t+(dw.h/15)+\'U\');if(6F.B(\'19\')==\'1o\'){6F.1Y().7f(k.1v.M.3W)}6k=12 9s;k(6k).1p(\'id\',\'cW\').1J(\'hJ\',u(){56=6k.Z+k.1v.M.2E*2;6f=6k.W+k.1v.M.2E*2;2b.2G();1Z.5w({W:6f},82.hb!=6f?k.1v.M.3W:1,u(){1Z.5w({Z:56},82.1C!=56?k.1v.M.3W:1,u(){1Z.bG(6k);k(6k).B({Y:\'1P\',O:k.1v.M.2E+\'U\',Q:k.1v.M.2E+\'U\'}).7f(k.1v.M.3W,u(){db=k.1a.2o(7m.K(0));if(4G){aX.B({O:k.1v.M.2E+\'U\',Q:k.1v.M.2E+\'U\',Z:56/2-k.1v.M.2E*3+\'U\',W:6f-k.1v.M.2E*2+\'U\'}).1Y()}if(4M){aO.B({O:56/2+k.1v.M.2E*2+\'U\',Q:k.1v.M.2E+\'U\',Z:56/2-k.1v.M.2E*3+\'U\',W:6f-k.1v.M.2E*2+\'U\'}).1Y()}7m.B({Z:56+\'U\',Q:-db.hb+\'U\',3n:\'dd\'}).5w({Q:-1},k.1v.M.3W,u(){k.1v.8m=I})})})})});6k.2J=89},au:u(){k(\'#cW\').bk();k(\'#ao\').2G();k(\'#cM\').B(\'3n\',\'2K\');k(\'#cP\').fX(cO,0,u(){k(q).2G();if(k.3a.4t){k(\'#cN\').2G()}});k(\'#87\').K(0).53=S;k(\'#88\').K(0).53=S;k.1v.6j=S;k.1v.8k=I;k.1v.8m=I;E I}};k.R={1A:S,41:S,F:S,1s:S,1q:S,Y:S,9a:u(e){k.R.F=(q.d0)?q.d0:q;k.R.1s=k.1a.4a(e);k.R.1q={Z:T(k(k.R.F).B(\'Z\'))||0,W:T(k(k.R.F).B(\'W\'))||0};k.R.Y={Q:T(k(k.R.F).B(\'Q\'))||0,O:T(k(k.R.F).B(\'O\'))||0};k(1h).1J(\'3D\',k.R.cR).1J(\'5P\',k.R.cK);if(2g k.R.F.1k.g2===\'u\'){k.R.F.1k.g2.1D(k.R.F)}E I},cK:u(e){k(1h).3q(\'3D\',k.R.cR).3q(\'5P\',k.R.cK);if(2g k.R.F.1k.fN===\'u\'){k.R.F.1k.fN.1D(k.R.F)}k.R.F=S},cR:u(e){if(!k.R.F){E}1s=k.1a.4a(e);7p=k.R.Y.Q-k.R.1s.y+1s.y;7r=k.R.Y.O-k.R.1s.x+1s.x;7p=18.3r(18.3L(7p,k.R.F.1k.8g-k.R.1q.W),k.R.F.1k.7h);7r=18.3r(18.3L(7r,k.R.F.1k.8h-k.R.1q.Z),k.R.F.1k.70);if(2g k.R.F.1k.4m===\'u\'){D 8a=k.R.F.1k.4m.1D(k.R.F,[7r,7p]);if(2g 8a==\'hh\'&&8a.1g==2){7r=8a[0];7p=8a[1]}}k.R.F.14.Q=7p+\'U\';k.R.F.14.O=7r+\'U\';E I},26:u(e){k(1h).1J(\'3D\',k.R.8j).1J(\'5P\',k.R.8o);k.R.1A=q.1A;k.R.41=q.41;k.R.1s=k.1a.4a(e);k.R.1q={Z:T(k(q.1A).B(\'Z\'))||0,W:T(k(q.1A).B(\'W\'))||0};k.R.Y={Q:T(k(q.1A).B(\'Q\'))||0,O:T(k(q.1A).B(\'O\'))||0};if(k.R.1A.1k.4o){k.R.1A.1k.4o.1D(k.R.1A,[q])}E I},8o:u(){k(1h).3q(\'3D\',k.R.8j).3q(\'5P\',k.R.8o);if(k.R.1A.1k.3T){k.R.1A.1k.3T.1D(k.R.1A,[k.R.41])}k.R.1A=S;k.R.41=S},6i:u(dx,az){E 18.3L(18.3r(k.R.1q.Z+dx*az,k.R.1A.1k.av),k.R.1A.1k.6x)},6m:u(dy,az){E 18.3L(18.3r(k.R.1q.W+dy*az,k.R.1A.1k.8c),k.R.1A.1k.8b)},fb:u(W){E 18.3L(18.3r(W,k.R.1A.1k.8c),k.R.1A.1k.8b)},8j:u(e){if(k.R.1A==S){E}1s=k.1a.4a(e);dx=1s.x-k.R.1s.x;dy=1s.y-k.R.1s.y;1I={Z:k.R.1q.Z,W:k.R.1q.W};2z={Q:k.R.Y.Q,O:k.R.Y.O};3m(k.R.41){1e\'e\':1I.Z=k.R.6i(dx,1);1r;1e\'fj\':1I.Z=k.R.6i(dx,1);1I.W=k.R.6m(dy,1);1r;1e\'w\':1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1r;1e\'5F\':1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1I.W=k.R.6m(dy,1);1r;1e\'76\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1r;1e\'n\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1r;1e\'at\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1I.Z=k.R.6i(dx,1);1r;1e\'s\':1I.W=k.R.6m(dy,1);1r}if(k.R.1A.1k.4v){if(k.R.41==\'n\'||k.R.41==\'s\')4p=1I.W*k.R.1A.1k.4v;P 4p=1I.Z;4W=k.R.fb(4p*k.R.1A.1k.4v);4p=4W/k.R.1A.1k.4v;3m(k.R.41){1e\'n\':1e\'76\':1e\'at\':2z.Q+=1I.W-4W;1r}3m(k.R.41){1e\'76\':1e\'w\':1e\'5F\':2z.O+=1I.Z-4p;1r}1I.W=4W;1I.Z=4p}if(2z.Qk.R.1A.1k.8g){1I.W=k.R.1A.1k.8g-2z.Q;if(k.R.1A.1k.4v){1I.Z=1I.W/k.R.1A.1k.4v}}if(2z.O+1I.Z>k.R.1A.1k.8h){1I.Z=k.R.1A.1k.8h-2z.O;if(k.R.1A.1k.4v){1I.W=1I.Z*k.R.1A.1k.4v}}D 6p=I;if(k.R.1A.1k.f7){6p=k.R.1A.1k.f7.1D(k.R.1A,[1I,2z]);if(6p){if(6p.1q){k.23(1I,6p.1q)}if(6p.Y){k.23(2z,6p.Y)}}}8d=k.R.1A.14;8d.O=2z.O+\'U\';8d.Q=2z.Q+\'U\';8d.Z=1I.Z+\'U\';8d.W=1I.W+\'U\';E I},2r:u(M){if(!M||!M.3Z||M.3Z.1K!=7M){E}E q.1E(u(){D el=q;el.1k=M;el.1k.av=M.av||10;el.1k.8c=M.8c||10;el.1k.6x=M.6x||6P;el.1k.8b=M.8b||6P;el.1k.7h=M.7h||-aC;el.1k.70=M.70||-aC;el.1k.8h=M.8h||6P;el.1k.8g=M.8g||6P;d6=k(el).B(\'Y\');if(!(d6==\'2s\'||d6==\'1P\')){el.14.Y=\'2s\'}fS=/n|at|e|fj|s|5F|w|76/g;24(i in el.1k.3Z){if(i.6c().d5(fS)!=S){if(el.1k.3Z[i].1K==b0){3v=k(el.1k.3Z[i]);if(3v.1N()>0){el.1k.3Z[i]=3v.K(0)}}if(el.1k.3Z[i].4Y){el.1k.3Z[i].1A=el;el.1k.3Z[i].41=i;k(el.1k.3Z[i]).1J(\'5v\',k.R.26)}}}if(el.1k.5S){if(2g el.1k.5S===\'4V\'){aV=k(el.1k.5S);if(aV.1N()>0){aV.1E(u(){q.d0=el});aV.1J(\'5v\',k.R.9a)}}P if(el.1k.5S==1b){k(q).1J(\'5v\',k.R.9a)}}})},4U:u(){E q.1E(u(){D el=q;24(i in el.1k.3Z){el.1k.3Z[i].1A=S;el.1k.3Z[i].41=S;k(el.1k.3Z[i]).3q(\'5v\',k.R.26)}if(el.1k.5S){if(2g el.1k.5S===\'4V\'){3v=k(el.1k.5S);if(3v.1N()>0){3v.3q(\'5v\',k.R.9a)}}P if(el.1k.5S==1b){k(q).3q(\'5v\',k.R.9a)}}el.1k=S})}};k.fn.23({hz:k.R.2r,hs:k.R.4U});k.2C=S;k.7n=I;k.3k=S;k.7o=[];k.9v=u(e){D 3K=e.7L||e.7K||-1;if(3K==17||3K==16){k.7n=1b}};k.9u=u(e){k.7n=I};k.dL=u(e){q.f.1s=k.1a.4a(e);q.f.1M=k.23(k.1a.3w(q),k.1a.2o(q));q.f.3e=k.1a.6z(q);q.f.1s.x-=q.f.1M.x;q.f.1s.y-=q.f.1M.y;k(q).1S(k.2C.K(0));if(q.f.hc)k.2C.2R(q.f.hc).B(\'19\',\'2B\');k.2C.B({19:\'2B\',Z:\'2P\',W:\'2P\'});if(q.f.o){k.2C.B(\'1G\',q.f.o)}k.3k=q;k.96=I;k.7o=[];q.f.el.1E(u(){q.1M={x:q.8t+(q.4Z&&!k.3a.7I?T(q.4Z.5b)||0:0)+(k.3k.3c||0),y:q.8G+(q.4Z&&!k.3a.7I?T(q.4Z.4S)||0:0)+(k.3k.3d||0),1C:q.4c,hb:q.5W};if(q.s==1b){if(k.7n==I){q.s=I;k(q).4i(k.3k.f.7j)}P{k.96=1b;k.7o[k.7o.1g]=k.1p(q,\'id\')}}});k.am.1D(q,[e]);k(1h).1J(\'3D\',k.am).1J(\'5P\',k.cX);E I};k.am=u(e){if(!k.3k)E;k.fd.1D(k.3k,[e])};k.fd=u(e){if(!k.3k)E;D 1s=k.1a.4a(e);D 3e=k.1a.6z(k.3k);1s.x+=3e.l-q.f.3e.l-q.f.1M.x;1s.y+=3e.t-q.f.3e.t-q.f.1M.y;D 93=18.3L(1s.x,q.f.1s.x);D 5F=18.3L(18.3S(1s.x-q.f.1s.x),18.3S(q.f.3e.w-93));D 99=18.3L(1s.y,q.f.1s.y);D 9g=18.3L(18.3S(1s.y-q.f.1s.y),18.3S(q.f.3e.h-99));if(q.3d>0&&1s.y-20q.3d+q.f.1M.h){D 3X=18.3L(q.f.3e.h-q.3d,10);q.3d+=3X;if(q.3d!=3e.t)9g+=3X}if(q.3c>0&&1s.x-20q.3c+q.f.1M.w){D 3X=18.3L(q.f.3e.w-q.3c,10);q.3c+=3X;if(q.3c!=3e.l)5F+=3X}k.2C.B({O:93+\'U\',Q:99+\'U\',Z:5F+\'U\',W:9g+\'U\'});k.2C.l=93+q.f.3e.l;k.2C.t=99+q.f.3e.t;k.2C.r=k.2C.l+5F;k.2C.b=k.2C.t+9g;k.96=I;q.f.el.1E(u(){aw=k.7o.3J(k.1p(q,\'id\'));if(!(q.1M.x>k.2C.r||(q.1M.x+q.1M.1C)k.2C.b||(q.1M.y+q.1M.hb)0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[o.1g]=k.1p(q,\'id\')}})}E{7l:h,o:o}};k.fn.gZ=u(o){if(!k.2C){k(\'2e\',1h).1S(\'<22 id="2C">\').1J(\'7B\',k.9v).1J(\'6y\',k.9u);k.2C=k(\'#2C\');k.2C.B({Y:\'1P\',19:\'1o\'});if(1X.2k){k(\'2e\',1h).1J(\'7B\',k.9v).1J(\'6y\',k.9u)}P{k(1h).1J(\'7B\',k.9v).1J(\'6y\',k.9u)}}if(!o){o={}}E q.1E(u(){if(q.eP)E;q.eP=1b;q.f={a:o.3C,o:o.1G?2m(o.1G):I,7j:o.eS?o.eS:I,hc:o.58?o.58:I,98:o.98?o.98:I,9d:o.9d?o.9d:I};q.f.el=k(\'.\'+o.3C);k(q).1J(\'5v\',k.dL).B(\'Y\',\'2s\')})};k.3b={bM:1,eH:u(3t){D 3t=3t;E q.1E(u(){q.4z.6s.1E(u(ab){k.3b.5c(q,3t[ab])})})},K:u(){D 3t=[];q.1E(u(cL){if(q.bI){3t[cL]=[];D C=q;D 1q=k.1a.2o(q);q.4z.6s.1E(u(ab){D x=q.8t;D y=q.8G;92=T(x*2a/(1q.w-q.4c));91=T(y*2a/(1q.h-q.5W));3t[cL][ab]=[92||0,91||0,x||0,y||0]})}});E 3t},ct:u(C){C.A.fu=C.A.28.w-C.A.1B.1C;C.A.fw=C.A.28.h-C.A.1B.hb;if(C.9r.4z.bC){9Z=C.9r.4z.6s.K(C.bF+1);if(9Z){C.A.28.w=(T(k(9Z).B(\'O\'))||0)+C.A.1B.1C;C.A.28.h=(T(k(9Z).B(\'Q\'))||0)+C.A.1B.hb}9Q=C.9r.4z.6s.K(C.bF-1);if(9Q){D cU=T(k(9Q).B(\'O\'))||0;D cH=T(k(9Q).B(\'O\'))||0;C.A.28.x+=cU;C.A.28.y+=cH;C.A.28.w-=cU;C.A.28.h-=cH}}C.A.g7=C.A.28.w-C.A.1B.1C;C.A.eC=C.A.28.h-C.A.1B.hb;if(C.A.2O){C.A.gx=((C.A.28.w-C.A.1B.1C)/C.A.2O)||1;C.A.gy=((C.A.28.h-C.A.1B.hb)/C.A.2O)||1;C.A.fU=C.A.g7/C.A.2O;C.A.fH=C.A.eC/C.A.2O}C.A.28.dx=C.A.28.x-C.A.2c.x;C.A.28.dy=C.A.28.y-C.A.2c.y;k.11.1c.B(\'9b\',\'ad\')},3H:u(C,x,y){if(C.A.2O){fE=T(x/C.A.fU);92=fE*2a/C.A.2O;ft=T(y/C.A.fH);91=ft*2a/C.A.2O}P{92=T(x*2a/C.A.fu);91=T(y*2a/C.A.fw)}C.A.b3=[92||0,91||0,x||0,y||0];if(C.A.3H)C.A.3H.1D(C,C.A.b3)},eI:u(2k){3K=2k.7L||2k.7K||-1;3m(3K){1e 35:k.3b.5c(q.3U,[ae,ae]);1r;1e 36:k.3b.5c(q.3U,[-ae,-ae]);1r;1e 37:k.3b.5c(q.3U,[-q.3U.A.gx||-1,0]);1r;1e 38:k.3b.5c(q.3U,[0,-q.3U.A.gy||-1]);1r;1e 39:k.3b.5c(q.3U,[q.3U.A.gx||1,0]);1r;1e 40:k.11.5c(q.3U,[0,q.3U.A.gy||1]);1r}},5c:u(C,Y){if(!C.A){E}C.A.1B=k.23(k.1a.3w(C),k.1a.2o(C));C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.4n=k.B(C,\'Y\');if(C.A.4n!=\'2s\'&&C.A.4n!=\'1P\'){C.14.Y=\'2s\'}k.11.c5(C);k.3b.ct(C);dx=T(Y[0])||0;dy=T(Y[1])||0;2v=C.A.2c.x+dx;2q=C.A.2c.y+dy;if(C.A.2O){3y=k.11.c7.1D(C,[2v,2q,dx,dy]);if(3y.1K==7M){dx=3y.dx;dy=3y.dy}2v=C.A.2c.x+dx;2q=C.A.2c.y+dy}3y=k.11.ce.1D(C,[2v,2q,dx,dy]);if(3y&&3y.1K==7M){dx=3y.dx;dy=3y.dy}2v=C.A.2c.x+dx;2q=C.A.2c.y+dy;if(C.A.5i&&(C.A.3H||C.A.2Z)){k.3b.3H(C,2v,2q)}2v=!C.A.1O||C.A.1O==\'4j\'?2v:C.A.2c.x||0;2q=!C.A.1O||C.A.1O==\'49\'?2q:C.A.2c.y||0;C.14.O=2v+\'U\';C.14.Q=2q+\'U\'},2r:u(o){E q.1E(u(){if(q.bI==1b||!o.3C||!k.1a||!k.11||!k.1x){E}5x=k(o.3C,q);if(5x.1N()==0){E}D 4N={2p:\'94\',5i:1b,3H:o.3H&&o.3H.1K==2A?o.3H:S,2Z:o.2Z&&o.2Z.1K==2A?o.2Z:S,3v:q,1G:o.1G||I};if(o.2O&&T(o.2O)){4N.2O=T(o.2O)||1;4N.2O=4N.2O>0?4N.2O:1}if(5x.1N()==1)5x.7t(4N);P{k(5x.K(0)).7t(4N);4N.3v=S;5x.7t(4N)}5x.7B(k.3b.eI);5x.1p(\'bM\',k.3b.bM++);q.bI=1b;q.4z={};q.4z.er=4N.er;q.4z.2O=4N.2O;q.4z.6s=5x;q.4z.bC=o.bC?1b:I;bZ=q;bZ.4z.6s.1E(u(2N){q.bF=2N;q.9r=bZ});if(o.3t&&o.3t.1K==7F){24(i=o.3t.1g-1;i>=0;i--){if(o.3t[i].1K==7F&&o.3t[i].1g==2){el=q.4z.6s.K(i);if(el.4Y){k.3b.5c(el,o.3t[i])}}}}})}};k.fn.23({hN:k.3b.2r,hS:k.3b.eH,hG:k.3b.K});k.2u={5I:[],eg:u(){q.5B();X=q.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}1z=X.L.3u+1;if(X.L.1Q.1g<1z){1z=1}1Q=k(\'1T\',X.L.5u);X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},dp:u(){q.5B();X=q.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}1z=X.L.3u-1;1Q=k(\'1T\',X.L.5u);if(1z<1){1z=X.L.1Q.1g}X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},2I:u(c){X=1h.9e(c);if(X.L.6o){1z=X.L.3u;7d(1z==X.L.3u){1z=1+T(18.6o()*X.L.1Q.1g)}}P{1z=X.L.3u+1;if(X.L.1Q.1g<1z){1z=1}}1Q=k(\'1T\',X.L.5u);X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},go:u(o){D X;if(o&&o.1K==7M){if(o.2b){X=1h.9e(o.2b.X);5N=1X.hn.3h.7C("#");o.2b.6S=S;if(5N.1g==2){1z=T(5N[1]);1Y=5N[1].4E(1z,\'\');if(k.1p(X,\'id\')!=1Y){1z=1}}P{1z=1}}if(o.90){o.90.5B();X=o.90.31.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}5N=o.90.3h.7C("#");1z=T(5N[1]);1Y=5N[1].4E(1z,\'\');if(k.1p(X,\'id\')!=1Y){1z=1}}if(X.L.1Q.1g<1z||1z<1){1z=1}X.L.3u=1z;52=k.1a.2o(X);dt=k.1a.aT(X);d9=k.1a.6U(X);if(X.L.3z){X.L.3z.o.B(\'19\',\'1o\')}if(X.L.3s){X.L.3s.o.B(\'19\',\'1o\')}if(X.L.2b){y=T(dt.t)+T(d9.t);if(X.L.1U){if(X.L.1U.5A==\'Q\'){y+=X.L.1U.4C.hb}P{52.h-=X.L.1U.4C.hb}}if(X.L.2x){if(X.L.2x&&X.L.2x.6Q==\'Q\'){y+=X.L.2x.4C.hb}P{52.h-=X.L.2x.4C.hb}}if(!X.L.c1){X.L.df=o.2b?o.2b.W:(T(X.L.2b.B(\'W\'))||0);X.L.c1=o.2b?o.2b.Z:(T(X.L.2b.B(\'Z\'))||0)}X.L.2b.B(\'Q\',y+(52.h-X.L.df)/2+\'U\');X.L.2b.B(\'O\',(52.1C-X.L.c1)/2+\'U\');X.L.2b.B(\'19\',\'2B\')}1Q=k(\'1T\',X.L.5u);if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}P{aj=k(\'a\',X.L.1U.o).K(1z-1);k(aj).2R(X.L.1U.5R);D 1T=12 9s();1T.X=k.1p(X,\'id\');1T.1z=1z-1;1T.2J=X.L.1Q[X.L.3u-1].2J;if(1T.21){1T.6S=S;k.2u.19.1D(1T)}P{1T.6S=k.2u.19}if(X.L.2x){X.L.2x.o.3x(X.L.1Q[1z-1].6L)}}}},95:u(){X=q.31.31;X.L.5u.B(\'19\',\'1o\');if(X.L.1U.5R){aj=k(\'a\',X.L.1U.o).4i(X.L.1U.5R).K(X.L.3u-1);k(aj).2R(X.L.1U.5R)}D 1T=12 9s();1T.X=k.1p(X,\'id\');1T.1z=X.L.3u-1;1T.2J=X.L.1Q[X.L.3u-1].2J;if(1T.21){1T.6S=S;k.2u.19.1D(1T)}P{1T.6S=k.2u.19}if(X.L.2x){X.L.2x.o.3x(X.L.1Q[X.L.3u-1].6L)}},19:u(){X=1h.9e(q.X);if(X.L.3z){X.L.3z.o.B(\'19\',\'1o\')}if(X.L.3s){X.L.3s.o.B(\'19\',\'1o\')}52=k.1a.2o(X);y=0;if(X.L.1U){if(X.L.1U.5A==\'Q\'){y+=X.L.1U.4C.hb}P{52.h-=X.L.1U.4C.hb}}if(X.L.2x){if(X.L.2x&&X.L.2x.6Q==\'Q\'){y+=X.L.2x.4C.hb}P{52.h-=X.L.2x.4C.hb}}hg=k(\'.ca\',X);y=y+(52.h-q.W)/2;x=(52.1C-q.Z)/2;X.L.5u.B(\'Q\',y+\'U\').B(\'O\',x+\'U\').3x(\'<1T 2J="\'+q.2J+\'" />\');X.L.5u.7f(X.L.3W);3s=X.L.3u+1;if(3s>X.L.1Q.1g){3s=1}3z=X.L.3u-1;if(3z<1){3z=X.L.1Q.1g}X.L.3s.o.B(\'19\',\'2B\').B(\'Q\',y+\'U\').B(\'O\',x+2*q.Z/3+\'U\').B(\'Z\',q.Z/3+\'U\').B(\'W\',q.W+\'U\').1p(\'4g\',X.L.1Q[3s-1].6L);X.L.3s.o.K(0).3h=\'#\'+3s+k.1p(X,\'id\');X.L.3z.o.B(\'19\',\'2B\').B(\'Q\',y+\'U\').B(\'O\',x+\'U\').B(\'Z\',q.Z/3+\'U\').B(\'W\',q.W+\'U\').1p(\'4g\',X.L.1Q[3z-1].6L);X.L.3z.o.K(0).3h=\'#\'+3z+k.1p(X,\'id\')},2r:u(o){if(!o||!o.1Z||k.2u.5I[o.1Z])E;D 1Z=k(\'#\'+o.1Z);D el=1Z.K(0);if(el.14.Y!=\'1P\'&&el.14.Y!=\'2s\'){el.14.Y=\'2s\'}el.14.2U=\'2K\';if(1Z.1N()==0)E;el.L={};el.L.1Q=o.1Q?o.1Q:[];el.L.6o=o.6o&&o.6o==1b||I;97=el.f3(\'hL\');24(i=0;i<97.1g;i++){7Z=el.L.1Q.1g;el.L.1Q[7Z]={2J:97[i].2J,6L:97[i].4g||97[i].hD||\'\'}}if(el.L.1Q.1g==0){E}el.L.4n=k.23(k.1a.3w(el),k.1a.2o(el));el.L.b5=k.1a.aT(el);el.L.bu=k.1a.6U(el);t=T(el.L.b5.t)+T(el.L.bu.t);b=T(el.L.b5.b)+T(el.L.bu.b);k(\'1T\',el).bk();el.L.3W=o.3W?o.3W:g5;if(o.5A||o.9f||o.5R){el.L.1U={};1Z.1S(\'<22 6T="g1">\');el.L.1U.o=k(\'.g1\',el);if(o.9f){el.L.1U.9f=o.9f;el.L.1U.o.2R(o.9f)}if(o.5R){el.L.1U.5R=o.5R}el.L.1U.o.B(\'Y\',\'1P\').B(\'Z\',el.L.4n.w+\'U\');if(o.5A&&o.5A==\'Q\'){el.L.1U.5A=\'Q\';el.L.1U.o.B(\'Q\',t+\'U\')}P{el.L.1U.5A=\'4D\';el.L.1U.o.B(\'4D\',b+\'U\')}el.L.1U.aE=o.aE?o.aE:\' \';24(D i=0;i\'+7Z+\'\'+(7Z!=el.L.1Q.1g?el.L.1U.aE:\'\'))}k(\'a\',el.L.1U.o).1J(\'5h\',u(){k.2u.go({90:q})});el.L.1U.4C=k.1a.2o(el.L.1U.o.K(0))}if(o.6Q||o.9c){el.L.2x={};1Z.1S(\'<22 6T="dn">&7k;\');el.L.2x.o=k(\'.dn\',el);if(o.9c){el.L.2x.9c=o.9c;el.L.2x.o.2R(o.9c)}el.L.2x.o.B(\'Y\',\'1P\').B(\'Z\',el.L.4n.w+\'U\');if(o.6Q&&o.6Q==\'Q\'){el.L.2x.6Q=\'Q\';el.L.2x.o.B(\'Q\',(el.L.1U&&el.L.1U.5A==\'Q\'?el.L.1U.4C.hb+t:t)+\'U\')}P{el.L.2x.6Q=\'4D\';el.L.2x.o.B(\'4D\',(el.L.1U&&el.L.1U.5A==\'4D\'?el.L.1U.4C.hb+b:b)+\'U\')}el.L.2x.4C=k.1a.2o(el.L.2x.o.K(0))}if(o.9D){el.L.3s={9D:o.9D};1Z.1S(\'&7k;\');el.L.3s.o=k(\'.eY\',el);el.L.3s.o.B(\'Y\',\'1P\').B(\'19\',\'1o\').B(\'2U\',\'2K\').B(\'4A\',\'eR\').2R(el.L.3s.9D);el.L.3s.o.1J(\'5h\',k.2u.eg)}if(o.9o){el.L.3z={9o:o.9o};1Z.1S(\'&7k;\');el.L.3z.o=k(\'.ee\',el);el.L.3z.o.B(\'Y\',\'1P\').B(\'19\',\'1o\').B(\'2U\',\'2K\').B(\'4A\',\'eR\').2R(el.L.3z.9o);el.L.3z.o.1J(\'5h\',k.2u.dp)}1Z.bG(\'<22 6T="ca">\');el.L.5u=k(\'.ca\',el);el.L.5u.B(\'Y\',\'1P\').B(\'Q\',\'2P\').B(\'O\',\'2P\').B(\'19\',\'1o\');if(o.2b){1Z.bG(\'<22 6T="dW" 14="19: 1o;"><1T 2J="\'+o.2b+\'" />\');el.L.2b=k(\'.dW\',el);el.L.2b.B(\'Y\',\'1P\');D 1T=12 9s();1T.X=o.1Z;1T.2J=o.2b;if(1T.21){1T.6S=S;k.2u.go({2b:1T})}P{1T.6S=u(){k.2u.go({2b:q})}}}P{k.2u.go({1Z:el})}if(o.cS){fi=T(o.cS)*aC}k.2u.5I[o.1Z]=o.cS?1X.6V(\'k.2u.2I(\\\'\'+o.1Z+\'\\\')\',fi):S}};k.X=k.2u.2r;k.1t={7s:[],5L:{},1c:I,7u:S,26:u(){if(k.11.F==S){E}D 4O,3G,c,cs;k.1t.1c.K(0).3l=k.11.F.A.6R;4O=k.1t.1c.K(0).14;4O.19=\'2B\';k.1t.1c.1B=k.23(k.1a.3w(k.1t.1c.K(0)),k.1a.2o(k.1t.1c.K(0)));4O.Z=k.11.F.A.1B.1C+\'U\';4O.W=k.11.F.A.1B.hb+\'U\';3G=k.1a.cy(k.11.F);4O.5K=3G.t;4O.5z=3G.r;4O.5k=3G.b;4O.5j=3G.l;if(k.11.F.A.46==1b){c=k.11.F.fI(1b);cs=c.14;cs.5K=\'2P\';cs.5z=\'2P\';cs.5k=\'2P\';cs.5j=\'2P\';cs.19=\'2B\';k.1t.1c.5o().1S(c)}k(k.11.F).f5(k.1t.1c.K(0));k.11.F.14.19=\'1o\'},fC:u(e){if(!e.A.44&&k.1x.5r.cQ){if(e.A.3T)e.A.3T.1D(F);k(e).B(\'Y\',e.A.cz||e.A.4n);k(e).aS();k(k.1x.5r).f6(e)}k.1t.1c.4i(e.A.6R).3x(\'&7k;\');k.1t.7u=S;D 4O=k.1t.1c.K(0).14;4O.19=\'1o\';k.1t.1c.f5(e);if(e.A.fx>0){k(e).7f(e.A.fx)}k(\'2e\').1S(k.1t.1c.K(0));D 86=[];D 8q=I;24(D i=0;i0){8q(86)}},al:u(e,o){if(!k.11.F)E;D 6e=I;D i=0;if(e.1i.el.1N()>0){24(i=e.1i.el.1N();i>0;i--){if(e.1i.el.K(i-1)!=k.11.F){if(!e.5V.b2){if((e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.11.F.A.2q){6e=e.1i.el.K(i-1)}P{1r}}P{if((e.1i.el.K(i-1).1M.x+e.1i.el.K(i-1).1M.1C/2)>k.11.F.A.2v&&(e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.11.F.A.2q){6e=e.1i.el.K(i-1)}}}}}if(6e&&k.1t.7u!=6e){k.1t.7u=6e;k(6e).h5(k.1t.1c.K(0))}P if(!6e&&(k.1t.7u!=S||k.1t.1c.K(0).31!=e)){k.1t.7u=S;k(e).1S(k.1t.1c.K(0))}k.1t.1c.K(0).14.19=\'2B\'},cT:u(e){if(k.11.F==S){E}e.1i.el.1E(u(){q.1M=k.23(k.1a.74(q),k.1a.7G(q))})},8x:u(s){D i;D h=\'\';D o={};if(s){if(k.1t.5L[s]){o[s]=[];k(\'#\'+s+\' .\'+k.1t.5L[s]).1E(u(){if(h.1g>0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[s][o[s].1g]=k.1p(q,\'id\')})}P{24(a in s){if(k.1t.5L[s[a]]){o[s[a]]=[];k(\'#\'+s[a]+\' .\'+k.1t.5L[s[a]]).1E(u(){if(h.1g>0){h+=\'&\'}h+=s[a]+\'[]=\'+k.1p(q,\'id\');o[s[a]][o[s[a]].1g]=k.1p(q,\'id\')})}}}}P{24(i in k.1t.5L){o[i]=[];k(\'#\'+i+\' .\'+k.1t.5L[i]).1E(u(){if(h.1g>0){h+=\'&\'}h+=i+\'[]=\'+k.1p(q,\'id\');o[i][o[i].1g]=k.1p(q,\'id\')})}}E{7l:h,o:o}},fF:u(e){if(!e.dq){E}E q.1E(u(){if(!q.5V||!k(e).is(\'.\'+q.5V.3C))k(e).2R(q.5V.3C);k(e).7t(q.5V.A)})},4U:u(){E q.1E(u(){k(\'.\'+q.5V.3C).aS();k(q).dR();q.5V=S;q.fm=S})},2r:u(o){if(o.3C&&k.1a&&k.11&&k.1x){if(!k.1t.1c){k(\'2e\',1h).1S(\'<22 id="e5">&7k;\');k.1t.1c=k(\'#e5\');k.1t.1c.K(0).14.19=\'1o\'}q.do({3C:o.3C,9J:o.9J?o.9J:I,a5:o.a5?o.a5:I,58:o.58?o.58:I,7x:o.7x||o.dC,7y:o.7y||o.fO,cQ:1b,2Z:o.2Z||o.ia,fx:o.fx?o.fx:I,46:o.46?1b:I,6I:o.6I?o.6I:\'cV\'});E q.1E(u(){D A={6N:o.6N?1b:I,ff:6P,1G:o.1G?2m(o.1G):I,6R:o.58?o.58:I,fx:o.fx?o.fx:I,44:1b,46:o.46?1b:I,3v:o.3v?o.3v:S,2p:o.2p?o.2p:S,4o:o.4o&&o.4o.1K==2A?o.4o:I,4m:o.4m&&o.4m.1K==2A?o.4m:I,3T:o.3T&&o.3T.1K==2A?o.3T:I,1O:/49|4j/.48(o.1O)?o.1O:I,6M:o.6M?T(o.6M)||0:I,2V:o.2V?o.2V:I};k(\'.\'+o.3C,q).7t(A);q.fm=1b;q.5V={3C:o.3C,6N:o.6N?1b:I,ff:6P,1G:o.1G?2m(o.1G):I,6R:o.58?o.58:I,fx:o.fx?o.fx:I,44:1b,46:o.46?1b:I,3v:o.3v?o.3v:S,2p:o.2p?o.2p:S,b2:o.b2?1b:I,A:A}})}}};k.fn.23({j3:k.1t.2r,f6:k.1t.fF,iS:k.1t.4U});k.iZ=k.1t.8x;k.2t={6O:S,7b:I,9m:S,6K:u(e){k.2t.7b=1b;k.2t.1Y(e,q,1b)},cq:u(e){if(k.2t.6O!=q)E;k.2t.7b=I;k.2t.2G(e,q)},1Y:u(e,el,7b){if(k.2t.6O!=S)E;if(!el){el=q}k.2t.6O=el;1M=k.23(k.1a.3w(el),k.1a.2o(el));8u=k(el);4g=8u.1p(\'4g\');3h=8u.1p(\'3h\');if(4g){k.2t.9m=4g;8u.1p(\'4g\',\'\');k(\'#eT\').3x(4g);if(3h)k(\'#bL\').3x(3h.4E(\'jh://\',\'\'));P k(\'#bL\').3x(\'\');1c=k(\'#8z\');if(el.4H.3l){1c.K(0).3l=el.4H.3l}P{1c.K(0).3l=\'\'}bo=k.1a.2o(1c.K(0));ga=7b&&el.4H.Y==\'bO\'?\'4D\':el.4H.Y;3m(ga){1e\'Q\':2q=1M.y-bo.hb;2v=1M.x;1r;1e\'O\':2q=1M.y;2v=1M.x-bo.1C;1r;1e\'2L\':2q=1M.y;2v=1M.x+1M.1C;1r;1e\'bO\':k(\'2e\').1J(\'3D\',k.2t.3D);1s=k.1a.4a(e);2q=1s.y+15;2v=1s.x+15;1r;ad:2q=1M.y+1M.hb;2v=1M.x;1r}1c.B({Q:2q+\'U\',O:2v+\'U\'});if(el.4H.54==I){1c.1Y()}P{1c.7f(el.4H.54)}if(el.4H.2Y)el.4H.2Y.1D(el);8u.1J(\'8B\',k.2t.2G).1J(\'5B\',k.2t.cq)}},3D:u(e){if(k.2t.6O==S){k(\'2e\').3q(\'3D\',k.2t.3D);E}1s=k.1a.4a(e);k(\'#8z\').B({Q:1s.y+15+\'U\',O:1s.x+15+\'U\'})},2G:u(e,el){if(!el){el=q}if(k.2t.7b!=1b&&k.2t.6O==el){k.2t.6O=S;k(\'#8z\').7a(1);k(el).1p(\'4g\',k.2t.9m).3q(\'8B\',k.2t.2G).3q(\'5B\',k.2t.cq);if(el.4H.3i)el.4H.3i.1D(el);k.2t.9m=S}},2r:u(M){if(!k.2t.1c){k(\'2e\').1S(\'<22 id="8z"><22 id="eT"><22 id="bL">\');k(\'#8z\').B({Y:\'1P\',3I:6P,19:\'1o\'});k.2t.1c=1b}E q.1E(u(){if(k.1p(q,\'4g\')){q.4H={Y:/Q|4D|O|2L|bO/.48(M.Y)?M.Y:\'4D\',3l:M.3l?M.3l:I,54:M.54?M.54:I,2Y:M.2Y&&M.2Y.1K==2A?M.2Y:I,3i:M.3i&&M.3i.1K==2A?M.3i:I};D el=k(q);el.1J(\'9z\',k.2t.1Y);el.1J(\'6K\',k.2t.6K)}})}};k.fn.hO=k.2t.2r;k.84={bq:u(e){3K=e.7L||e.7K||-1;if(3K==9){if(1X.2k){1X.2k.bT=1b;1X.2k.c0=I}P{e.aP();e.aW()}if(q.b1){1h.6J.dZ().3g="\\t";q.dV=u(){q.6K();q.dV=S}}P if(q.aF){26=q.5q;2T=q.dN;q.2y=q.2y.hd(0,26)+"\\t"+q.2y.h8(2T);q.aF(26+1,26+1);q.6K()}E I}},4U:u(){E q.1E(u(){if(q.7P&&q.7P==1b){k(q).3q(\'7B\',k.84.bq);q.7P=I}})},2r:u(){E q.1E(u(){if(q.4Y==\'cf\'&&(!q.7P||q.7P==I)){k(q).1J(\'7B\',k.84.bq);q.7P=1b}})}};k.fn.23({j5:k.84.2r,hH:k.84.4U});k.1a={3w:u(e){D x=0;D y=0;D es=e.14;D bP=I;if(k(e).B(\'19\')==\'1o\'){D 5Y=es.3n;D 9q=es.Y;bP=1b;es.3n=\'2K\';es.19=\'2B\';es.Y=\'1P\'}D el=e;7d(el){x+=el.8t+(el.4Z&&!k.3a.7I?T(el.4Z.5b)||0:0);y+=el.8G+(el.4Z&&!k.3a.7I?T(el.4Z.4S)||0:0);el=el.dJ}el=e;7d(el&&el.4Y&&el.4Y.6c()!=\'2e\'){x-=el.3c||0;y-=el.3d||0;el=el.31}if(bP==1b){es.19=\'1o\';es.Y=9q;es.3n=5Y}E{x:x,y:y}},7G:u(el){D x=0,y=0;7d(el){x+=el.8t||0;y+=el.8G||0;el=el.dJ}E{x:x,y:y}},2o:u(e){D w=k.B(e,\'Z\');D h=k.B(e,\'W\');D 1C=0;D hb=0;D es=e.14;if(k(e).B(\'19\')!=\'1o\'){1C=e.4c;hb=e.5W}P{D 5Y=es.3n;D 9q=es.Y;es.3n=\'2K\';es.19=\'2B\';es.Y=\'1P\';1C=e.4c;hb=e.5W;es.19=\'1o\';es.Y=9q;es.3n=5Y}E{w:w,h:h,1C:1C,hb:hb}},74:u(el){E{1C:el.4c||0,hb:el.5W||0}},bm:u(e){D h,w,de;if(e){w=e.8W;h=e.8O}P{de=1h.5d;w=1X.d4||aa.d4||(de&&de.8W)||1h.2e.8W;h=1X.cB||aa.cB||(de&&de.8O)||1h.2e.8O}E{w:w,h:h}},6z:u(e){D t=0,l=0,w=0,h=0,iw=0,ih=0;if(e&&e.9N.6c()!=\'2e\'){t=e.3d;l=e.3c;w=e.d7;h=e.d2;iw=0;ih=0}P{if(1h.5d){t=1h.5d.3d;l=1h.5d.3c;w=1h.5d.d7;h=1h.5d.d2}P if(1h.2e){t=1h.2e.3d;l=1h.2e.3c;w=1h.2e.d7;h=1h.2e.d2}iw=aa.d4||1h.5d.8W||1h.2e.8W||0;ih=aa.cB||1h.5d.8O||1h.2e.8O||0}E{t:t,l:l,w:w,h:h,iw:iw,ih:ih}},cy:u(e,7N){D el=k(e);D t=el.B(\'5K\')||\'\';D r=el.B(\'5z\')||\'\';D b=el.B(\'5k\')||\'\';D l=el.B(\'5j\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},aT:u(e,7N){D el=k(e);D t=el.B(\'5M\')||\'\';D r=el.B(\'5U\')||\'\';D b=el.B(\'5n\')||\'\';D l=el.B(\'4X\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},6U:u(e,7N){D el=k(e);D t=el.B(\'4S\')||\'\';D r=el.B(\'5O\')||\'\';D b=el.B(\'5Q\')||\'\';D l=el.B(\'5b\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)||0};P E{t:t,r:r,b:b,l:l}},4a:u(2k){D x=2k.hT||(2k.gM+(1h.5d.3c||1h.2e.3c))||0;D y=2k.ki||(2k.iQ+(1h.5d.3d||1h.2e.3d))||0;E{x:x,y:y}},cI:u(4R,cx){cx(4R);4R=4R.7c;7d(4R){k.1a.cI(4R,cx);4R=4R.hQ}},h7:u(4R){k.1a.cI(4R,u(el){24(D 1p in el){if(2g el[1p]===\'u\'){el[1p]=S}}})},hV:u(el,1O){D 5l=k.1a.6z();D b6=k.1a.2o(el);if(!1O||1O==\'49\')k(el).B({Q:5l.t+((18.3r(5l.h,5l.ih)-5l.t-b6.hb)/2)+\'U\'});if(!1O||1O==\'4j\')k(el).B({O:5l.l+((18.3r(5l.w,5l.iw)-5l.l-b6.1C)/2)+\'U\'})},hW:u(el,dk){D 1Q=k(\'1T[@2J*="8X"]\',el||1h),8X;1Q.1E(u(){8X=q.2J;q.2J=dk;q.14.5E="9n:9w.9y.hE(2J=\'"+8X+"\')"})}};[].3J||(7F.hF.3J=u(v,n){n=(n==S)?0:n;D m=q.1g;24(D i=n;i array( + 'variables' => array(), + ), + 'sld_group_text' => array( + 'variables' => array(), + ), + 'sld_group_image' => array( + 'variables' => array(), + ), + 'sld_group_image_and_text' => array( + 'variables' => array(), + ), + 'sld_single_text' => array( + 'variables' => array(), + ), + 'sld_single_image' => array( + 'variables' => array(), + ), + 'sld_single_image_and_text' => array( + 'variables' => array(), + ), + ); +} + +/** + * Implements hook_ds_fields_info(). + */ +function service_links_displays_ds_fields_info($entity_type) { + $fields = array( + 'service_links_displays_group' => array( + 'title' => t('Service Links Group'), + 'field_type' => DS_FIELD_TYPE_THEME, + 'properties' => array( + 'formatters' => array( + 'sld_group_text' => t('Text'), + 'sld_group_image' => t('Image'), + 'sld_group_image_and_text' => t('Image and text'), + 'sld_group_fisheye' => t('FishEye'), + ), + ), + ), + ); + + $services = array_filter(variable_get('service_links_displays', array())); + if (!empty($services)) { + $services = service_links_get_links($services); + foreach ($services as $service_id => $service) { + $fields['service_links_displays_'. $service_id] = array( + 'title' => t('Service Links Field @name', array('@name' => $service['name'])), + 'field_type' => DS_FIELD_TYPE_THEME, + 'properties' => array( + 'key' => $service_id, + 'formatters' => array( + 'sld_single_text' => t('Text'), + 'sld_single_image' => t('Image'), + 'sld_single_image_and_text' => t('Image and text'), + ), + ), + ); + } + } + + return array('node' => $fields); +} + +/** + * Apply the Text format to a single Service. + */ +function theme_sld_single_text($variables) { + $node = $variables['entity']; + $service_id = $variables['properties']['key']; + + if (service_links_show($node) && user_access('access service links')) { + $items = service_links_render_some($service_id, $node, FALSE, SERVICE_LINKS_STYLE_TEXT); + if (!empty($items)) { + return implode($items); + } + } +} + +/** + * Apply the Image format to a single Service. + */ +function theme_sld_single_image($variables) { + $node = $variables['entity']; + $service_id = $variables['properties']['key']; + + if (service_links_show($node) && user_access('access service links')) { + $items = service_links_render_some($service_id, $node, FALSE, SERVICE_LINKS_STYLE_IMAGE); + if (!empty($items)) { + return implode($items); + } + } +} + +/** + * Apply the Image and Text format to a single Service. + */ +function theme_sld_single_image_and_text($variables) { + $node = $variables['entity']; + $service_id = $variables['properties']['key']; + + if (service_links_show($node) && user_access('access service links')) { + $items = service_links_render_some($service_id, $node, FALSE, SERVICE_LINKS_STYLE_IMAGE_AND_TEXT); + if (!empty($items)) { + return implode($items); + } + } +} + +/** + * Apply the FishEye format to the field Service Links Group. + */ +function theme_sld_group_fisheye($variables) { + $node = $variables['entity']; + + if (service_links_show($node) && user_access('access service links')) { + $services = array_filter(variable_get('service_links_displays', array())); + $options = array( + 'style' => SERVICE_LINKS_STYLE_FISHEYE, + 'link_show' => $services, + ); + + return theme('service_links_fisheye_format', array( + 'items' => service_links_render($node, FALSE, $options), + )); + } +} + +/** + * Apply the Text format to the field Service Links Group. + */ +function theme_sld_group_text($variables) { + $node = $variables['entity']; + + if (service_links_show($node) && user_access('access service links')) { + $services = array_filter(variable_get('service_links_displays', array())); + $options = array( + 'style' => SERVICE_LINKS_STYLE_TEXT, + 'link_show' => $services, + ); + + return theme('service_links_block_format', array( + 'items' => service_links_render($node, FALSE, $options), + 'style' => SERVICE_LINKS_STYLE_IMAGE, + )); + } +} + +/** + * Apply the Image format to the field Service Links Group. + */ +function theme_sld_group_image($variables) { + $node = $variables['entity']; + + if (service_links_show($node) && user_access('access service links')) { + $services = array_filter(variable_get('service_links_displays', array())); + $options = array( + 'style' => SERVICE_LINKS_STYLE_IMAGE, + 'link_show' => $services, + ); + + return theme('service_links_block_format', array( + 'items' => service_links_render($node, FALSE, $options), + 'style' => SERVICE_LINKS_STYLE_IMAGE, + )); + } +} + +/** + * Apply the Image and Text format to the field Service Links Group. + */ +function theme_sld_group_image_and_text($variables) { + $node = $variables['entity']; + + if (service_links_show($node) && user_access('access service links')) { + $services = array_filter(variable_get('service_links_displays', array())); + $options = array( + 'style' => SERVICE_LINKS_STYLE_IMAGE_AND_TEXT, + 'link_show' => $services, + ); + + return theme('service_links_block_format', array( + 'items' => service_links_render($node, FALSE, $options), + 'style' => SERVICE_LINKS_STYLE_IMAGE, + )); + } +} + +/** + * Implements hook_form_alter(). + */ +function service_links_displays_form_alter(&$form, &$form_state, $form_id) { + if ($form_id == 'service_links_admin_services') { + $settings['displays'] = variable_get('service_links_displays', array()); + $settings['weight'] = variable_get('service_links_weight', NULL); + + $form['service_links']['service_links_displays'] = array('#tree' => TRUE); + $services = array_filter(array_keys($form['service_links']['service_links_weight']), '_sld_only_keys'); + + foreach ($services as $service_id) { + $weight = isset($settings['weight'][$service_id]) ? $settings['weight'][$service_id] : 0; + $form['service_links']['service_links_displays'][$service_id] = array( + '#weight' => $weight, + '#type' => 'checkbox', + '#return_value' => 1, + '#default_value' => isset($settings['displays'][$service_id]) ? $settings['displays'][$service_id] : 0, + '#attributes' => array(), + ); + } + } +} + +/** + * Implements hook_sl_servicestable_alter(). + */ +function service_links_displays_sl_servicestable_alter(&$table, $form) { + $table['header'][] = t('Displays'); + + if (empty($table['rows'])) { + return; + } + + $num_row = 0; + $col_num = count($table['rows'][0]['data']); + foreach (element_children($form['service_links_displays']) as $service_id) { + $service = $form['service_links_displays'][$service_id]; + + $service['displays'] = array( + '#type' => 'checkbox', + '#checked' => $service['#default_value'], + '#id' => $service['#id'], + '#name' => $service['#name'], + '#attributes' => $service['#attributes'], + ); + $col = drupal_render($service['displays']); + + $table['rows'][$num_row]['data'][$col_num] = $col; + + $num_row++; + } +} + +/** + * Filter the id from other fields. + */ +function _sld_only_keys($item) { + return preg_match('/^#/', $item) ? FALSE : TRUE; +} diff --git a/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.info b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.info new file mode 100644 index 0000000..aa8b6d1 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.info @@ -0,0 +1,14 @@ +name = Service Links Sprites +description = Add the ability to handle sprites with Service Links +core = 7.x +package = Service Links +dependencies[] = service_links + +configure = admin/config/services/service-links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.module b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.module new file mode 100644 index 0000000..fc5c217 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.module @@ -0,0 +1,255 @@ + $file) { + if (is_file($file)) { + $img_details = getimagesize($file); + + if (!isset($images[$img_details[SLS_GD_WIDTH]])) { + $images[$img_details[SLS_GD_WIDTH]] = array(); + } + + $images[$img_details[SLS_GD_WIDTH]][$service_id] = array( + 'height' => $img_details[SLS_GD_HEIGHT], + 'file' => $file, + 'mime' => $img_details[SLS_GD_MIME], + ); + + if (!isset($tot_height[$img_details[SLS_GD_WIDTH]])) { + $tot_height[$img_details[SLS_GD_WIDTH]] = 0; + } + + $tot_height[$img_details[SLS_GD_WIDTH]] += (int)$img_details[SLS_GD_HEIGHT]; + } + } + + foreach ($images as $width => $image) { + $img_dest = @imagecreatetruecolor($width, $tot_height[$width]); + $background = @imagecolorallocatealpha($img_dest, 255, 255, 255, 127); + @imagefill($img_dest, 0, 0, $background); + @imagealphablending($img_dest, FALSE); + @imagesavealpha($img_dest, TRUE); + + $y = 0; + $padding = $width + 2; + $css_str .= ".sprites.service-links.w$width {padding-left: {$padding}px; background-image:url(\"" . SLS_FILENAME . "$width.png\");}\n"; + + foreach ((array)$image as $service_id => $img_details) { + switch ($img_details['mime']) { + case 'image/png': + $img_src = @imagecreatefrompng($img_details['file']); + break; + case 'image/jpeg': + $img_src = @imagecreatefromjpeg($img_details['file']); + break; + case 'image/gif': + $img_src = @imagecreatefromgif($img_details['file']); + break; + default: + continue; + } + + $class = str_replace('_', '-', $service_id); + $sign = ($y > 0) ? '-' : ''; + $css_str .= ".sprites.service-links-$class {background-position: 0 {$sign}{$y}px; height:{$img_details['height']}px}\n"; + @imagecopy($img_dest, $img_src, 0, $y, 0, 0, $width, $img_details['height']); + @imagedestroy($img_src); + $y += $img_details['height']; + $sizes[$img_details['file']] = $width; + } + + imagepng($img_dest, $sprite_filename . $width . '.png'); + imagedestroy($img_dest); + } + + $css_fhandler = fopen($sprite_filename . '.css', 'w'); + if (($css_fhandler) && !empty($css_str)) { + fwrite($css_fhandler, $css_str); + fclose($css_fhandler); + } + + variable_set('service_links_sprites_sizes', $sizes); +} + +/** + * Implements hook_form_alter(). + */ +function service_links_sprites_form_alter(&$form, &$form_state, $form_id) { + if ($form_id == 'service_links_admin_settings') { + $form['buttons']['#weight'] = 100; + $form['sprites'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Sprites'), + ); + $form['sprites']['service_links_use_internal_sprites'] = array( + '#type' => 'checkbox', + '#title' => t('Load the CSS file generated by Service Links'), + '#default_value' => variable_get('service_links_use_internal_sprites', 0), + '#description' => t('Service Links will build the files needed everytime the modifies are saved in Services tab.'), + ); + } + + if ($form_id == 'service_links_admin_services') { + $form['#validate'][] = 'service_links_sprites_validate'; + } +} + +function service_links_sprites_validate($form, &$form_state) { + $services = array_keys(array_filter($form_state['values']['service_links_show'])); + $services = service_links_get_links($services); + $paths = array(); + foreach ($services as $service_id => $service) { + $icon = isset($service['icon']) ? $service['icon'] : $service_id . '.png'; + $paths[$service_id] = service_links_expand_path($icon); + } + + sls_build_sprites($paths); +} + +/** + * Implements hook_sl_styles(). + */ +function service_links_sprites_sl_styles($nodelink = FALSE) { + return array( + 'sls_style_image' => t('Only Image (with Sprite)'), + 'sls_style_image_and_text' => t('Image and Text (with Sprite)'), + ); +} + +/** + * Implements hook_theme(). + */ +function service_links_sprites_theme() { + return array( + 'sls_style_image' => array( + 'variables' => array( + 'text' => NULL, + 'url' => array(), + 'image' => NULL, + 'nodelink' => NULL, + 'attributes' => array(), + ), + ), + 'sls_style_image_and_text' => array( + 'variables' => array( + 'text' => NULL, + 'url' => array(), + 'image' => NULL, + 'nodelink' => NULL, + 'attributes' => array(), + ), + ), + ); +} + +function theme_sls_style_image($variables) { + $text = $variables['text']; + $url = $variables['url']; + $image = $variables['image']; + $nodelink = $variables['nodelink']; + $attributes = $variables['attributes']; + + $width = sls_get_image_size(service_links_expand_path($image)); + $attributes['class'][] = "sprites service-links w$width"; + + if ($nodelink) { + $query = isset($url[1]) ? $url[1] : NULL; + + return array( + 'title' => '' . $text . '', + 'href' => $url[0], + 'query' => $query, + 'attributes' => $attributes, + 'html' => TRUE, + ); + } + else { + $attributes = array_merge($attributes, array('html' => TRUE)); + if (isset($url[1])) { + $attributes['query'] = $url[1]; + } + + return l('' . $text . '', $url[0], $attributes); + } +} + +function theme_sls_style_image_and_text($variables) { + $text = $variables['text']; + $url = $variables['url']; + $image = $variables['image']; + $nodelink = $variables['nodelink']; + $attributes = $variables['attributes']; + + $width = sls_get_image_size(service_links_expand_path($image)); + $attributes['class'][] = "sprites service-links w$width"; + + if ($nodelink) { + $query = isset($url[1]) ? $url[1] : NULL; + + return array( + 'title' => $text, + 'href' => $url[0], + 'query' => $query, + 'attributes' => $attributes, + ); + } + else { + if (isset($url[1])) { + $attributes['query'] = $url[1]; + } + return l($text, $url[0], $attributes); + } +} + +function sls_get_image_size($filepath = '') { + static $sizes; + + if (!isset($sizes)) { + $sizes = variable_get('service_links_sprites_sizes', array()); + } + + if (isset($sizes[$filepath])) { + return $sizes[$filepath]; + } + else { + return 16; + } +} diff --git a/web/sites/all/modules/contrib/service_links/service_links.admin.inc b/web/sites/all/modules/contrib/service_links/service_links.admin.inc new file mode 100644 index 0000000..d2e5312 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.admin.inc @@ -0,0 +1,482 @@ + $service['#title']); + $col[] = drupal_render($service['name']); + + $service['service'] = array('#markup' => $service['#service']); + $col[] = drupal_render($service['service']); + + $service['show'] = array( + '#type' => 'checkbox', + '#checked' => $service['#default_value'], + '#id' => $service['#id'], + '#name' => $service['#name'], + ); + $col[] = drupal_render($service['show']); + + $service['weight'] = $form['service_links_weight'][$service_id]; + $service['weight']['#attributes']['class'] = array('service-weight'); + $col[] = drupal_render($service['weight']); + + $table['weights'][] = $service['#weight']; + $table['rows'][] = array('data' => $col, 'class' => array('draggable')); + } + + $table['header'] = array(t('Service Name'), t('Group'), t('Show'), t('Weight')); + + drupal_alter('sl_servicestable', $table, $form); + + if (!empty($table['rows'])) { + array_multisort($table['weights'], $table['rows']); + } + + drupal_add_tabledrag('service_links', 'order', 'sibling', 'service-weight'); + + $params = array( + '#theme' => 'table', + '#header' => $table['header'], + '#rows' => $table['rows'], + '#attributes' => array('id' => 'service_links'), + '#empty' => t('No services available.'), + ); + + return theme('table', $params); +} + +/** + * Menu callback administration settings for general options. + */ +function service_links_admin_settings() { + + $form['where_to_show_the_links'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t("Show for content types or categories"), + '#description' => t("Set the content types or categories you want to display links for."), + ); + $form['where_to_show_the_links']['service_links_node_types'] = array( + '#type' => 'checkboxes', + '#title' => t('Content types'), + '#default_value' => variable_get('service_links_node_types', array()), + '#options' => array_map('check_plain', node_type_get_names()), + '#attributes' => array('class' => array('container-inline')), + ); + if (module_exists('taxonomy')) { + $selected_vocs = variable_get('service_links_category_vocs', array()); + $vocabularies = _service_links_get_vocabularies(); + $form['where_to_show_the_links']['service_links_category_vocs'] = array( + '#type' => 'checkboxes', + '#title' => t('Show terms from the selected vocabularies'), + '#default_value' => $selected_vocs, + '#options' => $vocabularies, + '#attributes' => array('class' => array('container-inline')), + ); + + $terms = _service_links_get_terms(array_values(array_filter($selected_vocs))); + $count = count($terms); + $selected_types = variable_get('service_links_category_types', array()); + if ($count > 0) { + $form['where_to_show_the_links']['service_links_category_types'] = array( + '#type' => 'select', + '#multiple' => TRUE, + //'#title' => t('Categories'), + '#default_value' => $selected_types, + '#options' => $terms, + //'#size' => ($count > 10 ? 10 : $count), + '#attributes' => array('style' => 'display: none;'), + ); + foreach ($vocabularies as $vid => $vocabulary) { + if (in_array($vid, $selected_vocs)) { + $terms = _service_links_get_terms(array($vid)); + $form['where_to_show_the_links']['service_links_category_by_voc_' . $vid] = array( + '#type' => 'select', + '#multiple' => TRUE, + '#title' => $vocabulary, + '#default_value' => $selected_types, + '#options' => $terms, + '#size' => ($count > 10 ? 10 : $count), + ); + } + } + } + } + + $form['places_to_show_the_links'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Where to show service links'), + ); + $form['places_to_show_the_links']['service_links_link_view_modes'] = array( + '#type' => 'checkboxes', + '#title' => t('Service links in the links'), + '#default_value' => variable_get('service_links_link_view_modes', array()), + '#options' => _service_links_get_view_modes(), + '#description' => t('Select for what view mode display the services in the link section.'), + ); + $form['places_to_show_the_links']['service_links_node_view_modes'] = array( + '#type' => 'checkboxes', + '#title' => t('Service links in the content'), + '#default_value' => variable_get('service_links_node_view_modes', array()), + '#options' => _service_links_get_view_modes(), + '#description' => t('Select for what view modes display the services in the content section.'), + ); + + $form['page_match'] = array( + '#type' => 'fieldset', + '#title' => t('Page specific visibility settings'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + ); + $access = user_access('use PHP for service visibility'); + $visibility = variable_get('service_links_visibility_for_node', SERVICE_LINKS_VISIBILITY_NOT_LISTED); + $pages = variable_get('service_links_page_match_for_node', ''); + if ($visibility == SERVICE_LINKS_VISIBILITY_PHP && !$access) { + $form['page_match'] = array( + 'service_links_visibility_for_node' => array( + '#type' => 'value', + '#value' => SERVICE_LINKS_VISIBILITY_PHP, + ), + 'service_links_page_match_for_node' => array( + '#type' => 'value', + '#value' => $pages, + ), + ); + } + else { + $options = array( + SERVICE_LINKS_VISIBILITY_NOT_LISTED => t('All pages except those listed'), + SERVICE_LINKS_VISIBILITY_ONLY_LISTED => t('Only the listed pages'), + ); + $description = t("Specify pages by using their paths. Enter one path per line. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => '')); + + if (module_exists('php') && $access) { + $options += array(SERVICE_LINKS_VISIBILITY_PHP => t('Pages on which this PHP code returns TRUE (experts only)')); + $title = t('Pages or PHP code'); + $description .= ' ' . t('If the PHP option is chosen, enter PHP code between %php. Note that executing incorrect PHP code can break your Drupal site.', array('%php' => '')); + } + else { + $title = t('Pages'); + } + + $form['page_match']['service_links_visibility_for_node'] = array( + '#type' => 'radios', + '#title' => t('Show Service Links on specific pages'), + '#options' => $options, + '#default_value' => $visibility, + ); + $form['page_match']['service_links_page_match_for_node'] = array( + '#type' => 'textarea', + '#title' => $title, + '#default_value' => $pages, + '#description' => $description, + ); + } + + $form['how_to_show_the_links'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('How to display Service Links'), + ); + $form['how_to_show_the_links']['service_links_style'] = array( + '#type' => 'select', + '#title' => t('Choose a style'), + '#default_value' => variable_get('service_links_style', SERVICE_LINKS_STYLE_IMAGE), + '#options' => array( + SERVICE_LINKS_STYLE_TEXT => t('Only Text'), + SERVICE_LINKS_STYLE_IMAGE => t('Only Image'), + SERVICE_LINKS_STYLE_IMAGE_AND_TEXT => t('Image and Text'), + ), + ); + + $styles = module_invoke_all('sl_styles', FALSE); + if (!empty($styles)) { + $form['how_to_show_the_links']['service_links_style']['#options'] += $styles; + } + + $form['how_to_show_the_links']['service_links_hide_if_unpublished'] = array( + '#type' => 'checkbox', + '#title' => t("Don't show links if the content is unpublished"), + '#default_value' => variable_get('service_links_hide_if_unpublished', 0), + ); + $form['how_to_show_the_links']['service_links_hide_for_author'] = array( + '#type' => 'checkbox', + '#title' => t("Don't show links if the actual user is the author of the node"), + '#default_value' => variable_get('service_links_hide_for_author', 0), + ); + $form['how_to_show_the_links']['in_node'] = array( + '#type' => 'fieldset', + '#title' => t('Service Links in nodes'), + ); + $form['how_to_show_the_links']['in_node']['service_links_label_in_node'] = array( + '#type' => 'textfield', + '#title' => t('Print the label'), + '#default_value' => variable_get('service_links_label_in_node', t('Bookmark/Search this post with')), + '#size' => '40', + ); + $form['how_to_show_the_links']['in_node']['service_links_weight_in_node'] = array( + '#type' => 'weight', + '#delta' => 100, + '#title' => t('Assign a weight'), + '#default_value' => variable_get('service_links_weight_in_node', 10), + '#description' => t('The weight help to place the Service Links section above or below the other elements.'), + ); + + $form['how_to_show_the_links']['icons'] = array( + '#type' => 'fieldset', + '#title' => t('Service Links icons'), + ); + $form['how_to_show_the_links']['icons']['service_links_path_icons'] = array( + '#type' => 'textfield', + '#title' => t('Standard folder'), + '#description' => t('If you have alternative icons enter here the relative path from your index.php without trailing slash (i.e. %path1 or %path2)', array('%path1' => 'files/newicons', '%path2' => 'sites/all/files/newicons')), + '#default_value' => service_links_expand_path(NULL, 'icons'), + '#size' => 40, + ); + $form['how_to_show_the_links']['icons']['service_links_check_icons'] = array( + '#type' => 'checkbox', + '#title' => t('Use the default icons if missing'), + '#description' => t('Check every icon in the standard folder and if not available, consider the default path %path', array('%path' => service_links_expand_path(NULL, 'preset'))), + '#default_value' => variable_get('service_links_check_icons', FALSE), + ); + + $form['extra_options'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Extra Options'), + ); + $form['extra_options']['service_links_new_window'] = array( + '#type' => 'select', + '#title' => t('Open link in...'), + '#default_value' => variable_get('service_links_new_window', 0), + '#options' => array(0 => t('Same window'), 1 => t('New window')), + ); + $form['extra_options']['service_links_append_to_url'] = array( + '#type' => 'textfield', + '#title' => t('Append the following text to your URL'), + '#description' => t('This text will be inserted at the end of the current URL (i.e. %param => %url)', array('%param' => 'param1=value1¶m2=value2', '%url' => 'http://domain.com/current-page¶m1=value1¶m2=value2')), + '#default_value' => variable_get('service_links_append_to_url', ''), + '#size' => 40, + ); + $form['extra_options']['title'] = array( + '#type' => 'fieldset', + ); + $form['extra_options']['title']['service_links_override_title'] = array( + '#type' => 'select', + '#title' => t('How to fill the title tag'), + '#default_value' => variable_get('service_links_override_title', SERVICE_LINKS_TAG_TITLE_NODE), + '#options' => array( + SERVICE_LINKS_TAG_TITLE_NODE => t('Use the original node title'), + SERVICE_LINKS_TAG_TITLE_OVERRIDE => t('Override the original title'), + ), + ); + $form['extra_options']['title']['service_links_override_title_text'] = array( + '#type' => 'textfield', + '#description' => t("Enter the text that override the title: use @title for referrer the original title, either the various tokens offered by Token if it's enabled and the related option active.", array('@url' => 'http://www.drupal.org/project/token', '@title' => '')), + '#default_value' => variable_get('service_links_override_title_text', '<title>'), + '#size' => 40, + ); + + if (module_exists('token')) { + $form['extra_options']['title']['service_links_override_title']['#options'] += array( + SERVICE_LINKS_TAG_TITLE_TOKEN => t('Parse the string with Token'), + ); + $form['extra_options']['title']['token_help'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#title' => t('Token help'), + '#theme' => 'token_tree', + '#token_types' => array('node'), + ); + } + + $form['short_links'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Short Links'), + ); + $form['short_links']['service_links_short_links_use'] = array( + '#type' => 'select', + '#title' => t('Use short links'), + '#default_value' => variable_get('service_links_short_links_use', SERVICE_LINKS_SHORT_URL_USE_NEVER), + '#options' => array( + SERVICE_LINKS_SHORT_URL_USE_NEVER => t('Never'), + SERVICE_LINKS_SHORT_URL_USE_WHEN_REQUESTED => t('Only when requested'), + SERVICE_LINKS_SHORT_URL_USE_ALWAYS => t('Always')), + ); + if (variable_get('service_links_short_links_use', SERVICE_LINKS_SHORT_URL_USE_NEVER) > 0) { + $form['short_links']['service_links_short_links_type'] = array( + '#type' => 'select', + '#title' => t('How generate short links'), + '#default_value' => variable_get('service_links_short_links_type', SERVICE_LINKS_SHORT_URL_TYPE_NODE), + '#description' => t('If you select "Short URL," it will use the service selected with the <a href="@shorten">Shorten URLs module</a>. If you have not enabled the module, Service Links will default to TinyURL.', array('@shorten' => 'http://drupal.org/project/shorten')), + '#options' => array( + SERVICE_LINKS_SHORT_URL_TYPE_NODE => t('Use node/xxx alias'), + SERVICE_LINKS_SHORT_URL_TYPE_SERVICE => t('Use Short Url service'), + SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_DOMAIN => t('Redirect only the Domain name'), + SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_ALL => t('Combo: domain redirect and node/xxx alias')), + ); + $form['short_links']['service_links_domain_redirect'] = array( + '#type' => 'textfield', + '#title' => t('Domain to redirect'), + '#description' => t('Enter the complete address without trailing slash (i.e. %name)', array('%name' => 'http://www.example.com') ), + '#default_value' => variable_get('service_links_domain_redirect', ''), + '#size' => 40, + ); + } + $form['#validate'][] = 'service_links_admin_services_validate'; + + return system_settings_form($form); +} + +/** + * Check if domain address textbox is empty when should be not, + * copy the selected terms into a unique list, + * check the path of custom'icons. + */ +function service_links_admin_services_validate($form, &$form_state) { + if (isset($form_state['values']['service_links_short_links_type']) && (int) $form_state['values']['service_links_short_links_type'] > 2) { + if (!$form_state['values']['service_links_domain_redirect']) { + form_set_error('service_links_domain_redirect', t('Domain redirect address is not set.')); + } + if (preg_match("/\/$/", $form_state['values']['service_links_domain_redirect'])) { + form_set_error('service_links_domain_redirect', t('No trailing slash!')); + } + } + + if (isset($form_state['values']['service_links_category_vocs']) && module_exists('taxonomy')) { + $selected_vocs = array_filter($form_state['values']['service_links_category_vocs']); + if (empty($selected_vocs)) { + $form_state['values']['service_links_category_types'] = array(); + } + else { + $vocabularies = _service_links_get_vocabularies(); + $form_state['values']['service_links_category_types'] = array(); + foreach ($vocabularies as $vid => $vocabulary) { + if (isset($form_state['values']['service_links_category_by_voc_' . $vid])) { + $form_state['values']['service_links_category_types'] += $form_state['values']['service_links_category_by_voc_' . $vid]; + } + + } + } + } + + if (!empty($form_state['values']['service_links_path_icons'])) { + if (!is_dir($form_state['values']['service_links_path_icons'])) { + form_set_error('service_links_path_icons', t('The path for custom icons is not valid')); + } + elseif (preg_match("/\/$/", $form_state['values']['service_links_path_icons'])) { + form_set_error('service_links_path_icons', t('No trailing slash!')); + } + } +} + +/** + * Menu callback administration settings for services links list. + */ +function service_links_admin_services() { + $settings = array(); + + $services = service_links_get_links(NULL, TRUE); + $settings['show'] = variable_get('service_links_show', NULL); + $settings['weight'] = variable_get('service_links_weight', NULL); + + $form['service_links'] = array('#theme' => 'service_links_drag_table'); + $form['service_links']['service_links_show'] = array('#tree' => TRUE); + $form['service_links']['service_links_weight'] = array('#tree' => TRUE); + + foreach ($services as $service_id => $service) { + $icon = array( + 'path' => isset($service['icon']) ? service_links_expand_path($service['icon'], 'preset') : service_links_expand_path("$service_id.png", 'preset'), + ); + $weight = isset($settings['weight'][$service_id]) ? $settings['weight'][$service_id] : 0; + + $form['service_links']['service_links_show'][$service_id] = array( + '#service' => ucwords(str_replace('_', ' ', $service['module'])), + '#weight' => $weight, + '#type' => 'checkbox', + '#title' => theme('image', $icon) . " " . t('Show %name link', array('%name' => $service['name'])), + '#return_value' => 1, + '#default_value' => isset($settings['show'][$service_id]) ? $settings['show'][$service_id] : 0, + ); + $form['service_links']['service_links_weight'][$service_id] = array( + '#type' => 'weight', + '#delta' => 100, + '#default_value' => $weight, + ); + } + + if (empty($services)) { + drupal_set_message(t('You need to load at least one of XXX Services module, please enable them in <a href="@url">admin > modules</a> page', array('@url' => url('admin/modules'))), 'warning'); + } + + return system_settings_form($form); +} + +/** + * Build an array of all taxonomy terms. + */ +function _service_links_get_terms($included_vocs = array()) { + $types = array(); + $vocabularies = taxonomy_get_vocabularies(); + foreach ($vocabularies as $vocabulary) { + if (in_array($vocabulary->vid, $included_vocs)) { + $tree = taxonomy_get_tree($vocabulary->vid); + foreach ($tree as $term) { + $types[$term->tid] = check_plain($term->name); + } + } + } + + return $types; +} + +/** + * Return a list of vocabularies generated by taxonomy module. + */ +function _service_links_get_vocabularies() { + $list_vocs = taxonomy_get_vocabularies(); + $vocs = array(); + foreach ($list_vocs as $vocabulary) { + if ($vocabulary->module == 'taxonomy') { + $vocs[$vocabulary->vid] = check_plain($vocabulary->name); + } + } + + return $vocs; +} + +/** + * Return the view modes availables for the node entity. + */ +function _service_links_get_view_modes() { + $view_modes = array(); + + $entity_info = entity_get_info('node'); + foreach ($entity_info['view modes'] as $view => $info){ + $view_modes[$view] = $info['label']; + } + + return $view_modes; +} diff --git a/web/sites/all/modules/contrib/service_links/service_links.api.php b/web/sites/all/modules/contrib/service_links/service_links.api.php new file mode 100644 index 0000000..189f59d --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.api.php @@ -0,0 +1,84 @@ +<?php + +/** + * @file + * Provides documentation for the Service Links API. + * + * Look the online documentation for more info. + */ + +/** + * Obtains all available service links. + * + * @return + * An array containing all service links, keyed by name. + */ +function hook_service_links() { + $links = array(); + + $links['myservice'] = array( + // The name of the service. + 'name' => 'MyService', + // A short description for the link. + 'description' => t('Share this post on MyService'), + // The service URL and its params. + 'link' => 'http://example.com/?url=<encoded-url>&title=<encoded-title>&summary=<encoded-teaser>', + // The service icon. The id name and .png extension is used as default. + 'icon' => drupal_get_path('module', 'myservice') .'/myservice.png', + // Any additional attributes to apply to the element. + 'attributes' => array( + 'class' => array('myservice-special-class'), // A special class. + 'style' => 'text-decoration: underline;', // Apply any special inline styles. + ), + // JavaScript to add when this link is processed, can be a string or an array. + 'javascript' => drupal_get_path('module', 'myservice') .'/myservice.js', + // CSS to add when this link is processed, can be a string or an array. + 'css' => drupal_get_path('module', 'myservice') .'/myservice.css', + // A PHP function invoked before the link is created, useful to add new tags. + 'preset' => 'myservice_preset', + // A PHP function callback that is invoked when the link is created. + 'callback' => 'myservice_callback', + ); + + return $links; +} + +/** + * Example of preset function. + * + * @param $service + * The service that is being used. + * @param $settings + * An array containing all the settings used. + * @param $node + * An object containt the current node. + */ +function my_service_preset(&$service, &$settings, $node = NULL) { + $settings['tags']['new-tag'] = '<new-tag>'; + $settings['subst']['new-tag'] = check_plain(variable_get('some_variable', 'default')); +} + +/** + * Example callback from the Service Links. + * + * @param $service + * The service that is being used. + * @param $context + * An array containing all information about the item being shared. + */ +function myservice_callback($service, $context) { + +} + +/** + * Allows alteration of the Service Links. + * + * @param $links + * The constructed array of service links. + */ +function hook_service_links_alter(&$links) { + if (isset($links['myservice'])) { + // Change the icon of MyService. + $links['myservice']['icon'] = 'http://drupal.org/misc/favicon.ico'; + } +} diff --git a/web/sites/all/modules/contrib/service_links/service_links.info b/web/sites/all/modules/contrib/service_links/service_links.info new file mode 100644 index 0000000..cbcca81 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.info @@ -0,0 +1,14 @@ +name = Service links +description = Module engine for add various service links about sharing networks to nodes. +core = 7.x +package = Service Links + +files[] = service_links_handler_field_service_links.inc +configure = admin/config/services/service-links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/service_links.install b/web/sites/all/modules/contrib/service_links/service_links.install new file mode 100644 index 0000000..8896438 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.install @@ -0,0 +1,90 @@ +<?php + +/** + * @file + * Service Links install file. + */ + +/** + * Implements hook_uninstall(). + */ +function service_links_uninstall() { + db_delete('variable') + ->condition('name', 'service_links_%', 'LIKE') + ->execute(); +} + +/** + * Update from Service Links 1.x. + */ +function service_links_update_6200() { + $new_var = variable_get('service_links_show', NULL); + + if (!isset($new_var)) { + variable_set('service_links_show', array( + 'delicious' => variable_get('service_links_show_delicious', 0), + 'digg' => variable_get('service_links_show_digg', 0), + 'stumbleupon' => variable_get('service_links_show_stumbleupon', 0), + 'reddit' => variable_get('service_links_show_reddit', 0), + 'newsvine' => variable_get('service_links_show_newsvine', 0), + 'furl' => variable_get('service_links_show_furl', 0), + 'facebook' => variable_get('service_links_show_facebook', 0), + 'myspace' => variable_get('service_links_show_myspace', 0), + 'identica' => variable_get('service_links_show_identica', 0), + 'twitter' => variable_get('service_links_show_twitter', 0), + 'google' => variable_get('service_links_show_google', 0), + 'yahoo' => variable_get('service_links_show_yahoo', 0), + 'linkedin' => variable_get('service_links_show_linkedin', 0), + 'technorati' => variable_get('service_links_show_technorati', 0), + 'icerocket' => variable_get('service_links_show_icerocket', 0), + )); + + module_enable(array('general_services')); + } + + // delete old service variables + $result = db_query('SELECT name FROM {variable} v WHERE LOCATE("service_links_show_",v.name) > 0'); + while ($row = db_fetch_object($result)) { + variable_del($row->name); + } + + // Aggregator2 support + variable_del('service_links_agg2_link'); +} + +/** + * Switch the old variables to the news based on view modes. + */ +function _update_to_view_modes($old_var, $new_var) { + $modes = array_filter(variable_get($old_var, 0)); + $new_var = variable_get($new_var, NULL); + + if (!isset($new_var)) { + switch($modes) { + case 0: + $modes = array(); + break; + case 1: + $modes = array('teaser' => 'teaser'); + break; + case 2: + $modes = array('full' => 1); + break; + case 3: + $modes = array('teaser' => 1, 'full' => 1); + break; + } + + variable_set($new_var, $modes); + } + + variable_del($old_var); +} + +/** + * Update to view mode display. + */ +function service_links_update_7201(&$sandbox) { + _update_to_view_modes('service_links_in_links', 'service_links_link_view_modes'); + _update_to_view_modes('service_links_in_node', 'service_links_node_view_modes'); +} \ No newline at end of file diff --git a/web/sites/all/modules/contrib/service_links/service_links.module b/web/sites/all/modules/contrib/service_links/service_links.module new file mode 100644 index 0000000..cc6643d --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.module @@ -0,0 +1,1058 @@ +<?php + +/** + * @file + * Adds social network links to the content. + * + * This module is the enhanced version of Service Links 1.x developed + * by Fredrik Jonsson, rewritten and improved to fit the new purposes: + * extend easily the number of services supported and provide APIs to + * print links everywhere within any content. + * At the @link http://servicelinks.altervista.org/?q=service home page + * @endlink a web interface helps to create a module including the + * services not availables in the standard package. + * + * @author: Fabio Mucciante (TheCrow) + */ + +define('SERVICE_LINKS_STYLE_NONE', 0); +define('SERVICE_LINKS_STYLE_TEXT', 1); +define('SERVICE_LINKS_STYLE_IMAGE', 2); +define('SERVICE_LINKS_STYLE_IMAGE_AND_TEXT', 3); +define('SERVICE_LINKS_STYLE_EMPTY', 4); +define('SERVICE_LINKS_STYLE_FISHEYE', 5); + +define('SERVICE_LINKS_SHORT_URL_USE_NEVER', 0); +define('SERVICE_LINKS_SHORT_URL_USE_WHEN_REQUESTED', 1); +define('SERVICE_LINKS_SHORT_URL_USE_ALWAYS', 2); + +define('SERVICE_LINKS_SHORT_URL_TYPE_NODE', 1); +define('SERVICE_LINKS_SHORT_URL_TYPE_SERVICE', 2); +define('SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_DOMAIN', 3); +define('SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_ALL', 4); + +define('SERVICE_LINKS_TAG_TITLE_NODE', 0); +define('SERVICE_LINKS_TAG_TITLE_OVERRIDE', 1); +define('SERVICE_LINKS_TAG_TITLE_TOKEN', 2); + +define('SERVICE_LINKS_VISIBILITY_NOT_LISTED', 0); +define('SERVICE_LINKS_VISIBILITY_ONLY_LISTED', 1); +define('SERVICE_LINKS_VISIBILITY_PHP', 2); + +/** + * Implements hook_help(). + */ +function service_links_help($path, $arg) { + switch ($path) { + case 'admin/help#service_links': + return '<p>'. t('Display links to social sharing websites like Digg, del.icio.us, reddit, Technorati etc.') .'</p>'; + break; + } +} + +/** + * Implements hook_hook_info(). + */ +function service_links_hook_info() { + $hooks = array( + 'service_links' => array( + 'group' => 'service_links', + ), + 'service_links_alter' => array( + 'group' => 'service_links', + ), + ); + + return $hooks; +} + +/** + * Implements hook_permission(). + */ +function service_links_permission() { + return array( + 'access service links' => array( + 'title' => t('Access to Service Links'), + //'description' => t('Allow users to act with the services loaded'), + ), + 'use PHP for service visibility' => array( + 'title' => t('Use PHP for Service visibility'), + ), + ); +} + +/** + * Implements hook_menu(). + */ +function service_links_menu() { + $items = array(); + + $items['admin/config/services/service-links'] = array( + 'title' => 'Service Links', + 'description' => 'Control which and where service links should be active.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('service_links_admin_settings'), + 'access arguments' => array('administer site configuration'), + 'type' => MENU_NORMAL_ITEM, + 'file' => 'service_links.admin.inc', + ); + + $items['admin/config/services/service-links/general'] = array( + 'title' => 'General Settings', + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => -10, + ); + + $items['admin/config/services/service-links/services'] = array( + 'title' => 'Services', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('service_links_admin_services'), + 'access arguments' => array('administer site configuration'), + 'type' => MENU_LOCAL_TASK, + 'file' => 'service_links.admin.inc', + ); + + return $items; +} + +/** + * Implements hook_node_view(). + */ +function service_links_node_view($node, $view_mode) { + static $view_modes_allowed; + + if (!isset($view_modes_allowed)) { + $view_modes_allowed = array_filter(variable_get('service_links_node_view_modes', array())); + } + + if ((arg(2) != 'edit') && service_links_show($node) && user_access('access service links')) { + + $node->service_links = service_links_render($node, TRUE); + + if (!empty($view_modes_allowed) && (in_array($view_mode, $view_modes_allowed))) { + + $node->service_links_rendered = theme('service_links_node_format', array( + 'links' => $node->service_links, + 'label' => variable_get('service_links_label_in_node', t('Bookmark/Search this post with')), + 'view_mode' => $view_mode, + 'node_type' => $node->type, + )); + + $node->content['service_links'] = array( + '#markup' => $node->service_links_rendered, + '#weight' => variable_get('service_links_weight_in_node', 10), + ); + } + + _service_links_link($node, $view_mode); + } +} + +/** + * Create an array of links for the link section. + */ +function _service_links_link($node, $view_mode) { + static $view_modes_allowed; + + if (!isset($view_modes_allowed)) { + $view_modes_allowed = array_filter(variable_get('service_links_link_view_modes', array())); + } + + if (in_array($view_mode, $view_modes_allowed)) { + $links = $node->service_links; + if (!empty($links)) { + $node->content['links']['node']['#links'] = array_merge($node->content['links']['node']['#links'], $links); + } + } +} + +/** + * Implements hook_block_info(). + */ +function service_links_block_info() { + $blocks['service_links'] = array( + 'info' => t('Service links'), + 'cache' => DRUPAL_NO_CACHE, + ); + $blocks['service_links_fisheye'] = array( + 'info' => t('Service links with FishEye effect'), + 'cache' => DRUPAL_NO_CACHE, + ); + $blocks['service_links_not_node'] = array( + 'info' => t('Service links for not-node pages'), + 'cache' => DRUPAL_NO_CACHE, + ); + + return $blocks; +} + +/** + * Implements hook_block_view(). + */ +function service_links_block_view($delta = '') { + $node = menu_get_object('node'); + $block = array(); + + if (user_access('access service links') && (isset($node))) { + if (service_links_show($node)) { + switch ($delta) { + case 'service_links': + $block['subject'] = t('Bookmark/Search this post'); + $style = variable_get('service_links_block_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT); + $block['content'] = theme('service_links_block_format', array('items' => service_links_render($node, FALSE, $style), 'style' => $style)); + break; + case 'service_links_fisheye': + $block['subject'] = t('Bookmark/Search this post'); + $block['content'] = theme('service_links_fisheye_format', array('items' => service_links_render($node, FALSE, SERVICE_LINKS_STYLE_FISHEYE))); + break; + } + } + return $block; + } + elseif (user_access('access service links') && (!isset($node))) { + switch ($delta) { + case 'service_links_not_node': + $block['subject'] = t('Bookmark/Search this post'); + $options = array( + 'style' => variable_get('service_links_block_not_node_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT), + 'link_to_front' => variable_get('service_links_block_not_node_front', FALSE), + ); + $block['content'] = theme('service_links_block_format', array( + 'items' => service_links_render(NULL, FALSE, $options), + 'style' => $options['style'], + )); + break; + } + return $block; + } +} + +/** + * Implements hook_block_configure(). + */ +function service_links_block_configure($delta = '') { + $form = array(); + switch ($delta) { + case 'service_links': + $form['service_links_block_style'] = array( + '#type' => 'select', + '#title' => t('Style'), + '#description' => t('How the service links will appear in the block.'), + '#default_value' => variable_get('service_links_block_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT), + '#options' => array( + SERVICE_LINKS_STYLE_TEXT => t('Text'), + SERVICE_LINKS_STYLE_IMAGE => t('Image'), + SERVICE_LINKS_STYLE_IMAGE_AND_TEXT => t('Image and Text'), + ), + ); + break; + case 'service_links_fisheye': + $form['service_links_path_fisheye'] = array( + '#type' => 'textfield', + '#title' => t('Alternative icon folder'), + '#size' => 60, + '#description' => t('If you have alternative icons write here the path without trailing slash'), + '#default_value' => service_links_expand_path(NULL, 'fisheye'), + ); + break; + case 'service_links_not_node': + $form['service_links_block_not_node_style'] = array( + '#type' => 'select', + '#title' => t('Style'), + '#description' => t('How the service links will appear in the block.'), + '#default_value' => variable_get('service_links_block_not_node_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT), + '#options' => array( + SERVICE_LINKS_STYLE_TEXT => t('Text'), + SERVICE_LINKS_STYLE_IMAGE => t('Image'), + SERVICE_LINKS_STYLE_IMAGE_AND_TEXT => t('Image and Text'), + ), + ); + + $form['service_links_block_not_node_front'] = array( + '#type' => 'checkbox', + '#title' => t('Link always to the front page'), + '#description' => t('If selected the services will link always to the front page %front.', array('%front' => url('<front>', array('absolute' => TRUE)))), + '#default_value' => variable_get('service_links_block_not_node_front', FALSE), + ); + break; + } + + return $form; +} + +/** + * Implements hook_block_save(). + */ +function service_links_block_save($delta = '', $edit = array()) { + switch ($delta) { + case 'service_links': + variable_set('service_links_block_style', $edit['service_links_block_style']); + break; + case 'service_links_fisheye': + variable_set('service_links_path_fisheye', $edit['service_links_path_fisheye']); + break; + case 'service_links_not_node': + variable_set('service_links_block_not_node_style', $edit['service_links_block_not_node_style']); + variable_set('service_links_block_not_node_front', $edit['service_links_block_not_node_front']); + break; + } +} + +/** + * Implements hook_theme(). + */ +function service_links_theme() { + return array( + 'service_links_build_link' => array( + 'variables' => array( + 'text' => NULL, + 'url' => array(), + 'image' => NULL, + 'nodelink' => FALSE, + 'style' => NULL, + 'attributes' => array(), + ), + 'file' => 'service_links.theme.inc', + ), + 'service_links_node_format' => array( + 'variables' => array( + 'links' => NULL, + 'label' => NULL, + 'view_mode' => NULL, + 'node_type' => NULL + ), + 'file' => 'service_links.theme.inc', + ), + 'service_links_block_format' => array( + 'variables' => array('items' => NULL, 'style' => SERVICE_LINKS_STYLE_IMAGE_AND_TEXT), + 'file' => 'service_links.theme.inc', + ), + 'service_links_fisheye_format' => array( + 'variables' => array('items' => NULL), + 'file' => 'service_links.theme.inc', + ), + 'service_links_drag_table' => array( + 'render element' => 'form', + ), + ); +} + +/** + * Remove a service from the list if the related module is disabled + * and can't provide the correct values. + */ +function service_links_array_filter($services) { + $result = array(); + + foreach ($services as $service_id => $service) { + if ($service === 1) { + drupal_set_message(t('The service having id "@id" is missing, reactivate its module or save again the list of services.', array('@id' => $service_id)), 'warning', FALSE); + } + else { + $result[$service_id] = $service; + } + } + + return $result; +} + +/** + * Discover all available service links by invoking hook_service_links(). + * + * @param $services + * If NULL, will retrieve all service link information. If an array is passed, + * will only obtain information for the given keyed links. + * @param $reset + * Resets the Service Links cache. + * + * @return + * An array containing information for all the requested services. + */ +function service_links_get_links($services = NULL, $reset = FALSE) { + $links = &drupal_static(__FUNCTION__, NULL); + if (!isset($links) || $reset) { + // Retrieve the links from the cache. + if (!$reset && ($cache = cache_get('service_links_get_links')) && !empty($cache->data)) { + $links = $cache->data; + } + else { + // Create the repository of links. + $links = array(); + foreach (module_implements('service_links') as $module) { + $module_links = module_invoke($module, 'service_links'); + foreach ($module_links as $name => $link) { + $link['module'] = $module; + $links[$name] = $link; + } + } + // Allow alteration of the links. + drupal_alter('service_links', $links); + + // Save the links in the cache. + cache_set('service_links_get_links', $links); + } + } + + // If desired, return only the wanted services. + if (isset($services)) { + // Detect a manual request and populate the array correctly. + if (is_numeric(key($services))) { + $services = array_combine($services, array_fill(0, count($services), 1)); + } + + // Provide only the services requested. + $services = array_merge($services, array_intersect_key($links, $services)); + + // Remove the unknown services. + $services = service_links_array_filter($services); + } + + return isset($services) ? $services : $links; +} + +/** + * Create short links using predefined settings. + */ +function service_links_short_url($url, $nid = NULL) { + switch (variable_get('service_links_short_links_type', SERVICE_LINKS_SHORT_URL_TYPE_NODE)) { + case SERVICE_LINKS_SHORT_URL_TYPE_NODE: + if (empty($nid)) { + return $url; + } + else { + // With alias = true doesn't change the path. + return url("node/$nid", array('absolute' => TRUE, 'alias' => TRUE)); + } + case SERVICE_LINKS_SHORT_URL_TYPE_SERVICE: + if (module_exists('shorten')) { + $turl = shorten_url($url); + } + else { + $turl = drupal_http_request('http://tinyurl.com/api-create.php?url=' . urlencode($url)); + $turl = (isset($turl->data) && ($turl->code == 200)) ? $turl->data : $url; + } + return $turl; + case SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_DOMAIN: + $burl = variable_get('service_links_domain_redirect', NULL); + return url($url, array('absolute' => TRUE, 'base_url' => $burl)); + case SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_ALL: + $burl = variable_get('service_links_domain_redirect', NULL); + if (empty($nid)) { + return url($url, array('absolute' => TRUE, 'base_url' => $burl)); + } + else { + return url("node/$nid", array('absolute' => TRUE, 'alias' => TRUE, 'base_url' => $burl)); + } + } +} + +/** + * Function that render all the selected services. + * + * @param $node + * Contains the content structured as a node object. + * Use the node_load() function to build one or set + * NULL this variable to consider the current page. + * @param $nodelink + * (optional) It determines the kind of render. + * If TRUE the function return an array of items + * compatible with the standard Drupal link section. + * If FALSE return an array of HTML links. + * Default is FALSE. + * @param $options + * (optional) Can assume the value of a valid service + * style either an array containing the settings + * to override (look at _service_links_load_settings() + * for more details). + * + * @return + * An array of HTML links if $nodelink = FALSE, an array + * of structured links to be themed with theme_links() + * if $nodelink = TRUE. + */ +function service_links_render($node, $nodelink = FALSE, $options = NULL) { + $links = array('weight' => array(), 'link' => array()); + $settings = _service_links_load_settings(); + + if (empty($settings['link_show'])) { + return array(); + } + + if (isset($options)) { + if (!is_array($options)) { + $options = array('style' => $options); + } + $settings = array_merge($settings, $options); + } + + _service_links_get_tags($node, $settings); + + // Services are filtered in _service_links_load_settings(). + $services = service_links_get_links($settings['link_show']); + + foreach ($services as $service_id => $service) { + // Load the position. + $links['weight'][] = isset($settings['link_weight'][$service_id]) ? $settings['link_weight'][$service_id] : 0; + + // Render the Service. + $links['link'] += _service_links_render($service_id, $service, $settings, $nodelink, $node); + } + + if (!empty($links['link'])) { + array_multisort($links['weight'], $links['link']); + } + + return !empty($links['link']) ? $links['link'] : array(); +} + +/** + * This function render only the services requested + * by their id. + * + * @param $service_ids + * The list of requested services, can be just a + * string, for a single services, or an array of + * id, don't need enable them on the admin page. + * @param $node + * Contains the content structured as a node object. + * Use the node_load() function to build one or set + * NULL this variable to consider the current page. + * @param $nodelink + * (optional) It determines the kind of render. + * If TRUE the function return an array of items + * compatible with the standard Drupal link section. + * If FALSE return an array of HTML links. + * Default is FALSE. + * @param $options + * (optional) Can assume the value of a valid service + * style either an array containing the settings + * to override (look at _service_links_load_settings() + * for more details). + * + * @return + * An array of HTML links if $nodelink = FALSE, an array + * of structured links to be themed with theme_links() + * if $nodelink = TRUE. + */ +function service_links_render_some($service_ids, $node = NULL, $nodelink = FALSE, $options = NULL) { + if (is_array($service_ids)) { + $services = service_links_get_links($service_ids); + } + else { + $services = service_links_get_links(array($service_ids)); + } + + if (empty($services)) { + return array(); + } + + $settings = _service_links_load_settings(); + if (isset($options)) { + if (!is_array($options)) { + $options = array('style' => $options); + } + $settings = array_merge($settings, $options); + } + + _service_links_get_tags($node, $settings); + + $links = array(); + foreach ($services as $service_id => $service) { + $links += _service_links_render($service_id, $service, $settings, $nodelink, $node); + } + + return $links; +} + +/** + * The common render function used privately. + */ +function _service_links_render($service_id, $service, $settings, $nodelink, $node = NULL) { + if (isset($service['preset'])) { + if (function_exists($function = $service['preset'])) { + $function($service, $settings, $node); + } + } + + // On Drupal 7 this tag should be filled before the split otherwise will be lost. + $service['link'] = str_replace('<front-page>', $settings['subst']['front-page'], $service['link']); + + if (strpos($service['link'], '=') === FALSE) { + $service['url'] = array($service['link']); + } + else { + $service['url'] = preg_split('/\?/', $service['link']); + } + + if (count($service['url']) > 1) { + $service['url'][1] = service_links_get_query($service['url'][1]); + $service['url'][1] = str_replace($settings['tag'], $settings['subst'], $service['url'][1]); + } + else { + $service['url'][0] = str_replace($settings['tag'], $settings['subst'], $service['url'][0]); + } + + $service['attributes']['title'] = t($service['description']); + $class = str_replace(array('][', '_', ' '), '-', 'service_links-'. $service_id); + $service['attributes']['class'] = isset($service['attributes']['class']) ? array_merge($service['attributes']['class'], array($class)) : array($class); + $service['attributes'] += $settings['attributes']; + + $service['icon'] = isset($service['icon']) ? $service['icon'] : "$service_id.png"; + + $service_id = str_replace('_', '-', 'service_links_'. $service_id); + + // Check if a predefined style should be imposed. + if (empty($service['style'])) { + $service['style'] = $settings['style']; + } + + // Add the related JavaScript and CSS. + if (isset($service['javascript'])) { + _service_links_add_js($service['javascript']); + } + if (isset($service['css'])) { + drupal_add_css(service_links_expand_path($service['css'], 'css')); + } + + // Invoke callback function. + if (isset($service['callback'])) { + if (function_exists($function = $service['callback'])) { + $function($service, $settings['subst']); + } + } + + // Create the HTML. + $link = theme('service_links_build_link', array( + 'text' => t($service['name']), + 'url' => $service['url'], + 'image' => $service['icon'], + 'nodelink' => $nodelink, + 'style' => $service['style'], + 'attributes' => $service['attributes'], + )); + + return array($service_id => $link); +} + +/** + * Load correctly the needed javascripts. + */ +function _service_links_add_js($javascript) { + global $is_https; + static $external_js; + + if (!is_array($javascript)) { + $javascript = array($javascript); + } + + if (!isset($external_js)) { + $external_js = array(); + } + + foreach ($javascript as $js) { + if (strpos($js, '://') !== FALSE) { + if ($is_https) { + // Ensure that we embed the https js library. + $js = str_replace('http://', 'https://', $js); + } + + if (!in_array($js, $external_js)) { + drupal_add_js($js, array('type' => 'external')); + $external_js[] = $js; + } + } + else { + drupal_add_js(service_links_expand_path($js, 'javascript')); + } + } +} + +/** + * Fill an array with tags and the content to substitute. + */ +function _service_links_get_tags($node, &$settings) { + if (!empty($node)) { + $title = _service_links_get_node_title($node, $settings); + + $path = _service_links_get_node_path($node); + $url = url("$path", array('absolute' => TRUE, 'query' => service_links_get_query($settings['text_to_append']))); + + $query = drupal_get_path_alias("node/{$node->nid}"); + + $body = field_get_items('node', $node, 'body'); + $teaser = $body ? strip_tags(text_summary($body[0]['value'])) : ''; + + $nid = $node->nid; + } + elseif (isset($settings['data'])) { + $title = isset($settings['data']['title']) ? $settings['data']['title'] : ''; + $url = isset($settings['data']['url']) ? $settings['data']['url'] : ''; + $query = isset($settings['data']['query']) ? $settings['data']['query'] : ''; + $teaser = isset($settings['data']['teaser']) ? $settings['data']['teaser'] : ''; + $nid = isset($settings['data']['node_id']) ? $settings['data']['node_id'] : NULL; + } + else { + $title = drupal_get_title(); + + $url = _service_links_get_page_url(NULL, $settings); + + // The query shouldn't follow the front_page alias but point the original page. + $query = drupal_get_normal_path($_GET['q']); + + $teaser = ''; + $nid = NULL; + } + + $source = variable_get('site_name', 'Drupal'); + + $long_url = $url; + + $front_page = url('<front>', array('absolute' => TRUE)); + if ((variable_get('clean_url', 0) == 0) && (strpos($front_page, '?q=') === FALSE)) { + $front_page .= '?q='; + } + else { + // Ensure a trailing slash on multilingual sites with clean url on. + $front_page = preg_replace('/([0-9a-z-_]+)$/i', '\1/', $front_page); + } + + switch ($settings['short_links_use']) { + case SERVICE_LINKS_SHORT_URL_USE_NEVER: + $short_url = $url; + break; + case SERVICE_LINKS_SHORT_URL_USE_WHEN_REQUESTED: + $short_url = service_links_short_url($url, $nid); + break; + case SERVICE_LINKS_SHORT_URL_USE_ALWAYS: + $short_url = service_links_short_url($url, $nid); + $url = $short_url; + break; + } + + $settings['tag'] = array( + 'raw-encoded-title' => '<raw-encoded-title>', + 'raw-encoded-url' => '<raw-encoded-url>', + 'raw-encoded-teaser' => '<raw-encoded-teaser>', + 'raw-encoded-short-url' => '<raw-encoded-short-url>', + 'raw-encoded-long-url' => '<raw-encoded-long-url>', + 'raw-encoded-query' => '<raw-encoded-query>', + 'raw-encoded-source' => '<raw-encoded-source>', + 'encoded-title' => '<encoded-title>', + 'encoded-url' => '<encoded-url>', + 'encoded-teaser' => '<encoded-teaser>', + 'encoded-short-url' => '<encoded-short-url>', + 'encoded-long-url' => '<encoded-long-url>', + 'encoded-query' => '<encoded-query>', + 'encoded-source' => '<encoded-source>', + 'teaser' => '<teaser>', + 'short-url' => '<short-url>', + 'long-url' => '<long-url>', + 'source' => '<source>', + 'node-id' => '<node-id>', + 'query' => '<query>', + 'url' => '<url>', + 'title' => '<title>', + 'front-page' => '<front-page>', + ); + $settings['subst'] = array( + //'raw-encoded-title' => rawurlencode($title), + 'raw-encoded-title' => $title, + //'raw-encoded-url' => rawurlencode($url), + 'raw-encoded-url' => $url, + //'raw-encoded-teaser' => rawurlencode($teaser), + 'raw-encoded-teaser' => $teaser, + //'raw-encoded-short-url' => rawurlencode($short_url), + 'raw-encoded-short-url' => $short_url, + //'raw-encoded-long-url' => rawurlencode($long_url), + 'raw-encoded-long-url' => $long_url, + //'raw-encoded-query' => rawurlencode($query), + 'raw-encoded-query' => $query, + //'raw-encoded-source' => rawurlencode($source), + 'raw-encoded-source' => $source, + //'encoded-title' => urlencode($title), + 'encoded-title' => $title, + //'encoded-url' => urlencode($url), + 'encoded-url' => $url, + //'encoded-teaser' => urlencode($teaser), + 'encoded-teaser' => $teaser, + //'encoded-short-url' => urlencode($short_url), + 'encoded-short-url' => $short_url, + //'encoded-long-url' => urlencode($long_url), + 'encoded-long-url' => $long_url, + //'encoded-query' => urlencode($query), + 'encoded-query' => $query, + //'encoded-source' => urlencode($source), + 'encoded-source' => $source, + //Not needed + 'teaser' => $teaser, + 'short-url' => $short_url, + 'long-url' => $long_url, + 'source' => $source, + 'node-id' => $nid, + 'query' => $query, + 'url' => $url, + 'title' => $title, + 'front-page' => $front_page, + ); +} + +/** + * Return the url for not-node pages. + */ +function _service_links_get_page_url($node, $settings) { + if ($settings['link_to_front'] || drupal_is_front_page()) { + $url = url('<front>', array('absolute' => TRUE, 'query' => service_links_get_query($settings['text_to_append']))); + } + else { + $url = url($_GET['q'], array('absolute' => TRUE, 'query' => service_links_get_query($settings['text_to_append']))); + } + + return $url; +} + +/** + * Return the properly title. + */ +function _service_links_get_node_title($node, $settings) { + $title = isset($node->title) ? $node->title : ''; + + switch ($settings['title_override']) { + case SERVICE_LINKS_TAG_TITLE_NODE: + break; + case SERVICE_LINKS_TAG_TITLE_OVERRIDE: + $title = str_replace('<title>', $title, $settings['title_text']); + break; + case SERVICE_LINKS_TAG_TITLE_TOKEN: + $title = token_replace($settings['title_text'], array('node' => $node)); + break; + } + + return $title; +} + +/** + * Detect if the node is used as front page and provide + * the path to use. + */ +function _service_links_get_node_path($node) { + static $front_page; + + if (!isset($front_page)) { + $front_page = variable_get('site_frontpage', 'node'); + } + + $path = "node/$node->nid"; + if (($path == $front_page) || (isset($node->uri) && ((object)$node->uri['path'] == $front_page))) { + $path = '<front>'; + } + + return $path; +} + +/** + * Check if the service links should be displayed for the content type, + * for category or one of the other selected options. + */ +function service_links_show($node) { + $links_show = FALSE; + $category_type = FALSE; + global $user; + + if (!_service_links_match_path()) { + return FALSE; + } + + if (in_array(strtolower(arg(0)), array('print', 'printpdf', 'printmail'))) { + return FALSE; + } + + if (variable_get('service_links_hide_for_author', FALSE) && ($user->uid == $node->uid)) { + return FALSE; + } + + if (variable_get('service_links_hide_if_unpublished', FALSE) && ($node->status == '0')) { + return FALSE; + } + + $node_type = in_array($node->type, variable_get('service_links_node_types', array()), TRUE); + if (module_exists('taxonomy') && !empty($node->field_tags)) { + $categories_allowed = variable_get('service_links_category_types', array()); + $language = isset($node->field_tags[$node->language]) ? $node->language : 'und'; + + foreach ($node->field_tags[$language] as $term) { + $category_type |= in_array($term['tid'], $categories_allowed, FALSE); + } + } + if ($node_type || $category_type) { + $links_show = TRUE; + } + + return $links_show; +} + +/** + * Match the current path with the list or the code + * inserted in the configuration page. + */ +function _service_links_match_path() { + static $page_match; + + if (isset($page_match)) { + return $page_match; + } + + $pages = variable_get('service_links_page_match_for_node', ''); + $visibility = variable_get('service_links_visibility_for_node', SERVICE_LINKS_VISIBILITY_NOT_LISTED); + if (!empty($pages)) { + // Convert path to lowercase. This allows comparison of the same path + // with different case. Ex: /Page, /page, /PAGE. + $pages = drupal_strtolower($pages); + + if ($visibility < SERVICE_LINKS_VISIBILITY_PHP) { + $path = drupal_strtolower(drupal_get_path_alias($_GET['q'])); + // Compare with the internal and path alias (if any). + $page_match = drupal_match_path($path, $pages); + if ($path != $_GET['q']) { + $page_match = $page_match || drupal_match_path($_GET['q'], $pages); + } + // When $visibility has a value of 0, the links are displayed on + // all pages except those listed in $pages. When set to 1, it + // is displayed only on those pages listed in $pages. + $page_match = !($visibility xor $page_match); + } + elseif (module_exists('php')) { + $page_match = php_eval($pages); + } + else { + $page_match = FALSE; + } + } + else { + $page_match = TRUE; + } + + return $page_match; +} + +/** + * Load the static settings and keep clear the render function. + */ +function _service_links_load_settings() { + static $settings = NULL; + + if (!isset($settings)) { + $settings['short_links_use'] = variable_get('service_links_short_links_use', SERVICE_LINKS_SHORT_URL_USE_NEVER); + + $settings['attributes'] = array('rel' => 'nofollow'); + if (variable_get('service_links_new_window', 0)) { + $settings['attributes'] += array('target' => '_blank'); + } + $settings['style'] = variable_get('service_links_style', SERVICE_LINKS_STYLE_TEXT); + + $settings['link_weight'] = variable_get('service_links_weight', array()); + $settings['link_show'] = array_filter(variable_get('service_links_show', array())); + + $settings['text_to_append'] = strip_tags(variable_get('service_links_append_to_url', '')); + + $settings['title_override'] = variable_get('service_links_override_title', SERVICE_LINKS_TAG_TITLE_NODE); + $settings['title_text'] = variable_get('service_links_override_title_text', '<title>'); + + $settings['link_to_front'] = FALSE; + } + + return $settings; +} + +/** + * Expand the path around a filename depending from the context. + * + * @param $filename + * If NULL the function return only the path with trailing slash. + * @param $context + * Define what path should consider this function. + * @param $default + * Concerning the image path is useful define a default path if + * the alternative is not set up. + * + * @return + * A string with the full filename or the path. + */ +function service_links_expand_path($filename = NULL, $context = 'icons', $default = 'preset') { + static $sl_paths; + static $sl_checkpath; + + if (strpos($filename, '/') !== FALSE) { + return $filename; + } + + if (!isset($sl_paths)) { + $sl_paths['base'] = drupal_get_path('module', 'service_links'); + + $sl_paths += array( + 'preset' => $sl_paths['base'] .'/images', + 'javascript' => $sl_paths['base'] .'/js', + 'css' => $sl_paths['base'] .'/css', + ); + + $sl_checkpath = array( + 'preset' => FALSE, + 'javascript' => FALSE, + 'css' => FALSE, + ); + } + + if (!isset($sl_paths[$context])) { + $sl_paths[$context] = variable_get("service_links_path_{$context}", ''); + if (empty($sl_paths[$context])) { + $sl_paths[$context] = $sl_paths[$default]; + } + + $sl_checkpath[$context] = variable_get("service_links_check_{$context}", FALSE); + } + + if (isset($filename)) { + if ($sl_checkpath[$context]) { + if (file_exists($sl_paths[$context] .'/'. $filename)) { + return $sl_paths[$context] .'/'. $filename; + } + else { + return $sl_paths[$default] .'/'. $filename; + } + } + else { + return $sl_paths[$context] .'/'. $filename; + } + } + else { + return $sl_paths[$context]; + } +} + +/** + * Split a query string in the properly array. + */ +function service_links_get_query($query_str) { + if (empty($query_str)) { + return NULL; + } + $result = array(); + + // parse_str() replaces dots and squares with underscores. + $query_str = explode('&', $query_str); + foreach($query_str as $q) { + $key_value = explode('=', $q); + $result[$key_value[0]] = isset($key_value[1]) ? $key_value[1] : ''; + } + + return $result; +} + +/** + * Implements hook_views_api(). + */ +function service_links_views_api() { + return array( + 'api' => 2, + 'path' => drupal_get_path('module', 'service_links'), + ); +} diff --git a/web/sites/all/modules/contrib/service_links/service_links.theme.inc b/web/sites/all/modules/contrib/service_links/service_links.theme.inc new file mode 100644 index 0000000..3e1e4f9 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.theme.inc @@ -0,0 +1,161 @@ +<?php + +/** + * @file + * Theme function used by Service Links. + */ + +/** + * Build a single link following the style rules. + */ +function theme_service_links_build_link($variables) { + $text = $variables['text']; + $url = $variables['url']; + $image = $variables['image']; + $nodelink = $variables['nodelink']; + $style = $variables['style']; + $attributes = $variables['attributes']; + + if ($nodelink) { + $query = isset($url[1]) ? $url[1] : NULL; + + switch ($style) { + case SERVICE_LINKS_STYLE_TEXT: + $link = array( + 'title' => $text, + 'href' => $url[0], + 'query' => $query, + 'attributes' => $attributes, + ); + break; + case SERVICE_LINKS_STYLE_IMAGE: + $alt_text = t('!name logo', array('!name' => $text)); + $link = array( + 'title' => theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)), + 'href' => $url[0], + 'query' => $query, + 'attributes' => $attributes, + 'html' => TRUE, + ); + break; + case SERVICE_LINKS_STYLE_IMAGE_AND_TEXT: + $alt_text = t('!name logo', array('!name' => $text)); + $link = array( + 'title' => theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)) .' '. $text, + 'href' => $url[0], + 'query' => $query, + 'attributes' => $attributes, + 'html' => TRUE, + ); + break; + case SERVICE_LINKS_STYLE_EMPTY: + $link = array( + 'title' => '<span class="element-invisible">' . $text . '</span>', + 'href' => $url[0], + 'query' => $query, + 'attributes' => $attributes, + 'html' => TRUE, + ); + break; + default: + $link = theme($style, $variables); + } + } + else { + $attributes = array('attributes' => $attributes); + if (isset($url[1])) { + $attributes['query'] = $url[1]; + } + + switch ($style) { + case SERVICE_LINKS_STYLE_TEXT: + $link = l($text, $url[0], $attributes); + break; + case SERVICE_LINKS_STYLE_IMAGE: + $attributes['html'] = TRUE; + $alt_text = t('!name logo', array('!name' => $text)); + $link = l(theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)), $url[0], $attributes); + break; + case SERVICE_LINKS_STYLE_IMAGE_AND_TEXT: + $attributes['html'] = TRUE; + $alt_text = t('!name logo', array('!name' => $text)); + $link = l(theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)) .' '. $text, $url[0], $attributes); + break; + case SERVICE_LINKS_STYLE_EMPTY: + $attributes['html'] = TRUE; + $link = l('<span class="element-invisible">' . $text . '</span>', $url[0], $attributes); + break; + case SERVICE_LINKS_STYLE_FISHEYE: + $attributes['attributes']['class'] = isset($attributes['attributes']['class']) ? array_merge($attributes['attributes']['class'], array('fisheyeItem')) : array('fisheyeItem'); + $attributes['html'] = TRUE; + $link = l(theme('image', array('path' => service_links_expand_path($image, 'fisheye'), 'alt' => $text, 'getsize' => FALSE)) .'<span>'. $text .'</span>', $url[0], $attributes); + break; + default: + $link = theme($style, $variables); + } + } + + return $link; +} + +/** + * Format the items shown in the node. + */ +function theme_service_links_node_format($variables) { + $links = $variables['links']; + $label = $variables['label']; + $view_mode = $variables['view_mode']; + $node_type = $variables['node_type']; + + if ($view_mode == 'rss') { + $result = array(); + foreach($links as $l) { + $result[] = l($l['title'], $l['href'], $l); + } + + return '<div class="service-links">' . implode(' ', $result) . '</div>'; + } + + if (isset($label) && !empty($label)) { + return '<div class="service-links"><div class="service-label">'. t('@label', array('@label' => $label)) .' </div>'. theme('links', array('links' => $links)) .'</div>'; + } + else { + return '<div class="service-links">'. theme('links', array('links' => $links)) .'</div>'; + } +} + +/** + * Format the items shown in one of the provided blocks. + */ +function theme_service_links_block_format($variables) { + $items = $variables['items']; + $style = $variables['style']; + + if (empty($items)) { + return; + } + + switch ($style) { + case SERVICE_LINKS_STYLE_IMAGE: + $output = implode(' ', $items); + break; + default: + $output = theme('item_list', array('items' => array_values($items))); + break; + } + + return '<div class="service-links">' . $output . '</div>'; +} + +/** + * Format the items shown in the Fisheye block. + */ +function theme_service_links_fisheye_format($variables) { + $items = $variables['items']; + + drupal_add_js(service_links_expand_path('interface.js', 'javascript'), array('weight' => 90)); + drupal_add_js(service_links_expand_path('service_links_fisheye.js', 'javascript'), array('weight' => 90)); + drupal_add_css(service_links_expand_path('service_links_fisheye.css', 'css')); + + return "<div class=\"fisheye\"><div class=\"fisheyeContainer\">\r\n". implode("\r\n", $items) ."\r\n</div></div>"; +} diff --git a/web/sites/all/modules/contrib/service_links/service_links.variable.inc b/web/sites/all/modules/contrib/service_links/service_links.variable.inc new file mode 100644 index 0000000..983c9ce --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.variable.inc @@ -0,0 +1,15 @@ +<?php + +/** + * Implements hook_variable_info(). + */ +function service_links_variable_info($options) { + + $variable['service_links_label_in_node'] = array( + 'title' => t('Print this label', array(), $options), + 'description' => t('Label for service links in nodes', array(), $options), + 'type' => 'string', + ); + + return $variable; +} diff --git a/web/sites/all/modules/contrib/service_links/service_links.views.inc b/web/sites/all/modules/contrib/service_links/service_links.views.inc new file mode 100644 index 0000000..d80be92 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links.views.inc @@ -0,0 +1,38 @@ +<?php + +/** + * @file + * Provide views data and handlers for custom_teasers_views.module + */ + +/** + * Implements hook_views_data(). + */ +function service_links_views_data() { + // We're registering the 'custom_teasers' table. + $data['node']['service_links'] = array( + 'title' => t('Service links'), + 'help' => t('Display links to social sharing websites like Digg, del.icio.us, reddit, Technorati etc..'), + 'field' => array( + 'handler' => 'service_links_handler_field_service_links', + ), + ); + + return $data; +} + +/** + * Implements hook_views_handlers(). + */ +function service_links_views_handlers() { + return array( + 'info' => array( + 'path' => drupal_get_path('module', 'service_links'), + ), + 'handlers' => array( + 'service_links_handler_field_service_links' => array( + 'parent' => 'views_handler_field', + ), + ), + ); +} diff --git a/web/sites/all/modules/contrib/service_links/service_links_handler_field_service_links.inc b/web/sites/all/modules/contrib/service_links/service_links_handler_field_service_links.inc new file mode 100644 index 0000000..6bda474 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/service_links_handler_field_service_links.inc @@ -0,0 +1,42 @@ +<?php + +/** + * @file + * A handler to provide a service links field for a particular node. + * + * @ingroup views_field_handlers + */ +class service_links_handler_field_service_links extends views_handler_field { + function construct() { + parent::construct(); + } + + function query() { + $this->ensure_my_table(); + $this->add_additional_fields(); + } + + function option_definition() { + $options = parent::option_definition(); + + return $options; + } + + function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + + // Remove the alteration stuff + unset($form['alter']); + } + + function render($values) { + if (isset($values->_field_data['nid']['entity'])) { + $node = $values->_field_data['nid']['entity']; + } + else { + $node = NULL; + } + + return theme('links', array('links' => service_links_render($node, TRUE))); + } +} diff --git a/web/sites/all/modules/contrib/service_links/services/basque_services.info b/web/sites/all/modules/contrib/service_links/services/basque_services.info new file mode 100644 index 0000000..d6063fe --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/basque_services.info @@ -0,0 +1,12 @@ +name = Basque Services +description = Provide the Basque Services: Zabaldu, Bildu, Aupatu +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/basque_services.module b/web/sites/all/modules/contrib/service_links/services/basque_services.module new file mode 100644 index 0000000..01b7cfc --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/basque_services.module @@ -0,0 +1,33 @@ +<?php + +/** + * @file + * Extends Service Links with Basque services. + * + * @author Aiaraldea + */ + +/** + * Implements hook_service_links(). + */ +function basque_services_service_links() { + $links = array(); + + $links['_eu_zabaldu'] = array( + 'name' => 'Zabaldu', + 'description' => t('Add a new on Zabaldu'), + 'link' => 'http://zabaldu.com/api/zabaldu_edo_bozkatu.php?url=<encoded-url>&title=<encoded-title>', + ); + $links['_eu_bildu'] = array( + 'name' => 'Bildu', + 'description' => t('Bookmark this post on Bildu'), + 'link' => 'http://www.bildu.net/bookmarks/bildu?action=add&address=<encoded-url>&title=<encoded-title>', + ); + $links['_eu_aupatu'] = array( + 'name' => 'Aupatu', + 'description' => t('Add a new on Aupatu'), + 'link' => 'http://www.aupatu.com/eu/submit.php?url=<encoded-url>&title=<encoded-title>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/dutch_services.info b/web/sites/all/modules/contrib/service_links/services/dutch_services.info new file mode 100644 index 0000000..8da40e9 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/dutch_services.info @@ -0,0 +1,12 @@ +name = Dutch Services +description = Provide the Dutch Services: eKudos, Hyves, Nujij +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/dutch_services.module b/web/sites/all/modules/contrib/service_links/services/dutch_services.module new file mode 100644 index 0000000..7a10fd9 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/dutch_services.module @@ -0,0 +1,33 @@ +<?php + +/** + * @file + * Extends Service Links with Dutch services. + * + * @author Kasper Souren + */ + +/** + * Implements hook_service_links(). + */ +function dutch_services_service_links() { + $links = array(); + + $links['_nl_nujij'] = array( + 'name' => 'Nujij', + 'description' => t('Add to nujij'), + 'link' => 'http://nujij.nl/jij.lynkx?t=<encoded-title>&u=<encoded-url>', + ); + $links['_nl_ekudos'] = array( + 'name' => 'eKudos', + 'description' => t('Bookmark this post on eKudos'), + 'link' => 'http://www.ekudos.nl/artikel/nieuw?url=<encoded-url>&title=<encoded-title>', + ); + $links['_nl_hyves'] = array( + 'name' => 'Hyves', + 'description' => t('Tip this on Hyves'), + 'link' => 'http://www.hyves-share.nl/button/tip/?tipcategoryid=12&rating=5&title=<encoded-title>&body=Bron%3A%20%5Burl%3D<encoded-url>%5D<encoded-url>%5B%2Furl%5D', + ); + + return $links; +} \ No newline at end of file diff --git a/web/sites/all/modules/contrib/service_links/services/farsi_services.info b/web/sites/all/modules/contrib/service_links/services/farsi_services.info new file mode 100644 index 0000000..00d1928 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/farsi_services.info @@ -0,0 +1,12 @@ +name = Farsi Services +description = Provide the Farsi services: Balatarin, Donbaleh, Friendfa, Viwio. +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/farsi_services.module b/web/sites/all/modules/contrib/service_links/services/farsi_services.module new file mode 100644 index 0000000..9bccc83 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/farsi_services.module @@ -0,0 +1,38 @@ +<?php + +/** + * @file + * Extends Service Links with Farsi services. + * + * @author lameei + */ + +/** + * Implements hook_service_links(). + */ +function farsi_services_service_links() { + $links = array(); + + $links['_fa_balatarin'] = array( + 'name' => 'Balatarin', + 'description' => t('Bookmark this post on balatarin'), + 'link' => 'http://balatarin.com/links/submit?phase=2&url=<raw-encoded-url>&title=<raw-encoded-title>', + ); + $links['_fa_donbaleh'] = array( + 'name' => 'Donbaleh', + 'description' => t('Bookmark this post on donbaleh'), + 'link' => 'http://donbaleh.com/submit.php?url=<encoded-url>&subject=<encoded-title>', + ); + $links['_fa_friendfa'] = array( + 'name' => 'Friendfa', + 'description' => t('Bookmark this post on friendfa'), + 'link' => 'http://www.friendfa.com/share?status=<encoded-title>&url=<encoded-url>', + ); + $links['_fa_viwio'] = array( + 'name' => 'Viwio', + 'description' => t('Share this on Viwio'), + 'link' => 'http://www.viwio.com/home/?status=<encoded-title> <encoded-url>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/favorite_services.info b/web/sites/all/modules/contrib/service_links/services/favorite_services.info new file mode 100644 index 0000000..3cd1f99 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/favorite_services.info @@ -0,0 +1,12 @@ +name = Favorite Services +description = Add the page in your favorite, work with Chrome, Firefox, IE, Opera +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/favorite_services.module b/web/sites/all/modules/contrib/service_links/services/favorite_services.module new file mode 100644 index 0000000..8f5fcf6 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/favorite_services.module @@ -0,0 +1,23 @@ +<?php + +/** + * @file + * Extends Service Links with browser bookmarking. + * + * @author Fabio Mucciante (TheCrow) + */ + +/** + * Implements hook_service_links(). + */ +function favorite_services_service_links() { + $links['favorite'] = array( + 'name' => t('Favorite'), + 'description' => t('Add this page in your favorites'), + 'link' => '<url>&favtitle=<raw-encoded-title>', + 'attributes' => array('style' => 'display:none;'), + 'javascript' => 'favorite_services.js', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/forward_services.info b/web/sites/all/modules/contrib/service_links/services/forward_services.info new file mode 100644 index 0000000..aecb008 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/forward_services.info @@ -0,0 +1,13 @@ +name = Forward Services +description = Add the support for Forward module which send the link through email. +core = 7.x +package = Service Links - Services +dependencies[] = service_links +dependencies[] = forward + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/forward_services.module b/web/sites/all/modules/contrib/service_links/services/forward_services.module new file mode 100644 index 0000000..983b09c --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/forward_services.module @@ -0,0 +1,30 @@ +<?php + +/** + * @file + * Extends Service Links with Forward module support. + * + * @author Fabio Mucciante (TheCrow) + */ + +/** + * Implements hook_service_links(). + */ +function forward_services_service_links() { + $links = array(); + + $links['forward'] = array( + 'name' => 'Forward', + 'link' => (variable_get('clean_url', 0) == 1) ? '<front-page>forward?path=<encoded-query>' : '<front-page>forward&path=<encoded-query>', + 'description' => t('Send to a friend'), + 'preset' => 'forward_url_fix', + ); + + return $links; +} + +function forward_url_fix(&$service, &$settings, $node = NULL) { + if (isset($node->nid)) { + $service['link'] = str_replace('<encoded-query>', 'node/<node-id>', $service['link']); + } +} diff --git a/web/sites/all/modules/contrib/service_links/services/general_services.info b/web/sites/all/modules/contrib/service_links/services/general_services.info new file mode 100644 index 0000000..043aa7d --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/general_services.info @@ -0,0 +1,12 @@ +name = General Services +description = Blinklist, Box, del.icio.us, Digg, Diigo, Facebook, Furl, Google Bookmark, Google Plus, Icerocket, Identi.ca, Linkedin, Mister Wong, Mixx, MySpace, Newsvine, Newskicks, Phing this, Reddit, StumbleUpon, Technorati, Twitter, Yahoo +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/general_services.module b/web/sites/all/modules/contrib/service_links/services/general_services.module new file mode 100644 index 0000000..d6f14ad --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/general_services.module @@ -0,0 +1,145 @@ +<?php + +/** + * @file + * Extends Service Links with the most known services. + * + * @author Fabio Mucciante (TheCrow) + */ + +/** + * Implements hook_service_links(). + */ +function general_services_service_links() { + $links = array(); + + $links['delicious'] = array( + 'name' => 'del.icio.us', + 'description' => t('Bookmark this post on del.icio.us'), + 'link' => 'http://del.icio.us/post?url=<encoded-url>&title=<encoded-title>', + ); + $links['digg'] = array( + 'name' => 'Digg', + 'description' => t('Digg this post on digg.com'), + 'link' => 'http://digg.com/submit?phase=2&url=<encoded-url>&title=<encoded-title>', + ); + $links['stumbleupon'] = array( + 'name' => 'StumbleUpon', + 'description' => t('Thumb this up at StumbleUpon'), + 'link' => 'http://www.stumbleupon.com/submit?url=<encoded-url>&title=<encoded-title>', + 'icon' => 'stumbleit.png', + ); + $links['twitter'] = array( + 'name' => 'Twitter', + 'description' => t('Share this on Twitter'), + 'link' => 'http://twitter.com/share?url=<raw-encoded-short-url>&text=<raw-encoded-title>', + ); + $links['pingthis'] = array( + 'name' => 'Ping This!', + 'link' => 'http://ping.fm/ref/?link=<encoded-url>&title=<encoded-title>&body=<encoded-teaser>', + 'description' => t('Submit to Ping.fm'), + ); + $links['reddit'] = array( + 'name' => 'Reddit', + 'link' => 'http://reddit.com/submit?url=<encoded-url>&title=<encoded-title>', + 'description' => t('Submit this post on reddit.com'), + ); + $links['slashdot'] = array( + 'name' => 'SlashDot', + 'link' => 'http://slashdot.org/bookmark.pl?url=<encoded-url>&title=<encoded-title>', + 'description' => t('Bookmark this post on SlashDot'), + ); + $links['newsvine'] = array( + 'name' => 'Newsvine', + 'link' => 'http://www.newsvine.com/_tools/seed&save?u=<encoded-url>&h=<encoded-title>', + 'description' => t('Submit this post on newsvine.com'), + ); + $links['furl'] = array( + 'name' => 'Furl', + 'link' => 'http://www.furl.net/storeIt.jsp?u=<encoded-url>&t=<encoded-title>', + 'description' => t('Submit this post on furl.net'), + ); + $links['facebook'] = array( + 'name' => 'Facebook', + 'link' => 'http://www.facebook.com/sharer.php?u=<encoded-url>&t=<encoded-title>', + 'description' => t('Share on Facebook'), + ); + $links['myspace'] = array( + 'name' => 'MySpace', + 'link' => 'http://www.myspace.com/index.cfm?fuseaction=postto&t=<encoded-title>&u=<encoded-url>', + 'description' => t('Share on MySpace'), + ); + $links['google'] = array( + 'name' => 'Google', + 'link' => 'http://www.google.com/bookmarks/mark?op=add&bkmk=<encoded-url>&title=<encoded-title>', + 'description' => t('Bookmark this post on Google'), + ); + $links['google_plus'] = array( + 'name' => 'Google+', + 'link' => 'https://plus.google.com/share?url=<encoded-url>', + 'description' => t('Share this on Google+'), + ); + $links['yahoo'] = array( + 'name' => 'Yahoo', + 'link' => 'http://bookmarks.yahoo.com/myresults/bookmarklet?u=<encoded-url>&t=<encoded-title>', + 'description' => t('Bookmark this post on Yahoo'), + ); + $links['linkedin'] = array( + 'name' => 'LinkedIn', + 'link' => 'http://www.linkedin.com/shareArticle?mini=true&url=<encoded-url>&title=<encoded-title>&summary=<encoded-teaser>&source=<encoded-source>', + 'description' => t('Publish this post to LinkedIn'), + ); + $links['technorati'] = array( + 'name' => 'Technorati', + 'link' => 'http://technorati.com/search/<encoded-url>', + 'description' => t('Search Technorati for links to this post'), + ); + $links['technorati_favorite'] = array( + 'name' => 'Favorite on Technorati', + 'link' => 'http://technorati.com/faves?sub=addfavbtn&add=<encoded-url>', + 'description' => t('Add this post to your Technorati Favorites'), + 'icon' => 'technorati.png', + ); + $links['icerocket'] = array( + 'name' => 'Icerocket', + 'link' => 'http://blogs.icerocket.com/search?q=<encoded-url>', + 'description' => t('Search IceRocket for links to this post'), + ); + $links['misterwong'] = array( + 'name' => 'Mister Wong', + 'link' => 'http://www.mister-wong.com/addurl/?bm_url=<encoded-url>&bm_description=<encoded-title>', + 'description' => t('Bookmark this post on Mister Wong'), + ); + $links['mixx'] = array( + 'name' => 'Mixx', + 'link' => 'http://www.mixx.com/submit?page_url=<encoded-url>&title=<encoded-title>', + 'description' => t('Submit this post on mixx.com'), + ); + $links['box'] = array( + 'name' => 'Box', + 'link' => 'https://www.box.net/api/1.0/import?url=<encoded-url>&name=<encoded-title>&description=<encoded-teaser>&import_as=link', + 'description' => t('Box it!'), + ); + $links['blinklist'] = array( + 'name' => 'Blinklist', + 'link' => 'http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=<encoded-teaser>&Url=<encoded-url>&Title=<encoded-title>&Pop=yes', + 'description' => t('Add to Blinklist'), + ); + $links['identica'] = array( + 'name' => 'identi.ca', + 'link' => 'http://identi.ca/?action=newnotice&status_textarea=<encoded-title> <encoded-url>', + 'description' => t('Dent this on identi.ca'), + ); + $links['newskicks'] = array( + 'name' => 'Newskicks', + 'link' => 'http://newskicks.com/submit.php?url=<encoded-url>', + 'description' => t('Kicks this post on NewsKicks'), + ); + $links['diigo'] = array( + 'name' => 'Diigo', + 'description' => t('Post on Diigo'), + 'link' => 'http://www.diigo.com/post?url=<encoded-url>&title=<encoded-title>&desc=<encoded-teaser>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/german_services.info b/web/sites/all/modules/contrib/service_links/services/german_services.info new file mode 100644 index 0000000..87035e8 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/german_services.info @@ -0,0 +1,12 @@ +name = German Services +description = Provide the German Services: Alltagz, Colivia, Icio, InfoPirat, Linkarena, MeinVZ, Mister Wong, Netselektor, Oneview, Readster, seekXL, SeoIGG, Weblinkr, Webnews, Xing, Yigg +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/german_services.module b/web/sites/all/modules/contrib/service_links/services/german_services.module new file mode 100644 index 0000000..559d30c --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/german_services.module @@ -0,0 +1,99 @@ +<?php + +/** + * @file + * Extends Service Links with German services. + * + * @authors Sanduhrs, funana + */ + +/** + * Implements hook_service_links(). + */ +function german_services_service_links() { + $links = array(); + + $links['_de_alltagz'] = array( + 'name' => 'Alltagz', + 'description' => t('Add to Alltagz'), + 'link' => 'http://www.alltagz.de/bookmarks/?action=add&popup=1&address=<encoded-url>&title=<encoded-title>&description=<resume>', + ); + $links['_de_misterwong'] = array( + 'name' => 'Mister Wong', + 'description' => t('Bookmark this post on Mister Wong'), + 'link' => 'http://www.mister-wong.de/index.php?action=addurl&bm_url=<encoded-url>&bm_description=<encoded-title>', + 'icon' => 'misterwong.png', + ); + $links['_de_seoigg'] = array( + 'name' => 'SeoIGG', + 'description' => t('Bookmark this post on SeoIGG'), + 'link' => 'http://www.seoigg.de/node/add/storylink?edit[url]=<encoded-url>&edit[title]=<encoded-title>', + ); + $links['_de_colivia'] = array( + 'name' => 'Colivia', + 'description' => t('Bookmark this post on Colivia'), + 'link' => 'http://www.colivia.de/submit.php?url=<encoded-url>', + ); + $links['_de_icio'] = array( + 'name' => 'Icio', + 'description' => t('Bookmark this post on Icio'), + 'link' => 'http://www.icio.de/add.php?url=<encoded-url>', + ); + $links['_de_infopirat'] = array( + 'name' => 'Infopirat', + 'description' => t('Add to Infopirat'), + 'link' => 'http://infopirat.com/node/add/userlink?edit[url]=<encoded-url>&edit[title]=<encoded-title>', + ); + $links['_de_seekxl'] = array( + 'name' => 'seekXL', + 'description' => t('Bookmark this post on seekXL'), + 'link' => 'http://social-bookmarking.seekxl.de/?add_url=<encoded-url>&title=<encoded-title>', + ); + $links['_de_linkarena'] = array( + 'name' => 'Linkarena', + 'description' => t('Add to Linkarena'), + 'link' => 'http://linkarena.com/bookmarks/addlink/?url=<encoded-url>&title=<encoded-title>', + ); + $links['_de_netselektor'] = array( + 'name' => 'Netselektor', + 'description' => t('Bookmark this post on Netselektor'), + 'link' => 'http://netselektor.de/speichern/neu?title=<encoded-title>&url=<encoded-url>', + ); + $links['_de_weblinkr'] = array( + 'name' => 'Weblinkr', + 'description' => t('Bookmark this post on Weblinkr'), + 'link' => 'http://weblinkr.com/weblinks/?action=add&address=<encoded-url>&title=<encoded-title>', + ); + $links['_de_webnews'] = array( + 'name' => 'Webnews', + 'description' => t('Bookmark this post on Webnews'), + 'link' => 'http://www.webnews.de/einstellen?url=<encoded-url>&title=<encoded-title>', + ); + $links['_de_readster'] = array( + 'name' => 'Readster', + 'description' => t('Bookmark this post on Readster'), + 'link' => 'http://www.readster.de/submit/?url=<encoded-url>&title=<encoded-title>', + ); + $links['_de_oneview'] = array( + 'name' => 'Oneview', + 'description' => t('Bookmark this post on Oneview'), + 'link' => 'http://www.oneview.de/quickadd/neu/addBookmark.jsf?URL=<encoded-url>&title=<encoded-title>', + ); + $links['_de_yigg'] = array( + 'name' => 'Yigg', + 'description' => t('Add to Yigg.de'), + 'link' => 'http://yigg.de/neu?exturl=<encoded-url>&title=<encoded-title>', + ); + $links['_de_meinvz'] = array( + 'name' => 'MeinVZ', + 'description' => t('Share on MeinVZ, StudiVZ or SchuelerVZ'), + 'link' => 'http://www.studivz.net/Link/Selection/Url/?u=<encoded-url>&desc=<encoded-title>', + ); + $links['_de_xing'] = array( + 'name' => 'Xing', + 'description' => t('Share on Xing'), + 'link' => 'https://www.xing.com/app/user?op=share&url=<raw-encoded-url>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/hungarian_services.info b/web/sites/all/modules/contrib/service_links/services/hungarian_services.info new file mode 100644 index 0000000..ea6cf27 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/hungarian_services.info @@ -0,0 +1,12 @@ +name = Hungarian Services +description = Provide the Hungarian Service: iWiW +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/hungarian_services.module b/web/sites/all/modules/contrib/service_links/services/hungarian_services.module new file mode 100644 index 0000000..255feba --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/hungarian_services.module @@ -0,0 +1,23 @@ +<?php + +/** + * @file + * Extends Service Links with Hungarian services. + * + * @author Denes Szabo + */ + +/** + * Implements hook_service_links(). + */ +function hungarian_services_service_links() { + $links = array(); + + $links['_hu_iwiw'] = array( + 'name' => 'IWIW', + 'description' => t('Add to iWiW'), + 'link' => 'http://iwiw.hu/pages/share/share.jsp?u=<encoded-url>&t=<encoded-title>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/italian_services.info b/web/sites/all/modules/contrib/service_links/services/italian_services.info new file mode 100644 index 0000000..82ef6ed --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/italian_services.info @@ -0,0 +1,12 @@ +name = Italian Services +description = Provide the Italian Services: Diggita, Meemi, OkNotizie, Segnalo.com, TechNotizie, Wikio, ZicZac +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/italian_services.module b/web/sites/all/modules/contrib/service_links/services/italian_services.module new file mode 100644 index 0000000..dec6992 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/italian_services.module @@ -0,0 +1,53 @@ +<?php + +/** + * @file + * Extends Service Links with Italian services. + * + * @author Fabio Mucciante (TheCrow) + */ + +/** + * Implements hook_service_links(). + */ +function italian_services_service_links() { + $links = array(); + + $links['_it_diggita'] = array( + 'name' => 'Diggita', + 'description' => t('Add a news on Diggita'), + 'link' => 'http://www.diggita.it/submit.php?url=<encoded-url>&title=<encoded-title>', + ); + $links['_it_ziczac'] = array( + 'name' => 'ZicZac', + 'description' => t('Add a news on ZicZac'), + 'link' => 'http://ziczac.it/a/segnala/?url=<encoded-url>&title=<encoded-title>', + ); + $links['_it_oknotizie'] = array( + 'name' => 'OkNotizie', + 'description' => t('Add a news on OkNotizie'), + 'link' => 'http://oknotizie.alice.it/post.html.php?url=<encoded-url>&title=<encoded-title>', + ); + $links['_it_segnalo'] = array( + 'name' => 'Segnalo.com', + 'description' => t('Add a news on Segnalo.com'), + 'link' => 'http://segnalo.alice.it/post.html.php?url=<encoded-url>&title=<encoded-title>', + ); + $links['_it_technotizie'] = array( + 'name' => 'TechNotizie', + 'description' => t('Post it on TechNotizie'), + 'link' => 'http://www.technotizie.it/posta_ok?action=f2&url=<encoded-url>&title=<encoded-title>', + ); + $links['_it_meemi'] = array( + 'name' => 'meemi', + 'description' => t('Add a noise on meemi'), + 'link' => 'http://meemi.com/s/?p/3&u=<encoded-url>&s=<encoded-title>', + ); + $links['_it_wikio'] = array( + 'name' => 'Wikio', + 'description' => t('Vote on Wikio'), + 'link' => 'http://www.wikio.it/vote?url=<encoded-url>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/polish_services.info b/web/sites/all/modules/contrib/service_links/services/polish_services.info new file mode 100644 index 0000000..a5cf3ac --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/polish_services.info @@ -0,0 +1,12 @@ +name = Polish Services +description = Provide the Polish Services: Blip, Wykop, Sledzik +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/polish_services.module b/web/sites/all/modules/contrib/service_links/services/polish_services.module new file mode 100644 index 0000000..a19e806 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/polish_services.module @@ -0,0 +1,33 @@ +<?php + +/** + * @file + * Extends Service Links with Polish services. + * + * @author Fabio Mucciante (TheCrow) + */ + +/** + * Implements hook_service_links(). + */ +function polish_services_service_links() { + $links = array(); + + $links['_pl_wykop'] = array( + 'name' => 'Wykop', + 'description' => t('Add to Wykop'), + 'link' => 'http://www.wykop.pl/dodaj?url=<raw-encoded-url>&title=<raw-encoded-title>', + ); + $links['_pl_blip'] = array( + 'name' => 'Blip', + 'description' => t('Add to Blip'), + 'link' => 'http://blip.pl/dashboard?body=<raw-encoded-short-url>%20--%20<raw-encoded-title>', + ); + $links['_pl_sledzik'] = array( + 'name' => 'Sledzik', + 'description' => t('Add to Sledzik'), + 'link' => 'http://nasza-klasa.pl/sledzik?shout=<raw-encoded-short-url>%20--%20<raw-encoded-title>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/print_services.info b/web/sites/all/modules/contrib/service_links/services/print_services.info new file mode 100644 index 0000000..bd770a2 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/print_services.info @@ -0,0 +1,13 @@ +name = Print Services +description = Add the support for Print module which render the page as PDF or printable HTML +core = 7.x +package = Service Links - Services +dependencies[] = service_links +dependencies[] = print + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/print_services.module b/web/sites/all/modules/contrib/service_links/services/print_services.module new file mode 100644 index 0000000..c04dd41 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/print_services.module @@ -0,0 +1,41 @@ +<?php + +/** + * @file + * Extends Service Links with Print module support. + * + * These services work only with alias enabled in Print module. + * + * @author Fabio Mucciante (TheCrow) + */ + +/** + * Implements hook_service_links(). + */ +function print_services_service_links() { + $links = array(); + + $links['print'] = array( + 'name' => 'Print HTML', + 'link' => '<front-page>print/<query>', + 'description' => t('Printable version'), + ); + + if (module_exists('print_pdf')) { + $links['printpdf'] = array( + 'name' => 'Print PDF', + 'link' => '<front-page>printpdf/<query>', + 'description' => t('PDF version'), + ); + } + + if (module_exists('print_mail')) { + $links['printmail'] = array( + 'name' => 'Print Mail', + 'link' => '<front-page>printmail/<query>', + 'description' => t('Send to a friend'), + ); + } + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/russian_services.info b/web/sites/all/modules/contrib/service_links/services/russian_services.info new file mode 100644 index 0000000..a579a78 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/russian_services.info @@ -0,0 +1,12 @@ +name = Russian Services +description = Provide the Russian Services (12+3): 100zakladok, Ruspace, Mister Wong, Memori, Moemesto, MyScoop, Vaau, Yandex, LinkStore, Bobrdobr, Lopas, Communizm, Newsland, News2, Smi2 +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/russian_services.module b/web/sites/all/modules/contrib/service_links/services/russian_services.module new file mode 100644 index 0000000..fe625c8 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/russian_services.module @@ -0,0 +1,109 @@ +<?php + +/** + * @file + * Extends Service Links with Russian services. + * + * @author PVasili <vasili@pinchuk.biz> + */ + +/** + * Implements hook_service_links() + */ +function russian_services_service_links() { + $links = array(); + + $links['_ru_100zakladok'] = array( + 'link' => 'http://www.100zakladok.ru/save/?bmurl=<encoded-url>&bmtitle=<encoded-title>', + 'name' => '100zakladok', + 'description' => t('Bookmark this post on 100zakladok'), + ); + $links['_ru_ruspace'] = array( + 'link' => 'http://www.ruspace.ru/index.php?link=bookmark&action=bookmarkNew&bm=1&url=<encoded-url>&title=<encoded-title>', + 'name' => 'Ruspace', + 'description' => t('Bookmark this post on Ruspace'), + ); + $links['_ru_misterwong'] = array( + 'link' => 'http://www.mister-wong.ru/index.php?action=addurl&bm_url=<encoded-url>&bm_description=<encoded-title>', + 'name' => 'Mister Wong', + 'description' => t('Bookmark this post on Mister Wong'), + 'icon' => 'misterwong.png', + ); + $links['_ru_memori'] = array( + 'link' => 'http://memori.ru/link/?sm=1&u_data[url]=<encoded-url>&u_data[name]=<encoded-title>', + 'name' => 'Memori', + 'description' => t('Bookmark this post on Memori'), + ); + $links['_ru_moemesto'] = array( + 'link' => 'http://moemesto.ru/post.php?url=<encoded-url>&title=<encoded-title>', + 'name' => 'Moemesto', + 'description' => t('Bookmark this post on Moemesto.ru'), + ); + $links['_ru_myscoop'] = array( + 'link' => 'http://myscoop.ru/add/?URL=<encoded-url>&title=<encoded-title>', + 'name' => 'MyScoop', + 'description' => t('Bookmark this post on MyScoop'), + ); + $links['_ru_vaau'] = array( + 'link' => 'http://www.vaau.ru/submit/?action=step2&url=<encoded-url>', + 'name' => 'Vaau', + 'description' => t('Bookmark this post on Vaau'), + ); + $links['_ru_yandex'] = array( + 'link' => 'http://zakladki.yandex.ru/newlink.xml?url=<encoded-url>&name=<encoded-title>', + 'name' => 'Yandex', + 'description' => t('Bookmark this post on Yandex'), + ); + $links['_ru_linkstore'] = array( + 'link' => 'http://www.linkstore.ru/servlet/LinkStore?a=add&url=<encoded-url>&title=<encoded-title>', + 'name' => 'LinkStore', + 'description' => t('Bookmark this post on LinkStore'), + ); + $links['_ru_bobrdobr'] = array( + 'link' => 'http://bobrdobr.ru/addext.html?url=<encoded-url>&title=<encoded-title>', + 'name' => 'Bobrdobr', + 'description' => t('Bookmark this post on Bobrdobr'), + ); + $links['_ru_lopas'] = array( + 'link' => 'http://www.lopas.ru/add_story.php?story_url=<encoded-url>', + 'name' => 'Lopas', + 'description' => t('Bookmark this post on Lopas'), + ); + $links['_ru_communizm'] = array( + 'link' => 'http://communizm.ru/index.php?mode=addstory&title=<encoded-title>&link=<encoded-url>&description=<encoded-teaser>', + 'name' => 'Communizm', + 'description' => t('Bookmark this post on Communizm'), + ); + $links['_ru_linksiua'] = array( + 'link' => 'http://links.i.ua/mark/?url=<encoded-url>&ename=<encoded-title>', + 'name' => 'Linksiua', + 'description' => t('Bookmark this post on Links.i.ua'), + ); + $links['_ru_vkontakte'] = array( + 'link' => 'http://vkontakte.ru/share.php?url=<encoded-url>&title=<encoded-title>', + 'name' => 'VKontakte', + 'description' => t('Share this on VKontakte'), + ); + +/* news todo + + $links['_ru_newsland'] = array( + 'link' => 'http://www.newsland.ru/News/Add/', + 'name' => 'Newsland', + 'description' => t('Bookmark this post on Newsland'), + ); + + $links['_ru_news2'] = array( + 'link' => 'http://news2.ru/add_story.php?url=<encoded-url>', + 'name' => 'News2', + 'description' => t('Bookmark this post on News2'), + ); + + $links['_ru_smi2'] = array( + 'link' => 'http://smi2.ru/add', + 'name' => 'Smi2', + 'description' => t('Bookmark this post on Smi2'), + ); +*/ + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/spanish_services.info b/web/sites/all/modules/contrib/service_links/services/spanish_services.info new file mode 100644 index 0000000..1b9ab6a --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/spanish_services.info @@ -0,0 +1,12 @@ +name = Spanish Services +description = Provide the Spanish Services: Barrapunto, Fresqui, Latafanera, Meneame, Tuenti +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/spanish_services.module b/web/sites/all/modules/contrib/service_links/services/spanish_services.module new file mode 100644 index 0000000..6101231 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/spanish_services.module @@ -0,0 +1,43 @@ +<?php + +/** + * @file + * Extends Service Links with Spanish services. + * + * @author ateneatech + */ + +/** + * Implements hook_service_links(). + */ +function spanish_services_service_links() { + $links = array(); + + $links['_es_meneame'] = array( + 'name' => 'Meneame', + 'description' => t('Add to Meneame'), + 'link' => 'http://www.meneame.net/submit.php?url=<encoded-url>', + ); + $links['_es_latafanera'] = array( + 'name' => 'La Tafanera', + 'description' => t('Add to La Tafanera'), + 'link' => 'http://latafanera.cat/submit.php?url=<encoded-url>', + ); + $links['_es_fresqui'] = array( + 'name' => 'Fresqui', + 'description' => t('Submit this post on tec.fresqui.com'), + 'link' => 'http://tec.fresqui.com/post?url=<encoded-url>&title=<encoded-title>', + ); + $links['_es_barrapunto'] = array( + 'name' => 'Barrapunto', + 'description' => t('Publish this post on Barrapunto.com'), + 'link' => 'http://barrapunto.com/submit.pl?story=He leido en <encoded-source> el articulo <a href="<encoded-url>"><encoded-title></a>&subj=<encoded-title>', + ); + $links['_es_tuenti'] = array( + 'name' => 'Tuenti', + 'description' => t('Share on Tuenti'), + 'link' => 'http://www.tuenti.com/share?url=<encoded-url>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/swedish_services.info b/web/sites/all/modules/contrib/service_links/services/swedish_services.info new file mode 100644 index 0000000..4040171 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/swedish_services.info @@ -0,0 +1,15 @@ +name = Swedish Services +description = Provide the Swedish Services: Bloggy, Pusha +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +version = VERSION +files[] = swedish_services.module + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/swedish_services.module b/web/sites/all/modules/contrib/service_links/services/swedish_services.module new file mode 100644 index 0000000..7f68734 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/swedish_services.module @@ -0,0 +1,28 @@ +<?php + +/** + * @file + * Extends Service Links with Swedish services. + * + * @author persand + */ + +/** + * Implements hook_service_links() + */ +function swedish_services_service_links() { + $links = array(); + + $links['_se_bloggy'] = array( + 'name' => 'Bloggy', + 'description' => t('Share this on Bloggy'), + 'link' => 'http://bloggy.se/home/?status=<encoded-url> -- <encoded-title>', + ); + $links['_se_pusha'] = array( + 'name' => 'Pusha', + 'description' => t('Share this on Pusha'), + 'link' => 'http://pusha.se/posta?url=<encoded-url>&title=<encoded-title>', + ); + + return $links; +} diff --git a/web/sites/all/modules/contrib/service_links/services/widget_services.admin.inc b/web/sites/all/modules/contrib/service_links/services/widget_services.admin.inc new file mode 100644 index 0000000..b045d4a --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/widget_services.admin.inc @@ -0,0 +1,262 @@ +<?php + +/** + * @file + * Administrative page callbacks for Widget Services module. + */ + +/** + * Menu callback administration settings for widget options. + */ +function widget_services_admin() { + $form['twitter_widget'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Twitter Widget'), + ); + $form['twitter_widget']['service_links_tw_data_count'] = array( + '#type' => 'select', + '#title' => t('Counter'), + '#default_value' => variable_get('service_links_tw_data_count', 'horizontal'), + '#options' => array( + 'horizontal' => t('Horizontal'), + 'vertical' => t('Vertical'), + 'none' => t('None'), + ), + ); + $form['twitter_widget']['service_links_tw_data_via'] = array( + '#type' => 'textfield', + '#field_prefix' => '@', + '#title' => t('Via user'), + '#description' => t('Add here your screen name.'), + '#default_value' => variable_get('service_links_tw_data_via', ''), + '#size' => 40, + ); + + $form['facebook_like'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Facebook Like'), + ); + $form['facebook_like']['service_links_fl_layout'] = array( + '#type' => 'select', + '#title' => t('Layout'), + '#default_value' => variable_get('service_links_fl_layout', 'button_count'), + '#options' => array( + 'standard' => t('Standard'), + 'button_count' => t('Button Count'), + 'box_count' => t('Box Count'), + ), + ); + $form['facebook_like']['service_links_fl_width'] = array( + '#title' => t('Width'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_fl_width', 100), + '#description' => t('A good value for button layout is 100, for box layout is 80 and for standard layout 450'), + '#size' => 10, + ); + $form['facebook_like']['service_links_fl_height'] = array( + '#title' => t('Height'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_fl_height', 21), + '#description' => t('A good value for button layout is 21, for box layout is 65 and for standard layout is 80'), + '#size' => 10, + ); + $form['facebook_like']['service_links_fl_font'] = array( + '#title' => t('Font'), + '#type' => 'select', + '#default_value' => variable_get('service_links_fl_font', ''), + '#options' => array( + '' => t('None'), + 'arial' => t('Arial'), + 'lucida grande' => t('Lucida Grande'), + 'segoe ui' => t('Segoe Ui'), + 'tahoma' => t('Tahoma'), + 'trebuchet ms' => t('Trebuchet Ms'), + 'verdana' => t('Verdana'), + ), + ); + $form['facebook_like']['service_links_fl_show_faces'] = array( + '#title' => t('Show Faces'), + '#type' => 'radios', + '#default_value' => variable_get('service_links_fl_show_faces', 'false'), + '#options' => array( + 'true' => t('Yes'), + 'false' => t('No'), + ), + '#attributes' => array('class' => array('container-inline')), + '#description' => t('This works only when the standard layout is set on'), + ); + $form['facebook_like']['service_links_fl_colorscheme'] = array( + '#title' => t('Color Scheme'), + '#type' => 'radios', + '#default_value' => variable_get('service_links_fl_colorscheme', 'light'), + '#options' => array( + 'light' => t('Light'), + 'dark' => t('Dark'), + ), + '#attributes' => array('class' => array('container-inline')), + ); + $form['facebook_like']['service_links_fl_action'] = array( + '#title' => t('Action'), + '#type' => 'radios', + '#default_value' => variable_get('service_links_fl_action', 'like'), + '#options' => array( + 'like' => t('Like'), + 'recommend' => t('Recommend'), + ), + '#attributes' => array('class' => array('container-inline')), + ); + $form['facebook_like']['service_links_fl_locale'] = array( + '#title' => t('Locale'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_fl_locale', ''), + '#description' => t('Enter the language code and the country code separated by an underscore (i.e. es_ES, en_GB, en_US, it_IT, fr_FR, pt_BR, pt_PT)'), + '#size' => 5, + '#attributes' => array('class' => array('container-inline')), + ); + + $form['facebook_share'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Facebook Share'), + ); + $form['facebook_share']['service_links_fs_type'] = array( + '#type' => 'select', + '#title' => t('Type'), + '#default_value' => variable_get('service_links_fs_type', 'button_count'), + '#options' => array( + 'button' => t('Button'), + 'button_count' => t('Button Count'), + 'box_count' => t('Box Count'), + 'icon_link' => t('Icon Link'), + ), + ); + $form['facebook_share']['service_links_fs_app_id'] = array( + '#type' => 'textfield', + '#title' => t('App ID'), + '#default_value' => variable_get('service_links_fs_app_id', '150123828484431'), + '#description' => t('You may generate your app ID at the <a href=@url>Facebook apps</a> page', array('@url' => 'https://developers.facebook.com/apps')), + '#size' => 40, + ); + $form['facebook_share']['service_links_fs_css'] = array( + '#type' => 'textfield', + '#title' => t('Style'), + '#default_value' => variable_get('service_links_fs_css', ''), + '#description' => t('Apply a CSS style providing a single string (i.e. %style)', array('%style' => 'text-align:left;vertical-align:top;margin-top:4px')), + '#size' => 80, + ); + + $form['google_plus_one'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Google Plus One'), + ); + $form['google_plus_one']['service_links_gpo_size'] = array( + '#title' => t('Size'), + '#type' => 'select', + '#default_value' => variable_get('service_links_gpo_size', ''), + '#options' => array( + '' => t('Standard'), + 'small' => t('Small'), + 'medium' => t('Medium'), + 'tall' => t('Tall'), + ), + ); + $form['google_plus_one']['service_links_gpo_annotation'] = array( + '#title' => t('Annotation'), + '#type' => 'select', + '#default_value' => variable_get('service_links_gpo_annotation', ''), + '#options' => array( + '' => t('Bubble'), + 'none' => t('None'), + 'inline' => t('Inline'), + ), + ); + $form['google_plus_one']['service_links_gpo_width'] = array( + '#title' => t('Max width'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_gpo_width', 300), + '#description' => t('If annotation is set to "inline", this parameter sets the width in pixels to use for the button and its inline annotation. If the width is omitted, a button and its inline annotation use 450px. A minimum value of 120 is required. +See <a href="@url">Inline annotation widths</a> for examples of how the annotation is displayed for various width settings', array('@url' => 'https://developers.google.com/+/web/+1button/?hl=it#inline-annotation')), + '#size' => 10, + ); + $form['google_plus_one']['service_links_gpo_lang'] = array( + '#title' => t('Language'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_gpo_lang', ''), + '#description' => t('Sets the language to use for the +1 buttons on the page when annotation is set to "inline". For available language code values, see the <a href="@url">list of supported language codes</a>', array('@url' => 'https://developers.google.com/+/web/+1button/?hl=it#available-languages')), + '#size' => 5, + ); + $form['google_plus_one']['service_links_gpo_callback'] = array( + '#title' => t('Callback function'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_gpo_callback', ''), + '#description' => t('If specified, this function is called after the user clicks the +1 button.'), + '#size' => 40, + ); + + $form['linkedin_share_button'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Linkedin Share Button'), + ); + $form['linkedin_share_button']['service_links_lsb_countmode'] = array( + '#title' => t('Count Mode'), + '#type' => 'select', + '#default_value' => variable_get('service_links_lsb_countmode', 'right'), + '#options' => array( + 'top' => t('Vertical'), + 'right' => t('Horizontal'), + '' => t('No Count'), + ), + ); + + $form['pinterest_button'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#title' => t('Pinterest Button'), + ); + $form['pinterest_button']['service_links_pb_countlayout'] = array( + '#title' => t('Pin Count'), + '#type' => 'select', + '#default_value' => variable_get('service_links_pb_countlayout', 'horizontal'), + '#options' => array( + 'horizontal' => t('Horizontal'), + 'vertical' => t('Vertical'), + 'none' => t('No Count'), + ), + ); + $form['pinterest_button']['service_links_pb_mediatoken'] = array( + '#title' => t('Media parameter'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_pb_mediatoken', ''), + '#description' => t('Fill the media parameter with a token which will be evaluated by <a href=@url>Token</a> module.', array('@url' => 'http://www.drupal.org/project/token')), + '#size' => 40, + ); + $form['pinterest_button']['service_links_pb_descriptiontoken'] = array( + '#title' => t('Description parameter'), + '#type' => 'textfield', + '#default_value' => variable_get('service_links_pb_descriptiontoken', ''), + '#description' => t('Fill the description parameter with a token which will be evaluated by <a href=@url>Token</a> module, if left blank will be replaced by the node teaser.', array('@url' => 'http://www.drupal.org/project/token')), + '#size' => 40, + ); + if (module_exists('token')) { + $form['pinterest_button']['token_help'] = array( + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#title' => t('Token help'), + '#theme' => 'token_tree', + '#token_types' => array('node'), + ); + } + + return system_settings_form($form); +} diff --git a/web/sites/all/modules/contrib/service_links/services/widget_services.info b/web/sites/all/modules/contrib/service_links/services/widget_services.info new file mode 100644 index 0000000..dbc9ee0 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/widget_services.info @@ -0,0 +1,12 @@ +name = Widget Services +description = Facebook Like, Facebook Share, Google Plus One, Linkedin Share Button, Pinterest, Twitter +core = 7.x +package = Service Links - Services +dependencies[] = service_links + +; Information added by drupal.org packaging script on 2013-06-10 +version = "7.x-2.2" +core = "7.x" +project = "service_links" +datestamp = "1370849155" + diff --git a/web/sites/all/modules/contrib/service_links/services/widget_services.install b/web/sites/all/modules/contrib/service_links/services/widget_services.install new file mode 100644 index 0000000..09612b4 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/widget_services.install @@ -0,0 +1,39 @@ +<?php + +/** + * @file + * Widgets services install file. + */ + +/** + * Remove unused variables. + */ +function widget_services_update_7201(&$sandbox) { + // Digg Smart Button + variable_del('service_links_dsb_type'); + variable_del('service_links_dsb_related'); + variable_del('service_links_dsb_style'); + + // Facebook Share unused variables + variable_del('service_links_fs_text'); + variable_del('service_links_fs_fix_count'); + + // Google Plus one unused + variable_set('service_links_gpo_size', variable_get('service_links_gpo_type', '')); + variable_del('service_links_gpo_type'); + variable_del('service_links_gpo_counter'); + + // Facebook Like height + $layout = variable_get('service_links_fl_layout', 'button_count'); + switch ($layout) { + case 'box_count': + variable_set('service_links_fl_height', 65); + break; + case 'standard': + variable_set('service_links_fl_height', 80); + break; + case 'button_count': + variable_set('service_links_fl_height', 21); + break; + } +} diff --git a/web/sites/all/modules/contrib/service_links/services/widget_services.module b/web/sites/all/modules/contrib/service_links/services/widget_services.module new file mode 100644 index 0000000..fab88d1 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/services/widget_services.module @@ -0,0 +1,242 @@ +<?php + +/** + * @file + * Extends Service Links with dynamic buttons. + * + * @author Fabio Mucciante (TheCrow) + */ + +/** + * Implements hook_service_links(). + */ +function widget_services_service_links() { + $links = array(); + + $links['facebook_share'] = array( + 'name' => t('Share on Facebook'), + 'link' => 'http://www.facebook.com/sharer.php', + 'description' => t('Share this post on Facebook'), + 'javascript' => 'facebook_share.js', + 'icon' => 'facebook.png', + 'style' => SERVICE_LINKS_STYLE_EMPTY, + 'callback' => 'ws_facebook_share_data', + ); + $links['twitter_widget'] = array( + 'name' => 'Tweet Widget', + 'link' => 'http://twitter.com/share?url=<raw-encoded-short-url>&count=<data-count>&via=<data-via>&text=<raw-encoded-title>&counturl=<raw-encoded-url>', + 'icon' => 'twitter.png', + 'description' => t('Tweet This'), + 'attributes' => array('class' => array('twitter-share-button')), + 'javascript' => 'twitter_button.js', + 'style' => SERVICE_LINKS_STYLE_EMPTY, + 'callback' => 'ws_twitter_widget_data', + ); + $links['facebook_like'] = array( + 'name' => 'Facebook Like', + 'link' => 'http://www.facebook.com/plugins/like.php?href=<encoded-url>&layout=<layout>&show_faces=<show_faces>&action=<action>&colorscheme=<colorscheme>&width=<width>&height=<height>&font=<font>&locale=<locale>', + 'icon' => 'facebook.png', + 'description' => t('I Like it'), + 'javascript' => 'facebook_like.js', + 'style' => SERVICE_LINKS_STYLE_EMPTY, + 'callback' => 'ws_facebook_like_data', + ); + $links['google_plus_one'] = array( + 'name' => 'Google Plus One', + 'link' => '<url>', + 'description' => t('Plus it'), + 'javascript' => 'google_plus_one.js', + 'style' => SERVICE_LINKS_STYLE_EMPTY, + 'callback' => 'ws_google_plus_one_data', + ); + $links['linkedin_share_button'] = array( + 'name' => 'Linkedin Share Button', + 'link' => '<url>', + 'icon' => 'linkedin.png', + 'description' => t('Share on Linkedin'), + 'javascript' => array( + 'http://platform.linkedin.com/in.js?async=true', + 'linkedin_share_button.js', + ), + 'style' => SERVICE_LINKS_STYLE_EMPTY, + 'callback' => 'ws_linkedin_share_button_data', + ); + $links['pinterest_button'] = array( + 'name' => 'Pinterest', + //'link' => 'http://pinterest.com/pin/create/button/?url=<raw-encoded-url>&description=<pinterest-description>&media=<pinterest-media>', + 'link' => 'http://pinterest.com/pin/create/button/?url=<raw-encoded-long-url>&description=<pinterest-description>&media=<pinterest-media>', + 'icon' => 'pinterest.png', + 'description' => t('Pin It'), + 'javascript' => array( + 'pinterest_button.js', + //'http://assets.pinterest.com/js/pinit.js', + ), + 'style' => SERVICE_LINKS_STYLE_EMPTY, + 'attributes' => array('class' => array('pin-it-button')), + 'callback' => 'ws_pinterest_button_data', + 'preset' => 'ws_pinterest_button_tags', + ); + + return $links; +} + +/** + * Callback function for Twitter Widget. + */ +function ws_twitter_widget_data(&$service, $subst) { + static $params; + + if (!isset($params)) { + $params = array( + 'count' => check_plain(variable_get('service_links_tw_data_count', 'horizontal')), + 'via' => check_plain(variable_get('service_links_tw_data_via' , '')), + ); + } + + $service['url'][1] = array_merge($service['url'][1], $params); +} + +/** + * Callback function for Facebook Share. + */ +function ws_facebook_share_data(&$service, $subst) { + static $fs_settings; + + if (!isset($fs_settings)) { + $fs_settings = array( + 'type' => check_plain(variable_get('service_links_fs_type', 'button_count')), + 'app_id' => check_plain(variable_get('service_links_fs_app_id', '150123828484431')), + 'css' => check_plain(preg_replace('/[^0-9a-z\-:;]/', '', variable_get('service_links_fs_css', ''))), + ); + + drupal_add_js(array('ws_fs' => $fs_settings), 'setting'); + } + + $service['attributes']['rel'] = $subst['url']; +} + +/** + * Callback function for Facebook Like. + */ +function ws_facebook_like_data(&$service, $subst) { + static $params; + + if (!isset($params)) { + $params = array( + 'layout' => check_plain(variable_get('service_links_fl_layout', 'button_count')), + 'show_faces' => check_plain(variable_get('service_links_fl_show_faces', 'false')), + 'action' => check_plain(variable_get('service_links_fl_action', 'like')), + 'colorscheme' => check_plain(variable_get('service_links_fl_colorscheme', 'light')), + 'font' => check_plain(variable_get('service_links_fl_font', '')), + 'width' => (int) variable_get('service_links_fl_width', 100), + 'height' => (int) variable_get('service_links_fl_height', 21), + 'locale' => check_plain(variable_get('service_links_fl_locale', '')), + ); + + $fl_settings = array( + 'width' => $params['width'], + 'height' => $params['height'], + ); + + drupal_add_js(array('ws_fl' => $fl_settings), 'setting'); + } + + $service['url'][1] = array_merge($service['url'][1], $params); +} + +/** + * Callback function for Google Plus One. + */ +function ws_google_plus_one_data(&$service, $subst) { + static $gpo_settings; + + if (!isset($gpo_settings)) { + $gpo_settings = array( + 'size' => check_plain(variable_get('service_links_gpo_size', '')), + 'annotation' => check_plain(variable_get('service_links_gpo_annotation', '')), + 'lang' => check_plain(variable_get('service_links_gpo_lang', '')), + 'callback' => check_plain(variable_get('service_links_gpo_callback', '')), + 'width' => (int) variable_get('service_links_gpo_width', 300), + ); + + drupal_add_js(array('ws_gpo' => $gpo_settings), 'setting'); + } +} + +/** + * Callback function for Linkedin Share Button. + */ +function ws_linkedin_share_button_data(&$service, $subst) { + static $lsb_settings; + + if (!isset($lsb_settings)) { + $lsb_settings = array( + 'countmode' => check_plain(variable_get('service_links_lsb_countmode', 'right')), + ); + + drupal_add_js(array('ws_lsb' => $lsb_settings), 'setting'); + } +} + +/** + * Preset function for Pinterest Button, which fill the media tag. + */ +function ws_pinterest_button_tags(&$service, &$settings, $node = NULL) { + static $tokens; + + if (!isset($tokens)) { + $tokens['media'] = variable_get('service_links_pb_mediatoken', ''); + $tokens['description'] = variable_get('service_links_pb_descriptiontoken', ''); + } + + $settings['tag']['pinterest-media'] = '<pinterest-media>'; + + if (module_exists('token')) { + $settings['subst']['pinterest-media'] = check_plain(@token_replace($tokens['media'], array('node' => $node))); + if (empty($tokens['description'])) { + $service['link'] = str_replace('pinterest-description', 'raw-encoded-teaser', $service['link']); + } + else { + $settings['tag']['pinterest-description'] = '<pinterest-description>'; + $settings['subst']['pinterest-description'] = check_plain(@token_replace($tokens['description'], array('node' => $node))); + } + } + else { + $settings['subst']['pinterest-media'] = ''; + $service['link'] = str_replace('pinterest-description', 'raw-encoded-teaser', $service['link']); + } +} + +/** + * Callback function for Pinterest Button. + */ +function ws_pinterest_button_data(&$service, $subst) { + static $pb_settings; + + if (!isset($pb_settings)) { + $pb_settings = array( + 'countlayout' => check_plain(variable_get('service_links_pb_countlayout', 'horizontal')), + ); + + drupal_add_js(array('ws_pb' => $pb_settings), 'setting'); + } +} + +/** + * Implements hook_menu(). + */ +function widget_services_menu() { + $items = array(); + + $items['admin/config/services/service-links/widgets'] = array( + 'title' => 'Widgets', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('widget_services_admin'), + 'access arguments' => array('administer site configuration'), + 'type' => MENU_LOCAL_TASK, + //'parent' => 'admin/config/services/service-links', + 'file' => 'widget_services.admin.inc', + ); + + return $items; +} diff --git a/web/sites/all/modules/contrib/service_links/template.php b/web/sites/all/modules/contrib/service_links/template.php new file mode 100644 index 0000000..8d72b56 --- /dev/null +++ b/web/sites/all/modules/contrib/service_links/template.php @@ -0,0 +1,66 @@ +<?php + +/** + * @file + * Various examples to overwrite the theme settings. + * + * For a simply replacement of your link list, just put the string: + * <?php print $service_links_rendered; ?> + * in your file 'node.tpl.php' and disable the other visualization options + * under the configuration page. + * + * If you need other transformation add 'template.php' under your theme folder + * either integrate the functions below in your 'template.php' replacing 'themename' + * with the name of your theme, clean the cache if some changes are not well updated. + * + * More examples are available on the online help. + */ + +/** + * Example 1: Creating the variable '$service_links_rendered' + * for the template file 'page.tpl.php' containing all the + * selected services. + */ +function themename_preprocess_page(&$vars) { + if (module_exists('service_links')) { + // Works also for not-node pages + if (user_access('access service links') && service_links_show($vars['node'])) { + $vars['service_links_rendered'] = theme('links', array('links' => service_links_render($vars['node']))); + } + } +} + +/** + * Example 2: Creating the variable '$twitter' for the template file + * 'node.tpl.php' containing the services specified by their ids + * (i.e. twitter). + */ +function themename_preprocess_node(&$vars) { + if (module_exists('service_links')) { + if (user_access('access service links') && service_links_show($vars['node'])) { + $vars['twitter'] = theme('links', array('links' => service_links_render_some('twitter', $vars['node']))); + } + } +} + +/** + * If something doesn't work well try this. + */ +function themename_preprocess(&$vars, $hook) { + switch ($hook) { + case 'node': + if (module_exists('service_links')) { + if (user_access('access service links') && service_links_show($vars['node'])) { + $vars['twitter'] = theme('links', array('links' => service_links_render_some('twitter', $vars['node']))); + } + } + break; + case 'page': + if (module_exists('service_links')) { + if (user_access('access service links') && service_links_show($vars['node'])) { + $vars['service_links'] = theme('links', array('links' => service_links_render($vars['node']))); + } + } + break; + } +} diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.inc b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.inc new file mode 100644 index 0000000..1bcf1b7 --- /dev/null +++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.inc @@ -0,0 +1,14 @@ +<?php +/** + * @file + * service_links_social_sharing.features.inc + */ + +/** + * Implements hook_ctools_plugin_api(). + */ +function service_links_social_sharing_ctools_plugin_api($module = NULL, $api = NULL) { + if ($module == "strongarm" && $api == "strongarm") { + return array("version" => "1"); + } +} diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.user_permission.inc b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.user_permission.inc new file mode 100644 index 0000000..34e50cf --- /dev/null +++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.user_permission.inc @@ -0,0 +1,23 @@ +<?php +/** + * @file + * service_links_social_sharing.features.user_permission.inc + */ + +/** + * Implements hook_user_default_permissions(). + */ +function service_links_social_sharing_user_default_permissions() { + $permissions = array(); + + // Exported permission: 'access service links'. + $permissions['access service links'] = array( + 'name' => 'access service links', + 'roles' => array( + 'anonymous user' => 'anonymous user', + ), + 'module' => 'service_links', + ); + + return $permissions; +} diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.info b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.info new file mode 100644 index 0000000..8534efb --- /dev/null +++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.info @@ -0,0 +1,18 @@ +name = Service links social sharing +description = Social media sharing links for content +core = 7.x +package = drupalfi +version = 7.x-1.0 +project = service_links_social_sharing +dependencies[] = ctools +dependencies[] = features +dependencies[] = general_services +dependencies[] = service_links +dependencies[] = strongarm +features[ctools][] = strongarm:strongarm:1 +features[features_api][] = api:2 +features[user_permission][] = access service links +features[variable][] = service_links_link_view_modes +features[variable][] = service_links_node_types +features[variable][] = service_links_show +features[variable][] = service_links_style diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.module b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.module new file mode 100644 index 0000000..fb6f1ed --- /dev/null +++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.module @@ -0,0 +1,7 @@ +<?php +/** + * @file + * Code for the Service links social sharing feature. + */ + +include_once 'service_links_social_sharing.features.inc'; diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.strongarm.inc b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.strongarm.inc new file mode 100644 index 0000000..885eca3 --- /dev/null +++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.strongarm.inc @@ -0,0 +1,86 @@ +<?php +/** + * @file + * service_links_social_sharing.strongarm.inc + */ + +/** + * Implements hook_strongarm(). + */ +function service_links_social_sharing_strongarm() { + $export = array(); + + $strongarm = new stdClass(); + $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ + $strongarm->api_version = 1; + $strongarm->name = 'service_links_link_view_modes'; + $strongarm->value = array( + 'full' => 'full', + 'teaser' => 0, + 'rss' => 0, + 'diff_standard' => 0, + 'token' => 0, + ); + $export['service_links_link_view_modes'] = $strongarm; + + $strongarm = new stdClass(); + $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ + $strongarm->api_version = 1; + $strongarm->name = 'service_links_node_types'; + $strongarm->value = array( + 'basic_page' => 'basic_page', + 'company' => 'company', + 'event' => 'event', + 'news' => 'news', + 'liftup' => 0, + ); + $export['service_links_node_types'] = $strongarm; + + $strongarm = new stdClass(); + $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ + $strongarm->api_version = 1; + $strongarm->name = 'service_links_show'; + $strongarm->value = array( + 'delicious' => 0, + 'digg' => 0, + 'stumbleupon' => 0, + 'twitter' => 1, + 'pingthis' => 0, + 'reddit' => 0, + 'slashdot' => 0, + 'newsvine' => 0, + 'furl' => 0, + 'facebook' => 1, + 'myspace' => 0, + 'google' => 0, + 'google_plus' => 1, + 'yahoo' => 0, + 'linkedin' => 1, + 'technorati' => 0, + 'technorati_favorite' => 0, + 'icerocket' => 0, + 'misterwong' => 0, + 'mixx' => 0, + 'box' => 0, + 'blinklist' => 0, + 'identica' => 0, + 'newskicks' => 0, + 'diigo' => 0, + 'facebook_share' => 0, + 'twitter_widget' => 0, + 'facebook_like' => 0, + 'google_plus_one' => 0, + 'linkedin_share_button' => 0, + 'pinterest_button' => 0, + ); + $export['service_links_show'] = $strongarm; + + $strongarm = new stdClass(); + $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ + $strongarm->api_version = 1; + $strongarm->name = 'service_links_style'; + $strongarm->value = '3'; + $export['service_links_style'] = $strongarm; + + return $export; +}