kolab.org/www

Torsten Grote grote at kolabsys.com
Tue Aug 14 12:51:35 CEST 2012


 kolab.org/www/drupal-7.14/sites/all/modules/ctools/API.txt                                                                     |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/bulk_export/bulk_export.info                                                |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/css/modal.css                                                               |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.info                                                                 |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.module                                                               |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info                            |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc                            |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info                                  |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info                            |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info                            |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/drush/ctools.drush.inc                                                      |  499 +++++++---
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/about.html                                                             |   12 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/export.html                                                            |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/object-cache.html                                                      |   10 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/plugins-implementing.html                                              |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/cleanstring.inc                                                    |    7 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/content.inc                                                        |    5 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-admin.inc                                                  |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-task-handler.inc                                           |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context.inc                                                        |   10 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/css.inc                                                            |    8 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/export-ui.inc                                                      |  270 ++---
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/object-cache.inc                                                   |   61 -
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/plugins.inc                                                        |   15 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/stylizer.inc                                                       |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/wizard.inc                                                         |   11 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/ajax-responder.js                                                        |    5 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/auto-submit.js                                                           |    5 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/collapsible-div.js                                                       |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dependent.js                                                             |   18 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropbutton.js                                                            |   11 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropdown.js                                                              |   88 -
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/jump-menu.js                                                             |   14 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/modal.js                                                                 |  148 +-
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/stylizer.js                                                              |    5 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.admin.inc                                         |   11 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.info                                              |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.module                                            |    1 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc                                   |    1 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc                       |    9 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc                            |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc                     |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc                            |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/contexts/entity.inc                                                 |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php                                |  105 +-
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/stylizer/stylizer.info                                                      |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools.drush.sh                                                       |   42 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export.test                                 |  215 ++++
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.default_ctools_export_tests.inc |   31 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info                            |   15 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.install                         |   86 +
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module                          |   10 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_plugin_test.info                                               |    7 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views.inc                               |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc                         |   65 -
 kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/views_content.info                                            |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/CHANGELOG.txt                                                                 |   24 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date.field.inc                                                                |    5 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date.info                                                                     |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date.install                                                                  |   32 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date.theme                                                                    |    8 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_admin.inc                                                                |   12 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_all_day/date_all_day.info                                                |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.info                                                        |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.install                                                     |   31 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.module                                                      |   60 -
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_elements.inc                                                |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_ical.inc                                                    |   40 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_sql.inc                                                     |   14 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.info                                                |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.module                                              |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc                          |    3 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate.info                                                |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info                   |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.info                                                    |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.module                                                  |   24 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat/date_repeat.info                                                  |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat_field/date_repeat_field.info                                      |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.info                                                    |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.wizard.inc                                              |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/date_views.info                                                    |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_argument_handler.inc                           |    7 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc                             |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_plugin_pager.inc                               |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/date/tests/date_api.test                                                           |    8 
 kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.info                                                             |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.install                                                          |    2 
 kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.module                                                           |   55 -
 kolab.org/www/drupal-7.14/sites/all/modules/token/tests/token_test.info                                                        |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/token/token.css                                                                    |    4 
 kolab.org/www/drupal-7.14/sites/all/modules/token/token.info                                                                   |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/token/token.js                                                                     |   26 
 kolab.org/www/drupal-7.14/sites/all/modules/token/token.module                                                                 |   56 -
 kolab.org/www/drupal-7.14/sites/all/modules/token/token.pages.inc                                                              |   35 
 kolab.org/www/drupal-7.14/sites/all/modules/token/token.test                                                                   |   10 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.info                                                    |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.module                                                  |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.inc                                                                |   12 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.info                                                               |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.lib.php                                                            |   43 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.module                                                             |    8 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.pages.inc                                                          |   23 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.views_default.inc                                                  |    5 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.info                                       |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.rules.inc                                  |   12 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.info                                             |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.module                                           |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.pages.inc                                        |    5 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.info                                         |    6 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.module                                       |   34 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.pages.inc                                    |    7 
 kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_views_field_handlers.inc                                           |    4 
 112 files changed, 1864 insertions(+), 787 deletions(-)

New commits:
commit 21f212b0c67a9dc772808e3b5a2521601b72e45e
Author: Torsten Grote <grote at kolabsys.com>
Date:   Tue Aug 14 12:51:12 2012 +0200

    updated ctools, date, pathauto, token and twitter modules

diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/API.txt b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/API.txt
index bb9748e..2df7e22 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/API.txt
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/API.txt
@@ -3,6 +3,10 @@ Current API Version: 2.0.5
 Please note that the API version is an internal number and does not match release numbers. It is entirely possible that releases will not increase the API version number, and increasing this number too often would burden contrib module maintainers who need to keep up with API changes.
 
 This file contains a log of changes to the API.
