{{indexmenu_n>60}}
====== 3rd Party Libraries Used ======
In the Geo software, we utilize a number of 3rd party software //libraries//, which are listed below in sort-of directory listing order. Feel free to reference any of these libraries in your Addon, but pay attention to the notes on each library as some are slated for removal in future releases. If you see any out of date information, or if you know of a library with a newer version than listed below let us know about it!
Note that if you have a version earlier than what is listed under //last updated//, you will need to refer to your version's files to see what version of the library is included with your version.
**Warning:** Take note of the use of **Prototype JS and Scriptaculous** along side **jQuery**, which are not compatible with some other JS libraries such as MooTools. If you use jQuery, make sure you ALWAYS use the jQuery() and not the shortcut $(), as currently that will be used by Prototype. See the notes in the [[#Prototype (Javascript Framework)]] for more info.
===== ADOdb (Database Access) =====
| **Name** | ADOdb |
| **Location** | classes/adodb/ |
| **URL** | [[http://adodb.sourceforge.net/]] |
| **Version & Release Date** | V5.11 (PHP5 only) 5 May 2010 |
| **Last Updated in Geo** | 3 March, 2011 (Version 6.0.0) |
| **Usage in Geo** | Used by DataAccess class. |
**Usage Notes:** We advise to not use this library directly, but use the Geo data accessor DataAccess which wraps the ADOdb class, and adds additional functionality on top of that. See the [[http://geodesicsolutions.com/demo/addons/example/docs/|PHP Docs]] for the **DataAccess** class for more information.
===== html5shiv (HTML 5 Compatibility JS Library for IE) =====
| **Name** | html5shiv |
| **Location** | js/html5shiv.js |
| **URL** | [[https://code.google.com/p/html5shiv/]] |
| **Version & Release Date** | 3.6.2pre |
| **Last Updated in Geo** | 8 February, 2013 (Version 7.1) |
| **Usage in Geo** | Used in new default templates, to ensure HTML5 compatibility in IE versions 8 and below. |
**Usage Notes:** This is now (as of **version 7.3.0**) included as part of the [[#Modernizr]] library, in earlier versions it was referenced in the default templates on it's own. This ensures that those HTML5 elements will work properly on older browser versions.
===== Modernizr =====
| **Name** | Modernizr |
| **Location** | js/modernizr-2.6.2.min.js |
| **URL** | [[http://modernizr.com/]] - [[http://html5boilerplate.com]]((The modernizr is a custom build that is distributed with the HTML5 Boilerplate project.)) |
| **Version & Release Date** | 2.6.2 |
| **Last Updated in Geo** | 04 October, 2013 (Version 7.3.0) |
| **Usage in Geo** | Used in new default templates, for browser feature detection and to ensure HTML5 compatibility in IE versions 8 and below. |
**Usage Notes:** First added in **version 7.3.0**. Note that this includes html5shiv so renders the stand-alone html5shiv library unnecessary. Also note that unlike other JS libraries, this needs to be loaded after all of the CSS is loaded, but before the body is loaded((In other words, right before the tag in most cases.)), in order to avoid FOUC.
At the moment just a few places make use of Modernizr's tests to it's full extent, going forward we plan to incrementally improve that to fully leverage what this library can accomplish.
===== Mobile Detect =====
| **Name** | Mobile Detect |
| **Location** | classes/Mobile-Detect/Mobile_Detect.php |
| **URL** | [[http://mobiledetect.net/]] |
| **Version & Release Date** | 2.7.1 |
| **Last Updated in Geo** | 4 October, 2013 (Added in Version 7.3.0+) |
| **Usage in Geo** | Used by the template system to detect when site is being viewed on mobile device, for purposes of selective mobile template loading. |
**Usage Notes:** This library first added / used in **Version 7.3.0**. We recommend to not use this directly, instead go through the methods exposed in the geoTemplate class and geoSession class, to ensure best "forward compatibility".
===== PayPal SDK (Paypal Pro Gateway) =====
| **Name** | PayPal SDK |
| **Location** | classes/PEAR/PayPal/ ((As of Geo version 4.1.0, old location in Services/)) |
| **URL** | [[http://www.paypal.com/sdk]] (SOAP SDKs - PHP .zip package half way down the page) |
| **Version** | PHP SDK V59 |
| **Last Updated in Geo** | 10/02/2009 (Version 4.1.0) |
| **Usage in Geo** | In the PayPal Pro payment gateway. |
**Usage Notes:** Added in Geo 4.1.0. The old location is in the **Services/** directory, we have updated it (we were previously using a beta version from 2006) and moved its home to the directory noted.
===== PclZip =====
| **Name** | PclZip |
| **Location** | classes/pclzip/ |
| **URL** | [[http://www.phpconcept.net/pclzip]] |
| **Version** | 2.8.2 |
| **Last Updated in Geo** | 01/12/2011 (Version 5.2.0) |
| **Usage in Geo** | Alternative to PHP Zip extension, for servers that do not have that extension loaded. |
**Usage Notes:** Added in Geo 5.2.0. This library is only used on servers where the built in zip extension is not loaded in PHP, which apparently is often enough to warrant using an alternative. We advise not to use this class directly, if the Zip extension ever becomes "common place" enough, we may remove this library.
===== Swift Mailer (E-Mail) =====
| **Name** | Swift Mailer PHP5 version |
| **Location** | classes/php5_classes/swift/ |
| **URL** | [[http://swiftmailer.org/]] |
| **Version** | V3.3.3 |
| **Last Updated in Geo** | 01/08/2009 |
| **Usage in Geo** | In the E-Mail Send Direct Addon, which is a system addon that sends all the e-mails. |
**Usage Notes:** In 4.0 just use the geoEmail::sendMail() method to send e-mails, see that method's documentation for more info.
**Future Plans:** There is a new version of Swift Mailer out which is a total re-write from previous versions. We have plans to move the e-mail functionality totally into the geoEmail class (right now that class just acts as a wrapper, relying on the addon to do the actual e-mailing), and at that time we will recode it to use the new version of the Swift Mailer. This is planned for a future release but since it is not done yet, no word on how soon that will be. The 5.0 line will continue to use the 3.3.3 version.
===== jQuery (Javascript Framework) =====
| **Name** | jQuery |
| **Location** | js/jquery.min.js |
| **URL** | [[http://jquery.com/]] |
| **Version & Release Date** | 1.9.1 |
| **Last Updated in Geo** | 02/14/2013 (Version 7.1.0 and up ONLY) |
| **Usage in Geo** | Switching to use jQuery instead of Prototype & Scriptaculous. We will be converting existing areas to use jQuery as time allows. Any "new features" will use jQuery going forward starting in 7.1.0. |
**Usage Notes:** If you plan to do any JS stuff that requires a javascript framework, we **highly recommend** to use jQuery rather than Prototype and Scriptaculous. We plan to phase those libraries out, being replaced by jQuery over time, and new features will be using jQuery. In the mean time, both jQuery and Prototype/Scriptaculous will be used, until we are able to convert all built-in functionality over to jQuery.
If you are using Prototype / Scriptaculous now, we highly recommend to start making the switch over to use jQuery.
**Customization Note:** Some sites have started using jQuery already, if your site is already using jQuery make sure that you remove any calls to the jQuery JS file when you update to version 7.1.0 since the software will already load that built in. It will result in duplicate calls to jQuery if you leave your own in, and in some cases where you might be using an older version, may result in breaking features in the software.
**Warning:** Until we entirely "phase out" Prototype, avoid using Mootools as it will directly conflict with Prototype, causing you problems. This applies to any JS libraries that conflict with Prototype or Scriptaculous, before you decide to use something JS based ensure that it is compatible.
There's nothing wrong with Mootools any of the others, we just happened to choose Prototype & Scriptaculous starting out so until they are removed entirely, you will need to make sure you only use compatible libraries..
Note that it is possible to load this library from [[http://code.google.com/apis/libraries/devguide.html|Google Libraries API]] rather than off the local site. See the **Use Google Libraries API** setting in the admin at **Design > Template Sets** in the Advanced Settings section.
===== jQuery UI =====
| **Name** | jQuery UI |
| **Location** | js/jquery-ui.min.js |
| **URL** | [[http://http://jqueryui.com/]] |
| **Version & Release Date** | 1.10.2 |
| **Last Updated in Geo** | 02/27/2014 (First added in 7.1.0) |
| **Usage in Geo** | We use a custom build of jQuery UI that only includes the components mentioned below, plus the requirements for those component(s). This is done to help with bandwidth, "everything" produces a 200K+ sized JS file minified. But only including the components mentioned below produces < 50K sized file (minified), much better for page load speed. |
| **jQuery UI Components** | Draggable, Sortable, Autocomplete, Datepicker, Dialog |
**Customization note:** As noted in the jQuery entry, we are switching from using Prototype to using jQuery. There is a LOT of existing code, so we're not going to do it all in one version. Until everything is converted over, Prototype and Scriptaculous will continue to be used. So be careful of using $() - that must ONLY be used for Prototype, it will not work (unless properly encapsulated) for calling jQuery or jQuery UI. Instead use the **jQuery(...)** syntax instead of the short-hand $(...) syntax.
Note that it is possible to load this library from [[http://code.google.com/apis/libraries/devguide.html|Google Libraries API]] rather than off the local site. See the **Use Google Libraries API** setting in the admin at **Design > Template Sets** in the Advanced Settings section.
===== jQuery UI Touch Punch =====
| **Name** | jQuery UI Touch Punch |
| **Location** | js/jquery.ui.touch-punch.min.js |
| **URL** | [[http://touchpunch.furf.com/]] |
| **Version & Release Date** | 0.2.3 |
| **Last Updated in Geo** | 03/25/2014 (First added in 7.4.0) |
| **Usage in Geo** | Used to make jQuery-UI compatible with touch events. Meaning it makes the jQuery-UI stuff, like sortable lists (drag & drop), work on mobile devices. Note that this will be removed if/when jQuery UI is compatible with touch events natively. |
===== Prototype (Javascript Framework) =====
| **Name** | Prototype JavaScript framework |
| **Location** | js/prototype.js |
| **URL** | [[http://www.prototypejs.org/]] |
| **Version & Release Date** | 1.7.1 |
| **Last Updated in Geo** | 01/15/2013 (Version 7.1.0) |
| **Usage in Geo** | Used extensively for features in the past, but currently in process of being phased out, to be replaced by jQuery (starting in version 7.1.0). |
**Usage Notes:** If you plan to do any JS stuff that requires a javascript framework, we **highly recommend** to stick to using jQuery, as starting in version 7.1.0 the use of Prototype is being phased out. If you have custom scripts using Prototype we recommend to start converting them to use jQuery instead, or find alternative scripts that do the same that using jQuery. Once we have entirely phased out Prototype and Scriptaculous it will be removed from the software completely, however this may take some time.
**JQuery Compatibility:** During the time that we work to phase out Prototype, the software will be loading both Prototype and jQuery (running in compatibility mode) at same time.
**Warning:** Avoid using Mootools as it will directly conflict with Prototype, causing you problems in the software until all use of Prototype has been converted to jQuery. This applies to any JS libraries that conflict with Prototype or Scriptaculous, before you decide to use something JS based ensure that it is compatible.
There's nothing wrong with Mootools or any of the others, we just happened to choose Prototype & Scriptaculous jQuery now that it has become the most popular JS library.
Note that it is possible to load this library from [[http://code.google.com/apis/libraries/devguide.html|Google Libraries API]] rather than off the local site. See the **Use Google Libraries API** setting in the admin at **Design > Template Sets** in the Advanced Settings section.
===== Script.aculo.us (Prototype-based Javascript Effects) =====
| **Name** | script.aculo.us |
| **Location** | js/scriptaculous/ |
| **URL** | [[http://script.aculo.us/]] |
| **Version** | v1.9.0 |
| **Last Updated in Geo** | 04 March, 2011 (Version 6.0.0) |
| **Usage in Geo** | Used extensively in past versions, starting in 7.1.0 it has begun to be phased out, replaced by jQuery. We recommend using jQuery going forward. |
**Usage Notes:** We recommend to use jQuery instead, starting in version 7.1.0 Scriptaculous is being phased out, to be replaced by jQuery. This will not happen all at once, it will be done in phases. Any new features will use jQuery.
Note that it is possible to load this library from [[http://code.google.com/apis/libraries/devguide.html|Google Libraries API]] rather than off the local site. See the **Use Google Libraries API** setting in the admin at **Design > Template Sets** in the Advanced Settings section. At least it will be once the Google Library API is updated with the latest version of Scriptaculous, version 1.9.0.
===== CalendarView (Prototype-based) =====
| **Name** | CalendarView |
| **Location** | js/calendarview.js |
| **URL** | [[http://calendarview.org/]] |
| **Version** | v1.2 |
| **Last Updated in Geo** | 25 August, 2010 (Version 5.1.2) |
| **Usage in Geo** | For now, used for "date selection" fields, will be replaced with jQuery compatible version in the future. |
**Usage Notes:** We recommend to avoid using this as it will be removed as soon as we replace it with something that is compatible with jQuery.
===== IXR (XML-RPC Library) =====
| **Name** | IXR - The Inutio XML-RPC Library |
| **Location** | classes/rpc/ |
| **URL** | [[http://scripts.incutio.com/xmlrpc/]] |
| **Version & Release Date** | 1.7.4 (7th September 2010) |
| **Last Updated in Geo** | 03/04/2011 (Version 6.0.0) |
| **Usage in Geo** | In the Remote API system, used to communicate. |
**Usage Notes:** When using the [[developers/remote_api/start]] you don't have to worry about communication with the "client" script, in the remote API call all you need to do is return the data as you want the client to receive it, and the Geo Remote API system will take care of it for you.
===== Smarty (Template system) =====
| **Name** | Smarty |
| **Location** | classes/php5_classes/smarty/ |
| **URL** | [[http://www.smarty.net]] |
| **Version & Release Date** | 3.1.18 (Apr 7th, 2014) |
| **Last Updated in Geo** | 08 April, 2014 (version 7.4.0) |
| **Usage in Geo** | Used in the geoTemplate class (that class extends the Smarty class). The geoTemplate class is used throughout the Geo software |
**Usage Notes:** See the [[developers/geoclass/geoview/start]] and geoTemplate documentation.
===== TinyMCE (WYSIWYG Editor) =====
| **Name** | TinyMCE & TinyMCE Compressor PHP |
| **Location** | js/tiny_mce/ |
| **URL** | [[http://tinymce.moxiecode.com/]] |
| **Version & Release Date** |- TinyMCE - Version 3.5.8 (2012-11-20)\\ - TinyMCE Compressor PHP - Version 2.0.4 (2011-03-23) |
| **Last Updated in Geo** |- TinyMCE - 02/14/2013 (In Version 7.1.0)\\ - TinyMCE Compressor PHP - 05/09/2011 (In Version 5.2.3) |
| **Usage in Geo** | Used as the WYSIWYG editor anywhere such an editor is used. |
**Usage Notes:** If you wish to customize the TinyMCE configuration that is used, see [[/tutorials/design_adv/examples/tiny_mce]]
===== CodeMirror =====
| **Name** | CodeMirror |
| **Location** | js/codemirror/ |
| **URL** | [[http://codemirror.net/]] |
| **Version & Release Date** | 3.02 (21-01-2013) |
| **Last Updated in Geo** | February 14, 2013 (Version 7.1.0) |
| **Usage in Geo** | Used as the text editor on the **<..> Source Code Editor** tab when editing files under **Design > Manager**. |
**Usage Notes:** This is only available starting on version 6.0.0. See documentation on [[http://codemirror.net/]] for usage on other pages within the software.
===== minify =====
| **Name** | minify |
| **Location** | classes/php5_classes/minify/ |
| **URL** | [[http://code.google.com/p/minify/]] |
| **Version & Release Date** | 2.1.5 (2012-03-10) |
| **Last Updated in Geo** | June 19, 2013 (Version 7.3.0) |
| **Usage in Geo** | Used to minify CSS and JS. |
**Usage Notes:** The actual complete library is pretty big, we only include 2 parts of the library: A file in the minify folder used to minify the JS. And a file used to minify CSS that was actually integrated directly into the "geo_templates/min.php" file and heavily modified.