+API Version 2.0.7
+  All ctools object cache database functions can now accept session_id as an optional
+  argument to facilitate using non-session id keys.
+
 API Version 2.0.6
   Introduce a hook to alter the implementors of a certain api via hook_[ctools_api_hook]_alter.
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/bulk_export/bulk_export.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/bulk_export/bulk_export.info
index 1e5061c..790561c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/bulk_export/bulk_export.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/bulk_export/bulk_export.info
@@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = ctools
 package = Chaos tool suite
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/css/modal.css b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/css/modal.css
index 66c4a1c..d9f44e2 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/css/modal.css
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/css/modal.css
@@ -23,7 +23,6 @@ div.ctools-modal-content .modal-header {
 
 div.ctools-modal-content .modal-header a {
   color: white;
-  float: right;
 }
 
 div.ctools-modal-content .modal-content {
@@ -37,6 +36,7 @@ div.ctools-modal-content .modal-form {
 
 div.ctools-modal-content a.close {
   color: white;
+  float: right;
 }
 
 div.ctools-modal-content a.close:hover {
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.info
index 82fd1e2..2ccf719 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.info
@@ -6,9 +6,9 @@ files[] = includes/context.inc
 files[] = includes/math-expr.inc
 files[] = includes/stylizer.inc
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.module b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.module
index f8e3369..7dfc989 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools.module
@@ -9,7 +9,7 @@
  * must be implemented in the module file.
  */
 
-define('CTOOLS_API_VERSION', '2.0.6');
+define('CTOOLS_API_VERSION', '2.0.7');
 
 /**
  * Test the CTools API version.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
index 77e5593..4562d7a 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
@@ -4,9 +4,9 @@ core = 7.x
 package = Chaos tool suite
 dependencies[] = ctools
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc
index 782c7ca..f8abea6 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc
@@ -99,7 +99,7 @@ function ctools_ruleset_ctools_access_check($conf, $context, $plugin) {
  * Provide a summary description based upon the checked roles.
  */
 function ctools_ruleset_ctools_access_summary($conf, $context, $plugin) {
-  if (!empty($form_state['plugin']['ruleset']->admin_description)) {
+  if (!empty($plugin['ruleset']->admin_description)) {
     return check_plain($plugin['ruleset']->admin_description);
   }
   else {
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
index 0cb5d92..056083d 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
@@ -4,9 +4,9 @@ package = Chaos tool suite
 dependencies[] = ctools
 core = 7.x
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
index ca83b8a..75a2a93 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
@@ -4,9 +4,9 @@ core = 7.x
 package = Chaos tool suite
 dependencies[] = ctools
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
index 4d4aace..3b11096 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
@@ -7,9 +7,9 @@ dependencies[] = page_manager
 dependencies[] = advanced_help
 core = 7.x
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/drush/ctools.drush.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/drush/ctools.drush.inc
index 353bbde..bf1df1f 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/drush/ctools.drush.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/drush/ctools.drush.inc
@@ -11,8 +11,12 @@
 function ctools_drush_command() {
   $items = array();
 
+  $module_text = 'Filter the list of exportables by module. This will come from the \'export_module\' key on the exportable.';
+  $all_text = 'Perform this operation all CTools exportables available on the system (all tables).';
+
   $items['ctools-export'] = array(
     'aliases' => array('ctex'),
+    'callback' => 'ctools_drush_export',
     'description' => 'Export multiple CTools exportable objects directly to code.',
     'arguments' => array(
       'module'    => 'Name of your module.',
@@ -20,36 +24,40 @@ function ctools_drush_command() {
     'options' => array(
       'subdir' => 'The name of the sub directory to create the module in. Defaults to ctools_export which will be placed into sites/all/modules.',
       'remove' => 'Remove existing files before writing, except the .module file.',
+      'filter' => 'Filter the list of exportables by status. Available options are enabled, disabled, overridden, database, code and all. Defaults to enabled.',
+      'tables' => 'Comma separated list of exportable table names to filter by.',
     ),
-    'drupal dependencies' => array('bulk_export'),
     'examples' => array(
       'drush ctex export_module' => 'Export CTools exportables to a module called "export_module".',
       'drush ctex export_module --subdir=exports' => 'Same as above, but into the sites/all/modules/exports directory.',
       'drush ctex export_module --subdir=exports --remove' => 'Same as above, but automatically removing all files, except for the .module file.',
+      'drush ctex --filter="views_view"' => 'Filter export selection to the views_view table only.',
     ),
   );
 
   $items['ctools-export-info'] = array(
     'aliases' => array('ctei'),
+    'callback' => 'ctools_drush_export_info',
     'description' => 'Show available CTools exportable objects.',
     'arguments' => array(),
     'options' => array(
       'format' => 'Display exportables info in a different format such as print_r, json, export. The default is to show in a tabular format.',
       'tables-only' => 'Only show list of exportable types/table names and not available objects.',
-      'enabled' => 'Only show exportables that are currently enabled.',
-      'disabled' => 'Only show exportables that are currently disabled.',
-      'overridden' => 'Only show exportables that have been overridden in the database.',
-      'database' => 'Only show exportables defined in the database (and not in code).',
+      'filter' => 'Filter the list of exportables by status. Available options are enabled, disabled, overridden, database, and code.',
+      'module' => $module_text,
     ),
     'examples' => array(
       'drush ctools-export-info' => 'View export info on all exportables.',
       'drush ctools-export-info views_view variable' => 'View export info for views_view and variable exportable types only.',
+      'drush ctei --filter=enabled' => 'Show all enabled exportables.',
+      'drush ctei views_view --filter=disabled' => 'Show all enabled exportables.',
+      'drush ctei views_view --module=node' => 'Show all exportables provided by/on behalf of the node module.',
     ),
   );
 
   $items['ctools-export-view'] = array(
     'aliases' => array('ctev'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'View CTools exportable object code output.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to view.',
@@ -58,6 +66,8 @@ function ctools_drush_command() {
     'options' => array(
       'indent' => 'The string to use for indentation when dispalying the exportable export code. Defaults to \'\'.',
       'no-colour' => 'Remove any colour formatting from export string output. Ideal if you are sending the output of this command to a file.',
+      'module' => $module_text,
+      'all' => $all_text,
     ),
     'examples' => array(
       'drush ctools-export-view views_view' => 'View all views exportable objects.',
@@ -67,28 +77,35 @@ function ctools_drush_command() {
 
   $items['ctools-export-revert'] = array(
     'aliases' => array('cter'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'Revert CTools exportables from changes overridden in the database.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to revert.',
       'machine names' => 'Space separated list of exportables you want to revert.',
     ),
-    'options' => array(),
+    'options' => array(
+      'module' => $module_text,
+      'all' => $all_text,
+    ),
     'examples' => array(
       'drush ctools-export-revert views_view' => 'Revert all overridden views exportable objects.',
       'drush ctools-export-revert views_view archive' => 'Revert overridden default views archive view.',
+      'drush ctools-export-revert --all' => 'Revert all exportables on the system.',
     ),
   );
 
   $items['ctools-export-enable'] = array(
     'aliases' => array('ctee'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'Enable CTools exportables.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to enable.',
       'machine names' => 'Space separated list of exportables you want to enable.',
     ),
-    'options' => array(),
+    'options' => array(
+      'module' => $module_text,
+      'all' => $all_text,
+    ),
     'examples' => array(
       'drush ctools-export-enable views_view' => 'Enable all overridden views exportable objects.',
       'drush ctools-export-enable views_view archive' => 'Enable overridden default views archive view.',
@@ -97,13 +114,16 @@ function ctools_drush_command() {
 
   $items['ctools-export-disable'] = array(
     'aliases' => array('cted'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'Disable CTools exportables.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to disable.',
       'machine names' => 'Space separated list of exportables you want to disable.',
     ),
-    'options' => array(),
+    'options' => array(
+      'module' => $module_text,
+      'all' => $all_text,
+    ),
     'examples' => array(
       'drush ctools-export-disable views_view' => 'Disable all overridden views exportable objects.',
       'drush ctools-export-disable views_view archive' => 'Disable overridden default views archive view.',
@@ -128,7 +148,7 @@ function ctools_drush_help($section) {
 /**
  * Drush callback: export
  */
-function drush_ctools_export($module = 'foo') {
+function ctools_drush_export($module = 'foo') {
   $error = FALSE;
   if (preg_match('@[^a-z_]+@', $module)) {
     $error = dt('The name of the module must contain only lowercase letters and underscores') . '.';
@@ -136,6 +156,15 @@ function drush_ctools_export($module = 'foo') {
     return;
   }
 
+  // Filter by tables.
+  $tables = _ctools_drush_explode_options('tables');
+
+  // Check status.
+  $filter = drush_get_option('filter', FALSE);
+  if (empty($filter)) {
+    drush_set_option('filter', 'enabled');
+  }
+
   // Selection.
   $options = array('all' => dt('Export everything'), 'select' => dt('Make selection'));
   $selection = drush_choice($options, dt('Select to proceed'));
@@ -146,10 +175,11 @@ function drush_ctools_export($module = 'foo') {
 
   // Present the selection screens.
   if ($selection == 'select') {
-    $selections = _drush_ctools_selection_screen();
+    $selections = _ctools_drush_selection_screen($tables);
   }
   else {
-    $selections = _drush_ctools_export_info();
+    $info = _ctools_drush_export_info($tables, TRUE);
+    $selections = $info['exportables'];
   }
 
   // Subdirectory.
@@ -177,7 +207,7 @@ function drush_ctools_export($module = 'foo') {
 
   // Remove files (except for the .module file) if the destination folder exists.
   if ($remove && $dest_exists) {
-    _drush_ctools_file_delete($dest);
+    _ctools_drush_file_delete($dest);
   }
 
   // Create new dir if needed.
@@ -190,6 +220,9 @@ function drush_ctools_export($module = 'foo') {
   // Create destination directory.
   drush_mkdir($dest);
 
+  // Load bulk export module.
+  module_load_include('module', 'bulk_export');
+
   // Create options and call Bulk export function.
   // We create an array, because maybe in the future we can pass in more
   // options to the export function (pre-selected modules and/or exportables).
@@ -199,6 +232,14 @@ function drush_ctools_export($module = 'foo') {
   );
   $files = bulk_export_export(TRUE, $options);
 
+  $alter = array(
+    'module' => $module,
+    'files' => $files,
+  );
+  // Let other drush commands alter the files.
+  drush_command_invoke_all_ref('drush_ctex_files_alter', $alter);
+  $files = $alter['files'];
+
   // Start writing.
   if (is_array($files)) {
     foreach ($files as $base_file => $data) {
@@ -220,7 +261,6 @@ function drush_ctools_export($module = 'foo') {
         drush_log(dt('Error writing !filename', array('!filename' => $filename)), 'error');
       }
     }
-    drush_log("\n" . dt('No penguins were harmed in the generation of this code.') . "\n", 'success');
   }
   else {
     drush_log(dt('No files were found to be written.'), 'error');
@@ -230,19 +270,24 @@ function drush_ctools_export($module = 'foo') {
 /**
  * Helper function to select the exportables. By default, all exportables
  * will be selected, so it will be easier to deselect them.
+ *
+ * @param $tables
  */
-function _drush_ctools_selection_screen() {
+function _ctools_drush_selection_screen(array $tables = array()) {
   $selections = $build = array();
   $files = system_rebuild_module_data();
 
   $selection_number = 0;
 
-  $exportables = _drush_ctools_export_info();
+  $info = _ctools_drush_export_info($tables, TRUE);
+  $exportables = $info['exportables'];
+  $schemas = $info['schemas'];
+
   $export_tables = array();
 
   foreach (array_keys($exportables) as $table) {
     natcasesort($exportables[$table]);
-    $export_tables[$table] = $files[$schema['module']]->info['name'] . ' (' . $table . ')';
+    $export_tables[$table] = $files[$schemas[$table]['module']]->info['name'] . ' (' . $table . ')';
   }
 
   foreach ($export_tables as $table => $table_title) {
@@ -268,7 +313,7 @@ function _drush_ctools_selection_screen() {
     // Present the tables choice.
     $table_rows = array();
     foreach ($build as $table => $info) {
-      $table_rows[$table] = $info['title'] . ' (' . dt($info['count']) . ')';
+      $table_rows[$table] = $info['title'] . ' (' . $info['count'] . ')';
     }
     $table_choice = drush_choice($table_rows, dt('Select a table. Select cancel to start writing files.'));
 
@@ -305,7 +350,7 @@ function _drush_ctools_selection_screen() {
  * @param $path
  *   Path to directory in which to remove files.
  */
-function _drush_ctools_file_delete($path) {
+function _ctools_drush_file_delete($path) {
   if (is_dir($path)) {
     $files = new DirectoryIterator($path);
     foreach ($files as $fileInfo) {
@@ -320,74 +365,40 @@ function _drush_ctools_file_delete($path) {
  * Drush callback: Export info.
  *
  * @params $table_names
- *  Each argument will be taken as a CTools exportable table name.
+ *   Each argument will be taken as a CTools exportable table name.
  */
-function drush_ctools_export_info() {
+function ctools_drush_export_info() {
   // Collect array of table names from args.
   $table_names = func_get_args();
 
   // Get format option to allow for alternative output.
   $format = drush_get_option('format', FALSE);
   $tables_only = drush_get_option('tables-only', FALSE);
-  $show_overridden = drush_get_option('overridden', FALSE);
-  $show_enabled = drush_get_option('enabled', FALSE);
-  $show_disabled = drush_get_option('disabled', FALSE);
-  $show_database_only = drush_get_option('database', FALSE);
+  $filter = drush_get_option('filter', FALSE);
+  $export_module = drush_get_option('module', FALSE);
 
-  // Only load exportable objects for each type fully if we need to.
-  $load = ($show_overridden || $show_enabled || $show_disabled || $show_database_only) ? TRUE : FALSE;
+  $load = (bool) $filter || $export_module;
 
-  // Get info on these tables, or all if none specified.
-  $exportables = _drush_ctools_export_info($table_names, $load);
+  // Get info on these tables, or all tables if none specified.
+  $info = _ctools_drush_export_info($table_names, $load);
+  $exportables = $info['exportables'];
 
   if (empty($exportables)) {
     drush_log(dt('There are no exportables available.'), 'warning');
     return;
   }
 
-  // The order of these conditionals set a hierarchy for options if there are mulitple.
-  // Show enabled exportables only.
-  if ($show_enabled) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (_ctools_drush_object_is_disabled($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
-  }
-  // Show disabled exportables only.
-  elseif ($show_disabled) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (!_ctools_drush_object_is_disabled($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
-  }
-  // Show overridden exportables only.
-  elseif ($show_overridden) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (!_ctools_drush_object_is_overridden($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
+  // Filter by export module.
+  if (is_string($export_module)) {
+    $exportables = _ctools_drush_export_module_filter($exportables, $export_module);
   }
-  // Show database only exportables.
-  elseif ($show_database_only) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (!_ctools_drush_object_is_db_only($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
+
+  if (empty($exportables)) {
+    drush_log(dt('There are no exportables matching this criteria.'), 'notice');
+    return;
   }
 
-  $exportables = array_filter($exportables);
+  $exportable_counts = _ctools_drush_count_exportables($exportables);
 
   // Only use array keys if --tables-only option is set.
   if ($tables_only) {
@@ -396,7 +407,12 @@ function drush_ctools_export_info() {
 
   // Use format from --format option if it's present, and send to drush_format.
   if ($format) {
-    drush_print(drush_format($exportables, NULL, $format));
+    // Create array with all exportable info and counts in one.
+    $output = array(
+      'exportables' => $exportables,
+      'count' => $exportable_counts,
+    );
+    drush_print(drush_format($output, NULL, $format));
   }
   // Build a tabular output as default.
   else {
@@ -416,19 +432,22 @@ function drush_ctools_export_info() {
       }
     }
     if (!empty($rows)) {
+      drush_print("\n");
       array_unshift($rows, $header);
-      drush_print_table($rows, TRUE);
-    }
-    else {
-      drush_log(dt('There are no exportables matching this criteria.'), 'notice');
+      drush_print_table($rows, TRUE, array(20));
+      drush_print(dt('Total exportables found: !total', array('!total' => $exportable_counts['total'])));
+      foreach ($exportable_counts['exportables'] as $table_name => $count) {
+        drush_print(dt('!table_name (!count)', array('!table_name' => $table_name, '!count' => $count)), 2);
+      }
+      drush_print("\n");
     }
   }
 }
-
 /**
- * Drush callback: Acts as the hub for all op commands to keep all arg handling etc in one place.
+ * Drush callback: Acts as the hub for all op commands to keep
+ * all arg handling etc in one place.
  */
-function drush_ctools_export_op_command() {
+function ctools_drush_export_op_command() {
   // Get all info for the current drush command.
   $command = drush_get_command();
   $op = '';
@@ -453,17 +472,34 @@ function drush_ctools_export_op_command() {
     return;
   }
 
-  $args = func_get_args();
-  // Table name should always be first arg...
-  $table_name = array_shift($args);
-  // Any additional args are assumed to be exportable names.
-  $object_names = $args;
+  if (drush_get_option('all', FALSE)) {
+    $info = _ctools_drush_export_info('', TRUE);
+    $exportable_info = $info['exportables'];
 
-  // Return any exportables based on table name, object names, options.
-  $exportables = _drush_ctools_export_op_command_logic($op, $table_name, $object_names);
+    $all = drush_confirm(dt('Are you sure you would like to !op all exportables on the system?',
+      array('!op' => _ctools_drush_export_op_alias($op))));
 
-  if ($exportables) {
-    drush_ctools_export_op($op, $table_name, $exportables);
+    if ($all && $exportable_info) {
+      foreach ($exportable_info as $table => $exportables) {
+        if (!empty($exportables)) {
+          ctools_drush_export_op($op, $table, $exportables);
+        }
+      }
+    }
+  }
+  else {
+    $args = func_get_args();
+    // Table name should always be first arg...
+    $table_name = array_shift($args);
+    // Any additional args are assumed to be exportable names.
+    $object_names = $args;
+
+    // Return any exportables based on table name, object names, options.
+    $exportables = _ctools_drush_export_op_command_logic($op, $table_name, $object_names);
+
+    if ($exportables) {
+      ctools_drush_export_op($op, $table_name, $exportables);
+    }
   }
 }
 
@@ -476,10 +512,10 @@ function drush_ctools_export_op_command() {
  * @param $exportables
  *
  */
-function drush_ctools_export_op($op = '', $table_name = '', $exportables = NULL) {
+function ctools_drush_export_op($op = '', $table_name = '', $exportables = NULL) {
   $objects = ctools_export_crud_load_multiple($table_name, array_keys($exportables));
 
-  $function = '_drush_ctools_export_' . $op;
+  $function = '_ctools_drush_export_' . $op;
   if (function_exists($function)) {
     foreach ($objects as $object) {
       $function($table_name, $object);
@@ -500,27 +536,27 @@ function drush_ctools_export_op($op = '', $table_name = '', $exportables = NULL)
  * @param $object_names
  *
  * @return
- *  Array of exportable objects (filtered if necessary, by name etc..) or FALSE if not.
+ *    Array of exportable objects (filtered if necessary, by name etc..) or FALSE if not.
  */
-function _drush_ctools_export_op_command_logic($op = '', $table_name = NULL, $object_names = array()) {
+function _ctools_drush_export_op_command_logic($op = '', $table_name = NULL, array $object_names = array()) {
   if (!$table_name) {
-    drush_log(dt('Exportable table name empty.'), 'error');
+    drush_log(dt('Exportable table name empty. Use the --all command if you want to perform this operation on all tables.'), 'error');
     return FALSE;
   }
 
   // Get export info based on table name.
-  $info = _drush_ctools_export_info(array($table_name));
+  $info = _ctools_drush_export_info(array($table_name), TRUE);
 
-  if (!isset($info[$table_name])) {
+  if (!isset($info['exportables'][$table_name])) {
     drush_log(dt('Exportable table name not found.'), 'error');
     return FALSE;
   }
 
-  $exportables = $info[$table_name];
+  $exportables = &$info['exportables'];
 
   if (empty($object_names)) {
     $all = drush_confirm(dt('No object names entered. Would you like to try and !op all exportables of type !type',
-      array('!op' => _drush_ctools_export_op_aliases($op), '!type' => $table_name)));
+      array('!op' => _ctools_drush_export_op_alias($op), '!type' => $table_name)));
     if (!$all) {
       drush_log(dt('Command cancelled'), 'success');
       return FALSE;
@@ -530,20 +566,26 @@ function _drush_ctools_export_op_command_logic($op = '', $table_name = NULL, $ob
     // Iterate through object names and check they exist in exportables array.
     // Log error and unset them if they don't.
     foreach ($object_names as $object_name) {
-      if (!isset($exportables[$object_name])) {
+      if (!isset($exportables[$table_name][$object_name])) {
         drush_log(dt('Invalid exportable: !exportable', array('!exportable' => $object_name)), 'error');
-        unset($object_names[$object_name]);
+        unset($object_names[$table_name][$object_name]);
       }
     }
     // Iterate through exportables to get just a list of selected ones.
-    foreach (array_keys($exportables) as $exportable) {
+    foreach (array_keys($exportables[$table_name]) as $exportable) {
       if (!in_array($exportable, $object_names)) {
-        unset($exportables[$exportable]);
+        unset($exportables[$table_name][$exportable]);
       }
     }
   }
 
-  return $exportables;
+  $export_module = drush_get_option('module', FALSE);
+
+  if (is_string($export_module)) {
+    $exportables = _ctools_drush_export_module_filter($exportables, $export_module);
+  }
+
+  return $exportables[$table_name];
 }
 
 /**
@@ -551,15 +593,15 @@ function _drush_ctools_export_op_command_logic($op = '', $table_name = NULL, $ob
  * ctools_export_get_schemas().
  *
  * @param $table_names
- *  Array of table names to return.
+ *   Array of table names to return.
  * @param $load
- *  (bool) should ctools exportable objects be loaded for each type.
- *  The default behaviour will load just a list of exportable names.
+ *   (bool) should ctools exportable objects be loaded for each type.
+ *   The default behaviour will load just a list of exportable names.
  *
  * @return
- *  Nested arrays of available exportables, keyed by table name.
+ *   Nested arrays of available exportables, keyed by table name.
  */
-function _drush_ctools_export_info($table_names = array(), $load = FALSE) {
+function _ctools_drush_export_info(array $table_names = array(), $load = FALSE) {
   ctools_include('export');
   // Get available schemas that declare exports.
   $schemas = ctools_export_get_schemas(TRUE);
@@ -592,7 +634,12 @@ function _drush_ctools_export_info($table_names = array(), $load = FALSE) {
     }
   }
 
-  return $exportables;
+  if ($load) {
+    $filter = drush_get_option('filter', FALSE);
+    $exportables = _ctools_drush_filter_exportables($exportables, $filter);
+  }
+
+  return array('exportables' => $exportables, 'schemas' => $schemas);
 }
 
 /*
@@ -601,12 +648,12 @@ function _drush_ctools_export_info($table_names = array(), $load = FALSE) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_view($table_name, $object) {
+function _ctools_drush_export_view($table_name, $object) {
   $indent = drush_get_option('indent', '');
   $no_colour = drush_get_option('no-colour', FALSE);
   $export = ctools_export_crud_export($table_name, $object, $indent);
   if ($no_colour) {
-    drush_print($export);
+    drush_print("\n$export");
   }
   else {
     drush_print(shellColours::getColouredOutput("\n$export", 'light_green'));
@@ -619,14 +666,16 @@ function _drush_ctools_export_view($table_name, $object) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_delete($table_name, $object) {
+function _ctools_drush_export_delete($table_name, $object) {
+  $name = _ctools_drush_get_export_name($table_name, $object);
+
   if (_ctools_drush_object_is_overridden($object)) {
     // Remove from db.
     ctools_export_crud_delete($table_name, $object);
-    drush_log("Reverted object: $object->name", 'success');
+    drush_log("Reverted object: $name", 'success');
   }
   else {
-    drush_log("Nothing to revert for: $object->name", 'notice');
+    drush_log("Nothing to revert for: $name", 'notice');
   }
 }
 
@@ -636,14 +685,17 @@ function _drush_ctools_export_delete($table_name, $object) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_enable($table_name, $object) {
+function _ctools_drush_export_enable($table_name, $object) {
+  $name = _ctools_drush_get_export_name($table_name, $object);
+
   if (_ctools_drush_object_is_disabled($object)) {
+
     // Enable object.
     ctools_export_crud_enable($table_name, $object);
-    drush_log("Enabled object: $object->name", 'success');
+    drush_log("Enabled object: $name", 'success');
   }
   else {
-    drush_log("$object->name is already Enabled", 'notice');
+    drush_log("$name is already Enabled", 'notice');
   }
 }
 
@@ -653,64 +705,216 @@ function _drush_ctools_export_enable($table_name, $object) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_disable($table_name, $object) {
+function _ctools_drush_export_disable($table_name, $object) {
+  $name = _ctools_drush_get_export_name($table_name, $object);
+
   if (!_ctools_drush_object_is_disabled($object)) {
     // Disable object.
     ctools_export_crud_disable($table_name, $object);
-    drush_log("Disabled object: $object->name", 'success');
+    drush_log("Disabled object: $name", 'success');
   }
   else {
-    drush_log("$object->name is already disabled", 'notice');
+    drush_log("$name is already disabled", 'notice');
+  }
+}
+
+/**
+ * Filter a nested array of exportables by export module.
+ *
+ * @param $exportables array
+ *   Passed by reference. A nested array of exportables, keyed by table name.
+ * @param $export_module string
+ *   The name of the export module providing the exportable.
+ */
+function _ctools_drush_export_module_filter($exportables, $export_module) {
+  $module_list = module_list();
+
+  if (!isset($module_list[$export_module])) {
+    drush_log(dt('Invalid export module: !export_module', array('!export_module' => $export_module)), 'error');
+  }
+
+  foreach ($exportables as $table => $objects) {
+    foreach ($objects as $key => $object) {
+      if (empty($object->export_module) || ($object->export_module !== $export_module)) {
+        unset($exportables[$table][$key]);
+      }
+    }
   }
+
+  return array_filter($exportables);
 }
 
 /**
- * Helper to determine if an object is disabled.
+ * Gets the key for an exportable type.
  *
+ * @param $table_name
+ *   The exportable table name.
  * @param $object
- *  Loaded CTools exportable object.
+ *   The exportable object.
  *
- * @return TRUE or FALSE
+ * @return string
+ *   The key defined in the export schema data.
  */
-function _ctools_drush_object_is_disabled($object) {
-  return (isset($object->disabled) && ($object->disabled == TRUE)) ? TRUE : FALSE;
+function _ctools_drush_get_export_name($table_name, $object) {
+  $info = _ctools_drush_export_info(array($table_name));
+  $key = $info['schemas'][$table_name]['export']['key'];
+  return $object->{$key};
 }
 
 /**
- * Helper to determine if an object is overridden.
+ * Determine if an object is disabled.
  *
  * @param $object
- *  Loaded CTools exportable object.
+ *   Loaded CTools exportable object.
  *
  * @return TRUE or FALSE
  */
+function _ctools_drush_object_is_disabled($object) {
+  return (isset($object->disabled) && ($object->disabled == TRUE)) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is enabled.
+ *
+ * @see _ctools_drush_object_is_disabled.
+ */
+function _ctools_drush_object_is_enabled($object) {
+  return (empty($object->disabled)) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is overridden.
+ */
 function _ctools_drush_object_is_overridden($object) {
-  return ($object->export_type == 3) ? TRUE : FALSE;
+  $status = EXPORT_IN_CODE + EXPORT_IN_DATABASE;
+  return ($object->export_type == $status) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is not overridden.
+ */
+function _ctools_drush_object_is_not_overridden($object) {
+  $status = EXPORT_IN_CODE + EXPORT_IN_DATABASE;
+  return ($object->export_type == $status) ? FALSE : TRUE;
+}
+
+/**
+ * Determine if an object is only in the db.
+ */
+function _ctools_drush_object_is_db_only($object) {
+  return ($object->export_type == EXPORT_IN_DATABASE) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is not in the db.
+ */
+function _ctools_drush_object_is_not_db_only($object) {
+  return ($object->export_type == EXPORT_IN_DATABASE) ? FALSE : TRUE;
+}
+
+/**
+ * Determine if an object is a code only default.
+ */
+function _ctools_drush_object_is_code_only($object) {
+  return ($object->export_type == EXPORT_IN_CODE) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is not a code only default.
+ */
+function _ctools_drush_object_is_not_code_only($object) {
+  return ($object->export_type == EXPORT_IN_CODE) ? FALSE : TRUE;
 }
 
 /**
- * Helper to determine if an object is only in the db.
+ * Return an array of count information based on exportables array.
  *
- * @param $object
- *  Loaded CTools exportable object.
+ * @param $exportables
+ *   Array of exportables to count.
  *
- * @return TRUE or FALSE
+ * @return
+ *    Array of count data containing the following:
+ *     'total' - A total count of all exportables.
+ *     'exportables' - An array of exportable counts per table.
  */
-function _ctools_drush_object_is_db_only($object) {
-  return ($object->export_type == 1) ? TRUE : FALSE;
+function _ctools_drush_count_exportables($exportables) {
+  $count = array('exportables' => array());
+
+  foreach ($exportables as $table => $objects) {
+    // Add the object count for each table.
+    $count['exportables'][$table] = count($objects);
+  }
+
+  // Once all tables have been counted, total these up.
+  $count['total'] = array_sum($count['exportables']);
+
+  return $count;
 }
 
 /**
- * Return any aliases for an op, that will be used to show as output.
+ * Filters a collection of exportables based on filters.
+ *
+ * @param $exportables
+ * @param $filter
+ */
+function _ctools_drush_filter_exportables($exportables, $filter) {
+  $eval = FALSE;
+
+  if (is_string($filter)) {
+    switch ($filter) {
+      // Show enabled exportables only.
+      case 'enabled':
+        $eval = '_ctools_drush_object_is_disabled';
+      break;
+      // Show disabled exportables only.
+      case 'disabled':
+        $eval = '_ctools_drush_object_is_enabled';
+      break;
+      // Show overridden exportables only.
+      case 'overridden':
+        $eval = '_ctools_drush_object_is_not_overridden';
+      break;
+      // Show database only exportables.
+      case 'database':
+        $eval = '_ctools_drush_object_is_not_db_only';
+      break;
+      // Show code only exportables.
+      case 'code':
+        $eval = '_ctools_drush_object_is_not_code_only';
+      break;
+      // Do nothing.
+      case 'all':
+        break;
+      default:
+        drush_log(dt('Invalid filter option. Available options are: enabled, disabled, overridden, database, and code.'), 'error');
+        return;
+    }
+
+    if ($eval) {
+      foreach ($exportables as $table => $objects) {
+        foreach ($objects as $key => $object) {
+          if ($eval($object)) {
+            unset($exportables[$table][$key]);
+          }
+        }
+      }
+    }
+  }
+
+  return array_filter($exportables);
+}
+
+/**
+ * Return an alias for an op, that will be used to show as output.
  * For now, this is mainly necessary for delete => revert alias.
  *
  * @param $op
- *  The op name. Such as 'enable', 'disable', or 'delete'.
+ *   The op name. Such as 'enable', 'disable', or 'delete'.
  *
  * @return
- *  The matched alias value or the original $op passed in if not found.
+ *   The matched alias value or the original $op passed in if not found.
  */
-function _drush_ctools_export_op_aliases($op) {
+function _ctools_drush_export_op_alias($op) {
   $aliases = array(
     'delete' => 'revert',
   );
@@ -723,6 +927,25 @@ function _drush_ctools_export_op_aliases($op) {
 }
 
 /**
+ * Convert the drush options from a csv list into an array.
+ *
+ * @param $drush_option
+ *   The drush option name to invoke.
+ *
+ * @return
+ *   Exploded array of options.
+ */
+function _ctools_drush_explode_options($drush_option) {
+  $options = drush_get_option($drush_option, array());
+  if (!empty($options)) {
+    $options = explode(',', $options);
+    return array_map('trim', $options);
+  }
+
+  return $options;
+}
+
+/**
  * Class to deal with wrapping output strings with
  * colour formatting for the shell.
  */
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/about.html b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/about.html
index 8184565..30b64c2 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/about.html
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/about.html
@@ -1,28 +1,28 @@
-<p>The Chaos Tool Suite is a series of tools for developers to make code that I've found to be very useful to Views and Panels more readily available. Certain methods of doing things, particularly with AJAX, exportable objects, and a plugin system are proving to be ideas that are useful outside of just Views and Panels. This module does not offer much directly ot the end user, but instead creates a library for other modules to use. If you are an end user and some module asked you to install the CTools suite, then this is far as you really need to go. If you're a developer and are interested in these tools, read on!</p>
+<p>The Chaos Tool Suite is a series of tools for developers to make code that I've found to be very useful to Views and Panels more readily available. Certain methods of doing things, particularly with AJAX, exportable objects and a plugin system, are proving to be ideas that are useful outside of just Views and Panels. This module does not offer much directly to the end user, but instead, creates a library for other modules to use. If you are an end user and some module asked you to install the CTools suite, then this is far as you really need to go. If you're a developer and are interested in these tools, read on!</p>
 
 <h2>Tools provided by CTools</h2>
 
 <dl>
 <dt><a href="&topic:ctools/plugins&">Plugins</a></dt>
-<dd>The plugins tool allows a module to allow <b>other</b> modules (and themes!) to provide plugins which provide some kind of functionality or some kind of task. For example, in Panels there are several types of plugins: Content types (which are like blocks), layouts (which are page layouts) and styles (which can be used to style a panel). Each plugin is represented by a .inc file, and the functionaly they offer can differ wildly.
+<dd>The plugins tool allows a module to allow <b>other</b> modules (and themes!) to provide plugins which provide some kind of functionality or some kind of task. For example, in Panels there are several types of plugins: Content types (which are like blocks), layouts (which are page layouts) and styles (which can be used to style a panel). Each plugin is represented by a .inc file, and the functionality they offer can differ wildly.</dd>
 
 <dt><a href="&topic:ctools/context&">Context</a></dt>
 <dd>Context is the idea that the objects that are used in page generation have more value than simply creating a single piece of output. Instead, contexts can be used to create multiple pieces of content that can all be put onto the page. Additionally, contexts can be used to derive other contexts via relationships, such as determining the node author and displaying data about the new context.</dd>
 
 <dt><a href="&topic:ctools/ajax&">AJAX Tools</a></dt>
-<dd>AJAX (also known as AHAH) is a method of allowing the browser and the server to communicate without requiring a page refresh. It can be used to create complicated interactive forms, but it is somewhat difficult to integrate into Drupal's Form API. These tools make it easier to accomplish this goal. In addition, CTools provides a few other javascript helpers, such as a modal dialog, a collapsible div, a simple dropdown and dependent checkboxes.
+<dd>AJAX (also known as AHAH) is a method of allowing the browser and the server to communicate without requiring a page refresh. It can be used to create complicated interactive forms, but it is somewhat difficult to integrate into Drupal's Form API. These tools make it easier to accomplish this goal. In addition, CTools provides a few other javascript helpers, such as a modal dialog, a collapsible div, a simple dropdown and dependent checkboxes.</dd>
 
 <dt><a href="&topic:ctools/css&">CSS scrubbing and caching</a></dt>
-<dd>Drupal comes with a fantastic array of tools to ensure HTML is safe to output, but does not contain any similar tools for CSS. CTools provides a small tool to sanitize CSS so that user-input CSS code can still be safely used. It also provides a method for caching CSS for better performance.</dd>
+<dd>Drupal comes with a fantastic array of tools to ensure HTML is safe to output but does not contain any similar tools for CSS. CTools provides a small tool to sanitize CSS, so user-input CSS code can still be safely used. It also provides a method for caching CSS for better performance.</dd>
 
 <dt><a href="&topic:ctools/export&">Exportable objects</a></dt>
-<dd>Views and Panels both use objects that can either be in code or in the database, and the object can be exported into a piece of PHP code so that it can be moved from site to site or out of the database entirely. This library abstracts that so that other modules can use this same concept for their data.</dd>
+<dd>Views and Panels both use objects that can either be in code or in the database, and the objects can be exported into a piece of PHP code, so they can be moved from site to site or out of the database entirely. This library abstracts that functionality, so other modules can use this same concept for their data.</dd>
 
 <dt><a href="&topic:ctools/form&">Form tools</a></dt>
 <dd>Drupal 6's FAPI really improved over Drupal 5, and made a lot of things possible. Still, it missed a few items that were needed to make form wizards and truly dynamic AJAX forms possible. CTools includes a replacement for drupal_get_form() that has a few more options and allows the caller to examine the $form_state once the form has completed.</dd>
 
 <dt><a href="&topic:ctools/wizard&">Form wizards</a></dt>
-<dd>Finally! An easy way to have form wizards, which is any 'form' which is actually a string of forms that build up to a final conclusion. The form wizard supports a single entry point, the ability to choose whether or not the user can go forward/back/up on the form and easy callbacks to handle the difficult job of dealing with data in between forms.</dd>
+<dd>Finally! An easy way to have form wizards, which is any 'form' that is actually a string of forms that build up to a final conclusion. The form wizard supports a single entry point, the ability to choose whether or not the user can go forward/back/up on the form and easy callbacks to handle the difficult job of dealing with data in between forms.</dd>
 
 <dt><a href="&topic:ctools/object-cache&">Temporary object cache</a></dt>
 <dd>For normal forms, all of the data needed for an object is stored in the form so that the browser handles a lot of the work. For multi-step and ajax forms, however, this is impractical, and letting the browser store data can be insecure. The object cache provides a non-volatile location to store temporary data while the form is being worked on. This is much safer than the standard Drupal caching mechanism, which is volatile, meaning it can be cleared at any time and any system using it must be capable of recreating the data that was there. This system also allows for object locking, since any object which has an item in the cache from another person can be assumed to be 'locked for editing'.</dd>
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/export.html b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/export.html
index 57ccd93..3a774e8 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/export.html
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/export.html
@@ -112,7 +112,7 @@ function mymodule_schema() {
 <dd>Human readable title of the export key. Defaults to 'Name'. Because the schema is cached, do not translate this. It must instead be translated when used.</dd>
 
 <dt>primary key</dt>
-<dd>Objects should contain a primary key which is a database identifier primarily used to determine if an object has been written or not. This is required for the default CRUD save callback to work.</dd>
+<dd>A single field within the table that is to be used as the main identifier to discern whether or not the object has been written. As the schema definition's primary key value will be used by default, it is not usually necessary to define this.</dd>
 
 <dt>object</dt>
 <dd>The class the object should be created as, if 'object factory' is not set. If this is not set either, defaults as stdClass.</dd>
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/object-cache.html b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/object-cache.html
index 7e31c74..801a836 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/object-cache.html
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/object-cache.html
@@ -16,7 +16,7 @@ ctools_include('object-cache');
  * will not result in multiple database reads.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
@@ -34,7 +34,7 @@ function ctools_object_cache_get($obj, $name, $skip_cache = FALSE) {
  * Store an object in the non-volatile ctools cache.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
@@ -49,7 +49,7 @@ function ctools_object_cache_set($obj, $name, $cache) {
  * Remove an object from the non-volatile ctools cache
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
@@ -67,7 +67,7 @@ function ctools_object_cache_clear($obj, $name) {
  * modify them.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
@@ -89,7 +89,7 @@ function ctools_object_cache_test($obj, $name) {
  * This is useful for clearing a lock.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/plugins-implementing.html b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/plugins-implementing.html
index ea62aa2..070f08d 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/plugins-implementing.html
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/help/plugins-implementing.html
@@ -56,4 +56,6 @@ $plugin = array(
 
 <p>Several values will be filled in for you automatically, but you can override them if necessary. They include 'name', 'path', 'file' and 'module'. Additionally, the plugin can owner can provide other defaults as well.</p>
 
+<p>There are no required keys by the plugin system itself. The only requirements in the $plugin array will be defined by the plugin type.</p>
+
 <p>After this array, if your plugin needs functions, they can be declared. Different plugin types have different needs here, so exactly what else will be needed will change from type to type.</p>
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/cleanstring.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/cleanstring.inc
index 530fc0f..56b3e36 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/cleanstring.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/cleanstring.inc
@@ -58,10 +58,9 @@ define('CTOOLS_PREG_CLASS_ALNUM',
 '\x{2ce5}-\x{2cff}\x{2d6f}\x{2e00}-\x{3005}\x{3007}-\x{303b}\x{303d}-\x{303f}' .
 '\x{3099}-\x{309e}\x{30a0}\x{30fb}-\x{30fe}\x{3190}-\x{319f}\x{31c0}-\x{31cf}' .
 '\x{3200}-\x{33ff}\x{4dc0}-\x{4dff}\x{a015}\x{a490}-\x{a716}\x{a802}\x{a806}' .
-'\x{a80b}\x{a823}-\x{a82b}\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}\x{fd3f}\x{fdfc}-' .
-'\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}\x{ff5b}-\x{ff65}' .
-'\x{ff70}\x{ff9e}\x{ff9f}\x{ffe0}-\x{fffd}');
-
+'\x{a80b}\x{a823}-\x{a82b}\x{e000}-\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}\x{fd3f}' .
+'\x{fdfc}-\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}\x{ff5b}-' .
+'\x{ff65}\x{ff70}\x{ff9e}\x{ff9f}\x{ffe0}-\x{fffd}');
 
 /**
  * Clean up a string value provided by a module.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/content.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/content.inc
index 134c951..890ec23 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/content.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/content.inc
@@ -458,9 +458,12 @@ function ctools_content_admin_info($type, $subtype, $conf, $context = NULL) {
   if ($function = ctools_plugin_get_function($plugin, 'admin info')) {
     $output = $function($subtype, $conf, $context);
   }
+
   if (empty($output) || !is_object($output)) {
     $output = new stdClass();
-    $output->title = t('No info');
+    // replace the _ with " " for a better output
+    $subtype = check_plain(str_replace("_", " ", $subtype));
+    $output->title = $subtype;
     $output->content = t('No info available.');
   }
   return $output;
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-admin.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-admin.inc
index aeb7270..7e5cd02 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-admin.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-admin.inc
@@ -636,8 +636,8 @@ function ctools_context_get_defaults($plugin_definition, $object, $type) {
     'name' => $plugin_definition['name'],
   );
 
-  if (isset($plugin['defaults'])) {
-    $defaults = $plugin['defaults'];
+  if (isset($plugin_definition['defaults'])) {
+    $defaults = $plugin_definition['defaults'];
   }
   else if (isset($subtype['defaults'])) {
     $defaults = $subtype['defaults'];
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-task-handler.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-task-handler.inc
index 3735870..10fd793 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-task-handler.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context-task-handler.inc
@@ -66,9 +66,9 @@ function ctools_context_handler_get_render_handler($task, $subtask, $handlers, $
       // If not, if it's a 'context' type handler, use the default tester.
       if ($plugin['handler type'] == 'context') {
         $test = ctools_context_handler_default_test($handler, $contexts, $args);
-      }
-      if ($test) {
-        return $id;
+        if ($test) {
+          return $id;
+        }
       }
     }
   }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context.inc
index cc6d39c..720a6fc 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/context.inc
@@ -509,7 +509,7 @@ function ctools_context_get_all_converters() {
 /**
  * Let the context convert an argument based upon the converter that was given.
  */
-function ctools_context_convert_context($context, $converter) {
+function ctools_context_convert_context($context, $converter, $converter_options = array()) {
   // Contexts without plugins might be optional placeholders.
   if (empty($context->plugin)) {
     return;
@@ -518,12 +518,12 @@ function ctools_context_convert_context($context, $converter) {
   $value = $context->argument;
   $plugin = ctools_get_context($context->plugin);
   if ($function = ctools_plugin_get_function($plugin, 'convert')) {
-    $value = $function($context, $converter);
+    $value = $function($context, $converter, $converter_options);
   }
 
   foreach (module_implements('ctools_context_converter_alter') as $module) {
     $function = $module . '_ctools_context_converter_alter';
-    $function($context, $converter, $value);
+    $function($context, $converter, $value, $converter_options);
   }
 
   return $value;
@@ -619,7 +619,7 @@ function ctools_context_create_empty($type) {
 /**
  * Perform keyword and context substitutions.
  */
-function ctools_context_keyword_substitute($string, $keywords, $contexts) {
+function ctools_context_keyword_substitute($string, $keywords, $contexts, $converter_options = array()) {
   // Ensure a default keyword exists:
   $keywords['%%'] = '%';
 
@@ -666,7 +666,7 @@ function ctools_context_keyword_substitute($string, $keywords, $contexts) {
         $keywords['%' . $keyword] = '';
       }
       else if (!empty($converter)) {
-        $keywords['%' . $keyword] = ctools_context_convert_context($context_keywords[$context], $converter);
+        $keywords['%' . $keyword] = ctools_context_convert_context($context_keywords[$context], $converter, $converter_options);
       }
       else {
         $keywords['%' . $keyword] = $context_keywords[$keyword]->title;
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/css.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/css.inc
index 29ac2ec..8bc4c66 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/css.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/css.inc
@@ -285,7 +285,8 @@ function ctools_css_disassemble($css) {
   // Remove comments.
   $css = preg_replace("/\/\*(.*)?\*\//Usi", "", $css);
   // Split out each statement
-  $statements = explode("}", $css);
+  $statements = preg_split('/[;}]/', $css);
+
   // If we have any statements, parse them.
   if (!empty($statements)) {
     // Iterate through all of the statements.
@@ -306,7 +307,10 @@ function ctools_css_disassemble($css) {
       }
 
       // Disassemble the declaration, check it and tuck it into an array.
-      $disassembled_css[$selector_str] = _ctools_css_disassemble_declaration($declaration);
+      if (!isset($disassembled_css[$selector_str])) {
+        $disassembled_css[$selector_str] = array();
+      }
+      $disassembled_css[$selector_str] += _ctools_css_disassemble_declaration($declaration);
     }
   }
   return $disassembled_css;
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/export-ui.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/export-ui.inc
index 89b6d16..16e57d6 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/export-ui.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/export-ui.inc
@@ -19,6 +19,7 @@ function ctools_export_ui_process(&$plugin, $info) {
     'export' => array(),
     'allowed operations' => array(),
     'menu' => array(),
+    'redirect' => array(),
     'form' => array(),
     'strings' => array(),
     'list' => NULL,
@@ -115,171 +116,176 @@ function ctools_export_ui_process(&$plugin, $info) {
   );
 
   $plugin['menu']['items'] += array(
-    'list callback' => array(
-      'path' => '',
-      // Menu items are translated by the menu system.
-      // TODO: We need more flexibility in title. The title of the admin page
-      // is not necessarily the title of the object, plus we need
-      // plural, singular, proper, not proper, etc.
-      'title' => $plugin['menu']['menu title'],
-      'description' => $plugin['menu']['menu description'],
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'list'),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'list'),
-      'type' => MENU_NORMAL_ITEM,
-    ),
-    'list' => array(
-      'path' => 'list',
-      'title' => 'List',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'list'),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'list'),
-      'type' => MENU_DEFAULT_LOCAL_TASK,
-      'weight' => -10,
-    ),
-    'add' => array(
-      'path' => 'add',
-      'title' => 'Add',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'add'),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'add'),
-      'type' => MENU_LOCAL_ACTION,
-    ),
-    'edit callback' => array(
-      'path' => 'list/%ctools_export_ui',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'load arguments' => array($plugin['name']),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'type' => MENU_CALLBACK,
-    ),
-    'edit' => array(
-      'path' => 'list/%ctools_export_ui/edit',
-      'title' => 'Edit',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'load arguments' => array($plugin['name']),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'type' => MENU_DEFAULT_LOCAL_TASK,
-      'weight' => -10,
-    ),
+    'list callback' => array(),
+    'list' => array(),
+    'add' => array(),
+    'edit callback' => array(),
+    'edit' => array(),
+  );
+
+  $plugin['menu']['items']['list callback'] += array(
+    'path' => '',
+    // Menu items are translated by the menu system.
+    // TODO: We need more flexibility in title. The title of the admin page
+    // is not necessarily the title of the object, plus we need
+    // plural, singular, proper, not proper, etc.
+    'title' => $plugin['menu']['menu title'],
+    'description' => $plugin['menu']['menu description'],
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'list'),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'list'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+
+  $plugin['menu']['items']['list'] += array(
+    'path' => 'list',
+    'title' => 'List',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'list'),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'list'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $plugin['menu']['items']['add'] += array(
+    'path' => 'add',
+    'title' => 'Add',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'add'),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'add'),
+    'type' => MENU_LOCAL_ACTION,
+  );
+
+  $plugin['menu']['items']['edit callback'] += array(
+    'path' => 'list/%ctools_export_ui',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'load arguments' => array($plugin['name']),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'type' => MENU_CALLBACK,
+  );
+
+  $plugin['menu']['items']['edit'] += array(
+    'path' => 'list/%ctools_export_ui/edit',
+    'title' => 'Edit',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'load arguments' => array($plugin['name']),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
   );
 
   if ($plugin['allowed operations']['import']) {
-    $plugin['menu']['items'] += array(
-      'import' => array(
-        'path' => 'import',
-        'title' => 'Import',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'import'),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'import'),
-        'type' => MENU_LOCAL_ACTION,
-      ),
+    $plugin['menu']['items'] += array('import' => array());
+    $plugin['menu']['items']['import'] += array(
+      'path' => 'import',
+      'title' => 'Import',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'import'),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'import'),
+      'type' => MENU_LOCAL_ACTION,
     );
   }
 
   if ($plugin['allowed operations']['export']) {
-    $plugin['menu']['items'] += array(
-      'export' => array(
-        'path' => 'list/%ctools_export_ui/export',
-        'title' => 'Export',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'export', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'export', $prefix_count + 2),
-        'type' => MENU_LOCAL_TASK,
-      ),
+    $plugin['menu']['items'] += array('export' => array());
+    $plugin['menu']['items']['export'] += array(
+      'path' => 'list/%ctools_export_ui/export',
+      'title' => 'Export',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'export', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'export', $prefix_count + 2),
+      'type' => MENU_LOCAL_TASK,
     );
   }
 
   if ($plugin['allowed operations']['revert']) {
-    $plugin['menu']['items'] += array(
-      'revert' => array(
-        'path' => 'list/%ctools_export_ui/revert',
-        'title' => 'Revert',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        // Note: Yes, 'delete' op is correct.
-        'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'revert', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('revert' => array());
+    $plugin['menu']['items']['revert'] += array(
+      'path' => 'list/%ctools_export_ui/revert',
+      'title' => 'Revert',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      // Note: Yes, 'delete' op is correct.
+      'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'revert', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['delete']) {
-    $plugin['menu']['items'] += array(
-      'delete' => array(
-        'path' => 'list/%ctools_export_ui/delete',
-        'title' => 'Delete',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('delete' => array());
+    $plugin['menu']['items']['delete'] += array(
+      'path' => 'list/%ctools_export_ui/delete',
+      'title' => 'Delete',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['clone']) {
-    $plugin['menu']['items'] += array(
-      'clone' => array(
-        'path' => 'list/%ctools_export_ui/clone',
-        'title' => 'Clone',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('clone' => array());
+    $plugin['menu']['items']['clone'] += array(
+      'path' => 'list/%ctools_export_ui/clone',
+      'title' => 'Clone',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['enable']) {
-    $plugin['menu']['items'] += array(
-      'enable' => array(
-        'path' => 'list/%ctools_export_ui/enable',
-        'title' => 'Enable',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('enable' => array());
+    $plugin['menu']['items']['enable'] += array(
+      'path' => 'list/%ctools_export_ui/enable',
+      'title' => 'Enable',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['disable']) {
-    $plugin['menu']['items'] += array(
-      'disable' => array(
-        'path' => 'list/%ctools_export_ui/disable',
-        'title' => 'Disable',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('disable' => array());
+    $plugin['menu']['items']['disable'] += array(
+      'path' => 'list/%ctools_export_ui/disable',
+      'title' => 'Disable',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
-  // Define some redirects that should happen after edit/add/clone operations.
-  $plugin['redirect'] = array(
+  // Define some redirects that should happen after edit/add/clone/delete operations.
+  $plugin['redirect'] += array(
     'add' => $base_path,
     'clone' => $base_path,
     'edit' => $base_path,
+    'delete' => $base_path,
+    'revert' => $base_path,
     'import' => $base_path,
   );
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/object-cache.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/object-cache.inc
index 5de4df7..29225b0 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/object-cache.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/object-cache.inc
@@ -16,26 +16,33 @@
  * will not result in multiple database reads.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
  * @param $skip_cache
  *   Skip the memory cache, meaning this must be read from the db again.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  *
  * @deprecated $skip_cache is deprecated in favor of drupal_static*
  * @return
  *   The data that was cached.
  */
-function ctools_object_cache_get($obj, $name, $skip_cache = FALSE) {
+function ctools_object_cache_get($obj, $name, $skip_cache = FALSE, $sid = NULL) {
   $cache = &drupal_static(__FUNCTION__, array());
   $key = "$obj:$name";
   if ($skip_cache) {
     unset($cache[$key]);
   }
 
+  if (!$sid) {
+    $sid = session_id();
+  }
+
   if (!array_key_exists($key, $cache)) {
-    $data = db_query('SELECT * FROM {ctools_object_cache} WHERE sid = :session_id AND obj = :object AND name = :name', array(':session_id' => session_id(), ':object' => $obj, ':name' => $name))
+    $data = db_query('SELECT * FROM {ctools_object_cache} WHERE sid = :session_id AND obj = :object AND name = :name', array(':session_id' => $sid, ':object' => $obj, ':name' => $name))
       ->fetchObject();
     if ($data) {
       $cache[$key] = unserialize($data->data);
@@ -48,14 +55,17 @@ function ctools_object_cache_get($obj, $name, $skip_cache = FALSE) {
  * Store an object in the non-volatile ctools cache.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
  * @param $cache
  *   The object to be cached. This will be serialized prior to writing.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  */
-function ctools_object_cache_set($obj, $name, $cache) {
+function ctools_object_cache_set($obj, $name, $cache, $sid = NULL) {
   // Store the CTools session id in the user session to force a
   // session for anonymous users in Drupal 7 and Drupal 6 Pressflow.
   // see http://drupal.org/node/562374, http://drupal.org/node/861778
@@ -63,10 +73,15 @@ function ctools_object_cache_set($obj, $name, $cache) {
     $_SESSION['ctools_hold_session'] = TRUE;
   }
 
-  ctools_object_cache_clear($obj, $name);
+  ctools_object_cache_clear($obj, $name, $sid);
+
+  if (!$sid) {
+    $sid = session_id();
+  }
+
   db_insert('ctools_object_cache')
     ->fields(array(
-      'sid' => session_id(),
+      'sid' => $sid,
       'obj' => $obj,
       'name' => $name,
       'data' => serialize($cache),
@@ -79,14 +94,22 @@ function ctools_object_cache_set($obj, $name, $cache) {
  * Remove an object from the non-volatile ctools cache
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  */
-function ctools_object_cache_clear($obj, $name) {
+function ctools_object_cache_clear($obj, $name, $sid = NULL) {
+
+  if (!$sid) {
+    $sid = session_id();
+  }
+
   db_delete('ctools_object_cache')
-    ->condition('sid', session_id())
+    ->condition('sid', $sid)
     ->condition('obj', $obj)
     ->condition('name', $name)
     ->execute();
@@ -102,16 +125,24 @@ function ctools_object_cache_clear($obj, $name) {
  * modify them.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  *
  * @return
  *   An object containing the UID and updated date if found; NULL if not.
  */
-function ctools_object_cache_test($obj, $name) {
-  return db_query('SELECT s.uid, c.updated FROM {ctools_object_cache} c INNER JOIN {sessions} s ON c.sid = s.sid WHERE s.sid <> :session_id AND c.obj = :obj AND c.name = :name ORDER BY c.updated ASC', array(':session_id' => session_id(), ':obj' => $obj, ':name' => $name))
+function ctools_object_cache_test($obj, $name, $sid = NULL) {
+
+  if (!$sid) {
+    $sid = session_id();
+  }
+
+  return db_query('SELECT s.uid, c.updated FROM {ctools_object_cache} c INNER JOIN {sessions} s ON c.sid = s.sid WHERE s.sid <> :session_id AND c.obj = :obj AND c.name = :name ORDER BY c.updated ASC', array(':session_id' => $sid, ':obj' => $obj, ':name' => $name))
     ->fetchObject();
 }
 
@@ -122,7 +153,7 @@ function ctools_object_cache_test($obj, $name) {
  * an an administration UI.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $names
  *   An array of names of objects
@@ -141,7 +172,7 @@ function ctools_object_cache_test_objects($obj, $names) {
  * This is useful for clearing a lock.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/plugins.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/plugins.inc
index a6d4bd6..2dbdd48 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/plugins.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/plugins.inc
@@ -246,17 +246,10 @@ function ctools_get_plugins($module, $type, $id = NULL) {
     $cache = cache_get("plugins:$module:$type", $info[$module][$type]['cache table']);
 
     if (!empty($cache->data)) {
-      // Verify that the file exists as it may have been moved in a multisite environment
-      if (isset($cache->data['path'])) {
-        // Files to be registered may be in two locations. Check for both of them.
-        if ((is_array($cache->data['path']) && file_exists($cache->data['path']['file'])) ||
-           file_exists($cache->data['path'])) {
-          // Cache load succeeded so use the cached plugin list.
-          $plugins[$module][$type]   = $cache->data;
-          // Set $setup to true so we know things where loaded.
-          $setup[$module][$type]     = TRUE;
-        }
-      }
+      // Cache load succeeded so use the cached plugin list.
+      $plugins[$module][$type]   = $cache->data;
+      // Set $setup to true so we know things where loaded.
+      $setup[$module][$type]     = TRUE;
     }
     else {
       // Cache load failed so store that we need to build and write the cache.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/stylizer.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/stylizer.inc
index 1f94598..9fdc81d 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/stylizer.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/stylizer.inc
@@ -960,7 +960,7 @@ function ctools_stylizer_edit_style_form_choose_submit($form, &$form_state) {
 function ctools_stylizer_edit_style_form_default($form, &$form_state) {
   ctools_add_js('stylizer');
   ctools_add_css('stylizer');
-  drupal_add_library('system', 'drupal.farbtastic');
+  drupal_add_library('system', 'farbtastic');
 
   $plugin = &$form_state['base_style_plugin'];
   $settings = &$form_state['settings'];
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/wizard.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/wizard.inc
index 0e2e11d..946ed0f 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/wizard.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/includes/wizard.inc
@@ -256,16 +256,13 @@ function ctools_wizard_wrapper($form, &$form_state) {
 
     if (!empty($form_info['show trail'])) {
       if (!empty($form_info['free trail'])) {
-        // ctools_wizard_get_path() returns results suitable for #redirect
-        // which can only be directly used in drupal_goto. We have to futz
-        // with it.
+        // ctools_wizard_get_path() returns results suitable for
+        // $form_state['redirect] which can only be directly used in
+        // drupal_goto. We have to futz a bit with it.
         $path = ctools_wizard_get_path($form_info, $id);
         $options = array();
         if (!empty($path[1])) {
-          $options['query'] = $path[1];
-        }
-        if (!empty($path[2])) {
-          $options['fragment'] = $path[2];
+          $options = $path[1];
         }
         $title = l($title, $path[0], $options);
       }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/ajax-responder.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/ajax-responder.js
index e244106..1cad618 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/ajax-responder.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/ajax-responder.js
@@ -88,10 +88,11 @@
     var url_class = '.' + $(item).attr('id') + '-url';
     $(url_class).each(
       function() {
-        if (url && $(this).val()) {
+        var $this = $(this);
+        if (url && $this.val()) {
           url += '/';
         }
-        url += $(this).val();
+        url += $this.val();
       });
     return url;
   };
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/auto-submit.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/auto-submit.js
index bc5a58e..59178c4 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/auto-submit.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/auto-submit.js
@@ -30,8 +30,9 @@ Drupal.behaviors.CToolsAutoSubmit = {
   attach: function(context) {
     // 'this' references the form element
     function triggerSubmit (e) {
-      if (!$(this).hasClass('ctools-ajaxing')) {
-        $(this).find('.ctools-auto-submit-click').click();
+      var $this = $(this);
+      if (!$this.hasClass('ctools-ajaxing')) {
+        $this.find('.ctools-auto-submit-click').click();
       }
     }
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/collapsible-div.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/collapsible-div.js
index 363345c..da9bff9 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/collapsible-div.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/collapsible-div.js
@@ -232,11 +232,9 @@
   /**
    * Support Drupal's 'behaviors' system for binding.
    */
-  Drupal.behaviors.CToolsCollapsible = { 
+  Drupal.behaviors.CToolsCollapsible = {
     attach: function(context) {
-      $('.ctools-collapsible-container:not(.ctools-collapsible-processed)', context)
-        .each(Drupal.CTools.bindCollapsible)
-        .addClass('ctools-collapsible-processed');
+      $('.ctools-collapsible-container', context).once('ctools-collapsible', Drupal.CTools.bindCollapsible);
     }
   }
 })(jQuery);
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dependent.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dependent.js
index cca3622..07ff021 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dependent.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dependent.js
@@ -1,17 +1,15 @@
 /**
  * @file
- *
- * Written by dmitrig01 (Dmitri Gaskin) for CTools; this provides dependent
- * visibility for form items in CTools' ajax forms.
+ * Provides dependent visibility for form items in CTools' ajax forms.
  *
  * To your $form item definition add:
- * - '#process' => array('CTools_process_dependency'),
- * - Add '#dependency' => array('id-of-form-item' => array(list, of, values, that,
-     make, this, item, show),
+ * - '#process' => array('ctools_process_dependency'),
+ * - '#dependency' => array('id-of-form-item' => array(list, of, values, that,
+ *   make, this, item, show),
  *
  * Special considerations:
- * - radios are harder. Because Drupal doesn't give radio groups individual ids,
- *   use 'radio:name-of-radio'
+ * - Radios are harder. Because Drupal doesn't give radio groups individual IDs,
+ *   use 'radio:name-of-radio'.
  *
  * - Checkboxes don't have their own id, so you need to add one in a div
  *   around the checkboxes via #prefix and #suffix. You actually need to add TWO
@@ -215,8 +213,8 @@
 
       // Really large sets of fields are too slow with the above method, so this
       // is a sort of hacked one that's faster but much less flexible.
-      $("select.ctools-master-dependent:not(.ctools-processed)")
-        .addClass('ctools-processed')
+      $("select.ctools-master-dependent")
+        .once('ctools-dependent')
         .change(function() {
           var val = $(this).val();
           if (val == 'all') {
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropbutton.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropbutton.js
index 4dd20b0..49bc107 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropbutton.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropbutton.js
@@ -26,13 +26,12 @@
   Drupal.behaviors.CToolsDropbutton = {
     attach: function() {
       // Process buttons. All dropbuttons are buttons.
-      $('.ctools-button:not(.ctools-button-processed)')
-      .removeClass('ctools-no-js')
-      .addClass('ctools-button-processed');
+      $('.ctools-button')
+        .once('ctools-button')
+        .removeClass('ctools-no-js');
+
       // Process dropbuttons. Not all buttons are dropbuttons.
-      $('.ctools-dropbutton:not(.ctools-dropbutton-processed)')
-      .addClass('ctools-dropbutton-processed')
-      .each(function() {
+      $('.ctools-dropbutton').once('ctools-dropbutton', function() {
         var $dropbutton = $(this);
         var $button = $('.ctools-content', $dropbutton);
         var $secondaryActions = $('li', $button).not(':first');
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropdown.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropdown.js
index 522f4d5..c829ae2 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropdown.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/dropdown.js
@@ -24,50 +24,50 @@
 (function ($) {
   Drupal.behaviors.CToolsDropdown = {
     attach: function() {
-      $('div.ctools-dropdown:not(.ctools-dropdown-processed)')
-        .removeClass('ctools-dropdown-no-js')
-        .addClass('ctools-dropdown-processed')
-        .each(function() {
-          var $dropdown = $(this);
-          var open = false;
-          var hovering = false;
-          var timerID = 0;
+      $('div.ctools-dropdown').once('ctools-dropdown', function() {
+        var $dropdown = $(this);
+        var open = false;
+        var hovering = false;
+        var timerID = 0;
 
-          var toggle = function(close) {
-            // if it's open or we're told to close it, close it.
-            if (open || close) {
-              // If we're just toggling it, close it immediately.
-              if (!close) {
-                open = false;
-                $("div.ctools-dropdown-container", $dropdown).slideUp(100);
-              }
-              else {
-                // If we were told to close it, wait half a second to make
-                // sure that's what the user wanted.
-                // Clear any previous timer we were using.
-                if (timerID) {
-                  clearTimeout(timerID);
-                }
-                timerID = setTimeout(function() {
-                  if (!hovering) {
-                    open = false;
-                    $("div.ctools-dropdown-container", $dropdown).slideUp(100);
-                  }}, 500);
-              }
+        $dropdown.removeClass('ctools-dropdown-no-js');
+
+        var toggle = function(close) {
+          // if it's open or we're told to close it, close it.
+          if (open || close) {
+            // If we're just toggling it, close it immediately.
+            if (!close) {
+              open = false;
+              $("div.ctools-dropdown-container", $dropdown).slideUp(100);
             }
             else {
-              // open it.
-              open = true;
-              $("div.ctools-dropdown-container", $dropdown)
-                .animate({height: "show", opacity: "show"}, 100);
+              // If we were told to close it, wait half a second to make
+              // sure that's what the user wanted.
+              // Clear any previous timer we were using.
+              if (timerID) {
+                clearTimeout(timerID);
+              }
+              timerID = setTimeout(function() {
+                if (!hovering) {
+                  open = false;
+                  $("div.ctools-dropdown-container", $dropdown).slideUp(100);
+                }
+              }, 500);
             }
           }
-          $("a.ctools-dropdown-link", $dropdown).click(function() {
-              toggle();
-              return false;
-            });
+          else {
+            // open it.
+            open = true;
+            $("div.ctools-dropdown-container", $dropdown)
+              .animate({height: "show", opacity: "show"}, 100);
+          }
+        }
+        $("a.ctools-dropdown-link", $dropdown).click(function() {
+          toggle();
+          return false;
+        });
 
-          $dropdown.hover(
+        $dropdown.hover(
             function() {
               hovering = true;
             }, // hover in
@@ -76,12 +76,12 @@
               toggle(true);
               return false;
             });
-            // @todo -- just use CSS for this noise.
-          $("div.ctools-dropdown-container a").hover(
-            function() { $(this).addClass('ctools-dropdown-hover'); },
-            function() { $(this).removeClass('ctools-dropdown-hover'); }
-            );
-        });
+        // @todo -- just use CSS for this noise.
+        $("div.ctools-dropdown-container a").hover(
+          function() { $(this).addClass('ctools-dropdown-hover'); },
+          function() { $(this).removeClass('ctools-dropdown-hover'); }
+        );
+      });
     }
   }
 })(jQuery);
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/jump-menu.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/jump-menu.js
index 6bd0af6..7b0928a 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/jump-menu.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/jump-menu.js
@@ -1,13 +1,13 @@
 
 (function($) {
-  Drupal.behaviors.CToolsJumpMenu = { 
+  Drupal.behaviors.CToolsJumpMenu = {
     attach: function(context) {
-      $('.ctools-jump-menu-hide:not(.ctools-jump-menu-processed)')
-        .addClass('ctools-jump-menu-processed')
+      $('.ctools-jump-menu-hide')
+        .once('ctools-jump-menu')
         .hide();
 
-      $('.ctools-jump-menu-change:not(.ctools-jump-menu-processed)')
-        .addClass('ctools-jump-menu-processed')
+      $('.ctools-jump-menu-change')
+        .once('ctools-jump-menu')
         .change(function() {
           var loc = $(this).val();
           var urlArray = loc.split('::');
@@ -20,8 +20,8 @@
           return false;
         });
 
-      $('.ctools-jump-menu-button:not(.ctools-jump-menu-processed)')
-        .addClass('ctools-jump-menu-processed')
+      $('.ctools-jump-menu-button')
+        .once('ctools-jump-menu')
         .click(function() {
           // Instead of submitting the form, just perform the redirect.
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/modal.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/modal.js
index acb2227..1376d82 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/modal.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/modal.js
@@ -175,10 +175,10 @@
    * Submit responder to do an AJAX submit on all modal forms.
    */
   Drupal.CTools.Modal.submitAjaxForm = function(e) {
-    var url = $(this).attr('action');
-    var form = $(this);
+    var $form = $(this);
+    var url = $form.attr('action');
 
-    setTimeout(function() { Drupal.CTools.AJAX.ajaxSubmit(form, url); }, 1);
+    setTimeout(function() { Drupal.CTools.AJAX.ajaxSubmit($form, url); }, 1);
     return false;
   }
 
@@ -192,83 +192,79 @@
       // used together safely.
       /*
        * @todo remimplement the warm caching feature
-      $('a.ctools-use-modal-cache:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .click(Drupal.CTools.Modal.clickAjaxCacheLink)
-        .each(function () {
-          Drupal.CTools.AJAX.warmCache.apply(this);
-        });
+       $('a.ctools-use-modal-cache', context).once('ctools-use-modal', function() {
+         $(this).click(Drupal.CTools.Modal.clickAjaxCacheLink);
+         Drupal.CTools.AJAX.warmCache.apply(this);
+       });
         */
 
-      $('area.ctools-use-modal:not(.ctools-use-modal-processed), a.ctools-use-modal:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .click(Drupal.CTools.Modal.clickAjaxLink)
-        .each(function () {
-          // Create a drupal ajax object
-          var element_settings = {};
-          if ($(this).attr('href')) {
-            element_settings.url = $(this).attr('href');
-            element_settings.event = 'click';
-            element_settings.progress = { type: 'throbber' };
-          }
-          var base = $(this).attr('href');
-          Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
-
-          // Attach the display behavior to the ajax object
+      $('area.ctools-use-modal, a.ctools-use-modal', context).once('ctools-use-modal', function() {
+        var $this = $(this);
+        $this.click(Drupal.CTools.Modal.clickAjaxLink);
+        // Create a drupal ajax object
+        var element_settings = {};
+        if ($this.attr('href')) {
+          element_settings.url = $this.attr('href');
+          element_settings.event = 'click';
+          element_settings.progress = { type: 'throbber' };
         }
-      );
+        var base = $this.attr('href');
+        Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
+      });
 
       // Bind buttons
-      $('input.ctools-use-modal:not(.ctools-use-modal-processed), button.ctools-use-modal:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .click(Drupal.CTools.Modal.clickAjaxLink)
-        .each(function() {
-          var button = this;
-          var element_settings = {};
-
-          // AJAX submits specified in this manner automatically submit to the
-          // normal form action.
-          element_settings.url = Drupal.CTools.Modal.findURL(this);
-          element_settings.event = 'click';
-
-          var base = $(this).attr('id');
-          Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
-
-          // Make sure changes to settings are reflected in the URL.
-          $('.' + $(button).attr('id') + '-url').change(function() {
-            Drupal.ajax[base].options.url = Drupal.CTools.Modal.findURL(button);
-          });
+      $('input.ctools-use-modal, button.ctools-use-modal', context).once('ctools-use-modal', function() {
+        var $this = $(this);
+        $this.click(Drupal.CTools.Modal.clickAjaxLink);
+        var button = this;
+        var element_settings = {};
+
+        // AJAX submits specified in this manner automatically submit to the
+        // normal form action.
+        element_settings.url = Drupal.CTools.Modal.findURL(this);
+        element_settings.event = 'click';
+
+        var base = $this.attr('id');
+        Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
+
+        // Make sure changes to settings are reflected in the URL.
+        $('.' + $(button).attr('id') + '-url').change(function() {
+          Drupal.ajax[base].options.url = Drupal.CTools.Modal.findURL(button);
         });
+      });
 
       // Bind our custom event to the form submit
-      $('#modal-content form:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .each(function() {
-          var element_settings = {};
-
-          element_settings.url = $(this).attr('action');
-          element_settings.event = 'submit';
-          element_settings.progress = { 'type': 'throbber' }
-          var base = $(this).attr('id');
-
-          Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
-          Drupal.ajax[base].form = $(this);
-
-          $('input[type=submit], button', this).click(function() {
-            Drupal.ajax[base].element = this;
-            this.form.clk = this;
-          });
-
+      $('#modal-content form', context).once('ctools-use-modal', function() {
+        var $this = $(this);
+        var element_settings = {};
+
+        element_settings.url = $this.attr('action');
+        element_settings.event = 'submit';
+        element_settings.progress = { 'type': 'throbber' }
+        var base = $this.attr('id');
+
+        Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
+        Drupal.ajax[base].form = $this;
+
+        $('input[type=submit], button', this).click(function(event) {
+          Drupal.ajax[base].element = this;
+          this.form.clk = this;
+          // An empty event means we were triggered via .click() and
+          // in jquery 1.4 this won't trigger a submit.
+          if (event.bubbles == undefined) {
+            $(this.form).trigger('submit');
+            return false;
+          }
         });
+      });
 
       // Bind a click handler to allow elements with the 'ctools-close-modal'
       // class to close the modal.
-      $('.ctools-close-modal', context).once('ctools-close-modal-processed', function () {
-        $(this).click(function() {
+      $('.ctools-close-modal', context).once('ctools-close-modal')
+        .click(function() {
           Drupal.CTools.Modal.dismiss();
           return false;
         });
-      });
     }
   };
 
@@ -318,10 +314,11 @@
     var url_class = '.' + $(item).attr('id') + '-url';
     $(url_class).each(
       function() {
-        if (url && $(this).val()) {
+        var $this = $(this);
+        if (url && $this.val()) {
           url += '/';
         }
-        url += $(this).val();
+        url += $this.val();
       });
     return url;
   };
@@ -508,12 +505,23 @@
     // jQuery magic loop through the instances and run the animations or removal.
     content.each(function(){
       if ( animation == 'fade' ) {
-        $('#modalContent').fadeOut(speed,function(){$('#modalBackdrop').fadeOut(speed, function(){$(this).remove();});$(this).remove();});
+        $('#modalContent').fadeOut(speed, function() {
+          $('#modalBackdrop').fadeOut(speed, function() {
+            $(this).remove();
+          });
+          $(this).remove();
+        });
       } else {
         if ( animation == 'slide' ) {
-          $('#modalContent').slideUp(speed,function(){$('#modalBackdrop').slideUp(speed, function(){$(this).remove();});$(this).remove();});
+          $('#modalContent').slideUp(speed,function() {
+            $('#modalBackdrop').slideUp(speed, function() {
+              $(this).remove();
+            });
+            $(this).remove();
+          });
         } else {
-          $('#modalContent').remove();$('#modalBackdrop').remove();
+          $('#modalContent').remove();
+          $('#modalBackdrop').remove();
         }
       }
     });
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/stylizer.js b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/stylizer.js
index dc1caaa..16d6c49 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/stylizer.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/js/stylizer.js
@@ -183,11 +183,12 @@
       };
 
       // Add hook
+      var $this = $(this);
       var hook = $('<div class="hook"></div>');
-      $(this).after(hook);
+      $this.after(hook);
       hooks.push(hook);
 
-      $(this).parent().find('.lock').click();
+      $this.parent().find('.lock').click();
       this.i = i;
       inputs.push(this);
     })
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.admin.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.admin.inc
index 22ecd63..c01961b 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.admin.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.admin.inc
@@ -27,7 +27,11 @@ function page_manager_list_page($js = NULL) {
   }
 
   if (module_exists('advanced_help') && !$js) {
-    drupal_set_message(theme('advanced_help_topic', 'page_manager', 'getting-started', t('See the getting started guide for more information.')));
+    drupal_set_message(theme('advanced_help_topic', array(
+      'module' => 'page_manager',
+      'topic' => 'getting-started',
+      'type' => t('See the getting started guide for more information.'),
+    )));
   }
 
   $tasks = page_manager_get_tasks_by_type('page');
@@ -1208,7 +1212,10 @@ function page_manager_render_operations(&$page, $operations, $active_trail, $att
   }
 
   if ($output[$location]) {
-    $output[$location] = '<ul class="page-manager-operations ' . $attributes['class'] . '">' . $output[$location] . '</ul>';
+    $classes = isset($attributes['class']) && is_array($attributes['class']) ? $attributes['class'] : array();
+    $classes[] = 'page-manager-operations';
+
+    $output[$location] = '<ul class="' . implode(' ', $classes) . '">' . $output[$location] . '</ul>';
 
     if (!empty($attributes['title'])) {
       $class = '';
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.info
index 28ef108..780c115 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.info
@@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = ctools
 package = Chaos tool suite
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.module b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.module
index 790c64e..6d6c199 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/page_manager.module
@@ -140,7 +140,6 @@ function page_manager_menu() {
 
   // Provide menu items for each task.
   foreach ($tasks as $task_id => $task) {
-    $handlers = page_manager_get_task_handler_plugins($task);
     // Allow the task to add its own menu items.
     if ($function = ctools_plugin_get_function($task, 'hook menu')) {
       $function($items, $task);
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
index 4e6e749..69ac02d 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
@@ -1056,7 +1056,6 @@ function page_manager_page_subtask_argument_ajax($step = NULL, $task_name = NULL
 
     $clone_state = $form_state;
     $clone_state['allow temp'] = TRUE;
-    page_manager_page_form_argument($form, $clone_state);
     $form = drupal_build_form('page_manager_page_form_argument', $form_state);
 
     // Render just the table portion.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
index acc5684..fb3fad2 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
@@ -154,6 +154,10 @@ function ctools_entity_field_content_type_render($subtype, $conf, $panel_args, $
   $clone->{$field_name}[$language] = $all_values;
   $field_output = field_view_field($entity_type, $clone, $field_name, $field_settings, $language);
 
+  if (!empty($conf['override_title'])) {
+    $field_output['#title'] = filter_xss_admin($conf['override_title_text']);
+  }
+
   // Build the content type block.
   $block = new stdClass();
   $block->module  = 'entity_field';
@@ -219,9 +223,10 @@ function ctools_entity_field_content_type_formatter_styles($form, &$form_state)
   $subtype = $form_state['subtype_name'];
   list($entity_type, $field_name) = explode(':', $subtype, 2);
   $field = field_info_field($field_name);
-  module_load_include('inc', 'field_ui', 'field_ui.admin');
 
-  ctools_include('fields');
+  ctools_form_include($form_state, 'field_ui.admin', 'field_ui', '');
+  ctools_form_include($form_state, 'fields');
+
   $form['ctools_field_list'] = array(
     '#type' => 'value',
     '#value' => array(),
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
index 1caec71..0183fc6 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
@@ -84,8 +84,10 @@ function ctools_entity_form_field_content_type_render($subtype, $conf, $panel_ar
   if (empty($field)) {
     return;
   }
+  $block = new stdClass();
 
   if (isset($context->form)) {
+    $block->content = array();
     $block->content[$field_name] = $context->form[$field_name];
     unset($context->form[$field_name]);
   }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
index dc1d26f..35988e6 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
@@ -27,7 +27,7 @@ function ctools_term_description_content_type_render($subtype, $conf, $panel_arg
       $block->admin_links['update'] = array(
         'title' => t('Edit term'),
         'alt' => t("Edit this term"),
-        'href' => "admin/content/taxonomy/edit/term/$term->tid",
+        'href' => "taxonomy/term/$term->tid/edit",
         'query' => drupal_get_destination(),
       );
     }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
index c5ea4a6..4585611 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
@@ -77,7 +77,9 @@ function ctools_term_list_content_type_render($subtype, $conf, $panel_args, $con
         }
       }
 
-      $block->content = theme('item_list', array('items' => $items, 'type' => $conf['list_type']));
+      if (!empty($items)) {
+        $block->content = theme('item_list', array('items' => $items, 'type' => $conf['list_type']));
+      }
     }
   }
   else {
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/contexts/entity.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/contexts/entity.inc
index 4cccdf6..b214aa0 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/contexts/entity.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/contexts/entity.inc
@@ -247,7 +247,7 @@ function ctools_context_entity_convert_list($plugin) {
 /**
  * Convert a context into a string.
  */
-function ctools_context_entity_convert($context, $type) {
+function ctools_context_entity_convert($context, $type, $options = array()) {
   $entity_type = $context->type[2];
   $entity = entity_get_info($entity_type);
 
@@ -266,7 +266,7 @@ function ctools_context_entity_convert($context, $type) {
 
   $tokens = token_info();
 
-  $values = token_generate($token, array($type => $type), array($token => $context->data));
+  $values = token_generate($token, array($type => $type), array($token => $context->data), $options);
   if (isset($values[$type])) {
     return $values[$type];
   }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
index d326dd9..4b44c4a 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
@@ -339,7 +339,6 @@ class ctools_export_ui {
   function list_form_submit(&$form, &$form_state) {
     // Filter and re-sort the pages.
     $plugin = $this->plugin;
-    $schema = ctools_export_get_schema($this->plugin['schema']);
 
     $prefix = ctools_export_ui_plugin_base_path($plugin);
 
@@ -350,44 +349,7 @@ class ctools_export_ui {
         continue;
       }
 
-      // Note: Creating this list seems a little clumsy, but can't think of
-      // better ways to do this.
-      $allowed_operations = drupal_map_assoc(array_keys($plugin['allowed operations']));
-      $not_allowed_operations = array('import');
-
-      if ($item->{$schema['export']['export type string']} == t('Normal')) {
-        $not_allowed_operations[] = 'revert';
-      }
-      elseif ($item->{$schema['export']['export type string']} == t('Overridden')) {
-        $not_allowed_operations[] = 'delete';
-      }
-      else {
-        $not_allowed_operations[] = 'revert';
-        $not_allowed_operations[] = 'delete';
-      }
-
-      $not_allowed_operations[] = empty($item->disabled) ? 'enable' : 'disable';
-
-      foreach ($not_allowed_operations as $op) {
-        // Remove the operations that are not allowed for the specific
-        // exportable.
-        unset($allowed_operations[$op]);
-      }
-
-      $operations = array();
-
-      foreach ($allowed_operations as $op) {
-        $operations[$op] = array(
-          'title' => $plugin['allowed operations'][$op]['title'],
-          'href' => ctools_export_ui_plugin_menu_path($plugin, $op, $name),
-        );
-        if (!empty($plugin['allowed operations'][$op]['ajax'])) {
-          $operations[$op]['attributes'] = array('class' => array('use-ajax'));
-        }
-        if (!empty($plugin['allowed operations'][$op]['token'])) {
-          $operations[$op]['query'] = array('token' => drupal_get_token($op));
-        }
-      }
+      $operations = $this->build_operations($item);
 
       $this->list_build_row($item, $form_state, $operations);
     }
@@ -501,6 +463,52 @@ class ctools_export_ui {
   }
 
   /**
+   * Builds the operation links for a specific exportable item.
+   */
+  function build_operations($item) {
+    $plugin = $this->plugin;
+    $schema = ctools_export_get_schema($plugin['schema']);
+    $operations = $plugin['allowed operations'];
+    $operations['import'] = FALSE;
+
+    if ($item->{$schema['export']['export type string']} == t('Normal')) {
+      $operations['revert'] = FALSE;
+    }
+    elseif ($item->{$schema['export']['export type string']} == t('Overridden')) {
+      $operations['delete'] = FALSE;
+    }
+    else {
+      $operations['revert'] = FALSE;
+      $operations['delete'] = FALSE;
+    }
+    if (empty($item->disabled)) {
+      $operations['enable'] = FALSE;
+    }
+    else {
+      $operations['disable'] = FALSE;
+    }
+
+    $allowed_operations = array();
+
+    foreach ($operations as $op => $info) {
+      if (!empty($info)) {
+        $allowed_operations[$op] = array(
+          'title' => $info['title'],
+          'href' => ctools_export_ui_plugin_menu_path($plugin, $op, $item->{$this->plugin['export']['key']}),
+        );
+        if (!empty($info['ajax'])) {
+          $allowed_operations[$op]['attributes'] = array('class' => array('use-ajax'));
+        }
+        if (!empty($info['token'])) {
+          $allowed_operations[$op]['query'] = array('token' => drupal_get_token($op));
+        }
+      }
+    }
+
+    return $allowed_operations;
+  }
+
+  /**
    * Build a row based on the item.
    *
    * By default all of the rows are placed into a table by the render
@@ -1187,17 +1195,26 @@ class ctools_export_ui {
 
     $output = drupal_build_form('ctools_export_ui_delete_confirm_form', $form_state);
     if (!empty($form_state['executed'])) {
-      ctools_export_crud_delete($this->plugin['schema'], $item);
-      $export_key = $this->plugin['export']['key'];
-      $message = str_replace('%title', check_plain($item->{$export_key}), $this->plugin['strings']['confirmation'][$form_state['op']]['success']);
-      drupal_set_message($message);
-      drupal_goto(ctools_export_ui_plugin_base_path($this->plugin));
+      $this->delete_form_submit($form_state);
+      $this->redirect($form_state['op'], $item);
     }
 
     return $output;
   }
 
   /**
+   * Deletes exportable items from the database.
+   */
+  function delete_form_submit(&$form_state) {
+    $item = $form_state['item'];
+
+    ctools_export_crud_delete($this->plugin['schema'], $item);
+    $export_key = $this->plugin['export']['key'];
+    $message = str_replace('%title', check_plain($item->{$export_key}), $this->plugin['strings']['confirmation'][$form_state['op']]['success']);
+    drupal_set_message($message);
+  }
+
+  /**
    * Page callback to display export information for an exportable item.
    */
   function export_page($js, $input, $item) {
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/stylizer/stylizer.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/stylizer/stylizer.info
index 6bff8dd..b407b95 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/stylizer/stylizer.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/stylizer/stylizer.info
@@ -5,9 +5,9 @@ package = Chaos tool suite
 dependencies[] = ctools
 dependencies[] = color
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools.drush.sh b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools.drush.sh
index 1a02cd6..31bdee3 100755
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools.drush.sh
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools.drush.sh
@@ -15,8 +15,8 @@ MODULE_NAME="ctools_drush_test"
 
 stamp
 
-echo 'Enabling views module.'
-drush en views ctools --yes
+echo 'Enabling ctools, views, and bulk_export modules.'
+drush en ctools views bulk_export --yes
 
 stamp
 echo 'Reading all export info'
@@ -36,13 +36,25 @@ drush ctools-export-info --tables-only --format=json
 
 stamp
 echo 'Reading all disabled exportables'
-drush ctools-export-info --disabled
+drush ctools-export-info --filter=disabled
 
 stamp
 echo 'Enabling all default views'
 drush ctools-export-enable views_view --yes
 
 stamp
+echo 'Reading all enabled exportables'
+drush ctools-export-info --filter=enabled
+
+stamp
+echo 'Reading all overridden exportables'
+drush ctools-export-info --filter=overridden
+
+stamp
+echo 'Reading all database only exportables'
+drush ctools-export-info --filter=database
+
+stamp
 echo 'View all default views export data'
 drush ctools-export-view views_view --yes
 
@@ -71,6 +83,30 @@ echo 'Revert all default views'
 drush ctools-export-revert views_view --yes
 
 stamp
+echo 'Enable all node views'
+drush ctools-export-enable views_view --module=node --yes
+
+stamp
+echo 'Disable all node views'
+drush ctools-export-disable views_view --module=node --yes
+
+stamp
+echo 'Revert all node views'
+drush ctools-export-revert views_view --module=node --yes
+
+stamp
+echo 'Revert all exportables'
+drush ctools-export-revert --all --yes
+
+stamp
+echo 'Enable all exportables'
+drush ctools-export-enable --all --yes
+
+stamp
+echo 'Disable all exportables'
+drush ctools-export-disable --all --yes
+
+stamp
 echo 'Bulk export all objects'
 drush ctools-export $MODULE_NAME --subdir='tests' --choice=1
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export.test b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export.test
new file mode 100644
index 0000000..1accfd7
--- /dev/null
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export.test
@@ -0,0 +1,215 @@
+<?php
+
+/**
+ * @file
+ * Tests for the CTools export system.
+ */
+
+/**
+ * Tests export CRUD.
+ */
+class CtoolsExportCrudTestCase extends DrupalWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'CTools export CRUD tests',
+      'description' => 'Test the CRUD functionality for the ctools export system.',
+      'group' => 'Chaos Tools Suite',
+    );
+  }
+
+  protected function setUp() {
+    parent::setUp('ctools_export_test');
+    $this->resetAll();
+  }
+
+  /**
+   * Tests CRUD operation: Load.
+   */
+  function testCrudExportLoad() {
+    $loaded_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $expected_export = new stdClass();
+    $expected_export->machine = 'database_test';
+    $expected_export->title = 'Database test';
+    $expected_export->number = 0;
+    $expected_export->data = array(
+      'test_1' => 'Test 1',
+      'test_2' => 'Test 2',
+    );
+    $expected_export->table = 'ctools_export_test';
+    $expected_export->export_type = EXPORT_IN_DATABASE;
+    $expected_export->type = 'Normal';
+
+    $this->assertEqual($expected_export, $loaded_export, 'An exportable object has been loaded correctly from the database.');
+  }
+
+  /**
+   * Tests CRUD operation: Load multiple.
+   */
+  function testCrudExportLoadMultiple() {
+    $exportable_names = array('database_test', 'overridden_test', 'default_test');
+    $loaded_exports = ctools_export_crud_load_multiple('ctools_export_test', $exportable_names);
+
+    $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
+  }
+
+  /**
+   * Tests CRUD operation: Load all.
+   */
+  function testCrudExportLoadAll() {
+    $loaded_exports = ctools_export_crud_load_all('ctools_export_test');
+
+    $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
+  }
+
+  /**
+   * Tests CRUD operation: Save.
+   */
+  function testCrudExportSave() {
+    $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue($default_export->in_code_only,'The loaded exportable is in code only.');
+
+    ctools_export_crud_save('ctools_export_test', $default_export);
+
+    // Clear the static cache.
+    ctools_export_load_object_reset('ctools_export_test');
+
+    $overridden_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue($overridden_export->export_type === 3, 'The loaded exportable is overridden in the database.');
+  }
+
+  /**
+   * Tests CRUD operation: New.
+   */
+  function testCrudExportNew() {
+    // Default exportable with defualt values.
+    $new_export = ctools_export_crud_new('ctools_export_test');
+
+    $expected_export = new stdClass();
+    $expected_export->machine = '';
+    $expected_export->title = '';
+    $expected_export->number = 0;
+    $expected_export->data = NULL;
+    $expected_export->export_type = NULL;
+    $expected_export->type = 'Local';
+
+    $this->assertEqual($expected_export, $new_export, 'An exportable with default values is created.');
+
+    // Default exportable without default values.
+    $new_export = ctools_export_crud_new('ctools_export_test', FALSE);
+
+    $expected_export = new stdClass();
+    $expected_export->machine = '';
+    $expected_export->title = '';
+    $expected_export->number = NULL;
+    $expected_export->data = NULL;
+
+    $this->assertEqual($expected_export, $new_export, 'An exportable without default values has been created.');
+  }
+
+  /**
+   * Tests CRUD operation: Revert.
+   */
+  function testCrudExportRevert() {
+    // Load exportable, will come from database.
+    $original_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    $this->assertTrue($original_export->export_type === 3, 'Loaded export is overridden.');
+
+    $machine = $original_export->machine;
+    ctools_export_crud_delete('ctools_export_test', $original_export);
+
+    $result = db_query("SELECT machine FROM {ctools_export_test} WHERE machine = :machine", array(':machine' => $machine))->fetchField();
+
+    $this->assertFalse($result, 'The exportable object has been removed from the database.');
+
+    // Clear the static cache.
+    ctools_export_load_object_reset('ctools_export_test');
+
+    // Reload the same object.
+    $default_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    // Check the exportable is now in_code_only.
+    $this->assertTrue($default_export->in_code_only, 'The loaded exportable is in the database only.');
+
+    // Make sure the default object loaded matches the same overridden one in the database.
+    $this->assertEqual($original_export->machine, $default_export->machine, 'The default exportable has been loaded and matches the overridden exportable.');
+  }
+
+  /**
+   * Tests CRUD operation: Delete.
+   */
+  function testCrudExportDelete() {
+    // Create a stub entry save it and delete it from the database.
+    $new_export = ctools_export_crud_new('ctools_export_test');
+    ctools_export_crud_save('ctools_export_test', $new_export);
+
+    $machine = $new_export->machine;
+    ctools_export_crud_delete('ctools_export_test', $new_export);
+    $result = ctools_export_crud_load('ctools_export_test', $machine);
+
+    $this->assertFalse($result, 'The new exportable has been removed from the database.');
+
+    // Load the database only exportable.
+    $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $machine = $database_export->machine;
+    ctools_export_crud_delete('ctools_export_test', $database_export);
+    // Clear the exportable caches as it's been loaded above.
+    ctools_export_load_object_reset('ctools_export_test');
+    $result = ctools_export_crud_load('ctools_export_test', $machine);
+
+    $this->assertFalse($result, 'The database exportable has been removed from the database.');
+  }
+
+  /**
+   * Tests CRUD operation: Set status.
+   */
+  function testCrudExportSetStatus() {
+    // Database only object.
+    $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+    ctools_export_crud_disable('ctools_export_test', $database_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $disabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $this->assertTrue($disabled_export->disabled, 'The database only exportable has been disabled.');
+
+    ctools_export_crud_enable('ctools_export_test', $disabled_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $enabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $this->assertTrue(empty($enabled_export->disabled), 'The database only exportable has been enabled.');
+
+    // Overridden object.
+    $overridden_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+    ctools_export_crud_disable('ctools_export_test', $overridden_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $disabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    $this->assertTrue($disabled_export->disabled, 'The overridden exportable has been disabled.');
+
+    ctools_export_crud_enable('ctools_export_test', $disabled_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $enabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    $this->assertTrue(empty($enabled_export->disabled), 'The overridden exportable has been enabled.');
+
+    // Default object.
+    $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+    ctools_export_crud_disable('ctools_export_test', $default_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $disabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue($disabled_export->disabled, 'The default exportable has been disabled.');
+
+    ctools_export_crud_enable('ctools_export_test', $disabled_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $enabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue(empty($enabled_export->disabled), 'The default exportable has been enabled.');
+  }
+
+}
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.default_ctools_export_tests.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.default_ctools_export_tests.inc
new file mode 100644
index 0000000..9f2dd6c
--- /dev/null
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.default_ctools_export_tests.inc
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * Implements hook_default_export_tests().
+ */
+function ctools_export_test_default_ctools_export_tests() {
+  $ctools_export_tests = array();
+
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->disabled = FALSE; /* Edit this to true to make a default export_test disabled initially */
+  $ctools_export_test->api_version = 1;
+  $ctools_export_test->machine = 'overridden_test';
+  $ctools_export_test->title = 'Overridden test';
+  $ctools_export_test->number = 1;
+  $ctools_export_test->data = array(
+    'test_1' => 'Test 1',
+    'test_2' => 'Test 2',
+  );
+  $ctools_export_tests['overridden_test'] = $ctools_export_test;
+
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->disabled = FALSE; /* Edit this to true to make a default export_test disabled initially */
+  $ctools_export_test->api_version = 1;
+  $ctools_export_test->machine = 'default_test';
+  $ctools_export_test->title = 'Default test';
+  $ctools_export_test->number = 2;
+  $ctools_export_test->data = '';
+  $ctools_export_tests['default_test'] = $ctools_export_test;
+
+  return $ctools_export_tests;
+}
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
new file mode 100644
index 0000000..55bcba9
--- /dev/null
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
@@ -0,0 +1,15 @@
+name = CTools export test
+description = CTools export test module
+core = 7.x
+package = Chaos tool suite
+dependencies[] = ctools
+hidden = TRUE
+
+files[] = ctools_export.test
+
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
+core = "7.x"
+project = "ctools"
+datestamp = "1344463011"
+
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.install b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.install
new file mode 100644
index 0000000..2eb54ca
--- /dev/null
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.install
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * Implements hook_schema();
+ */
+function ctools_export_test_schema() {
+  $schema['ctools_export_test'] = array(
+   'description' => 'CTools export test data table',
+   'export' => array(
+      'key' => 'machine',
+      'identifier' => 'ctools_export_test',
+      'default hook' => 'default_ctools_export_tests',
+      'bulk export' => TRUE,
+      'api' => array(
+        'owner' => 'ctools_export_test',
+        'api' => 'default_ctools_export_tests',
+        'minimum_version' => 1,
+        'current_version' => 1,
+      ),
+    ),
+    'fields' => array(
+      'machine' => array(
+        'description' => "The unique machine name (required by ctools).",
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'title' => array(
+        'description' => "The human readable title.",
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'number' => array(
+        'description' => "A number.",
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'data' => array(
+        'type' => 'blob',
+        'description' => "A serialized array of data.",
+        'serialize' => TRUE,
+        'serialized default' => 'a:0:{}',
+      ),
+    ),
+    'primary key' => array('machine'),
+  );
+
+  return $schema;
+}
+
+/**
+ * Implments hook_install();
+ */
+function ctools_export_test_install() {
+  $ctools_export_tests = array();
+  // Put this default in the database only (no default).
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->machine = 'database_test';
+  $ctools_export_test->title = 'Database test';
+  $ctools_export_test->number = 0;
+  $ctools_export_test->data = array(
+    'test_1' => 'Test 1',
+    'test_2' => 'Test 2',
+  );
+  $ctools_export_tests['database_test'] = $ctools_export_test;
+
+  // Put this default in the database, so we have this in code and in the database.
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->machine = 'overridden_test';
+  $ctools_export_test->title = 'Overridden test';
+  $ctools_export_test->number = 1;
+  $ctools_export_test->data = array(
+    'test_1' => 'Test 1',
+    'test_2' => 'Test 2',
+  );
+  $ctools_export_tests['overridden_test'] = $ctools_export_test;
+
+  foreach ($ctools_export_tests as $ctools_export_test) {
+    // Save the record to the database.
+    drupal_write_record('ctools_export_test', $ctools_export_test);
+  }
+}
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module
new file mode 100644
index 0000000..80f1adb
--- /dev/null
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * Implements hook_ctools_plugin_api().
+ */
+function ctools_export_test_ctools_plugin_api($module, $api) {
+  if ($module == 'ctools_export_test' && $api == 'default_ctools_export_tests') {
+    return array('version' => 1);
+  }
+}
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_plugin_test.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_plugin_test.info
index a5b7688..cf4bf9c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_plugin_test.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/tests/ctools_plugin_test.info
@@ -5,11 +5,12 @@ core = 7.x
 dependencies[] = ctools
 files[] = ctools.plugins.test
 files[] = object_cache.test
+files[] = css.test
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
index 04b6869..deea741 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
@@ -147,6 +147,10 @@ function views_content_views_content_type_render($subtype, $conf, $panel_args, $
         $arg = ctools_context_convert_context($contexts[$cid], $converter);
         array_splice($args, $count, 0, array($arg));
       }
+      else {
+        // Make sure we put an argument in even if it was not there.
+        $arg = NULL;
+      }
     }
   }
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
index 181f02f..a27a26c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
@@ -232,44 +232,31 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
   }
 
   if ($allow['items_per_page'] && isset($conf['items_per_page'])) {
-    $view->display_handler->set_option('items_per_page', $conf['items_per_page']);
-    // And here too, which works in Views 3 where the above does not.
     $view->set_items_per_page($conf['items_per_page']);
   }
 
   if ($allow['offset']) {
-    $view->display_handler->set_option('offset', $conf['offset']);
     $view->set_offset($conf['offset']);
   }
 
   if ($allow['use_pager']) {
     // Only set use_pager if they differ, this way we can avoid overwriting the
     // pager type that Views uses.
-    // Views 3 version
-    if (method_exists($view, 'init_pager')) {
-      $pager = $view->display_handler->get_option('pager');
-      if ($conf['use_pager'] && ($pager['type'] == 'none' || $pager['type'] == 'some')) {
-        $pager['type'] = 'full';
-      }
-      elseif (!$conf['use_pager'] && $pager['type'] != 'none' && $pager['type'] != 'some') {
-        $pager['type'] = $view->get_items_per_page() || !empty($pager['options']['items_per_page']) ? 'some' : 'none';
-      }
+    $pager = $view->display_handler->get_option('pager');
+    if ($conf['use_pager'] && ($pager['type'] == 'none' || $pager['type'] == 'some')) {
+      $pager['type'] = 'full';
+    }
+    elseif (!$conf['use_pager'] && $pager['type'] != 'none' && $pager['type'] != 'some') {
+      $pager['type'] = $view->get_items_per_page() || !empty($pager['options']['items_per_page']) ? 'some' : 'none';
+    }
 
-      if ($conf['use_pager']) {
-        if (!isset($pager['options']['id']) || (isset($conf['pager_id']) && $pager['options']['id'] != $conf['pager_id'])) {
-          $pager['options']['id'] = $conf['pager_id'];
-        }
+    if ($conf['use_pager']) {
+      if (!isset($pager['options']['id']) || (isset($conf['pager_id']) && $pager['options']['id'] != $conf['pager_id'])) {
+        $pager['options']['id'] = $conf['pager_id'];
       }
-
-      $view->display_handler->set_option('pager', $pager);
     }
-    else {
-      if (!$view->display_handler->get_option('use_pager') || empty($conf['use_pager'])) {
-        $view->display_handler->set_option('use_pager', $conf['use_pager']);
-      }
 
-      $view->display_handler->set_option('pager_element', $conf['pager_id']);
-    }
+    $view->display_handler->set_option('pager', $pager);
   }
 
   if ($allow['fields_override']) {
@@ -296,7 +283,7 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
 
   $block->title = $view->get_title();
 
-  if (empty($view->total_rows) || $view->total_rows <= $view->display_handler->get_option('items_per_page')) {
+  if (empty($view->total_rows) || $view->total_rows <= $view->get_items_per_page()) {
     unset($block->more);
   }
 
@@ -319,14 +306,16 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
  * settings for a particular item.
  */
 function views_content_views_panes_add_defaults(&$conf, $view) {
+  $pager = $view->display_handler->get_option('pager');
+
   $conf += array(
     'link_to_view' => $view->display_handler->get_option('link_to_view'),
     'more_link' => $view->display_handler->get_option('more_link'),
     'feed_icons' => FALSE,
-    'use_pager' => $view->display_handler->get_option('use_pager'),
-    'pager_id' => $view->display_handler->get_option('element_id'),
-    'items_per_page' => $view->display_handler->get_option('items_per_page'),
-    'offset' => $view->display_handler->get_option('offset'),
+    'use_pager' => $pager['type'] != 'none' && $pager['type'] != 'some',
+    'pager_id' => isset($pager['options']['id']) ? $pager['options']['id'] : 0,
+    'items_per_page' => !empty($pager['options']['items_per_page']) ? $pager['options']['items_per_page'] : 10,
+    'offset' => !empty($pager['options']['offset']) ? $pager['options']['offset'] : 0,
     'path_override' => FALSE,
     'path' => $view->get_path(),
     'fields_override' => $view->display_handler->get_option('fields_override'),
@@ -426,13 +415,13 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
     $form['use_pager'] = array(
       '#type' => 'checkbox',
       '#title' => t('Use pager'),
-        '#default_value' => isset($conf['use_pager']) ? $conf['use_pager'] : $view->display_handler->get_option('use_pager'),
+        '#default_value' => $conf['use_pager'],
       '#id' => 'use-pager-checkbox',
       '#prefix' => '<div class="container-inline">',
     );
     $form['pager_id'] = array(
       '#type' => 'textfield',
-      '#default_value' => isset($conf['pager_id']) ? $conf['pager_id'] : $view->display_handler->get_option('element_id'),
+      '#default_value' => $conf['pager_id'],
       '#title' => t('Pager ID'),
       '#size' => 4,
       '#id' => 'use-pager-textfield',
@@ -443,7 +432,7 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
   if ($allow['items_per_page']) {
     $form['items_per_page'] = array(
       '#type' => 'textfield',
-      '#default_value' => isset($conf['items_per_page']) ? $conf['items_per_page'] : $view->display_handler->get_option('items_per_page'),
+      '#default_value' => $conf['items_per_page'],
       '#title' => t('Num items'),
       '#size' => 4,
       '#description' => t('Select the number of items to display, or 0 to display all results.'),
@@ -452,7 +441,7 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
   if ($allow['offset']) {
     $form['offset'] = array(
       '#type' => 'textfield',
-      '#default_value' => isset($conf['offset']) ? $conf['offset'] : $view->display_handler->get_option('offset'),
+      '#default_value' => $conf['offset'],
       '#title' => t('Offset'),
       '#size' => 4,
       '#description' => t('Enter the number of items to skip; enter 0 to skip no items.'),
@@ -537,6 +526,16 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
     }
   }
 
+  // The exposed sort stuff doesn't fall into $exposed_form['#info'] so we
+  // have to handle it separately.
+  if (isset($exposed_form['sort_by'])) {
+    $form['exposed']['sort_by'] = $exposed_form['sort_by'];
+  }
+
+  if (isset($exposed_form['sort_order'])) {
+    $form['exposed']['sort_order'] = $exposed_form['sort_order'];
+  }
+
   // Add the view object to the form to allow additional customization
   $form_state['view'] = $view;
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/views_content.info b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/views_content.info
index a85ae30..040ea0c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/views_content.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/ctools/views_content/views_content.info
@@ -9,9 +9,9 @@ files[] = plugins/views/views_content_plugin_display_ctools_context.inc
 files[] = plugins/views/views_content_plugin_display_panel_pane.inc
 files[] = plugins/views/views_content_plugin_style_ctools_context.inc
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-08
+version = "7.x-1.1"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1344463011"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/CHANGELOG.txt b/kolab.org/www/drupal-7.14/sites/all/modules/date/CHANGELOG.txt
index 38ecaf9..99e8fb0 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/CHANGELOG.txt
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/CHANGELOG.txt
@@ -6,6 +6,30 @@ Version 7.x-2.x-dev
 ===================
 
 ======================
+Version 7.x-2.6
+======================
+
+- Issue #1423364 by catmat, Add file and path to hook_context_plugins().
+- Issue #1713248, Remove incorrect use of date_popup() function in previous commit.
+- Issue #1143680 by kristiaanvandeneynde, Make Date Popup widget able to accept custom settings.
+- Issue #1596546 by applicity_sam, Make sure incorrect month name creates validation error.
+- Issue #1432702, Fix some miscellaneous problems with date example dates and formats.
+- Issue #1512464 by Liam Moreland, Allow for undefined formatter in Date upgrade handling.
+- Issue #1659638 by bojanz, Hide install message if Drupal is not installed (i.e. in install profiles).
+- Issue #1605158 by covenantd, Be sure value2 is initiated in Date Context handler.
+- Issue #1355256 by barraponto develCuy and KarenS, set default value for date text widget increment to 1, and update existing fields.
+- Issue #1561306 by Cyberwolf, Date pager replacement was not working correctly when used with multiple dates.
+- Issue #1541740 by hass, Make Date requirements more easily translatable.
+- Issue #1543524 by iamEAP, Add update hook to remove the D6 date_timezone field from users.
+- Issue #1603640 by bevan, Don't return anything for empty date interval.
+- Issue #1235508, Make sure that ISO strings with '00' in the month and/or day don't create dates for the previous month and day.
+- Issue #1289270 by pdrake: Fixed date arguments and filters do not work with relationships.
+- Issue #895760 by Reinette: Added RFC2447 option 'STATUS' to date_api_ical().inc.
+- Issue #606658 by johnmunro and KarenS, Make sure ical import processes multi-day all-day events correctly.
+- Issue #1408216 follow up, Need to be sure that NULL is the default state for the sql functions.
+- Issue #1540410, Update the Date Tools calendar creation wizard to use the new calendar path.
+
+======================
 Version 7.x-2.5
 ======================
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.field.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.field.inc
index 5a4fa81..b104702 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.field.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.field.inc
@@ -294,12 +294,17 @@ function date_field_widget_info() {
       'field types' => array('date', 'datestamp', 'datetime'),
      ) + $settings,
   );
+
   if (module_exists('date_popup')) {
     $info['date_popup'] = array(
       'label' =>  t('Pop-up calendar'),
       'field types' => array('date', 'datestamp', 'datetime'),
     ) + $settings;
   }
+
+  // The date text widget should use an increment of 1.
+  $info['date_text']['increment'] = 1;
+
   return $info;
 }
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.info
index 88eaa6c..e5b00c2 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.info
@@ -10,9 +10,9 @@ files[] = tests/date_field.test
 files[] = tests/date_validation.test
 files[] = tests/date_timezone.test
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.install b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.install
index 3f25058..23fb07e 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.install
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.install
@@ -160,3 +160,35 @@ function date_update_7003() {
     module_enable(array('date_repeat_field'));
   }
 }
+
+/**
+ * Date text widgets should always use an increment of 1.
+ */
+function date_update_7004() {
+
+  // Select date fields.
+  $query = db_select('field_config_instance', 'fci', array('fetch' => PDO::FETCH_ASSOC));
+  $query->join('field_config', 'fc', 'fc.id = fci.field_id');
+  $query->fields('fci');
+  $query->condition(db_or()->condition('fc.type', 'date')->condition('fc.type', 'datestamp')->condition('fc.type', 'datetime'));
+  $results = $query->execute();
+
+  // Find the ones that use the date_text widget.
+  foreach ($results as $record) {
+    $instance = unserialize($record['data']);
+    if (in_array($instance['widget']['type'], array('date_text'))) {
+      $instance['widget']['settings']['increment'] = 1;
+      db_update('field_config_instance')
+        ->fields(array(
+          'data' => serialize($instance),
+        ))
+        ->condition('field_name', $record['field_name'])
+        ->condition('entity_type', $record['entity_type'])
+        ->condition('bundle', $record['bundle'])
+        ->execute();
+    }
+  }
+  field_cache_clear();
+  drupal_set_message(t('Date text widgets have been updated to use an increment of 1.'));
+}
+
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.theme b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.theme
index 0d28be0..70c6be4 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date.theme
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date.theme
@@ -301,7 +301,13 @@ function theme_date_display_interval($variables) {
     'interval' => $options['interval'],
     'interval_display' => $options['interval_display'],
   );
-  return '<span class="date-display-interval"' . drupal_attributes($attributes) . '>' . theme('date_time_ago', $time_ago_vars) . '</span>';
+
+  if ($return = theme('date_time_ago', $time_ago_vars)) {
+    return '<span class="date-display-interval"' . drupal_attributes($attributes) . ">$return</span>";
+  }
+  else {
+    return '';
+  }
 }
 
 /**
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_admin.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_admin.inc
index f5a345b..993aa09 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_admin.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_admin.inc
@@ -122,6 +122,7 @@ function date_default_formatter_settings_summary($field, $instance, $view_mode)
   $formatter = $display['type'];
   $format_types = date_format_type_options();
   $summary = array();
+  $format = FALSE;
   switch ($formatter) {
     case 'date_plain':
       $format = t('Plain');
@@ -130,9 +131,16 @@ function date_default_formatter_settings_summary($field, $instance, $view_mode)
       $format = t('Interval');
       break;
     default:
-      $format = $format_types[$settings['format_type']];
+      if (!empty($format_types[$settings['format_type']])) {
+        $format = $format_types[$settings['format_type']];
+      }
+  }
+  if ($format) {
+    $summary[] = t('Display dates using the @format format', array('@format' => $format));
+  }
+  else {
+    $summary[] = t('Display dates using the default format because the specified format (@format) is not defined', array('@format' => $settings['format_type']));
   }
-  $summary[] = t('Display dates using the @format format', array('@format' => $format));
 
   if (array_key_exists('fromto', $settings) && $field['settings']['todate']) {
     $options = array(
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_all_day/date_all_day.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_all_day/date_all_day.info
index ba5d0f1..8f8bf48 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_all_day/date_all_day.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_all_day/date_all_day.info
@@ -5,9 +5,9 @@ dependencies[] = date
 package = Date/Time
 core = 7.x
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.info
index 09c0983..ee1a384 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.info
@@ -9,9 +9,9 @@ stylesheets[all][] = date.css
 files[] = date_api.module
 files[] = date_api_sql.inc
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.install b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.install
index d2bfbb3..ce5b746 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.install
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.install
@@ -61,17 +61,20 @@ function date_api_requirements($phase) {
  * Implements hook_install().
  */
 function date_api_install() {
-  // Ensure translations don't break at install time.
-  $t = get_t();
+  // Only set the message if Drupal itself is already installed.
+  if (variable_get('install_task') == 'done') {
+    // Ensure translations don't break at install time.
+    $t = get_t();
 
-  // date_api_set_variables can install date_timezone. The
-  // date_timezone_install() function does a module_enable('date_api'). This
-  // means that date_api_enable() can be called before date_api_install()
-  // finishes! So the date_api schema needs to be installed before this line!
-  date_api_set_variables();
+    // date_api_set_variables can install date_timezone. The
+    // date_timezone_install() function does a module_enable('date_api'). This
+    // means that date_api_enable() can be called before date_api_install()
+    // finishes! So the date_api schema needs to be installed before this line!
+    date_api_set_variables();
 
-  $message = $t('The Date API requires that you set up the !timezone_link and the !format_link to function correctly.', array('!timezone_link' => l($t('site timezone and first day of week settings'), 'admin/config/regional/settings'), '!format_link' => l($t('date format settings'), 'admin/config/regional/date-time')));
-  drupal_set_message(filter_xss_admin($message), 'warning');
+    $message = $t('The Date API requires that you set up the <a href="@regional_settings">site timezone and first day of week settings</a> and the <a href="@regional_date_time">date format settings</a> to function correctly.', array('@regional_settings' => url('admin/config/regional/settings'), '@regional_date_time' => url('admin/config/regional/date-time')));
+    drupal_set_message(filter_xss_admin($message), 'warning');
+  }
 }
 
 /**
@@ -237,3 +240,13 @@ function date_api_update_7000() {
     db_drop_table('d6_date_format_locale');
   }
 }
+
+
+/**
+ * Drop D6 timezone_name field on {users} after upgrading to D7.
+ */
+function date_api_update_7001() {
+  if (db_field_exists('users', 'timezone_name')) {
+    db_drop_field('users', 'timezone_name');
+  }
+}
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.module b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.module
index b8c95f7..d85a8a5 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api.module
@@ -83,28 +83,28 @@ function date_api_status() {
 
   $value = variable_get('date_default_timezone');
   if (isset($value)) {
-    $success_messages[] = $t('The timezone has been set to !value_link.', array('!value_link' => l($value, 'admin/config/regional/settings')));
+    $success_messages[] = $t('The timezone has been set to <a href="@regional_settings">@timezone</a>.', array('@regional_settings' => url('admin/config/regional/settings'), '@timezone' => $value));
   }
   else {
-    $error_messages[] = $t('The Date API requires that you set up the !timezone_link to function correctly.', array('!timezone_link' => l($t('site timezone'), 'admin/config/regional/settings')));
+    $error_messages[] = $t('The Date API requires that you set up the <a href="@regional_settings">site timezone</a> to function correctly.', array('@regional_settings' => url('admin/config/regional/settings')));
   }
 
   $value = variable_get('date_first_day');
   if (isset($value)) {
     $days = date_week_days();
-    $success_messages[] = $t('The first day of the week has been set to !value_link.', array('!value_link' => l($days[$value], 'admin/config/regional/settings')));
+    $success_messages[] = $t('The first day of the week has been set to <a href="@regional_settings">@day</a>.', array('@regional_settings' => url('admin/config/regional/settings'), '@day' => $days[$value]));
   }
   else {
-    $error_messages[] = $t('The Date API requires that you set up the !first_day_link to function correctly.', array('!first_day_link' => l($t('site first day of week settings'), 'admin/config/regional/settings')));
+    $error_messages[] = $t('The Date API requires that you set up the <a href="@regional_settings">site first day of week settings</a> to function correctly.', array('@regional_settings' => url('admin/config/regional/settings')));
   }
 
   $value = variable_get('date_format_medium');
   if (isset($value)) {
     $now = date_now();
-    $success_messages[] = $t('The medium date format type has been set to to @value. You may find it helpful to add new format types like Date, Time, Month, or Year, with appropriate formats, at !value_link.', array('@value' => $now->format($value), '!value_link' => l(t('Date and time'), 'admin/config/regional/date-time')));
+    $success_messages[] = $t('The medium date format type has been set to to @value. You may find it helpful to add new format types like Date, Time, Month, or Year, with appropriate formats, at <a href="@regional_date_time">Date and time</a> settings.', array('@value' => $now->format($value), '@regional_date_time' => url('admin/config/regional/date-time')));
   }
   else {
-    $error_messages[] = $t('The Date API requires that you set up the !format_link to function correctly.', array('!format_link' => l($t('system date formats'), 'admin/config/regional/date-time')));
+    $error_messages[] = $t('The Date API requires that you set up the <a href="@regional_date_time">system date formats</a> to function correctly.', array('@regional_date_time' => url('admin/config/regional/date-time')));
   }
 
   return array('errors', $error_messages, 'success' => $success_messages);
@@ -185,7 +185,7 @@ class DateObject extends DateTime {
    * Constructs a date object.
    *
    * @param string $time
-   *   A date/time string. Defaults to 'now'.
+   *   A date/time string or array. Defaults to 'now'.
    * @param object|string|null $tz
    *   PHP DateTimeZone object, string or NULL allowed. Defaults to NULL.
    * @param string $format
@@ -198,6 +198,9 @@ class DateObject extends DateTime {
     $this->timeOnly = FALSE;
     $this->dateOnly = FALSE;
 
+    // Store the raw time input so it is available for validation.
+    $this->originalTime = $time;
+
     // Allow string timezones.
     if (!empty($tz) && !is_object($tz)) {
       $tz = new DateTimeZone($tz);
@@ -221,8 +224,7 @@ class DateObject extends DateTime {
       $format = DATE_FORMAT_DATETIME;
       $this->addGranularity('timezone');
     }
-
-    if (is_array($time)) {
+    elseif (is_array($time)) {
       // Assume we were passed an indexed array.
       if (empty($time['year']) && empty($time['month']) && empty($time['day'])) {
         $this->timeOnly = TRUE;
@@ -237,6 +239,12 @@ class DateObject extends DateTime {
       // We checked for errors already, skip parsing the input values.
       $format = NULL;
     }
+    else {
+      // Make sure dates like 2010-00-00T00:00:00 get converted to
+      // 2010-01-01T00:00:00 before creating a date object
+      // to avoid unintended changes in the month or day.
+      $time = date_make_iso_valid($time);
+    }
 
     // The parse function will also set errors on the date parts.
     if (!empty($format)) {
@@ -590,12 +598,12 @@ class DateObject extends DateTime {
           break;
         case 'F':
           $array_month_long = array_flip(date_month_names());
-          $final_date['month'] = array_key_exists($value, $array_month_long) ? $array_month_long[$value] : '';
+          $final_date['month'] = array_key_exists($value, $array_month_long) ? $array_month_long[$value] : -1;
           $this->addGranularity('month');
           break;
         case 'M':
           $array_month = array_flip(date_month_names_abbr());
-          $final_date['month'] = array_key_exists($value, $array_month) ? $array_month[$value] : '';
+          $final_date['month'] = array_key_exists($value, $array_month) ? $array_month[$value] : -1;
           $this->addGranularity('month');
           break;
         case 'Y':
@@ -2667,3 +2675,33 @@ function date_is_date($date) {
   }
   return TRUE;
 }
+
+/**
+ * This function will replace ISO values that have the pattern 9999-00-00T00:00:00
+ * with a pattern like 9999-01-01T00:00:00, to match the behavior of non-ISO
+ * dates and ensure that date objects created from this value contain a valid month
+ * and day. Without this fix, the ISO date '2020-00-00T00:00:00' would be created as
+ * November 30, 2019 (the previous day in the previous month).
+ *
+ * @param string $iso_string
+ *   An ISO string that needs to be made into a complete, valid date.
+ *
+ * @TODO Expand on this to work with all sorts of partial ISO dates.
+ */
+function date_make_iso_valid($iso_string) {
+  // If this isn't a value that uses an ISO pattern, there is nothing to do.
+  if (is_numeric($iso_string) || !preg_match(DATE_REGEX_ISO, $iso_string)) {
+    return $iso_string;
+  }
+  // First see if month and day parts are '-00-00'.
+  if (substr($iso_string, 4, 6) == '-00-00') {
+    return preg_replace('/([\d]{4}-)(00-00)(T[\d]{2}:[\d]{2}:[\d]{2})/', '${1}01-01${3}', $iso_string);
+  }
+  // Then see if the day part is '-00'.
+  elseif (substr($iso_string, 7, 3) == '-00') {
+    return preg_replace('/([\d]{4}-[\d]{2}-)(00)(T[\d]{2}:[\d]{2}:[\d]{2})/', '${1}01${3}', $iso_string);
+  }
+
+  // Fall through, no changes required.
+  return $iso_string;
+}
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_elements.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_elements.inc
index b5a90a0..7da4e58 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_elements.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_elements.inc
@@ -294,7 +294,7 @@ function date_text_element_value_callback($element, $input = FALSE, &$form_state
     $date = date_default_date($element);
   }
   if (date_is_date($date)) {
-    $return['date'] = $date->format($element['#date_format']);
+    $return['date'] = date_format_date($date, 'custom', $element['#date_format']);
   }
   return $return;
 }
@@ -320,7 +320,7 @@ function date_text_element_process($element, &$form_state, $form) {
   $element['date']['#weight'] = !empty($element['date']['#weight']) ? $element['date']['#weight'] : $element['#weight'];
   $element['date']['#attributes'] = array('class' => isset($element['#attributes']['class']) ? $element['#attributes']['class'] += array('date-date') : array('date-date'));
   $now = date_example_date();
-  $element['date']['#description'] = ' ' . t('Format: @date', array('@date' => date_now()->format($element['#date_format'])));
+  $element['date']['#description'] = ' ' . t('Format: @date', array('@date' => date_format_date(date_example_date(), 'custom', $element['#date_format'])));
   $element['date']['#ajax'] = !empty($element['#ajax']) ? $element['#ajax'] : FALSE;
 
   // Keep the system from creating an error message for the sub-element.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_ical.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_ical.inc
index 7cb2b95..2ca484e 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_ical.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_ical.inc
@@ -215,15 +215,31 @@ function date_ical_parse($icaldatafolded = array()) {
             // even when you are working with only a portion of the VEVENT
             // array, like in Feed API parsers.
             $subgroup['all_day'] = FALSE;
-            if (!empty($subgroup['DTSTART']) && (!empty($subgroup['DTSTART']['all_day']) ||
-              (empty($subgroup['DTEND']) && empty($subgroup['RRULE']) && empty($subgroup['RRULE']['COUNT'])))) {
-              // Many programs output DTEND for an all day event as the
-              // following day, reset this to the same day for internal use.
-              $subgroup['all_day'] = TRUE;
+
+            // iCal spec states 'The "DTEND" property for a "VEVENT" calendar
+            // component specifies the non-inclusive end of the event'. Adjust
+            // multi-day events to remove the extra day because the Date code
+            // assumes the end date is inclusive.
+            if (!empty($subgroup['DTEND']) && (!empty($subgroup['DTEND']['all_day']))) {
+              // Make the end date one day earlier.
+              $date = new DateObject ($subgroup['DTEND']['datetime'] . ' 00:00:00', $subgroup['DTEND']['tz']);
+              date_modify($date, '-1 day');
+              $subgroup['DTEND']['datetime'] = date_format($date,  'Y-m-d');
+            }
+            // If a start datetime is defined AND there is no definition for
+            // the end datetime THEN make the end datetime equal the start
+            // datetime and if it is an all day event define the entire event
+            // as a single all day event.
+            if (!empty($subgroup['DTSTART']) &&
+               (empty($subgroup['DTEND']) && empty($subgroup['RRULE']) && empty($subgroup['RRULE']['COUNT']))) {
               $subgroup['DTEND'] = $subgroup['DTSTART'];
             }
             // Add this element to the parent as an array under the component
             // name.
+            if (!empty($subgroup['DTSTART']['all_day'])) {
+              $subgroup['all_day'] = TRUE;
+            }
+            // Add this element to the parent as an array under the
             prev($subgroups);
             $parent = &$subgroups[key($subgroups)];
 
@@ -291,6 +307,7 @@ function date_ical_parse($icaldatafolded = array()) {
           $parse_result = date_ical_parse_rrule($field, $data);
           break;
 
+        case 'STATUS':
         case 'SUMMARY':
         case 'DESCRIPTION':
           $parse_result = date_ical_parse_text($field, $data);
@@ -712,9 +729,12 @@ function date_api_ical_build_rrule($form_values) {
     // We only collect a date for UNTIL, but we need it to be inclusive, so
     // force it to a full datetime element at the last second of the day.
     if (!is_object($form_values['UNTIL']['datetime'])) {
-      $form_values['UNTIL']['datetime'] .= ' 23:59:59';
-      $form_values['UNTIL']['granularity'] = serialize(drupal_map_assoc(array('year', 'month', 'day', 'hour', 'minute', 'second')));
-      $form_values['UNTIL']['all_day'] = 0;
+      // If this is a date without time, give it time.
+      if (strlen($form_values['UNTIL']['datetime']) < 11) {
+        $form_values['UNTIL']['datetime'] .= ' 23:59:59';
+        $form_values['UNTIL']['granularity'] = serialize(drupal_map_assoc(array('year', 'month', 'day', 'hour', 'minute', 'second')));
+        $form_values['UNTIL']['all_day'] = FALSE;
+      }
       $until = date_ical_date($form_values['UNTIL'], 'UTC');
     }
     else {
@@ -745,7 +765,7 @@ function date_api_ical_build_rrule($form_values) {
     foreach ($form_values['EXDATE'] as $value) {
       if (!empty($value['datetime'])) {
         $date = !is_object($value['datetime']) ? date_ical_date($value, 'UTC') : $value['datetime'];
-        $ex_date = !empty($date) ? $date->format(DATE_FORMAT_ICAL) . 'Z': '';
+        $ex_date = !empty($date) ? date_format($date, DATE_FORMAT_ICAL) . 'Z': '';
         if (!empty($ex_date)) {
           $ex_dates[] = $ex_date;
         }
@@ -765,7 +785,7 @@ function date_api_ical_build_rrule($form_values) {
     $ex_dates = array();
     foreach ($form_values['RDATE'] as $value) {
       $date = !is_object($value['datetime']) ? date_ical_date($value, 'UTC') : $value['datetime'];
-      $ex_date = !empty($date) ? $date->format(DATE_FORMAT_ICAL) . 'Z': '';
+      $ex_date = !empty($date) ? date_format($date, DATE_FORMAT_ICAL) . 'Z': '';
       if (!empty($ex_date)) {
         $ex_dates[] = $ex_date;
       }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_sql.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_sql.inc
index ede8b1e..a2adc65 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_sql.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_api/date_api_sql.inc
@@ -598,7 +598,7 @@ class date_sql_handler {
    * @return string
    *   SQL for the where clause for this operation.
    */
-  function sql_where_date($type, $field, $operator, $value, $adjustment = 0) {
+  function sql_where_date($type, $field, $operator, $value, $adjustment = NULL) {
     $type = strtoupper($type);
     if (strtoupper($value) == 'NOW') {
       $value = $this->sql_field('NOW', $adjustment);
@@ -644,12 +644,12 @@ class date_sql_handler {
    * @return string
    *   SQL for the where clause for this operation.
    */
-  function sql_where_extract($part, $field, $operator, $value) {
-    if ($this->local_timezone != $this->db_timezone) {
+  function sql_where_extract($part, $field, $operator, $value, $adjustment = NULL) {
+    if (empty($adjustment) && $this->local_timezone != $this->db_timezone) {
       $field = $this->sql_field($field);
     }
     else {
-      $field = $this->sql_field($field, 0);
+      $field = $this->sql_field($field, $adjustment);
     }
     return $this->sql_extract($part, $field) . " $operator $value";
   }
@@ -670,12 +670,12 @@ class date_sql_handler {
    * @return string
    *   SQL for the where clause for this operation.
    */
-  function sql_where_format($format, $field, $operator, $value) {
-    if ($this->local_timezone != $this->db_timezone) {
+  function sql_where_format($format, $field, $operator, $value, $adjustment = NULL) {
+    if (empty($adjustment) && $this->local_timezone != $this->db_timezone) {
       $field = $this->sql_field($field);
     }
     else {
-      $field = $this->sql_field($field, 0);
+      $field = $this->sql_field($field, $adjustment);
     }
     return $this->sql_format($format, $field) . " $operator '$value'";
   }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.info
index 63f0129..a69a599 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.info
@@ -8,9 +8,9 @@ dependencies[] = context
 
 files[] = date_context.module
 files[] = plugins/date_context_date_condition.inc
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.module b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.module
index a5d2650..44e975a 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/date_context.module
@@ -30,6 +30,8 @@ function date_context_context_plugins() {
     'handler' => array(
       'class' => 'date_context_date_condition',
       'parent' => 'context_condition_node',
+      'path' => drupal_get_path('module', 'date_context') . '/plugins',
+      'file' => 'date_context_date_condition.inc',
     ),
   );
   return $plugins;
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc
index 3fcb042..733fb5a 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc
@@ -82,6 +82,9 @@ class date_context_date_condition extends context_condition_node {
               $date = new DateObject($item['value'], $timezone_db);
               date_timezone_set($date, timezone_open($timezone));
               $date1 = $date->format(DATE_FORMAT_DATETIME);
+              if (empty($item['value2'])) {
+                $item['value2'] = $item['value'];
+              }
               $date = new DateObject($item['value2'], $timezone_db);
               date_timezone_set($date, timezone_open($timezone));
               $date2 = $date->format(DATE_FORMAT_DATETIME);
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate.info
index 487fec8..c0d536f 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate.info
@@ -8,9 +8,9 @@ dependencies[] = date
 files[] = date.migrate.inc
 files[] = date_migrate.test
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info
index ad43d98..b54a3f7 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info
@@ -21,9 +21,9 @@ package = "Features"
 project = "date_migrate_example"
 version = "7.x-2.0"
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.info
index f781721..767aaca 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.info
@@ -7,9 +7,9 @@ configure = admin/config/date/date_popup
 
 stylesheets[all][] = themes/datepicker.1.7.css
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.module b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.module
index aa78033..ca292ef 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_popup/date_popup.module
@@ -185,6 +185,15 @@ function date_popup_theme() {
  *   The number of years to go back and forward in a year selector,
  *   default is -3:+3 (3 back and 3 forward).
  *
+ * #datepicker_options
+ *   An associative array representing the jQuery datepicker options you want
+ *   to set for this element. Use the jQuery datepicker option names as keys.
+ *   Hard coded defaults are:
+ *   - changeMonth => TRUE
+ *   - changeYear => TRUE
+ *   - autoPopUp => 'focus'
+ *   - closeAtTop => FALSE
+ *   - speed => 'immediate'
  */
 function date_popup_element_info() {
   $timepicker = date_popup_get_preferred_timepicker();
@@ -194,6 +203,7 @@ function date_popup_element_info() {
     '#date_timezone' => date_default_timezone(),
     '#date_flexible' => 0,
     '#date_format' => variable_get('date_format_short', 'm/d/Y - H:i'),
+    '#datepicker_options' => array(),
     '#timepicker' => variable_get('date_popup_timepicker', $timepicker),
     '#date_increment' => 1,
     '#date_year_range' => '-3:+3',
@@ -317,20 +327,22 @@ function date_popup_process_date_part(&$element) {
   $range = date_range_years($element['#date_year_range'], $date);
   $year_range = date_range_string($range);
 
-  $settings = array(
+  // Add the dynamic datepicker options. Allow element-specific datepicker
+  // preferences to override these options for whatever reason they see fit.
+  $settings = $element['#datepicker_options'] + array(
     'changeMonth' => TRUE,
     'changeYear' => TRUE,
-    'firstDay' => intval(variable_get('date_first_day', 0)),
-    //'buttonImage' => base_path() . drupal_get_path('module', 'date_api') ."/images/calendar.png",
-    //'buttonImageOnly' => TRUE,
     'autoPopUp' => 'focus',
     'closeAtTop' => FALSE,
     'speed' => 'immediate',
+    'firstDay' => intval(variable_get('date_first_day', 0)),
+    //'buttonImage' => base_path() . drupal_get_path('module', 'date_api') ."/images/calendar.png",
+    //'buttonImageOnly' => TRUE,
     'dateFormat' => date_popup_format_to_popup(date_popup_date_format($element), 'datepicker'),
     'yearRange' => $year_range,
     // Custom setting, will be expanded in Drupal.behaviors.date_popup()
     'fromTo' => isset($fromto),
-    );
+  );
 
   // Create a unique id for each set of custom settings.
   $id = date_popup_js_settings_id($element['#id'], 'datepicker', $settings);
@@ -353,7 +365,7 @@ function date_popup_process_date_part(&$element) {
   );
   $sub_element['#value'] = $sub_element['#default_value'];
   // TODO, figure out exactly when we want this description. In many places it is not desired.
-  $sub_element['#description'] = ' '. t('E.g., @date', array('@date' => date_format_date(date_now(), 'custom', date_popup_date_format($element))));
+  $sub_element['#description'] = ' '. t('E.g., @date', array('@date' => date_format_date(date_example_date(), 'custom', date_popup_date_format($element))));
 
   return $sub_element;
 }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat/date_repeat.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat/date_repeat.info
index c1ff662..1d1720a 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat/date_repeat.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat/date_repeat.info
@@ -7,9 +7,9 @@ php = 5.2
 files[] = tests/date_repeat.test
 files[] = tests/date_repeat_form.test
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat_field/date_repeat_field.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat_field/date_repeat_field.info
index 0b57d62..803105c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat_field/date_repeat_field.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_repeat_field/date_repeat_field.info
@@ -7,9 +7,9 @@ stylesheets[all][] = date_repeat_field.css
 package = Date/Time
 core = 7.x
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.info
index a34dcc8..3f392a4 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.info
@@ -6,9 +6,9 @@ core = 7.x
 configure = admin/config/date/tools
 files[] = tests/date_tools.test
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.wizard.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.wizard.inc
index 034cf37..14bc275 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.wizard.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_tools/date_tools.wizard.inc
@@ -264,7 +264,7 @@ function date_tools_wizard_build($form_values) {
 
   $field = field_create_field($field);
   $instance = field_create_instance($instance);
-  $view_name = 'calendar_' . $field_name;
+  $view_name = 'calendar_node_' . $field_name;
 
   field_info_cache_clear(TRUE);
   field_cache_clear(TRUE);
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/date_views.info b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/date_views.info
index 9216f8e..ef7da6c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/date_views.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/date_views.info
@@ -13,9 +13,9 @@ files[] = includes/date_views.views_default.inc
 files[] = includes/date_views.views.inc
 files[] = includes/date_views_plugin_pager.inc
 
-; Information added by drupal.org packaging script on 2012-04-19
-version = "7.x-2.5"
+; Information added by drupal.org packaging script on 2012-08-13
+version = "7.x-2.6"
 core = "7.x"
 project = "date"
-datestamp = "1334835098"
+datestamp = "1344850024"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_argument_handler.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_argument_handler.inc
index bba39a6..61aeafc 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_argument_handler.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_argument_handler.inc
@@ -150,6 +150,9 @@ class date_views_argument_handler extends date_views_argument_handler_simple {
     $this->query->set_where_group($this->options['date_method'], $this->options['date_group']);
     $this->granularity = $this->date_handler->arg_granularity($this->argument);
     $format = $this->date_handler->views_formats($this->granularity, 'sql');
+
+    $this->placeholders = array();
+
     if (!empty($this->query_fields)) {
       // Use set_where_group() with the selected date_method
       // of 'AND' or 'OR' to create the where clause.
@@ -161,7 +164,7 @@ class date_views_argument_handler extends date_views_argument_handler_simple {
         $this->table = $field['table_name'];
         $this->original_table = $field['table_name'];
         if ($field['table_name'] != $this->table || !empty($this->relationship)) {
-          $this->table = $this->query->queue_table($field['table_name'], $this->relationship);
+          $this->table = $this->query->ensure_table($field['table_name'], $this->relationship);
         }
         // $this->table_alias gets set when the first field is processed if otherwise empty.
         // For subsequent fields, we need to be sure it is emptied again.
@@ -169,6 +172,8 @@ class date_views_argument_handler extends date_views_argument_handler_simple {
           $this->table_alias = NULL;
         }
         parent::query($group_by);
+
+        $this->placeholders = array_merge($this->placeholders, $this->date_handler->placeholders);
       }
     }
   }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc
index 63467a2..5eb5ebc 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc
@@ -58,7 +58,7 @@ class date_views_filter_handler extends date_views_filter_handler_simple {
 
       // Respect relationships when determining the table alias.
       if ($field['table_name'] != $this->table || !empty($this->relationship)) {
-        $this->related_table_alias = $this->query->queue_table($field['table_name'], $this->relationship);
+        $this->related_table_alias = $this->query->ensure_table($field['table_name'], $this->relationship);
       }
       $table_alias = !empty($this->related_table_alias) ? $this->related_table_alias : $field['table_name'];
       $field_name = $table_alias . '.' . $field['field_name'];
@@ -174,4 +174,4 @@ class date_views_filter_handler extends date_views_filter_handler_simple {
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_plugin_pager.inc b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_plugin_pager.inc
index 10c6581..f9594a7 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_plugin_pager.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/date_views/includes/date_views_plugin_pager.inc
@@ -168,7 +168,7 @@ class date_views_plugin_pager extends views_plugin_pager {
         if (empty($this->view->date_info)) $this->view->date_info = new stdClass();
         $this->view->date_info->granularity = $argument->date_handler->granularity;
         $format = $this->view->date_info->granularity == 'week' ? DATE_FORMAT_DATETIME : $argument->sql_format;
-        $this->view->date_info->placeholders = $argument->date_handler->placeholders;
+        $this->view->date_info->placeholders = isset($argument->placeholders) ? $argument->placeholders : $argument->date_handler->placeholders;
         $this->view->date_info->date_arg = $argument->argument;
         $this->view->date_info->date_arg_pos = $i;
         $this->view->date_info->year = date_format($argument->min_date, 'Y');
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/date/tests/date_api.test b/kolab.org/www/drupal-7.14/sites/all/modules/date/tests/date_api.test
index aa39ac3..f50020c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/date/tests/date_api.test
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/date/tests/date_api.test
@@ -388,6 +388,14 @@ class DateAPITestCase extends DrupalWebTestCase {
     foreach ($invalid as $range) {
       $this->assertFalse(date_range_valid($range), "$range recognized as an invalid date range.");
     }
+
+    // Test for invalid month names when we are using a short version of the month
+    $input = '23 abc 2012';
+    $timezone = NULL;
+    $format = 'd M Y';
+    $date = new dateObject($input, $timezone, $format);
+    $this->assertNotEqual(count($date->errors), 0, '23 abc 2012 should be an invalid date');
+
   }
 
   /**
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.info b/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.info
index 09c3d7c..1488faa 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.info
@@ -7,9 +7,9 @@ files[] = pathauto.test
 configure = admin/config/search/path/patterns
 recommends[] = redirect
 
-; Information added by drupal.org packaging script on 2012-05-13
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-09
+version = "7.x-1.2"
 core = "7.x"
 project = "pathauto"
-datestamp = "1336950382"
+datestamp = "1344525185"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.install b/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.install
index dcca163..cd5211c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.install
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.install
@@ -33,7 +33,7 @@ function pathauto_install() {
  * Implements hook_uninstall().
  */
 function pathauto_uninstall() {
-  // Delete all the pathauto variables and then clear the variable cache
+  // Delete all the pathauto variables and then clear the variable cache.
   db_query("DELETE FROM {variable} WHERE name LIKE 'pathauto_%'");
   cache_clear_all('variables', 'cache');
 }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.module b/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.module
index 1875caa..dffc292 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/pathauto/pathauto.module
@@ -389,6 +389,34 @@ function pathauto_action_info() {
   return $info;
 }
 
+/**
+ * Returns the language code of the given entity.
+ *
+ * Backward compatibility layer to ensure that installations running an older
+ * version of core where entity_language() is not avilable do not break.
+ *
+ * @param string $entity_type
+ *   An entity type.
+ * @param object $entity
+ *   An entity object.
+ * @param bool $check_language_property
+ *   A boolean if TRUE, will attempt to fetch the language code from
+ *   $entity->language if the entity_language() function failed or does not
+ *   exist. Default is TRUE.
+ */
+function pathauto_entity_language($entity_type, $entity, $check_language_property = TRUE) {
+  $langcode = NULL;
+
+  if (function_exists('entity_language')) {
+    $langcode = entity_language($entity_type, $entity);
+  }
+  elseif ($check_language_property && !empty($entity->language)) {
+    $langcode = $entity->language;
+  }
+
+  return !empty($langcode) ? $langcode : LANGUAGE_NONE;
+}
+
 if (!function_exists('path_field_extra_fields')) {
 /**
  * Implements hook_field_extra_fields() on behalf of path.module.
@@ -461,7 +489,8 @@ function pathauto_node_delete($node) {
  */
 function pathauto_form_node_form_alter(&$form, &$form_state) {
   $node = $form_state['node'];
-  pathauto_field_attach_form('node', $node, $form, $form_state, $node->language);
+  $langcode = pathauto_entity_language('node', $node);
+  pathauto_field_attach_form('node', $node, $form, $form_state, $langcode);
 }
 
 /**
@@ -492,9 +521,7 @@ function pathauto_node_update_alias(stdClass $node, $op, array $options = array(
     return;
   }
 
-  $options += array(
-    'language' => !empty($node->language) ? $node->language : LANGUAGE_NONE,
-  );
+  $options += array('language' => pathauto_entity_language('node', $node));
 
   // Skip processing if the node has no pattern.
   if (!pathauto_pattern_load_by_entity('node', $node->type, $options['language'])) {
@@ -574,7 +601,7 @@ function pathauto_taxonomy_term_delete($term) {
  */
 function pathauto_form_taxonomy_form_term_alter(&$form, $form_state) {
   $term = $form_state['term'];
-  $langcode = !empty($term->language) ? $term->language : LANGUAGE_NONE;
+  $langcode = pathauto_entity_language('taxonomy_term', $term);
   pathauto_field_attach_form('taxonomy_term', $term, $form, $form_state, $langcode);
 }
 
@@ -594,11 +621,6 @@ function pathauto_taxonomy_term_update_alias(stdClass $term, $op, array $options
     return;
   }
 
-  $options += array(
-    'alias children' => FALSE,
-    'language' => !empty($term->language) ? $term->language : LANGUAGE_NONE,
-  );
-
   $module = 'taxonomy_term';
   if ($term->vid == variable_get('forum_nav_vocabulary', '')) {
     if (module_exists('forum')) {
@@ -615,6 +637,11 @@ function pathauto_taxonomy_term_update_alias(stdClass $term, $op, array $options
     $term->vocabulary_machine_name = $vocabulary->machine_name;
   }
 
+  $options += array(
+    'alias children' => FALSE,
+    'language' => pathauto_entity_language('taxonomy_term', $term),
+  );
+
   // Skip processing if the term has no pattern.
   if (!pathauto_pattern_load_by_entity($module, $term->vocabulary_machine_name)) {
     return;
@@ -727,7 +754,9 @@ function pathauto_user_update_alias(stdClass $account, $op, array $options = arr
 
   $options += array(
     'alias blog' => module_exists('blog'),
-    'language' => LANGUAGE_NONE,
+    // $user->language is not the user entity language, thus we need to skip
+    // the property fallback check.
+    'language' => pathauto_entity_language('user', $account, FALSE),
   );
 
   // Skip processing if the account has no pattern.
@@ -772,8 +801,8 @@ function pathauto_user_update_alias_multiple(array $uids, $op, array $options =
 /**
  * Update action wrapper for pathauto_user_update_alias().
  */
-function pathauto_user_update_action($user, $context = array()) {
-  pathauto_user_update_alias($user, 'bulkupdate', array('message' => TRUE));
+function pathauto_user_update_action($account, $context = array()) {
+  pathauto_user_update_alias($account, 'bulkupdate', array('message' => TRUE));
 }
 
 /**
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/token/tests/token_test.info b/kolab.org/www/drupal-7.14/sites/all/modules/token/tests/token_test.info
index 28ebbeb..873f716 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/token/tests/token_test.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/token/tests/token_test.info
@@ -5,9 +5,9 @@ core = 7.x
 files[] = token_test.module
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-05-15
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-10
+version = "7.x-1.2"
 core = "7.x"
 project = "token"
-datestamp = "1337115392"
+datestamp = "1344634643"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.css b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.css
index 5c3b3ba..5432f0f 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.css
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.css
@@ -4,6 +4,10 @@
   margin-left: 19px;
 }
 
+.ui-dialog-content .token-tree {
+  margin-left: 0;
+}
+
 .token-tree td, .token-tree th {
   padding-top: 0;
   padding-bottom: 0;
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.info b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.info
index f111902..c6d512e 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.info
@@ -7,9 +7,9 @@ files[] = token.tokens.inc
 files[] = token.pages.inc
 files[] = token.test
 
-; Information added by drupal.org packaging script on 2012-05-15
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-10
+version = "7.x-1.2"
 core = "7.x"
 project = "token"
-datestamp = "1337115392"
+datestamp = "1344634643"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.js b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.js
index 59715f4..88a75c1 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.js
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.js
@@ -9,6 +9,32 @@ Drupal.behaviors.tokenTree = {
   }
 };
 
+Drupal.behaviors.tokenDialog = {
+  attach: function (context, settings) {
+    $('a.token-dialog', context).once('token-dialog').click(function() {
+      var url = $(this).attr('href');
+      var dialog = $('<div style="display: none" class="loading">' + Drupal.t('Loading token browser...') + '</div>').appendTo('body');
+      dialog.dialog({
+        title: $(this).attr('title') || Drupal.t('Available tokens'),
+        width: 700,
+        close: function(event, ui) {
+          dialog.remove();
+        }
+      });
+      // Load the token tree using AJAX.
+      dialog.load(
+        url,
+        {},
+        function (responseText, textStatus, XMLHttpRequest) {
+          dialog.removeClass('loading');
+        }
+      );
+      // Prevent browser from following the link.
+      return false;
+    });
+  }
+}
+
 Drupal.behaviors.tokenInsert = {
   attach: function (context, settings) {
     // Keep track of which textfield was last selected/focused.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.module b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.module
index 56e3ceb..509a4da 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.module
@@ -73,6 +73,13 @@ function token_menu() {
     'file' => 'token.pages.inc',
   );*/
 
+  $items['token/tree'] = array(
+    'page callback' => 'token_page_output_tree',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'token.pages.inc',
+  );
+
   // Devel token pages.
   if (module_exists('devel')) {
     $items['node/%node/devel/token'] = array(
@@ -146,16 +153,38 @@ function token_type_load($token_type) {
  * Implements hook_theme().
  */
 function token_theme() {
-  return array(
-    'tree_table' => array(
-      'variables' => array('header' => array(), 'rows' => array(), 'attributes' => array(), 'empty' => '', 'caption' => ''),
-      'file' => 'token.pages.inc',
+  $info['tree_table'] = array(
+    'variables' => array(
+      'header' => array(),
+      'rows' => array(),
+      'attributes' => array(),
+      'empty' => '',
+      'caption' => '',
     ),
-    'token_tree' => array(
-      'variables' => array('token_types' => array(), 'global_types' => TRUE, 'click_insert' => TRUE, 'show_restricted' => FALSE, 'recursion_limit' => 3),
-      'file' => 'token.pages.inc',
+    'file' => 'token.pages.inc',
+  );
+  $info['token_tree'] = array(
+    'variables' => array(
+      'token_types' => array(),
+      'global_types' => TRUE,
+      'click_insert' => TRUE,
+      'show_restricted' => FALSE,
+      'recursion_limit' => 3,
+      'dialog' => FALSE,
     ),
+    'file' => 'token.pages.inc',
   );
+  $info['token_tree_link'] = array(
+    'variables' => array(
+      'text' => NULL,
+      'options' => array(),
+      'dialog' => TRUE,
+    ),
+    'file' => 'token.pages.inc',
+  );
+  $info['token_tree_link']['variables'] += $info['token_tree']['variables'];
+
+  return $info;
 }
 
 /**
@@ -175,6 +204,17 @@ function token_library() {
     ),
   );
 
+  $libraries['dialog'] = array(
+    'title' => 'Token dialog',
+    'version' => '1.0',
+    'js' => array(
+      drupal_get_path('module', 'token') . '/token.js' => array(),
+    ),
+    'dependencies' => array(
+      array('system', 'ui.dialog'),
+    ),
+  );
+
   return $libraries;
 }
 
@@ -674,7 +714,7 @@ function token_element_validate(&$element, &$form_state) {
   }
 
   // Check if the field defines specific token types.
-  if (!empty($element['#token_types'])) {
+  if (isset($element['#token_types'])) {
     $invalid_tokens = token_get_invalid_tokens_by_context($tokens, $element['#token_types']);
     if ($invalid_tokens) {
       form_error($element, t('The %element-title is using the following invalid tokens: @invalid-tokens.', array('%element-title' => $title, '@invalid-tokens' => implode(', ', $invalid_tokens))));
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.pages.inc b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.pages.inc
index d2f06e9..264a14a 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.pages.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.pages.inc
@@ -6,6 +6,37 @@
  */
 
 /**
+ * Theme a link to a token tree either as a regular link or a dialog.
+ */
+function theme_token_tree_link($variables) {
+  if (empty($variables['text'])) {
+    $variables['text'] = t('Browse available tokens.');
+  }
+
+  if (!empty($variables['dialog'])) {
+    drupal_add_library('token', 'dialog');
+    $variables['options']['attributes']['class'][] = 'token-dialog';
+  }
+
+  $info = token_theme();
+  $variables['options']['query']['token_tree'] = array_intersect_key($variables, $info['token_tree']['variables']);
+  $variables['options']['attributes'] + array('target' => '_blank');
+
+  return l($variables['text'], 'token/tree', $variables['options']);
+}
+
+/**
+ * Page callback to output a token tree as an empty page.
+ */
+function token_page_output_tree() {
+  $options = isset($_GET['token_tree']) ? $_GET['token_tree'] : array();
+  $output = theme('token_tree', array('dialog' => FALSE) + $options);
+  print '<html><head><title></title>' . drupal_get_css() . drupal_get_js() . '</head>';
+  print '<body class="token-tree">' . $output . '</body></html>';
+  drupal_exit();
+}
+
+/**
  * Theme a tree table.
  *
  * @ingroup themeable
@@ -32,6 +63,10 @@ function theme_tree_table($variables) {
  * @ingroup themeable
  */
 function theme_token_tree($variables) {
+  if (!empty($variables['dialog'])) {
+    return theme_token_tree_link($variables);
+  }
+
   $token_types = $variables['token_types'];
   $info = token_get_info();
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.test b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.test
index 9482ecf..b7e9582 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/token/token.test
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/token/token.test
@@ -1069,11 +1069,17 @@ class TokenBlockTestCase extends TokenTestHelper {
   }
 
   public function testBlockTitleTokens() {
-    $edit['title'] = '[current-page:title] block title';
+    $edit['title'] = '[user:name]';
     $edit['info'] = 'Test token title block';
     $edit['body[value]'] = 'This is the test token title block.';
-    $edit['regions[bartik]'] = 'sidebar_first';
     $this->drupalPost('admin/structure/block/add', $edit, 'Save block');
+    // Ensure token validation is working on the block.
+    $this->assertText('The Block title is using the following invalid tokens: [user:name].');
+
+    // Create the block for real now with a valid title.
+    $edit['title'] = '[current-page:title] block title';
+    $edit['regions[bartik]'] = 'sidebar_first';
+    $this->drupalPost(NULL, $edit, 'Save block');
 
     $this->drupalGet('node');
     $this->assertText('Welcome to ' . variable_get('site_name', 'Drupal') . ' block title');
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.info b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.info
index 48ebf88..0bcd06b 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.info
@@ -5,9 +5,9 @@ hidden = TRUE
 dependencies[] = twitter
 dependencies[] = simpletest
 
-; Information added by drupal.org packaging script on 2012-06-10
-version = "7.x-3.1"
+; Information added by drupal.org packaging script on 2012-08-11
+version = "7.x-3.2"
 core = "7.x"
 project = "twitter"
-datestamp = "1339367233"
+datestamp = "1344714197"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.module b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.module
index 87166ca..4a128a1 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/tests/twitter_mock.module
@@ -54,7 +54,8 @@ function twitter_mock_user_show() {
     $response = <<<EOD
 {"id":2166341,"profile_background_tile":false,"listed_count":2823,"profile_sidebar_fill_color":"B2CCFF","location":"Internet","utc_offset":3600,"name":"Drupal","is_translator":false,"time_zone":"Amsterdam","profile_image_url_https":"https:\\/\\/si0.twimg.com\\/profile_images\\/29645282\\/druplicon_normal.png","contributors_enabled":false,"profile_background_color":"EEEEEE","protected":false,"geo_enabled":true,"profile_background_image_url_https":"https:\\/\\/si0.twimg.com\\/images\\/themes\\/theme1\\/bg.png","friends_count":173,"lang":"en","default_profile_image":false,"favourites_count":69,"profile_background_image_url":"http:\\/\\/a0.twimg.com\\/images\\/themes\\/theme1\\/bg.png","statuses_count":1341,"show_all_inline_media":false,"profile_link_color":"0303AA","description":"Drupal is a Free, Open, Modular CMS written in PHP","follow_request_sent":false,"verified":false,"screen_name":"drupal","profile_use_background_image":false,"id_str":"2166341","notifications":false,"fo
 llowing":false,"profile_text_color":"000000","profile_image_url":"http:\\/\\/a0.twimg.com\\/profile_images\\/29645282\\/druplicon_normal.png","status":{"created_at":"Sat Apr 21 01:17:17 +0000 2012","possibly_sensitive":false,"in_reply_to_screen_name":null,"place":null,"geo":null,"retweet_count":12,"in_reply_to_status_id":null,"retweeted":false,"in_reply_to_user_id":null,"possibly_sensitive_editable":true,"truncated":false,"id_str":"193508673891479552","coordinates":null,"in_reply_to_status_id_str":null,"source":"\\u003Ca href=\\"http:\\/\\/www.hootsuite.com\\" rel=\\"nofollow\\"\\u003EHootSuite\\u003C\\/a\\u003E","contributors":null,"id":193508673891479552,"in_reply_to_user_id_str":null,"favorited":false,"text":"http:\\/\\/t.co\\/H5KmuEcb Update: New maintainers and plans for Drupal 7 http:\\/\\/t.co\\/RxNQexML"},"default_profile":false,"url":"http:\\/\\/drupal.org","followers_count":30257,"profile_sidebar_border_color":"447DBC","created_at":"Sun Mar 25 09:59:38 +0000 2007"}
 EOD;
-  } else {
+  }
+  else {
     $response = '{"error":"Not found","request":"\/users\/show.json?screen_name=' . $_GET['screen_name'] . '"}';
   }
   print $response;
@@ -69,7 +70,8 @@ function twitter_mock_user_timeline() {
     $response = <<<EOD
 [{"created_at":"Sat Apr 21 01:17:17 +0000 2012","possibly_sensitive":false,"in_reply_to_screen_name":null,"place":null,"geo":null,"retweet_count":12,"in_reply_to_status_id":null,"user":{"id":2166341,"profile_background_tile":false,"listed_count":2824,"profile_sidebar_fill_color":"B2CCFF","location":"Internet","utc_offset":3600,"name":"Drupal","is_translator":false,"time_zone":"Amsterdam","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/29645282\/druplicon_normal.png","contributors_enabled":false,"profile_background_color":"EEEEEE","protected":false,"geo_enabled":true,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","friends_count":173,"lang":"en","default_profile_image":false,"favourites_count":69,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","statuses_count":1341,"show_all_inline_media":false,"profile_link_color":"0303AA","description":"Drupal is a Free, Open, Modular C
 MS written in PHP","follow_request_sent":false,"verified":false,"screen_name":"drupal","profile_use_background_image":false,"id_str":"2166341","notifications":false,"following":true,"profile_text_color":"000000","profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/29645282\/druplicon_normal.png","default_profile":false,"url":"http:\/\/drupal.org","followers_count":30269,"profile_sidebar_border_color":"447DBC","created_at":"Sun Mar 25 09:59:38 +0000 2007"},"retweeted":false,"in_reply_to_user_id":null,"possibly_sensitive_editable":true,"truncated":false,"id_str":"193508673891479552","coordinates":null,"in_reply_to_status_id_str":null,"source":"\u003Ca href=\"http:\/\/www.hootsuite.com\" rel=\"nofollow\"\u003EHootSuite\u003C\/a\u003E","contributors":null,"id":193508673891479552,"in_reply_to_user_id_str":null,"favorited":false,"text":"http:\/\/t.co\/H5KmuEcb Update: New maintainers and plans for Drupal 7 http:\/\/t.co\/RxNQexML"},{"created_at":"Wed Mar 07 07:55:39 +0000 2
 012","in_reply_to_screen_name":null,"place":null,"geo":null,"retweet_count":4,"in_reply_to_status_id":null,"user":{"id":2166341,"profile_background_tile":false,"listed_count":2824,"profile_sidebar_fill_color":"B2CCFF","location":"Internet","utc_offset":3600,"name":"Drupal","is_translator":false,"time_zone":"Amsterdam","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/29645282\/druplicon_normal.png","contributors_enabled":false,"profile_background_color":"EEEEEE","protected":false,"geo_enabled":true,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","friends_count":173,"lang":"en","default_profile_image":false,"favourites_count":69,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","statuses_count":1341,"show_all_inline_media":false,"profile_link_color":"0303AA","description":"Drupal is a Free, Open, Modular CMS written in PHP","follow_request_sent":false,"verified":false,"screen
 _name":"drupal","profile_use_background_image":false,"id_str":"2166341","notifications":false,"following":true,"profile_text_color":"000000","profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/29645282\/druplicon_normal.png","default_profile":false,"url":"http:\/\/drupal.org","followers_count":30269,"profile_sidebar_border_color":"447DBC","created_at":"Sun Mar 25 09:59:38 +0000 2007"},"retweeted":false,"in_reply_to_user_id":null,"truncated":false,"id_str":"177301470608244737","coordinates":null,"in_reply_to_status_id_str":null,"source":"\u003Ca href=\"http:\/\/www.hootsuite.com\" rel=\"nofollow\"\u003EHootSuite\u003C\/a\u003E","contributors":null,"id":177301470608244737,"in_reply_to_user_id_str":null,"favorited":false,"text":"RT @drupalassoc: Hey @cebit folks! Meet the Drupal team in the Open Source Park - Hall 2, Booth D58-166 - Learn more about #drupal and..."}]
 EOD;
-  } else {
+  }
+  else {
     // NOT covered.
     $response = '';
   }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.inc b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.inc
index 5ddf740..92b18cd 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.inc
@@ -1,6 +1,7 @@
 <?php
 
 /**
+ * @file
  * Twitter API functions
  */
 
@@ -14,7 +15,7 @@ function twitter_connect($account) {
     return new TwitterOAuth(variable_get('twitter_consumer_key', ''), variable_get('twitter_consumer_secret', ''),
                             $auth['oauth_token'], $auth['oauth_token_secret']);
   }
-  else if ($auth['password']) {
+  elseif ($auth['password']) {
     return new Twitter($account->screen_name, $auth['password']);
   }
   else {
@@ -103,10 +104,17 @@ function twitter_status_save($status) {
 
 /**
  * Post a message to twitter
+ *
+ * @param $twitter_account
+ *   object with a Twitter account.
+ * @param $status
+ *   string message to publish.
+ * @return
+ *   array response from Twitter API.
  */
 function twitter_set_status($twitter_account, $status) {
   $twitter = twitter_connect($twitter_account);
-  $twitter->status_update($status);
+  return $twitter->status_update($status);
 }
 
 /**
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.info b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.info
index c307ec6..dfeeace 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.info
@@ -8,9 +8,9 @@ files[] = tests/core.test
 files[] = tests/input_filters.test
 configure = admin/config/services/twitter
 
-; Information added by drupal.org packaging script on 2012-06-10
-version = "7.x-3.1"
+; Information added by drupal.org packaging script on 2012-08-11
+version = "7.x-3.2"
 core = "7.x"
 project = "twitter"
-datestamp = "1339367233"
+datestamp = "1344714197"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.lib.php b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.lib.php
index bcbc746..a852b57 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.lib.php
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.lib.php
@@ -7,8 +7,17 @@
 /**
  * Exception handling class.
  */
-class TwitterException extends Exception {}
-
+class TwitterException extends Exception {
+  /**
+   * Overrides constructor to log the error.
+   */
+  public function __construct($message = NULL, $code = 0, Exception $previous = NULL) {
+    watchdog('twitter', 'Unexpected error: @message', array(
+      '@message' => $message,
+    ), WATCHDOG_ERROR);
+    parent::__construct($message, $code, $previous);
+  }
+}
 /**
  * Primary Twitter API implementation class
  * Supports the full REST API for twitter.
@@ -106,13 +115,11 @@ class Twitter {
       $params['source'] = $this->source;
     }
     $values = $this->call('statuses/update', $params, 'POST', TRUE);
-
     return new TwitterStatus($values);
   }
 
-
   /**
-   *
+   * Returns profile information about a user.
    * @see http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-users%C2%A0show
    */
   public function users_show($id, $use_auth = TRUE) {
@@ -147,17 +154,11 @@ class Twitter {
   public function call($path, $params = array(), $method = 'GET', $use_auth = FALSE) {
     $url = $this->create_url($path);
 
-    try {
-      if ($use_auth) {
-        $response = $this->auth_request($url, $params, $method);
-      }
-      else {
-        $response = $this->request($url, $params, $method);
-      }
+    if ($use_auth) {
+      $response = $this->auth_request($url, $params, $method);
     }
-    catch (TwitterException $e) {
-      watchdog('twitter', '!message', array('!message' => $e->__toString()), WATCHDOG_ERROR);
-      return FALSE;
+    else {
+      $response = $this->request($url, $params, $method);
     }
 
     if (!$response) {
@@ -207,9 +208,15 @@ class Twitter {
     }
     else {
       $error = $response->error;
-      $data = $this->parse_response($response->data);
-      if (isset($data['error'])) {
-        $error = $data['error'];
+      // Check if Twitter returned an error in the response data.
+      if (isset($response->data)) {
+        $data = $this->parse_response($response->data);
+        if (isset($data['errors'])) {
+          $error = $data['errors'][0]['message'];
+        }
+        elseif (isset($data['error'])) {
+          $error = $data['error'];
+        }
       }
       throw new TwitterException($error);
     }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.module b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.module
index b18ce34..b50ed9c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.module
@@ -143,8 +143,12 @@ function twitter_cron() {
   // that the most out-of-date accounts get updated first.
   module_load_include('inc', 'twitter');
   $result = db_query_range("SELECT twitter_uid FROM {twitter_account} WHERE import = :import ORDER BY last_refresh ASC", 0, 20, array(':import' => 1));
-  foreach ($result as $account) {
-    twitter_fetch_user_timeline($account->twitter_uid);
+  try {
+    foreach ($result as $account) {
+      twitter_fetch_user_timeline($account->twitter_uid);
+    }
+  } catch (TwitterException $e) {
+    // The exception has already been logged so we do not need to do anything here apart from catching it.
   }
 
   // Nuke old statuses.
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.pages.inc b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.pages.inc
index 7e8d8ec..d17fff7 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.pages.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.pages.inc
@@ -1,4 +1,8 @@
 <?php
+/**
+ * @file
+ * Page callbacks for Twitter module.
+ */
 
 /**
  * Form builder; Twitter settings form.
@@ -338,7 +342,12 @@ function twitter_account_form_submit($form, &$form_state) {
 
   $name = $form_state['values']['screen_name'];
   $twitter = new Twitter($name);
-  $account = $twitter->users_show($name, false);
+  try {
+    $account = $twitter->users_show($name, FALSE);
+  } catch (TwitterException $e) {
+    form_set_error('screen_name', t('Request failed: @message.', array('@message' => $e->getMessage())));
+    return;
+  }
   twitter_account_save($account, TRUE, user_load($form_state['values']['uid']));
 }
 
@@ -371,6 +380,10 @@ function twitter_account_oauth_validate($form, &$form_state) {
  * Wrapper to call drupal_form_submit() which wasn't required in D6.
  */
 function twitter_oauth_callback() {
+  if (isset($_GET['denied']) || empty($_GET['oauth_token'])) {
+    drupal_set_message(t('The connection to Twitter failed. Please try again.'), 'error');
+    drupal_goto('<front>');
+  }
   $form_state['values']['oauth_token'] = $_GET['oauth_token'];
   drupal_form_submit('twitter_oauth_callback_form', $form_state);
 }
@@ -449,12 +462,16 @@ function twitter_oauth_callback_form_submit($form, &$form_state) {
   $response = $form_state['twitter_oauth']['response'];
 
   $twitter = new TwitterOAuth($key, $secret, $response['oauth_token'], $response['oauth_token_secret']);
-  $twitter_account = $twitter->users_show($response['screen_name']);
+  try {
+    $twitter_account = $twitter->users_show($response['screen_name']);
+  } catch (TwitterException $e) {
+    form_set_error('screen_name', t('Request failed: @message.', array('@message' => $e->getMessage())));
+    return;
+  }
   $twitter_account->set_auth($response);
   $account = $form_state['twitter_oauth']['account'];
   twitter_account_save($twitter_account, TRUE, $account);
 
   $form_state['programmed'] = FALSE;
-
   $form_state['redirect'] = $form_state['twitter_oauth']['destination'];
 }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.views_default.inc b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.views_default.inc
index 4ace488..1205e1d 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.views_default.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter.views_default.inc
@@ -1,5 +1,8 @@
 <?php
-
+/**
+ * @file
+ * Default views for Twitter module.
+ */
 function twitter_views_default_views() {
   $view = new view;
   $view->name = 'tweets';
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.info b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.info
index bc03166..4d2b6d3 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.info
@@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = twitter
 dependencies[] = oauth_common
 
-; Information added by drupal.org packaging script on 2012-06-10
-version = "7.x-3.1"
+; Information added by drupal.org packaging script on 2012-08-11
+version = "7.x-3.2"
 core = "7.x"
 project = "twitter"
-datestamp = "1339367233"
+datestamp = "1344714197"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.rules.inc b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.rules.inc
index 1ea7395..1efac55 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.rules.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_actions/twitter_actions.rules.inc
@@ -42,10 +42,18 @@ function twitter_actions_set_status($message, $sender) {
   if ($twitter_uid = db_query("SELECT twitter_uid FROM {twitter_account} WHERE uid = :uid", array(':uid' => $sender->uid))->fetchField()) {
     module_load_include('inc', 'twitter');
     $twitter_account = twitter_account_load($twitter_uid);
-    twitter_set_status($twitter_account, $message);
+    try {
+      twitter_set_status($twitter_account, $message);
+      drupal_set_message(t('Successfully posted to Twitter'));
+    }
+    catch (TwitterException $e) {
+      drupal_set_message(t('An error occurred when posting to Twitter: @message',
+                           array('@message' => $e->getMessage())), 'warning');
+    }
   }
   else {
-    watchdog('twitter', 'Twitter authentication failed. Please check your account name and try again.', array(), WATCHDOG_ERROR);
+    watchdog('twitter', 'Could not find the Twitter account to be used for posting. Please review the rule settings.',
+             array(), WATCHDOG_ERROR);
   }
 }
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.info b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.info
index 1dbeaeb..f515a7f 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.info
@@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = twitter
 dependencies[] = oauth_common
 
-; Information added by drupal.org packaging script on 2012-06-10
-version = "7.x-3.1"
+; Information added by drupal.org packaging script on 2012-08-11
+version = "7.x-3.2"
 core = "7.x"
 project = "twitter"
-datestamp = "1339367233"
+datestamp = "1344714197"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.module b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.module
index ff0c426..b1debd3 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.module
@@ -99,12 +99,12 @@ function twitter_post_node_insert($node) {
 
     $status = strtr($node->twitter['status'], $replacements);
     try {
-      $result = twitter_set_status($twitter_account, $status);
+      twitter_set_status($twitter_account, $status);
       drupal_set_message(t('Successfully posted to Twitter'));
     }
     catch (TwitterException $e) {
-      drupal_set_message(t('An error occurred when posting to twitter: %code %error',
-                           array('%code' => $result->code, '%error' => $result->error)), 'warning');
+      drupal_set_message(t('An error occurred when posting to Twitter: @message',
+                           array('@message' => $e->getMessage())), 'warning');
     }
   }
 }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.pages.inc b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.pages.inc
index e4ef91a..5fe9b89 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.pages.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_post/twitter_post.pages.inc
@@ -1,4 +1,9 @@
 <?php
+/**
+ * @file
+ *
+ * Page callbacks for Twitter Post module.
+ */
 
 /**
  * Settings form callback
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.info b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.info
index b9e0e44..1ff530c 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.info
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.info
@@ -5,9 +5,9 @@ dependencies[] = twitter
 dependencies[] = oauth_common
 configure = admin/config/services/twitter/signin
 
-; Information added by drupal.org packaging script on 2012-06-10
-version = "7.x-3.1"
+; Information added by drupal.org packaging script on 2012-08-11
+version = "7.x-3.2"
 core = "7.x"
 project = "twitter"
-datestamp = "1339367233"
+datestamp = "1344714197"
 
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.module b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.module
index 2a34665..a4c1bc3 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.module
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.module
@@ -46,14 +46,14 @@ function twitter_signin_block_view($delta) {
 }
 
 /**
- * Returns an image link for signing in with twitter
+ * Returns an image link for signing in with Twitter.
  */
 function twitter_signin_button() {
   return theme('twitter_signin_button');
 }
 
 /**
- * Implements hook_theme()
+ * Implements hook_theme().
  */
 function twitter_signin_theme() {
   return array(
@@ -62,7 +62,7 @@ function twitter_signin_theme() {
 }
 
 /**
- * themable function for an image link for signing in with twitter
+ * Themable function for an image link for signing in with Twitter.
  */
 function theme_twitter_signin_button() {
   $img = drupal_get_path('module', 'twitter_signin') . '/images/' . variable_get('twitter_signin_button', 'Sign-in-with-Twitter-lighter-small.png');
@@ -71,7 +71,7 @@ function theme_twitter_signin_button() {
 }
 
 /**
- * Submit handler for twitter signin
+ * Submit handler for Twitter signin.
  */
 function twitter_signin_redirect() {
   module_load_include('lib.php', 'oauth');
@@ -120,7 +120,7 @@ function twitter_signin_form_alter(&$form, $form_state, $form_id) {
 }
 
 /**
- * Form submit for the OAuth callback. Here we add in sign-in specific handling
+ * Form submit for the OAuth callback. Here we add in sign-in specific handling.
  */
 function twitter_signin_oauth_callback_submit(&$form, &$form_state) {
   global $user;
@@ -138,7 +138,7 @@ function twitter_signin_oauth_callback_submit(&$form, &$form_state) {
   }
   elseif ($uid = db_query("SELECT uid FROM {twitter_account} WHERE twitter_uid = :twitter_uid",
                           array(':twitter_uid' => $response['user_id']))->fetchField()) {
-    // We have an existing twitter account - set it up for login
+    // We have an existing Twitter account - set it up for login.
     $account = user_load($uid);
     $edit["authname_twitter"] = $response['user_id'];
     user_save($account, $edit);
@@ -149,7 +149,7 @@ function twitter_signin_oauth_callback_submit(&$form, &$form_state) {
   else {
     // No existing user account, let's see if we can register.
     if (variable_get('twitter_signin_register', 0)) {
-      // Check for a nickname collision
+      // Check for a nickname collision.
       $account = array_shift(user_load_multiple(array(), array('name' => $response['screen_name'])));
       if (empty($account->uid)) {
         $password = user_password();
@@ -187,30 +187,30 @@ function twitter_signin_oauth_callback_submit(&$form, &$form_state) {
 }
 
 /**
- * Implements hook_user_insert()
+ * Implements hook_user_insert().
  *
  * Relates a Twitter account with a just created user account if the user
- * signed in with Twitter but did not have an account in the site yet
+ * signed in with Twitter but did not have an account in the site yet.
  */
 function twitter_signin_user_insert(&$edit, $account, $category) {
   _twitter_signin_add_account($account);
 }
 
 /**
- * Implements hook_user_insert()
+ * Implements hook_user_insert().
  * 
  * Relates a Twitter account with an existing user account if the user
- * signed in with Twitter
+ * signed in with Twitter.
  */
 function twitter_signin_user_login(&$edit, $account) {
   _twitter_signin_add_account($account);
 }
 
 /**
- * Relates a user account with a twitter account
+ * Relates a user account with a Twitter account.
  *
  * @param $account
- * The Drupal user account
+ *   The Drupal user account.
  */
 function _twitter_signin_add_account($account) {
   if (isset($_SESSION['twitter']['values'])) {
@@ -221,12 +221,16 @@ function _twitter_signin_add_account($account) {
     $response = $_SESSION['twitter']['values'];
 
     $twitter = new TwitterOAuth($key, $secret, $response['oauth_token'], $response['oauth_token_secret']);
-    $twitter_account = $twitter->users_show($response['screen_name']);
+    try {
+      $twitter_account = $twitter->users_show($response['screen_name']);
+    } catch (TwitterException $e) {
+      drupal_set_message(t('Request failed: @message.', array('@message' => $e->getMessage())), 'error');
+      return;
+    }
     $twitter_account->set_auth($response);
     twitter_account_save($twitter_account, TRUE, $account);
 
     unset($_SESSION['twitter']);
-
     drupal_set_message(t('You have related a Twitter account with your user. Next time you can sign in with Twitter.'));
   }
 }
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.pages.inc b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.pages.inc
index d536bcf..19b3299 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.pages.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_signin/twitter_signin.pages.inc
@@ -1,8 +1,11 @@
 <?php
+/**
+ * @file
+ * Page callbacks for Twitter Signin module.
+ */
 
 /**
- * @todo Please document this function.
- * @see http://drupal.org/node/1354
+ * Settings form for Twitter Signin.
  */
 function twitter_signin_admin_settings($form, &$form_state) {
   $form = array();
diff --git a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_views_field_handlers.inc b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_views_field_handlers.inc
index a489b02..ebd6de2 100644
--- a/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_views_field_handlers.inc
+++ b/kolab.org/www/drupal-7.14/sites/all/modules/twitter/twitter_views_field_handlers.inc
@@ -1,4 +1,8 @@
 <?php
+/**
+ * @file
+ * Views handlers for Twitter module.
+ */
 
 /**
  * Process Twitter-style @usernames and URLs before filtering XSS.





More information about the commits mailing list