Branch 'production' - 3 commits - kolab.org/www

Torsten Grote grote at kolabsys.com
Mon Aug 27 15:37:03 CEST 2012


 kolab.org/www/drupal-7.15/sites/all/modules/ctools/bulk_export/bulk_export.info                                                            |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools.info                                                                             |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info                                        |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info                                              |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info                                        |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install                                     |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info                                        |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/help/plugins-creating.html                                                              |    4 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context-task-handler.inc                                                       |   34 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context.inc                                                                    |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/css.inc                                                                        |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/export.inc                                                                     |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/wizard.inc                                                                     |   26 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/auto-submit.js                                                                       |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/modal.js                                                                             |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.info                                                          |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.install                                                       |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.module                                                        |   38 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/access/entity_field_value.inc                                                   |   22 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/block/block.inc                                                   |   70 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc                                   |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc                                    |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc                                |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc                                 |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/stylizer/stylizer.info                                                                  |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/context.test                                                                      |   58 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/css.test                                                                          |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info                                        |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_plugin_test.info                                                           |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/ctools/views_content/views_content.info                                                        |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/CHANGELOG.txt                                                                             |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/LdapAuthenticationConf.class.php                                      |   37 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/README.txt                                                            |   23 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.admin.inc                                         |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.inc                                               |   35 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.info                                              |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/tests/LdapServerTestData.ldapauthen1.inc                              |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/LdapAuthorizationConsumerConf.class.php                                |   21 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.inc                                                 |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.info                                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php |   72 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/ldap_authorization_drupal_role.info     |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_og/ldap_authorization_og.info                       |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/1197636/1197636.ldap_servers.test_data.inc                       |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/BasicTests/ldap_servers.inc                                      |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromAttr/ldap_servers.inc                                  |   15 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromDN/ldap_servers.inc                                    |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Og/ldap_servers.inc                                              |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Other/ldap_servers.inc                                           |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_feeds/ldap_feeds.info                                                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_help.info                                                                  |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/README.txt                                                     |   93 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/config.inc                                                     |  101 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/functions.inc                                                  |  186 +
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/test.php                                                       |  164 +
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.info                                                            |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.module                                                          |   17 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_query/ldap_query.info                                                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/LdapServer.class.php                                                         |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.api.php                                                         |   16 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.functions.inc                                                   |   61 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.info                                                            |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.test_form.inc                                                   |   15 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/tests/LdapServerTest.class.php                                               |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.info                                                                    |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.module                                                                  |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/ldap_views.info                                                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/plugins/ldap_views_plugin_query_ldap.inc                                       |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/CHANGELOG.txt                                                                            |  397 ---
 kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.bartik.css                                                               |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.seven.css                                                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.theme.css                                                                |   29 
 kolab.org/www/drupal-7.15/sites/all/modules/views/docs/views.api.php                                                                       |  761 ------
 kolab.org/www/drupal-7.15/sites/all/modules/views/drush/views.drush.inc                                                                    |   15 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area.inc                                                          |   24 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_result.inc                                                   |   13 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text.inc                                                     |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text_custom.inc                                              |   56 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_view.inc                                                     |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument.inc                                                      |   42 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_date.inc                                                 |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_formula.inc                                              |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_group_by_numeric.inc                                     |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc                                          |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_null.inc                                                 |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_numeric.inc                                              |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_string.inc                                               |   33 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field.inc                                                         |  183 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_boolean.inc                                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_contextual_links.inc                                        |   55 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_counter.inc                                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_custom.inc                                                  |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_date.inc                                                    |   26 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_entity.inc                                                  |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_machine_name.inc                                            |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_markup.inc                                                  |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_math.inc                                                    |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_numeric.inc                                                 |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc                                          |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_serialized.inc                                              |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_time_interval.inc                                           |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_url.inc                                                     |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter.inc                                                        |  774 ++++++
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc                                       |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator_string.inc                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_combine.inc                                                |  137 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_date.inc                                                   |   33 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_entity_bundle.inc                                          |  122 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_equality.inc                                               |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc                                       |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc                                            |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc                                            |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_numeric.inc                                                |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_string.inc                                                 |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship.inc                                                  |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc                                    |   39 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort.inc                                                          |   16 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_date.inc                                                     |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_group_by_numeric.inc                                         |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_menu_hierarchy.inc                                           |   37 
 kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_random.inc                                                   |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/about.html                                                                          |    4 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-settings.html                                                              |   43 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-style-settings.html                                                        |   30 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-forms.html                                                                      |    4 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-handlers.html                                                                   |   71 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-plugins.html                                                                    |  114 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-tables.html                                                                     |   32 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/api.html                                                                            |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/example-slideshow-thumb-pager.html                                                  |   54 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/filter.html                                                                         |   15 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/group-by.html                                                                       |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/images/views3-views-all.png                                                         |binary
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/misc-notes.html                                                                     |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/style-jump.html                                                                     |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/view-add.html                                                                       |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/help/views.help.ini                                                                      |   13 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/admin.inc                                                                       |  278 +-
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/ajax.inc                                                                        |   16 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/analyze.inc                                                                     |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/base.inc                                                                        |   46 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/cache.inc                                                                       |   20 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/form.inc                                                                        |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/handlers.inc                                                                    |   74 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/plugins.inc                                                                     |   23 
 kolab.org/www/drupal-7.15/sites/all/modules/views/includes/view.inc                                                                        |  202 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax.js                                                                               |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax_view.js                                                                          |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/js/base.js                                                                               |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/js/jquery.ui.dialog.patch.js                                                             |    4 
 kolab.org/www/drupal-7.15/sites/all/modules/views/js/views-admin.js                                                                        |   54 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator.views.inc                                                             |   25 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_category_cid.inc                    |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_fid.inc                             |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_iid.inc                             |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_category.inc                           |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc                         |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_xss.inc                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_filter_aggregator_category_cid.inc                      |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc                                   |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book.views.inc                                                                   |   24 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book/views_plugin_argument_default_book_root.inc                                 |   21 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment.views.inc                                                                |   42 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc                              |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment.inc                                          |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc                                    |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc                                     |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc                             |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc                              |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc                                |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_reply.inc                               |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc                                |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc                                 |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_last_comment_timestamp.inc                           |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_comment_name.inc                            |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_updated.inc                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_comment.inc                                     |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_new_comments.inc                                |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc                                |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_ncs_last_updated.inc                                |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_node_comment.inc                                    |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc                                    |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_comment_name.inc                             |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc                                  |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc                                         |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc                                        |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact.views.inc                                                                |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc                                     |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field.views.inc                                                                  |   35 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list.inc                                      |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list_string.inc                               |   59 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_field_field.inc                                              |   81 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_filter_field_list.inc                                        |   21 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc                              |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/file.views.inc                                                                   |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter.views.inc                                                                 |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter/views_handler_field_filter_format_name.inc                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/image.views.inc                                                                  |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale.views.inc                                                                 |   29 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc                                   |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc                                |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_group.inc                                      |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_language.inc                                   |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_link_edit.inc                                  |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_node_language.inc                                     |   37 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc                                     |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc                                  |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_version.inc                                   |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_node_language.inc                                    |   26 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views.inc                                                                   |   58 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views_template.inc                                                          |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc                                    |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc                                    |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc                                         |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_type.inc                                        |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc                                |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc                                         |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_history_user_timestamp.inc                              |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node.inc                                                |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link.inc                                           |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc                                    |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc                                      |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_path.inc                                           |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision.inc                                       |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link.inc                                  |   66 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc                           |   28 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_revert.inc                           |   26 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_type.inc                                           |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_history_user_timestamp.inc                             |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_access.inc                                        |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_status.inc                                        |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc                                          |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc                                  |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc                                      |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc                                     |    4 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc                                               |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc                                              |   17 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/poll.views.inc                                                                   |   16 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile.views.inc                                                                |   17 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc                                     |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_list.inc                                     |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_filter_profile_selection.inc                               |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search.views.inc                                                                 |   19 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_argument_search.inc                                         |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_field_search_score.inc                                      |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_filter_search.inc                                           |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc                                       |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_plugin_row_search_view.inc                                          |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics.views.inc                                                             |   16 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc                                |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system.views.inc                                                                 |   41 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc                                       |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file.inc                                              |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_extension.inc                                    |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc                                     |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_status.inc                                       |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_uri.inc                                          |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc                                      |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_system_type.inc                                      |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy.views.inc                                                               |   55 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc                                     |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid.inc                                |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc                          |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc                      |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc                               |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc                                        |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc                                  |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc                                   |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc                                  |   15 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc                            |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc                        |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_vid.inc                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_relationship_node_term_data.inc                           |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc                          |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc                        |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation.views.inc                                                            |   33 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc                                 |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc                                |   32 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc                          |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_translation_link.inc                        |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc                               |   20 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc                                   |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc                             |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_relationship_translation.inc                           |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user.views.inc                                                                   |   27 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc                                         |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc                                  |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user.inc                                                |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_language.inc                                       |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link.inc                                           |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc                                    |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_edit.inc                                      |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc                                           |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_name.inc                                           |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc                                    |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc                                        |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc                                          |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_current.inc                                       |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc                                          |   21 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc                                   |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_roles.inc                                         |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc                              |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc                                      |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc                                     |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/modules/views.views.inc                                                                  |   29 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access.inc                                                          |   19 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_none.inc                                                     |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_perm.inc                                                     |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_role.inc                                                     |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default.inc                                                |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc                                          |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc                                            |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc                                            |   16 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate.inc                                               |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc                                       |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc                                           |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache.inc                                                           |   65 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_none.inc                                                      |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_time.inc                                                      |   59 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display.inc                                                         |  150 -
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_attachment.inc                                              |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_block.inc                                                   |   43 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_default.inc                                                 |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_embed.inc                                                   |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_extender.inc                                                |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_feed.inc                                                    |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_page.inc                                                    |   12 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form.inc                                                    |   25 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_basic.inc                                              |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc                                     |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_localization.inc                                                    |   14 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager.inc                                                           |   19 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_full.inc                                                      |   75 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_mini.inc                                                      |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_none.inc                                                      |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_some.inc                                                      |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query.inc                                                           |   20 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query_default.inc                                                   |  134 -
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row.inc                                                             |   19 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_fields.inc                                                      |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_rss_fields.inc                                                  |  180 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style.inc                                                           |   55 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_default.inc                                                   |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_grid.inc                                                      |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc                                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_list.inc                                                      |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_rss.inc                                                       |   16 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary.inc                                                   |    1 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc                                         |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc                                       |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_table.inc                                                     |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php                                |   18 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_comment_views_wizard.class.php                             |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_file_managed_views_wizard.class.php                        |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_revision_views_wizard.class.php                       |   18 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_views_wizard.class.php                                |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_taxonomy_term_views_wizard.class.php                       |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_users_views_wizard.class.php                               |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test                               |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test                                 |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/field/views_fieldapi.test                                                          |  498 +++
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_area_text.test                                              |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_null.test                                          |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_string.test                                        |   96 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field.test                                                  |  227 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test                                          |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_counter.test                                          |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_custom.test                                           |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_date.test                                             |   55 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_file_size.test                                        |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_math.test                                             |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_url.test                                              |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_xss.test                                              |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_combine.test                                         |  105 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_date.test                                            |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test                                        |   91 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_in_operator.test                                     |  107 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test                                         |  196 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_string.test                                          |  403 +++
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort.test                                                   |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_date.test                                              |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_random.test                                            |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/plugins/views_plugin_display.test                                                  |  194 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style.test                                                     |   48 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test                                           |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_unformatted.test                                         |   73 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/taxonomy/views_handler_relationship_node_term_data.test                            |  122 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/templates/views-view--frontpage.tpl.php                                            |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc                             |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc                              |   10 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_handler_field_user_name.test                                            |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user.test                                                               |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_default.test                                              |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_validate.test                                             |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_access.test                                                                  |   15 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_analyze.test                                                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_default.test                                                        |   32 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_validator.test                                                      |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_basic.test                                                                   |   19 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test                                                                   |  119 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.css                                                               |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.js                                                                |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_exposed_form.test                                                            |   83 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_glossary.test                                                                |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_groupby.test                                                                 |   13 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_handlers.test                                                                |   44 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_module.test                                                                  |   11 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_pager.test                                                                   |  112 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_plugin_localization_test.inc                                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_query.test                                                                   |   19 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.info                                                                    |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.install                                                                 |    8 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.module                                                                  |   20 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.views_default.inc                                                       |   79 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_translatable.test                                                            |   25 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_ui.test                                                                      |   46 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_upgrade.test                                                                 |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_view.test                                                                    |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/theme.inc                                                                          |  114 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-exposed-form.tpl.php                                                         |    9 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-more.tpl.php                                                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-bucket.tpl.php                                                |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-setting.tpl.php                                               |    2 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-item.tpl.php                                                         |    4 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-view.tpl.php                                                         |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-field.tpl.php                                                           |   41 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-fields.tpl.php                                                          |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grid.tpl.php                                                            |    7 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grouping.tpl.php                                                        |   31 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-list.tpl.php                                                            |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-comment.tpl.php                                                     |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-rss.tpl.php                                                         |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-rss.tpl.php                                                             |    3 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary-unformatted.tpl.php                                             |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary.tpl.php                                                         |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-table.tpl.php                                                           |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-unformatted.tpl.php                                                     |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view.tpl.php                                                                 |    5 
 kolab.org/www/drupal-7.15/sites/all/modules/views/views.api.php                                                                            | 1107 ++++++++
 kolab.org/www/drupal-7.15/sites/all/modules/views/views.info                                                                               |   27 
 kolab.org/www/drupal-7.15/sites/all/modules/views/views.install                                                                            |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/views.module                                                                             |  190 +
 kolab.org/www/drupal-7.15/sites/all/modules/views/views3.doxy                                                                              | 1252 ----------
 kolab.org/www/drupal-7.15/sites/all/modules/views/views_export/views_export.module                                                         |   13 
 kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.info                                                                            |    6 
 kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.module                                                                          |   49 
 kolab.org/www/drupal-7.15/sites/all/themes/kolab/css/nivo.css                                                                              |    2 
 kolab.org/www/drupal-7.15/sites/all/themes/kolab/images/nivo/control-nav.png                                                               |binary
 449 files changed, 10345 insertions(+), 4166 deletions(-)

New commits:
commit 8264e6b3ab7aa337c755baeac422a4bef33604de
Merge: 2c7edbe 464f75a
Author: Torsten Grote <grote at kolabsys.com>
Date:   Mon Aug 27 15:36:50 2012 +0200

    Merge branch 'master' into production



commit 464f75a2d8bcaadb3d488972c2b8e285de513b7d
Author: Torsten Grote <grote at kolabsys.com>
Date:   Mon Aug 27 15:31:13 2012 +0200

    enlarged nivo slider controlNav

diff --git a/kolab.org/www/drupal-7.15/sites/all/themes/kolab/css/nivo.css b/kolab.org/www/drupal-7.15/sites/all/themes/kolab/css/nivo.css
index 41cf2d0..92832c5 100644
--- a/kolab.org/www/drupal-7.15/sites/all/themes/kolab/css/nivo.css
+++ b/kolab.org/www/drupal-7.15/sites/all/themes/kolab/css/nivo.css
@@ -28,7 +28,7 @@ Author URI: http://dev7studios.com
 
 .theme-nivo .nivo-controlNav {
     background:url(../images/nivo/control-nav.png) no-repeat;
-    width:72px;
+    width:85px;
     height:13px;
 	position:absolute;
 	left:50%;
diff --git a/kolab.org/www/drupal-7.15/sites/all/themes/kolab/images/nivo/control-nav.png b/kolab.org/www/drupal-7.15/sites/all/themes/kolab/images/nivo/control-nav.png
index 18d3e1f..5ea90c1 100644
Binary files a/kolab.org/www/drupal-7.15/sites/all/themes/kolab/images/nivo/control-nav.png and b/kolab.org/www/drupal-7.15/sites/all/themes/kolab/images/nivo/control-nav.png differ


commit 7b5e4a2b04e4fb38485bc12965e07794388d0224
Author: Torsten Grote <grote at kolabsys.com>
Date:   Mon Aug 27 14:47:35 2012 +0200

    updated ctools, ldap and views modules

diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/bulk_export/bulk_export.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/bulk_export/bulk_export.info
index 790561c..6f57712 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/bulk_export/bulk_export.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools.info
index 2ccf719..c3e56fb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
index 4562d7a..04c92c3 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
index 056083d..bbf708c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
index 75a2a93..b56e3be 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install
index 8348434..b4512f2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install
@@ -17,7 +17,7 @@ function ctools_custom_content_schema_1() {
       'bulk export' => TRUE,
       'primary key' => 'cid',
       'api' => array(
-        'owner' => 'ctools',
+        'owner' => 'ctools_custom_content',
         'api' => 'ctools_content',
         'minimum_version' => 1,
         'current_version' => 1,
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
index 3b11096..c9f12e7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/help/plugins-creating.html b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/help/plugins-creating.html
index 186bb74..29a9014 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/help/plugins-creating.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/help/plugins-creating.html
@@ -1,7 +1,7 @@
 There are two primary pieces to using plugins. The first is getting the data, and the second is using the data.
 
 <h2>Defining a plugin</h2>
-To define that you offer a plugin that modules can implement, you first must implement hook_ctools_plugin_type() to tell the plugin system about your plugin. 
+To define that you offer a plugin that modules can implement, you first must implement hook_ctools_plugin_type() to tell the plugin system about your plugin.
 
 <pre>
 /**
@@ -49,7 +49,7 @@ The following information can be specified for each plugin type:
 <dd><em>Defaults to:</em> <strong>FALSE</strong></dd>
 <dd>If set to TRUE, the plugin type can automatically have 'child plugins' meaning each plugin can actually provide multiple plugins. This is mostly used for plugins that store some of their information in the database, such as views, blocks or exportable custom versions of plugins.</dd>
 <dd>To implement, each plugin can have a 'get child' and 'get children' callback. Both of these should be implemented for performance reasons, since it is best to avoid getting all children if necessary, but if 'get child' is not implemented, it will fall back to 'get children' if it has to.</dd>
-<dd>Child plugins should be named parent:child, with the : being the separator, so that it knows which parent plugin to ask for teh child. The 'get children' method should at least return the parent plugin as part of the list, unless it wants the parent plugin itself to not be a choosable option, which is not unheard of. </dd>
+<dd>Child plugins should be named parent:child, with the : being the separator, so that it knows which parent plugin to ask for the child. The 'get children' method should at least return the parent plugin as part of the list, unless it wants the parent plugin itself to not be a choosable option, which is not unheard of. </dd>
 <dd>'get children' arguments are ($plugin, $parent) and 'get child' arguments are ($plugin, $parent, $child).
 </dl>
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context-task-handler.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context-task-handler.inc
index 10fd793..617f20e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context-task-handler.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context-task-handler.inc
@@ -100,6 +100,24 @@ function ctools_context_handler_render_handler($task, $subtask, $handler, $conte
     return NULL;
   }
 
+  if ($page) {
+    if ($subtask) {
+      $task_name = page_manager_make_task_name($task['name'], $subtask['name']);
+    }
+    else {
+      $task_name = $task['name'];
+    }
+
+    page_manager_get_current_page(array(
+      'name' => $task_name,
+      'task' => $task,
+      'subtask' => $subtask,
+      'contexts' => $contexts,
+      'arguments' => $args,
+      'handler' => $handler,
+    ));
+  }
+
   $info = $function($handler, $contexts, $args);
   if (!$info) {
     return NULL;
@@ -119,22 +137,6 @@ function ctools_context_handler_render_handler($task, $subtask, $handler, $conte
     return $info;
   }
 
-  if ($subtask) {
-    $task_name = page_manager_make_task_name($task['name'], $subtask['name']);
-  }
-  else {
-    $task_name = $task['name'];
-  }
-
-  page_manager_get_current_page(array(
-    'name' => $task_name,
-    'task' => $task,
-    'subtask' => $subtask,
-    'contexts' => $contexts,
-    'arguments' => $args,
-    'handler' => $handler,
-  ));
-
   if (!empty($info['response code']) && $info['response code'] != 200) {
     switch ($info['response code']) {
       case 403:
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context.inc
index 720a6fc..5c7a4ce 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/context.inc
@@ -633,7 +633,7 @@ function ctools_context_keyword_substitute($string, $keywords, $contexts, $conve
 
   // Look for context matches we we only have to convert known matches.
   $matches = array();
-  if (preg_match_all('/%([a-zA-Z0-9%:_-]+)/us', $string, $matches)) {
+  if (preg_match_all('/%(%|[a-zA-Z0-9_-]+(?:\:[a-zA-Z0-9_-]+)?)/us', $string, $matches)) {
     foreach ($matches[1] as $keyword) {
       // Ignore anything it finds with %%.
       if ($keyword[0] == '%') {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/css.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/css.inc
index 8bc4c66..ee11d48 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/css.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/css.inc
@@ -284,8 +284,9 @@ function ctools_css_disassemble($css) {
   $disassembled_css = array();
   // Remove comments.
   $css = preg_replace("/\/\*(.*)?\*\//Usi", "", $css);
-  // Split out each statement
-  $statements = preg_split('/[;}]/', $css);
+  // Split out each statement. Match either a right curly brace or a semi-colon
+  // that precedes a left curly brace with no right curly brace separating them.
+  $statements = preg_split('/}|;(?=[^}]*{)/', $css);
 
   // If we have any statements, parse them.
   if (!empty($statements)) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/export.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/export.inc
index dfbe74b..0b2ef46 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/export.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/export.inc
@@ -386,10 +386,15 @@ function ctools_export_crud_disable($table, $object) {
  */
 function ctools_export_load_object($table, $type = 'all', $args = array()) {
   $cache = &drupal_static(__FUNCTION__);
+  $cache_table_exists = &drupal_static(__FUNCTION__ . '_table_exists', array());
   $cached_database = &drupal_static('ctools_export_load_object_all');
 
+  if (!array_key_exists($table, $cache_table_exists)) {
+    $cache_table_exists[$table] = db_table_exists($table);
+  }
+
   $schema = ctools_export_get_schema($table);
-  if (empty($schema) || !db_table_exists($table)) {
+  if (empty($schema) || !$cache_table_exists[$table]) {
     return array();
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/wizard.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/wizard.inc
index 946ed0f..6f5d794 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/wizard.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/includes/wizard.inc
@@ -430,6 +430,12 @@ function ctools_wizard_submit(&$form, &$form_state) {
       }
       else if ($type == 'next') {
         $form_state['redirect'] = ctools_wizard_get_path($form_state['form_info'], $form_state['clicked_button']['#next']);
+        if (!empty($_GET['destination'])) {
+          // We don't want drupal_goto redirect this request
+          // back. ctools_wizard_get_path ensures that the destination is
+          // carried over on subsequent pages.
+          unset($_GET['destination']);
+        }
       }
       else if (isset($form_state['form_info']['return path'])) {
         $form_state['redirect'] = $form_state['form_info']['return path'];
@@ -449,11 +455,27 @@ function ctools_wizard_get_path($form_info, $step) {
     foreach ($form_info['path'] as $id => $part) {
       $form_info['path'][$id] = str_replace('%step', $step, $form_info['path'][$id]);
     }
-    return $form_info['path'];
+    $path = $form_info['path'];
   }
   else {
-    return array(str_replace('%step', $step, $form_info['path']));
+    $path = array(str_replace('%step', $step, $form_info['path']));
+  }
+
+  // If destination is set, carry it over so it'll take effect when
+  // saving. The submit handler will unset destination to avoid drupal_goto
+  // redirecting us.
+  if (!empty($_GET['destination'])) {
+    // Ensure that options is an array.
+    if (!isset($path[1]) || !is_array($path[1])) {
+      $path[1] = array();
+    }
+    // Ensure that the query part of options is an array.
+    $path[1] += array('query' => array());
+    // Add the destination parameter, if not set already.
+    $path[1]['query'] += drupal_get_destination();
   }
+
+  return $path;
 }
 
 /**
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/auto-submit.js b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/auto-submit.js
index 59178c4..890dd1f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/auto-submit.js
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/auto-submit.js
@@ -16,6 +16,12 @@
  *   '#attributes' => array('class' => array('ctools-auto-submit-full-form')),
  * @endcode
  *
+ * If you want to exclude a field from the ctool-auto-submit-full-form auto submission,
+ * add the class ctools-auto-submit-exclude to the form element. With FAPI, add:
+ * @code
+ *   '#attributes' => array('class' => array('ctools-auto-submit-exclude')),
+ * @endcode
+ *
  * Finally, you have to identify which button you want clicked for autosubmit.
  * The behavior of this button will be honored if it's ajaxy or not:
  * @code
@@ -39,7 +45,7 @@ Drupal.behaviors.CToolsAutoSubmit = {
     // the change event bubbles so we only need to bind it to the outer form
     $('form.ctools-auto-submit-full-form', context)
       .add('.ctools-auto-submit', context)
-      .filter('form, select, input:not(:text, :submit)')
+      .filter('form, select, input:not(:text, :submit, .ctools-auto-submit-exclude)')
       .once('ctools-auto-submit')
       .change(function (e) {
         // don't trigger on text change for full-form
@@ -68,6 +74,7 @@ Drupal.behaviors.CToolsAutoSubmit = {
     ];
     // Don't wait for change event on textfields
     $('.ctools-auto-submit-full-form input:text, input:text.ctools-auto-submit', context)
+      .filter(':not(.ctools-auto-submit-exclude)')
       .once('ctools-auto-submit', function () {
         // each textinput element has his own timeout
         var timeoutID = 0;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/modal.js b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/modal.js
index 1376d82..5b417d0 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/modal.js
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/js/modal.js
@@ -278,7 +278,10 @@
       Drupal.CTools.Modal.show(Drupal.CTools.Modal.getSettings(ajax.element));
     }
     $('#modal-title').html(response.title);
-    $('#modal-content').html(response.output);
+    // Simulate an actual page load by scrolling to the top after adding the
+    // content. This is helpful for allowing users to see error messages at the
+    // top of a form, etc.
+    $('#modal-content').html(response.output).scrollTop(0);
     Drupal.attachBehaviors();
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.info
index 780c115..d3e3588 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.install b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.install
index ad2781c..b170ce7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.install
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.install
@@ -23,6 +23,8 @@ function page_manager_schema_1() {
       'identifier' => 'handler',
       'bulk export' => TRUE,
       'export callback' => 'page_manager_export_task_handler',
+      'load callback' => 'page_manager_export_task_handler_load',
+      'delete callback' => 'page_manager_delete_task_handler',
       'primary key' => 'did',
       'api' => array(
         'owner' => 'page_manager',
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.module b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.module
index 6d6c199..62f6d27 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.module
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/page_manager/page_manager.module
@@ -696,6 +696,44 @@ function page_manager_export_task_handler($handler, $indent = '') {
 }
 
 /**
+ * Loads page manager handler for export.
+ *
+ * Callback to load page manager handler within ctools_export_crud_load().
+ *
+ * @param string $name
+ *   The name of the handler to load.
+ *
+ * @return
+ *   Loaded page manager handler object, extended with external properties.
+ */
+function page_manager_export_task_handler_load($name) {
+  $table = 'page_manager_handlers';
+  $schema = ctools_export_get_schema($table);
+  $export = $schema['export'];
+
+  $result = ctools_export_load_object($table, 'names', array($name));
+  if (isset($result[$name])) {
+    $handler = $result[$name];
+
+    // Weight is stored in additional table so that in-code task handlers
+    // don't need to get written to the database just because they have their
+    // weight changed. Therefore, handler could have no correspondent database
+    // entry. Revert will not be performed for this handler and the weight
+    // will not be reverted. To make possible revert of the weight field
+    // export_type must simulate that the handler is stored in the database.
+    $handler->export_type = EXPORT_IN_DATABASE;
+
+    // Also, page manager handler weight should be overriden with correspondent
+    // weight from page_manager_weights table, if there is one.
+    $result = db_query('SELECT weight FROM {page_manager_weights} WHERE name = (:names)', array(':names' => $handler->name))->fetchField();
+    if (is_numeric($result)) {
+      $handler->weight = $result;
+    }
+    return $handler;
+  }
+}
+
+/**
  * Create a new task handler object.
  *
  * @param $plugin
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/access/entity_field_value.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/access/entity_field_value.inc
index 1fb1fe8..59b01fb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/access/entity_field_value.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/access/entity_field_value.inc
@@ -141,7 +141,13 @@ function ctools_entity_field_value_ctools_access_check($conf, $context, $plugin)
 
   if ($field_items = field_get_items($entity_type, $context->data, $field_name)) {
     $langcode = field_language($entity_type, $context->data, $field_name);
-
+    // Get field storage columns.
+    $instance = field_info_instance($entity_type, $field_name, $bundle_type);
+    $field = field_info_field_by_id($instance['field_id']);
+    $columns = array();
+    foreach ($field['columns'] as $column => $attributes) {
+      $columns[$column] = _field_sql_storage_columnname($field_name, $column);
+    }
     foreach ($conf as $potential_field => $values) {
       if ($field_name === $potential_field) {
 
@@ -152,8 +158,14 @@ function ctools_entity_field_value_ctools_access_check($conf, $context, $plugin)
 
         // Check field value.
         foreach ($field_items as $field_value) {
-          if (in_array($field_value['value'], $conf_value_array)) {
-            return TRUE;
+          foreach ($field_value as $field_column => $value) {
+            // Iterate through config values.
+            foreach ($conf_value_array as $conf_value) {
+              //
+              if ($value == $conf_value[$field_column]) {
+                return TRUE;
+              }
+            }
           }
         }
       }
@@ -168,8 +180,8 @@ function _ctools_entity_field_value_ctools_access_get_conf_field_values($values,
   }
   $conf_values = array();
 
-  foreach ($values[$langcode] as $value) {
-    $conf_values[] = $value['value'];
+  foreach ($values[$langcode] as $delta => $value) {
+    $conf_values[$delta] = $value;
   }
 
   return $conf_values;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/block/block.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/block/block.inc
index 866f72e..f5b0063 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/block/block.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/block/block.inc
@@ -78,21 +78,72 @@ function _ctools_block_content_type_content_type($module, $delta, $block) {
 }
 
 /**
+ * Load block info from the database.
+ *
+ * This is copied from _block_load_blocks(). It doesn't use that
+ * function because _block_load_blocks sorts by region, and it
+ * doesn't cache its results anyway.
+ */
+function _ctools_block_load_blocks() {
+  $blocks = &drupal_static(__FUNCTION__, NULL);
+  if (!isset($blocks)) {
+    global $theme_key;
+
+    $query = db_select('block', 'b');
+    $result = $query
+      ->fields('b')
+      ->condition('b.theme', $theme_key)
+      ->orderBy('b.region')
+      ->orderBy('b.weight')
+      ->orderBy('b.module')
+      ->addTag('block_load')
+      ->addTag('translatable')
+      ->execute();
+
+    $block_info = $result->fetchAllAssoc('bid');
+    // Allow modules to modify the block list.
+    drupal_alter('block_list', $block_info);
+
+    $blocks = array();
+    foreach ($block_info as $block) {
+      $blocks["{$block->module}_{$block->delta}"] = $block;
+    }
+  }
+
+  return $blocks;
+}
+
+/**
+ * Fetch the stored info for a block.
+ *
+ * The primary reason to use this is so that modules which perform alters
+ * can have their alters make it to the block.
+ */
+function _ctools_get_block_info($module, $delta) {
+  $blocks = _ctools_block_load_blocks();
+
+  $key = $module . '_' . $delta;
+  if (isset($blocks[$key])) {
+    return $blocks[$key];
+  }
+}
+
+/**
  * Output function for the 'block' content type. Outputs a block
  * based on the module and delta supplied in the configuration.
  */
 function ctools_block_content_type_render($subtype, $conf) {
   list($module, $delta) = _ctools_block_get_module_delta($subtype, $conf);
 
-  $info = new stdClass;
-  $info->module = $module;
-  $info->delta = $delta;
+  $info = _ctools_get_block_info($module, $delta);
   $block = module_invoke($module, 'block_view', $delta);
 
-  // Allow modules to modify the block before it is viewed, via either
-  // hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
-  drupal_alter(array('block_view', "block_view_{$module}_{$delta}"), $block, $info);
-  $block = (object) $block;
+  if (!empty($info)) {
+    // Allow modules to modify the block before it is viewed, via either
+    // hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
+    drupal_alter(array('block_view', "block_view_{$module}_{$delta}"), $block, $info);
+    $block = (object) $block;
+  }
 
   if (empty($block)) {
     return;
@@ -101,7 +152,10 @@ function ctools_block_content_type_render($subtype, $conf) {
   $block->module = $module;
   $block->delta = $delta;
 
-  if (isset($block->subject)) {
+  if ($module == 'block') {
+    $block->title = $info->title;
+  }
+  else if (isset($block->subject)) {
     $block->title = $block->subject;
   }
   else {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
index fb3fad2..2da4044 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
@@ -154,7 +154,7 @@ 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'])) {
+  if (!empty($field_output) && !empty($conf['override_title'])) {
     $field_output['#title'] = filter_xss_admin($conf['override_title_text']);
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc
index 5cb6a34..350df40 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc
@@ -43,7 +43,7 @@ function ctools_node_form_author_content_type_render($subtype, $conf, $panel_arg
 }
 
 function ctools_node_form_author_content_type_admin_title($subtype, $conf, $context) {
-  return t('"@s" node form publishing options', array('@s' => $context->identifier));
+  return t('"@s" node form author information', array('@s' => $context->identifier));
 }
 
 function ctools_node_form_author_content_type_edit_form($form, &$form_state) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc
index 3f3cf25..e73cff2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc
@@ -45,7 +45,7 @@ function ctools_node_form_publishing_content_type_render($subtype, $conf, $panel
 }
 
 function ctools_node_form_publishing_content_type_admin_title($subtype, $conf, $context) {
-  return t('"@s" node form author information', array('@s' => $context->identifier));
+  return t('"@s" node form publishing options', array('@s' => $context->identifier));
 }
 
 function ctools_node_form_publishing_content_type_edit_form($form, &$form_state) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
index 35988e6..2b953ed 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
@@ -20,7 +20,7 @@ function ctools_term_description_content_type_render($subtype, $conf, $panel_arg
 
   $block->title = $term->name;
   if ($term) {
-    $block->content = _filter_autop(filter_xss_admin($term->description));
+    $block->content = check_markup($term->description, $term->format, '', TRUE);
     $block->delta = $term->tid;
 
     if (user_access('administer taxonomy')) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/stylizer/stylizer.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/stylizer/stylizer.info
index b407b95..9c7f117 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/stylizer/stylizer.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/context.test b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/context.test
new file mode 100644
index 0000000..b5f6fb1
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/context.test
@@ -0,0 +1,58 @@
+<?php
+
+class CtoolsContextKeywordsSubstitutionTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Keywords substitution',
+      'description' => 'Verify that keywords are properly replaced with data.',
+      'group' => 'Chaos Tools Suite',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp('ctools');
+
+    ctools_include('context');
+  }
+
+  public function testKeywordsSubstitution() {
+    // Create node context for substitution.
+    $node = $this->drupalCreateNode();
+    $context = ctools_context_create('node', $node);
+    $contexts = array('argument_1' => $context);
+
+    // Run tests on some edge cases.
+    $checks = array(
+      '%node:title' => array(
+        "{$node->title}",
+        t('Keyword and converter have been replaced.'),
+      ),
+      '%%node:title' => array(
+        "%node:title",
+        t('Keyword after escaped percent sign left untouched.'),
+      ),
+      '%node:title%node:nid' => array(
+        "{$node->title}{$node->nid}",
+        t('Multiple substitutions have been replaced.'),
+      ),
+      '%node:title:' => array(
+        "{$node->title}:",
+        t('Colon after keyword and converter left untouched.'),
+      ),
+      '%node:title%%' => array(
+        "{$node->title}%",
+        t('Escaped percent sign after keyword and converter left untouched.'),
+      ),
+      '%%%node:title' => array(
+        "%{$node->title}",
+        t('Keyword after escaped and unescaped percent sign has been replaced.'),
+      ),
+    );
+    foreach ($checks as $string => $expectations) {
+      list($expected_result, $message) = $expectations;
+      $actual_result = ctools_context_keyword_substitute($string, array(), $contexts);
+      $this->assertEqual($actual_result, $expected_result, $message);
+    }
+  }
+
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/css.test b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/css.test
index 039e975..4a5200c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/css.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/css.test
@@ -65,5 +65,17 @@ class CtoolsCssTestCase extends DrupalWebTestCase {
     $font_size = (strpos($filtered, 'font-size:12px;') !== FALSE);
     $color = (strpos($filtered, 'color:blue') !== FALSE);
     $this->assertTrue($font_size && $color, 'Multiple properties are merged.');
+
+    $css = '@import url("other.css");p {color: red;}';
+    $filtered = ctools_css_filter($css);
+    $other_css = (strpos($filtered, 'other.css') === FALSE);
+    $color = (strpos($filtered, 'color:red') !== FALSE);
+    $this->assertTrue($other_css && $color, 'CSS is properly sanitized.');
+
+    $css = ';p {color: red; font-size: 12px;}';
+    $filtered = ctools_css_filter($css);
+    $font_size = (strpos($filtered, 'font-size:12px;') !== FALSE);
+    $color = (strpos($filtered, 'color:red') !== FALSE);
+    $this->assertTrue($font_size && $color, 'Multiple properties are retained.');
   }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
index 55bcba9..2d975c3 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
@@ -7,9 +7,9 @@ hidden = TRUE
 
 files[] = ctools_export.test
 
-; Information added by drupal.org packaging script on 2012-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_plugin_test.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_plugin_test.info
index cf4bf9c..6d5e9cd 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_plugin_test.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/tests/ctools_plugin_test.info
@@ -6,11 +6,12 @@ dependencies[] = ctools
 files[] = ctools.plugins.test
 files[] = object_cache.test
 files[] = css.test
+files[] = context.test
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/views_content/views_content.info b/kolab.org/www/drupal-7.15/sites/all/modules/ctools/views_content/views_content.info
index 040ea0c..cd7ce44 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ctools/views_content/views_content.info
+++ b/kolab.org/www/drupal-7.15/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-08-08
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1344463011"
+datestamp = "1345319204"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/CHANGELOG.txt b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/CHANGELOG.txt
index d14cd36..b6b18c6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/CHANGELOG.txt
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/CHANGELOG.txt
@@ -1,4 +1,9 @@
-Issue #1632922 by brianV.  Schema fix for ldap query.
+Fixed fake ldap server in simpltests to never filter on dn=*.  See http://drupal.org/node/1066608
+Issue #1647950 by BobA.  Patch by BobA.  Ldap Profile issue.
+Issue #1650718 by alanrussian.  Patch by alanrussian.
+Issue #1661644 by thesaunterer.  Patch by by thesaunterer. Bad error message code throws warning.
+Issue #1623584 by alanrussian.  Patch by alanrussian.
+Issue #1634930 by boran.  Added hook alter to allow intervention in ldap authentication->allowUser method.
 Changes in ldap_authorization.inc to make logic clearer and set array keys in authorization lowercase.
 Fix for ldap servers caching issue when ctools enabled.  noticed the bug when building simpletests.  There is no issue for this.
 Issue #1371452.  Simpletest coverage for ldap servers add, update, delete and class property population.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/LdapAuthenticationConf.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/LdapAuthenticationConf.class.php
index 75d0c3a..e0e8983 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/LdapAuthenticationConf.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/LdapAuthenticationConf.class.php
@@ -12,7 +12,7 @@ class LdapAuthenticationConf {
   // no need for LdapAuthenticationConf id as only one instance will exist per drupal install
 
   public $sids = array();  // server configuration ids being used for authentication
-  public $servers = array(); // ldap server object
+  public $enabledAuthenticationServers = array(); // ldap server object
   public $inDatabase = FALSE;
   public $authenticationMode = LDAP_AUTHENTICATION_MODE_DEFAULT;
   public $loginUIUsernameTxt;
@@ -68,9 +68,13 @@ class LdapAuthenticationConf {
   );
 
   /** are any ldap servers that are enabled associated with ldap authentication **/
+  public function hasEnabledAuthenticationServers() {
+    return !(count($this->enabledAuthenticationServers) == 0);
+  }
   public function enabled_servers() {
-    return !(count(array_filter(array_values($this->sids))) == 0);
+    return $this->hasEnabledAuthenticationServers();
   }
+  
   function __construct() {
     $this->load();
   }
@@ -85,12 +89,13 @@ class LdapAuthenticationConf {
           $this->{$property} = $saved[$property];
         }
       }
-      foreach ($this->sids as $sid => $is_enabled) {
-        if ($is_enabled) {
-          $this->servers[$sid] = ldap_servers_get_servers($sid, 'enabled', TRUE);
+      
+      $enabled_ldap_servers = ldap_servers_get_servers(NULL, 'enabled');
+      foreach ($this->sids as $sid => $enabled) {
+        if ($enabled && isset($enabled_ldap_servers[$sid])) {
+          $this->enabledAuthenticationServers[$sid] = $enabled_ldap_servers[$sid];
         }
       }
-
     }
     else {
       $this->inDatabase = FALSE;
@@ -131,12 +136,19 @@ class LdapAuthenticationConf {
    *
    * return boolean
    */
-  public function allowUser($name, $ldap_user_entry) {
+  public function allowUser($name, $ldap_user_entry, $account_exists = NULL) {
 
     /**
      * do one of the exclude attribute pairs match
      */
     $exclude = FALSE;
+    
+    // if user does not already exists and deferring to user settings AND user settings only allow 
+    $user_register = variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+    if (!$account_exists && $this->acctCreation == LDAP_AUTHENTICATION_ACCT_CREATION_USER_SETTINGS_FOR_LDAP && $user_register == USER_REGISTER_ADMINISTRATORS_ONLY) {
+      return FALSE;
+    }
+    
     foreach ($this->excludeIfTextInDn as $test) {
       if (stripos($ldap_user_entry['dn'], $test) !== FALSE) {
         return FALSE;//  if a match, return FALSE;
@@ -163,7 +175,7 @@ class LdapAuthenticationConf {
       else {
         drupal_set_message(t(LDAP_AUTHENTICATION_DISABLED_FOR_BAD_CONF_MSG), 'warning');
         $tokens = array('!ldap_authentication_config' => l(t('LDAP Authentication Configuration'), 'admin/config/people/ldap/authentication'));
-        watchdog('warning', 'LDAP Authentication is configured to deny users based on php execution with php_eval function, but php module is not enabled. Please enable php module or remove php code at !ldap_authentication_config .', $tokens);
+        watchdog('ldap_authentication', 'LDAP Authentication is configured to deny users based on php execution with php_eval function, but php module is not enabled. Please enable php module or remove php code at !ldap_authentication_config .', $tokens);
         return FALSE;
       }
     }
@@ -214,13 +226,20 @@ class LdapAuthenticationConf {
       if (!$has_enabled_consumers) {
         drupal_set_message(t(LDAP_AUTHENTICATION_DISABLED_FOR_BAD_CONF_MSG), 'warning');
         $tokens = array('!ldap_consumer_config' => l(t('LDAP Authorization Configuration'), 'admin/config/people/ldap/authorization'));
-        watchdog('warning', 'LDAP Authentication is configured to deny users without LDAP Authorization mappings, but 0 LDAP Authorization consumers are configured:  !ldap_consumer_config .', $tokens);
+        watchdog('ldap_authentication', 'LDAP Authentication is configured to deny users without LDAP Authorization mappings, but 0 LDAP Authorization consumers are configured:  !ldap_consumer_config .', $tokens);
         return FALSE;
       }
 
       return FALSE;
     }
 
+    // allow other modules to hook in and refuse if they like
+    $hook_result = TRUE;
+    drupal_alter('ldap_authentication_allowuser_results', $ldap_user_entry, $name, $hook_result);
+    if (!$hook_result) {
+      watchdog('ldap_authentication', "Authentication Allow User Result=refused for %name", array('%name' => $name), WATCHDOG_NOTICE);
+      return FALSE;
+    }
 
     /**
      * default to allowed
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/README.txt b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/README.txt
index 4533a85..11f74f6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/README.txt
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/README.txt
@@ -5,6 +5,10 @@
 PHP to Test for Allowed LDAP Users
 =======================================
 
+Remember:
+-- php module must be enabled (its one of the core drupal modules)
+-- code should not be enclosed in <?php   ?>
+
 Two variables are available:
 
 (1) $_name - the username ldap server configuration has mapped user to such as "jdoe" etc.  How this is derived is configured in ldap_servers module.
@@ -26,7 +30,7 @@ array(
 Result should print 1 for allowed or 0 for disallowed.  The function used to evaluate the code is php_eval() in php.module
 
 ---------------------------------
-Examples:
+Example 1:
 
 
 //exclude users with guests.myuniversity.edu email address
@@ -37,4 +41,21 @@ else {
   print 0;
 }
 
+---------------------------------
+Example 2:
+
+// test behaviour of nobody excluded
+print 1;
+
+---------------------------------
+Example 3:
+
+// test behaviour of nobody excluded
+print 0;
+
+
+
+
+
+
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.admin.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.admin.inc
index eb60148..307aadf 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.admin.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.admin.inc
@@ -45,7 +45,7 @@ function ldap_authentication_admin_form_submit($form, &$form_state) {
   $auth_conf = new LdapAuthenticationConfAdmin();
   $auth_conf->drupalFormSubmit($form_state['values']);  // add form data to object and save or create
 
-  if (!$auth_conf->enabled_servers()) {
+  if (!$auth_conf->hasEnabledAuthenticationServers()) {
     drupal_set_message(t('No LDAP servers are enabled for authentication,
       so no LDAP Authentication can take place.  This essentially disables
       LDAP Authentication.'), 'warning');
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.inc
index e97a69a..1f040a2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.inc
@@ -27,7 +27,7 @@ function _ldap_authentication_login_form_alter(&$form, &$form_state, $form_id) {
   if (!$auth_conf = ldap_authentication_get_valid_conf()) {
     return;
   }
-  elseif (!$auth_conf->enabled_servers()) {
+  if (!$auth_conf->hasEnabledAuthenticationServers()) {
     return;
   }
 
@@ -173,7 +173,7 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
     }
   }
 
-  if (!count($auth_conf->servers)) {
+  if (!count($auth_conf->enabledAuthenticationServers)) {
     watchdog('ldap_authentication',  'No LDAP servers configured.', array(), WATCHDOG_ERROR);
     form_set_error('name', 'Server Error:  No LDAP servers configured.');
   }
@@ -217,7 +217,7 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
     }
   }
 
-  foreach ($auth_conf->servers as $sid => $ldap_server) {
+  foreach ($auth_conf->enabledAuthenticationServers as $sid => $ldap_server) {
     $watchdog_tokens['%sid'] = $sid;
     $watchdog_tokens['%bind_method'] = $ldap_server->bind_method;
     if ($detailed_watchdog_log) {
@@ -247,7 +247,7 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
         ) {
       $bind_success = ($ldap_server->bind() == LDAP_SUCCESS);
     }
-    elseif ($ldap_server->bind_method == LDAP_SERVERS_BIND_METHOD_ANON_USER) {
+    elseif ($ldap_server->bind_method == LDAP_SERVERS_BIND_METHOD_ANON) {
       $bind_success = ($ldap_server->bind(NULL, NULL, TRUE) == LDAP_SUCCESS);
     }
     elseif ($sso_login) {
@@ -317,7 +317,7 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
     /**
     * #4 CHECK ALLOWED AND EXCLUDED LIST AND PHP FOR ALLOWED USERS
     */
-    $allow = $auth_conf->allowUser($authname, $ldap_user);
+    $allow = $auth_conf->allowUser($authname, $ldap_user, $account_exists);
     if (!$allow) {
       $authentication_result = LDAP_AUTHENTICATION_RESULT_FAIL_DISALLOWED;
       break;  // regardless of how many servers, disallowed user fails
@@ -359,7 +359,7 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
         $watchdog_tokens['%mail'] = $ldap_user['mail'];
       }
       if ($ldap_server->account_name_attr != '') {
-        $accountname = $ldap_user['attr'][$ldap_server->account_name_attr][0];
+        $accountname = $ldap_user['attr'][ldap_server_massage_text($ldap_server->account_name_attr, 'attr_name', LDAP_SERVER_MASSAGE_QUERY_ARRAY)][0];
       }
       else {
       	$accountname = $authname;
@@ -445,10 +445,15 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
      *       a little tweak to add user->data and mail etc as parameters would make it more useful
      *       for external authentication modules
      */
- 	ldap_server_module_load_include('inc', 'ldap_servers', 'ldap_servers.functions');
-
-
-    $account = ldap_create_drupal_account($authname, $accountname, $ldap_user['mail'], $ldap_user['dn'], $sid);
+    ldap_server_module_load_include('inc', 'ldap_servers', 'ldap_servers.functions');
+    
+    $status = 1; 
+    $user_register = variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+    if ($auth_conf->acctCreation == LDAP_AUTHENTICATION_ACCT_CREATION_USER_SETTINGS_FOR_LDAP && $user_register == USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) {
+      $status = 0; // if admin approval required, set status to 1.
+    }
+    $discard_edit = array();
+    $account = ldap_create_drupal_account($authname, $accountname, $ldap_user['mail'], $ldap_user['dn'], $sid, $status, $discard_edit);
     if ($account === FALSE) {
       // need to throw error that account was not created
     }
@@ -458,8 +463,10 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
   else {  // account already exists
     if ($ldap_authentication_authmap == FALSE) {  // LDAP_authen.AC.disallow.ldap.drupal
       if ($auth_conf->loginConflictResolve == LDAP_AUTHENTICATION_CONFLICT_LOG) {
-        $watchdog_tokens['%conflict_name'] = $account_with_same_email->name;
-        watchdog('ldap_authentication', 'LDAP user with DN %dn has a naming conflict with a local drupal user %conflict_name', $watchdog_tokens, WATCHDOG_ERROR);
+       if ($account_with_same_email = user_load_by_mail($ldap_user['mail'])) {
+          $watchdog_tokens['%conflict_name'] = $account_with_same_email->name;
+          watchdog('ldap_authentication', 'LDAP user with DN %dn has a naming conflict with a local drupal user %conflict_name', $watchdog_tokens, WATCHDOG_ERROR);
+        }
         drupal_set_message(t('Another user already exists in the system with the same login name. You should contact the system administrator in order to solve this conflict.'), 'error');
         return FALSE;
       }
@@ -482,8 +489,8 @@ function _ldap_authentication_user_login_authenticate_validate(&$form_state) {
         watchdog('ldap_authentication', 'User e-mail for %username update from %old to %new failed because of system problems.', $watchdog_tokens,  WATCHDOG_ERROR);
       }
       elseif ($auth_conf->emailUpdate == LDAP_AUTHENTICATION_EMAIL_UPDATE_ON_LDAP_CHANGE_ENABLE_NOTIFY ) {
-          $message_tokens = array('@mail' => $ldap_user['mail']);
-          drupal_set_message(t('Your e-mail has been updated to match your LDAP account (@mail).', $message_tokens), 'status');
+          $watchdog_tokens['@mail'] = $ldap_user['mail'];
+          drupal_set_message(t('Your e-mail has been updated to match your LDAP account (@mail).', $watchdog_tokens), 'status');
       }
     }
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.info
index 76234bb..9035021 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/ldap_authentication.info
@@ -14,9 +14,9 @@ files[] = ldap_authentication.theme.inc
 files[] = ldap_authentication.admin.inc
 files[] = tests/ldap_authentication.test
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/tests/LdapServerTestData.ldapauthen1.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/tests/LdapServerTestData.ldapauthen1.inc
index ae56824..fc262c0 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/tests/LdapServerTestData.ldapauthen1.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authentication/tests/LdapServerTestData.ldapauthen1.inc
@@ -74,6 +74,7 @@ $test_data['servers']['ldapauthen1']['search_results']['member=cn=jkool,ou=guest
  */
 $test_data['servers']['ldapauthen1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jdoe at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jdoe', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -82,6 +83,7 @@ $test_data['servers']['ldapauthen1']['users']['cn=jdoe,ou=campus accounts,dc=ad,
 
 $test_data['servers']['ldapauthen1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jkool at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -90,6 +92,7 @@ $test_data['servers']['ldapauthen1']['users']['cn=jkool,ou=guest accounts,dc=ad,
 
 $test_data['servers']['ldapauthen1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'unkool at nowhere.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -98,6 +101,7 @@ $test_data['servers']['ldapauthen1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniv
 
 $test_data['servers']['ldapauthen1']['users']['cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'verykool at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'verykool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -114,6 +118,7 @@ $test_data['servers']['ldapauthen1']['users']['cn=verykool,ou=special guests,ou=
  */
 $test_data['servers']['ldapauthen1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'service-account at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'service-account', 'count' => 1),
     'memberOf' => array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/LdapAuthorizationConsumerConf.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/LdapAuthorizationConsumerConf.class.php
index 5155981..fd59266 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/LdapAuthorizationConsumerConf.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/LdapAuthorizationConsumerConf.class.php
@@ -118,28 +118,27 @@ class LdapAuthorizationConsumerConf {
 
     $this->sid = $consumer_conf->sid;
     $this->consumerType = $consumer_conf->consumer_type;
-    $this->numericConsumerConfId = $consumer_conf->numeric_consumer_conf_id;
+    $this->numericConsumerConfId = isset($consumer_conf->numeric_consumer_conf_id)? $consumer_conf->numeric_consumer_conf_id : NULL;
     $this->status = ($consumer_conf->status) ? 1 : 0;
     $this->onlyApplyToLdapAuthenticated  = (bool)(@$consumer_conf->only_ldap_authenticated);
 
     $this->deriveFromDn  = (bool)(@$consumer_conf->derive_from_dn);
-    $this->deriveFromDnAttr = $consumer_conf->derive_from_dn_attr;
+    $this->deriveFromDnAttr = isset($consumer_conf->derive_from_dn_attr) ? $consumer_conf->derive_from_dn_attr : NULL;
 
-    $this->deriveFromAttr  = (bool)($consumer_conf->derive_from_attr);
+    $this->deriveFromAttr  = (bool)(@$consumer_conf->derive_from_attr);
     $this->deriveFromAttrAttr =  $this->linesToArray($consumer_conf->derive_from_attr_attr);
-    $this->deriveFromAttrUseFirstAttr  = (bool)($consumer_conf->derive_from_attr_use_first_attr);
-    $this->deriveFromAttrNested  = (bool)($consumer_conf->derive_from_attr_nested);
+    $this->deriveFromAttrUseFirstAttr  = (bool)(@$consumer_conf->derive_from_attr_use_first_attr);
+    $this->deriveFromAttrNested  = (bool)(@$consumer_conf->derive_from_attr_nested);
 
     $this->deriveFromEntry  = (bool)(@$consumer_conf->derive_from_entry);
     $this->deriveFromEntryEntries = $this->linesToArray($consumer_conf->derive_from_entry_entries);
-    $this->deriveFromEntryEntriesAttr = $consumer_conf->derive_from_entry_entries_attr;
-
+    $this->deriveFromEntryEntriesAttr = isset($consumer_conf->derive_from_entry_entries_attr) ? $consumer_conf->derive_from_entry_entries_attr : NULL;
 
     $this->deriveFromEntryMembershipAttr = $consumer_conf->derive_from_entry_attr;
-    $this->deriveFromEntryAttrMatchingUserAttr = $consumer_conf->derive_from_entry_user_ldap_attr;
-    $this->deriveFromEntrySearchAll = (bool)($consumer_conf->derive_from_entry_search_all);
-    $this->deriveFromEntryUseFirstAttr  = (bool)($consumer_conf->derive_from_entry_use_first_attr);
-    $this->deriveFromEntryNested = $consumer_conf->derive_from_entry_nested;
+    $this->deriveFromEntryAttrMatchingUserAttr = isset($consumer_conf->derive_from_entry_user_ldap_attr) ? $consumer_conf->derive_from_entry_user_ldap_attr : NULL;
+    $this->deriveFromEntrySearchAll = (bool)(@$consumer_conf->derive_from_entry_search_all);
+    $this->deriveFromEntryUseFirstAttr  = (bool)(@$consumer_conf->derive_from_entry_use_first_attr);
+    $this->deriveFromEntryNested = isset($consumer_conf->derive_from_entry_nested) ? $consumer_conf->derive_from_entry_nested : NULL;
 
     $this->mappings = $this->pipeListToArray($consumer_conf->mappings, FALSE);
     $this->useMappingsAsFilter = (bool)(@$consumer_conf->use_filter);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.inc
index 69b6a26..452bb1d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.inc
@@ -495,7 +495,7 @@ function _ldap_authorization_ldap_authorization_maps_alter(&$user, &$user_ldap_e
       }
     }
     elseif (isset($user_ldap_entry[$consumer_conf->deriveFromEntryAttrMatchingUserAttr]) ||
-      isset($user_ldap_entry['attr'][$consumer_conf->deriveFromEntryAttrMatchingUserAttr])) {
+      isset($user_ldap_entry['attr'][ldap_server_massage_text($consumer_conf->deriveFromEntryAttrMatchingUserAttr, 'attr_name', LDAP_SERVER_MASSAGE_QUERY_ARRAY)])) {
       // $derive_from_entries_entries, $derive_from_entry_attr, $derive_from_entry_user_ldap_attr, $user_ldap_entry, $nested = FALSE
       $derive_from_entry_authorizations = $ldap_server->deriveFromEntryGroups(
         $consumer_conf->deriveFromEntryEntries,
@@ -505,6 +505,7 @@ function _ldap_authorization_ldap_authorization_maps_alter(&$user, &$user_ldap_e
         $user_ldap_entry,
         $consumer_conf->deriveFromEntryNested
       );
+      //  deriveFromEntryGroups($entries, $entries_attr
       if (count($derive_from_entry_authorizations)) {
         foreach ($derive_from_entry_authorizations as $i => $authorization) {
           if ($consumer_conf->deriveFromEntryUseFirstAttr) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.info
index 2f9addb..75bff56 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization.info
@@ -23,9 +23,9 @@ files[] = tests/Og/Og.test
 files[] = tests/Og/Og2.test
 configure = admin/config/people/ldap/authorization
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php
index 102f749..f6fd40b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php
@@ -25,7 +25,7 @@ class LdapAuthorizationConsumerDrupalRole extends LdapAuthorizationConsumerAbstr
   public $revokeLdapProvisionedDefault = TRUE;
   public $regrantLdapProvisionedDefault = TRUE;
   public $createContainersDefault = TRUE;
-  public $drupalRolesByName = array();
+  private $drupalRolesByName = array();
 
  /**
    * Constructor Method
@@ -112,15 +112,15 @@ class LdapAuthorizationConsumerDrupalRole extends LdapAuthorizationConsumerAbstr
 
   public function revokeSingleAuthorization(&$user, $role_name, &$user_auth_data) {
 
-    $user_edit = array('roles' => array_diff($user->roles, array($this->drupalRolesByName[$role_name] => $role_name)));
+    $user_edit = array('roles' => array_diff($user->roles, array($this->getDrupalRoleByName($role_name) => $role_name)));
     $account = user_load($user->uid);
     $user = user_save($account, $user_edit);
-    $result = ($user && !isset($user->roles[$this->drupalRolesByName[$role_name]]));
+    $result = ($user && !isset($user->roles[$this->getDrupalRoleByName($role_name)]));
 
     if ($this->detailedWatchdogLog) {
       watchdog('ldap_authorization', 'LdapAuthorizationConsumerDrupalRole.revokeSingleAuthorization()
         revoked:  rid=%rid, role_name=%role_name for username=%username, result=%result',
-        array('%rid' => $this->drupalRolesByName[$role_name], '%role_name' => $role_name, '%username' => $user->name,
+        array('%rid' => $this->getDrupalRoleByName($role_name), '%role_name' => $role_name, '%username' => $user->name,
           '%result' => $result), WATCHDOG_DEBUG);
     }
 
@@ -133,19 +133,16 @@ class LdapAuthorizationConsumerDrupalRole extends LdapAuthorizationConsumerAbstr
    */
 
   public function grantSingleAuthorization(&$user, $role_name, &$user_auth_data) {
-    if (! isset($this->drupalRolesByName[$role_name])) {
+    if (is_null($this->getDrupalRoleByName($role_name))) {
         watchdog('ldap_authorization', 'LdapAuthorizationConsumerDrupalRole.grantSingleAuthorization()
         failed to grant %username the role %role_name because role does not exist',
         array('%role_name' => $role_name, '%username' => $user->name),
         WATCHDOG_ERROR);
         return FALSE;
     }
-    debug($user->roles);
-    $new_roles = $user->roles + array($this->drupalRolesByName[$role_name] => $role_name);
+    $new_roles = $user->roles + array($this->getDrupalRoleByName($role_name) => $role_name);
     $user_edit = array('roles' => $new_roles);
 
-    debug($new_roles);
-    debug($user_edit);
     if ($this->detailedWatchdogLog) {
       watchdog('ldap_authorization', 'grantSingleAuthorization in drupal rold' . print_r($user, TRUE), array(), WATCHDOG_DEBUG);
     }
@@ -157,7 +154,7 @@ class LdapAuthorizationConsumerDrupalRole extends LdapAuthorizationConsumerAbstr
     if ($this->detailedWatchdogLog) {
       watchdog('ldap_authorization', 'LdapAuthorizationConsumerDrupalRole.grantSingleAuthorization()
         granted: rid=%rid, role_name=%role_name for username=%username, result=%result',
-        array('%rid' => $this->drupalRolesByName[$role_name], '%role_name' => $role_name, '%username' => $user->name,
+        array('%rid' => $this->getDrupalRoleByName($role_name), '%role_name' => $role_name, '%username' => $user->name,
           '%result' => $result), WATCHDOG_DEBUG);
     }
 
@@ -171,40 +168,45 @@ class LdapAuthorizationConsumerDrupalRole extends LdapAuthorizationConsumerAbstr
 
   public function validateAuthorizationMappingTarget($map_to, $form_values = NULL, $clear_cache = FALSE) {
     $has_form_values = is_array($form_values);
-		$message_type = NULL;
-		$message_text = NULL;
-		$normalized = $this->normalizeMappings(array($map_to));
-		$tokens = array('!map_to' => $map_to);
-		$pass = FALSE;
-		if (is_array($normalized) && isset($normalized[0][1]) && $normalized[0][1] !== FALSE ) {
-			$available_authorization_ids = $this->availableConsumerIDs($clear_cache);
+	  $message_type = NULL;
+    $message_text = NULL;
+    $normalized = $this->normalizeMappings(array($map_to));
+    $tokens = array('!map_to' => $map_to);
+    $pass = FALSE;
+   
+    if (is_array($normalized) && isset($normalized[0][1]) && $normalized[0][1] !== FALSE ) {
+      $available_authorization_ids = $this->availableConsumerIDs($clear_cache);
       $available_authorization_ids = array_map('drupal_strtolower', $available_authorization_ids);
-     // debug($available_authorization_ids); debug($normalized[0]);
-			$pass = (in_array(drupal_strtolower($normalized[0]), $available_authorization_ids));
-		}
+      $pass = (in_array(drupal_strtolower($normalized[0]), $available_authorization_ids));
+    }
 
-		if (!$pass) {
-			$message_text = '<code>"' . t('!map_to', $tokens) . '</code>" ' . t('does not map to any existing Drupal roles. ');
+    if (!$pass) {
+      $message_text = '<code>"' . t('!map_to', $tokens) . '</code>" ' . t('does not map to any existing Drupal roles. ');
       if ($has_form_values) {
         $create_consumers = (isset($form_values['synchronization_actions']['create_consumers']) && $form_values['synchronization_actions']['create_consumers']);
       }
       else {
         $create_consumers = $this->consumerConf->create_consumers;
       }
-			if ($create_consumers && $this->allowConsumerObjectCreation) {
-				$message_type = 'warning';
+      if ($create_consumers && $this->allowConsumerObjectCreation) {
+        $message_type = 'warning';
         $message_text .= t('It will be created when needed.  If "!map_to" is not intentional, please fix it', $tokens);
-			}
-			elseif (!$this->allowConsumerObjectCreation) {
-				$message_type = 'error';
-				$message_text .= t('Since automatic Drupal role creation is not possible with this module, an existing role must be mapped to.');
-			}
-			elseif (!$create_consumers) {
-				$message_type = 'error';
-				$message_text .= t('Since automatic Drupal role creation is disabled, an existing role must be mapped to.  Either enable role creation or map to an existing role.');
-			}
-
-		}
+      }
+      elseif (!$this->allowConsumerObjectCreation) {
+        $message_type = 'error';
+        $message_text .= t('Since automatic Drupal role creation is not possible with this module, an existing role must be mapped to.');
+      }
+      elseif (!$create_consumers) {
+        $message_type = 'error';
+        $message_text .= t('Since automatic Drupal role creation is disabled, an existing role must be mapped to.  Either enable role creation or map to an existing role.');
+      }
+    }
 		return array($message_type, $message_text);
 	}
+  
+  private function getDrupalRoleByName($role_name) {
+  	$role_name_lowercase = drupal_strtolower($role_name);
+
+  	return (isset($this->drupalRolesByName[$role_name_lowercase]) ? $this->drupalRolesByName[$role_name_lowercase] : NULL);
+  }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/ldap_authorization_drupal_role.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/ldap_authorization_drupal_role.info
index 39c1848..29163f2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/ldap_authorization_drupal_role.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_drupal_role/ldap_authorization_drupal_role.info
@@ -10,9 +10,9 @@ files[] = LdapAuthorizationConsumerRole.class.php
 files[] = ldap_authorization_drupal_role.module
 files[] = ldap_authorization_drupal_role.inc
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_og/ldap_authorization_og.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_og/ldap_authorization_og.info
index b6434df..9b67c71 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_og/ldap_authorization_og.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/ldap_authorization_og/ldap_authorization_og.info
@@ -13,9 +13,9 @@ files[] = ldap_authorization_og.inc
 
 core = "7.x"
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/1197636/1197636.ldap_servers.test_data.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/1197636/1197636.ldap_servers.test_data.inc
index 2a73919..b4d8064 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/1197636/1197636.ldap_servers.test_data.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/1197636/1197636.ldap_servers.test_data.inc
@@ -45,6 +45,7 @@ $servers['fake_server1']['search_results']['member=cn=verykool,ou=special guests
  */
 $servers['fake_server1']['users']['cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
   'dn' => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+  'distinguishedname' => array( 0 => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   'mail' => array( 0 => 'verykool at myuniversity.edu', 'count' => 1),
   'sAMAccountName' => array( 0 => 'verykool', 'count' => 1),
   'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -59,6 +60,7 @@ $servers['fake_server1']['users']['cn=verykool,ou=special guests,ou=guest accoun
  */
 $servers['fake_server1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
   'dn' => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu',
+  'distinguishedname' => array( 0 => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   'mail' => array( 0 => 'service-account at myuniversity.edu', 'count' => 1),
   'sAMAccountName' => array( 0 => 'service-account', 'count' => 1),
   'memberOf' => array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/BasicTests/ldap_servers.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/BasicTests/ldap_servers.inc
index fcc766f..71637de 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/BasicTests/ldap_servers.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/BasicTests/ldap_servers.inc
@@ -50,6 +50,7 @@ $servers['ldapauthor1']['search_results']['(member=cn=jkool,ou=guest accounts,dc
  */
 $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jdoe at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jdoe', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -58,6 +59,7 @@ $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversi
 
 $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jkool at guests.myuniversity.edu', 'count' => 1),
     'mailcode' => array( 0 => '17', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
@@ -68,6 +70,7 @@ $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversi
 // duplicate of previous with escaped commas in cn.
 $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'wilmaf at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'wilmaf', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -81,6 +84,7 @@ $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,
 // duplicate of previous with quoted cn.
 $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'barneyr at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'barneyr', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -94,6 +98,7 @@ $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=
 
 $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'unkool at nowhere.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -102,6 +107,7 @@ $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu
 
 $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'verykool at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'verykool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -117,6 +123,7 @@ $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest account
 
 $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'newkool at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'newkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -125,6 +132,7 @@ $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts
 
 $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'joeprogrammer at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'joeprogrammer', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -147,27 +155,32 @@ $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,d
  */
 $servers['ldapauthor1']['groups']['cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),  // bogus recursion to test bogus recursion
   );
 
 $servers['ldapauthor1']['groups']['cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array('count' => 0),
   );
 
@@ -188,6 +201,7 @@ $servers['ldapauthor1']['search_results']['(|((dn=cn=staff,ou=people,dc=ad,dc=my
  */
 $servers['ldapauthor1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'service-account at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'service-account', 'count' => 1),
     'memberOf' => array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromAttr/ldap_servers.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromAttr/ldap_servers.inc
index 4ebe5a6..1cc5578 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromAttr/ldap_servers.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromAttr/ldap_servers.inc
@@ -50,6 +50,7 @@ $servers['ldapauthor1']['search_results']['(member=cn=jkool,ou=guest accounts,dc
  */
 $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jdoe at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jdoe', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -58,6 +59,7 @@ $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversi
 
 $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jkool at guests.myuniversity.edu', 'count' => 1),
     'mailcode' => array( 0 => '17', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
@@ -68,6 +70,7 @@ $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversi
 // duplicate of previous with escaped commas in cn.
 $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'wilmaf at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'wilmaf', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -81,6 +84,7 @@ $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,
 // duplicate of previous with quoted cn.
 $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'barneyr at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'barneyr', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -94,6 +98,7 @@ $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=
 
 $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'unkool at nowhere.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -102,6 +107,7 @@ $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu
 
 $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'verykool at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'verykool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -119,6 +125,7 @@ $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest account
 
 $servers['ldapauthor1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'service-account at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'service-account', 'count' => 1),
     'memberOf' => array(
@@ -132,6 +139,7 @@ $servers['ldapauthor1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=ed
 
 $servers['ldapauthor1']['users']['cn=justin,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=justin,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=justin,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'justin at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'justin', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -141,6 +149,7 @@ $servers['ldapauthor1']['users']['cn=justin,ou=guest accounts,dc=ad,dc=myunivers
 
 $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'newkool at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'newkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -149,6 +158,7 @@ $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts
 
 $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'joeprogrammer at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'joeprogrammer', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -186,26 +196,31 @@ $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,d
  */
 $servers['ldapauthor1']['groups']['cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),  // bogus recursion to test bogus recursion
   );
 
 $servers['ldapauthor1']['groups']['cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array('count' => 0),
   );
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromDN/ldap_servers.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromDN/ldap_servers.inc
index 046345e..483b43a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromDN/ldap_servers.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/DeriveFromDN/ldap_servers.inc
@@ -50,6 +50,7 @@ $servers['ldapauthor1']['search_results']['(member=cn=jkool,ou=guest accounts,dc
  */
 $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jdoe at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jdoe', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -58,6 +59,7 @@ $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversi
 
 $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'jkool at guests.myuniversity.edu', 'count' => 1),
     'mailcode' => array( 0 => '17', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
@@ -68,6 +70,7 @@ $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversi
 // duplicate of previous with escaped commas in cn.
 $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'wilmaf at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'wilmaf', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -81,6 +84,7 @@ $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,
 // duplicate of previous with quoted cn.
 $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'barneyr at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'barneyr', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -94,6 +98,7 @@ $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=
 
 $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'unkool at nowhere.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -102,6 +107,7 @@ $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu
 
 $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'verykool at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'verykool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -117,6 +123,7 @@ $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest account
 
 $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'newkool at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'newkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -125,6 +132,7 @@ $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts
 
 $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'joeprogrammer at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'joeprogrammer', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -138,6 +146,7 @@ $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,d
  */
 $servers['ldapauthor1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'mail' => array( 0 => 'service-account at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'service-account', 'count' => 1),
     'memberOf' => array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Og/ldap_servers.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Og/ldap_servers.inc
index e4f20c1..19463f7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Og/ldap_servers.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Og/ldap_servers.inc
@@ -50,6 +50,7 @@ $servers['ldapauthor1']['search_results']['(member=cn=jkool,ou=guest accounts,dc
  */
 $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'jdoe at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jdoe', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -58,6 +59,7 @@ $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversi
 
 $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'jkool at guests.myuniversity.edu', 'count' => 1),
     'mailcode' => array( 0 => '17', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
@@ -68,6 +70,7 @@ $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversi
 // duplicate of previous with escaped commas in cn.
 $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'wilmaf at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'wilmaf', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -81,6 +84,7 @@ $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,
 // duplicate of previous with quoted cn.
 $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'barneyr at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'barneyr', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -94,6 +98,7 @@ $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=
 
 $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'unkool at nowhere.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -102,6 +107,7 @@ $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu
 
 $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'verykool at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'verykool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -117,6 +123,7 @@ $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest account
 
 $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'newkool at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'newkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -125,6 +132,7 @@ $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts
 
 $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'joeprogrammer at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'joeprogrammer', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -147,27 +155,32 @@ $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,d
  */
 $servers['ldapauthor1']['groups']['cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),  // bogus recursion to test bogus recursion
   );
 
 $servers['ldapauthor1']['groups']['cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array('count' => 0),
   );
 
@@ -227,6 +240,7 @@ $servers['ldapauthor1']['search_results']['(|((dn=cn=staff,ou=people,dc=ad,dc=my
  */
 $servers['ldapauthor1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu',
+        'distinguishedname' => array( 0 => 'cn=people,cn=groups,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'service-account at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'service-account', 'count' => 1),
     'memberOf' => array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Other/ldap_servers.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Other/ldap_servers.inc
index e4f20c1..ac40759 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Other/ldap_servers.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_authorization/tests/Other/ldap_servers.inc
@@ -50,6 +50,7 @@ $servers['ldapauthor1']['search_results']['(member=cn=jkool,ou=guest accounts,dc
  */
 $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'jdoe at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jdoe', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -58,6 +59,7 @@ $servers['ldapauthor1']['users']['cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversi
 
 $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=jkool,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'jkool at guests.myuniversity.edu', 'count' => 1),
     'mailcode' => array( 0 => '17', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
@@ -68,6 +70,7 @@ $servers['ldapauthor1']['users']['cn=jkool,ou=guest accounts,dc=ad,dc=myuniversi
 // duplicate of previous with escaped commas in cn.
 $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'wilmaf at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'wilmaf', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -81,6 +84,7 @@ $servers['ldapauthor1']['users']['cn=Flintstone\, Wilma,ou=guest accounts,dc=ad,
 // duplicate of previous with quoted cn.
 $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'barneyr at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'barneyr', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -94,6 +98,7 @@ $servers['ldapauthor1']['users']['cn=Rubble\, Barney,ou=guest accounts,dc=ad,dc=
 
 $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'unkool at nowhere.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'jkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -102,6 +107,7 @@ $servers['ldapauthor1']['users']['cn=unkool,ou=lost,dc=ad,dc=myuniversity,dc=edu
 
 $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=verykool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'verykool at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'verykool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -117,6 +123,7 @@ $servers['ldapauthor1']['users']['cn=verykool,ou=special guests,ou=guest account
 
 $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=newkool,ou=special guests,ou=guest accounts,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'newkool at guests.myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'newkool', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -125,6 +132,7 @@ $servers['ldapauthor1']['users']['cn=newkool,ou=special guests,ou=guest accounts
 
 $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'joeprogrammer at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'joeprogrammer', 'count' => 1),
     'password' => array( 0 => 'goodpwd', 'count' => 1),
@@ -147,27 +155,32 @@ $servers['ldapauthor1']['users']['cn=joeprogrammer,ou=it,dc=ad,dc=myuniversity,d
  */
 $servers['ldapauthor1']['groups']['cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=developers,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=it,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
     'memberOf' => array( 0 => 'cn=sysadmins,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),  // bogus recursion to test bogus recursion
   );
 
 $servers['ldapauthor1']['groups']['cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=staff,ou=people,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu', 'count' => 1),
   );
 
 $servers['ldapauthor1']['groups']['cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu',
+    'distinguishedname' => array( 0 => 'cn=people,ou=it,dc=ad,dc=myuniversity,dc=edu'),
     'memberOf' => array('count' => 0),
   );
 
@@ -227,6 +240,7 @@ $servers['ldapauthor1']['search_results']['(|((dn=cn=staff,ou=people,dc=ad,dc=my
  */
 $servers['ldapauthor1']['users']['cn=service-account,dc=ad,dc=myuniversity,dc=edu']['attr'] = array(
     'dn' => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu',
+            'distinguishedname' => array( 0 => 'cn=service-account,dc=ad,dc=myuniversity,dc=edu'),
     'mail' => array( 0 => 'service-account at myuniversity.edu', 'count' => 1),
     'sAMAccountName' => array( 0 => 'service-account', 'count' => 1),
     'memberOf' => array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_feeds/ldap_feeds.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_feeds/ldap_feeds.info
index 80852cc..bac9ad3 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_feeds/ldap_feeds.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_feeds/ldap_feeds.info
@@ -12,9 +12,9 @@ configure = admin/structure/feeds
 core = 7.x
 php = 5.2
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_help.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_help.info
index 134f3b2..1cef3ad 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_help.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_help.info
@@ -6,9 +6,9 @@ core = 7.x
 
 dependencies[] = ldap_servers
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/README.txt b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/README.txt
new file mode 100644
index 0000000..70b8c5b
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/README.txt
@@ -0,0 +1,93 @@
+
+This script is intended to help separate LDAP Drupal module configuration and bugs from LDAP server, ldap php extension, and related connectivity and LDAP permissions issues.  It uses the php ldap extension functions like ldap_connect(), ldap_search(), etc. rather than the Drupal LDAP module code.
+
+Watchout for the following:
+-- The test script does not depend on the Drupal LDAP module and should not be run within a web server context.  -- Command line PHP with the LDAP Extension enabled are requirements.
+-- Often command line PHP will have a different php.ini configuration than the web server's php.ini.  See http://php.net/manual/features.commandline.php
+
+Additional background on prerequisites and debugging Drupal LDAP module are available at:
+http://drupal.org/node/1023900
+http://drupal.org/node/1141764
+
+
+--------------------------------
+Running the Script
+--------------------------------
+
+1.  Copy this directory (ldap_test_script) outside of web root.
+2.  Edit config.inc to reflect your server configuration. The array is in the form:
+    $config['servers'][<server friendly name>][<server param>] = value
+    $config['servers'][<server friendly name>]['test_queries'][<query name>] = array of test query data
+    $config['servers'][<server friendly name>]['test_provisions'][<provision name>] = array of test provision data
+    
+    in provisioning part of array:
+      'delete_if_exists' TURE | FALSE indicates if the provisioned object should be deleted if it exists
+      'find_filter'      is the filter to find the object. eg.  'cn=jdoe', 'distinguishedname=...'
+      'attr'             is the array of attribute/values to provision.  should not include 'dn'
+
+    such as:
+
+    array(
+    'servers' => array(
+      'default' => array(
+        'server_address' => 'ad.mycollege.edu',
+        'server_port'  => 389,
+        'server_tls'  => FALSE,
+        'server_bind_method'  => LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT, 
+        'server_base_dn' => 'ou=people,dc=ad,dc=mycollege,dc=edu',
+        'server_bind_dn' => 'cn=ldap-service-account,ou=service accounts,dc=ad,dc=mycollege,dc=edu',
+        'server_bind_pw' => 'password_here',
+        'test_queries' => array(
+          'user' => array(
+            'filter'  => 'cn=jbarclay',
+            'show_attr' => array('dn','cn','displayname','sn','givenname','mail','samaccountname','email'),
+          ),
+        ),
+        'test_provisions' => array(
+          'simple_user' => array(
+            'dn' =>  "cn=ed-drupal-user-17,ou=people,dc=ad,dc=mycollege,dc=edu",
+            'delete_if_exists' => TRUE,
+            'find_filter' => "distinguishedName=cn=ed-drupal-user-17,ou=people,dc=ad,dc=mycollege,dc=edu",
+            'attr' => array(
+              "displayName" => "Drupal User",
+              "cn" => 'ed-drupal-user-17',
+              "samaccountname" => 'ed-drupal-user-17',
+              "objectclass" => array(
+                "top", "person", "organizationalPerson", "user",
+              ),
+              "description" => "test user",
+              'mail' => 'ed-drupal-user-17 at ad.mycollege.edu',
+              'givenName' => 'Drupal',
+              'sn' => 'User',
+              'distinguishedName' =>  "cn=ed-drupal-user-17,ou=people,dc=ad,dc=mycollege,dc=edu",
+            ),
+          ),
+          'simple_group' => array(
+            'dn' =>  "cn=ed-drupal-group2,ou=groups,dc=ad,dc=mycollege,dc=edu",
+            'delete_if_exists' => TRUE,
+            'find_filter' => "distinguishedName=cn=ed-drupal-group2,ou=groups,dc=ad,dc=mycollege,dc=edu",
+            'attr' => array(
+              "cn" => 'ed-drupal-group2',
+              "sAMAccountName" => 'ed-drupal-group2',
+              'instanceType' =>  '4',
+              "objectClass" => array(
+                "top", "group",
+              ),
+              'name' => 'ed-drupal-group2',
+              'objectCategory' =>  'CN=Group,CN=Schema,CN=Configuration,dc=mycollege,dc=edu',
+              'distinguishedName' =>  "cn=ed-drupal-group2,ou=groups,dc=ad,dc=mycollege,dc=edu",
+            ),
+          ),
+        ),
+      );
+      
+3.  Comment out the die() statement near the top of config.php
+    That is:
+      die('Move this..
+    Becomes:
+      // die('Move this...
+      
+4. From the ldap_test_script, type:
+   php test.php
+
+
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/config.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/config.inc
new file mode 100644
index 0000000..27754d8
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/config.inc
@@ -0,0 +1,101 @@
+<?php
+
+die('Move this script outside of Drupal and uncomment the die statement in config.inc to run.'); // remove this line after moving out the scripts outside of drupal root.
+
+function ldap_help_config() {
+  
+  // these variables are just for convenience, they can be hard coded directly into the $config array
+  $provision_root = 'ou=test,ou=drupal,dc=ad,dc=mycollege,dc=edu';
+  $query_root = 'dc=ad,dc=mycollege,dc=edu';
+  $user_root = 'ou=people,dc=mycollege,dc=edu';
+  $bind_user = 'cn=drupal-ldap,ou=service accounts,dc=ad,dc=mycollege,dc=edu';
+  $bind_pwd = 'password';
+  $server_address = 'ad.mycollege.edu';
+
+  $config = array(
+    'servers' => array(
+      'default test' => array(
+        'server_address' => $server_address,
+        'server_port'  => 389,
+        'server_tls'  => FALSE,
+        'server_bind_method'  => LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT, // LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT OR LDAP_SERVERS_BIND_METHOD_ANON
+        'server_base_dn' => $user_root,
+        'server_bind_dn' => $bind_user,
+        'server_bind_pw' => $bind_pwd,
+        'test_queries' => array(
+          'user' => array(
+            'filter'  => 'cn=jbarclay',
+            'show_attr' => array('dn','cn','displayname','sn','givenname','mail','samaccountname','email'),
+          ),
+        ),
+        'test_provisions' => array(),
+      ),
+      'query test' => array(
+        'server_address' => $server_address,
+        'server_port'  => 389,
+        'server_tls'  => FALSE,
+        'server_bind_method'  => LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT, // LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT OR LDAP_SERVERS_BIND_METHOD_ANON
+        'server_base_dn' => $query_root,
+        'server_bind_dn' => $bind_user,
+        'server_bind_pw' => $bind_pwd,
+        'test_queries' => array(
+          'group' => array(
+            'filter'  => 'cn=ed-it-nag',
+            'show_attr' => array('dn','cn','samaccountname'),
+          ),
+        ),
+        'test_provisions' => array(),
+      ),
+      'provision test' => array(
+        'server_address' => $server_address,
+        'server_port'  => 389,
+        'server_tls'  => FALSE,
+        'server_bind_method'  => LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT, // LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT OR LDAP_SERVERS_BIND_METHOD_ANON
+        'server_base_dn' => $provision_root,
+        'server_bind_dn' => $bind_user,
+        'server_bind_pw' => $bind_pwd,
+        'test_queries' => array(),
+        'test_provisions' => array(
+          'simple_user' => array(
+            'delete_if_exists' => TRUE,
+            'find_filter' => "distinguishedName=cn=ed-drupal-user-17,$provision_root",
+            'dn' =>  "cn=ed-drupal-user-17,$provision_root",
+            'attr' => array(
+              "displayName" => "Drupal User",
+              "cn" => 'ed-drupal-user-17',
+              "samaccountname" => 'ed-drupal-user-17',
+              "objectclass" => array(
+                "top", "person", "organizationalPerson", "user",
+              ),
+              "description" => "test user",
+              'mail' => 'ed-drupal-user-17 at blah.com',
+              'givenName' => 'Drupal',
+              'sn' => 'User',
+              'distinguishedName' =>  "cn=ed-drupal-user-17,$provision_root",
+            ),
+          ),
+          'simple_group' => array(
+            'delete_if_exists' => TRUE,
+            'find_filter' => "distinguishedName=cn=ed-drupal-group2,$provision_root",
+            'dn' =>  "cn=ed-drupal-group2,$provision_root",
+            'attr' => array(
+              "cn" => 'ed-drupal-group2',
+              "sAMAccountName" => 'ed-drupal-group2',
+              'instanceType' =>  '4',
+              "objectClass" => array(
+                "top", "group",
+              ),
+              'name' => 'ed-drupal-group2',
+              'distinguishedName' =>  "cn=ed-drupal-group2,$provision_root",
+            ),
+          ),
+        ),
+      ),
+    ),
+  );
+  
+  return $config;
+  
+}
+
+?>
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/functions.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/functions.inc
new file mode 100644
index 0000000..5ea11c1
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/functions.inc
@@ -0,0 +1,186 @@
+<?php
+
+error_reporting(E_ALL | E_STRICT);
+set_time_limit (0);
+ini_set("display_errors", 1);
+ini_set("max_execution_time", 0);
+
+define('LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT', 1);
+define('LDAP_SERVERS_BIND_METHOD_ANON', 3);
+
+define('LDAP_FAIL', -1);
+
+define('LDAP_SUCCESS', 0x00);
+define('LDAP_OPERATIONS_ERROR', 0x01);
+define('LDAP_PROTOCOL_ERROR', 0x02);
+define('LDAP_TIMELIMIT_EXCEEDED', 0x03);
+define('LDAP_SIZELIMIT_EXCEEDED', 0x04);
+define('LDAP_COMPARE_FALSE', 0x05);
+define('LDAP_COMPARE_TRUE', 0x06);
+define('LDAP_AUTH_METHOD_NOT_SUPPORTED', 0x07);
+define('LDAP_STRONG_AUTH_REQUIRED', 0x08);
+//NotusedinLDAPv3);
+define('LDAP_PARTIAL_RESULTS', 0x09);
+
+//Next5newinLDAPv3);
+define('LDAP_REFERRAL', 0x0a);
+define('LDAP_ADMINLIMIT_EXCEEDED', 0x0b);
+define('LDAP_UNAVAILABLE_CRITICAL_EXTENSION', 0x0c);
+define('LDAP_CONFIDENTIALITY_REQUIRED', 0x0d);
+define('LDAP_SASL_BIND_INPROGRESS', 0x0e);
+
+define('LDAP_NO_SUCH_ATTRIBUTE', 0x10);
+define('LDAP_UNDEFINED_TYPE', 0x11);
+define('LDAP_INAPPROPRIATE_MATCHING', 0x12);
+define('LDAP_CONSTRAINT_VIOLATION', 0x13);
+define('LDAP_TYPE_OR_VALUE_EXISTS', 0x14);
+define('LDAP_INVALID_SYNTAX', 0x15);
+
+define('LDAP_NO_SUCH_OBJECT', 0x20);
+define('LDAP_ALIAS_PROBLEM', 0x21);
+define('LDAP_INVALID_DN_SYNTAX', 0x22);
+
+define('LDAP_IS_LEAF', 0x23);
+define('LDAP_ALIAS_DEREF_PROBLEM', 0x24);
+
+define('LDAP_INAPPROPRIATE_AUTH', 0x30);
+define('LDAP_INVALID_CREDENTIALS', 0x31);
+define('LDAP_INSUFFICIENT_ACCESS', 0x32);
+define('LDAP_BUSY', 0x33);
+define('LDAP_UNAVAILABLE', 0x34);
+define('LDAP_UNWILLING_TO_PERFORM', 0x35);
+define('LDAP_LOOP_DETECT', 0x36);
+
+define('LDAP_SORT_CONTROL_MISSING', 0x3C);
+define('LDAP_INDEX_RANGE_ERROR', 0x3D);
+
+define('LDAP_NAMING_VIOLATION', 0x40);
+define('LDAP_OBJECT_CLASS_VIOLATION', 0x41);
+define('LDAP_NOT_ALLOWED_ON_NONLEAF', 0x42);
+define('LDAP_NOT_ALLOWED_ON_RDN', 0x43);
+define('LDAP_ALREADY_EXISTS', 0x44);
+define('LDAP_NO_OBJECT_CLASS_MODS', 0x45);
+define('LDAP_RESULTS_TOO_LARGE', 0x46);
+//NexttwoforLDAPv3);
+define('LDAP_AFFECTS_MULTIPLE_DSAS', 0x47);
+define('LDAP_OTHER', 0x50);
+
+//UsedbysomeAPIs);
+define('LDAP_SERVER_DOWN', 0x51);
+define('LDAP_LOCAL_ERROR', 0x52);
+define('LDAP_ENCODING_ERROR', 0x53);
+define('LDAP_DECODING_ERROR', 0x54);
+define('LDAP_TIMEOUT', 0x55);
+define('LDAP_AUTH_UNKNOWN', 0x56);
+define('LDAP_FILTER_ERROR', 0x57);
+define('LDAP_USER_CANCELLED', 0x58);
+define('LDAP_PARAM_ERROR', 0x59);
+define('LDAP_NO_MEMORY', 0x5a);
+
+//PreliminaryLDAPv3codes);
+define('LDAP_CONNECT_ERROR', 0x5b);
+define('LDAP_NOT_SUPPORTED', 0x5c);
+define('LDAP_CONTROL_NOT_FOUND', 0x5d);
+define('LDAP_NO_RESULTS_RETURNED', 0x5e);
+define('LDAP_MORE_RESULTS_TO_RETURN', 0x5f);
+define('LDAP_CLIENT_LOOP', 0x60);
+define('LDAP_REFERRAL_LIMIT_EXCEEDED', 0x61);
+
+
+//error_reporting(E_ALL  &  ~E_NOTICE);
+
+define('LDAP_SCRIPTS_COMMAND_LINE_WARNING', "Warning: PHP from the command line may have different PHP versions, php.ini files, and security context than running in a webserver context. This may produce false test results since Drupal LDAP Modules are run in the web server context.");
+
+require_once('config.inc'); 
+
+function ldap_help_connect($address, $port, $tls, $test = FALSE) {
+    
+  if ($test) {
+    $false_con = ldap_connect("fakehostname.sdfserewerdfsdf.com", 389); // test for ldap extensions that don't actually connect until bind
+    if (ldap_errno($false_con) == LDAP_SUCCESS) {
+      $con = ldap_connect($address, $port);
+      return array(LDAP_OTHER, "ldap_connect does not actually connect until bind with installed extension, so connect is not a valid test.", $con);
+    }
+  }
+  
+  $con = ldap_connect($address, $port);
+  
+  if (!$con || ldap_errno($con) != LDAP_SUCCESS) {
+    $err = ldap_errno($con) . ":" . ldap_error($con) . ":" . ldap_err2str(ldap_errno($con)) .  "!";
+    return array(LDAP_CONNECT_ERROR, "LDAP Connect failure to  $address : $port. $err");
+  }
+
+  // Use TLS if we are configured and able to.
+  if ($tls) {
+    ldap_get_option($con, LDAP_OPT_PROTOCOL_VERSION, $vers);
+    if ($vers == -1) {
+      return array(LDAP_PROTOCOL_ERROR, "Could not get LDAP protocol version.");
+    }
+    if ($vers != 3) {
+      return array(LDAP_CONNECT_ERROR, 'Could not start TLS, only supported by LDAP v3.');
+    }
+    elseif (!function_exists('ldap_start_tls')) {
+      return array(LDAP_CONNECT_ERROR, 'Could not start TLS. It does not seem to be supported by this PHP setup.');
+    }
+    elseif (!ldap_start_tls($con)) {
+      return array(LDAP_CONNECT_ERROR, "Could not start TLS. (Error ". ldap_errno($con) . ":" . ldap_error($con) . ").");
+    }
+  }
+
+  return array(LDAP_SUCCESS, "Successful Connection!", $con);
+}
+
+function ldap_help_show_error($con) {
+   return "\nLDAP Error Number: " . ldap_errno($con) . "\nLDAP Error Description: " . ldap_error($con);
+}
+
+function ldap_help_display($title, $value = NULL) {
+  if (is_array($value)) {
+    echo "\n" . $title; 
+    foreach ($title as $subtitle => $subvalue) {
+      ldap_help_display($subtitle, $subvalue);
+    }
+  }
+  if (!$title && $value) {
+    echo "\n" . $value; 
+  }
+  elseif ((int)$title === $title) {
+    echo "\n" . $value;
+  }
+  else {
+    echo "\n" .  "$title: $value"; 
+  }
+
+}
+/**
+ * Disconnect (unbind) from an active LDAP server.
+ */
+function ldap_help_disconnect(&$con) {
+  if (!$con) {
+    // never bound or not currently bound, so no need to disconnect
+  }
+  else {
+    ldap_help_disconnect($con);
+    $con = NULL;
+  }
+}
+
+/** parse php modules from phpinfo */
+function ldap_help_parsePHPModules() {
+  ob_start();
+  phpinfo(INFO_MODULES);
+  $s = ob_get_contents();
+  ob_end_clean();
+  $matches = array();
+  preg_match_all("/(\nLDAP Support.*Vendor Version[^\n]*?).*$/iDsU", $s, $matches);
+  return isset($matches[1][0]) ? "\nphpinfo() LDAP Info:" . $matches[1][0] : '';
+}
+
+function ldap_help_encodePassword($password) {
+  $password="\"".$password."\"";
+  $encoded="";
+  for ($i=0; $i <strlen($password); $i++){ $encoded.="{$password{$i}}\000"; }
+  return $encoded;
+}
+
+?>
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/test.php b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/test.php
new file mode 100644
index 0000000..e03d555
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_help/ldap_test_script/test.php
@@ -0,0 +1,164 @@
+<?php
+
+// see README.txt for instructions
+
+require_once('functions.inc');
+
+$config = ldap_help_config();
+
+ldap_help_display(NULL, "------------------------------------------\n");
+ldap_help_display(NULL, LDAP_SCRIPTS_COMMAND_LINE_WARNING . "\n");
+
+ldap_help_display(NULL, "------------------------------------------\nldap extension test\n------------------------------------------");
+ldap_help_display("PHP Version", phpversion());
+ldap_help_display('LDAP Extension Loaded', (extension_loaded('ldap')) ? 'yes' : 'no');
+ldap_help_display(NULL, ldap_help_parsePHPModules());
+
+if (!extension_loaded('ldap')) {
+  die('PHP LDAP extension not loaded.  Can not run tests.  Check your php.ini and make sure ldap extension is avaialable.');
+}
+
+foreach ($config['servers'] as $sid => $server) {
+
+  /**
+   * Test LDAP Connect
+   */
+  $results = ldap_help_connect($server['server_address'], $server['server_port'], $server['server_tls'], TRUE);
+  $test_name = "\"" . $sid . "\"";
+  
+  ldap_help_display(NULL, "------------------------------------------\n$test_name connect\n------------------------------------------");
+  $tls = ($server['server_tls']) ? 'yes' : 'no';
+  ldap_help_display('tls', $tls);
+  
+  $anon_bind = ($server['server_bind_method'] == LDAP_SERVERS_BIND_METHOD_ANON);
+  $anon_bind_text = ($anon_bind) ? 'yes' : 'no';
+  ldap_help_display('anonymous bind', $anon_bind_text);
+  
+  ldap_help_display('connect result', $results[1]);
+  ldap_help_display('connect context', join("",array("server: ", $server['server_address'], ", port: ",$server['server_port'], ", tls= $tls")));
+  $con = FALSE;
+  if ($results[0] == LDAP_SUCCESS) {
+    $con = $results[2];
+  }
+  elseif ($results[0] == LDAP_OTHER) {
+    $con = $results[2];
+  }
+  else {
+    ldap_help_disconnect($con);
+    continue;
+  }
+  
+  /**
+   * Test LDAP Bind
+   */    
+  
+  ldap_help_display(NULL, "------------------------------------------\n$test_name bind\n------------------------------------------");
+  
+  if ($anon_bind) {
+    if (@!ldap_bind($con)) {
+      $results = array(ldap_errno($con), "LDAP anonymous bind error.".  ldap_help_show_error($con));
+    }
+  }
+  else {
+    $bind_result = @ldap_bind($con, $server['server_bind_dn'], $server['server_bind_pw']);
+    if (!$bind_result) {
+      $results = array(ldap_errno($con), "LDAP bind failure for user " . $server['server_bind_dn']. "." . ldap_help_show_error($con));
+    }
+    else {
+      $results = array(LDAP_SUCCESS, "LDAP bind success.");
+    }
+  }
+  
+  ldap_help_display('bind result', $results[1]);
+  ldap_help_display('bind dn', $server['server_bind_dn']);
+
+  if ($results[0] != LDAP_SUCCESS) {continue;}
+
+
+  /**
+   * Test LDAP Queries
+   */    
+  foreach ($server['test_queries'] as $query_id => $query) {
+    ldap_help_display(NULL, "------------------------------------------\n$test_name query \"$query_id\" \n------------------------------------------");
+    
+    $filter = $query['filter'];
+    ldap_help_display('search base_dn',$server['server_base_dn']);
+    ldap_help_display('search filter',$filter);
+    ldap_help_display('server_address',$server['server_address']);
+    ldap_help_display('server_port',$server['server_port']);
+    ldap_help_display('tls',$tls);
+      
+    $query_result = @ldap_search($con, $server['server_base_dn'], $filter);
+    if (!$query_result) {
+      ldap_help_display(ldap_errno($con), "LDAP search failure for user $filter." . ldap_help_show_error($con));
+    }
+    else {// display results 
+      $entries = ldap_get_entries($con, $query_result);
+     // print_r($entries);
+      ldap_help_display('search result');
+      if (is_array($entries)) {
+        $entry_count = $entries['count'];
+        if ($entry_count == 0) {
+           ldap_help_display('no entries found');
+        }
+        else {
+          for ($j=0; $j<$entry_count; $j++) {
+            $entry = $entries[$j];
+            $attr_count = $entry['count'];
+            ldap_help_display(NULL,"\nsearch results, entry[$j]:");
+            ldap_help_display('  dn[' .$j . ']',$entry['dn']);
+            for ($i=0; $i<$attr_count; $i++) {
+              $attr_name = $entry[$i];
+              if (in_array($attr_name, $query['show_attr'])) {
+                $values_count = $entry[$attr_name]['count'];
+                for ($k=0; $k<$values_count; $k++) {
+                 ldap_help_display('  ' . $attr_name .'[' .$k . ']',$entry[$attr_name][$k]);
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+   /**
+   * Test LDAP Provisioning
+   */    
+  foreach ($server['test_provisions'] as $provision_id => $provision) {
+    ldap_help_display(NULL, "------------------------------------------\n$test_name provision \"$provision_id\"\n------------------------------------------");
+
+    $dn = $provision['dn'];
+
+    ldap_help_display(NULL, "\nprovision, entry[$dn]:");
+    if ($provision['delete_if_exists']) {
+      $query_result = @ldap_search($con, $server['server_base_dn'], $provision['find_filter']);
+      if ($query_result) {
+        $entries = ldap_get_entries($con, $query_result);
+        if ($entries['count'] == 1) {
+          $result = @ldap_delete($con, $dn);
+          if ($result) {
+            ldap_help_display('deleted existing entry', $dn);
+          }
+          else {
+            ldap_help_display('failed to delete existing entry in provision', $dn);
+            continue;
+          }
+        }
+        else {
+          // no entry exists
+        }
+      }
+    }
+
+
+    $result = @ldap_add($con, $dn, $provision['attr']);
+    $show_result = $result ? 'success' : 'fail';
+    ldap_help_display('provision result', $show_result);
+    if (!$result) {
+      ldap_help_display('provision error', ldap_help_show_error($con));
+    }
+  }
+  
+}
+
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.info
index 6594151..3aae608 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.info
@@ -11,9 +11,9 @@ files[] = ldap_profile.admin.inc
 files[] = LdapProfileConf.class.php
 files[] = LdapProfileConfAdmin.class.php
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.module b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.module
index 787463f..3b62fb7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.module
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_profile/ldap_profile.module
@@ -83,16 +83,19 @@ function ldap_profile_user_login(&$edit, $account) {
 
   module_load_include('functions.inc', 'ldap_servers');
 
+  if (!empty($account)) {
+    $ldapuser = ldap_servers_get_user_ldap_data($account);
+    if (!empty($ldapuser) && !empty($ldapuser['dn'])) {
+      $dn = $ldapuser['dn'];
+    }
+  }
+  
   if (is_array($account->data) && array_key_exists("ldap_authentication", $account->data)) {
     $authdata = $account->data["ldap_authentication"];
     if (array_key_exists('init', $authdata)) {
       $authinit = $authdata['init'];
       if (isset($servers[$authinit['sid']])) {
         $server = $servers[$authinit['sid']];
-        $ldapuser = TRUE;
-        if (array_key_exists('dn', $authinit)) {
-          $dn = $authinit['dn'];
-        }
       }
     }
   }
@@ -181,6 +184,12 @@ function ldap_profile_user_login(&$edit, $account) {
     }
   }
   if (count($changes) > 0) {
+    // preload the previously created account as the original
+    // this is to prevent a cycling condition with entitycache.module 
+    // which will continue until memory is exhausted
+    // the new field changes are treated as updates in this case
+    // (Do not reset the cache until after the changes are saved)
+    $account->original = user_load($account->uid, FALSE);
     user_save($account, $changes);
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_query/ldap_query.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_query/ldap_query.info
index fc4335c..c27d16e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_query/ldap_query.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_query/ldap_query.info
@@ -17,9 +17,9 @@ files[] = tests/ldap_query.test
 
 configure = admin/config/people/ldap/query
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/LdapServer.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/LdapServer.class.php
index c4ecd10..f3ef1ff 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/LdapServer.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/LdapServer.class.php
@@ -367,6 +367,7 @@ class LdapServer {
       $result = $this->ldapQuery($scope, $ldap_query_params);
       if ($result && (ldap_count_entries($this->connection, $result) !== FALSE) ) {
         $entries = ldap_get_entries($this->connection, $result);
+        drupal_alter('ldap_server_search_results', $entries, $ldap_query_params);
         return (is_array($entries)) ? $entries : FALSE;
       }
       elseif ($this->ldapErrorNumber()) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.api.php b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.api.php
new file mode 100644
index 0000000..0da6cd4
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.api.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Documentations of the module hooks
+ */
+
+
+/**
+ * Allow the results from the ldap search answer to be modified
+ * The query parameters are provided as context infomation
+ * (readonly)
+ *
+ */
+function hook_ldap_server_search_results_alter(&$entries, $ldap_query_params) {
+  // look for a specific part of the $results array
+  // and maybe change it
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.functions.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.functions.inc
index 7fc57c9..8066847 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.functions.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.functions.inc
@@ -20,13 +20,15 @@ function ldap_server_module_load_include($type, $module, $name = NULL) {
  * as LDAP_CREATE_ACCOUNT_ALREADY_EXISTS, LDAP_CREATE_ERROR
  *
  */
-function ldap_create_drupal_account($authname, $accountname, $mail, $dn, $sid, $edit = array()) {
+//  $account = ldap_create_drupal_account($authname, $accountname, $ldap_user['mail'], $ldap_user['dn'], $sid, array(), $status);
+
+function ldap_create_drupal_account($authname, $accountname, $mail, $dn, $sid, $status, $edit) {
 
   $edit['name'] = $accountname;
   $edit['pass'] = user_password(20);
   $edit['mail'] = $mail;
   $edit['init'] = $mail;
-  $edit['status'] = 1;
+  $edit['status'] = $status;
   if (!isset($edit['signature'])) {
     $edit['signature'] = '';
   }
@@ -207,16 +209,10 @@ function ldap_server_tokenize_entry($ldap_entry, $token_keys = 'all', $pre = LDA
   foreach ($dn_parts as $pair) {
     list($attr_name, $attr_value) = explode('=', $pair);
     $attr_value = ldap_pear_unescape_dn_value($attr_value);
-    try {
-      $attr_value = check_plain($attr_value);
-    }
-    catch (Exception $e) {
-      if ($detailed_watchdog_log) {
-        $watchdog_tokens = array('%attr_name' => $attr_name);
-        watchdog('ldap_servers', 'skipped tokenization of attribute %attr_name because the value would not pass check_plain function.', $watchdog_tokens, WATCHDOG_DEBUG);
-      }
-       continue; // don't tokenize data that can't pass check_plain
+    if (!($attr_value = ldap_server_check_plain($attr_value, $attr_name))) {
+      continue;
     }
+
     if (!isset($parts_count[$attr_name])) {
       $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . $post] = $attr_value;
       $parts_count[$attr_name] = 0;
@@ -237,18 +233,26 @@ function ldap_server_tokenize_entry($ldap_entry, $token_keys = 'all', $pre = LDA
     foreach ($token_keys as $attr_name) {
       $attr_value = $ldap_entry[$attr_name];
       if (is_array($attr_value) && is_scalar($attr_value[0]) && $attr_value['count'] == 1) {
-        $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . $post] = check_plain($attr_value[0]);
-        $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . '0' . $post] = check_plain($attr_value[0]);
-        $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . 'last' . $post] = check_plain($attr_value[0]);
+        if ($value = ldap_server_check_plain($attr_value[0], $attr_name)) {
+          $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . $post] = $value;
+          $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . '0' . $post] = $value;
+          $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . 'last' . $post] = $value;
+        }       
       }
       elseif (is_array($attr_value) && $attr_value['count'] > 1) {
-        $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . 'last' . $post] = check_plain($attr_value[$attr_value['count']-1]);
+        if ($value = ldap_server_check_plain($attr_value[$attr_value['count']-1], $attr_name)) {
+          $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . 'last' . $post] = $value;
+        }
         for ($i=0; $i<$attr_value['count']; $i++) {
-          $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . $i . $post] = check_plain($attr_value[$i]);
+          if ($value = ldap_server_check_plain($attr_value[$i], $attr_name)) {
+            $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . LDAP_SERVERS_TOKEN_DEL . $i . $post] = $value;
+          }
         }
       }
       elseif (is_scalar($attr_value)) {
-        $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . $post] = check_plain($attr_value);
+        if ($value = ldap_server_check_plain($attr_value, $attr_name)) {
+          $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . $post] = $value;
+        }
       }
     }
   }
@@ -272,16 +276,35 @@ function ldap_server_tokenize_entry($ldap_entry, $token_keys = 'all', $pre = LDA
       else {
         $value = $ldap_entry[$token_key][0];
       }
-      $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . $post] = check_plain($value);
+      $value = ldap_server_check_plain($value, $token_key);
+      if ($value === FALSE) {
+         continue; // don't tokenize data that can't pass check_plain
+      }
+      $tokens[$pre . ldap_server_massage_text($attr_name, 'attr_name', LDAP_SERVER_MASSAGE_TOKEN_REPLACE) . $post] = $value;
     }
   }
 
   // include the dn.  it will not be handled correctly by previous loops
-  $tokens[$pre . 'dn' . $post] = check_plain($ldap_entry['dn']);
+  $tokens[$pre . 'dn' . $post] = ldap_server_check_plain($ldap_entry['dn']);
 
   return $tokens;
 }
 
+
+function ldap_server_check_plain($text, $attr_name = 'attribute', $detailed_watchdog_log = FALSE) {
+  
+  try {
+    $text = @check_plain($text);
+  }
+  catch (Exception $e) {
+    if ($detailed_watchdog_log) {
+      $watchdog_tokens = array('%attr_name' => $attr_name);
+      watchdog('ldap_servers', 'skipped tokenization of attribute %attr_name because the value would not pass check_plain function.', $watchdog_tokens, WATCHDOG_DEBUG);
+    }
+    $text = FALSE;
+  }
+  return $text;
+}
 /**
  * @param string $template in form [cn]@myuniversity.edu
  * @return array of all tokens in the template such as array('cn')
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.info
index 1746a05..56818f5 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.info
@@ -23,9 +23,9 @@ files[] = tests/ldap_servers.test
 configure = admin/config/people/ldap/servers
 
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.test_form.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.test_form.inc
index f731349..439601a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.test_form.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/ldap_servers.test_form.inc
@@ -78,12 +78,14 @@ function ldap_servers_test_form($form, &$form_state, $op = NULL, $sid = NULL) {
     '#weight' => 100,
   );
 
+
   if (isset($_SESSION['ldap_server_test_data']) && count($_SESSION['ldap_server_test_data']) > 0) {
     $form['#suffix'] = theme('ldap_server_ldap_entry_table',
       array(
         'entry' => $_SESSION['ldap_server_test_data']['LDAP Entry']['attr'],
         'username' => $_SESSION['ldap_server_test_data']['username'],
       ));
+
     if (function_exists('dpm')) {
       $user_name =  $_SESSION['ldap_server_test_data']['username'];
       dpm("ldap full result array for: " . $user_name);
@@ -92,14 +94,17 @@ function ldap_servers_test_form($form, &$form_state, $op = NULL, $sid = NULL) {
       $user = user_load_by_name($user_name);
       dpm("drupal user object for: $user_name");
       dpm($user);
-      $user_entity = entity_load_single('user', $user->uid);
-      dpm("drupal user entity for: $user_name");
-      dpm($user_entity);
 
+      $user_entity = entity_load('user', array($user->uid));
+      if (count($user_entity) > 0) {
+        dpm("drupal user entity for: $user_name");
+        dpm($user_entity);
+      }
     }
 
     unset($_SESSION['ldap_server_test_data']);
   }
+
   return $form;
 }
 
@@ -120,6 +125,7 @@ function ldap_servers_test_form_validate($form, &$form_state) {
  * Submit hook for the LDAP server form.
  */
 function ldap_servers_test_form_submit($form, &$form_state) {
+
   $errors = FALSE;
   $values = $form_state['values'];
   $sid = $values['sid'];
@@ -186,9 +192,10 @@ function ldap_servers_test_form_submit($form, &$form_state) {
       'LDAP Entry' => $ldap_user,
     );
   }
-  $message =  theme_item_list(array('items' => $results, 'title' => t('Result Messages'), 'type' => 'ul', 'attributes' => array()));
+  $message = ''; // theme_item_list(array('items' => $results, 'title' => t('Result Messages'), 'type' => 'ul', 'attributes' => array()));
 
   drupal_set_message(t($message), ($has_errors) ? 'error' : 'status');
+
   $form_state['redirect'] = LDAP_SERVERS_MENU_BASE_PATH . "/servers/test/$sid";
 
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/tests/LdapServerTest.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/tests/LdapServerTest.class.php
index b7cb8b9..d3943df 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/tests/LdapServerTest.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_servers/tests/LdapServerTest.class.php
@@ -134,7 +134,7 @@ class LdapServerTest extends LdapServer {
    *   An array of matching entries->attributes, or FALSE if the search is empty.
    */
   function search($base_dn = NULL, $filter, $attributes = array(), $attrsonly = 0, $sizelimit = 0, $timelimit = 0, $deref = LDAP_DEREF_NEVER, $scope = LDAP_SCOPE_SUBTREE) {
-
+    //debug("feaux_server_filter=$filter");
     $filter = trim(str_replace(array("\n", "  "),array('',''), $filter)); // for test matching simplicity remove line breaks and tab spacing
    // debug("filter=$filter");
    // debug('search');  debug("base_dn: $base_dn"); debug("filter:<pre>$filter</pre>");
@@ -159,6 +159,9 @@ class LdapServerTest extends LdapServer {
     $filter = strtolower(trim($filter,"()"));
 
     list($filter_attribute, $filter_value) = explode('=', $filter);
+    if (strtolower($filter_attribute) == 'dn') { // don't allow filtering on dn.  filters should use distinguishedName
+      continue;
+    }
   //  $filter_value = ldap_pear_unescape_filter_value($filter_value);
     // need to perform feaux ldap search here with data in
     $results = array();
@@ -171,11 +174,12 @@ class LdapServerTest extends LdapServer {
         $user_data_lcase['attr'][drupal_strtolower($attr)] = $values;
       }
 
-      $dn = strtolower($dn);
+      
       // if not in basedn, skip
       // eg. basedn ou=campus accounts,dc=ad,dc=myuniversity,dc=edu
       // should be leftmost string in:
       // cn=jdoe,ou=campus accounts,dc=ad,dc=myuniversity,dc=edu
+      $dn = strtolower($dn);
       $pos = stripos($dn, $base_dn);
       if ($pos === FALSE || strcasecmp($base_dn, substr($dn, 0, $pos + 1)) == FALSE) {
         if ($my_debug2) {debug("dn=$dn not in base_dn=$base_dn");}
@@ -206,7 +210,7 @@ class LdapServerTest extends LdapServer {
 
 
       // loop through all attributes, if any don't match continue
-      $user_data_lcase['attr']['dn'] = $dn;
+      $user_data_lcase['attr']['distinguishedname'] = $dn;
       if ($attributes) {
         $selected_user_data = array();
         foreach ($attributes as $i => $attr_name) {
@@ -246,8 +250,8 @@ class LdapServerTest extends LdapServer {
       }
 
       // loop through all attributes, if any don't match continue
-      $group_data['attr']['dn'] = $dn;
-      $group_data['distinguishedname'] = $dn;
+     // $group_data['attr']['distinguishedname'] = $dn;
+     // $group_data['distinguishedname'] = $dn;
 
       if ($attributes) {
         $selected_group_data = array();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.info
index 1c78090..30c6a09 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.info
@@ -6,9 +6,9 @@ dependencies[] = ldap_authentication
 core = 7.x
 configure = admin/config/people/ldap/authentication
 
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.module b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.module
index 784daa9..73ca5ff 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.module
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_sso/ldap_sso.module
@@ -32,8 +32,9 @@ function ldap_sso_menu() {
 function ldap_sso_user_logout($account) {
   $auth_conf = ldap_authentication_get_valid_conf();
   if ($auth_conf->seamlessLogin == 1) {
-    setcookie("seamless_login", 'do not auto login', time() + (int)$auth_conf->cookieExpire, base_path(), "");
-    $_SESSION['seamless_login'] = $_COOKIE['seamless_login'];
+    $cookie_string = 'do not auto login';
+    setcookie("seamless_login", $cookie_string, time() + (int)$auth_conf->cookieExpire, base_path(), "");
+    $_SESSION['seamless_login'] = $cookie_string;
   }
 }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/ldap_views.info b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/ldap_views.info
index d2de16c..02da628 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/ldap_views.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/ldap_views.info
@@ -21,9 +21,9 @@ files[] = handlers/ldap_views_handler_filter.inc
 files[] = handlers/ldap_views_handler_filter_attribute.inc
 files[] = handlers/ldap_views_handler_sort.inc
 files[] = handlers/ldap_views_handler_sort_attribute.inc
-; Information added by drupal.org packaging script on 2012-06-14
-version = "7.x-1.0-beta11"
+; Information added by drupal.org packaging script on 2012-08-20
+version = "7.x-1.0-beta12"
 core = "7.x"
 project = "ldap"
-datestamp = "1339643179"
+datestamp = "1345503423"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/plugins/ldap_views_plugin_query_ldap.inc b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/plugins/ldap_views_plugin_query_ldap.inc
index 79ba017..8ea19b0 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/plugins/ldap_views_plugin_query_ldap.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/ldap/ldap_views/plugins/ldap_views_plugin_query_ldap.inc
@@ -257,6 +257,9 @@ class ldap_views_plugin_query_ldap extends views_plugin_query {
         $entry['jpegphoto'][0] = "<img src='data:image/jpeg;base64,".base64_encode($entry['jpegphoto'][0])."' alt='photo' />";
       }
       foreach ($view->field as $field) {
+        if (! isset($field_alias[$field->field_alias])) {
+          continue;
+        }
         $alias = $field_alias[$field->field_alias];
         if (is_array($entry) && array_key_exists($alias, $entry)) {
           if (is_array($entry[$alias])) {
@@ -298,7 +301,6 @@ class ldap_views_plugin_query_ldap extends views_plugin_query {
         }
       }
       $params[] = &$entries;
-      call_user_func_array('array_multisort', $params);
       // Some LDAP setups output a 'count' variable first in the array, which changes the array size;
       // temporarily remove it, sort the arrays, and then put it back.
       if (array_key_exists('count', $entries)) {
@@ -317,6 +319,9 @@ class ldap_views_plugin_query_ldap extends views_plugin_query {
       $row = array();
       $entry = &$entries[$offset + $i];
       foreach ($view->field as $field) {
+        if (! isset($field_alias[$field->field_alias])) {
+          continue;
+        }
         if (array_key_exists($field_alias[$field->field_alias], $entry)) {
           $row[$field->field_alias] = $entry[$field_alias[$field->field_alias]];
         }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/CHANGELOG.txt b/kolab.org/www/drupal-7.15/sites/all/modules/views/CHANGELOG.txt
deleted file mode 100644
index 744ea75..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/CHANGELOG.txt
+++ /dev/null
@@ -1,397 +0,0 @@
-CHANGELOG for Views 3 for Drupal 7
-
-Views 3.x-7.x-dev
-=================
-#1017128 by bojanz, dereine: Add support to render a single delta.
-follow up by bojanz: Better description for the delta.
-#1017254 by dereine: Fix undefined property error in argument_string handler.
-#1007886 by dereine: Relationship-fields in field_field handler should use the table alias.
-#1018766 by bojanz: Fix click_sort for fieldapi fields.
-#1017128 by bojanz: Follow up: Hide field_field if field value is empty.
-#1018802 by dereine: Convert 'formula' add_where to add_where_expression.
-#1018766 by solotandem: Fix click_sort for fieldapi fields.
-#960648 by dereine: Addjust comment link to d7 changes.
-#997662 by das-peter: Saving a machine name of a display throws Notice "Undefined property new_id".
-#955464 by davereid: Fix notice in views_many_to_one_helper when $operator = 'and'.
-#1019438 by dereine: Fix "illegal choice" for unlimited fields.
-#1019506 by dereine: Fix the remove items element on the rearrange filter_group form.
-#1011004 by dereine: Add validation for query plugin option forms.
-#991202 by helmo: Add option to turn linebreaks into br tags in field rewriting.
-#1001302 by dagmar: Enable attachment displays to have more links.
-#1021784 by tim.plunkett: Extra space added in some classes erroneously.
-#862072 by jhedstrom: Allow argument validator to test if user has edit or delete access to a node.
-Fix fieldsets in field handler.
-#962564 by joshuajabbour: Allow link attributes to be rewritten (internally).
-#672864 by dboulet: cols- class incorrect on table, grid.
-#981872 by infojunkie: Option to hide attachments in summary views.
-#839810 by marcp: Get UID from URL argument default plugin should accept uids from Views pages.
-#1012584 by dereine: Allow filtering on term descriptions.
-#895046 by bojanz, dereine, merlinofchaos: Implement proper multiple field api handling and improve field api rendering in general.
-#1035168 by Ao: Fix strict warning in unread node filter.
-#1044916 by dagmar: Fix improper use of set_current_page member variable.
-#1016814 by eaton: string argument should support name_field.
-#1007376 by dereine: Jump menu was not correctly supporting offsets.
-#1018160 by zhangtaihao: unpack_translatable could infinitely recurse when options are arrays but not declared as such.
-#776830: Attachments and other displays lost "Items to display" controls.
-#747782 by dereine: Improve jump menu grouping.
-#1026014 by dereine and alex_b: Use more always should not ask for the count query to see if we need to show the more link.
-#1012596 by dereine: More inline documentation of class variables.
-#988680 by mikeytown2: Fix Views memory leak with attachments.
-#1023062 by mikejoconnor: Replace views_process_dependency with ctools_dependent_process again.
-#1023558 by mariusz.slonina: Add a user cancel account link.
-#1015960 by duellj: View js should use DOM element not jquery object.
-#1027552 by david_Rothstein: Fix Node: Has new content fatal error.
-#955464 by dereine: Fix many_to_one helper in the case of have no condition and operator = 'and'.
-#696550: Taxonomy validator should always set title when it successfully validates.
-#869172 by bendiy: Add an "external" parameter to field link rewriting so that external URLs can be formed properly even without a scheme.
-#935176 by benoit.borrel: Add "system" table to Views data.
-#839236: Fields named "buttons" would disappear from the rearrange UI due to conflict with the buttons on the form.
-#783514 by dereine: Allow breaking of strings with + and ,
-#1000760 by dereine: Prevent htmlspecialchars() error with string arguments.
-#1033494 by dereine: Fix filter by user picture: change used handler.
-#895046 by bojanz: Follow up of the multiple field handler. Fixes an issue with group-by and rename entity_api_classes.
-#1044250 by dereine: Fix notice in views_handler_filter_history_user_timestamp for disabled comment module.
-#1018872 by dereine: field_field handler shouldn't force to set base field in relationship.
-#1049586 by fgm: Fix strict error in field_field::init.
-#1049276 by david_Rothstein: Commit the 6.11 patch to d7.
-#1011226 by Chris Gillis, Sutharsan: Fix display of error messages in the views inteface.
-#1050962 by Sutharsan: Convert #value to #markup in validate methods.
-#1051034 by Manuel Garcia: Allow field wrapper class to take multiple classes.
-#957284 by dereine: Fix search filter to work with d7 version of search.module's api.
-#534452 by dereine: Remove non-functional "optional" setting on string filters.
-#1019826 by penguin25: Respect contact page access overrides when displaying contact link.
-#652684 by dereine: Search and replace error resulted in invalid function name in nid argument validator.
-#1008358: Updated for translation plugin to work properly with i18nviews.
-#1055378 by mfb: Fix rss_namespaces.
-#957284: by dereine: Followup for filter_search fix.
-#1063208 by dereine: Fix joins between some tables and file_usage.
-#1024586 by merlinofchaos, dereine: Provide a way to move old fields in views data. Additional move field-api data to it.
-#990554 by bojanz: Allow to show default values of fields.
-#1039460 by robertgarrigos: Rename drupal_set_content to drupal_add_region_content
-#1045908 by bfroehle: Fix type in api-upgrading.html
-#646456 by xslim: Add a workaround to run update.php
-#1055602 by dereine: Convert argument search to dbtng.
-#1039584 by dereine: Fix path of taxonomy path, function from d6
-#1019746 by Ralf: Check_plain role names.
-#1006482 by dereine: Fix filter: user posted or commented handler.
-#870960 by bojanz, dereine: Field label should derive from field Label, not field name.
-#1056824 by greggles: Rename the displayed permission from "access all views" to "bypass views access control".
-#1022052 bojanz, dereine: Don't add the field_info into the views data array
-#970162 by longwave: Add "time hence" options to date field format
-#1069100 by paranojik: remove legacy code from views_plugin_row_comment_view:pre_render().
-#741234 by voxpelli: Arguments should check for NULL along with empty string to find empty values.
-#1046170 by agentrickard, blackice2999, dereine: Execute preExecute before generate the countQuery to fix pagers with node_access.
-#1046170 (follow up) by agentrickard: Provide a better documentation for the problem.
-#1070112 by drunken_monkey: Fix notice in field_views_field_label.
-#978824 by dereine: Don't execute validation on config_item remove button.
-by dereine: Convert op_shorter/longer in filter_string to add_where_expression.
-#1046650 by dereine, damz: Don't delete views in the simpletest.
-#1022052 follow up by bojanz: Fix filter_list handler, by loading the field_info again.
-#1023794 by turek: Fix notice in many_to_one_helper.
-#1057810 by mariusz.slonina: Remove views_handler_field_user_link_delete and the views_data entry.
-#1075598 by paranojik: small fix for the single argument case.
-#1053164 by dereine: Support random sort for sqlite by using dbtng functionality.
-#1073862 by solotandem: Title of columns from field revision tables shouldn't have the name delta.
-#1042072 by das-peter: Fix notice in views_handler_field_field.
-#1078570 by duellj: Search filter doesn't work for attachments.
-#1068108 by boombatower: Allow row_class to contain multiple classes.
-#1078738 by dereine: Add a serialized data field handler and set users.data to it.
-#1051308 by dereine: Backport a test fix for views_handler_filter_date from d7v3ui.
-#1079496 by dereine: Fix renamed field names for list fields. This caused an additional filter, which didn't worked.
-#1080690 by dereine: Store the view object in the query object, so it can be used.
-#1080690 by dereine: Fix target/key for querying against sql databases. Therefore don't use db_select anymore.
-#1029534 by bojanz: Fix like for pgsql by using db_like correct.
-#1051308 by bojanz: Fix date filter handler behaviour with offsets.
-#1062506 by dereine: Misnamed parameter for creation of broken handlers.
-#1049998 by dereine: Fix jump_menu summary and some possible notices.
-#975400 by bojanz, dereine: Refactor field render() functions to accept $value.
-#975400 follow up by bojanz: Give field::sanitize_value more power and fix some issues with get_value.
-#1052896 by dereine: Fix summary css classes output.
-#1046674 by dereine: Rename build_mode to view_mode in row_node_view. This fixes some bugs with code using $node->view_mode.
-#1090682 by febbraro: view:load does not clear the cache correctly when reset.
-#1090682 by dereine: Write a simpletest for the reset parameter of view::load.
-#1054272 by dagmar: String filters are non optional anymore.
-#1086158 by dereine: Fix filter handler of list fields.
-#1079178 by Manuel Garcia: Provide a views revert drush command.
-#1097602 by bojanz: Don't run validation for Cancel button on views wizard.
-#1096292 by bojanz: Provide better default for exposed_sorts_label.
-#1097964 by dereine: Don't show contextual links when the contextual module is disabled.
-#1098006 by bojanz: Fix notice in summary style conversion code.
-by dereine: Move get_value and sanitize_value into views_handler to support it for area handlers.
-#1098334 by kannary, dereine: Remove merge leftover in views.help.ini.
-by dereine: Allow to expose sorts again.
-#1098168 by fubhy: HTML Wrapper checkboxes in style settings in default field handler showing weird behavior
-#1096366 by jamsilver: Role access plugin: Replacing array_unshift() with reset()
-#1096834 by dww: Allow importing views code that starts with '<?php'.
-#557160 by joachim: Move docs/docs.php to views.api.php to match the drupal standard of hook documentation.
-#1100052 by michielnugter: Fix strict warning of views_handler_argument::get_value.
-#1023456 by dereine: Fix many_to_one_helper condition buidling.
-#1100738 by bojanz: Extend upgrading docs to include info about argument changes and get_value/sanitize_value.
-#1100776 by bojanz: Fix call for get_value in field_user_language handler.
-
-Views 3.x-7.x-alpha1 (05-Jan-2011)
-==================================
-
-#914102 by torelad: Correct placeholder in views_date_sql_format.
-#931582 by bec: Provide integration of {file_usage} table.
-by dereine: Fix in_operator test.
-by dereine: Fix more testcases by adding $this->resetAll().
-#931886 by bojanz: Remove views_handler_filter_float because numeric handler + dbtng does everything.
-#932792 by bec: Extras for formatting {file_managed} fields.
-by dereine: Move file_* handlers to extra files.
-#934086 by dereine: Attach the contextual links library only once.
-#917402 by yhahn: Update taxonomy handlers for d7 changes.
-#930582 by berdir, Damz, dereine: Fix query substitutions for subqueries.
-#711860 by dereine: 00 entered in pager total fails.
-#889770 by tim.plunkett: Empty fields not always hidden based on row settings.
-#762484 by master-of-magic: Link to node status could be lost between rows.
-#908272 by jaydub: Fix incorrect length of view description form field.
-#772782 by mstrelan: Menu normal item menu should default to system default menu rather than  "navigation".
-#571234 by dereine: Better handling of invalid exposed filters or other methods that cause a view to abort during the build process.
-#685554 by MyXelf: Illegal characters in View tag translated improperly when used in theming templates.
-#508832 by nick_vh: Documentation improvement on templates.
-#887220 by dereine: Fix fatal error when using GROUP BY.
-#930714 by brad.bulger: Add aggregator GUID field.
-#936828 by xjm: Empty field replacement not quite always working.
-#872000 by NaX: Comment edit field needs option to set destination so it can work like comment edit field.
-#799580 by dereine: api version of views exports should use views_api_version() not hardcoded number.
-#884440 by Amitaibu: Improve token encoding to eliminate double html entity encoding.
-#847930 by dereine: Reduce duplicates option not staying set.
-#865482 by dereine: RSS options form does not include override.
-#813422 by dereine and killes: Improved time-based caching expiration.
-#829550 by hefox: Better testing of batch form use by exposed filters.
-#570618 by dereine: Enforce denying access to disabled views more strongly.
-#667014 by dereine: Prevent notice with relationships and node row style if relationship has no endpoint node.
-#835934 by dereine: Provide relationship from files to users.
-#738172 by dereine: Fields rewritten to be links with just a fragment did not work.
-#694094 by Ian Ward: Allow more static caches to be resettable. (port by aspilicious)
-#811226 by dereine: Fix another notice in area text handler. (port by aspilicious)
-#917916 by MyXelf: break delimiter not removed from formatted output. (port by aspilicious)
-#918654 by Will White: numeric GROUP BY fields missing numeric format options.
-by dereine: Test for views_handler_filter_date.
-#785236 by e_log: Add aggregator field item id as a field.
-#366886 by Scott Reynolds: For "last comment time" if "count zero is empty" is set, use empty text for nodes with no comments.
-#611086 by dereine: add -url token to files that can fetch proper URLs with private filesystems.
-#635336 by dereine: Remove unused fields from views.
-#795270 by dereine: Remove unnecessary links to sections that will have no settings.
-#882800 by dereine: Move "Distinct" option to query settings.
-#755342 by jcmarco: Improve SQL date field handling.
-#338893 by dereine: Aggregator argument not always properly converted to title.
-#787184 introduce the long awaited "Update and Override" button.
-#718832 by dereine: Add file extension as a field available within the File group.
-#941974 by dereine: Use contextual links in the views ui when possible.
-#761102 by dereine: test: user default argument.
-by dereine: Fix notice in views_ui_add_page.
-#667950 by damZ, dereine: Port #dependency form elements to #states.
-Added missing file: modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc
-#882800 by rszrama: Fix notice for options['distinct'].
-#950246 by ZoeN: Fix dbtng in views_handler_argument_aggregator_fid.
-#884730 by yched, bojanz, karenS, wundo: Add new UI for formatter settings options to the field settings config.
-by dereine: Add the dependeny ctools.
-#952576 by yhahn: Use JS_LIBRARY group for adding core library js files.
-#563020 by dereine: Replace views object cache with ctools object cache.
-#952636 by yhahn: Support string format identifiers in field_markup handler.
-#954030 by alweb: Fix title query in views_handler_argument_term_node_tid.
-#954784 by tekante: views_join class produces a SQL error when an array is in definition['extra']['value'].
-#962756 by bojanz: Field delta shows the placeholder instead of the field name.
-#667950 by merlinofchaos, bojanz and dereine: Revert the states patch and use ctools dependency instead.
-#960528 by dereine: Clicksort doesn't work for field names that contain special characters.
-by dereine: Document add_where for formula.
-by dereine: Fix notice in ajax.inc.
-#963382 by aidanlis: Fix typo in mathematical expression field help text.
-#807614 by dereine: Test filter_numeric.
-#928000 by mfer, dereine: form.js dependency missing.
-by dereine: Fix some notices.
-by dereine: Fix views_exposed_form test.
-by dereine: Move test files around.
-by dereine: Fix notice in group_by_numeric.
-by eporama: Add a test for views_plugin_argument_validate_user.
-#788950 by merlinofchaos, bojanz, dereine: Fixed ui when clicking override.
-#965432 by bojanz: Display column for single column fields, if that column is not "value".
-#965188 by Scott Reynolds: Remove comment.comment column, it does not exist in the database anymore.
-#969124 by brenk28: Fix notices in rss feeds related to readmore.
-#968286 by bojanz: Let field::render_as_link support entity url options.
-#967188 by Island Usurper: Fix exposed data submitted data.
-#954916 by becw: taxonomy term id from URL expects taxonomy objects in term fields, none present.
-#968372 by becw: "Taxonomy: Term" filter autocomplete broken.
-#971326 by dereine: Join fieldapi fields additional on deleted = 0.
-#713078 by achaux: Aggregator not properly using allowed tags from core.
-#428196 by dereine, funkmasterjones and tic2000: Allow specification of default sort order (asc or desc) per field in table style.
-#944680 by rvilar: Properly t() untranslated string.
-#881680 by brianV and longwave: Avoid unnecessary invoking of view objects for argument validation when no argument validation is necessary.
-#767244 by Magnus: Fix some untranslatable strings due to less than and greater than characters.
-#855280 by dereine: Exposed forms set "Input required" lose exposed sorts.
-#935388 by infojunkie: Add post_build and post_execute hooks similar to post_render.
-#973496 by das-peter: Don't use call-time-reference for comment_view.
-#938806 by jenlampton: Node: title field should link to node by default.
-#956654 by mdupont: Translation for "offset" field in dates needed work.
-#931390 by dww: Optimize boolean logic by using "= 1" rather than "<> 0" for faster queries.
-#567918 by iamjon: Improve documentation for token replacement.
-#881468 by longwave: Improve performance by static caching results of argument validation because menu likes to double validate things.
-#964266 by dereine: cache_expire() missing $type.
-#477984 by demeritcowboy, fatstar415, mike dodd, dagmar: Properly handle value for "empty" and "not empty" special operators.
-#768060 by EmmanueleQuinto, xjm, others: Make sure that render alter options do not accidentally get blown up for empty fields.
-#847724 by dereine: Allow jump menu "Summary" style to customize choose text, just like the regular summary style.
-#669636 by dereine and bojanz: Convert the rest of the field handlers that have link options to use the advanced render.
-#871578 by dereine: Comment "new" might not work right without a comment count field.
-#910864 by Bevan, dereine: exposed filter blocks should not be cached by core block caching.
-Remove unused/lost view::render_exposed_form.
-#776830: Fix pager settings on attachments and feeds.
-#835544 by iamjon: export broke if key contained an apostrophe.
-#941990 by master-of-magic: Link to node when using relationships could occasionally lose track and create bad links.
-#833790: Click sort could break on fields that were actually formulas.
-#963454 by dereine: Remove related terms data definitions.
-#976098 by dereine: Fix notice in field field handler render function.
-#626732 by dereine: Fix analyze ok-button and added a test for it.
-#338584 by superbaloo: Allow displays to be re-ordered in the UI.
-#502348: Move advanced rendering up the chain a little bit to allow for non-standard uses of fields, such as grouping, to use advanced rendering features.
-#943984 by Kars-T: Remove extraneous line of code.
-#751970 by dereine: View list form auto submit on change.
-#502348 followup.
-#977846 by dereine: Use ctools_process_dependency for table plugin. (follow up of #502348).
-#942106 by andypost: Fix converting from vid to vocabulary in taxonomy handlers.
-#870792 by bojanz: Options form needs to be re-rendered if it failed validation.
-#980628 by bojanz: Fix options-query in field::render_as_link.
-#979264 by pwolanin: Account for flipped comment status values in Drupal 7.
-#972864 by bec: Provide term relationship via taxonomy term reference fields.
-#979634 by linclark: Fix field grouping.
-#972934 by dereine: Fix Node: User posted or commented.
-by dereine: Preview shouldn't expect to have the sql plugin, always.
-#960596 by dereine: Argument in preview aren't escaped.
-#983166 by dereine: Rename $class to $classes in the table template file and write some updating documentation.
-#963372 by dereine: Add 'form_process_checkbox' to every checkbox which uses process 'ctools_dependent_process'.
-#979082 by dereine: Add 'form_process_select' to every select which uses process 'ctools_dependent_process'.
-#936196 by jmiccolis, yhahn, adrian, bojanz, dereine: Don't use entity_load for the fieldapi-field handler, but use real sql fields.
-by dereine: Fix notice in views_ui_preview().
-#965496 by ayalon: Update and Override broke validation of most views admin forms.
-#868990: Fix undefined call to $view->set_use_pager()
-#669636 followup by bojanz: Fix improper use of field_alias by row styles.
-#979046 by travist: Fix PHP 5.3 problem in views_access with no arguments.
-#978864 by linclark: Fix title bug with area handlers.
-#983460 by dereine: "Default sort" radio is in wrong column on table style settings.
-#783798 by dereine: GROUP BY can cause sort criteria to get incorrectly added to view.
-#357529 by nedjo, dddave, dagmar, dereine, yhahn, others: Implement plugin to handle translations of views configuration data.
-#983606 by jonathan1055: Breadcrumb disappears on bulk export results.
-#945034 by das-peter: Allow any kind of build_mode for node row style.
-#936196 by rszrama, das-peter, bojanz, dereine: Fix some bugs with the fieldapi field handler.
-#983272 by bojanz: Support click sorting for Field API fields.
-by dereine: Fix error in plugin_default_taxonomy_tid.
-#974542 by dereine: Use the same signature for pre_render in every handler.
-#988490 by dereine: Fix global view result counter.
-#740686 by dereine, dagmar: Integrate the functionality of Semantic Views (though it takes a significantly diffrent form).
-#988726 by yhahn: Use taxonomy_term_data 'format' column for description field.
-#988520 by dereine: Fix sql of date handler for offset.
-#952636 by yhahn, jmiccolis, dagmar, dereine: Support string format identifiers.
-#960810: Fixed merge error of semantic views patch.
-#769458 by anrikun: Fix double encoding of alt/title text on link rewriting.
-#318944 by dereine: Prevent warning in table view when user has no permission to view any fields.
-#416178 by dereine: Profile field checkboxes did not properly filter false values.
-#949526 by dereine: External database not used.
-#913688 by dereine: Fix feed icon path.
-#768802 by dereine: Allow sort by node language.
-#600742 by dagmar: Allow displays to be disabled.
-reported by swentel: Remove left over debugging dsm.
-#468484 by dereine: Filter by unread not relationship safe.
-#833790 redux by dereine: Make sure field actually exists.
-#607942 by dashton: Support "rel" attribute in link rewriting.
-#994014 by idflood: Add missing semicolon to node translation link handler.
-#909886: -Any- option shows up on boolean exposed filters even when not optional.
-#972934 by dereine: Fix sql of subquery of comment_user_uid argument handler.
-Follow up #607942, use ctools_dependent_process.
-#817360 by John Morahan: Have Analyze button warn if view has no access control.
-#898990 by dereine: Fix bad SQL generated on related terms relationship if no vocabularies selected.
-#833220 by dereine: Properly validate value on date filter.
-#910256 by dagmar: Add an - All - option to exposed items per page.
-#779668 by esteewhy: Fix not technically valid use of break statements.
-#909332 by dereine: Add col-first and col-last classes to grid style.
-#989092 by dereine: Semantic views integration broke grid view a little.
-#868972 by dereine: Add a "summary" attribute for accessibility on table and grid styles.
-#992174 by dereine: Add missing field handler aggregator_xss in the views.info file.
-by dereine: Fix fatal error in the field term_node_tid handler.
-#994856 by dereine: Replace views dependecy with ctools... again.
-by dereine: Replace _fake_instance in field field handler with a ctools helper function.
-#996634 by das-peter: Add missing rel to option_definition of the field handler.
-#610418 by joachim: Add handler descriptions to handler edit forms.
-#368687 by dereine: Allow a relationship from node revision to master node.
-#759082 by dereine: Prevent invalid argument warning with no relationships.
-#946368 by dereine: User argument default ignoring node author checkbox in some cases.
-#867636 by chromix: Give jump menu an option to set default value to current path.
-#997772 by dereine: Fix node_view_analyze by using dbtng and d7 role_permission database schema.
-#998278 by dereine: Update field.views.inc based on #986992.
-#998400 by das-peter: Use vocabulary in "term name converted to term id".
-#785036 by dereine and bojanz: Properly validate display IDs.
-#958312 by tim.plunkett: Exports could have extraneous whitespace when exported from other modules like features.
-#927270 by Cyberwolf: Allow the "options callback" for the in_operator filter handler to also have an "options argument" in the definition.
-#497936: Profile fields with dashes in their names cause bad queries.
-#608926 by Longwave: Remove unused theme("nodate") functionality.
-#993002 by alex_b, dereine: Fix notice in views_plugin_display_page.inc.
-#1000044 by pivica: Fix notice for element_type in some field handlers.
-#984390 by yhahn: Fix full pager variables.
-#972620 by dereine: Add an administrative title field for all handlers to make it more possible to distinguish similar fields from each other in the UI.
-#627378: Allow specifying that your module provides specialized views templates via hook_views_api.
-#627378 follow up: Remove debug calls.
-#1001442 by dboulet: Add classes/title text to contextual links.
-#999042 by bojanz: Remove the option to use the site mission for the RSS feed description, because drupal doesn't have this field anymore.
-#985602 by bblake, bojanz, dereine: Support slave server.
-by dereine: Fix views.info file.
-#987478 by bojanz: Let field field handler properly handle field language.
-#1002060 by troky: COMMENT_NODE_* constants have new names
-#996306 by alex_b: Respect 'edit terms in ' settings
-#987478 by bojanz: Fix some more edge cases in field field handler.
-#1003034 by das-peter: Use preg_slit instead of split.
-#905712 by dagmar: Add Published/Not published as text options to published field.
-#816354 by dereine: Provide a field to create administrative comments on displays.
-#1004596 by pillarsdotnet:  Wrong usage of theme('image'...) in contact field handler.
-#1006088 by aspilicious: Remove unneeded files from .info file.
-#1005662 by troky: Change original hook to base hook in views hook_theme.
-#808016 by dereine: Clarify short/medium/long date formats.
-#829928 by gordon: Allow strip tags to get a list of tags to keep.
-#1004538 by ngmaloney, bojanz: Support timestamps before 1970 in views date sql.
-#522318 by dereine: Provide a "human readable" name for all Views.
-#1003112 by ralf: Add configure line to views_ui.info
-#118672: Allow an OR in filters by adding groups in the filter UI.
-by dereine: Add a test for field math, and fix the field math :)
-#1007036 by bojanz: Fix Node: Has new content filter.
-by dereine: Add a test for filter equality.
-by dereine: Add a test for field counter.
-#1007036 by dereine: Fix join condition for Node: Has new content filter.
-by dereine: Fix tests for detecting module template files.
-#1007730 by bojanz, merlinofchaos, dereine: Fix views_handler_filter_string, add tests and add a general placeholder method.
-#1006644 by bojanz, dereine: Allow field field handler to work with users.
-#759082 by dereine: Fix whitescreen due to incorrect relationship loop code.
-by dereine: Remove old comment about select::countQuery.
-#863478 by damz, dereine: Allow basic distinct support.
-#667950 by bec : Remove workaround for filter_numeric dependency.
-#1011266 by sime: Fix whitescreen due to changes in #759082.
-#1011220 by aspilicious: Auto-Generate View's Machine-Readable Name.
-#1001542 by mikeytown2: view::set_display() has wrong return code when it fails.
-#1011220 follow-up: Add missing point on machine_name.
-#722330 by dereine: Views should include core version for updates.
-#1008706 by dereine: Convert placeholders to new api.
-#807616 by damz, dereine: Remove views_handler_sort_formula and add a short entry in api-upgrading.html
-#873238 follow up by dereine: Remove adding cookie.js all the time. Ajax loading works now.
-#591302 by yhahn: Update ajax_view.js for ajax framework.
-#972638 by bojanz: Mini pager hasn't been ported.
-#1011334 by dereine: Exposed filters without input broke sql.
-#990088 by yhahn: Fix taxonomy integration by changing vid to nid for taxonomy_index.
-#1007466 by aspilicious, dereine: Provide a api function for adding complex queries: add_where_expression, add_having_condition.
-#1008170 by dereine: Fix views_handler_filter_groupby_numeric by using add_having_expression.
-#1013170 by das-peter: Fix broken view::preview which was broken on #1001542.
-#644008 by Cyberwolf and dereine: Allow access plugins access to arguments.
-#997424 by dereine: Use drupal_add_library instead of drupal_add_js where it's possible.
-#992704 by solotandem, bojanz, dereine: support to groupby entity_id.
-#970514 by moshe, dereine: Provide basic drush integration for views.
-#1015306 by dereine: Fix index in field_field.
-by solotandem: Make a better description for the group_type field in groupby form.
-#1015856 by solotandem: Eliminate PHP notices related to recent groupby changes.
-#1016058 by dereine: Fix string contain all words.
-#940316 by merlinofchaos: Allow to rescan template files from non-current themes.
-by mikejoconnor, dereine: Fix notice for exporting view->core.
-#1002744 by bojanz: Use entity_load for fieldapi field handlers.
-#957206 by dereine: Add missing views.info entry for aggregator iid argument handler.
-#1002744 by bojanz: Refactor views_field_field by renaming some variables/comments.
-by dereine: Bring vpr and views_debug back.
-#955464 by dereine: Fix glossary and many to one mode handler.
-#1016430 by bojanz: fix two small bugs in field_field handler.
-by dereine: Add $view->version to all default views.
-#1006176 by das-peter, bojanz: Add support for field based translation.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.bartik.css b/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.bartik.css
index 1d22ddd..c6f0692 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.bartik.css
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.bartik.css
@@ -67,6 +67,15 @@
   background-color: #f6f6f6;
 }
 
+.views-ui-dialog a {
+  color: #0071b3;
+}
+
+.views-ui-dialog a:hover,
+.views-ui-dialog a:focus {
+  color: #018fe2;
+}
+
 /* @end */
 
 /* @group CTools */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.seven.css b/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.seven.css
index 6ebdbf1..d58bb1b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.seven.css
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.seven.css
@@ -127,7 +127,8 @@ fieldset.fieldset-no-legend {
 .dependent-options,
 .dependent-options.form-item,
 .form-item-options-expose-required,
-.form-item-options-expose-label {
+.form-item-options-expose-label,
+.form-item-options-expose-description {
   margin-left: 1.5em;
 }
 
@@ -139,7 +140,8 @@ fieldset.fieldset-no-legend {
 .views-admin-dependent .dependent-options .form-type-select,
 .views-admin-dependent .dependent-options .form-type-textfield,
 .form-item-options-expose-required,
-.form-item-options-expose-label {
+.form-item-options-expose-label,
+.form-item-options-expose-description {
   margin-bottom: 6px;
   margin-top: 6px;
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.theme.css b/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.theme.css
index df45cdf..8611783 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.theme.css
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/css/views-admin.theme.css
@@ -380,6 +380,7 @@ td.group-title {
   text-transform: uppercase;
 }
 
+.grouped-description,
 .exposed-description {
   float: left;
   padding-top: 3px;
@@ -433,6 +434,10 @@ td.group-title {
   padding: 3px 9px;
 }
 
+.views-display-top #views-display-top {
+  max-width: 180px;
+}
+
 /* @end */
 
 /* @group Attachment details tabs
@@ -440,6 +445,18 @@ td.group-title {
  * The tabs that switch between sections
  */
 
+ul#views-display-menu-tabs {
+  margin-right: 200px;
+}
+
+ul#views-display-menu-tabs li {
+  margin-bottom: 5px;
+}
+
+ul#views-display-menu-tabs li.add ul.action-list li{
+  margin: 0;
+}
+
 .views-displays .secondary a {
   border: 1px solid #cbcbcb;
   display: inline-block;
@@ -448,6 +465,15 @@ td.group-title {
   padding: 3px 7px;
 }
 
+/**
+ * Display a red border if the display doesn't validate.
+ */
+.views-displays ul.secondary li.active a.active.error,
+.views-displays .secondary a.error {
+  border: 2px solid #ED541D;
+  padding: 1px 6px;
+}
+
 .views-displays .secondary a:focus {
   outline: none;
 }
@@ -907,7 +933,8 @@ td.group-title {
 /* @group Expose filter form items */
 
 .form-item-options-expose-required,
-.form-item-options-expose-label {
+.form-item-options-expose-label,
+.form-item-options-expose-description {
   margin-bottom: 6px;
   margin-left: 18px;
   margin-top: 6px;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/docs/views.api.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/docs/views.api.php
deleted file mode 100644
index d99ecc4..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/docs/views.api.php
+++ /dev/null
@@ -1,761 +0,0 @@
-<?php
-/**
- * @file
- * This file contains no working PHP code; it exists to provide additional documentation
- * for doxygen as well as to document hooks in the standard Drupal manner.
- */
-
-/**
- * @mainpage Views 2 API Manual
- *
- * Much of this information is actually stored in the advanced help; please
- * check the API topic. This help will primarily be aimed at documenting
- * classes and function calls.
- *
- * An online version of the advanced help API documentation is available from:
- * @link http://views-help.doc.logrus.com/help/views/api @endlink
- *
- * Topics:
- * - @ref view_lifetime
- * - @ref views_hooks
- * - @ref views_handlers
- * - @ref views_plugins
- * - @ref views_templates
- */
-
-/**
- * @page view_lifetime The life of a view
- *
- * This page explains the basic cycle of a view and what processes happen.
- */
-
-/**
- * @page views_handlers About Views' handlers
- *
- * This page explains what views handlers are, how they're written, and what
- * the basic conventions are.
- *
- * - @ref views_field_handlers
- * - @ref views_sort_handlers
- * - @ref views_filter_handlers
- * - @ref views_argument_handlers
- * - @ref views_relationship_handlers
- */
-
-/**
- * @page views_plugins About Views' plugins
- *
- * This page explains what views plugins are, how they're written, and what
- * the basic conventions are.
- *
- * - @ref views_display_plugins
- * - @ref views_style_plugins
- * - @ref views_row_plugins
- */
-
-/**
- * @defgroup views_hooks Views' hooks
- * @{
- * Hooks that can be implemented by other modules in order to implement the
- * Views API.
- */
-
-/**
- * Describe table structure to Views.
- *
- * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded.
- * MODULENAME.views.inc must be in the directory specified by the 'path' key
- * returned by MODULENAME_views_api(), or the same directory as the .module
- * file, if 'path' is unspecified.
- *
- * The full documentation for this hook is in the advanced help.
- * @link http://views-help.doc.logrus.com/help/views/api-tables @endlink
- */
-function hook_views_data() {
-  // This example describes how to write hook_views_data() for the following
-  // table:
-  //
-  // CREATE TABLE example_table (
-  //   nid INT(11) NOT NULL         COMMENT 'Primary key; refers to {node}.nid.',
-  //   plain_text_field VARCHAR(32) COMMENT 'Just a plain text field.',
-  //   numeric_field INT(11)        COMMENT 'Just a numeric field.',
-  //   boolean_field INT(1)         COMMENT 'Just an on/off field.',
-  //   timestamp_field INT(8)       COMMENT 'Just a timestamp field.',
-  //   PRIMARY KEY(nid)
-  // );
-
-  // The 'group' index will be used as a prefix in the UI for any of this
-  // table's fields, sort criteria, etc. so it's easy to tell where they came
-  // from.
-  $data['example_table']['table']['group'] = t('Example table');
-
-  // Define this as a base table. In reality this is not very useful for
-  // this table, as it isn't really a distinct object of its own, but
-  // it makes a good example.
-  $data['example_table']['table']['base'] = array(
-    'field' => 'nid',
-    'title' => t('Example table'),
-    'help' => t("Example table contains example content and can be related to nodes."),
-    'weight' => -10,
-  );
-
-  // This table references the {node} table.
-  // This creates an 'implicit' relationship to the node table, so that when 'Node'
-  // is the base table, the fields are automatically available.
-  $data['example_table']['table']['join'] = array(
-    // Index this array by the table name to which this table refers.
-    // 'left_field' is the primary key in the referenced table.
-    // 'field' is the foreign key in this table.
-    'node' => array(
-      'left_field' => 'nid',
-      'field' => 'nid',
-    ),
-  );
-
-  // Next, describe each of the individual fields in this table to Views. For
-  // each field, you may define what field, sort, argument, and/or filter
-  // handlers it supports. This will determine where in the Views interface you
-  // may use the field.
-
-  // Node ID field.
-  $data['example_table']['nid'] = array(
-    'title' => t('Example content'),
-    'help' => t('Some example content that references a node.'),
-    // Because this is a foreign key to the {node} table. This allows us to
-    // have, when the view is configured with this relationship, all the fields
-    // for the related node available.
-    'relationship' => array(
-      'base' => 'node',
-      'field' => 'nid',
-      'handler' => 'views_handler_relationship',
-      'label' => t('Example node'),
-    ),
-  );
-
-  // Example plain text field.
-  $data['example_table']['plain_text_field'] = array(
-    'title' => t('Plain text field'),
-    'help' => t('Just a plain text field.'),
-    'field' => array(
-      'handler' => 'views_handler_field',
-      'click sortable' => TRUE,
-    ),
-    'sort' => array(
-      'handler' => 'views_handler_sort',
-    ),
-    'filter' => array(
-      'handler' => 'views_handler_filter_string',
-    ),
-    'argument' => array(
-      'handler' => 'views_handler_argument_string',
-    ),
-  );
-
-  // Example numeric text field.
-  $data['example_table']['numeric_field'] = array(
-    'title' => t('Numeric field'),
-    'help' => t('Just a numeric field.'),
-    'field' => array(
-      'handler' => 'views_handler_field_numeric',
-      'click sortable' => TRUE,
-     ),
-    'filter' => array(
-      'handler' => 'views_handler_filter_numeric',
-    ),
-    'sort' => array(
-      'handler' => 'views_handler_sort',
-    ),
-  );
-
-  // Example boolean field.
-  $data['example_table']['boolean_field'] = array(
-    'title' => t('Boolean field'),
-    'help' => t('Just an on/off field.'),
-    'field' => array(
-      'handler' => 'views_handler_field_boolean',
-      'click sortable' => TRUE,
-    ),
-    'filter' => array(
-      'handler' => 'views_handler_filter_boolean_operator',
-      'label' => t('Published'),
-      'type' => 'yes-no',
-      // use boolean_field = 1 instead of boolean_field <> 0 in WHERE statment
-      'use equal' => TRUE,
-    ),
-    'sort' => array(
-      'handler' => 'views_handler_sort',
-    ),
-  );
-
-  // Example timestamp field.
-  $data['example_table']['timestamp_field'] = array(
-    'title' => t('Timestamp field'),
-    'help' => t('Just a timestamp field.'),
-    'field' => array(
-      'handler' => 'views_handler_field_date',
-      'click sortable' => TRUE,
-    ),
-    'sort' => array(
-      'handler' => 'views_handler_sort_date',
-    ),
-    'filter' => array(
-      'handler' => 'views_handler_filter_date',
-    ),
-  );
-
-  return $data;
-}
-
-/**
- * Alter table structure.
- *
- * You can add/edit/remove to existing tables defined by hook_views_data().
- *
- * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded.
- * MODULENAME.views.inc must be in the directory specified by the 'path' key
- * returned by MODULENAME_views_api(), or the same directory as the .module
- * file, if 'path' is unspecified.
- *
- * The full documentation for this hook is in the advanced help.
- * @link http://views-help.doc.logrus.com/help/views/api-tables @endlink
- */
-function hook_views_data_alter(&$data) {
-  // This example alters the title of the node: nid field for the admin.
-  $data['node']['nid']['title'] = t('Node-Nid');
-
-  // This example adds a example field to the users table
-  $data['users']['example_field'] = array(
-    'title' => t('Example field'),
-    'help' => t('Some examüple content that references a user'),
-    'handler' => 'hook_handlers_field_example_field',
-  );
-
-  // This example changes the handler of the node title field.
-  // In this handler you could do stuff, like preview of the node, when clicking the node title.
-
-  $data['node']['title']['handler'] = 'modulename_handlers_field_node_title';
-}
-
-
-/**
- * The full documentation for this hook is now in the advanced help.
- *
- * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded.
- * MODULENAME.views.inc must be in the directory specified by the 'path' key
- * returned by MODULENAME_views_api(), or the same directory as the .module
- * file, if 'path' is unspecified.
- *
- * This is a stub list as a reminder that this needs to be doc'd and is not used
- * in views anywhere so might not be remembered when this is formally documented:
- * - style: 'even empty'
- */
-function hook_views_plugins() {
-  // example code here
-}
-
-/**
- * Alter existing plugins data, defined by modules.
- */
-function hook_views_plugins_alter(&$plugins) {
-  // Add apachesolr to the base of the node row plugin.
-  $plugins['row']['node']['base'][] = 'apachesolr';
-}
-
-/**
- * Register View API information. This is required for your module to have
- * its include files loaded; for example, when implementing
- * hook_views_default_views().
- *
- * @return
- *   An array with the following possible keys:
- *   - api:  (required) The version of the Views API the module implements.
- *   - path: (optional) If includes are stored somewhere other than within
- *       the root module directory, specify its path here.
- *   - template path: (optional) A path where the module has stored it's views template files.
- *        When you have specificed this key views automatically uses the template files for the views.
- *        You can use the same naming conventions like for normal views template files.
- */
-function hook_views_api() {
-  return array(
-    'api' => 3,
-    'path' => drupal_get_path('module', 'example') . '/includes/views',
-    'template path' => drupal_get_path('module', 'example') . 'themes',
-  );
-}
-
-/**
- * This hook allows modules to provide their own views which can either be used
- * as-is or as a "starter" for users to build from.
- *
- * This hook should be placed in MODULENAME.views_default.inc and it will be
- * auto-loaded. MODULENAME.views_default.inc must be in the directory specified
- * by the 'path' key returned by MODULENAME_views_api(), or the same directory
- * as the .module file, if 'path' is unspecified.
- *
- * The $view->disabled boolean flag indicates whether the View should be
- * enabled or disabled by default.
- *
- * @return
- *   An associative array containing the structures of views, as generated from
- *   the Export tab, keyed by the view name. A best practice is to go through
- *   and add t() to all title and label strings, with the exception of menu
- *   strings.
- */
-function hook_views_default_views() {
-  // Begin copy and paste of output from the Export tab of a view.
-  $view = new view;
-  $view->name = 'frontpage';
-  $view->description = t('Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page.');
-  $view->tag = t('default');
-  $view->base_table = 'node';
-  $view->api_version = 2;
-  $view->disabled = FALSE; // Edit this to true to make a default view disabled initially
-  $view->display = array();
-    $display = new views_display;
-    $display->id = 'default';
-    $display->display_title = t('Master');
-    $display->display_plugin = 'default';
-    $display->position = '1';
-    $display->display_options = array (
-    'style_plugin' => 'default',
-    'style_options' =>
-    array (
-    ),
-    'row_plugin' => 'node',
-    'row_options' =>
-    array (
-      'teaser' => 1,
-      'links' => 1,
-    ),
-    'relationships' =>
-    array (
-    ),
-    'fields' =>
-    array (
-    ),
-    'sorts' =>
-    array (
-      'sticky' =>
-      array (
-        'id' => 'sticky',
-        'table' => 'node',
-        'field' => 'sticky',
-        'order' => 'ASC',
-      ),
-      'created' =>
-      array (
-        'id' => 'created',
-        'table' => 'node',
-        'field' => 'created',
-        'order' => 'ASC',
-        'relationship' => 'none',
-        'granularity' => 'second',
-      ),
-    ),
-    'arguments' =>
-    array (
-    ),
-    'filters' =>
-    array (
-      'promote' =>
-      array (
-        'id' => 'promote',
-        'table' => 'node',
-        'field' => 'promote',
-        'operator' => '=',
-        'value' => '1',
-        'group' => 0,
-        'exposed' => false,
-        'expose' =>
-        array (
-          'operator' => false,
-          'label' => '',
-        ),
-      ),
-      'status' =>
-      array (
-        'id' => 'status',
-        'table' => 'node',
-        'field' => 'status',
-        'operator' => '=',
-        'value' => '1',
-        'group' => 0,
-        'exposed' => false,
-        'expose' =>
-        array (
-          'operator' => false,
-          'label' => '',
-        ),
-      ),
-    ),
-    'items_per_page' => 10,
-    'use_pager' => '1',
-    'pager_element' => 0,
-    'title' => '',
-    'header' => '',
-    'header_format' => '1',
-    'footer' => '',
-    'footer_format' => '1',
-    'empty' => '',
-    'empty_format' => '1',
-  );
-  $view->display['default'] = $display;
-    $display = new views_display;
-    $display->id = 'page';
-    $display->display_title = t('Page');
-    $display->display_plugin = 'page';
-    $display->position = '2';
-    $display->display_options = array (
-    'defaults' =>
-    array (
-      'access' => true,
-      'title' => true,
-      'header' => true,
-      'header_format' => true,
-      'header_empty' => true,
-      'footer' => true,
-      'footer_format' => true,
-      'footer_empty' => true,
-      'empty' => true,
-      'empty_format' => true,
-      'items_per_page' => true,
-      'offset' => true,
-      'use_pager' => true,
-      'pager_element' => true,
-      'link_display' => true,
-      'php_arg_code' => true,
-      'exposed_options' => true,
-      'style_plugin' => true,
-      'style_options' => true,
-      'row_plugin' => true,
-      'row_options' => true,
-      'relationships' => true,
-      'fields' => true,
-      'sorts' => true,
-      'arguments' => true,
-      'filters' => true,
-      'use_ajax' => true,
-      'distinct' => true,
-    ),
-    'relationships' =>
-    array (
-    ),
-    'fields' =>
-    array (
-    ),
-    'sorts' =>
-    array (
-    ),
-    'arguments' =>
-    array (
-    ),
-    'filters' =>
-    array (
-    ),
-    'path' => 'frontpage',
-  );
-  $view->display['page'] = $display;
-    $display = new views_display;
-    $display->id = 'feed';
-    $display->display_title = t('Feed');
-    $display->display_plugin = 'feed';
-    $display->position = '3';
-    $display->display_options = array (
-    'defaults' =>
-    array (
-      'access' => true,
-      'title' => false,
-      'header' => true,
-      'header_format' => true,
-      'header_empty' => true,
-      'footer' => true,
-      'footer_format' => true,
-      'footer_empty' => true,
-      'empty' => true,
-      'empty_format' => true,
-      'use_ajax' => true,
-      'items_per_page' => true,
-      'offset' => true,
-      'use_pager' => true,
-      'pager_element' => true,
-      'use_more' => true,
-      'distinct' => true,
-      'link_display' => true,
-      'php_arg_code' => true,
-      'exposed_options' => true,
-      'style_plugin' => false,
-      'style_options' => false,
-      'row_plugin' => false,
-      'row_options' => false,
-      'relationships' => true,
-      'fields' => true,
-      'sorts' => true,
-      'arguments' => true,
-      'filters' => true,
-    ),
-    'relationships' =>
-    array (
-    ),
-    'fields' =>
-    array (
-    ),
-    'sorts' =>
-    array (
-    ),
-    'arguments' =>
-    array (
-    ),
-    'filters' =>
-    array (
-    ),
-    'displays' =>
-    array (
-      'default' => 'default',
-      'page' => 'page',
-    ),
-    'style_plugin' => 'rss',
-    'style_options' =>
-    array (
-      'description' => '',
-    ),
-    'row_plugin' => 'node_rss',
-    'row_options' =>
-    array (
-      'item_length' => 'default',
-    ),
-    'path' => 'rss.xml',
-    'title' => t('Front page feed'),
-  );
-  $view->display['feed'] = $display;
-  // End copy and paste of Export tab output.
-
-  // Add view to list of views to provide.
-  $views[$view->name] = $view;
-
-  // ...Repeat all of the above for each view the module should provide.
-
-  // At the end, return array of default views.
-  return $views;
-}
-
-/**
- * Alter default views defined by other modules.
- *
- * This hook is called right before all default views are cached to the
- * database. It takes a keyed array of views by reference.
- *
- * Example usage to add a field to a view:
- * @code
- *   $handler =& $view->display['DISPLAY_ID']->handler;
- *   // Add the user name field to the view.
- *   $handler->display->display_options['fields']['name']['id'] = 'name';
- *   $handler->display->display_options['fields']['name']['table'] = 'users';
- *   $handler->display->display_options['fields']['name']['field'] = 'name';
- *   $handler->display->display_options['fields']['name']['label'] = 'Author';
- *   $handler->display->display_options['fields']['name']['link_to_user'] = 1;
- * @endcode
- */
-function hook_views_default_views_alter(&$views) {
-  if (isset($views['taxonomy_term'])) {
-    $views['taxonomy_term']->display['default']->display_options['title'] = 'Categories';
-  }
-}
-
-/**
- * Stub hook documentation
- */
-function hook_views_query_substitutions() {
-  // example code here
-}
-
-/**
- * This hook is called to get a list of placeholders and their substitutions,
- * used when preprocessing a View with form elements.
- */
-function hook_views_form_substitutions() {
-  return array(
-    '<!--views-form-example-substitutions-->' => 'Example Substitution',
-  );
-}
-
-/**
- * Views form (View with form elements) validate handler.
- * Called for all steps ($form_state['step']) of the multistep form.
- */
-function hook_views_form_validate($form, &$form_state) {
-  // example code here
-}
-
-/**
- * Views form (View with form elements) submit handler.
- * Called for all steps ($form_state['step']) of the multistep form.
- */
-function hook_views_form_submit($form, &$form_state) {
-  // example code here
-}
-
-/**
- * This hook is called at the very beginning of views processing,
- * before anything is done.
- *
- * Adding output to the view can be accomplished by placing text on
- * $view->attachment_before and $view->attachment_after.
- */
-function hook_views_pre_view(&$view, &$display_id, &$args) {
-  // example code here
-}
-
-/**
- * This hook is called right before the build process, but after displays
- * are attached and the display performs its pre_execute phase.
- *
- * Adding output to the view can be accomplished by placing text on
- * $view->attachment_before and $view->attachment_after.
- */
-function hook_views_pre_build(&$view) {
-  // example code here
-}
-
-/**
- * This hook is called right after the build process. The query is
- * now fully built, but it has not yet been run through db_rewrite_sql.
- *
- * Adding output to the view can be accomplished by placing text on
- * $view->attachment_before and $view->attachment_after.
- */
-function hook_views_post_build(&$view) {
-  // example code here
-}
-
-/**
- * This hook is called right before the execute process. The query is
- * now fully built, but it has not yet been run through db_rewrite_sql.
- *
- * Adding output to the view can be accomplished by placing text on
- * $view->attachment_before and $view->attachment_after.
- */
-function hook_views_pre_execute(&$view) {
-  // example code here
-}
-
-/**
- * This hook is called right after the execute process. The query has
- * been executed, but the pre_render() phase has not yet happened for
- * handlers.
- *
- * Adding output to the view can be accomplished by placing text on
- * $view->attachment_before and $view->attachment_after. Altering the
- * content can be achieved by editing the items of $view->result.
- */
-function hook_views_post_execute(&$view) {
-  // example code here
-}
-
-/**
- * This hook is called right before the render process. The query has
- * been executed, and the pre_render() phase has already happened for
- * handlers, so all data should be available.
- *
- * Adding output to the view can be accomplished by placing text on
- * $view->attachment_before and $view->attachment_after. Altering the
- * content can be achieved by editing the items of $view->result.
- *
- * This hook can be utilized by themes.
- */
-function hook_views_pre_render(&$view) {
-  // example code here
-}
-
-/**
- * Post process any rendered data.
- *
- * This can be valuable to be able to cache a view and still have some level of
- * dynamic output. In an ideal world, the actual output will include HTML
- * comment based tokens, and then the post process can replace those tokens.
- *
- * Example usage. If it is known that the view is a node view and that the
- * primary field will be a nid, you can do something like this:
- *
- * <!--post-FIELD-NID-->
- *
- * And then in the post render, create an array with the text that should
- * go there:
- *
- * strtr($output, array('<!--post-FIELD-1-->', 'output for FIELD of nid 1');
- *
- * All of the cached result data will be available in $view->result, as well,
- * so all ids used in the query should be discoverable.
- *
- * This hook can be utilized by themes.
- */
-function hook_views_post_render(&$view, &$output, &$cache) {
-
-}
-
-/**
- * Stub hook documentation
- *
- * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded.
- * MODULENAME.views.inc must be in the directory specified by the 'path' key
- * returned by MODULENAME_views_api(), or the same directory as the .module
- * file, if 'path' is unspecified.
- *
- */
-function hook_views_query_alter(&$view, &$query) {
-  // example code here
-}
-
-/**
- * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded.
- * MODULENAME.views.inc must be in the directory specified by the 'path' key
- * returned by MODULENAME_views_api(), or the same directory as the .module
- * file, if 'path' is unspecified.
- *
- * Alter the rows that appear with a view preview, which include query and
- * performance statistics. $rows is an associative array with two keys:
- * - query: An array of rows suitable for theme('table'), containing information
- *   about the query and the display title and path.
- * - statistics: An array of rows suitable for theme('table'), containing
- *   performance statistics.
- *
- * Warning: $view is not a reference in PHP4 and cannot be modified here. But it IS
- * a reference in PHP5, and can be modified. Please be careful with it.
- *
- * @see theme_table
- */
-function hook_views_preview_info_alter(&$rows, $view) {
-  // example code here
-}
-
-/**
- * This hooks allows to alter the links at the top of the view edit form.
- * Some modules might want to add links there.
- *
- * @param $links
- *   The links which will be displayed at the top of the view edit form.
- * @param view $view
- *   The full view object which is currently changed.
- * @param $display_id
- *   The current display id which is edited. For example that's 'default' or 'page_1'.
- */
-function hook_views_ui_display_top_links_alter(&$links, $view, $display_id) {
-  // example code here
-}
-
-/**
- * This hook allows to alter the commands which are used on a views ajax
- * request.
- *
- * @param $commands
- *   An array of ajax commands
- * @param $view view
- *   The view which is requested.
- */
-function hook_views_ajax_data_alter(&$commands, $view) {
-}
-
-
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/drush/views.drush.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/drush/views.drush.inc
index 4116d30..dd8af1b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/drush/views.drush.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/drush/views.drush.inc
@@ -1,10 +1,11 @@
 <?php
+
 /**
  * @file
  * Drush integration of views.
  *
- * * drush cache-clear views - Clears the views specific caches.
- * * views-revert - Drush command to revert views overridden in the system.
+ * drush cache-clear views - Clears the views specific caches.
+ * views-revert - Drush command to revert views overridden in the system.
  */
 
 /**
@@ -50,7 +51,7 @@ function views_drush_command() {
   $items['views-dev'] = array(
     'callback' => 'views_development_settings',
     'drupal dependencies' => array('views'),
-    'description' => 'Setup the views settings to a more developer oriented value..',
+    'description' => 'Set the Views settings to more developer-oriented values.',
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL,
     'aliases' => array('vd'),
   );
@@ -236,6 +237,7 @@ function views_development_settings() {
   variable_set('views_ui_show_listing_filters', TRUE);
   variable_set('views_ui_show_master_display', TRUE);
   variable_set('views_ui_show_advanced_column', TRUE);
+  variable_set('views_ui_always_live_preview', FALSE);
   variable_set('views_ui_always_live_preview_button', TRUE);
   variable_set('views_ui_show_preview_information', TRUE);
   variable_set('views_ui_show_sql_query', TRUE);
@@ -455,8 +457,8 @@ function drush_views_disable() {
   _views_drush_changestatus($viewnames, TRUE);
 }
 
-/*
-* Helper function to enable / disable views
+/**
+ * Helper function to enable / disable views
  * @param $viewnames: array of viewnames to process
  * @param $status: TRUE to disable or FALSE to enable the view
  */
@@ -481,8 +483,7 @@ function _views_drush_changestatus($viewnames = array(), $status = NULL) {
       variable_set('views_defaults', $views_status);
       views_invalidate_cache();
       drush_log(dt("Views cache was cleared"), 'ok');
-      menu_rebuild();
-      drush_log(dt("Menu cache was cleared"), 'ok');
+      drush_log(dt("Menu cache is set to be rebuilt on the next request."), 'ok');
     }
   }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area.inc
index 295e14d..9fed11c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area.inc
@@ -1,17 +1,37 @@
 <?php
+
 /**
  * @file
  * Views area handlers.
  */
 
 /**
- * @defgroup views_area_handlers Views' area handlers
+ * @defgroup views_area_handlers Views area handlers
  * @{
  * Handlers to tell Views what can display in header, footer
  * and empty text in a view.
  */
 
+/**
+ * Base class for area handlers.
+ *
+ * @ingroup views_area_handlers
+ */
 class views_handler_area extends views_handler {
+
+  /**
+   * Overrides views_handler::init().
+   *
+   * Make sure that no result area handlers are set to be shown when the result
+   * is empty.
+   */
+  function init(&$view, &$options) {
+    parent::init($view, $options);
+    if ($this->handler_type == 'empty') {
+      $this->options['empty'] = TRUE;
+    }
+  }
+
   /**
    * Get this field's label.
    */
@@ -28,7 +48,7 @@ class views_handler_area extends views_handler {
     $this->definition['field'] = !empty($this->definition['field']) ? $this->definition['field'] : '';
     $label = !empty($this->definition['label']) ? $this->definition['label'] : $this->definition['field'];
     $options['label'] = array('default' => $label, 'translatable' => TRUE);
-    $options['empty'] = array('default' => 0, 'bool' => TRUE);
+    $options['empty'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_result.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_result.inc
index a52aa8c..86b1849 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_result.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_result.inc
@@ -2,13 +2,13 @@
 
 /**
  * @file
- * Contains views_handler_area_result handler.
+ * Definition of views_handler_area_result.
  */
 
 /**
  * Views area handler to display some configurable result summary.
  *
- * @ingroup views_area_handlers Views' area handlers
+ * @ingroup views_area_handlers
  */
 class views_handler_area_result extends views_handler_area {
 
@@ -33,6 +33,7 @@ class views_handler_area_result extends views_handler_area {
         '@name -- the human-readable name of the view',
         '@per_page -- the number of items per page',
         '@current_page -- the current page number',
+        '@current_record_count -- the current page record count',
         '@page_count -- the total page count',
       ),
     );
@@ -61,7 +62,9 @@ class views_handler_area_result extends views_handler_area {
     $current_page = (int) $this->view->get_current_page() + 1;
     $per_page = (int) $this->view->get_items_per_page();
     $count = count($this->view->result);
-    $total = $this->view->total_rows;
+    // @TODO: Maybe use a possible is views empty functionality.
+    // Not every view has total_rows set, use view->result instead.
+    $total = isset($this->view->total_rows) ? $this->view->total_rows : count($this->view->result);
     $name = check_plain($this->view->human_name);
     if ($per_page === 0) {
       $page_count = 1;
@@ -77,8 +80,9 @@ class views_handler_area_result extends views_handler_area {
       $start = ($current_page - 1) * $per_page + 1;
       $end = $total_count;
     }
+    $current_record_count = ($end - $start) + 1;
     // Get the search information.
-    $items = array('start', 'end', 'total', 'name', 'per_page', 'current_page', 'page_count');
+    $items = array('start', 'end', 'total', 'name', 'per_page', 'current_page', 'current_record_count', 'page_count');
     $replacements = array();
     foreach ($items as $item) {
       $replacements["@$item"] = ${$item};
@@ -90,4 +94,3 @@ class views_handler_area_result extends views_handler_area {
     return $output;
   }
 }
-
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text.inc
index 2b9adb3..d772786 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text.inc
@@ -2,20 +2,21 @@
 
 /**
  * @file
- * Contains views_handler_area_text handler.
+ * Definition of views_handler_area_text.
  */
 
 /**
  * Views area text handler.
- * @ingroup views_area_handlers Views' area handlers
-*/
+ *
+ * @ingroup views_area_handlers
+ */
 class views_handler_area_text extends views_handler_area {
 
   function option_definition() {
     $options = parent::option_definition();
     $options['content'] = array('default' => '', 'translatable' => TRUE, 'format_key' => 'format');
     $options['format'] = array('default' => NULL);
-    $options['tokenize'] = array('default' => FALSE);
+    $options['tokenize'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
@@ -30,7 +31,7 @@ class views_handler_area_text extends views_handler_area {
       '#wysiwyg' => FALSE,
     );
 
-
+    // @TODO: Refactor token handling into a base class.
     $form['tokenize'] = array(
       '#type' => 'checkbox',
       '#title' => t('Use replacement tokens from the first row'),
@@ -50,7 +51,7 @@ class views_handler_area_text extends views_handler_area {
     }
 
     if (!empty($options)) {
-      $output = '<p>' . t('The following tokens are available. If you would like to have the characters %5B and %5D please use the html entity codes \'%5B\' or  \'%5D\' or they will get replaced with empty space.)' . '</p>');
+      $output = '<p>' . t('The following tokens are available. If you would like to have the characters \'[\' and \']\' please use the html entity codes \'%5B\' or  \'%5D\' or they will get replaced with empty space.' . '</p>');
       foreach (array_keys($options) as $type) {
         if (!empty($options[$type])) {
           $items = array();
@@ -106,5 +107,4 @@ class views_handler_area_text extends views_handler_area {
       return check_markup($value, $format, '', FALSE);
     }
   }
-
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text_custom.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text_custom.inc
new file mode 100644
index 0000000..3627f0c
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_text_custom.inc
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_area_text_custom.
+ */
+
+/**
+ * Views area text custom handler.
+ *
+ * @ingroup views_area_handlers
+ */
+class views_handler_area_text_custom extends views_handler_area_text {
+
+  function option_definition() {
+    $options = parent::option_definition();
+    unset($options['format']);
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    // Alter the form element, to be a regular text area.
+    $form['content']['#type'] = 'textarea';
+    unset($form['content']['#format']);
+    unset($form['content']['#wysiwyg']);
+
+    // @TODO: Use the token refactored base class.
+  }
+
+  // Empty, so we don't inherit options_submit from the parent.
+  function options_submit(&$form, &$form_state) {
+  }
+
+  function render($empty = FALSE) {
+    if (!$empty || !empty($this->options['empty'])) {
+      return $this->render_textarea_custom($this->options['content']);
+    }
+
+    return '';
+  }
+
+  /**
+   * Render a text area with filter_xss_admin.
+   */
+  function render_textarea_custom($value) {
+    if ($value) {
+      if ($this->options['tokenize']) {
+        $value = $this->view->style_plugin->tokenize_value($value, 0);
+      }
+      return $this->sanitize_value($value, 'xss_admin');
+    }
+  }
+
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_view.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_view.inc
index b8fad3f..45ea499 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_view.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_area_view.inc
@@ -2,8 +2,9 @@
 
 /**
  * @file
- * Contains views_handler_area_view handler.
+ * Definition of views_handler_area_view.
  */
+
 /**
  * Views area handlers. Insert a view inside of an area.
  *
@@ -15,7 +16,7 @@ class views_handler_area_view extends views_handler_area {
     $options = parent::option_definition();
 
     $options['view_to_insert'] = array('default' => '');
-    $options['inherit_arguments'] = array('default' => FALSE, 'boolean' => TRUE);
+    $options['inherit_arguments'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
@@ -29,7 +30,7 @@ class views_handler_area_view extends views_handler_area {
     $view_display = $this->view->name . ':' . $this->view->current_display;
 
     $options = array('' => t('-Select-'));
-    $options += views_get_views_as_options(FALSE, 'all', $view_display);
+    $options += views_get_views_as_options(FALSE, 'all', $view_display, FALSE, TRUE);
     $form['view_to_insert'] = array(
       '#type' => 'select',
       '#title' => t('View to insert'),
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument.inc
index 72c07e2..42617e7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument.inc
@@ -1,7 +1,13 @@
 <?php
 
 /**
- * @defgroup views_argument_handlers Handlers for arguments
+ * @file
+ * @todo.
+ */
+
+/**
+ * @defgroup views_argument_handlers Views argument handlers
+ * Handlers to tell Views how to contextually filter queries.
  * @{
  */
 
@@ -79,6 +85,9 @@ class views_handler_argument extends views_handler {
       $this->options['summary']['format'] = $options['style_plugin'];
     }
 
+    // Setup default value.
+    $options['style_options'] = isset($options['style_options']) ? $options['style_options'] : array();
+
     if (!isset($options['summary']['sort_order']) && !empty($options['default_action']) && $options['default_action'] == 'summary asc') {
       $this->options['default_action'] = 'summary';
       $this->options['summary']['sort_order'] = 'asc';
@@ -173,17 +182,17 @@ class views_handler_argument extends views_handler {
     $options['exception'] = array(
       'contains' => array(
         'value' => array('default' => 'all'),
-        'title_enable' => array('default' => 0),
-        'title' => array('default' => t('All'), 'translatable' => TRUE),
+        'title_enable' => array('default' => FALSE, 'bool' => TRUE),
+        'title' => array('default' => 'All', 'translatable' => TRUE),
       ),
     );
-    $options['title_enable'] = array('default' => 0);
+    $options['title_enable'] = array('default' => FALSE, 'bool' => TRUE);
     $options['title'] = array('default' => '', 'translatable' => TRUE);
-    $options['breadcrumb_enable'] = array('default' => 0);
+    $options['breadcrumb_enable'] = array('default' => FALSE, 'bool' => TRUE);
     $options['breadcrumb'] = array('default' => '', 'translatable' => TRUE);
     $options['default_argument_type'] = array('default' => 'fixed', 'export' => 'export_plugin');
     $options['default_argument_options'] = array('default' => array(), 'export' => FALSE);
-    $options['default_argument_skip_url'] = array('default' => FALSE);
+    $options['default_argument_skip_url'] = array('default' => FALSE, 'bool' => TRUE);
     $options['summary_options'] = array('default' => array(), 'export' => FALSE);
     $options['summary'] = array(
       'contains' => array(
@@ -192,7 +201,7 @@ class views_handler_argument extends views_handler {
         'format' => array('default' => 'default_summary', 'export' => 'export_summary'),
       ),
     );
-    $options['specify_validation'] = array('default' => 0);
+    $options['specify_validation'] = array('default' => FALSE, 'bool' => TRUE);
     $options['validate'] = array(
       'contains' => array(
         'type' => array('default' => 'none', 'export' => 'export_validation'),
@@ -371,6 +380,7 @@ class views_handler_argument extends views_handler {
               '#prefix' => '<div id="edit-options-validate-options-' . $id . '-wrapper">',
               '#suffix' => '</div>',
               '#type' => 'item',
+              // Even if the plugin has no options add the key to the form_state.
               '#input' => TRUE, // trick it into checking input to make #process run
               '#dependency' => array(
                 'edit-options-specify-validation' => array('1'),
@@ -507,6 +517,11 @@ class views_handler_argument extends views_handler {
         'method' => 'default_empty',
         'breadcrumb' => TRUE, // generate a breadcrumb to here
       ),
+      'access denied' => array(
+        'title' => t('Display "Access Denied"'),
+        'method' => 'default_access_denied',
+        'breadcrumb' => FALSE, // generate a breadcrumb to here
+      ),
     );
 
     if ($this->view->display_handler->has_path()) {
@@ -565,6 +580,8 @@ class views_handler_argument extends views_handler {
             '#suffix' => '</div>',
             '#id' => 'edit-options-argument-default-options-' . $id,
             '#type' => 'item',
+            // Even if the plugin has no options add the key to the form_state.
+            '#input' => TRUE,
             '#dependency' => array(
               'radio:options[default_action]' => array('default'),
               'edit-options-default-argument-type' => array($id)
@@ -707,6 +724,17 @@ class views_handler_argument extends views_handler {
   }
 
   /**
+   * Default action: access denied.
+   *
+   * If an argument was expected and was not given, in this case, report
+   * the view as 'access denied'.
+   */
+  function default_access_denied() {
+    $this->view->build_info['denied'] = TRUE;
+    return FALSE;
+  }
+
+  /**
    * Default action: empty
    *
    * If an argument was expected and was not given, in this case, display
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_date.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_date.inc
index 7ed4b03..6803c36 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_date.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_date.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_date.
+ */
+
 /**
  * Abstract argument handler for dates.
  *
@@ -12,7 +18,8 @@
  * - many to one: If true, the "many to one" helper will be used.
  * - invalid input: A string to give to the user for obviously invalid input.
  *                  This is deprecated in favor of argument validators.
- * @see views_many_to_one_helper
+ *
+ * @see views_many_to_one_helper()
  *
  * @ingroup views_argument_handlers
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_formula.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_formula.inc
index c4287be..76f5991 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_formula.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_formula.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_formula.
+ */
+
 /**
  * Abstract argument handler for simple formulae.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_group_by_numeric.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_group_by_numeric.inc
index 2ecccaf..aa522ea 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_group_by_numeric.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_group_by_numeric.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_group_by_numeric.
+ */
+
+/**
  * Simple handler for arguments using group by.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc
index 1f5229e..3446760 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_many_to_one.
+ */
+
 /**
  * An argument handler for use in fields that have a many to one relationship
  * with the table(s) to the left. This adds a bunch of options that are
@@ -26,11 +32,11 @@ class views_handler_argument_many_to_one extends views_handler_argument {
     $options = parent::option_definition();
 
     if (!empty($this->definition['numeric'])) {
-      $options['break_phrase'] = array('default' => FALSE);
+      $options['break_phrase'] = array('default' => FALSE, 'bool' => TRUE);
     }
 
-    $options['add_table'] = array('default' => FALSE);
-    $options['require_value'] = array('default' => FALSE);
+    $options['add_table'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['require_value'] = array('default' => FALSE, 'bool' => TRUE);
 
     if (isset($this->helper)) {
       $this->helper->option_definition($options);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_null.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_null.inc
index e4804dc..5b42728 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_null.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_null.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_null.
+ */
+
 /**
  * Argument handler that ignores the argument.
  *
@@ -7,7 +13,7 @@
 class views_handler_argument_null extends views_handler_argument {
   function option_definition() {
     $options = parent::option_definition();
-    $options['must_not_be'] = array('default' => FALSE);
+    $options['must_not_be'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_numeric.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_numeric.inc
index 5b91232..8f36b21 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_numeric.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_numeric.inc
@@ -1,7 +1,8 @@
 <?php
+
 /**
  * @file
- * Contains the numeric argument handler.
+ * Definition of views_handler_argument_numeric.
  */
 
 /**
@@ -26,8 +27,8 @@ class views_handler_argument_numeric extends views_handler_argument {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['break_phrase'] = array('default' => FALSE);
-    $options['not'] = array('default' => FALSE);
+    $options['break_phrase'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['not'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_string.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_string.inc
index 45bdbab..dbb98fe 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_string.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_argument_string.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_string.
+ */
+
+/**
  * Basic argument handler to implement string arguments that may have length
  * limits.
  *
@@ -21,16 +26,16 @@ class views_handler_argument_string extends views_handler_argument {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['glossary'] = array('default' => FALSE);
+    $options['glossary'] = array('default' => FALSE, 'bool' => TRUE);
     $options['limit'] = array('default' => 0);
     $options['case'] = array('default' => 'none');
     $options['path_case'] = array('default' => 'none');
-    $options['transform_dash'] = array('default' => FALSE);
-    $options['break_phrase'] = array('default' => FALSE);
+    $options['transform_dash'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['break_phrase'] = array('default' => FALSE, 'bool' => TRUE);
 
     if (!empty($this->definition['many to one'])) {
-      $options['add_table'] = array('default' => FALSE);
-      $options['require_value'] = array('default' => FALSE);
+      $options['add_table'] = array('default' => FALSE, 'bool' => TRUE);
+      $options['require_value'] = array('default' => FALSE, 'bool' => TRUE);
     }
 
     return $options;
@@ -124,7 +129,6 @@ class views_handler_argument_string extends views_handler_argument {
    * Build the summary query based on a string
    */
   function summary_query() {
-    $this->placeholder_length = $this->placeholder();
     if (empty($this->definition['many to one'])) {
       $this->ensure_my_table();
     }
@@ -140,13 +144,7 @@ class views_handler_argument_string extends views_handler_argument {
     else {
       // Add the field.
       $formula = $this->get_formula();
-      $params = array(
-        'placeholders' => array(
-          $this->placeholder_length => intval($this->options['limit']),
-        ),
-      );
-
-      $this->base_alias = $this->query->add_field(NULL, $formula, $this->field . '_truncated', $params);
+      $this->base_alias = $this->query->add_field(NULL, $formula, $this->field . '_truncated');
       $this->query->set_count_field(NULL, $formula, $this->field, $this->field . '_truncated');
     }
 
@@ -160,7 +158,7 @@ class views_handler_argument_string extends views_handler_argument {
    * $this->ensure_my_table() MUST have been called prior to this.
    */
   function get_formula() {
-    return "SUBSTRING($this->table_alias.$this->real_field, 1, $this->placeholder_length)";
+    return "SUBSTRING($this->table_alias.$this->real_field, 1, " . intval($this->options['limit']) . ")";
   }
 
   /**
@@ -171,7 +169,6 @@ class views_handler_argument_string extends views_handler_argument {
     if (!empty($this->options['transform_dash'])) {
       $argument = strtr($argument, '-', ' ');
     }
-    $this->placeholder_length = $this->placeholder();
 
     if (!empty($this->options['break_phrase'])) {
       views_break_phrase_string($argument, $this);
@@ -186,8 +183,6 @@ class views_handler_argument_string extends views_handler_argument {
         $this->helper->formula = TRUE;
       }
       $this->helper->ensure_my_table();
-
-      $this->helper->placeholders = array($this->placeholder_length => intval($this->options['limit']));
       $this->helper->add_filter();
       return;
     }
@@ -212,7 +207,6 @@ class views_handler_argument_string extends views_handler_argument {
 
     if ($formula) {
       $placeholder = $this->placeholder();
-      $placeholder_length = $this->placeholder_length;
       if ($operator == 'IN') {
         $field .= " IN($placeholder)";
       }
@@ -220,7 +214,6 @@ class views_handler_argument_string extends views_handler_argument {
         $field .= ' = ' . $placeholder;
       }
       $placeholders = array(
-        $placeholder_length => intval($this->options['limit']),
         $placeholder => $argument,
       );
       $this->query->add_where_expression(0, $field, $placeholders);
@@ -231,7 +224,7 @@ class views_handler_argument_string extends views_handler_argument {
   }
 
   function summary_argument($data) {
-    $value = $this->case_transform($data->{$this->base_alias}, 'path_case');
+    $value = $this->case_transform($data->{$this->base_alias}, $this->options['path_case']);
     if (!empty($this->options['transform_dash'])) {
       $value = strtr($value, ' ', '-');
     }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field.inc
index ff2c32d..c687575 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field.inc
@@ -1,13 +1,19 @@
 <?php
+
+/**
+ * @file
+ * @todo.
+ */
+
 /**
- * @defgroup views_field_handlers Views' field handlers
+ * @defgroup views_field_handlers Views field handlers
  * @{
  * Handlers to tell Views how to build and display fields.
  *
  */
 
 /**
- * Indicator of the render_text() mehtod for rendering a single item.
+ * Indicator of the render_text() method for rendering a single item.
  * (If no render_item() is present).
  */
 define('VIEWS_HANDLER_RENDER_TEXT_PHASE_SINGLE_ITEM', 0);
@@ -33,12 +39,21 @@ define('VIEWS_HANDLER_RENDER_TEXT_PHASE_EMPTY', 2);
  *                      'field' => fieldname); as many fields as are necessary
  *                      may be in this array.
  * - click sortable: If TRUE, this field may be click sorted.
+ *
+ * @ingroup views_field_handlers
  */
 class views_handler_field extends views_handler {
   var $field_alias = 'unknown';
   var $aliases = array();
 
   /**
+   * The field value prior to any rewriting.
+   *
+   * @var mixed
+   */
+  public $original_value = NULL;
+
+  /**
    * @var array
    * Stores additional fields which get's added to the query.
    * The generated aliases are stored in $aliases.
@@ -363,6 +378,17 @@ class views_handler_field extends views_handler {
     }
   }
 
+  /**
+   * Determines if this field will be available as an option to group the result
+   * by in the style settings.
+   *
+   * @return bool
+   *  TRUE if this field handler is groupable, otherwise FALSE.
+   */
+  function use_string_group_by() {
+    return TRUE;
+  }
+
   function option_definition() {
     $options = parent::option_definition();
 
@@ -370,32 +396,32 @@ class views_handler_field extends views_handler {
     $options['exclude'] = array('default' => FALSE, 'bool' => TRUE);
     $options['alter'] = array(
       'contains' => array(
-        'alter_text' => array('default' => FALSE),
+        'alter_text' => array('default' => FALSE, 'bool' => TRUE),
         'text' => array('default' => '', 'translatable' => TRUE),
-        'make_link' => array('default' => FALSE),
-        'path' => array('default' => '', 'translatable' => TRUE),
-        'absolute' => array('default' => '', 'translatable' => FALSE),
-        'external' => array('default' => '', 'translatable' => FALSE),
-        'replace_spaces' => array('default' => '', 'translatable' => FALSE),
+        'make_link' => array('default' => FALSE, 'bool' => TRUE),
+        'path' => array('default' => ''),
+        'absolute' => array('default' => FALSE, 'bool' => TRUE),
+        'external' => array('default' => FALSE, 'bool' => TRUE),
+        'replace_spaces' => array('default' => FALSE, 'bool' => TRUE),
         'path_case' => array('default' => 'none', 'translatable' => FALSE),
-        'trim_whitespace' => array('default' => FALSE),
+        'trim_whitespace' => array('default' => FALSE, 'bool' => TRUE),
         'alt' => array('default' => '', 'translatable' => TRUE),
         'rel' => array('default' => ''),
         'link_class' => array('default' => ''),
         'prefix' => array('default' => '', 'translatable' => TRUE),
         'suffix' => array('default' => '', 'translatable' => TRUE),
         'target' => array('default' => '', 'translatable' => TRUE),
-        'nl2br' => array('default' => FALSE),
+        'nl2br' => array('default' => FALSE, 'bool' => TRUE),
         'max_length' => array('default' => ''),
-        'word_boundary' => array('default' => TRUE),
-        'ellipsis' => array('default' => TRUE),
-        'more_link' => array('default' => FALSE),
+        'word_boundary' => array('default' => TRUE, 'bool' => TRUE),
+        'ellipsis' => array('default' => TRUE, 'bool' => TRUE),
+        'more_link' => array('default' => FALSE, 'bool' => TRUE),
         'more_link_text' => array('default' => '', 'translatable' => TRUE),
         'more_link_path' => array('default' => ''),
-        'strip_tags' => array('default' => FALSE),
-        'trim' => array('default' => FALSE),
+        'strip_tags' => array('default' => FALSE, 'bool' => TRUE),
+        'trim' => array('default' => FALSE, 'bool' => TRUE),
         'preserve_tags' => array('default' => ''),
-        'html' => array('default' => FALSE),
+        'html' => array('default' => FALSE, 'bool' => TRUE),
       ),
     );
     $options['element_type'] = array('default' => '');
@@ -403,17 +429,17 @@ class views_handler_field extends views_handler {
 
     $options['element_label_type'] = array('default' => '');
     $options['element_label_class'] = array('default' => '');
-    $options['element_label_colon'] = array('default' => TRUE);
+    $options['element_label_colon'] = array('default' => TRUE, 'bool' => TRUE);
 
     $options['element_wrapper_type'] = array('default' => '');
     $options['element_wrapper_class'] = array('default' => '');
 
-    $options['element_default_classes'] = array('default' => TRUE);
+    $options['element_default_classes'] = array('default' => TRUE, 'bool' => TRUE);
 
     $options['empty'] = array('default' => '', 'translatable' => TRUE);
-    $options['hide_empty'] = array('default' => FALSE);
-    $options['empty_zero'] = array('default' => FALSE);
-    $options['hide_alter_empty'] = array('default' => TRUE);
+    $options['hide_empty'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['empty_zero'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['hide_alter_empty'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
@@ -783,7 +809,7 @@ class views_handler_field extends views_handler {
       // We have some options, so make a list.
       if (!empty($options)) {
         $output = t('<p>The following tokens are available for this field. Note that due to rendering order, you cannot use fields that come after this field; if you need a field not listed here, rearrange your fields.
-If you would like to have the characters %5B and %5D please use the html entity codes \'%5B\' or  \'%5D\' or they will get replaced with empty space.</p>');
+If you would like to have the characters \'[\' and \']\' please use the html entity codes \'%5B\' or  \'%5D\' or they will get replaced with empty space.</p>');
         foreach (array_keys($options) as $type) {
           if (!empty($options[$type])) {
             $items = array();
@@ -1006,6 +1032,10 @@ If you would like to have the characters %5B and %5D please use the html entity
   function advanced_render($values) {
     if ($this->allow_advanced_render() && method_exists($this, 'render_item')) {
       $raw_items = $this->get_items($values);
+      // If there are no items, set the original value to NULL.
+      if (empty($raw_items)) {
+        $this->original_value = NULL;
+      }
     }
     else {
       $value = $this->render($values);
@@ -1049,7 +1079,7 @@ If you would like to have the characters %5B and %5D please use the html entity
     }
 
     if (empty($this->last_render)) {
-      if (($this->last_render !== 0 && $this->last_render !== '0') || !empty($this->options['empty_zero'])) {
+      if ($this->is_value_empty($this->last_render, $this->options['empty_zero'], FALSE)) {
         $alter = $this->options['alter'];
         $alter['alter_text'] = 1;
         $alter['text'] = $this->options['empty'];
@@ -1062,6 +1092,33 @@ If you would like to have the characters %5B and %5D please use the html entity
   }
 
   /**
+   * Checks if a field value is empty.
+   *
+   * @param $value
+   *   The field value.
+   * @param bool $empty_zero
+   *   Whether or not this field is configured to consider 0 as empty.
+   * @param bool $no_skip_empty
+   *   Whether or not to use empty() to check the value.
+   *
+   * @return bool
+   * TRUE if the value is considered empty, FALSE otherwise.
+   */
+  function is_value_empty($value, $empty_zero, $no_skip_empty = TRUE) {
+    if (!isset($value)) {
+      $empty = TRUE;
+    }
+    else {
+      $empty = ($empty_zero || ($value !== 0 && $value !== '0'));
+    }
+
+    if ($no_skip_empty) {
+      $empty = empty($value) && $empty;
+    }
+    return $empty;
+  }
+
+  /**
    * Perform an advanced text render for the item.
    *
    * This is separated out as some fields may render lists, and this allows
@@ -1080,15 +1137,14 @@ If you would like to have the characters %5B and %5D please use the html entity
     }
 
     // Check if there should be no further rewrite for empty values.
-    $no_rewrite_for_empty = $this->options['hide_alter_empty'] && empty($this->original_value);
+    $no_rewrite_for_empty = $this->options['hide_alter_empty'] && $this->is_value_empty($this->original_value, $this->options['empty_zero']);
 
     // Check whether the value is empty and return nothing, so the field isn't rendered.
     // First check whether the field should be hidden if the value(hide_alter_empty = TRUE) /the rewrite is empty (hide_alter_empty = FALSE).
     // For numeric values you can specify whether "0"/0 should be empty.
     if ((($this->options['hide_empty'] && empty($value))
         || ($alter['phase'] != VIEWS_HANDLER_RENDER_TEXT_PHASE_EMPTY && $no_rewrite_for_empty))
-      && (($value !== 0 && $value !== '0')
-        || $this->options['empty_zero'])) {
+      && $this->is_value_empty($value, $this->options['empty_zero'], FALSE)) {
       return '';
     }
     // Only in empty phase.
@@ -1120,7 +1176,7 @@ If you would like to have the characters %5B and %5D please use the html entity
           $more_link_path = drupal_substr($more_link_path, drupal_strlen($base_path));
         }
 
-        $more_link = l($more_link_text, $more_link_path);
+        $more_link = l($more_link_text, $more_link_path, array('attributes' => array('class' => array('views-more-link'))));
 
         $suffix .= " " . $more_link;
       }
@@ -1230,7 +1286,15 @@ If you would like to have the characters %5B and %5D please use the html entity
 
     if (isset($url['query'])) {
       $path = strtr($path, array('?' . $url['query'] => ''));
-      $options['query'] = drupal_get_query_array($url['query']);
+      $query = drupal_get_query_array($url['query']);
+      // Remove query parameters that were assigned a query string replacement
+      // token for which there is no value available.
+      foreach ($query as $param => $val) {
+        if ($val == '%' . $param) {
+          unset($query[$param]);
+        }
+      }
+      $options['query'] = $query;
     }
     if (isset($url['fragment'])) {
       $path = strtr($path, array('#' . $url['fragment'] => ''));
@@ -1333,6 +1397,9 @@ If you would like to have the characters %5B and %5D please use the html entity
       $tokens['!' . $count] = isset($this->view->args[$count - 1]) ? strip_tags(decode_entities($this->view->args[$count - 1])) : '';
     }
 
+    // Get flattened set of tokens for any array depth in $_GET parameters.
+    $tokens += $this->get_token_values_recursive($_GET);
+
     // Now add replacements for our fields.
     foreach ($this->view->display_handler->get_handlers('field') as $field => $handler) {
       if (isset($handler->last_render)) {
@@ -1354,6 +1421,64 @@ If you would like to have the characters %5B and %5D please use the html entity
     // Store the tokens for the row so we can reference them later if necessary.
     $this->view->style_plugin->render_tokens[$this->view->row_index] = $tokens;
     $this->last_tokens = $tokens;
+
+    return $tokens;
+  }
+
+  /**
+   * Recursive function to add replacements for nested query string parameters.
+   *
+   * E.g. if you pass in the following array:
+   *   array(
+   *     'foo' => array(
+   *       'a' => 'value',
+   *       'b' => 'value',
+   *     ),
+   *     'bar' => array(
+   *       'a' => 'value',
+   *       'b' => array(
+   *         'c' => value,
+   *       ),
+   *     ),
+   *   );
+   *
+   * Would yield the following array of tokens:
+   *   array(
+   *     '%foo_a' => 'value'
+   *     '%foo_b' => 'value'
+   *     '%bar_a' => 'value'
+   *     '%bar_b_c' => 'value'
+   *   );
+   *
+   * @param $array
+   *   An array of values.
+   *
+   * @param $parent_keys
+   *   An array of parent keys. This will represent the array depth.
+   *
+   * @return
+   *   An array of available tokens, with nested keys representative of the array structure.
+   */
+  function get_token_values_recursive(array $array, array $parent_keys = array()) {
+    $tokens = array();
+
+    foreach ($array as $param => $val) {
+      if (is_array($val)) {
+         // Copy parent_keys array, so we don't afect other elements of this iteration.
+         $child_parent_keys = $parent_keys;
+         $child_parent_keys[] = $param;
+         // Get the child tokens.
+         $child_tokens = $this->get_token_values_recursive($val, $child_parent_keys);
+         // Add them to the current tokens array.
+         $tokens += $child_tokens;
+      }
+      else {
+        // Create a token key based on array element structure.
+        $token_string = !empty($parent_keys) ? implode('_', $parent_keys) . '_' . $param : $param;
+        $tokens['%' . $token_string] = strip_tags(decode_entities($val));
+      }
+    }
+
     return $tokens;
   }
 
@@ -1373,7 +1498,7 @@ If you would like to have the characters %5B and %5D please use the html entity
   /**
    * Document any special tokens this field might use for itself.
    *
-   * @see add_self_tokens() for details.
+   * @see add_self_tokens()
    */
   function document_self_tokens(&$tokens) { }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_boolean.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_boolean.inc
index c388d4f..13fff07 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_boolean.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_boolean.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_boolean.
+ */
+
+/**
  * A handler to provide proper displays for booleans.
  *
  * Allows for display of true/false, yes/no, on/off, enabled/disabled.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_contextual_links.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_contextual_links.inc
index a55ac58..faeeedc 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_contextual_links.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_contextual_links.inc
@@ -1,11 +1,21 @@
 <?php
 
+/**
+ * @file
+ * Definition of views_handler_field_contextual_links.
+ */
+
+/**
+ * Provides a handler that adds contextual links.
+ *
+ * @ingroup views_field_handlers
+ */
 class views_handler_field_contextual_links extends views_handler_field {
   function option_definition() {
     $options = parent::option_definition();
 
     $options['fields'] = array('default' => array());
-    $options['destination'] = array('default' => 1);
+    $options['destination'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
@@ -22,13 +32,9 @@ class views_handler_field_contextual_links extends views_handler_field {
       '#default_value' => $this->options['fields'],
     );
     $form['destination'] = array(
-      '#type' => 'select',
+      '#type' => 'checkbox',
       '#title' => t('Include destination'),
       '#description' => t('Include a "destination" parameter in the link to return the user to the original view upon completing the contextual action.'),
-      '#options' => array(
-        '0' => t('No'),
-        '1' => t('Yes'),
-      ),
       '#default_value' => $this->options['destination'],
     );
   }
@@ -50,7 +56,7 @@ class views_handler_field_contextual_links extends views_handler_field {
   function render($values) {
     $links = array();
     foreach ($this->options['fields'] as $field) {
-      if (empty($this->view->field[$field]->last_render_text)) {
+      if (empty($this->view->style_plugin->rendered_fields[$this->view->row_index][$field])) {
         continue;
       }
       $title = $this->view->field[$field]->last_render_text;
@@ -58,7 +64,11 @@ class views_handler_field_contextual_links extends views_handler_field {
       if (!empty($this->view->field[$field]->options['alter']['path'])) {
         $path = $this->view->field[$field]->options['alter']['path'];
       }
-      if (!empty($title)) {
+      if (!empty($title) && !empty($path)) {
+        // Make sure that tokens are replaced for this paths as well.
+        $tokens = $this->get_render_tokens(array());
+        $path = strip_tags(decode_entities(strtr($path, $tokens)));
+
         $links[$field] = array(
           'href' => $path,
           'title' => $title,
@@ -68,19 +78,24 @@ class views_handler_field_contextual_links extends views_handler_field {
         }
       }
     }
-    $build = array(
-      '#prefix' => '<div class="contextual-links-wrapper">',
-      '#suffix' => '</div>',
-      '#theme' => 'links__contextual',
-      '#links' => $links,
-      '#attributes' => array('class' => array('contextual-links')),
-      '#attached' => array(
-        'library' => array(array('contextual', 'contextual-links')),
-      ),
-      '#access' => user_access('access contextual links'),
-    );
 
-    return drupal_render($build);
+    if (!empty($links)) {
+      $build = array(
+        '#prefix' => '<div class="contextual-links-wrapper">',
+        '#suffix' => '</div>',
+        '#theme' => 'links__contextual',
+        '#links' => $links,
+        '#attributes' => array('class' => array('contextual-links')),
+        '#attached' => array(
+          'library' => array(array('contextual', 'contextual-links')),
+        ),
+        '#access' => user_access('access contextual links'),
+      );
+      return drupal_render($build);
+    }
+    else {
+      return '';
+    }
   }
 
   function query() { }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_counter.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_counter.inc
index d4e52fc..76213a6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_counter.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_counter.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_counter.
+ */
+
+/**
  * Field handler to show a counter of the current row.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_custom.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_custom.inc
index 92b5d7c..66586de 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_custom.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_custom.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_custom.
+ */
+
+/**
  * A handler to provide a field that is completely custom by the administrator.
  *
  * @ingroup views_field_handlers
@@ -14,8 +19,8 @@ class views_handler_field_custom extends views_handler_field {
     $options = parent::option_definition();
 
     // Override the alter text option to always alter the text.
-    $options['alter']['contains']['alter_text'] = array('default' => TRUE);
-    $options['hide_alter_empty'] = array('default' => FALSE);
+    $options['alter']['contains']['alter_text'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['hide_alter_empty'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_date.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_date.inc
index b122b66..8517f0b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_date.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_date.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_date.
+ */
+
 /**
  * A handler to provide proper displays for dates.
  *
@@ -10,6 +16,7 @@ class views_handler_field_date extends views_handler_field {
 
     $options['date_format'] = array('default' => 'small');
     $options['custom_date_format'] = array('default' => '');
+    $options['timezone'] = array('default' => '');
 
     return $options;
   }
@@ -19,7 +26,7 @@ class views_handler_field_date extends views_handler_field {
     $date_formats = array();
     $date_types = system_get_date_types();
     foreach ($date_types as $key => $value) {
-      $date_formats[$value['type']] = check_plain(t($value['title'] . ' format')) . ': ' . format_date(REQUEST_TIME, $value['type']);
+      $date_formats[$value['type']] = t('@date_format format', array('@date_format' => $value['title'])) . ': ' . format_date(REQUEST_TIME, $value['type']);
     }
 
     $form['date_format'] = array(
@@ -40,10 +47,18 @@ class views_handler_field_date extends views_handler_field {
     $form['custom_date_format'] = array(
       '#type' => 'textfield',
       '#title' => t('Custom date format'),
-      '#description' => t('If "Custom", see <a href="http://us.php.net/manual/en/function.date.php" target="_blank">the PHP docs</a> for date formats. Otherwise, enter the number of different time units to display, which defaults to 2.'),
+      '#description' => t('If "Custom", see the <a href="@url" target="_blank">PHP manual</a> for date formats. Otherwise, enter the number of different time units to display, which defaults to 2.', array('@url' => 'http://php.net/manual/function.date.php')),
       '#default_value' => isset($this->options['custom_date_format']) ? $this->options['custom_date_format'] : '',
       '#dependency' => array('edit-options-date-format' => array('custom', 'raw time ago', 'time ago', 'raw time hence', 'time hence', 'raw time span', 'time span', 'raw time span', 'inverse time span', 'time span')),
     );
+    $form['timezone'] = array(
+      '#type' => 'select',
+      '#title' => t('Timezone'),
+      '#description' => t('Timezone to be used for date output.'),
+      '#options' => array('' => t('- Default site/user timezone -')) + system_time_zones(FALSE),
+      '#default_value' => $this->options['timezone'],
+      '#dependency' => array('edit-options-date-format' => array_merge(array('custom'), array_keys($date_formats))),
+    );
 
     parent::options_form($form, $form_state);
   }
@@ -56,6 +71,7 @@ class views_handler_field_date extends views_handler_field {
     }
 
     if ($value) {
+      $timezone = !empty($this->options['timezone']) ? $this->options['timezone'] : NULL;
       $time_diff = REQUEST_TIME - $value; // will be positive for a datetime in the past (ago), and negative for a datetime in the future (hence)
       switch ($format) {
         case 'raw time ago':
@@ -74,11 +90,11 @@ class views_handler_field_date extends views_handler_field {
           return t(($time_diff < 0 ? '%time hence' : '%time ago'), array('%time' => format_interval(abs($time_diff), is_numeric($custom_format) ? $custom_format : 2)));
         case 'custom':
           if ($custom_format == 'r') {
-            return format_date($value, $format, $custom_format, null, 'en');
+            return format_date($value, $format, $custom_format, $timezone, 'en');
           }
-          return format_date($value, $format, $custom_format);
+          return format_date($value, $format, $custom_format, $timezone);
         default:
-          return format_date($value, $format);
+          return format_date($value, $format, '', $timezone);
       }
     }
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_entity.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_entity.inc
index 0e13b23..d8aaba4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_entity.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_entity.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_entity.
+ */
+
 /**
  * A handler to display data from entity objects.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_machine_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_machine_name.inc
index 96a0cf7..9f3587f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_machine_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_machine_name.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_machine_name.
+ */
+
+/**
  * Field handler whichs allows to show machine name content as human name.
  * @ingroup views_field_handlers
  *
@@ -34,7 +39,7 @@ class views_handler_field_machine_name extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['machine_name'] = array('default' => FALSE);
+    $options['machine_name'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_markup.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_markup.inc
index 10444d5..b0f1cea 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_markup.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_markup.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_markup.
+ */
+
+/**
  * A handler to run a field through check_markup, using a companion
  * format field.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_math.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_math.inc
index 9df9987..08fba06 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_math.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_math.inc
@@ -1,10 +1,16 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_math.
+ */
+
 /**
  * Render a mathematical expression as a numeric value
  *
  * Definition terms:
  * - float: If true this field contains a decimal value. If unset this field
- *          will be assumed to be integer.
+ *   will be assumed to be integer.
  *
  * @ingroup views_field_handlers
  */
@@ -20,7 +26,7 @@ class views_handler_field_math extends views_handler_field_numeric {
     $form['expression'] = array(
       '#type' => 'textarea',
       '#title' => t('Expression'),
-      '#description' => t('Enter mathematical expressions such as 2 + 2 or sqrt(5). You my assign variables and create mathematical functions and evaluate them. Use the ; to separate these. For example: f(x) = x + 2; f(2).'),
+      '#description' => t('Enter mathematical expressions such as 2 + 2 or sqrt(5). You may assign variables and create mathematical functions and evaluate them. Use the ; to separate these. For example: f(x) = x + 2; f(2).'),
       '#default_value' => $this->options['expression'],
     );
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_numeric.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_numeric.inc
index 5f7f450..d10d3d0 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_numeric.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_numeric.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_numeric.
+ */
+
 /**
  * Render a field as a numeric value
  *
@@ -12,11 +18,11 @@ class views_handler_field_numeric extends views_handler_field {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['set_precision'] = array('default' => FALSE);
+    $options['set_precision'] = array('default' => FALSE, 'bool' => TRUE);
     $options['precision'] = array('default' => 0);
     $options['decimal'] = array('default' => '.', 'translatable' => TRUE);
     $options['separator'] = array('default' => ',', 'translatable' => TRUE);
-    $options['format_plural'] = array('default' => FALSE);
+    $options['format_plural'] = array('default' => FALSE, 'bool' => TRUE);
     $options['format_plural_singular'] = array('default' => '1');
     $options['format_plural_plural'] = array('default' => '@count');
     $options['prefix'] = array('default' => '', 'translatable' => TRUE);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc
index 16b30b6..00a571a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_prerender_list.
+ */
+
+/**
  * Field handler to provide a list of items.
  *
  * The items are expected to be loaded by a child object during pre_render,
@@ -84,7 +89,7 @@ class views_handler_field_prerender_list extends views_handler_field {
   function render_items($items) {
     if (!empty($items)) {
       if ($this->options['type'] == 'separator') {
-        return implode($this->sanitize_value($this->options['separator']), $items);
+        return implode($this->sanitize_value($this->options['separator'], 'xss_admin'), $items);
       }
       else {
         return theme('item_list',
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_serialized.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_serialized.inc
index 01dd0c0..1579fce 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_serialized.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_serialized.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_serialized.
+ */
+
+/**
  * Field handler to show data of serialized fields.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_time_interval.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_time_interval.inc
index ca50885..e6063af 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_time_interval.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_time_interval.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_time_interval.
+ */
+
 /**
  * A handler to provide proper displays for time intervals.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_url.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_url.inc
index 2491f35..4a76548 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_url.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_field_url.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_url.
+ */
+
+/**
  * Field handler to provide simple renderer that turns a URL into a clickable link.
  *
  * @ingroup views_field_handlers
@@ -9,7 +14,7 @@ class views_handler_field_url extends views_handler_field {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['display_as_link'] = array('default' => TRUE);
+    $options['display_as_link'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
@@ -29,7 +34,10 @@ class views_handler_field_url extends views_handler_field {
   function render($values) {
     $value = $this->get_value($values);
     if (!empty($this->options['display_as_link'])) {
-      return l($this->sanitize_value($value), $value, array('html' => TRUE));
+      $this->options['alter']['make_link'] = TRUE;
+      $this->options['alter']['path'] = $value;
+      $text = !empty($this->options['text']) ? $this->sanitize_value($this->options['text']) : $this->sanitize_value($value, 'url');
+      return $text;
     }
     else {
       return $this->sanitize_value($value, 'url');
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter.inc
index b267976..f5db70f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter.inc
@@ -1,6 +1,12 @@
 <?php
+
 /**
- * @defgroup views_filter_handlers Views' filter handlers
+ * @file
+ * @todo.
+ */
+
+/**
+ * @defgroup views_filter_handlers Views filter handlers
  * @{
  * Handlers to tell Views how to filter queries.
  *
@@ -22,6 +28,8 @@
 
 /**
  * Base class for filters.
+ *
+ * @ingroup views_filter_handlers
  */
 class views_handler_filter extends views_handler {
   /**
@@ -36,6 +44,11 @@ class views_handler_filter extends views_handler {
   var $operator = '=';
 
   /**
+   * Contains the information of the selected item in a gruped filter.
+   */
+  var $group_info = NULL;
+
+  /**
    * @var bool
    * Disable the possibility to force a single value.
    */
@@ -64,6 +77,7 @@ class views_handler_filter extends views_handler {
 
     $this->operator = $this->options['operator'];
     $this->value = $this->options['value'];
+    $this->group_info = $this->options['group_info']['default_group'];
 
     // Compatibility: The new UI changed several settings.
     if (!empty($options['exposed']) && !empty($options['expose']['optional']) && !isset($options['expose']['required'])) {
@@ -76,6 +90,11 @@ class views_handler_filter extends views_handler {
       $this->options['expose']['operator_id'] = $options['expose']['operator_id'] = $options['expose']['operator'];
     }
 
+    if ($this->multiple_exposed_input()) {
+      $this->group_info = array_filter($options['group_info']['default_group_multiple']);
+      $this->options['expose']['multiple'] = TRUE;
+    }
+
     // If there are relationships in the view, allow empty should be true
     // so that we can do IS NULL checks on items. Not all filters respect
     // allow empty, but string and numeric do and that covers enough.
@@ -90,17 +109,45 @@ class views_handler_filter extends views_handler {
     $options['operator'] = array('default' => '=');
     $options['value'] = array('default' => '');
     $options['group'] = array('default' => '1');
-    $options['exposed'] = array('default' => FALSE);
+    $options['exposed'] = array('default' => FALSE, 'bool' => TRUE);
     $options['expose'] = array(
       'contains' => array(
         'operator_id' => array('default' => FALSE),
         'label' => array('default' => '', 'translatable' => TRUE),
-        'use_operator' => array('default' => 0),
+        'description' => array('default' => '', 'translatable' => TRUE),
+        'use_operator' => array('default' => FALSE, 'bool' => TRUE),
         'operator' => array('default' => ''),
         'identifier' => array('default' => ''),
-        'required' => array('default' => 0),
+        'required' => array('default' => FALSE, 'bool' => TRUE),
+        'remember' => array('default' => FALSE, 'bool' => TRUE),
+        'multiple' => array('default' => FALSE, 'bool' => TRUE),
+        'remember_roles' => array('default' => array(
+          DRUPAL_AUTHENTICATED_RID => DRUPAL_AUTHENTICATED_RID,
+        )),
+      ),
+    );
+
+    // A group is a combination of a filter, an operator and a value
+    // operating like a single filter.
+    // Users can choose from a select box which group they want to apply.
+    // Views will filter the view according to the defined values.
+    // Because it acts as a standard filter, we have to define
+    // an identifier and other settings like the widget and the label.
+    // This settings are saved in another array to allow users to switch
+    // between a normal filter and a group of filters with a single click.
+    $options['is_grouped'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['group_info'] = array(
+      'contains' => array(
+        'label' => array('default' => '', 'translatable' => TRUE),
+        'description' => array('default' => '', 'translatable' => TRUE),
+        'identifier' => array('default' => ''),
+        'optional' => array('default' => TRUE, 'bool' => TRUE),
+        'widget' => array('default' => 'select'),
+        'multiple' => array('default' => FALSE, 'bool' => TRUE),
         'remember' => array('default' => 0),
-        'multiple' => array('default' => 0),
+        'default_group' => array('default' => 'All'),
+        'default_group_multiple' => array('default' => array()),
+        'group_items' => array('default' => array()),
       ),
     );
 
@@ -120,6 +167,21 @@ class views_handler_filter extends views_handler {
   function can_expose() { return TRUE; }
 
   /**
+   * Determine if a filter can be converted into a group.
+   * Only exposed filters with operators available can be converted into groups.
+   */
+  function can_build_group() {
+    return $this->is_exposed() && (count($this->operator_options()) > 0);
+  }
+
+  /**
+   * Returns TRUE if the exposed filter works like a grouped filter.
+   */
+  function is_a_group() {
+    return $this->is_exposed() && !empty($this->options['is_grouped']);
+  }
+
+  /**
    * Provide the basic form which calls through to subforms.
    * If overridden, it is best to call through to the parent,
    * or to at least make sure all of the functions in this form
@@ -130,19 +192,36 @@ class views_handler_filter extends views_handler {
     if ($this->can_expose()) {
       $this->show_expose_button($form, $form_state);
     }
+    if ($this->can_build_group()) {
+      $this->show_build_group_button($form, $form_state);
+    }
     $form['clear_markup_start'] = array(
       '#markup' => '<div class="clearfix">',
     );
-    // Add the subform from operator_form().
-    $this->show_operator_form($form, $form_state);
-    // Add the subform from value_form().
-    $this->show_value_form($form, $form_state);
-    $form['clear_markup_end'] = array(
-      '#markup' => '</div>',
-    );
-    if ($this->can_expose()) {
-      // Add the subform from expose_form().
-      $this->show_expose_form($form, $form_state);
+    if ($this->is_a_group()) {
+      if ($this->can_build_group()) {
+        $form['clear_markup_start'] = array(
+          '#markup' => '<div class="clearfix">',
+        );
+        // Render the build group form.
+        $this->show_build_group_form($form, $form_state);
+        $form['clear_markup_end'] = array(
+          '#markup' => '</div>',
+        );
+      }
+    }
+    else {
+      // Add the subform from operator_form().
+      $this->show_operator_form($form, $form_state);
+      // Add the subform from value_form().
+      $this->show_value_form($form, $form_state);
+      $form['clear_markup_end'] = array(
+        '#markup' => '</div>',
+      );
+      if ($this->can_expose()) {
+        // Add the subform from expose_form().
+        $this->show_expose_form($form, $form_state);
+      }
     }
   }
 
@@ -152,9 +231,12 @@ class views_handler_filter extends views_handler {
   function options_validate(&$form, &$form_state) {
     $this->operator_validate($form, $form_state);
     $this->value_validate($form, $form_state);
-    if (!empty($this->options['exposed'])) {
+    if (!empty($this->options['exposed']) && !$this->is_a_group()) {
       $this->expose_validate($form, $form_state);
     }
+    if ($this->is_a_group()) {
+      $this->build_group_validate($form, $form_state);
+    }
   }
 
   /**
@@ -162,11 +244,17 @@ class views_handler_filter extends views_handler {
    */
   function options_submit(&$form, &$form_state) {
     unset($form_state['values']['expose_button']); // don't store this.
-    $this->operator_submit($form, $form_state);
-    $this->value_submit($form, $form_state);
+    unset($form_state['values']['group_button']); // don't store this.
+    if (!$this->is_a_group()) {
+      $this->operator_submit($form, $form_state);
+      $this->value_submit($form, $form_state);
+    }
     if (!empty($this->options['exposed'])) {
       $this->expose_submit($form, $form_state);
     }
+    if ($this->is_a_group()) {
+      $this->build_group_submit($form, $form_state);
+    }
   }
 
   /**
@@ -184,7 +272,7 @@ class views_handler_filter extends views_handler {
    * This may be overridden by child classes, and it must
    * define $form['operator'];
    *
-   * @see options_form().
+   * @see options_form()
    */
   function operator_form(&$form, &$form_state) {
     $options = $this->operator_options();
@@ -232,7 +320,7 @@ class views_handler_filter extends views_handler {
    * This should be overridden by all child classes and it must
    * define $form['value']
    *
-   * @see options_form().
+   * @see options_form()
    */
   function value_form(&$form, &$form_state) { $form['value'] = array(); }
 
@@ -248,6 +336,78 @@ class views_handler_filter extends views_handler {
   function value_submit($form, &$form_state) { }
 
   /**
+   * Shortcut to display the exposed options form.
+   */
+  function show_build_group_form(&$form, &$form_state) {
+    if (empty($this->options['is_grouped'])) {
+      return;
+    }
+
+    $this->build_group_form($form, $form_state);
+
+    // When we click the expose button, we add new gadgets to the form but they
+    // have no data in $_POST so their defaults get wiped out. This prevents
+    // these defaults from getting wiped out. This setting will only be TRUE
+    // during a 2nd pass rerender.
+    if (!empty($form_state['force_build_group_options'])) {
+      foreach (element_children($form['group_info']) as $id) {
+        if (isset($form['group_info'][$id]['#default_value']) && !isset($form['group_info'][$id]['#value'])) {
+          $form['group_info'][$id]['#value'] = $form['group_info'][$id]['#default_value'];
+        }
+      }
+    }
+  }
+
+  /**
+   * Shortcut to display the build_group/hide button.
+   */
+  function show_build_group_button(&$form, &$form_state) {
+
+    $form['group_button'] = array(
+      '#prefix' => '<div class="views-grouped clearfix">',
+      '#suffix' => '</div>',
+      // Should always come after the description and the relationship.
+      '#weight' => -190,
+    );
+
+    $grouped_description = t('Grouped filters allow a choice between predefined operator|value pairs.');
+    $form['group_button']['radios'] = array(
+      '#theme_wrappers' => array('container'),
+      '#attributes' => array('class' => array('js-only')),
+    );
+    $form['group_button']['radios']['radios'] = array(
+      '#title' => t('Filter type to expose'),
+      '#description' => $grouped_description,
+      '#type' => 'radios',
+      '#options' => array(
+        t('Single filter'),
+        t('Grouped filters'),
+      ),
+    );
+
+    if (empty($this->options['is_grouped'])) {
+      $form['group_button']['markup'] = array(
+        '#markup' => '<div class="description grouped-description">' . $grouped_description . '</div>',
+      );
+      $form['group_button']['button'] = array(
+        '#limit_validation_errors' => array(),
+        '#type' => 'submit',
+        '#value' => t('Grouped filters'),
+        '#submit' => array('views_ui_config_item_form_build_group'),
+      );
+      $form['group_button']['radios']['radios']['#default_value'] = 0;
+    }
+    else {
+      $form['group_button']['button'] = array(
+        '#limit_validation_errors' => array(),
+        '#type' => 'submit',
+        '#value' => t('Single filter'),
+        '#submit' => array('views_ui_config_item_form_build_group'),
+      );
+      $form['group_button']['radios']['radios']['#default_value'] = 1;
+    }
+  }
+  /**
    * Shortcut to display the expose/hide button.
    */
   function show_expose_button(&$form, &$form_state) {
@@ -299,7 +459,7 @@ class views_handler_filter extends views_handler {
   /**
    * Options form subform for exposed filter options.
    *
-   * @see options_form().
+   * @see options_form()
    */
   function expose_form(&$form, &$form_state) {
     $form['#theme'] = 'views_ui_expose_filter_form';
@@ -330,6 +490,13 @@ class views_handler_filter extends views_handler {
       '#size' => 40,
     );
 
+    $form['expose']['description'] = array(
+      '#type' => 'textfield',
+      '#default_value' => $this->options['expose']['description'],
+      '#title' => t('Description'),
+      '#size' => 60,
+    );
+
     if (!empty($form['operator']['#type'])) {
        // Increase the width of the left (operator) column.
       $form['operator']['#prefix'] = '<div class="views-group-box views-left-40">';
@@ -377,6 +544,18 @@ class views_handler_filter extends views_handler {
       '#default_value' => $this->options['expose']['remember'],
     );
 
+    $role_options = array_map('check_plain', user_roles());
+    $form['expose']['remember_roles'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('User roles'),
+      '#description' => t('Remember exposed selection only for the selected user role(s). If you select no roles, the exposed data will never be stored.'),
+      '#default_value' => $this->options['expose']['remember_roles'],
+      '#options' => $role_options,
+      '#dependency' =>  array(
+        'edit-options-expose-remember' => array(1),
+      ),
+    );
+
     $form['expose']['identifier'] = array(
       '#type' => 'textfield',
       '#default_value' => $this->options['expose']['identifier'],
@@ -404,6 +583,83 @@ class views_handler_filter extends views_handler {
     }
   }
 
+   /**
+   * Validate the build group options form.
+   */
+  function build_group_validate($form, &$form_state) {
+    if (!empty($form_state['values']['options']['group_info'])) {
+      if (empty($form_state['values']['options']['group_info']['identifier'])) {
+        form_error($form['group_info']['identifier'], t('The identifier is required if the filter is exposed.'));
+      }
+
+      if (!empty($form_state['values']['options']['group_info']['identifier']) && $form_state['values']['options']['group_info']['identifier'] == 'value') {
+        form_error($form['group_info']['identifier'], t('This identifier is not allowed.'));
+      }
+
+      if (!$this->view->display_handler->is_identifier_unique($form_state['id'], $form_state['values']['options']['group_info']['identifier'])) {
+        form_error($form['group_info']['identifier'], t('This identifier is used by another handler.'));
+      }
+    }
+
+    if (!empty($form_state['values']['options']['group_info']['group_items'])) {
+      foreach ($form_state['values']['options']['group_info']['group_items'] as $id => $group) {
+        if (empty($group['remove'])) {
+
+          // Check if the title is defined but value wasn't defined.
+          if (!empty($group['title'])) {
+            if ((!is_array($group['value']) && trim($group['value']) == "") ||
+                (is_array($group['value']) && count(array_filter($group['value'], '_views_array_filter_zero')) == 0)) {
+              form_error($form['group_info']['group_items'][$id]['value'],
+                         t('The value is required if title for this item is defined.'));
+            }
+          }
+
+          // Check if the value is defined but title wasn't defined.
+          if ((!is_array($group['value']) && trim($group['value']) != "") ||
+              (is_array($group['value']) && count(array_filter($group['value'], '_views_array_filter_zero')) > 0)) {
+            if (empty($group['title'])) {
+              form_error($form['group_info']['group_items'][$id]['title'],
+                         t('The title is required if value for this item is defined.'));
+            }
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * Save new group items, re-enumerates and remove groups marked to delete.
+   */
+  function build_group_submit($form, &$form_state) {
+    $groups = array();
+    uasort($form_state['values']['options']['group_info']['group_items'], 'drupal_sort_weight');
+    // Filter out removed items.
+
+    // Start from 1 to avoid problems with #default_value in the widget.
+    $new_id = 1;
+    $new_default = 'All';
+    foreach ($form_state['values']['options']['group_info']['group_items'] as $id => $group) {
+      if (empty($group['remove'])) {
+        // Don't store this.
+        unset($group['remove']);
+        unset($group['weight']);
+        $groups[$new_id] = $group;
+
+        if ($form_state['values']['options']['group_info']['default_group'] === $id) {
+          $new_default = $new_id;
+        }
+      }
+      $new_id++;
+    }
+    if ($new_default != 'All') {
+      $form_state['values']['options']['group_info']['default_group'] = $new_default;
+    }
+    $filter_default_multiple = array_filter($form_state['values']['options']['group_info']['default_group_multiple']);
+    $form_state['values']['options']['group_info']['default_group_multiple'] = $filter_default_multiple;
+
+    $form_state['values']['options']['group_info']['group_items'] = $groups;
+  }
+
   /**
    * Provide default options for exposed filters.
    */
@@ -413,12 +669,76 @@ class views_handler_filter extends views_handler {
       'operator' => $this->options['id'] . '_op',
       'identifier' => $this->options['id'],
       'label' => $this->definition['title'],
+      'description' => NULL,
       'remember' => FALSE,
       'multiple' => FALSE,
       'required' => FALSE,
     );
   }
 
+   /**
+   * Provide default options for exposed filters.
+   */
+  function build_group_options() {
+    $this->options['group_info'] = array(
+      'label' => $this->definition['title'],
+      'description' => NULL,
+      'identifier' => $this->options['id'],
+      'optional' => TRUE,
+      'widget' => 'select',
+      'multiple' => FALSE,
+      'remember' => FALSE,
+      'default_group' => 'All',
+      'default_group_multiple' => array(),
+      'group_items' => array(),
+    );
+  }
+
+  /**
+   * Build a form containing a group of operator | values to apply as a
+   * single filter.
+   */
+  function group_form(&$form, &$form_state) {
+    if (!empty($this->options['group_info']['optional']) && !$this->multiple_exposed_input()) {
+
+      $old_any = $this->options['group_info']['widget'] == 'select' ? '<Any>' : '<Any>';
+      $any_label = variable_get('views_exposed_filter_any_label', 'new_any') == 'old_any' ? $old_any : t('- Any -');
+      $groups = array('All' => $any_label);
+    }
+    foreach ($this->options['group_info']['group_items'] as $id => $group) {
+      if (!empty($group['title'])) {
+        $groups[$id] = $id != 'All' ? t($group['title']) : $group['title'];
+      }
+    }
+
+    if (count($groups)) {
+      $value = $this->options['group_info']['identifier'];
+
+      $form[$value] = array(
+        '#type' => $this->options['group_info']['widget'],
+        '#default_value' => $this->group_info,
+        '#options' => $groups,
+      );
+      if (!empty($this->options['group_info']['multiple'])) {
+        if (count($groups) < 5) {
+          $form[$value]['#type'] = 'checkboxes';
+        }
+        else {
+          $form[$value]['#type'] = 'select';
+          $form[$value]['#size'] = 5;
+          $form[$value]['#multiple'] = TRUE;
+        }
+        unset($form[$value]['#default_value']);
+        if (empty($form_state['input'])) {
+          $form_state['input'][$value] = $this->group_info;
+        }
+      }
+
+      $this->options['expose']['label'] = '';
+    }
+  }
+
+
   /**
    * Render our chunk of the exposed filter form when selecting
    *
@@ -471,6 +791,254 @@ class views_handler_filter extends views_handler {
   }
 
   /**
+   * Build the form to let users create the group of exposed filters.
+   * This form is displayed when users click on button 'Build group'
+   */
+  function build_group_form(&$form, &$form_state) {
+    if (empty($this->options['exposed']) || empty($this->options['is_grouped'])) {
+      return;
+    }
+    $form['#theme'] = 'views_ui_build_group_filter_form';
+
+    // #flatten will move everything from $form['group_info'][$key] to $form[$key]
+    // prior to rendering. That's why the pre_render for it needs to run first,
+    // so that when the next pre_render (the one for fieldsets) runs, it gets
+    // the flattened data.
+    array_unshift($form['#pre_render'], 'views_ui_pre_render_flatten_data');
+    $form['group_info']['#flatten'] = TRUE;
+
+    if (!empty($this->options['group_info']['identifier'])) {
+      $identifier = $this->options['group_info']['identifier'];
+    }
+    else {
+      $identifier = 'group_' . $this->options['expose']['identifier'];
+    }
+    $form['group_info']['identifier'] = array(
+      '#type' => 'textfield',
+      '#default_value' => $identifier,
+      '#title' => t('Filter identifier'),
+      '#size' => 40,
+      '#description' => t('This will appear in the URL after the ? to identify this filter. Cannot be blank.'),
+      '#fieldset' => 'more',
+    );
+    $form['group_info']['label'] = array(
+      '#type' => 'textfield',
+      '#default_value' => $this->options['group_info']['label'],
+      '#title' => t('Label'),
+      '#size' => 40,
+    );
+
+    $form['group_info']['optional'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Optional'),
+      '#description' => t('This exposed filter is optional and will have added options to allow it not to be set.'),
+      '#default_value' => $this->options['group_info']['optional'],
+    );
+    $form['group_info']['multiple'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Allow multiple selections'),
+      '#description' => t('Enable to allow users to select multiple items.'),
+      '#default_value' => $this->options['group_info']['multiple'],
+    );
+    $form['group_info']['widget'] = array(
+      '#type' => 'radios',
+      '#default_value' => $this->options['group_info']['widget'],
+      '#title' => t('Widget type'),
+      '#options' => array(
+        'radios' => t('Radios'),
+        'select' => t('Select'),
+      ),
+      '#description' => t('Select which kind of widget will be used to render the group of filters'),
+    );
+    $form['group_info']['remember'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Remember'),
+      '#description' => t('Remember the last setting the user gave this filter.'),
+      '#default_value' => $this->options['group_info']['remember'],
+    );
+
+    if (!empty($this->options['group_info']['identifier'])) {
+      $identifier = $this->options['group_info']['identifier'];
+    }
+    else {
+      $identifier = 'group_' . $this->options['expose']['identifier'];
+    }
+    $form['group_info']['identifier'] = array(
+      '#type' => 'textfield',
+      '#default_value' => $identifier,
+      '#title' => t('Filter identifier'),
+      '#size' => 40,
+      '#description' => t('This will appear in the URL after the ? to identify this filter. Cannot be blank.'),
+      '#fieldset' => 'more',
+    );
+    $form['group_info']['label'] = array(
+      '#type' => 'textfield',
+      '#default_value' => $this->options['group_info']['label'],
+      '#title' => t('Label'),
+      '#size' => 40,
+    );
+    $form['group_info']['description'] = array(
+      '#type' => 'textfield',
+      '#default_value' => $this->options['group_info']['description'],
+      '#title' => t('Description'),
+      '#size' => 60,
+    );
+    $form['group_info']['optional'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Optional'),
+      '#description' => t('This exposed filter is optional and will have added options to allow it not to be set.'),
+      '#default_value' => $this->options['group_info']['optional'],
+    );
+    $form['group_info']['widget'] = array(
+      '#type' => 'radios',
+      '#default_value' => $this->options['group_info']['widget'],
+      '#title' => t('Widget type'),
+      '#options' => array(
+        'radios' => t('Radios'),
+        'select' => t('Select'),
+      ),
+      '#description' => t('Select which kind of widget will be used to render the group of filters'),
+    );
+    $form['group_info']['remember'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Remember'),
+      '#description' => t('Remember the last setting the user gave this filter.'),
+      '#default_value' => $this->options['group_info']['remember'],
+    );
+
+    $groups = array('All' => '- Any -'); // The string '- Any -' will not be rendered see @theme_views_ui_build_group_filter_form
+
+    // Provide 3 options to start when we are in a new group.
+    if (count($this->options['group_info']['group_items']) == 0) {
+      $this->options['group_info']['group_items'] = array_fill(1, 3, array());
+    }
+
+    // After the general settings, comes a table with all the existent groups.
+    $default_weight = 0;
+    foreach ($this->options['group_info']['group_items'] as $item_id => $item) {
+      if (!empty($form_state['values']['options']['group_info']['group_items'][$item_id]['remove'])) {
+        continue;
+      }
+      // Each rows contains three widgets:
+      // a) The title, where users define how they identify a pair of operator | value
+      // b) The operator
+      // c) The value (or values) to use in the filter with the selected operator
+
+      // In each row, we have to display the operator form and the value from
+      // $row acts as a fake form to render each widget in a row.
+      $row = array();
+      $groups[$item_id] = '';
+      $this->operator_form($row, $form_state);
+      // Force the operator form to be a select box. Some handlers uses
+      // radios and they occupy a lot of space in a table row.
+      $row['operator']['#type'] = 'select';
+      $row['operator']['#title'] = '';
+      $this->value_form($row, $form_state);
+
+      // Fix the dependencies to update value forms when operators
+      // changes. This is needed because forms are inside a new form and
+      // their ids changes. Dependencies are used when operator changes
+      // from to 'Between', 'Not Between', etc, and two or more widgets
+      // are displayed.
+      $without_children = TRUE;
+      foreach (element_children($row['value']) as $children) {
+        if (isset($row['value'][$children]['#dependency']['edit-options-operator'])) {
+          $row['value'][$children]['#dependency']["edit-options-group-info-group-items-$item_id-operator"] = $row['value'][$children]['#dependency']['edit-options-operator'];
+          unset($row['value'][$children]['#dependency']['edit-options-operator']);
+          $row['value'][$children]['#title'] = '';
+
+          if (!empty($this->options['group_info']['group_items'][$item_id]['value'][$children])) {
+            $row['value'][$children]['#default_value'] = $this->options['group_info']['group_items'][$item_id]['value'][$children];
+          }
+        }
+        $without_children = FALSE;
+      }
+
+      if ($without_children) {
+        if (!empty($this->options['group_info']['group_items'][$item_id]['value'])) {
+          $row['value']['#default_value'] = $this->options['group_info']['group_items'][$item_id]['value'];
+        }
+      }
+
+      if (!empty($this->options['group_info']['group_items'][$item_id]['operator'])) {
+        $row['operator']['#default_value'] = $this->options['group_info']['group_items'][$item_id]['operator'];
+      }
+
+      $default_title = '';
+      if (!empty($this->options['group_info']['group_items'][$item_id]['title'])) {
+        $default_title = $this->options['group_info']['group_items'][$item_id]['title'];
+      }
+
+      // Per item group, we have a title that identifies it.
+      $form['group_info']['group_items'][$item_id] = array(
+        'title' => array(
+          '#type' => 'textfield',
+          '#size' => 20,
+          '#default_value' => $default_title,
+        ),
+        'operator' => $row['operator'],
+        'value' => $row['value'],
+        'remove' => array(
+          '#type' => 'checkbox',
+          '#id' => 'views-removed-' . $item_id,
+          '#attributes' => array('class' => array('views-remove-checkbox')),
+          '#default_value' => 0,
+        ),
+        'weight' => array(
+          '#type' => 'weight',
+          '#delta' => 10,
+          '#default_value' => $default_weight++,
+          '#attributes' => array('class' => array('weight')),
+        ),
+      );
+    }
+    // From all groups, let chose which is the default.
+    $form['group_info']['default_group'] = array(
+      '#type' => 'radios',
+      '#options' => $groups,
+      '#default_value' => $this->options['group_info']['default_group'],
+      '#required' => TRUE,
+      '#attributes' => array(
+        'class' => array('default-radios'),
+      )
+    );
+    // From all groups, let chose which is the default.
+    $form['group_info']['default_group_multiple'] = array(
+      '#type' => 'checkboxes',
+      '#options' => $groups,
+      '#default_value' => $this->options['group_info']['default_group_multiple'],
+      '#attributes' => array(
+        'class' => array('default-checkboxes'),
+      )
+    );
+
+    $form['group_info']['add_group'] = array(
+      '#prefix' => '<div class="views-build-group clear-block">',
+      '#suffix' => '</div>',
+      '#type' => 'submit',
+      '#value' => t('Add another item'),
+      '#submit' => array('views_ui_config_item_form_add_group'),
+    );
+
+    $js = array();
+    $js['tableDrag']['views-filter-groups']['weight'][0] = array(
+      'target' => 'weight',
+      'source' => NULL,
+      'relationship' => 'sibling',
+      'action' => 'order',
+      'hidden' => TRUE,
+      'limit' => 0,
+    );
+    if (!empty($form_state['js settings']) && is_array($js)) {
+      $form_state['js settings'] = array_merge($form_state['js settings'], $js);
+    }
+    else {
+      $form_state['js settings'] = $js;
+    }
+  }
+
+
+  /**
    * Make some translations to a form item to make it more suitable to
    * exposing.
    */
@@ -496,6 +1064,11 @@ class views_handler_filter extends views_handler {
       $form['#size'] = NULL;
     }
 
+    // Cleanup in case the translated element's (radios or checkboxes) display value contains html.
+    if ($form['#type'] == 'select') {
+      $this->prepare_filter_select_options($form['#options']);
+    }
+
     if ($type == 'value' && empty($this->always_required) && empty($this->options['expose']['required']) && $form['#type'] == 'select' && empty($form['#multiple'])) {
       $any_label = variable_get('views_exposed_filter_any_label', 'new_any') == 'old_any' ? t('<Any>') : t('- Any -');
       $form['#options'] = array('All' => $any_label) + $form['#options'];
@@ -507,28 +1080,168 @@ class views_handler_filter extends views_handler {
     }
   }
 
+
+
+  /**
+   * Sanitizes the HTML select element's options.
+   *
+   * The function is recursive to support optgroups.
+   */
+  function prepare_filter_select_options(&$options) {
+    foreach ($options as $value => $label) {
+      // Recurse for optgroups.
+      if (is_array($label)) {
+        $this->prepare_filter_select_options($options[$value]);
+      }
+      // FAPI has some special value to allow hierarchy.
+      // @see _form_options_flatten
+      elseif (is_object($label)) {
+        $this->prepare_filter_select_options($options[$value]->option);
+      }
+      else {
+        $options[$value] = strip_tags(decode_entities($label));
+      }
+    }
+  }
+
   /**
    * Tell the renderer about our exposed form. This only needs to be
    * overridden for particularly complex forms. And maybe not even then.
    *
    * @return array|null
-   *   An array with the following keys:
+   *   For standard exposed filters. An array with the following keys:
    *   - operator: The $form key of the operator. Set to NULL if no operator.
    *   - value: The $form key of the value. Set to NULL if no value.
    *   - label: The label to use for this piece.
+   *   For grouped exposed filters. An array with the following keys:
+   *   - value: The $form key of the value. Set to NULL if no value.
+   *   - label: The label to use for this piece.
    */
   function exposed_info() {
     if (empty($this->options['exposed'])) {
       return;
     }
 
+    if ($this->is_a_group()) {
+      return array(
+        'value' => $this->options['group_info']['identifier'],
+        'label' => $this->options['group_info']['label'],
+        'description' => $this->options['group_info']['description'],
+      );
+    }
+
     return array(
       'operator' => $this->options['expose']['operator_id'],
       'value' => $this->options['expose']['identifier'],
       'label' => $this->options['expose']['label'],
+      'description' => $this->options['expose']['description'],
     );
   }
 
+  /*
+   * Transform the input from a grouped filter into a standard filter.
+   *
+   * When a filter is a group, find the set of operator and values
+   * that the choosed item represents, and inform views that a normal
+   * filter was submitted by telling the operator and the value selected.
+   *
+   * The param $selected_group_id is only passed when the filter uses the
+   * checkboxes widget, and this function will be called for each item
+   * choosed in the checkboxes.
+   */
+  function convert_exposed_input(&$input, $selected_group_id = NULL) {
+    if ($this->is_a_group()) {
+      // If it is already defined the selected group, use it. Only valid
+      // when the filter uses checkboxes for widget.
+      if (!empty($selected_group_id)) {
+        $selected_group = $selected_group_id;
+      }
+      else {
+        $selected_group = $input[$this->options['group_info']['identifier']];
+      }
+      if ($selected_group == 'All' && !empty($this->options['group_info']['optional'])) {
+        return NULL;
+      }
+      if ($selected_group != 'All' && empty($this->options['group_info']['group_items'][$selected_group])) {
+        return FALSE;
+      }
+      if (isset($selected_group) && isset($this->options['group_info']['group_items'][$selected_group])) {
+        $input[$this->options['expose']['operator']] = $this->options['group_info']['group_items'][$selected_group]['operator'];
+
+        // Value can be optional, For example for 'empty' and 'not empty' filters.
+        if (!empty($this->options['group_info']['group_items'][$selected_group]['value'])) {
+          $input[$this->options['expose']['identifier']] = $this->options['group_info']['group_items'][$selected_group]['value'];
+        }
+        $this->options['expose']['use_operator'] = TRUE;
+
+        $this->group_info = $input[$this->options['group_info']['identifier']];
+        return TRUE;
+      }
+      else {
+        return FALSE;
+      }
+    }
+  }
+
+  /**
+   * Returns the options available for a grouped filter that users checkboxes
+   * as widget, and therefore has to be applied several times, one per
+   * item selected.
+   */
+  function group_multiple_exposed_input(&$input) {
+    if (!empty($input[$this->options['group_info']['identifier']])) {
+      return array_filter($input[$this->options['group_info']['identifier']]);
+    }
+    return array();
+  }
+
+  /**
+   * Returns TRUE if users can select multiple groups items of a
+   * grouped exposed filter.
+   */
+  function multiple_exposed_input() {
+    return $this->is_a_group() && !empty($this->options['group_info']['multiple']);
+  }
+
+  /**
+   * If set to remember exposed input in the session, store it there.
+   * This function is similar to store_exposed_input but modified to
+   * work properly when the filter is a group.
+   */
+  function store_group_input($input, $status) {
+    if (!$this->is_a_group() || empty($this->options['group_info']['identifier'])) {
+      return TRUE;
+    }
+
+    if (empty($this->options['group_info']['remember'])) {
+      return;
+    }
+
+    // Figure out which display id is responsible for the filters, so we
+    // know where to look for session stored values.
+    $display_id = ($this->view->display_handler->is_defaulted('filters')) ? 'default' : $this->view->current_display;
+
+    // false means that we got a setting that means to recuse ourselves,
+    // so we should erase whatever happened to be there.
+    if ($status === FALSE && isset($_SESSION['views'][$this->view->name][$display_id])) {
+      $session = &$_SESSION['views'][$this->view->name][$display_id];
+
+      if (isset($session[$this->options['group_info']['identifier']])) {
+        unset($session[$this->options['group_info']['identifier']]);
+      }
+    }
+
+    if ($status !== FALSE) {
+      if (!isset($_SESSION['views'][$this->view->name][$display_id])) {
+        $_SESSION['views'][$this->view->name][$display_id] = array();
+      }
+
+      $session = &$_SESSION['views'][$this->view->name][$display_id];
+
+      $session[$this->options['group_info']['identifier']] = $input[$this->options['group_info']['identifier']];
+    }
+  }
+
   /**
    * Check to see if input from the exposed filters should change
    * the behavior of this filter.
@@ -587,6 +1300,14 @@ class views_handler_filter extends views_handler {
       return;
     }
 
+    // Check if we store exposed value for current user.
+    global $user;
+    $allowed_rids = empty($this->options['expose']['remember_roles']) ? array() : array_filter($this->options['expose']['remember_roles']);
+    $intersect_rids = array_intersect_key($allowed_rids, $user->roles);
+    if (empty($intersect_rids)) {
+      return;
+    }
+
     // Figure out which display id is responsible for the filters, so we
     // know where to look for session stored values.
     $display_id = ($this->view->display_handler->is_defaulted('filters')) ? 'default' : $this->view->current_display;
@@ -674,6 +1395,15 @@ class views_handler_filter_broken extends views_handler_filter {
   function broken() { return TRUE; }
 }
 
+/**
+ * Filter by no empty values, though allow to use "0".
+ * @param $var
+ * @return bool
+ */
+function _views_array_filter_zero($var) {
+  return trim($var) != "";
+}
+
 
 /**
  * @}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc
index f795b9f..56365e1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_boolean_operator.
+ */
+
 /**
  * Simple filter to handle matching of boolean values
  *
@@ -123,6 +129,9 @@ class views_handler_filter_boolean_operator extends views_handler_filter {
   }
 
   function admin_summary() {
+    if ($this->is_a_group()) {
+      return t('grouped');
+    }
     if (!empty($this->options['exposed'])) {
       return t('exposed');
     }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator_string.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator_string.inc
index b27cae4..b49dde9 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator_string.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_boolean_operator_string.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_boolean_operator_string.
+ */
+
 /**
  * Simple filter to handle matching of boolean values.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_combine.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_combine.inc
new file mode 100644
index 0000000..c9def53
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_combine.inc
@@ -0,0 +1,137 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_combine.
+ */
+
+/**
+ * Filter handler which allows to search on multiple fields.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_filter_combine extends views_handler_filter_string {
+  /**
+   * @var views_plugin_query_default
+   */
+  var $query;
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['fields'] = array('default' => array());
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $this->view->init_style();
+
+    // Allow to choose all fields as possible
+    if ($this->view->style_plugin->uses_fields()) {
+      $options = array();
+      foreach ($this->view->display_handler->get_handlers('field') as $name => $field) {
+        $options[$name] = $field->ui_name(TRUE);
+      }
+      if ($options) {
+        $form['fields'] = array(
+          '#type' => 'select',
+          '#title' => t('Choose fields to combine for filtering'),
+          '#description' => t("This filter doesn't work for very special field handlers."),
+          '#multiple' => TRUE,
+          '#options' => $options,
+          '#default_value' => $this->options['fields'],
+        );
+      }
+      else {
+        form_set_error('', t('You have to add some fields to be able to use this filter.'));
+      }
+    }
+  }
+
+  function query() {
+    $this->view->_build('field');
+    $fields = array();
+    // Only add the fields if they have a proper field and table alias.
+    foreach ($this->options['fields'] as $id) {
+      $field = $this->view->field[$id];
+      // Always add the table of the selected fields to be sure a table alias exists.
+      $field->ensure_my_table();
+      if (!empty($field->field_alias) && !empty($field->field_alias)) {
+        $fields[] = "$field->table_alias.$field->real_field";
+      }
+    }
+    if ($fields) {
+      $count = count($fields);
+      $seperated_fields = array();
+      foreach ($fields as $key => $field) {
+        $seperated_fields[] = $field;
+        if ($key < $count-1) {
+          $seperated_fields[] = "' '";
+        }
+      }
+      $expression = implode(', ', $seperated_fields);
+      $expression = "CONCAT_WS(' ', $expression)";
+
+      $info = $this->operators();
+      if (!empty($info[$this->operator]['method'])) {
+        $this->{$info[$this->operator]['method']}($expression);
+      }
+    }
+  }
+
+  // By default things like op_equal uses add_where, that doesn't support
+  // complex expressions, so override all operators.
+
+  function op_equal($field) {
+    $placeholder = $this->placeholder();
+    $operator = $this->operator();
+    $this->query->add_where_expression($this->options['group'], "$field $operator $placeholder", array($placeholder => $this->value));
+  }
+
+  function op_contains($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field LIKE $placeholder", array($placeholder => '%' . db_like($this->value) . '%'));
+  }
+
+  function op_starts($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field LIKE $placeholder", array($placeholder => db_like($this->value) . '%'));
+  }
+
+  function op_not_starts($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field NOT LIKE $placeholder", array($placeholder => db_like($this->value) . '%'));
+  }
+
+  function op_ends($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field LIKE $placeholder", array($placeholder => '%' . db_like($this->value)));
+  }
+
+  function op_not_ends($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field NOT LIKE $placeholder", array($placeholder => '%' . db_like($this->value)));
+  }
+
+  function op_not($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field NOT LIKE $placeholder", array($placeholder => '%' . db_like($this->value) . '%'));
+  }
+
+  function op_regex($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field RLIKE $placeholder", array($placeholder => $this->value));
+  }
+
+  function op_empty($field) {
+    if ($this->operator == 'empty') {
+      $operator = "IS NULL";
+    }
+    else {
+      $operator = "IS NOT NULL";
+    }
+
+    $this->query->add_where_expression($this->options['group'], "$field $operator");
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_date.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_date.inc
index b89d003..4ef61b4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_date.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_date.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_date.
+ */
+
+/**
  * Filter to handle dates stored as a timestamp.
  *
  * @ingroup views_filter_handlers
@@ -90,6 +95,34 @@ class views_handler_filter_date extends views_handler_filter_numeric {
     }
   }
 
+  /**
+   * Validate the build group options form.
+   */
+  function build_group_validate($form, &$form_state) {
+    // Special case to validate grouped date filters, this is because the
+    // $group['value'] array contains the type of filter (date or offset)
+    // and therefore the number of items the comparission has to be done
+    // against 'one' instead of 'zero'.
+    foreach ($form_state['values']['options']['group_info']['group_items'] as $id => $group) {
+      if (empty($group['remove'])) {
+        // Check if the title is defined but value wasn't defined.
+        if (!empty($group['title'])) {
+          if ((!is_array($group['value']) && empty($group['value'])) || (is_array($group['value']) && count(array_filter($group['value'])) == 1)) {
+            form_error($form['group_info']['group_items'][$id]['value'], t('The value is required if title for this item is defined.'));
+          }
+        }
+
+        // Check if the value is defined but title wasn't defined.
+        if ((!is_array($group['value']) && !empty($group['value'])) || (is_array($group['value']) && count(array_filter($group['value'])) > 1)) {
+          if (empty($group['title'])) {
+            form_error($form['group_info']['group_items'][$id]['title'], t('The title is required if value for this item is defined.'));
+          }
+        }
+      }
+    }
+  }
+
+
   function accept_exposed_input($input) {
     if (empty($this->options['exposed'])) {
       return TRUE;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_entity_bundle.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_entity_bundle.inc
new file mode 100644
index 0000000..c46cd0b
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_entity_bundle.inc
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_entity_bundle
+ */
+
+/**
+ * Filter class which allows to filter by certain bundles of an entity.
+ *
+ * This class provides workarounds for taxonomy and comment.
+ *
+ * @ingroup views_filter_handlers
+ */
+class views_handler_filter_entity_bundle extends views_handler_filter_in_operator {
+  /**
+   * Stores the entity type on which the filter filters.
+   *
+   * @var string
+   */
+  public $entity_type;
+
+  function init(&$view, &$options) {
+    parent::init($view, $options);
+
+    $this->get_entity_type();
+  }
+
+  /**
+   * Set and returns the entity_type.
+   *
+   * @return string
+   *   The entity type on the filter.
+   */
+  function get_entity_type() {
+    if (!isset($this->entity_type)) {
+      $data = views_fetch_data($this->table);
+      if (isset($data['table']['entity type'])) {
+        $this->entity_type = $data['table']['entity type'];
+      }
+
+      // If the current filter is under a relationship you can't be sure that the
+      // entity type of the view is the entity type of the current filter
+      // For example a filter from a node author on a node view does have users as entity type.
+      if (!empty($this->options['relationship']) && $this->options['relationship'] != 'none') {
+        $relationships = $this->view->display_handler->get_option('relationships');
+        if (!empty($relationships[$this->options['relationship']])) {
+          $options = $relationships[$this->options['relationship']];
+          $data = views_fetch_data($options['table']);
+          $this->entity_type = $data['table']['entity type'];
+        }
+      }
+    }
+
+    return $this->entity_type;
+  }
+
+
+  function get_value_options() {
+    if (!isset($this->value_options)) {
+      $info = entity_get_info($this->entity_type);
+      $types = $info['bundles'];
+      $this->value_title = t('@entity types', array('@entity' => $info['label']));
+
+      $options = array();
+      foreach ($types as $type => $info) {
+        $options[$type] = t($info['label']);
+      }
+      asort($options);
+      $this->value_options = $options;
+    }
+  }
+
+  /**
+   * All entity types beside comment and taxonomy terms have a proper implement
+   * bundle, though these two need an additional join to node/vocab table
+   * to work as required.
+   */
+  function query() {
+    $this->ensure_my_table();
+
+    // Adjust the join for the comment case.
+    if ($this->entity_type == 'comment') {
+      $join = new views_join();
+      $def = array(
+        'table' => 'node',
+        'field' => 'nid',
+        'left_table' => $this->table_alias,
+        'left_field' => 'nid',
+      );
+      $join->definition = $def;
+      $join->construct();
+      $join->adjusted = TRUE;
+      $this->table_alias = $this->query->add_table('node', $this->relationship, $join);
+      $this->real_field = 'type';
+
+      // Replace the value to match the node type column.
+      foreach ($this->value as &$value) {
+        $value = str_replace('comment_node_', '', $value);
+      }
+    }
+    elseif ($this->entity_type == 'taxonomy_term') {
+      $join = new views_join();
+      $def = array(
+        'table' => 'taxonomy_vocabulary',
+        'field' => 'vid',
+        'left_table' => $this->table_alias,
+        'left_field' => 'vid',
+      );
+      $join->definition = $def;
+      $join->construct();
+      $join->adjusted = TRUE;
+      $this->table_alias = $this->query->add_table('taxonomy_vocabulary', $this->relationship, $join);
+      $this->real_field = 'machine_name';
+    }
+    else {
+      $entity_info = entity_get_info($this->entity_type);
+      $this->real_field = $entity_info['bundle keys']['bundle'];
+    }
+    parent::query();
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_equality.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_equality.inc
index dfe2445..e045c7e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_equality.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_equality.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_equality.
+ */
+
 /**
  * Simple filter to handle equal to / not equal to filters
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc
index 2332d39..2b265be 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_group_by_numeric.
+ */
+
+/**
  * Simple filter to handle greater than/less than filters
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc
index 8054542..fc2700b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_in_operator.
+ */
+
 /**
  * Simple filter to handle matching of multiple options selectable via checkboxes
  *
@@ -74,7 +80,7 @@ class views_handler_filter_in_operator extends views_handler_filter {
 
     $options['operator']['default'] = 'in';
     $options['value']['default'] = array();
-    $options['expose']['contains']['reduce'] = array('default' => FALSE);
+    $options['expose']['contains']['reduce'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -284,6 +290,9 @@ class views_handler_filter_in_operator extends views_handler_filter {
   }
 
   function admin_summary() {
+    if ($this->is_a_group()) {
+      return t('grouped');
+    }
     if (!empty($this->options['exposed'])) {
       return t('exposed');
     }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc
index c6d6d20..f384796 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_many_to_one.
+ */
+
+/**
  * Complex filter to handle filtering for many to one relationships,
  * such as terms (many terms per node) or roles (many roles per user).
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_numeric.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_numeric.inc
index 71d8b9e..982abd8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_numeric.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_numeric.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_numeric.
+ */
+
+/**
  * Simple filter to handle greater than/less than filters
  *
  * @ingroup views_filter_handlers
@@ -257,6 +262,9 @@ class views_handler_filter_numeric extends views_handler_filter {
   }
 
   function admin_summary() {
+    if ($this->is_a_group()) {
+      return t('grouped');
+    }
     if (!empty($this->options['exposed'])) {
       return t('exposed');
     }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_string.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_string.inc
index eec7a07..c50eff4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_string.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_filter_string.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_string.
+ */
+
+/**
  * Basic textfield filter to handle string filtering commands
  * including equality, like, not like, etc.
  *
@@ -13,7 +18,7 @@ class views_handler_filter_string extends views_handler_filter {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['expose']['contains']['required'] = array('default' => FALSE);
+    $options['expose']['contains']['required'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -143,6 +148,9 @@ class views_handler_filter_string extends views_handler_filter {
   }
 
   function admin_summary() {
+    if ($this->is_a_group()) {
+      return t('grouped');
+    }
     if (!empty($this->options['exposed'])) {
       return t('exposed');
     }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship.inc
index 18f21f8..695082b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship.inc
@@ -1,11 +1,12 @@
 <?php
+
 /**
  * @file
  * Views' relationship handlers.
  */
 
 /**
- * @defgroup views_relationship_handlers Views' relationship handlers
+ * @defgroup views_relationship_handlers Views relationship handlers
  * @{
  * Handlers to tell Views how to create alternate relationships.
  */
@@ -31,6 +32,8 @@
  * - label: The default label to provide for this relationship, which is
  *   shown in parentheses next to any field/sort/filter/argument that uses
  *   the relationship.
+ *
+ * @ingroup views_relationship_handlers
  */
 class views_handler_relationship extends views_handler {
   /**
@@ -72,7 +75,7 @@ class views_handler_relationship extends views_handler {
     }
 
     $options['label'] = array('default' => $label, 'translatable' => TRUE);
-    $options['required'] = array('default' => FALSE);
+    $options['required'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc
index b027357..23198c6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc
@@ -1,6 +1,6 @@
 <?php
-// $Id$
-/*
+
+/**
  * @file
  * Relationship for groupwise maximum handler.
  */
@@ -64,7 +64,7 @@ class views_handler_relationship_groupwise_max extends views_handler_relationshi
     $options['subquery_sort'] = array('default' => NULL);
     // Descending more useful.
     $options['subquery_order'] = array('default' => 'DESC');
-    $options['subquery_regenerate'] = array('default' => FALSE);
+    $options['subquery_regenerate'] = array('default' => FALSE, 'bool' => TRUE);
     $options['subquery_view'] = array('default' => FALSE);
     $options['subquery_namespace'] = array('default' => FALSE);
 
@@ -148,21 +148,6 @@ class views_handler_relationship_groupwise_max extends views_handler_relationshi
   }
 
   /**
-   * Perform any necessary changes to the form values prior to storage.
-   * There is no need for this function to actually store the data.
-   *
-   * Generate the subquery string when the user submits the options, and store
-   * it. This saves the expense of generating it when the view is run.
-   */
-  function options_submit(&$form, &$form_state) {
-    // Get the new user options from the form values.
-    $new_options = $form_state['values']['options'];
-    $subquery = $this->left_query($new_options);
-    // Add the subquery string to the options we're about to store.
-    $this->options['subquery_string'] = $subquery;
-  }
-
-  /**
    * Helper function to create a pseudo view.
    *
    * We use this to obtain our subquery SQL.
@@ -177,6 +162,14 @@ class views_handler_relationship_groupwise_max extends views_handler_relationshi
   }
 
   /**
+   * When the form is submitted, take sure to clear the subquery string cache.
+   */
+  function options_form_submit(&$form, &$form_state) {
+    $cid = 'views_relationship_groupwise_max:' . $this->view->name . ':' . $this->view->current_display . ':' . $this->options['id'];
+    cache_clear_all($cid, 'cache_views_data');
+  }
+
+  /**
    * Generate a subquery given the user options, as set in the options.
    * These are passed in rather than picked up from the object because we
    * generate the subquery when the options are saved, rather than when the view
@@ -359,7 +352,15 @@ class views_handler_relationship_groupwise_max extends views_handler_relationshi
     }
     else {
       // Get the stored subquery SQL string.
-      $def['left_query'] = $this->options['subquery_string'];
+      $cid = 'views_relationship_groupwise_max:' . $this->view->name . ':' . $this->view->current_display . ':' . $this->options['id'];
+      $cache = cache_get($cid, 'cache_views_data');
+      if (isset($cache->data)) {
+        $def['left_query'] = $cache->data;
+      }
+      else {
+        $def['left_query'] = $this->left_query($this->options);
+        cache_set($cid, $def['left_query'], 'cache_views_data');
+      }
     }
 
     if (!empty($def['join_handler']) && class_exists($def['join_handler'])) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort.inc
index 3587290..99574e4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort.inc
@@ -1,12 +1,20 @@
 <?php
+
+/**
+ * @file
+ * @todo.
+ */
+
 /**
- * @defgroup views_sort_handlers Views' sort handlers
+ * @defgroup views_sort_handlers Views sort handlers
  * @{
- * Handlers to tell Views how to sort queries
+ * Handlers to tell Views how to sort queries.
  */
 
 /**
- * Base sort handler that has no options and performs a simple sort
+ * Base sort handler that has no options and performs a simple sort.
+ *
+ * @ingroup views_sort_handlers
  */
 class views_handler_sort extends views_handler {
 
@@ -28,7 +36,7 @@ class views_handler_sort extends views_handler {
     $options = parent::option_definition();
 
     $options['order'] = array('default' => 'ASC');
-    $options['exposed'] = array('default' => FALSE);
+    $options['exposed'] = array('default' => FALSE, 'bool' => TRUE);
     $options['expose'] = array(
       'contains' => array(
         'label' => array('default' => '', 'translatable' => TRUE),
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_date.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_date.inc
index 8101482..b37cc41 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_date.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_date.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_sort_date.
+ */
+
+/**
  * Basic sort handler for dates.
  *
  * This handler enables granularity, which is the ability to make dates
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_group_by_numeric.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_group_by_numeric.inc
index 1d1be41..4a521c1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_group_by_numeric.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_group_by_numeric.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_sort_group_by_numeric.
+ */
+
 /**
  * Handler for GROUP BY on simple numeric fields.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_menu_hierarchy.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_menu_hierarchy.inc
index 294b3c4..dacb1fe 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_menu_hierarchy.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_menu_hierarchy.inc
@@ -1,18 +1,53 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_sort_menu_hierarchy.
+ */
+
+/**
  * Sort in menu hierarchy order.
  *
- * Given a field name of 'p' this produces an ORDER BY on p1, p2, ..., p9.
+ * Given a field name of 'p' this produces an ORDER BY on p1, p2, ..., p9;
+ * and optionally injects multiple joins to {menu_links} to sort by weight
+ * and title as well.
+ *
  * This is only really useful for the {menu_links} table.
  *
  * @ingroup views_sort_handlers
  */
 class views_handler_sort_menu_hierarchy extends views_handler_sort {
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['sort_within_level'] = array('default' => FALSE);
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $form['sort_within_level'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Sort within each hierarchy level'),
+      '#description' => t('Enable this to sort the items within each level of the hierarchy by weight and title.  Warning: this may produce a slow query.'),
+      '#default_value' => $this->options['sort_within_level'],
+    );
+  }
+
   function query() {
     $this->ensure_my_table();
     $max_depth = isset($this->definition['max depth']) ? $this->definition['max depth'] : MENU_MAX_DEPTH;
     for ($i = 1; $i <= $max_depth; ++$i) {
+      if ($this->options['sort_within_level']) {
+        $join = new views_join();
+        $join->construct('menu_links', $this->table_alias, $this->field . $i, 'mlid');
+        $menu_links = $this->query->add_table('menu_links', NULL, $join);
+        $this->query->add_orderby($menu_links, 'weight', $this->options['order']);
+        $this->query->add_orderby($menu_links, 'link_title', $this->options['order']);
+      }
+
+      // We need this even when also sorting by weight and title, to make sure
+      // that children of two parents with the same weight and title are
+      // correctly separated.
       $this->query->add_orderby($this->table_alias, $this->field . $i, $this->options['order']);
     }
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_random.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_random.inc
index 75f3153..eaaaf79 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_random.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/handlers/views_handler_sort_random.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_sort_random.
+ */
+
+/**
  * Handle a random sort.
  *
  * @ingroup views_sort_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/about.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/about.html
index fd0a576..8ba77f8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/about.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/about.html
@@ -1,6 +1,6 @@
-The views module allows administrators and site designers to create, manage, and display lists of content. Each list managed by the views module is known as a "view", and the output of a view is known as a "display". Displays are provided in either block or page form, and a single view may have multiple displays. Optional navigation aids, including a system path and menu item, can be set for each page-based display of a view. By default, views may be created that list content (a <em>Node</em> view type), content revisions (a <em>Node revisions</em> view type) or users (a <em>User</em> view type). A view may be restricted to members of specific user roles, and may be added, edited or deleted at the <a href="base_url:admin/structure/views">views administration page</a>. 
+The views module allows administrators and site designers to create, manage, and display lists of content. Each list managed by the views module is known as a "view", and the output of a view is known as a "display". Displays are provided in either block or page form, and a single view may have multiple displays. Optional navigation aids, including a system path and menu item, can be set for each page-based display of a view. By default, views may be created that list content (a <em>Node</em> view type), content revisions (a <em>Node revisions</em> view type) or users (a <em>User</em> view type). A view may be restricted to members of specific user roles, and may be added, edited or deleted at the <a href="base_url:admin/structure/views">views administration page</a>.
 
-For more technical users and in terms views can be understood simple as a user interface to compose SQL-queries and to pull information (Content, Users, etc.) from the database and show it on a screen as desired.   
+For more technical users, views can be understood as a user interface to compose SQL-queries and to pull information (Content, Users, etc.) from the database and show it on a screen as desired.
 
 The "building block" design of the views system provides power and flexibility, allowing parameters to be specified only when needed. While an advanced view may use all of available parameters to create complex and highly interactive applications, a simple content listing may specify only a few options. All views rely on a conceptual framework that includes:
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-settings.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-settings.html
index 23d05d4..6a16859 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-settings.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-settings.html
@@ -1,8 +1,43 @@
+In the category <strong>Other</strong> you have different options to set Advanced configurations in your View.
+
+<strong>Machine Name:</strong>
+You can change the default machine name of the view.
+
+<strong>Comment: No comment</strong>
+You can Use the comment option to write comments for your Views, the comments are only shown in the Views UI. Comment your Display for other Maintainer
+
 <strong>Use AJAX: No</strong>
-If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This prevents the entire page from refreshing. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content.
-<strong>Distinct: No</strong>
-This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution.
-<strong>Use grouping: No</strong>
+If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This prevents the entire page from refreshing. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content. Block displays require this setting to be ON if exposed filters are being used.
+
+<strong>Hide attachments in summary: No</strong>
+
+<strong>Use aggregation: No</strong>
 All fields that are selected for grouping will be collapsed to one record per distinct value. Other fields which are selected for aggregation will have the function run on them. For example, you can group nodes on title and count the number of nids in order to get a list of duplicate titles.
+For more Information how aggregation work see the "Use Aggregation" Help Page
+
+<strong>Query settings: Settings</strong>
+
+Here can you set advanced Settings for the SQL Settings
+<ul>
+  <li><strong>Disable SQL rewriting</strong></li>
+
+  <li><strong>Distinct: No</strong></li>
+  This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution.
+
+  <li><strong>Use Slave Server</strong></li>
+
+  <li><strong>Query Comment</strong></li>
+</ul>
+<strong>Field Language: Current user's language</strong>
+
 <strong>Caching: None</strong>
 You can choose a "Time-based" Caching if you want. With it you get the option to choose the length of time raw query results should be cached and "The length of time rendered HTML output should be cached."
+
+<strong>Link display: Page</strong>
+
+<strong>CSS class: None</strong>
+You can define some own CSS Classes for your View
+
+<strong>Theme: Information</strong>
+Clicking on the "Theme: Information" link provides you with a listing of all posiible theming files. The highlighted files are the ones Views is currently using. All other filenames are suggested templates.
+For more Information see the <a href="/help/views/analyze-theme" title="Theme Information" >"Theme information"</a> Page
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-style-settings.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-style-settings.html
new file mode 100644
index 0000000..9c90c0f
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/advanced-style-settings.html
@@ -0,0 +1,30 @@
+In Views 3 you can set Advanced Style Settings, they help you to insert markup of your own from the Views UI, so that you can fairly easily override the default markup without having to restyle via templates.
+
+
+<ul>
+<li> Customize field HTML</li>
+With Customize field HTML you can generate html tags around the field.
+
+<li>Customize label HTML</li>
+Here you can generate html tags around the label of a field.
+
+<li>Customize field and label wrapper HTML</li>
+Here you can generate html tags around the wrapper of the label and field
+</ul>
+
+<a href="path:images/views3-semanticviews.png"><img src="path:images/views3-semanticviews.png" /></a>
+
+Usage example
+
+In a view with a field:
+<ol>
+<li>Configure the field. (Click on the field.)</li>
+
+<li>In the modal that opens, scroll down to <strong>Style Settings</strong>.</li>
+
+<li>Choose one or more of the three <i>Customize</i> options. This will reveal a dropdown menu where you can choose from one or more HTML tags to use on that field and allow you to add a CSS class specific to that field should you desire.</li>
+
+<li>Decide if you want to keep the Views default classes. Unchecking this box means your markup is *it*.</li>
+</ol>
+
+In Views 2 you needed for Style Settings the <a href="http://drupal.org/project/semanticviews">Semantic Views</a> Modul, now the Semantic Views module has been mostly incorporated into Views 3.x. Semantic Views is still around for people who need it, though. For some details on how the original module is different from the Views implementation, please see <a href="http://drupal.org/node/1013876">this issue</a>.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-forms.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-forms.html
index f7f4ff6..2772909 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-forms.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-forms.html
@@ -76,8 +76,6 @@ Then, views_form would call form_example_confirmation($form, $form_state, $view,
 <ul>
 <li>template_preprocess_views_view()</li>
 <li>views_form()</li>
-<li>views_form_validate()</li>
-<li>views_form_submit()</li>
 <li>views_form_views_form()</li>
 <li>views_form_views_form_validate()</li>
 <li>views_form_views_form_submit()</li>
@@ -87,6 +85,4 @@ Then, views_form would call form_example_confirmation($form, $form_state, $view,
 <h2>Hooks</h2>
 <ul>
 <li>hook_views_form_substitutions()</li>
-<li>hook_views_form_validate($form, &$form_state)</li>
-<li>hook_views_form_submit($form, &$form_state)</li>
 </ul>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-handlers.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-handlers.html
deleted file mode 100644
index 9eca851..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-handlers.html
+++ /dev/null
@@ -1,71 +0,0 @@
-In Views, a handler is an object that is part of the view and is part of the query building flow.
-
-Handlers are objects; much of the time, the base handlers will work, but often you'll need to override the handler for something. One typical handler override will be views_handler_filter_operator_in which allows you to have a filter select from a list of options; you'll need to override this to provide your list.
-
-Handlers have two distint code flows; the UI flow and the view building flow.
-
-For the query flow:
-
-<dl>
-<dt>handler->construct()</dt>
-<dd>Create the initial handler; at this time it is not yet attached to a view. It is here that you can set basic defaults if needed, but there will be no knowledge of the environment yet.</dd>
-<dt>handler->set_definition()</dt>
-<dd>Set the data from hook_views_data() relevant to the handler.</dd>
-<dt>handler->init()</dt>
-<dd>Attach the handler to a view, and usually provides the options from the display.</dd>
-<dt>handler->pre_query()</dt>
-<dd>Run prior to the query() stage to do early processing.</dd>
-<dt>handler->query()</dt>
-<dd>Do the bulk of the work this handler needs to do to add itself to the query.</dd>
-</dl>
-
-Fields, being the only handlers concerned with output, also have an extended piece of the flow:
-<dl>
-<dt>handler->pre_render(&$values)</dt>
-<dd>Called prior to the actual rendering, this allows handlers to query for extra data; the entire resultset is available here, and this is where items that have "multiple values" per record can do their extra query for all of the records available. There are several examples of this at work in the code.</dd>
-<dt>handler->render()</dt>
-<dd>This does the actual work of rendering the field.</dd>
-</dl>
-
-Most handlers are just extensions of existing classes with a few tweaks that are specific to the field in question. For example:
-
-<pre>
-/**
- * Filter by node type
- *
- * @ingroup views_filter_handlers
- */
-class views_handler_filter_node_type extends views_handler_filter_in_operator {
-  function get_value_options() {
-    if (!isset($this->value_options)) {
-      $this->value_title = t('Node type');
-      $types = node_get_types();
-      foreach ($types as $type => $info) {
-        $options[$type] = $info->name;
-      }
-      $this->value_options = $options;
-    }
-  }
-}
-</pre>
-
-<i>views_handler_filter_in_operator</i> provides a simple mechanism to set the list used and the rest of the handler is perfectly fine for this.
-
-Handlers are stored in their own files and loaded on demand.
-Like all other module files, they must first be registered through the module's info file. For example:
-<pre>
-name = Example module
-description = "Gives an example of a module."
-core = 7.x
-files[] = example.module
-files[] = example.install
-
-; Views handlers
-files[] = includes/views/handlers/example_handler_argument_string.inc
-</pre>
-
-The best place to learn more about handlers and how they work is to explore <a href="http://views.doc.logrus.com">the views API site</a> and use existing handlers as a guide and a model. Understanding how views_handler and its child classes work is handy but you can do a lot just following these models. You can also explore the views module directory, particularly node.views.inc.
-
-Please note that while all handler names in views are prefixed with views_, you should use your own module's name to prefix your handler names in order to ensure namespace safety. Note that the basic pattern for handler naming goes like this:
-
-[module]_handler_[type]_[tablename]_[fieldname]. Sometimes table and fieldname are not appropriate, but something that resembles what the table/field would be can be used.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-plugins.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-plugins.html
deleted file mode 100644
index 4d1c120..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-plugins.html
+++ /dev/null
@@ -1,114 +0,0 @@
-In Views, a plugin is a bit like a handler, but plugins are not directly responsible for building the query. Instead, they are objects that are used to display the view or make other modifications.
-
-There are 10 types of plugins in Views:
-<dl>
-<dt>Display</dt>
-<dd>Display plugins are responsible for controlling <strong>where</strong> a view lives. Page and block are the most common displays, as well as the ubiquitous 'default' display which is likely what will be embedded.</dd>
-<dt>Style</dt>
-<dd>Style plugins control how a view is displayed. For the most part they are object wrappers around theme templates.
-<dt>Row style</dt>
-<dd>Row styles handle each individual record from a node.</dd>
-<dt>Argument default</dt>
-<dd>Argument default plugins allow pluggable ways of providing arguments for blocks. Views includes plugins to extract node and user IDs from the URL; additional plugins could be used for a wide variety of tasks.</dd>
-<dt>Argument validator</dt>
-<dd>Validator plugins can ensure arguments are valid, and even do transformations on the arguments.</dd>
-<dt>Access</dt>
-<dd>Access plugins are responsible for controlling access to the view.</dd>
-<dt>Query</dt>
-<dd>Query plugins generate and execute a query, it can be seen as a data backend. The default implementation
-is using sql.</dd>
-<dt>Cache</dt>
-<dd>Cache plugins control the storage and loading of caches. Currently they can do both result and render caching,
-but maybe one day cache the generated query</dd>
-<dt>Pager plugins</dt>
-<dd>Pager plugins take care of everything regarding pagers. From getting and setting the total amount of items
-to render the pager and setting the global pager arrays.</dd>
-<dt>Exposed form plugins</dt>
-<dd>Exposed form plugins are responsible for building, rendering and controlling exposed forms. They can expose new
-parts of the view to the user and more.</dd>
-<dt>Localization plugins</dt>
-<dd>Localization plugins take care how the view options are translated. There are example implementations
-for t(), none translation and i18n.</dd>
-</dl>
-
-Plugins are registered by implementing <strong>hook_views_plugins()</strong> in your modulename.views.inc file and returning an array of data.
-For examples please look at views_views_plugins() in views/includes/plugins.inc as it has examples
-for all of them.
-
-For example plugins please look at the one provided by views, too.
-
-Similar to handlers take sure that you added the plugin file to the module.info.
-
-The array will look something like this:
-<pre>
-  return array(
-    'display' => array(
-      // ... list of display plugins,
-     ),
-    'style' => array(
-      // ... list of style plugins,
-     ),
-    'row' => array(
-      // ... list of row style plugins,
-     ),
-    'argument default' => array(
-      // ... list of argument default plugins,
-     ),
-    'argument validator' => array(
-      // ... list of argument validator plugins,
-     ),
-     'access' => array(
-      // ... list of access plugins,
-     ),
-     'query' => array(
-       // ... list of query plugins,
-      ),,
-     'cache' => array(
-       // ... list of cache plugins,
-      ),,
-     'pager' => array(
-       // ... list of pager plugins,
-      ),,
-     'exposed_form' => array(
-       // ... list of exposed_form plugins,
-      ),,
-     'localization' => array(
-       // ... list of localization plugins,
-      ),
-  );
-</pre>
-
-Each plugin will be registered with an identifier for the plugin, plus a fairly lengthy list of items that can define how and where the plugin is used. Here is an example from Views core:
-
-<pre>
-      'node' => array(
-        'title' => t('Node'),
-        'help' => t('Display the node with standard node view.'),
-        'handler' => 'views_plugin_row_node_view',
-        'path' => drupal_get_path('module', 'views') . '/modules/node', // not necessary for most modules
-        'theme' => 'views_view_row_node',
-        'base' => array('node'), // only works with 'node' as base.
-        'uses options' => TRUE,
-        'type' => 'normal',
-      ),
-</pre>
-
-Of particular interest is the <em>path</em> directive, which works a little differently from handler registration; each plugin must define its own path, rather than relying on a global info for the paths. For example:
-
-<pre>
-      'feed' => array(
-        'title' => t('Feed'),
-        'help' => t('Display the view as a feed, such as an RSS feed.'),
-        'handler' => 'views_plugin_display_feed',
-        'uses hook menu' => TRUE,
-        'use ajax' => FALSE,
-        'use pager' => FALSE,
-        'accept attachments' => FALSE,
-        'admin' => t('Feed'),
-        'help topic' => 'display-feed',
-      ),
-</pre>
-
-Please be sure to prefix your plugin identifiers with your module name to ensure namespace safety; after all, two different modules could try to implement the 'grid2' plugin, and that would cause one plugin to completely fail.
-
-...TODO: Finish this document....
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-tables.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-tables.html
index 47af4ab..cafbbab 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-tables.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api-tables.html
@@ -1,15 +1,21 @@
-Tables are described to Views via hook_views_data(), which returns an array of table information, keyed by the name of the table. For example, if your module is describing three tables, 'foo', 'bar' and 'baz', your array will look like this:
-<pre>$data = array(
-  'foo' => array(
-    // ...info here...
-  ),
-  'bar' => array(
-    // ...info here...
-  ),
-  'baz' => array(
-    // ...info here...
-  ),
-);
+Tables are described to Views by implementing hook_views_data(). This should be placed in MODULENAME.views.inc and it will be autoloaded (see <a href="topic:views/api">Views' API</a>). The hook implementation should return an array of table information, keyed by the name of the table. For example, if your module is describing three tables, 'foo', 'bar' and 'baz', your hook will look like this:
+<pre>  /**
+   * Implements hook_views_data().
+   */
+  function MODULENAME_views_data() {
+    $data = array(
+      'foo' => array(
+        // ...info about the table named 'foo'...
+      ),
+      'bar' => array(
+        // ...info about the table named 'bar'...
+      ),
+      'baz' => array(
+        // ...info about the table named 'baz'...
+      ),
+    );
+    return $data;
+  }
 </pre>
 
 The key should be the actual database name of the table (not including prefix), but it can be an alias as long as the join information (explained later) contains the real name of the table.
@@ -230,7 +236,7 @@ The following items are allowed in the field definition:
 <dt>sort</dt>
 <dd>A handler definition for the "Sort criteria" section, which will be used to add an ORDER BY clause to the view. The definition is an array; the contents of the array are completely up to the handler, other than the 'handler' definition. If omitted, handler will default to 'views_handler_sort'.</dd>
 <dt>relationship</dt>
-<dd>A handler definition for the "Field" section, which is a way to bring in new or alternative base tables in the view. The definition is an array; the contents of the array are completely up to the handler, other than the 'handler' definition. If omitted, handler will default to 'views_handler_relationship'. The basic relationship handler requires 'base' and 'base field' to be set; 'base' and 'base field' represent the "right" half of the join that will use this field as the left side.</dd>
+<dd>A handler definition for the "Field" section, which is a way to bring in new or alternative base tables in the view. The definition is an array; the contents of the array are completely up to the handler, other than the 'handler' definition. If omitted, handler will default to 'views_handler_relationship'. All relationships need the 'base' to be set. The basic relationship handler also requires 'base field' to be set. 'base' and 'base field' represent the "right" half of the join that will use this field as the left side.</dd>
 <dt>argument</dt>
 <dd>A handler definition for the "Field" section, which is method of accepting user input from the URL or some other source. The definition is an array; the contents of the array are completely up to the handler, other than the 'handler' definition. If omitted, handler will default to 'views_handler_argument'.</dd>
 </dl>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api.html
index 6337e8b..2b743a7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/api.html
@@ -2,7 +2,7 @@ Views allows modules to describe their tables relationships to each other, as we
 
 Views also allows modules to create new display types, style types, row styles, argument default handlers and argument validators via <strong>hook_views_handlers()</strong> and <strong>hook_views_plugins()</strong>.
 
-These hooks are kept in a file named MODULENAME.views.inc. This file is automatically included upon need, so there is no need to try and include this in hook_init or any other method of including .inc files. This file should store hook_views_data, hook_views_data_alter(), hook_views_plugins(), hook_views_handlers(), as well as any other hooks and subsidiary data that will only be used by your module when Views is active. All handlers and plugins provided by your module should be in separate .inc files.
+These hooks are kept in a file named MODULENAME.views.inc. This file is automatically included upon need, so there is no need to try and include this in hook_init or any other method of including .inc files. This file should store hook_views_data, hook_views_data_alter(), hook_views_plugins(), hook_views_handlers(), as well as any other hooks and subsidiary data that will only be used by your module when Views is active. All handlers and plugins provided by your module should be in separate .inc files, and must be referenced in your module's .info file with the files[] directive.
 
 There are two similar files, MODULENAME.views_default.inc and MODULENAME.views_convert.inc which contain default views and views 1 to views 2 convert helpers, respectively.
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/example-slideshow-thumb-pager.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/example-slideshow-thumb-pager.html
new file mode 100644
index 0000000..1c83984
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/example-slideshow-thumb-pager.html
@@ -0,0 +1,54 @@
+<p>In this example you will create a views block that displays images in a slideshow using thumbnails of the images as a pager underneath the slideshow. This will demonstrate using <em>Views Slideshow </em>and <em>Image Styles</em> to display images.</p>
+
+<p>For this example, we are going to display a single image from each content item of the type "Photos", which we assume you have already set up with an image field. We are also assuming that <em>Views Slideshow</em> and at least one plugin is installed and activated.</p>
+
+<h3>Creating the image styles</h3>
+
+<p>The first step is creating the right image styles to display the images from the node. We will create one for the slideshow image, and one for the pagers. Go to  <a target="_blank" href="base_url:admin/structure/views/add">Image Styles</a> and create the following two styles:</p>
+
+<dl>
+  <dt>Style name</dt>
+  <dd>slideshow_image</dd>
+  <dt>Effects</dt>
+  <dd>Scale and crop: 600px wide, 400px high</dd>
+</dl>
+<dl>
+  <dt>Style name</dt>
+  <dd>slideshow_thumbnail</dd>
+  <dt>Effects</dt>
+  <dd>Scale and crop: 30px wide, 20px high</dd>
+</dl>
+
+<h3>Creating the View and block</h3>
+
+<p>The next step is creating a view for the slideshow. Because the block will show the images in content, this view is considered a "Content" view. Go to <a target="_blank" href="base_url:admin/structure/views/add">add new view</a>, enter the following properties, and click <strong>Next</strong>:</p>
+<dl>
+  <dt>View name</dt>
+  <dd>Photo Slideshow</dd>
+  <dt>Description</dt>
+  <dd>Slideshow of images from Photos.</dd>
+</dl>
+
+<p>Choose <strong>Show</strong> <em>Content</em> <strong>of type</strong> <em>Photos</em>. You can choose any way you wish to sort the content.</p>
+<p>Untick the box next to <strong>Create a page</strong> and tick the box next to <strong>Create a block</strong>. Enter a block title and choose Slideshow from the <strong>Display format</strong> select box. Select <em>fields</em> from the other select box. Leave the remaining settings as they are.</p>
+<p>Click on <strong>Continue & edit</strong>.</p>
+
+<h3>Editing the view settings</h3>
+
+<p>Turn off the pager by clicking on <strong>Display a specified number of items</strong> in the middle column and selecting <strong>Display all items</strong> in the next screen, and applying the settings.</p>
+<p>Enter a Block name by clicking on <strong>None</strong> at the top of the middle column.</p>
+<p>Next, remove the <em>Content: Title</em> field from the fields list in the left column by blicking on <strong>rearrage</strong> under the arrow.</p>
+<p>Next we have to add the thumbnail image field. Click on <strong>Add</strong> under the fields section and select your image field from the list. In the next screen, turn off the label, select <em>Exclude from display</em> and select <em>slideshow_thumbnail</em> from the Image Style select box. Under MORE, enter <em>Thumbnail</em> under Administrative Title.</p>
+<p>Click on <strong>Apply (all displays)</strong>.</p>
+<p>Now we have to add the image field to display in the slideshow. Clcik on <strong>Add</strong> under the fields section and select your image field from the list. In the next screen, turn off the label and select <em>slideshow_image</em> from the Image Style select box. Under MORE, enter <em>Display Image</em> under Administrative Title.</p>
+<p>Click on <strong>Apply (all displays)</strong>.</p>
+
+<h3>Editing the slideshow settings</h3>
+
+<p>Click on <strong>Settings</strong> next to Format: Slideshow in the first column. In the screen that opens we can choose the options for our slideshow.</p>
+<p>For the purpose of this example, we will only add the thumbnails as a pager, and leave the remaining slideshow settings as they are. Select the tick box next to <em>Pager</em> under Bottom Widgets. Select <em>Fields</em> from the Pager Type select box. Select the tick box next to <em>Thumbnail</em>.</p>
+<p>Click on <strong>Apply (all displays)</strong>.</p>
+
+<h3>Saving & testing the view</h3>
+<p>Click on <strong>Save</strong> to save the view.</p>
+<p>You can test the view by adding the block you have created to your theme.</p>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/filter.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/filter.html
index 752617f..cb84f8a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/filter.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/filter.html
@@ -15,6 +15,21 @@ When you click the Rearrange Icon you can first rearrange your filters, easily d
 
 When you want that the user to select their own filter, you can expose the filter. A selection box will show for the user and they will be able to select one item. After that the view will reload and only the selected item will be displayed. You can also choose to expose the selection to a block, see <a href="topic:views/exposed-form">here</a>.
 
+For exposed filters, you can create a grouped filter. When filters are in a group, each item of the group represents a set of operators and values. The following table illustrates how this feature works. The values of the first column of the table are displayed as options of a single select box:
+
+<table>
+<thead>
+<tr><th>What the user see</th><th>What views does</th></tr>
+</thead>
+<tbody>
+<tr><td>Is lower than 10</td><td><strong>Operator:</strong> Is Lower than. <strong>Value:</strong> 10</td></tr>
+<tr><td>Is between 10 and 20</td><td><strong>Operator:</strong> Is between. <strong>Value:</strong> 10 and 20</td></tr>
+<tr><td>Is greater than 20</td><td><strong>Operator:</strong> Is Greater. <strong>Value:</strong> 20</td></tr>
+</tbody>
+</table>
+
+<strong>Please note:</strong> When using grouped filters with the option: 'Enable to allow users to select multiple items' checked, you probably may want to to place the filter in a separated group and define the operator of the group as 'OR'. This may be neccesary because in order to use multiple times the same filter, all options have to be applied using the OR operator, if not, probably you will get nothing listed since usually items in a group are mutually exclusive.
+
 Taxonomy filters have been significantly altered in Views 7.x-3.x. D7 significantly re-organized taxonomy, there was a lot of duplicate taxonomy related fields and filters. Some of them were removed to try and reduce confusion between them. Implicit relationships to taxonomy have been removed, in favor of explicit relationships. If the filters you can find don't do what you need, try adding either the related taxonomy terms relationship, or a relationship on the specific taxonomy field. That will give you the term specific filters.
 
 You can override the complete filter section - see <a href="topic:views/overrides">here</a> for more information.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/group-by.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/group-by.html
index d90ed62..871fb53 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/group-by.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/group-by.html
@@ -6,7 +6,7 @@ This is another major new feature for Views that has been long requested. It inc
 
 Grouping is available for sorts and filters. To use grouping, “Use grouping” must be enabled on a per-view basis in the Views UI. This is toggled in the Advanced settings box by clicking the link next to “Use grouping”. Once you activate this checkbox (be sure to read the notes in the UI!), functions for aggregating particular fields will become available. The gear icon that should be familiar to users with any amount of Views experience will now appear next to any sorted or filtered field with aggregation capabilities. Choosing that icon will open up the configuration for the aggregation functions. As an example, this could be used to count things like number of posts in a day, or number of published posts. This could also be used to sum the values of a row, instead of everything in the view.
 
-Setting only the "Use aggregation" turned on itself does nothing. It only gives the possibility to set Aggregation types.    
+Setting only the "Use aggregation" turned on itself does nothing. It only gives the possibility to set Aggregation types.
 
 <div class="help-box" style="text-align:center">
 <a href="path:images/views3-group-aggregation-types.png"><img src="path:images/views3-group-aggregation-types.png" /></a>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/images/views3-views-all.png b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/images/views3-views-all.png
new file mode 100644
index 0000000..27ce88e
Binary files /dev/null and b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/images/views3-views-all.png differ
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/misc-notes.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/misc-notes.html
index a9d318f..8efc1f9 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/misc-notes.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/misc-notes.html
@@ -1,4 +1,3 @@
-<!-- $Id: $ -->
 <h3>Image Assist & ImageField Assist</h3>
 Under certain conditions these modules can block access to the header input section of the admin.
 They need to be disabled on certain views paths. To do this go to
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/style-jump.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/style-jump.html
index d08e67f..dc8532f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/style-jump.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/style-jump.html
@@ -1,6 +1,6 @@
 With the <strong>jump menu</strong> style can you create selectbox menus for the content of your site.
 
-<a href="path:images/views3-jump-style-menu.png"><img src="path:images/views3-jump-style-menu.png" /></a> 
+<a href="path:images/views3-jump-style-menu.png"><img src="path:images/views3-jump-style-menu.png" /></a>
 
 The <strong>jump menu</strong> style will display each row of your view within a jump menu.  This style requires that your view's <a href="topic:views/style-row">row style</a> is set to <a href="topic:views/style-fields">fields</a>.
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/view-add.html b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/view-add.html
index 233d885..619d1b6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/view-add.html
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/view-add.html
@@ -1,7 +1,13 @@
-When you want to create a new view you can enter the following information about it.
-First, you must enter a <strong>view name</strong>. This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If you are overriding a module provided view, the name must not be changed or a new view will be created instead of overriding.
-You can enter a <strong>description of the view</strong>. This description will appear on the Views administrative UI to tell you what the view is about.
-You can enter a <strong>view tag</strong>. It will be used help sort views on the administrative page.
+<p>When you want to create a new view navigate to <strong> Structure > Views </strong>. There you can see all the views specified. Fresh install has a few examples ready and you can choose "edit" to investigate how the is made. To create a new view press "Add new view".</p>
+
+<div class="help-box" style="text-align:center">
+<a href="path:images/views3-views-all.png"><img src="path:images/views3-views-all.png" /></a>
+<em>All the created Views</em>
+</div> 
+
+<p>You can enter the following information about it.</p>
+<p> First, you must enter a <strong>view name</strong>. This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If you are overriding a module provided view, the name must not be changed or a new view will be created instead of overriding.</p>
+<p> You can enter a <strong>description of the view</strong>. This description will appear on the Views administrative UI to tell you what the view is about.  You can enter a <strong>view tag</strong>. It will be used help sort views on the administrative page.</p>
 You must choose a view type.
 <dl>
 <dt>Node</dt>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/views.help.ini b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/views.help.ini
index 4a249f5..bd2d457 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/help/views.help.ini
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/help/views.help.ini
@@ -34,11 +34,6 @@ parent = getting-started
 weight = 40
 
 
-[example-bulk-export]
-title = "Create a module from bulk exported views"
-parent = getting-started
-weight = 50
-
 [view-add]
 title = "Add a View"
 weight = -10
@@ -173,8 +168,8 @@ title = "Using CSS with Views"
 parent = style-settings
 weight = 20
 
-[semantic-views]
-title = "Semantic Views"
+[advanced-style-settings]
+title = "Advanced Style Settings"
 parent = style-settings
 
 [group-by]
@@ -358,3 +353,7 @@ weight = 218
 [example-filter-by-current-user]
 title = "Example to filter content by the current logged-in user"
 weight = 219
+
+[example-slideshow-thumb-pager]
+title = "Example to create a slideshow with thumbnails as a pager underneath"
+weight = 220
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/admin.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/admin.inc
index 80aa592..ff4a99f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/admin.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/admin.inc
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file admin.inc
+ * @file
  * Provides the Views' administrative interface.
  */
 
@@ -399,11 +400,11 @@ function views_ui_add_form($form, &$form_state) {
 /**
  * Helper form element validator: integer.
  *
- * @see _element_validate_integer_positive
- *
  * The problem with this is that the function is private so it's not guaranteed
  * that it might not be renamed/changed. In the future field.module or something else
  * should provide a public validate function.
+ *
+ * @see _element_validate_integer_positive()
  */
 function views_element_validate_integer($element, &$form_state) {
   $value = $element['#value'];
@@ -713,9 +714,7 @@ function views_ui_add_form_save_submit($form, &$form_state) {
     $form_state['redirect'] = 'admin/structure/views';
   }
   $view->save();
-  menu_rebuild();
-  cache_clear_all('*', 'cache_views', TRUE);
-  cache_clear_all();
+
   $form_state['redirect'] = 'admin/structure/views';
   if (!empty($view->display['page'])) {
     $display = $view->display['page'];
@@ -851,7 +850,7 @@ function views_ui_break_lock_confirm($form, &$form_state, $view) {
   $form = array();
 
   if (empty($view->locked)) {
-    $form['#markup'] = t('There is no lock on view %view to break.', array('%name' => $view->name));
+    $form['message']['#markup'] = t('There is no lock on view %name to break.', array('%name' => $view->name));
     return $form;
   }
 
@@ -966,11 +965,13 @@ function views_ui_build_preview($view, $display_id, $render = TRUE) {
  *
  * @todo Rename to views_ui_edit_view_form(). See that function for the "old"
  *   version.
+ *
+ * @see views_ui_ajax_get_form()
  */
 function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) {
   // Do not allow the form to be cached, because $form_state['view'] can become
   // stale between page requests.
-  // @see views_ui_ajax_get_form() for how this affects #ajax.
+  // See views_ui_ajax_get_form() for how this affects #ajax.
   // @todo To remove this and allow the form to be cacheable:
   //   - Change $form_state['view'] to $form_state['temporary']['view'].
   //   - Add a #process function to initialize $form_state['temporary']['view']
@@ -1459,7 +1460,7 @@ function views_ui_edit_form_submit_delay_destination($form, &$form_state) {
  * having them as secondary local tasks isn't desired. The caller is responsible
  * for setting the active tab's #active property to TRUE.
  *
- * @param $view
+ * @param view $view
  *    The view which will be edited.
  * @param $display_id
  *    The display_id which is edited on the current request.
@@ -1480,7 +1481,7 @@ function views_ui_edit_page_display_tabs($view, $display_id = NULL) {
     if (!empty($display->deleted)) {
       $tabs[$id]['#link']['localized_options']['attributes']['class'][] = 'views-display-deleted-link';
     }
-    if (empty($display->options['enabled'])) {
+    if (isset($display->display_options['enabled']) && !$display->display_options['enabled']) {
       $tabs[$id]['#link']['localized_options']['attributes']['class'][] = 'views-display-disabled-link';
     }
   }
@@ -1490,6 +1491,18 @@ function views_ui_edit_page_display_tabs($view, $display_id = NULL) {
     $tabs['default']['#access'] = FALSE;
   }
 
+  // Mark the display tab as red to show validation errors.
+  $view->validate();
+  foreach ($view->display as $id => $display) {
+    if (!empty($view->display_errors[$id])) {
+      // Always show the tab.
+      $tabs[$id]['#access'] = TRUE;
+      // Add a class to mark the error and a title to make a hover tip.
+      $tabs[$id]['#link']['localized_options']['attributes']['class'][] = 'error';
+      $tabs[$id]['#link']['localized_options']['attributes']['title'] = t('This display has one or more validation errors; please review it.');
+    }
+  }
+
   return $tabs;
 }
 
@@ -1914,7 +1927,7 @@ function views_ui_pre_render_move_argument_options($form) {
  * While doing that, create a container element underneath each option, which
  * contains the settings related to that option.
  *
- * @see form_process_radios
+ * @see form_process_radios()
  */
 function views_ui_process_container_radios($element) {
   if (count($element['#options']) > 0) {
@@ -1945,7 +1958,7 @@ function views_ui_process_container_radios($element) {
   return $element;
 }
 
-/*
+/**
  * Import a view from cut & paste.
  */
 function views_ui_import_page($form, &$form_state) {
@@ -1960,6 +1973,12 @@ function views_ui_import_page($form, &$form_state) {
     '#title' => t('Replace an existing view if one exists with the same name'),
   );
 
+  $form['bypass_validation'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Bypass view validation'),
+    '#description' => t('Bypass the validation of plugins and handlers when importing this view.'),
+  );
+
   $form['view'] = array(
     '#type' => 'textarea',
     '#title' => t('Paste view code here'),
@@ -2030,38 +2049,42 @@ function views_ui_import_validate($form, &$form_state) {
   $view->init_display();
 
   $broken = FALSE;
-  // Make sure that all plugins and handlers needed by this view actually exist.
-  foreach ($view->display as $id => $display) {
-    if (empty($display->handler) || !empty($display->handler->broken)) {
-      drupal_set_message(t('Display plugin @plugin is not available.', array('@plugin' => $display->display_plugin)), 'error');
-      $broken = TRUE;
-      continue;
-    }
 
-    $plugin = views_get_plugin('style', $display->handler->get_option('style_plugin'));
-    if (!$plugin) {
-      drupal_set_message(t('Style plugin @plugin is not available.', array('@plugin' => $display->handler->get_option('style_plugin'))), 'error');
-      $broken = TRUE;
-    }
-    elseif ($plugin->uses_row_plugin()) {
-      $plugin = views_get_plugin('row', $display->handler->get_option('row_plugin'));
+  // Bypass the validation of view pluigns/handlers if option is checked.
+  if (!$form_state['values']['bypass_validation']) {
+    // Make sure that all plugins and handlers needed by this view actually exist.
+    foreach ($view->display as $id => $display) {
+      if (empty($display->handler) || !empty($display->handler->broken)) {
+        drupal_set_message(t('Display plugin @plugin is not available.', array('@plugin' => $display->display_plugin)), 'error');
+        $broken = TRUE;
+        continue;
+      }
+
+      $plugin = views_get_plugin('style', $display->handler->get_option('style_plugin'));
       if (!$plugin) {
-        drupal_set_message(t('Row plugin @plugin is not available.', array('@plugin' => $display->handler->get_option('row_plugin'))), 'error');
+        drupal_set_message(t('Style plugin @plugin is not available.', array('@plugin' => $display->handler->get_option('style_plugin'))), 'error');
         $broken = TRUE;
       }
-    }
+      elseif ($plugin->uses_row_plugin()) {
+        $plugin = views_get_plugin('row', $display->handler->get_option('row_plugin'));
+        if (!$plugin) {
+          drupal_set_message(t('Row plugin @plugin is not available.', array('@plugin' => $display->handler->get_option('row_plugin'))), 'error');
+          $broken = TRUE;
+        }
+      }
 
-    foreach (views_object_types() as $type => $info) {
-      $handlers = $display->handler->get_handlers($type);
-      if ($handlers) {
-        foreach ($handlers as $id => $handler) {
-          if ($handler->broken()) {
-            drupal_set_message(t('@type handler @table. at field is not available.', array(
-              '@type' => $info['stitle'],
-              '@table' => $handler->table,
-              '@field' => $handler->field,
-            )), 'error');
-            $broken = TRUE;
+      foreach (views_object_types() as $type => $info) {
+        $handlers = $display->handler->get_handlers($type);
+        if ($handlers) {
+          foreach ($handlers as $id => $handler) {
+            if ($handler->broken()) {
+              drupal_set_message(t('@type handler @table. at field is not available.', array(
+                '@type' => $info['stitle'],
+                '@table' => $handler->table,
+                '@field' => $handler->field,
+              )), 'error');
+              $broken = TRUE;
+            }
           }
         }
       }
@@ -2142,15 +2165,6 @@ function views_ui_edit_view_form_submit($form, &$form_state) {
   $form_state['view']->save();
   drupal_set_message(t('The view %name has been saved.', array('%name' => $form_state['view']->get_human_name())));
 
-  // Make sure menu items get rebuilt as neces
-  menu_rebuild();
-
-  // Clear the views cache.
-  cache_clear_all('*', 'cache_views');
-
-  // Clear the page cache.
-  cache_clear_all();
-
   // Remove this view from cache so we can edit it properly.
   ctools_object_cache_clear('view', $form_state['view']->name);
 }
@@ -2309,14 +2323,18 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
       continue;
     }
 
-    $field_name = $handler->ui_name(TRUE);
+    $field_name = check_plain($handler->ui_name(TRUE));
     if (!empty($field['relationship']) && !empty($relationships[$field['relationship']])) {
       $field_name = '(' . $relationships[$field['relationship']] . ') ' . $field_name;
     }
 
-    $description = $handler->admin_summary();
+    $description = filter_xss_admin($handler->admin_summary());
     $link_text = $field_name . (empty($description) ? '' : " ($description)");
-    $build['fields'][$id]['#link'] = l($link_text, "admin/structure/views/nojs/config-item/$view->name/$display->id/$type/$id", array('attributes' => array('class' => array('views-ajax-link')), 'html' => TRUE));
+    $link_attributes = array('class' => array('views-ajax-link'));
+    if (!empty($field['exclude'])) {
+      $link_attributes['class'][] = 'views-field-excluded';
+    }
+    $build['fields'][$id]['#link'] = l($link_text, "admin/structure/views/nojs/config-item/$view->name/$display->id/$type/$id", array('attributes' => $link_attributes, 'html' => TRUE));
     $build['fields'][$id]['#class'][] = drupal_clean_css_identifier($display->id . '-' . $type . '-' . $id);
     if (!empty($view->changed_sections[$display->id . '-' . $type . '-' . $id])) {
       // @TODO: #changed is no longer being used?
@@ -2830,7 +2848,7 @@ function views_ui_build_form_url($form_state) {
  * Add another form to the stack; clicking 'apply' will go to this form
  * rather than closing the ajax popup.
  */
-function views_ui_add_form_to_stack($key, &$view, $display_id, $args, $top = FALSE) {
+function views_ui_add_form_to_stack($key, &$view, $display_id, $args, $top = FALSE, $rebuild_keys = FALSE) {
   if (empty($view->stack)) {
     $view->stack = array();
   }
@@ -2860,6 +2878,11 @@ function views_ui_add_form_to_stack($key, &$view, $display_id, $args, $top = FAL
     // Now that the previously $first slot is free, move the new form into it.
     $view->stack[$first] = $stack;
     ksort($view->stack);
+
+    // Start the keys from 0 again, if requested.
+    if ($rebuild_keys) {
+      $view->stack = array_values($view->stack);
+    }
   }
 }
 
@@ -3165,11 +3188,13 @@ function theme_views_ui_reorder_displays_form($vars) {
   drupal_add_tabledrag('reorder-displays', 'order', 'sibling', 'weight');
 
   $output = drupal_render($form['override']);
+  $output .= '<div class="scroll">';
   $output .= theme('table',
     array('header' => $header,
     'rows' => $rows,
     'attributes' => array('id' => 'reorder-displays'),
   ));
+  $output .= '</div>';
   $output .= drupal_render_children($form);
 
   return $output;
@@ -3486,10 +3511,12 @@ function theme_views_ui_expose_filter_form($variables) {
 
   $output = drupal_render($form['form_description']);
   $output .= drupal_render($form['expose_button']);
+  $output .= drupal_render($form['group_button']);
   if (isset($form['required'])) {
     $output .= drupal_render($form['required']);
   }
   $output .= drupal_render($form['label']);
+  $output .= drupal_render($form['description']);
 
   $output .= drupal_render($form['operator']);
   $output .= drupal_render($form['value']);
@@ -3515,6 +3542,78 @@ function theme_views_ui_expose_filter_form($variables) {
   return $output;
 }
 
+ /**
+ * Theme the build group filter form.
+ */
+function theme_views_ui_build_group_filter_form($variables) {
+  $form = $variables['form'];
+  $more = drupal_render($form['more']);
+
+  $output = drupal_render($form['form_description']);
+  $output .= drupal_render($form['expose_button']);
+  $output .= drupal_render($form['group_button']);
+  if (isset($form['required'])) {
+    $output .= drupal_render($form['required']);
+  }
+
+  $output .= drupal_render($form['operator']);
+  $output .= drupal_render($form['value']);
+
+  $output .= '<div class="views-left-40">';
+  $output .= drupal_render($form['optional']);
+  $output .= drupal_render($form['remember']);
+  $output .= '</div>';
+
+  $output .= '<div class="views-right-60">';
+  $output .= drupal_render($form['widget']);
+  $output .= drupal_render($form['label']);
+  $output .= drupal_render($form['description']);
+  $output .= '</div>';
+
+
+  $header = array(
+    t('Default'),
+    t('Weight'),
+    t('Label'),
+    t('Operator'),
+    t('Value'),
+    t('Operations'),
+  );
+
+  $form['default_group'] = form_process_radios($form['default_group']);
+  $form['default_group_multiple'] = form_process_checkboxes($form['default_group_multiple']);
+  $form['default_group']['All']['#title'] = '';
+
+  drupal_render($form['default_group_multiple']['All']); // Don't render
+  $rows[] = array(
+    drupal_render($form['default_group']['All']),
+    '',
+    array(
+      'data' => variable_get('views_exposed_filter_any_label', 'new_any') == 'old_any' ? t('<Any>') : t('- Any -'),
+      'colspan' => 4,
+      'class' => array('class' => 'any-default-radios-row'),
+    ),
+  );
+
+  foreach (element_children($form['group_items']) as $group_id) {
+    $form['group_items'][$group_id]['value']['#title'] = '';
+    $data = array(
+      'default' => drupal_render($form['default_group'][$group_id]) . drupal_render($form['default_group_multiple'][$group_id]),
+      'weight' => drupal_render($form['group_items'][$group_id]['weight']),
+      'title' => drupal_render($form['group_items'][$group_id]['title']),
+      'operator' => drupal_render($form['group_items'][$group_id]['operator']),
+      'value' => drupal_render($form['group_items'][$group_id]['value']),
+      'remove' => drupal_render($form['group_items'][$group_id]['remove']) . l('<span>' . t('Remove') . '</span>', 'javascript:void()', array('attributes' => array('id' => 'views-remove-link-' . $group_id, 'class' => array('views-hidden', 'views-button-remove', 'views-groups-remove-link', 'views-remove-link'), 'alt' => t('Remove this item'), 'title' => t('Remove this item')), 'html' => true)),
+    );
+    $rows[] = array('data' => $data, 'id' => 'views-row-' . $group_id, 'class' => array('draggable'));
+  }
+  $table = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('views-filter-groups'), 'id' => 'views-filter-groups'))) . drupal_render($form['add_group']);
+  drupal_add_tabledrag('views-filter-groups', 'order', 'sibling', 'weight');
+  $render_form = drupal_render_children($form);
+  return $output . $render_form . $table . $more;
+}
+
+
 /**
  * Submit handler for rearranging form
  */
@@ -4124,6 +4223,45 @@ function views_ui_add_item_form_submit($form, &$form_state) {
   views_ui_cache_set($form_state['view']);
 }
 
+/**
+ * Override handler for views_ui_edit_display_form
+ */
+function views_ui_config_item_form_build_group($form, &$form_state) {
+  $item = &$form_state['handler']->options;
+  // flip. If the filter was a group, set back to a standard filter.
+  $item['is_grouped'] = empty($item['is_grouped']);
+
+  // If necessary, set new defaults:
+  if ($item['is_grouped']) {
+    $form_state['handler']->build_group_options();
+  }
+
+  $form_state['view']->set_item($form_state['display_id'], $form_state['type'], $form_state['id'], $item);
+
+  views_ui_add_form_to_stack($form_state['form_key'], $form_state['view'], $form_state['display_id'], array($form_state['type'], $form_state['id']), TRUE, TRUE);
+
+  views_ui_cache_set($form_state['view']);
+  $form_state['rerender'] = TRUE;
+  $form_state['rebuild'] = TRUE;
+  $form_state['force_build_group_options'] = TRUE;
+}
+
+/**
+ * Add a new group to the exposed filter groups.
+ */
+function views_ui_config_item_form_add_group($form, &$form_state) {
+  $item =& $form_state['handler']->options;
+
+  // Add a new row.
+  $item['group_info']['group_items'][] = array();
+
+  $form_state['view']->set_item($form_state['display_id'], $form_state['type'], $form_state['id'], $item);
+
+  views_ui_cache_set($form_state['view']);
+  $form_state['rerender'] = TRUE;
+  $form_state['rebuild'] = TRUE;
+  $form_state['force_build_group_options'] = TRUE;
+}
 
 /**
  * Form to config_item items in the views UI.
@@ -4469,6 +4607,8 @@ function views_ui_config_item_form_expose($form, &$form_state) {
 
   $form_state['view']->set_item($form_state['display_id'], $form_state['type'], $form_state['id'], $item);
 
+  views_ui_add_form_to_stack($form_state['form_key'], $form_state['view'], $form_state['display_id'], array($form_state['type'], $form_state['id']), TRUE, TRUE);
+
   views_ui_cache_set($form_state['view']);
   $form_state['rerender'] = TRUE;
   $form_state['rebuild'] = TRUE;
@@ -4978,7 +5118,14 @@ function _views_sort_types($a, $b) {
 /**
  * Fetch a list of all fields available for a given base type.
  *
- * @return
+ * @param (array|string) $base
+ *   A list or a single base_table, for example node.
+ * @param string $type
+ *   The handler type, for example field or filter.
+ * @param bool $grouping
+ *   Should the result grouping by its 'group' label.
+ *
+ * @return array
  *   A keyed array of in the form of 'base_table' => 'Description'.
  */
 function views_fetch_fields($base, $type, $grouping = FALSE) {
@@ -5240,7 +5387,7 @@ function views_ui_default_button($element, &$form_state, $form) {
  *
  * Therefore it builds up a table of each field which is used in any view.
  *
- * @see field_ui_fields_list
+ * @see field_ui_fields_list()
  */
 function views_ui_field_list() {
   $views = views_get_all_views();
@@ -5289,3 +5436,26 @@ function views_ui_field_list() {
 
   return $output;
 }
+
+/**
+ * Lists all plugins and what enabled Views use them.
+ */
+function views_ui_plugin_list() {
+  $rows = views_plugin_list();
+  foreach ($rows as &$row) {
+    // Link each view name to the view itself.
+    foreach ($row['views'] as $row_name => $view) {
+      $row['views'][$row_name] = l($view, "admin/structure/views/view/$view");
+    }
+    $row['views'] = implode(', ', $row['views']);
+  }
+
+  // Sort rows by field name.
+  ksort($rows);
+  return array(
+    '#theme' => 'table',
+    '#header' => array(t('Type'), t('Name'), t('Provided by'), t('Used in')),
+    '#rows' => $rows,
+    '#empty' => t('There are no enabled views.'),
+  );
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/ajax.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/ajax.inc
index 4e2ad38..39d8c6f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/ajax.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/ajax.inc
@@ -1,12 +1,14 @@
 <?php
 
 /**
- * @file ajax.inc
- *
+ * @file
  * Handles the server side AJAX interactions of Views.
- *
- * @defgroup ajax Views ajax library
+ */
+
+/**
+ * @defgroup ajax Views AJAX library
  * @{
+ * Handles the server side AJAX interactions of Views.
  */
 
 /**
@@ -17,14 +19,12 @@ function views_ajax() {
     $name = $_REQUEST['view_name'];
     $display_id = $_REQUEST['view_display_id'];
     $args = isset($_REQUEST['view_args']) && $_REQUEST['view_args'] !== '' ? explode('/', $_REQUEST['view_args']) : array();
-    $path = isset($_REQUEST['view_path']) ? $_REQUEST['view_path'] : NULL;
+    $path = isset($_REQUEST['view_path']) ? rawurldecode($_REQUEST['view_path']) : NULL;
     $dom_id = isset($_REQUEST['view_dom_id']) ? preg_replace('/[^a-zA-Z0-9_-]+/', '-', $_REQUEST['view_dom_id']) : NULL;
     $pager_element = isset($_REQUEST['pager_element']) ? intval($_REQUEST['pager_element']) : NULL;
 
     $commands = array();
 
-    $arg = explode('/', $_REQUEST['view_path']);
-
     // Remove all of this stuff from $_GET so it doesn't end up in pagers and tablesort URLs.
     foreach (array('view_name', 'view_display_id', 'view_args', 'view_path', 'view_dom_id', 'pager_element', 'view_base_path', 'ajax_html_ids', 'ajax_page_state') as $key) {
       if (isset($_GET[$key])) {
@@ -48,7 +48,7 @@ function views_ajax() {
 
       // Add all $_POST data, because AJAX is always a post and many things,
       // such as tablesorts, exposed filters and paging assume $_GET.
-      $_GET += $_POST;
+      $_GET = $_POST + $_GET;
 
       // Overwrite the destination.
       // @see drupal_get_destination()
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/analyze.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/analyze.inc
index df7b743..68ee334 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/analyze.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/analyze.inc
@@ -47,6 +47,7 @@ function views_analyze_format_result($view, $messages) {
 
   $output = '';
   foreach ($types as $type => $messages) {
+    $type .= ' messages';
     $message = '';
     if (count($messages) > 1) {
       $message = theme('item_list', array('items' => $messages));
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/base.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/base.inc
index b5d09a4..0e2a407 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/base.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/base.inc
@@ -1,12 +1,12 @@
 <?php
+
 /**
  * @file
- *
  * Provides the basic object definitions used by plugins and handlers.
  */
 
 /**
- * Basic definition for many views objects
+ * Basic definition for many views objects.
  */
 class views_object {
   /**
@@ -33,17 +33,24 @@ class views_object {
    * @code
    * 'option_name' => array(
    *  - 'default' => default value,
-   *  - 'translatable' => TRUE/FALSE (wrap in t() on export if true),
-   *  - 'contains' => array of items this contains, with its own defaults, etc.
-   *      If contains is set, the default will be ignored and assumed to
-   *      be array()
-   *
+   *  - 'translatable' => (optional) TRUE/FALSE (wrap in t() on export if true),
+   *  - 'contains' => (optional) array of items this contains, with its own
+   *      defaults, etc. If contains is set, the default will be ignored and
+   *      assumed to be array().
+   *  - 'bool' => (optional) TRUE/FALSE Is the value a boolean value. This will
+   *      change the export format to TRUE/FALSE instead of 1/0.
+   *  - 'export' => (optional) FALSE or a callback for special export handling
+   *      if necessary.
+   *  - 'unpack_translatable' => (optional) callback for special handling for
+   *      translating data within the option, if necessary.
    *  ),
-   *  @endcode
-   * Each option may have any of the following functions:
-   *  - export_option_OPTIONNAME -- Special export handling if necessary.
-   *  - translate_option_OPTIONNAME -- Special handling for translating data
-   *    within the option, if necessary.
+   *
+   * @return array
+   *   Returns the options of this handler/plugin.
+   *
+   * @see views_object::export_option()
+   * @see views_object::export_option_always()
+   * @see views_object::unpack_translatable()
    */
   function option_definition() { return array(); }
 
@@ -56,6 +63,8 @@ class views_object {
   /**
    * Set default options on this object. Called by the constructor in a
    * complex chain to deal with backward compatibility.
+   *
+   * @deprecated since views2
    */
   function options(&$options) { }
 
@@ -251,6 +260,17 @@ class views_object {
   }
 
   /**
+   * Always exports the option, regardless of the default value.
+   */
+  function export_option_always($indent, $prefix, $storage, $option, $definition, $parents) {
+    // If there is no default, the option will always be exported.
+    unset($definition['default']);
+    // Unset our export method to prevent recursion.
+    unset($definition['export']);
+    return $this->export_option($indent, $prefix, $storage, $option, $definition, $parents);
+  }
+
+  /**
    * Unpacks each handler to store translatable texts.
    */
   function unpack_translatables(&$translatable, $parents = array()) {
@@ -326,7 +346,7 @@ class views_object {
       $value = $options;
       // Build source data and add to the array
       $format = NULL;
-      if (isset($definition['format_key']) && isset($storage[$definition['format_key']])) {
+      if (isset($definition['format_key']) && isset($options[$definition['format_key']])) {
         $format = $options[$definition['format_key']];
       }
       $translatable[] = array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/cache.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/cache.inc
index b2fe7d8..c655c21 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/cache.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/cache.inc
@@ -1,9 +1,8 @@
 <?php
+
 /**
- * @file cache.inc
- *
- * Functions to load Views' data so that it knows what is available to
- * build queries from.
+ * @file
+ * Load Views' data so that it knows what is available to build queries from.
  */
 
 /**
@@ -14,8 +13,8 @@
  *   One example is views_get_handler.
  */
 function _views_fetch_data($table = NULL, $move = TRUE, $reset = FALSE) {
-  static $cache = NULL;
-  static $recursion_protection = array();
+  $cache = &drupal_static(__FUNCTION__ . '_cache');
+  $recursion_protection = &drupal_static(__FUNCTION__ . '_recursion_protected');
   if (!isset($cache) || $reset) {
     $start = microtime(TRUE);
     // NOTE: This happens whether we retrieve them from cache or otherwise.
@@ -146,16 +145,19 @@ function views_cache_set($cid, $data, $use_language = FALSE) {
  *
  * This is just a convenience wrapper around cache_get().
  *
- * @param $cid
+ * @param int $cid
  *   The cache ID of the data to retrieve.
- * @param $use_language
+ * @param bool $use_language
  *   If TRUE, the data will be requested specific to the currently active language.
+ *
+ * @return stdClass|bool
+ *   The cache or FALSE on failure.
  */
 function views_cache_get($cid, $use_language = FALSE) {
   global $language;
 
   if (variable_get('views_skip_cache', FALSE)) {
-    return 0;
+    return FALSE;
   }
   if ($use_language) {
     $cid .= ':' . $language->language;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/form.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/form.inc
deleted file mode 100644
index 9152ae9..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/form.inc
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-/**
- * @file form.inc
- * Views' replacements for Drupal's form functions.
- *
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/handlers.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/handlers.inc
index 45a3a45..a79aa5c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/handlers.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/handlers.inc
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file handlers.inc
+ * @file
  * Defines the various handler objects to help build and display views.
  */
 
@@ -57,6 +58,7 @@ function _views_create_handler($definition, $type = 'handler', $handler_type = N
   else {
     $handler->is_plugin = TRUE;
     $handler->plugin_type = $type;
+    $handler->plugin_name = $definition['name'];
   }
 
   // let the handler have something like a constructor.
@@ -313,12 +315,18 @@ class views_handler extends views_object {
    *   The value being rendered.
    * @param $type
    *   The type of sanitization needed. If not provided, check_plain() is used.
+   *
+   * @return string
+   *   Returns the safe value.
    */
   function sanitize_value($value, $type = NULL) {
     switch ($type) {
       case 'xss':
         $value = filter_xss($value);
         break;
+      case 'xss_admin':
+        $value = filter_xss_admin($value);
+        break;
       case 'url':
         $value = check_url($value);
         break;
@@ -556,11 +564,11 @@ class views_handler extends views_object {
     }
   }
 
- /**
-  * Check whether current user has access to this handler.
-  *
-  * @return boolean
-  */
+  /**
+   * Check whether current user has access to this handler.
+   *
+   * @return boolean
+   */
   function access() {
     if (isset($this->definition['access callback']) && function_exists($this->definition['access callback'])) {
       if (isset($this->definition['access arguments']) && is_array($this->definition['access arguments'])) {
@@ -664,6 +672,18 @@ class views_handler extends views_object {
   }
 
   /**
+   * Returns TRUE if the exposed filter works like a grouped filter.
+   */
+  function is_a_group() { return FALSE; }
+
+  /**
+   * Define if the exposed input has to be submitted multiple times.
+   * This is TRUE when exposed filters grouped are using checkboxes as
+   * widgets.
+   */
+  function multiple_exposed_input() { return FALSE; }
+
+  /**
    * Take input from exposed handlers and assign to this handler, if necessary.
    */
   function accept_exposed_input($input) { return TRUE; }
@@ -736,7 +756,7 @@ class views_many_to_one_helper {
   }
 
   static function option_definition(&$options) {
-    $options['reduce_duplicates'] = array('default' => FALSE);
+    $options['reduce_duplicates'] = array('default' => FALSE, 'bool' => TRUE);
   }
 
   function options_form(&$form, &$form_state) {
@@ -1030,7 +1050,7 @@ class views_many_to_one_helper {
   }
 }
 
-/*
+/**
  * Break x,y,z and x+y+z into an array. Works for strings.
  *
  * @param $str
@@ -1062,12 +1082,17 @@ function views_break_phrase_string($str, &$handler = NULL) {
     return $handler;
   }
 
-  if (preg_match('/^(\w+[+ ])+\w+$/', $str)) {
-    // The '+' character in a query string may be parsed as ' '.
+  // Determine if the string has 'or' operators (plus signs) or 'and' operators
+  // (commas) and split the string accordingly. If we have an 'and' operator,
+  // spaces are treated as part of the word being split, but otherwise they are
+  // treated the same as a plus sign.
+  $or_wildcard = '[^\s+,]';
+  $and_wildcard = '[^+,]';
+  if (preg_match("/^({$or_wildcard}+[+ ])+{$or_wildcard}+$/", $str)) {
     $handler->operator = 'or';
     $handler->value = preg_split('/[+ ]/', $str);
   }
-  else if (preg_match('/^((\w|\s)+,)*(\w|\s)+$/', $str)) {
+  elseif (preg_match("/^({$and_wildcard}+,)*{$and_wildcard}+$/", $str)) {
     $handler->operator = 'and';
     $handler->value = explode(',', $str);
   }
@@ -1085,7 +1110,8 @@ function views_break_phrase_string($str, &$handler = NULL) {
 
   return $handler;
 }
-/*
+
+/**
  * Break x,y,z and x+y+z into an array. Numeric only.
  *
  * @param $str
@@ -1386,10 +1412,10 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set
  */
 
 /**
- * @defgroup views_join_handlers Views' join handlers
+ * @defgroup views_join_handlers Views join handlers
  * @{
  * Handlers to tell Views how to join tables together.
-
+ *
  * Here is how you do complex joins:
  *
  * @code
@@ -1408,6 +1434,7 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set
  * }
  * @endcode
  */
+
 /**
  * A function class to represent a join and create the SQL necessary
  * to implement the join.
@@ -1425,9 +1452,9 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set
  *   - type: either LEFT (default) or INNER
  *   - extra: An array of extra conditions on the join. Each condition is
  *     either a string that's directly added, or an array of items:
- *   - - table: if not set, current table; if NULL, no table. This field can't
- *       be set in the cached definition because it can't know aliases; this field
- *       can only be used by realtime joins.
+ *   - - table: If not set, current table; if NULL, no table. If you specify a
+ *       table in cached definition, Views will try to load from an existing
+ *       alias. If you use realtime joins, it works better.
  *   - - field: Field or formula
  *       in formulas we can reference the right table by using %alias
  *       @see SelectQueryInterface::addJoin()
@@ -1479,14 +1506,14 @@ class views_join {
   /**
    * Build the SQL for the join this object represents.
    *
+   * When possible, try to use table alias instead of table names.
+   *
    * @param $select_query
    *   An implementation of SelectQueryInterface.
    * @param $table
    *   The base table to join.
    * @param $view_query
    *   The source query, implementation of views_plugin_query.
-   * @return
-   *
    */
   function build_join($select_query, $table, $view_query) {
     if (empty($this->definition['table formula'])) {
@@ -1521,7 +1548,14 @@ class views_join {
             $join_table = $table['alias'] . '.';
           }
           elseif (isset($info['table'])) {
-            $join_table = $info['table'] . '.';
+            // If we're aware of a table alias for this table, use the table
+            // alias instead of the table name.
+            if (isset($left) && $left['table'] == $info['table']) {
+              $join_table = $left['alias'] . '.';
+            }
+            else {
+              $join_table = $info['table'] . '.';
+            }
           }
 
           // Convert a single-valued array of values to the single-value case,
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/plugins.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/plugins.inc
index 51d0e93..bf09573 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/plugins.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/plugins.inc
@@ -1,15 +1,15 @@
 <?php
+
 /**
- * @file plugins.inc
+ * @file
  * Built in plugins for Views output handling.
- *
  */
 
 // @todo: Remove this once update.php can use the registry
 views_include('base');
 
 /**
- * Implements hook_views_plugins
+ * Implements hook_views_plugins().
  */
 function views_views_plugins() {
   $js_path = drupal_get_path('module', 'ctools') . '/js';
@@ -86,6 +86,7 @@ function views_views_plugins() {
         'title' => t('Embed'),
         'help' => t('Provide a display which can be embedded using the views api.'),
         'handler' => 'views_plugin_display_embed',
+        'theme' => 'views_view',
         'uses hook menu' => FALSE,
         'use ajax' => TRUE,
         'use pager' => TRUE,
@@ -135,6 +136,7 @@ function views_views_plugins() {
         'help' => t('Displays rows in a grid.'),
         'handler' => 'views_plugin_style_grid',
         'theme' => 'views_view_grid',
+        'uses fields' => FALSE,
         'uses row plugin' => TRUE,
         'uses row class' => TRUE,
         'uses options' => TRUE,
@@ -193,6 +195,16 @@ function views_views_plugins() {
         'type' => 'normal',
         'help topic' => 'style-row-fields',
       ),
+      'rss_fields' => array(
+        'title' => t('Fields'),
+        'help' => t('Display fields as RSS items.'),
+        'handler' => 'views_plugin_row_rss_fields',
+        'theme' => 'views_view_row_rss',
+        'uses fields' => TRUE,
+        'uses options' => TRUE,
+        'type' => 'feed',
+        'help topic' => 'style-row-fields',
+      ),
     ),
     'argument default' => array(
       'parent' => array(
@@ -475,6 +487,11 @@ class views_plugin extends views_object {
   var $plugin_type = NULL;
 
   /**
+   * The plugin name of this plugin, for example table or full.
+   */
+  var $plugin_name = NULL;
+
+  /**
    * Init will be called after construct, when the plugin is attached to a
    * view and a display.
    */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/view.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/view.inc
index 4848879..90dd3a2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/view.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/includes/view.inc
@@ -1,11 +1,12 @@
 <?php
+
 /**
- * @file view.inc
+ * @file
  * Provides the view object type and associated methods.
  */
 
 /**
- * @defgroup views_objects Objects that represent a View or part of a view.
+ * @defgroup views_objects Objects that represent a View or part of a view
  * @{
  * These objects are the core of Views do the bulk of the direction and
  * storing of data. All database activity is in these objects.
@@ -91,7 +92,13 @@ class view extends views_db_object {
 
   var $use_ajax = FALSE;
 
-  // Where the results of a query will go.
+  /**
+   * Where the results of a query will go.
+   *
+   * The array must use a numeric index starting at 0.
+   *
+   * @var array
+   */
   var $result = array();
 
   // May be used to override the current pager info.
@@ -122,7 +129,7 @@ class view extends views_db_object {
   // Stores the next steps of form items to handle.
   // It's an array of stack items, which contain the form id, the type of form,
   // the view, the display and some additional arguments.
-  // @see views_ui_add_form_to_stack().
+  // @see views_ui_add_form_to_stack()
   // var $stack;
 
   /**
@@ -300,24 +307,40 @@ class view extends views_db_object {
    */
   function set_current_page($page) {
     $this->current_page = $page;
+
+    // If the pager is already initialized, pass it through to the pager.
+    if (!empty($this->query->pager)) {
+      return $this->query->pager->set_current_page($page);
+    }
+
   }
 
   /**
    * Get the current page from the pager.
    */
   function get_current_page() {
+    // If the pager is already initialized, pass it through to the pager.
     if (!empty($this->query->pager)) {
       return $this->query->pager->get_current_page();
     }
+
+    if (isset($this->current_page)) {
+      return $this->current_page;
+    }
   }
 
   /**
    * Get the items per page from the pager.
    */
   function get_items_per_page() {
+    // If the pager is already initialized, pass it through to the pager.
     if (!empty($this->query->pager)) {
       return $this->query->pager->get_items_per_page();
     }
+
+    if (isset($this->items_per_page)) {
+      return $this->items_per_page;
+    }
   }
 
   /**
@@ -336,9 +359,14 @@ class view extends views_db_object {
    * Get the pager offset from the pager.
    */
   function get_offset() {
+    // If the pager is already initialized, pass it through to the pager.
     if (!empty($this->query->pager)) {
       return $this->query->pager->get_offset();
     }
+
+    if (isset($this->offset)) {
+      return $this->offset;
+    }
   }
 
   /**
@@ -575,7 +603,7 @@ class view extends views_db_object {
     foreach ($this->display_handler->get_option('relationships') as $id => $options) {
       $options['table'] = views_move_table($options['table']);
       $data = views_fetch_data($options['table'], FALSE);
-      if (isset($data[$options['field']])) {
+      if (isset($data[$options['field']]['relationship']['base'])) {
         $base_tables[$data[$options['field']]['relationship']['base']] = TRUE;
       }
     }
@@ -1035,27 +1063,53 @@ class view extends views_db_object {
 
   /**
    * Internal method to build an individual set of handlers.
+   *
+   * @param string $key
+   *    The type of handlers (filter etc.) which should be iterated over to
+   *    build the relationship and query information.
    */
   function _build($key) {
     $handlers = &$this->$key;
     foreach ($handlers as $id => $data) {
+
       if (!empty($handlers[$id]) && is_object($handlers[$id])) {
-        // Give this handler access to the exposed filter input.
-        if (!empty($this->exposed_data)) {
-          $rc = $handlers[$id]->accept_exposed_input($this->exposed_data);
-          $handlers[$id]->store_exposed_input($this->exposed_data, $rc);
-          if (!$rc) {
-            continue;
+        $multiple_exposed_input = array(0 => NULL);
+        if ($handlers[$id]->multiple_exposed_input()) {
+          $multiple_exposed_input = $handlers[$id]->group_multiple_exposed_input($this->exposed_data);
+        }
+        foreach ($multiple_exposed_input as $group_id) {
+          // Give this handler access to the exposed filter input.
+          if (!empty($this->exposed_data)) {
+            $converted = FALSE;
+            if ($handlers[$id]->is_a_group()) {
+              $converted = $handlers[$id]->convert_exposed_input($this->exposed_data, $group_id);
+              $handlers[$id]->store_group_input($this->exposed_data, $converted);
+              if (!$converted) {
+                continue;
+              }
+            }
+            $rc = $handlers[$id]->accept_exposed_input($this->exposed_data);
+            $handlers[$id]->store_exposed_input($this->exposed_data, $rc);
+            if (!$rc) {
+              continue;
+            }
           }
+          $handlers[$id]->set_relationship();
+          $handlers[$id]->query($this->display_handler->use_group_by());
         }
-        $handlers[$id]->set_relationship();
-        $handlers[$id]->query($this->display_handler->use_group_by());
       }
     }
   }
 
   /**
    * Execute the view's query.
+   *
+   * @param string $display_id
+   *   The machine name of the display, which should be executed.
+   *
+   * @return bool
+   *   Return whether the executing was successful, for example an argument
+   *   could stop the process.
    */
   function execute($display_id = NULL) {
     if (empty($this->built)) {
@@ -1096,6 +1150,9 @@ class view extends views_db_object {
     }
     else {
       $this->query->execute($this);
+      // Enforce the array key rule as documented in
+      // views_plugin_query::execute().
+      $this->result = array_values($this->result);
       $this->_post_execute();
       if ($cache) {
         $cache->cache_set('results');
@@ -1112,7 +1169,16 @@ class view extends views_db_object {
   }
 
   /**
-   * Render this view for display.
+   * Render this view for a certain display.
+   *
+   * Note: You should better use just the preview function if you want to
+   * render a view.
+   *
+   * @param string $display_id
+   *   The machine name of the display, which should be rendered.
+   *
+   * @return (string|NULL)
+   *   Return the output of the rendered view or NULL if something failed in the process.
    */
   function render($display_id = NULL) {
     $this->execute($display_id);
@@ -1121,6 +1187,9 @@ class view extends views_db_object {
     if (!empty($this->build_info['fail'])) {
       return;
     }
+    if (!empty($this->view->build_info['denied'])) {
+      return;
+    }
 
     drupal_theme_initialize();
 
@@ -1172,7 +1241,13 @@ class view extends views_db_object {
         $function($this);
       }
 
-      // Let the theme play too, because pre render is a very themey thing.
+      // Let the themes play too, because pre render is a very themey thing.
+      foreach ($GLOBALS['base_theme_info'] as $base) {
+        $function = $base->name . '_views_pre_render';
+        if (function_exists($function)) {
+          $function($this);
+        }
+      }
       $function = $GLOBALS['theme'] . '_views_pre_render';
       if (function_exists($function)) {
         $function($this);
@@ -1196,7 +1271,13 @@ class view extends views_db_object {
       $function($this, $this->display_handler->output, $cache);
     }
 
-    // Let the theme play too, because post render is a very themey thing.
+    // Let the themes play too, because post render is a very themey thing.
+    foreach ($GLOBALS['base_theme_info'] as $base) {
+      $function = $base->name . '_views_post_render';
+      if (function_exists($function)) {
+        $function($this);
+      }
+    }
     $function = $GLOBALS['theme'] . '_views_post_render';
     if (function_exists($function)) {
       $function($this, $this->display_handler->output, $cache);
@@ -1211,7 +1292,19 @@ class view extends views_db_object {
   }
 
   /**
-   * Render a specific field via the field ID and the row #.
+   * Render a specific field via the field ID and the row #
+   *
+   * Note: You might want to use views_plugin_style::render_fields as it
+   * caches the output for you.
+   *
+   * @param string $field
+   *   The id of the field to be rendered.
+   *
+   * @param int $row
+   *   The row number in the $view->result which is used for the rendering.
+   *
+   * @return string
+   *   The rendered output of the field.
    */
   function render_field($field, $row) {
     if (isset($this->field[$field]) && isset($this->result[$row])) {
@@ -1291,6 +1384,9 @@ class view extends views_db_object {
       $function($this, $display_id, $this->args);
     }
 
+    // Allow hook_views_pre_view() to set the dom_id, then ensure it is set.
+    $this->dom_id = !empty($this->dom_id) ? $this->dom_id : md5($this->name . REQUEST_TIME . rand());
+
     // Allow the display handler to set up for execution
     $this->display_handler->pre_execute();
   }
@@ -1571,7 +1667,7 @@ class view extends views_db_object {
           $title = t('Home');
         }
         if ($title) {
-          $breadcrumb[] = l($title, $path, array('html' => true));
+          $breadcrumb[] = l($title, $path, array('html' => TRUE));
         }
       }
 
@@ -1708,28 +1804,42 @@ class view extends views_db_object {
     if ($this->vid == 'new') {
       $this->vid = NULL;
     }
+    // If there is no vid, check if a view with this machine name already exists.
+    elseif (empty($this->vid)) {
+      $vid = db_query("SELECT vid from {views_view} WHERE name = :name", array(':name' => $this->name))->fetchField();
+      $this->vid = $vid ? $vid : NULL;
+    }
 
-    // If we have no vid or our vid is a string, this is a new view.
-    if (!empty($this->vid)) {
-      // remove existing table entries
-      foreach ($this->db_objects() as $key) {
-        db_delete('views_' . $key)
-          ->condition('vid', $this->vid)
-          ->execute();
+    $transaction = db_transaction();
+
+    try {
+      // If we have no vid or our vid is a string, this is a new view.
+      if (!empty($this->vid)) {
+        // remove existing table entries
+        foreach ($this->db_objects() as $key) {
+          db_delete('views_' . $key)
+            ->condition('vid', $this->vid)
+            ->execute();
+        }
       }
-    }
 
-    $this->save_row(!empty($this->vid) ? 'vid' : FALSE);
+      $this->save_row(!empty($this->vid) ? 'vid' : FALSE);
 
-    // Save all of our subtables.
-    foreach ($this->db_objects() as $key) {
-      $this->_save_rows($key);
+      // Save all of our subtables.
+      foreach ($this->db_objects() as $key) {
+        $this->_save_rows($key);
+      }
+    }
+    catch (Exception $e) {
+      $transaction->rollback();
+      watchdog_exception('views', $e);
+      throw $e;
     }
 
     $this->save_locale_strings();
 
-    cache_clear_all('views_urls', 'cache_views');
-    cache_clear_all(); // clear the page cache as well.
+    // Clear caches.
+    views_invalidate_cache();
   }
 
   /**
@@ -1766,8 +1876,8 @@ class view extends views_db_object {
     cache_clear_all('views_query:' . $this->name, 'cache_views');
 
     if ($clear) {
-      cache_clear_all(); // this clears the block and page caches only.
-      menu_rebuild(); // force a menu rebuild when a view is deleted.
+      // Clear caches.
+      views_invalidate_cache();
     }
   }
 
@@ -1909,6 +2019,16 @@ class view extends views_db_object {
         unset($this->$key);
       }
     }
+
+    // These keys are checked by the next init, so instead of unsetting them,
+    // just set the default values.
+    $keys = array('items_per_page', 'offset', 'current_page');
+    foreach ($keys as $key) {
+      if (isset($this->$key)) {
+        $this->$key = NULL;
+      }
+    }
+
     $this->built = $this->executed = FALSE;
     $this->build_info = array();
     $this->attachment_before = '';
@@ -1925,6 +2045,7 @@ class view extends views_db_object {
     $this->init_display();
 
     $errors = array();
+    $this->display_errors = NULL;
 
     $current_display = $this->current_display;
     foreach ($this->display as $id => $display) {
@@ -1936,6 +2057,8 @@ class view extends views_db_object {
         $result = $this->display[$id]->handler->validate();
         if (!empty($result) && is_array($result)) {
           $errors = array_merge($errors, $result);
+          // Mark this display as having validation errors.
+          $this->display_errors[$id] = TRUE;
         }
       }
     }
@@ -1955,6 +2078,7 @@ class view extends views_db_object {
     $this->localization_plugin = views_get_plugin('localization', views_get_localization_plugin());
 
     if (empty($this->localization_plugin)) {
+      $this->localization_plugin = views_get_plugin('localization', 'none');
       return FALSE;
     }
 
@@ -1989,9 +2113,9 @@ class view extends views_db_object {
     $this->process_locale_strings('delete');
   }
 
- /**
-  * Export localized strings.
-  */
+  /**
+   * Export localized strings.
+   */
   function export_locale_strings() {
     $this->process_locale_strings('export');
   }
@@ -2136,7 +2260,7 @@ class views_db_object {
     }
     $schema = drupal_get_schema($this->db_table);
 
-    $output = $indent . '$' . $identifier . ' = new ' . get_class($this) . ";\n";
+    $output = $indent . '$' . $identifier . ' = new ' . get_class($this) . "();\n";
     // Go through our schema and build correlations.
     foreach ($schema['fields'] as $field => $info) {
       if (!empty($info['no export'])) {
@@ -2152,7 +2276,7 @@ class views_db_object {
 
         // serialized defaults must be set as serialized.
         if (isset($info['serialize'])) {
-          $this->$field = unserialize(db_decode_blob($this->$field));
+          $this->$field = unserialize($this->$field);
         }
       }
       $value = $this->$field;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax.js b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax.js
index 097c44a..82b332f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax.js
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax.js
@@ -1,6 +1,5 @@
 /**
- * @file ajax_admin.js
- *
+ * @file
  * Handles AJAX submission and response in Views UI.
  */
 (function ($) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax_view.js b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax_view.js
index a89d4aa..2a4012f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax_view.js
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/ajax_view.js
@@ -1,6 +1,5 @@
 /**
- * @file ajaxView.js
- *
+ * @file
  * Handles AJAX fetching of views, including filter submission and response.
  */
 (function ($) {
@@ -12,13 +11,13 @@ Drupal.behaviors.ViewsAjaxView = {};
 Drupal.behaviors.ViewsAjaxView.attach = function() {
   if (Drupal.settings && Drupal.settings.views && Drupal.settings.views.ajaxViews) {
     $.each(Drupal.settings.views.ajaxViews, function(i, settings) {
-      // @todo: Figure out where to store the object.
-      new Drupal.views.ajaxView(settings);
+      Drupal.views.instances[i] = new Drupal.views.ajaxView(settings);
     });
   }
 };
 
 Drupal.views = {};
+Drupal.views.instances = {};
 
 /**
  * Javascript object for a certain view.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/base.js b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/base.js
index 3cb649a..5855dce 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/base.js
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/base.js
@@ -1,6 +1,5 @@
 /**
- * @file base.js
- *
+ * @file
  * Some basic behaviors and utility functions for Views.
  */
 (function ($) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/jquery.ui.dialog.patch.js b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/jquery.ui.dialog.patch.js
index 52b2f12..d00e6ab 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/jquery.ui.dialog.patch.js
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/jquery.ui.dialog.patch.js
@@ -6,8 +6,8 @@
  *
  * @see http://bugs.jqueryui.com/ticket/4671
  * @see https://bugs.webkit.org/show_bug.cgi?id=19033
- * @see /views_ui.module
- * @see /js/jquery.ui.dialog.min.js
+ * @see views_ui.module
+ * @see js/jquery.ui.dialog.min.js
  *
  * This javascript patch overwrites the $.ui.dialog.overlay.events object to remove
  * the mousedown, mouseup and click events from the list of events that are bound
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/views-admin.js b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/views-admin.js
index e2cd16f..1eb3897 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/js/views-admin.js
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/js/views-admin.js
@@ -1,3 +1,7 @@
+/**
+ * @file
+ * Some basic behaviors and utility functions for Views UI.
+ */
 Drupal.viewsUi = {};
 
 Drupal.behaviors.viewsUiEditView = {};
@@ -225,7 +229,7 @@ Drupal.behaviors.viewsUiRenderAddViewButton.attach = function (context, settings
   if (!$menu.length) {
     return;
   }
-  var $addDisplayDropdown = $('<li class="add"><a href="#"><span class="icon add"></span>Add</a><ul class="action-list" style="display:none;"></ul></li>');
+  var $addDisplayDropdown = $('<li class="add"><a href="#"><span class="icon add"></span>' + Drupal.t('Add') + '</a><ul class="action-list" style="display:none;"></ul></li>');
   var $displayButtons = $menu.nextAll('input.add-display').detach();
   $displayButtons.appendTo($addDisplayDropdown.find('.action-list')).wrap('<li>')
     .parent().first().addClass('first').end().last().addClass('last');
@@ -772,6 +776,14 @@ Drupal.behaviors.viewsFilterConfigSelectAll.attach = function(context) {
       $(this).attr('checked', checked);
     });
   });
+  // Uncheck the select all checkbox if any of the others are unchecked.
+  $('#views-ui-config-item-form div.form-type-checkbox').not($('.form-item-options-value-all')).find('input[type=checkbox]').each(function() {
+    $(this).click(function() {
+      if ($(this).is('checked') == 0) {
+        $('#edit-options-value-all').removeAttr('checked');
+      }
+    });
+  });
 };
 
 /**
@@ -815,7 +827,7 @@ Drupal.behaviors.viewsRemoveIconClass.attach = function (context, settings) {
     $('.icon', $this).removeClass('icon');
     $('.horizontal', $this).removeClass('horizontal');
   });
-}
+};
 
 /**
  * Change "Expose filter" buttons into checkboxes.
@@ -823,7 +835,7 @@ Drupal.behaviors.viewsRemoveIconClass.attach = function (context, settings) {
 Drupal.behaviors.viewsUiCheckboxify = {};
 Drupal.behaviors.viewsUiCheckboxify.attach = function (context, settings) {
   var $ = jQuery;
-  var $buttons = $('#edit-options-expose-button-button').once('views-ui-checkboxify');
+  var $buttons = $('#edit-options-expose-button-button, #edit-options-group-button-button').once('views-ui-checkboxify');
   var length = $buttons.length;
   var i;
   for (i = 0; i < length; i++) {
@@ -832,6 +844,33 @@ Drupal.behaviors.viewsUiCheckboxify.attach = function (context, settings) {
 };
 
 /**
+ * Change the default widget to select the default group according to the
+ * selected widget for the exposed group.
+ */
+Drupal.behaviors.viewsUiChangeDefaultWidget = {};
+Drupal.behaviors.viewsUiChangeDefaultWidget.attach = function (context, settings) {
+  var $ = jQuery;
+  function change_default_widget(multiple) {
+    if (multiple) {
+      $('input.default-radios').hide();
+      $('td.any-default-radios-row').parent().hide();
+      $('input.default-checkboxes').show();
+    }
+    else {
+      $('input.default-checkboxes').hide();
+      $('td.any-default-radios-row').parent().show();
+      $('input.default-radios').show();
+    }
+  }
+  // Update on widget change.
+  $('input[name="options[group_info][multiple]"]').change(function() {
+    change_default_widget($(this).attr("checked"));
+  });
+  // Update the first time the form is rendered.
+  $('input[name="options[group_info][multiple]"]').trigger('change');
+};
+
+/**
  * Attaches an expose filter button to a checkbox that triggers its click event.
  *
  * @param button
@@ -840,13 +879,14 @@ Drupal.behaviors.viewsUiCheckboxify.attach = function (context, settings) {
 Drupal.viewsUi.Checkboxifier = function (button) {
   var $ = jQuery;
   this.$button = $(button);
-  this.$parent = this.$button.parent('div.views-expose');
-  this.$checkbox = this.$parent.find('input:checkbox');
+  this.$parent = this.$button.parent('div.views-expose, div.views-grouped');
+  this.$input = this.$parent.find('input:checkbox, input:radio');
   // Hide the button and its description.
   this.$button.hide();
-  this.$parent.find('.exposed-description').hide();
+  this.$parent.find('.exposed-description, .grouped-description').hide();
+
+  this.$input.click($.proxy(this, 'clickHandler'));
 
-  this.$checkbox.click($.proxy(this, 'clickHandler'));
 };
 
 /**
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator.views.inc
index 0ca9e33..0fcae2c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator.views.inc
@@ -1,20 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for aggregator.module
- */
 
 /**
- * @defgroup views_aggregator_module aggregator.module handlers
- *
- * Includes the core 'aggregator_feed,' 'aggregator_category,' and 'aggregator_item'
- * tables.
+ * @file
+ * Provide views data and handlers for aggregator.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function aggregator_views_data() {
   // ----------------------------------------------------------------------
@@ -249,6 +243,9 @@ function aggregator_views_data() {
     'filter' => array(
       'handler' => 'views_handler_filter_string',
     ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
   );
 
   // link
@@ -263,7 +260,6 @@ function aggregator_views_data() {
     'sort' => array(
       'handler' => 'views_handler_sort',
     ),
-    // Information for accepting a title as a filter
     'filter' => array(
       'handler' => 'views_handler_filter_string',
     ),
@@ -281,7 +277,6 @@ function aggregator_views_data() {
     'sort' => array(
       'handler' => 'views_handler_sort_date',
     ),
-    // Information for accepting a title as a filter
     'filter' => array(
       'handler' => 'views_handler_filter_date',
     ),
@@ -299,7 +294,6 @@ function aggregator_views_data() {
       'handler' => 'views_handler_field_xss',
       'click sortable' => FALSE,
      ),
-    // Information for accepting a title as a filter
     'filter' => array(
       'handler' => 'views_handler_filter_string',
     ),
@@ -390,7 +384,7 @@ function aggregator_views_data() {
 }
 
 /**
- * Implements hook_views_plugins
+ * Implements hook_views_plugins().
  */
 function aggregator_views_plugins() {
   return array(
@@ -410,6 +404,3 @@ function aggregator_views_plugins() {
     ),
   );
 }
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_category_cid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_category_cid.inc
index c67832c..92ae8b7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_category_cid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_category_cid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_aggregator_category_cid.
+ */
+
+/**
  * Argument handler to accept an aggregator category id.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_fid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_fid.inc
index ed11288..4147626 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_fid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_fid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_aggregator_fid.
+ */
+
+/**
  * Argument handler to accept an aggregator feed id.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_iid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_iid.inc
index fe19ab6..d959b04 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_iid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_iid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_aggregator_iid.
+ */
+
+/**
  * Argument handler to accept an aggregator item id.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_category.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_category.inc
index 0564810..99fffa1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_category.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_category.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_aggregator_category.
+ */
+
+/**
  * Field handler to provide simple renderer that allows linking to aggregator
  * category.
  *
@@ -17,7 +22,7 @@ class views_handler_field_aggregator_category extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_category'] = array('default' => FALSE);
+    $options['link_to_category'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc
index d428f44..d8bf578 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc
@@ -1,6 +1,11 @@
 <?php
 
- /**
+/**
+ * @file
+ * Definition of views_handler_field_aggregator_title_link.
+ */
+
+/**
  * Field handler that turns an item's title into a clickable link to the original
  * source article.
  *
@@ -15,7 +20,7 @@ class views_handler_field_aggregator_title_link extends views_handler_field {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['display_as_link'] = array('default' => TRUE);
+    $options['display_as_link'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_xss.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_xss.inc
index 0813e35..d39b101 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_xss.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_xss.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_aggregator_xss.
+ */
+
 /**
  * Filters htmls tags from item.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_filter_aggregator_category_cid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_filter_aggregator_category_cid.inc
index 27cf674..f9931c8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_filter_aggregator_category_cid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_handler_filter_aggregator_category_cid.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_aggregator_category_cid.
+ */
+
 /**
  * Filter by aggregator category cid
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc
index 35aadec..672952e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the Aggregator Item RSS row style plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book.views.inc
index 2b1a82a..15a2183 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book.views.inc
@@ -1,17 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for book.module
- */
 
 /**
- * @defgroup views_book_module book.module handlers
+ * @file
+ * Provide views data and handlers for book.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function book_views_data() {
   // ----------------------------------------------------------------------
@@ -119,5 +116,16 @@ function book_views_data() {
 }
 
 /**
- * @}
+ * Implements hook_views_plugins().
  */
+function book_views_plugins() {
+ return array(
+   'module' => 'views',
+   'argument default' => array(
+     'book_root' => array(
+       'title' => t('Book root from current node'),
+       'handler' => 'views_plugin_argument_default_book_root'
+     ),
+   ),
+ );
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book/views_plugin_argument_default_book_root.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book/views_plugin_argument_default_book_root.inc
new file mode 100644
index 0000000..1ce3046
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/book/views_plugin_argument_default_book_root.inc
@@ -0,0 +1,21 @@
+<?php
+/**
+ * @file
+ * Contains the book root from current node argument default plugin.
+ */
+
+/**
+ * Default argument plugin to get the current node's book root.
+ */
+class views_plugin_argument_default_book_root extends views_plugin_argument_default_node {
+  function get_argument() {
+    // Use the argument_default_node plugin to get the nid argument.
+    $nid = parent::get_argument();
+    if (!empty($nid)) {
+      $node = node_load($nid);
+      if (isset($node->book['bid'])) {
+        return $node->book['bid'];
+      }
+    }
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment.views.inc
index e22ccd5..65ef18c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment.views.inc
@@ -1,18 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for comment.module
- */
 
 /**
- * @defgroup views_comment_module comment.module handlers
+ * @file
+ * Provide views data and handlers for comment.module.
  *
- * Includes the tables 'comment' and 'node_comment_statistics'
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 
 function comment_views_data() {
@@ -172,6 +168,28 @@ function comment_views_data() {
     ),
   );
 
+
+  // Language field
+  if (module_exists('locale')) {
+    $data['comment']['language'] = array(
+      'title' => t('Language'),
+      'help' => t('The language the comment is in.'),
+      'field' => array(
+        'handler' => 'views_handler_field_locale_language',
+        'click sortable' => TRUE,
+      ),
+      'filter' => array(
+        'handler' => 'views_handler_filter_locale_language',
+      ),
+      'argument' => array(
+        'handler' => 'views_handler_argument_locale_language',
+      ),
+      'sort' => array(
+        'handler' => 'views_handler_sort',
+      ),
+    );
+  }
+
   $data['comments']['timestamp']['moved to'] = array('comment', 'changed');
   // changed (when comment was last updated)
   $data['comment']['changed'] = array(
@@ -505,7 +523,7 @@ function comment_views_data() {
       'handler' => 'views_handler_argument_numeric',
     ),
     'field' => array(
-      'handler' => 'views_handler_filter_user_name',
+      'handler' => 'views_handler_field_numeric',
     ),
   );
 
@@ -585,7 +603,7 @@ function comment_views_data_alter(&$data) {
 }
 
 /**
- * Implements hook_views_plugins
+ * Implements hook_views_plugins().
  */
 function comment_views_plugins() {
   return array(
@@ -642,7 +660,3 @@ function template_preprocess_views_view_row_comment(&$vars) {
   }
   $vars['comment'] = drupal_render($build);
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc
index 11144a9..d821f32 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_comment_user_uid.
+ */
+
+/**
  * Argument handler to accept a user id to check for nodes that
  * user posted or commented on.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment.inc
index b855b63..7ca3256 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_comment.
+ */
+
 /**
  * Field handler to allow linking to a comment.
  *
@@ -18,8 +24,8 @@ class views_handler_field_comment extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_comment'] = array('default' => TRUE);
-    $options['link_to_node'] = array('default' => FALSE);
+    $options['link_to_comment'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['link_to_node'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc
index 8872a6a..4840a1e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_comment_depth.
+ */
+
 /**
  * Field handler to display the depth of a comment.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc
index e0e0ba7..162924e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_comment_link.
+ */
+
 /**
  * Base field handler to present a link.
  *
@@ -12,7 +18,7 @@ class views_handler_field_comment_link extends views_handler_field_entity {
   function option_definition() {
     $options = parent::option_definition();
     $options['text'] = array('default' => '', 'translatable' => TRUE);
-    $options['link_to_node'] = array('default' => FALSE);
+    $options['link_to_node'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc
index 8063e20..0953d0c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc
@@ -1,6 +1,11 @@
 <?php
+
 /**
  * @file
+ * Definition of views_handler_field_comment_link_approve.
+ */
+
+/**
  * Provides a comment approve link.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc
index b74661b..c55ac1c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_comment_link_delete.
+ */
+
 /**
  * Field handler to present a link to delete a node.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc
index ffd1f93..0b06c0e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_comment_link_edit.
+ */
+
 /**
  * Field handler to present a link node edit.
  *
@@ -7,7 +13,7 @@
 class views_handler_field_comment_link_edit extends views_handler_field_comment_link {
   function option_definition() {
     $options = parent::option_definition();
-    $options['destination'] = array('default' => FALSE);
+    $options['destination'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_reply.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_reply.inc
index 1564164..47d0f17 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_reply.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_link_reply.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_comment_link_reply.
+ */
+
+/**
  * Field handler to present a link to delete a node.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc
index 0e4f610..7feecfb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_comment_node_link.
+ */
+
 /**
  * Handler for showing comment module's node link.
  *
@@ -22,7 +28,7 @@ class views_handler_field_comment_node_link extends views_handler_field_entity {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['teaser'] = array('default' => 0);
+    $options['teaser'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
@@ -32,7 +38,6 @@ class views_handler_field_comment_node_link extends views_handler_field_entity {
       '#title' => t('Show teaser-style link'),
       '#default_value' => $this->options['teaser'],
       '#description' => t('Show the comment link in the form used on standard node teasers, rather than the full node form.'),
-      '#fieldset' => 'more',
     );
 
     parent::options_form($form, $form_state);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc
index 6b6186e..887a74e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_comment_username.
+ */
+
 /**
  * Field handler to allow linking to a user account or homepage.
  *
@@ -16,7 +22,7 @@ class views_handler_field_comment_username extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_user'] = array('default' => TRUE);
+    $options['link_to_user'] = array('default' => TRUE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_last_comment_timestamp.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_last_comment_timestamp.inc
index 2bfa970..e7cf8bd 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_last_comment_timestamp.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_last_comment_timestamp.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_last_comment_timestamp.
+ */
+
+/**
  * Field handler to display the timestamp of a comment with the count of comments.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_comment_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_comment_name.inc
index 63f948f..c9c6885 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_comment_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_comment_name.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_ncs_last_comment_name.
+ */
+
+/**
  * Field handler to present the name of the last comment poster.
  *
  * @ingroup views_field_handlers
@@ -28,7 +33,7 @@ class views_handler_field_ncs_last_comment_name extends views_handler_field {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['link_to_user'] = array('default' => TRUE);
+    $options['link_to_user'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_updated.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_updated.inc
index 3950ffb..d1d7306 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_updated.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_ncs_last_updated.inc
@@ -1,4 +1,9 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_ncs_last_updated.
+ */
 /**
  * Field handler to display the newer of last comment / node updated.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_comment.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_comment.inc
index 6892fed..d863c44 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_comment.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_comment.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_node_comment.
+ */
+
+/**
  * Display node comment status.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_new_comments.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_new_comments.inc
index 0ecdfc6..70b0581 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_new_comments.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_field_node_new_comments.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_node_new_comments.
+ */
+
+/**
  * Field handler to display the number of new comments.
  *
  * @ingroup views_field_handlers
@@ -26,7 +31,7 @@ class views_handler_field_node_new_comments extends views_handler_field_numeric
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['link_to_comment'] = array('default' => TRUE);
+    $options['link_to_comment'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc
index 4f9e711..e76ebb7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_comment_user_uid.
+ */
+
+/**
  * Filter handler to accept a user id to check for nodes that user posted or
  * commented on.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_ncs_last_updated.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_ncs_last_updated.inc
index 3818db9..2319edf 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_ncs_last_updated.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_ncs_last_updated.inc
@@ -1,6 +1,12 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_ncs_last_updated.
+ */
+
 /**
- * Filter handler for the newer of last comment / node updated
+ * Filter handler for the newer of last comment / node updated.
  *
  * @ingroup views_filter_handlers
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_node_comment.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_node_comment.inc
index 659eaa6..befce10 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_node_comment.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_filter_node_comment.inc
@@ -1,7 +1,12 @@
 <?php
 
 /**
- * Filter based on comment node status
+ * @file
+ * Definition of views_handler_filter_node_comment.
+ */
+
+/**
+ * Filter based on comment node status.
  *
  * @ingroup views_filter_handlers
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc
index e529b2a..e513a93 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_comment_thread.inc
@@ -1,6 +1,14 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_sort_comment_thread.
+ */
+
 /**
- * Sort handler for ordering by thread
+ * Sort handler for ordering by thread.
+ *
+ * @ingroup views_sort_handlers
  */
 class views_handler_sort_comment_thread extends views_handler_sort {
   function query() {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_comment_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_comment_name.inc
index 8eca177..613045a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_comment_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_comment_name.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_sort_ncs_last_comment_name.
+ */
+
 /**
  * Sort handler to sort by last comment name which might be in 2 different
  * fields.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc
index 04b01a1..83f0f54 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_sort_ncs_last_updated.
+ */
+
 /**
  * Sort handler for the newer of last comment / node updated.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc
index 7576bb5..d287b8e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the comment RSS row style plugin.
@@ -15,7 +16,7 @@ class views_plugin_row_comment_rss extends views_plugin_row {
     $options = parent::option_definition();
 
     $options['item_length'] = array('default' => 'default');
-    $options['links'] = FALSE;
+    $options['links'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc
index 284fa5f..f78fa36 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the node RSS row style plugin.
@@ -27,7 +28,7 @@ class views_plugin_row_comment_view extends views_plugin_row {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['links'] = array('default' => TRUE);
+    $options['links'] = array('default' => TRUE, 'bool' => TRUE);
     $options['view_mode'] = array('default' => 'full');
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact.views.inc
index 85bcb94..412d824 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact.views.inc
@@ -1,10 +1,16 @@
 <?php
+
 /**
  * @file
- * Provide views data and handlers for contact.module
+ * Provide views data and handlers for contact.module.
+ *
+ * @ingroup views_module_handlers
  */
 
-function contact_views_data() {
+/**
+ * Implements hook_views_data_alter().
+ */
+function contact_views_data_alter(&$data) {
   $data['users']['contact'] = array(
     'field' => array(
       'title' => t('Link to contact page'),
@@ -12,5 +18,4 @@ function contact_views_data() {
       'handler' => 'views_handler_field_contact_link',
     ),
   );
-  return $data;
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc
index 0a44f21..9d22f01 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_contact_link.
+ */
+
 /**
  * A field that links to the user contact page, if access is permitted.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field.views.inc
index dd4363f..fe1968b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field.views.inc
@@ -2,17 +2,13 @@
 
 /**
  * @file
- * Provide Views data and handlers for field.module
- */
-
-/**
- * @defgroup views_field_module field.module handlers
+ * Provide Views data and handlers for field.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  *
  * Field modules can implement hook_field_views_data() to override
  * the default behavior for adding fields.
@@ -41,7 +37,7 @@ function field_views_data() {
 }
 
 /**
- * Implements hook_views_data_alter()
+ * Implements hook_views_data_alter().
  *
  * Field modules can implement hook_field_views_data_views_data_alter() to
  * alter the views data on a per field basis. This is weirdly named so as
@@ -342,7 +338,7 @@ function field_views_field_default_views_data($field) {
         'handler' => $argument,
         'additional fields' => $additional_fields,
         'field_name' => $field['field_name'],
-        'empty field name' => t('<No value>'),
+        'empty field name' => t('- No value -'),
       );
       $data[$table][$column_real_name]['filter'] = array(
         'field' => $column_real_name,
@@ -381,7 +377,7 @@ function field_views_field_default_views_data($field) {
           'table' => $table,
           'handler' => 'views_handler_argument_numeric',
           'additional fields' => $additional_fields,
-          'empty field name' => t('<No value>'),
+          'empty field name' => t('- No value -'),
           'field_name' => $field['field_name'],
         );
         $data[$table]['delta']['filter'] = array(
@@ -412,18 +408,19 @@ function field_views_field_default_views_data($field) {
 function list_field_views_data($field) {
   $data = field_views_field_default_views_data($field);
   foreach ($data as $table_name => $table_data) {
-    foreach ($table_data as $field => $field_data) {
-      if (isset($field_data['filter']) && $field != 'delta') {
-        $data[$table_name][$field]['filter']['handler'] = 'views_handler_filter_field_list';
+    foreach ($table_data as $field_name => $field_data) {
+      if (isset($field_data['filter']) && $field_name != 'delta') {
+        $data[$table_name][$field_name]['filter']['handler'] = 'views_handler_filter_field_list';
       }
-      if (isset($field_data['argument']) && $field != 'delta') {
-        $data[$table_name][$field]['argument']['handler'] = 'views_handler_argument_field_list';
+      if (isset($field_data['argument']) && $field_name != 'delta') {
+        if ($field['type'] == 'list_text') {
+          $data[$table_name][$field_name]['argument']['handler'] = 'views_handler_argument_field_list_string';
+        }
+        else {
+          $data[$table_name][$field_name]['argument']['handler'] = 'views_handler_argument_field_list';
+        }
       }
     }
   }
   return $data;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list.inc
index f8f10e9..e0f7abe 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list.inc
@@ -1,18 +1,21 @@
 <?php
+
 /**
  * @file
- * Contains views_handler_argument_field_list handler
+ * Definition of views_handler_argument_field_list.
  */
 
 /**
- * Argument handler for list field to show the human readable name in the summary.
+ * Argument handler for list field to show the human readable name in the
+ * summary.
  *
  * @ingroup views_argument_handlers
  */
 class views_handler_argument_field_list extends views_handler_argument_numeric {
   /**
-   * @var array
    * Stores the allowed values of this field.
+   *
+   * @var array
    */
   var $allowed_values = NULL;
 
@@ -24,7 +27,7 @@ class views_handler_argument_field_list extends views_handler_argument_numeric {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['summary']['contains']['human'] = array('default' => FALSE);
+    $options['summary']['contains']['human'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -35,7 +38,7 @@ class views_handler_argument_field_list extends views_handler_argument_numeric {
     $form['summary']['human'] = array(
       '#title' => t('Display list value as human readable'),
       '#type' => 'checkbox',
-      '#default_value' => $this->options['summary']['human'],#
+      '#default_value' => $this->options['summary']['human'],
       '#dependency' => array('radio:options[default_action]' => array('summary')),
     );
   }
@@ -53,4 +56,3 @@ class views_handler_argument_field_list extends views_handler_argument_numeric {
     }
   }
 }
-
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list_string.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list_string.inc
new file mode 100644
index 0000000..67a9f2d
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_argument_field_list_string.inc
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_field_list_text.
+ */
+
+/**
+ * Argument handler for list field to show the human readable name in the
+ * summary.
+ *
+ * @ingroup views_argument_handlers
+ */
+class views_handler_argument_field_list_string extends views_handler_argument_string {
+  /**
+   * Stores the allowed values of this field.
+   *
+   * @var array
+   */
+  var $allowed_values = NULL;
+
+  function init(&$view, &$options) {
+    parent::init($view, $options);
+    $field = field_info_field($this->definition['field_name']);
+    $this->allowed_values = list_allowed_values($field);
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['summary']['contains']['human'] = array('default' => FALSE, 'bool' => TRUE);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['summary']['human'] = array(
+      '#title' => t('Display list value as human readable'),
+      '#type' => 'checkbox',
+      '#default_value' => $this->options['summary']['human'],
+      '#dependency' => array('radio:options[default_action]' => array('summary')),
+    );
+  }
+
+
+  function summary_name($data) {
+    $value = $data->{$this->name_alias};
+    // If the list element has a human readable name show it,
+    if (isset($this->allowed_values[$value]) && !empty($this->options['summary']['human'])) {
+      return $this->case_transform(field_filter_xss($this->allowed_values[$value]), $this->options['case']);
+    }
+    // else fallback to the key.
+    else {
+      return $this->case_transform(check_plain($value), $this->options['case']);
+    }
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_field_field.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_field_field.inc
index 8e0b767..b50a0ae 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_field_field.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_field_field.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_field.
+ */
+
+/**
  * Helper function: Return an array of formatter options for a field type.
  *
  * Borrowed from field_ui.
@@ -28,19 +33,54 @@ function _field_view_formatter_options($field_type = NULL) {
 }
 
 /**
- * A field that displays fields.
+ * A field that displays fieldapi fields.
+ *
+ * @ingroup views_field_handlers
  */
 class views_handler_field_field extends views_handler_field {
   /**
    * An array to store field renderable arrays for use by render_items.
+   *
+   * @var array
    */
   public $items = array();
 
   /**
-   * Store the field informations.
+   * Store the field information.
+   *
+   * @var array
    */
   public $field_info = array();
 
+
+  /**
+   * Does the field supports multiple field values.
+   *
+   * @var bool
+   */
+  public $multiple;
+
+  /**
+   * Does the rendered fields get limited.
+   *
+   * @var bool
+   */
+  public $limit_values;
+
+  /**
+   * A shortcut for $view->base_table.
+   *
+   * @var string
+   */
+  public $base_table;
+
+  /**
+   * Store the field instance.
+   *
+   * @var array
+   */
+  public $instance;
+
   function init(&$view, &$options) {
     parent::init($view, $options);
 
@@ -68,10 +108,19 @@ class views_handler_field_field extends views_handler_field {
         $this->limit_values = TRUE;
       }
     }
+
+    // Convert old style entity id group column to new format.
+    // @todo Remove for next major version.
+    if ($this->options['group_column'] == 'entity id') {
+      $this->options['group_column'] = 'entity_id';
+    }
   }
 
   /**
-   * Return TRUE if the user has access to view this field.
+   * Check whether current user has access to this handler.
+   *
+   * @return bool
+   *   Return TRUE if the user has access to view this field.
    */
   function access() {
     $base_table = $this->get_base_table();
@@ -80,6 +129,9 @@ class views_handler_field_field extends views_handler_field {
 
   /**
    * Set the base_table and base_table_alias.
+   *
+   * @return string
+   *   The base table which is used in the current view "context".
    */
   function get_base_table() {
     if (!isset($this->base_table)) {
@@ -170,7 +222,7 @@ class views_handler_field_field extends views_handler_field {
         $options = array($this->options['group_column'] => $this->options['group_column']);
       }
 
-      $options += $this->options['group_columns'];
+      $options += is_array($this->options['group_columns']) ? $this->options['group_columns'] : array();
 
 
       $fields = array();
@@ -206,7 +258,8 @@ class views_handler_field_field extends views_handler_field {
                                 $this->view->display_handler->options['field_language']);
         $placeholder = $this->placeholder();
         $language_fallback_candidates = array($language);
-        if (variable_get('locale_field_language_fallback', TRUE) && module_exists('locale')) {
+        if (variable_get('locale_field_language_fallback', TRUE)) {
+          require_once DRUPAL_ROOT . '/includes/language.inc';
           $language_fallback_candidates = array_merge($language_fallback_candidates, language_fallback_get_candidates());
         }
         else {
@@ -312,6 +365,7 @@ class views_handler_field_field extends views_handler_field {
     // Options used for multiple value fields.
     $options['group_rows'] = array(
       'default' => TRUE,
+      'bool' => TRUE,
     );
     // If we know the exact number of allowed values, then that can be
     // the default. Otherwise, default to 'all'.
@@ -323,9 +377,11 @@ class views_handler_field_field extends views_handler_field {
     );
     $options['delta_reversed'] = array(
       'default' => FALSE,
+      'bool' => TRUE,
     );
     $options['delta_first_last'] = array(
       'default' => FALSE,
+      'bool' => TRUE,
     );
 
     $options['multi_type'] = array(
@@ -337,6 +393,7 @@ class views_handler_field_field extends views_handler_field {
 
     $options['field_api_classes'] = array(
       'default' => FALSE,
+      'bool' => TRUE,
     );
 
     return $options;
@@ -364,7 +421,7 @@ class views_handler_field_field extends views_handler_field {
     else {
       $form['click_sort_column'] = array(
         '#type' => 'select',
-        '#title' => t('Click sort column'),
+        '#title' => t('Column used for click sorting'),
         '#options' => drupal_map_assoc($column_names),
         '#default_value' => $this->options['click_sort_column'],
         '#description' => t('Used by Style: Table to determine the actual column to click sort the field on. The default is usually fine.'),
@@ -405,10 +462,10 @@ class views_handler_field_field extends views_handler_field {
 
     // Provide an instance array for hook_field_formatter_settings_form().
     ctools_include('fields');
-    $instance = ctools_fields_fake_field_instance($this->definition['field_name'], '_dummy', $formatter, $settings);
+    $this->instance = ctools_fields_fake_field_instance($this->definition['field_name'], '_custom', $formatter, $settings);
 
-    // Store the settings in a '_dummy' view mode.
-    $instance['display']['_dummy'] = array(
+    // Store the settings in a '_custom' view mode.
+    $this->instance['display']['_custom'] = array(
       'type' => $format,
       'settings' => $settings,
     );
@@ -417,7 +474,7 @@ class views_handler_field_field extends views_handler_field {
     $settings_form = array('#value' => array());
     $function = $formatter['module'] . '_field_formatter_settings_form';
     if (function_exists($function)) {
-      $settings_form = $function($field, $instance, '_dummy', $form, $form_state);
+      $settings_form = $function($field, $this->instance, '_custom', $form, $form_state);
     }
     $form['settings'] = $settings_form;
   }
@@ -574,7 +631,7 @@ class views_handler_field_field extends views_handler_field {
       $entities_by_type = array();
       $revisions_by_type = array();
       foreach ($values as $key => $object) {
-        if (isset($object->{$this->field_alias}) && !isset($values[$key]->_field_data[$this->field_alias])) {
+        if (isset($this->aliases['entity_type']) && isset($object->{$this->aliases['entity_type']}) && isset($object->{$this->field_alias}) && !isset($values[$key]->_field_data[$this->field_alias])) {
           $entity_type = $object->{$this->aliases['entity_type']};
           if (empty($this->definition['is revision'])) {
             $entity_id = $object->{$this->field_alias};
@@ -804,7 +861,7 @@ class views_handler_field_field extends views_handler_field {
       if (isset($render_array['#access'])) {
         $items[$count]['rendered']['#access'] = $render_array['#access'];
       }
-      // Only add the raw field items (for use in tokens) if the curent user
+      // Only add the raw field items (for use in tokens) if the current user
       // has access to view the field content.
       if ((!isset($items[$count]['rendered']['#access']) || $items[$count]['rendered']['#access']) && !empty($render_array['#items'][$count])) {
         $items[$count]['raw'] = $render_array['#items'][$count];
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_filter_field_list.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_filter_field_list.inc
index 971fb35..440d55b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_filter_field_list.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_filter_field_list.inc
@@ -1,11 +1,30 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_field_list.
+ */
+
+/**
  * Filter handler which uses list-fields as options.
  *
  * @ingroup views_filter_handlers
  */
-class views_handler_filter_field_list extends views_handler_filter_in_operator {
+class views_handler_filter_field_list extends views_handler_filter_many_to_one {
+
+  function init(&$view, &$options) {
+    parent::init($view, $options);
+    // Migrate the settings from the old filter_in_operator values to filter_many_to_one.
+    if ($this->options['operator'] == 'in') {
+      $this->options['operator'] = 'or';
+    }
+    if ($this->options['operator'] == 'not in') {
+      $this->options['operator'] = 'not';
+    }
+    $this->operator = $this->options['operator'];
+  }
+
+
   function get_value_options() {
     $field = field_info_field($this->definition['field_name']);
     $this->value_options = list_allowed_values($field);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc
index c83fa11..89f2483 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc
@@ -1,7 +1,8 @@
 <?php
+
 /**
  * @file
- * Views' relationship handlers.
+ * Definition of views_handler_relationship_entity_reverse.
  */
 
 /**
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/file.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/file.views.inc
index 30db20b..8556938 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/file.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/file.views.inc
@@ -1,14 +1,10 @@
 <?php
-/**
- * @file
- *
- * Provide views data and handlers for file.module
- */
 
 /**
- * @defgroup views_file_module file.module handlers
+ * @file
+ * Provide views data and handlers for file.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
@@ -75,7 +71,3 @@ function file_field_views_data_views_data_alter(&$data, $field) {
     );
   }
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter.views.inc
index c13d887..0a3b4fc 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter.views.inc
@@ -1,18 +1,14 @@
 <?php
+
 /**
  * @file
  * Provide basic views data for filter.module.
- */
-
-/**
- * @defgroup views_filter_module filter.module handlers
  *
- * Only includes the table 'filter_formats'.
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function filter_views_data() {
   // ----------------------------------------------------------------------
@@ -35,7 +31,3 @@ function filter_views_data() {
 
   return $data;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter/views_handler_field_filter_format_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter/views_handler_field_filter_format_name.inc
index 9b7b457..0a7bf3b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter/views_handler_field_filter_format_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/filter/views_handler_field_filter_format_name.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_filter_format_name.
+ */
+
 /**
  * Field handler to output the name of an input format.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/image.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/image.views.inc
index 1dec9e4..6fc6565 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/image.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/image.views.inc
@@ -1,14 +1,10 @@
 <?php
-/**
- * @file
- *
- * Provide views data and handlers for image.module
- */
 
 /**
- * @defgroup views_image_module image.module handlers
+ * @file
+ * Provide views data and handlers for image.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
@@ -74,7 +70,3 @@ function image_field_views_data_views_data_alter(&$data, $field) {
     );
   }
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale.views.inc
index 057b2a6..3bff7db 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale.views.inc
@@ -2,14 +2,9 @@
 
 /**
  * @file
- *
  * Provides views data and handlers for locale.module.
- */
-
-/**
- * @defgroup views_locale_module locale.module handlers
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
@@ -202,5 +197,25 @@ function locale_views_data() {
 }
 
 /**
- * @}
+ * Implements hook_views_data_alter().
  */
+function locale_views_data_alter(&$data) {
+  // Language field
+  $data['node']['language'] = array(
+    'title' => t('Language'),
+    'help' => t('The language the content is in.'),
+    'field' => array(
+      'handler' => 'views_handler_field_node_language',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_node_language',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_node_language',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc
index 1525560..7ced836 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_locale_group.
+ */
+
+/**
  * Argument handler to accept a language.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc
index 8d4f38c..316d4b1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_locale_language.
+ */
+
+/**
  * Argument handler to accept a language.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_group.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_group.inc
index 22339e8..393a948 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_group.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_group.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_locale_group.
+ */
+
+/**
  * Field handler to translate a group into its readable form.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_language.inc
index 0ff36a8..8038e2b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_language.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_language.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_locale_language.
+ */
+
+/**
  * Field handler to translate a language into its readable form.
  *
  * @ingroup views_field_handlers
@@ -8,7 +13,7 @@
 class views_handler_field_locale_language extends views_handler_field {
   function option_definition() {
     $options = parent::option_definition();
-    $options['native_language'] = array('default' => FALSE);
+    $options['native_language'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -24,8 +29,8 @@ class views_handler_field_locale_language extends views_handler_field {
   }
 
   function render($values) {
-    $languages = locale_language_list(empty($this->$options['native_language']) ? 'name' : 'native');
+    $languages = locale_language_list(empty($this->options['native_language']) ? 'name' : 'native');
     $value = $this->get_value($values);
-    return isset($languages[$value]) ? $languages[$value]->name : '';
+    return isset($languages[$value]) ? $languages[$value] : '';
   }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_link_edit.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_link_edit.inc
index 6c8f8f4..3789355 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_link_edit.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_locale_link_edit.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_locale_link_edit.
+ */
+
+/**
  * Field handler to present a link to edit a translation.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_node_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_node_language.inc
new file mode 100644
index 0000000..467605b
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_field_node_language.inc
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_language.
+ */
+
+/**
+ * Field handler to translate a language into its readable form.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_node_language extends views_handler_field_node {
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['native_language'] = array('default' => FALSE, 'bool' => TRUE);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $form['native_language'] = array(
+      '#title' => t('Native language'),
+      '#type' => 'checkbox',
+      '#default_value' => $this->options['native_language'],
+      '#description' => t('If enabled, the native name of the language will be displayed'),
+    );
+  }
+
+  function render($values) {
+    $languages = views_language_list(empty($this->options['native_language']) ? 'name' : 'native');
+    $value = $this->get_value($values);
+    $value = isset($languages[$value]) ? $languages[$value] : '';
+    return $this->render_link($value, $values);
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc
index 1941549..5ec1e92 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_locale_group.
+ */
+
+/**
  * Filter by locale group.
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc
index 9c7ba90..eee12a6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_locale_language.
+ */
+
+/**
  * Filter by language.
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_version.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_version.inc
index d828b2c..7170860 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_version.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_locale_version.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_locale_version.
+ */
+
+/**
  * Filter by version.
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_node_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_node_language.inc
new file mode 100644
index 0000000..7592577
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/locale/views_handler_filter_node_language.inc
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_node_language.
+ */
+
+/**
+ * Filter by language.
+ *
+ * @ingroup views_filter_handlers
+ */
+class views_handler_filter_node_language extends views_handler_filter_in_operator {
+  function get_value_options() {
+    if (!isset($this->value_options)) {
+      $this->value_title = t('Language');
+      $languages = array(
+        '***CURRENT_LANGUAGE***' => t("Current user's language"),
+        '***DEFAULT_LANGUAGE***' => t("Default site language"),
+        LANGUAGE_NONE => t('No language')
+      );
+      $languages = array_merge($languages, views_language_list());
+      $this->value_options = $languages;
+    }
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views.inc
index bff3544..ebba3d3 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views.inc
@@ -1,18 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for node.module
- */
 
 /**
- * @defgroup views_node_module node.module handlers
+ * @file
+ * Provide views data and handlers for node.module.
  *
- * Includes the tables 'node', 'node_revision' and 'history'.
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function node_views_data() {
   // ----------------------------------------------------------------
@@ -34,23 +30,11 @@ function node_views_data() {
   );
   $data['node']['table']['entity type'] = 'node';
 
-
-  // For other base tables, explain how we join
-  $data['node']['table']['join'] = array(
-    // this explains how the 'node' table (named in the line above)
-    // links toward the node_revision table.
+  $data['node']['table']['default_relationship'] = array(
     'node_revision' => array(
-      'handler' => 'views_join', // this is actually optional
-      'left_table' => 'node_revision', // Because this is a direct link it could be left out.
-      'left_field' => 'nid',
-      'field' => 'nid',
-      // also supported:
-      // 'type' => 'INNER',
-      // 'extra' => array(array('field' => 'fieldname', 'value' => 'value', 'operator' => '='))
-      //   Unfortunately, you can't specify other tables here, but you can construct
-      //   alternative joins in the handlers that can do that.
-      // 'table' => 'the actual name of this table in the database',
-     ),
+      'table' => 'node_revision',
+      'field' => 'vid',
+    ),
   );
 
   // ----------------------------------------------------------------
@@ -221,7 +205,7 @@ function node_views_data() {
       'handler' => 'views_handler_field_boolean',
       'click sortable' => TRUE,
       'output formats' => array(
-        'sticky' => array(t('Sticky'), ''),
+        'sticky' => array(t('Sticky'), t('Not sticky')),
       ),
     ),
     'filter' => array(
@@ -239,6 +223,8 @@ function node_views_data() {
   // table so they can be re-used with other query backends.
   // @see views_handler_field_entity
 
+  $data['views_entity_node']['table']['group'] = t('Content');
+
   $data['node']['view_node']['moved to'] = array('views_entity_node', 'view_node');
   $data['views_entity_node']['view_node'] = array(
     'field' => array(
@@ -426,6 +412,7 @@ function node_views_data() {
   // Define the base group of this table. Fields that don't
   // have a group defined will go into this field by default.
   $data['node_revisions']['moved to'] = 'node_revision';
+  $data['node_revision']['table']['entity type'] = 'node';
   $data['node_revision']['table']['group']  = t('Content revision');
   // Support the conversion of the field body
   $data['node_revisions']['body']['moved to'] = array('field_revision_data', 'body-revision_id');
@@ -449,6 +436,13 @@ function node_views_data() {
     ),
   );
 
+  $data['node_revision']['table']['default_relationship'] = array(
+    'node' => array(
+      'table' => 'node',
+      'field' => 'vid',
+    ),
+  );
+
   // uid field for node revision
   $data['node_revision']['uid'] = array(
     'title' => t('User'),
@@ -543,6 +537,14 @@ function node_views_data() {
     ),
   );
 
+  $data['node_revision']['link_to_revision'] = array(
+    'field' => array(
+      'title' => t('Link'),
+      'help' => t('Provide a simple link to the revision.'),
+      'handler' => 'views_handler_field_node_revision_link',
+    ),
+  );
+
   $data['node_revision']['revert_revision'] = array(
     'field' => array(
       'title' => t('Revert link'),
@@ -665,7 +667,7 @@ function node_views_plugins() {
 }
 
 /**
- * Implements hook_preprocess_node
+ * Implements hook_preprocess_node().
  */
 function node_row_node_view_preprocess_node(&$vars) {
   $node = $vars['node'];
@@ -747,7 +749,3 @@ function node_views_analyze($view) {
 
   return $ret;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views_template.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views_template.inc
index ca0ed75..b2b184d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views_template.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node.views_template.inc
@@ -1,8 +1,10 @@
 <?php
+
 /**
  * @file
  * Contains views templates on behalf of the node module.
  */
+
 function node_views_templates() {
   // Only the standard install profile has the image field provided so only show it for it.
   if (variable_get('install_profile', 'standard') != 'standard') {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc
index 95404f1..5f4e4b2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc
@@ -1,11 +1,13 @@
 <?php
+
 /**
- * @defgroup views_argument_handlers Handlers for arguments
- * @{
+ * @file
+ * Handlers for various date arguments.
+ *
+ * @ingroup views_argument_handlers
  */
 
 /**
- * @file
  * Argument handler for a full date (CCYYMMDD)
  */
 class views_handler_argument_node_created_fulldate extends views_handler_argument_date {
@@ -173,7 +175,3 @@ class views_handler_argument_node_created_week extends views_handler_argument_da
     return t('Week @week', array('@week' => $created));
   }
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc
index 1978168..170388a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_node_language.
+ */
+
 /**
  * Argument handler to accept a language.
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc
index 991bc8d..b0dbee0 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Provide node nid argument handler.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_type.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_type.inc
index 638973d..ea99d7c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_type.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_type.inc
@@ -1,8 +1,14 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_node_type.
+ */
+
 /**
  * Argument handler to accept a node type.
  */
-class views_handler_argument_node_type extends views_handler_argument {
+class views_handler_argument_node_type extends views_handler_argument_string {
   function construct() {
     parent::construct('type');
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc
index 995872c..142882a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc
@@ -1,5 +1,9 @@
 <?php
-// $Id$
+
+/**
+ * @file
+ * Defintion of views_handler_argument_node_uid_revision.
+ */
 
 /**
  * Filter handler to accept a user id to check for nodes that
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc
index 55db56a..1f970ad 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Provide node vid argument handler.
@@ -16,7 +17,7 @@ class views_handler_argument_node_vid extends views_handler_argument_numeric {
   function title_query() {
     $titles = array();
 
-    $result = db_query("SELECT n.title FROM {node_revision} n WHERE n.nid IN (:nids)", array(':nids' => $this->value));
+    $result = db_query("SELECT n.title FROM {node_revision} n WHERE n.vid IN (:vids)", array(':vids' => $this->value));
     foreach ($result as $term) {
       $titles[] = check_plain($term->title);
     }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_history_user_timestamp.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_history_user_timestamp.inc
index 45f6c56..dfe4931 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_history_user_timestamp.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_history_user_timestamp.inc
@@ -1,8 +1,15 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_history_user_timestamp.
+ */
+
 /**
  * Field handler to display the marker for new content.
  *
- * The handler is named history_user, because of compability reasons, the table is history.
+ * The handler is named history_user, because of compability reasons, the table
+ * is history.
  *
  * @ingroup views_field_handlers
  */
@@ -22,7 +29,7 @@ class views_handler_field_history_user_timestamp extends views_handler_field_nod
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['comments'] = array('default' => FALSE);
+    $options['comments'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -56,12 +63,11 @@ class views_handler_field_history_user_timestamp extends views_handler_field_nod
     global $user;
     if ($user->uid) {
       $last_read = $this->get_value($values);
-      $created = $this->get_value($values, 'created');
       $changed = $this->get_value($values, 'changed');
 
       $last_comment = module_exists('comment') && !empty($this->options['comments']) ?  $this->get_value($values, 'last_comment') : 0;
 
-      if (!$last_read && $created > NODE_NEW_LIMIT) {
+      if (!$last_read && $changed > NODE_NEW_LIMIT) {
         $mark = MARK_NEW;
       }
       elseif ($changed > $last_read && $changed > NODE_NEW_LIMIT) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node.inc
index eb90f01..f712a53 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the basic 'node' field handler.
@@ -26,7 +27,7 @@ class views_handler_field_node extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_node'] = array('default' => isset($this->definition['link_to_node default']) ? $this->definition['link_to_node default'] : FALSE);
+    $options['link_to_node'] = array('default' => isset($this->definition['link_to_node default']) ? $this->definition['link_to_node default'] : FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link.inc
index ee9c2b9..7e9bbd2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_link.
+ */
+
 /**
  * Field handler to present a link to the node.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc
index 3e8075c..8271c0b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_link_delete.
+ */
+
 /**
  * Field handler to present a link to delete a node.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc
index f082c31..4e8aad0 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_link_edit.
+ */
+
 /**
  * Field handler to present a link node edit.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_path.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_path.inc
index 725869b..f47f85f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_path.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_path.inc
@@ -14,7 +14,7 @@ class views_handler_field_node_path extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['absolute'] = array('default' => FALSE);
+    $options['absolute'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision.inc
index 3195e64..c04693a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_revision.
+ */
+
 /**
  * Contains the basic 'node_revision' field handler.
  */
@@ -21,7 +27,7 @@ class views_handler_field_node_revision extends views_handler_field_node {
   }
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_node_revision'] = array('default' => FALSE);
+    $options['link_to_node_revision'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link.inc
new file mode 100644
index 0000000..69047bb
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link.inc
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_revision_link.
+ */
+
+/**
+ * Field handler to present a link to a node revision.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_node_revision_link extends views_handler_field_node_link {
+
+  function construct() {
+    parent::construct();
+    $this->additional_fields['node_vid'] = array('table' => 'node_revision', 'field' => 'vid');
+  }
+
+  function access() {
+    return user_access('view revisions') || user_access('administer nodes');
+  }
+
+  function render_link($data, $values) {
+    list($node, $vid) = $this->get_revision_entity($values, 'view');
+    if (!isset($vid)) {
+      return;
+    }
+
+    // Current revision uses the node view path.
+    $path = 'node/' . $node->nid;
+    if ($node->vid != $vid) {
+      $path .= "/revisions/$vid/view";
+    }
+
+    $this->options['alter']['make_link'] = TRUE;
+    $this->options['alter']['path'] = $path;
+    $this->options['alter']['query'] = drupal_get_destination();
+
+    return !empty($this->options['text']) ? $this->options['text'] : t('view');
+  }
+
+  /**
+   * Returns the revision values of a node.
+   *
+   * @param object $values
+   *   An object containing all retrieved values.
+   * @param string $op
+   *   The operation being performed.
+   *
+   * @return array
+   *   A numerically indexed array containing the current node object and the
+   *   revision ID for this row.
+   */
+  function get_revision_entity($values, $op) {
+    $vid = $this->get_value($values, 'node_vid');
+    $node = $this->get_value($values);
+    // Unpublished nodes ignore access control.
+    $node->status = 1;
+    // Ensure user has access to perform the operation on this node.
+    if (!node_access($op, $node)) {
+      return array($node, NULL);
+    }
+    return array($node, $vid);
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc
index b005c2e..e0d00a7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc
@@ -1,38 +1,36 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_revision_link_delete.
+ */
+
 /**
- * Field handler to present delete a node revision.
+ * Field handler to present link to delete a node revision.
  *
  * @ingroup views_field_handlers
  */
-class views_handler_field_node_revision_link_delete extends views_handler_field_node_link {
-  function construct() {
-    parent::construct();
-    $this->additional_fields['node_vid'] = array('table' => 'node', 'field' => 'vid');
-  }
+class views_handler_field_node_revision_link_delete extends views_handler_field_node_revision_link {
 
   function access() {
     return user_access('delete revisions') || user_access('administer nodes');
   }
 
   function render_link($data, $values) {
-    // ensure user has access to delete this node.
-    $node = $this->get_value($values);
-    $node->status = 1; // unpublished nodes ignore access control
-    if (!node_access('delete', $node)) {
+    list($node, $vid) = $this->get_revision_entity($values, 'delete');
+    if (!isset($vid)) {
       return;
     }
 
     // Current revision cannot be deleted.
-    if ($node->vid == $this->get_value($values, 'node_vid')) {
+    if ($node->vid == $vid) {
       return;
     }
 
-    $text = !empty($this->options['text']) ? $this->options['text'] : t('delete');
-
     $this->options['alter']['make_link'] = TRUE;
-    $this->options['alter']['path'] = "node/$node->nid/revisions/$node->vid/delete";
+    $this->options['alter']['path'] = 'node/' . $node->nid . "/revisions/$vid/delete";
     $this->options['alter']['query'] = drupal_get_destination();
 
-    return $text;
+    return !empty($this->options['text']) ? $this->options['text'] : t('delete');
   }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_revert.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_revert.inc
index f26c0a3..af20442 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_revert.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_revert.inc
@@ -1,38 +1,36 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_revision_link_revert.
+ */
+
 /**
  * Field handler to present a link to revert a node to a revision.
  *
  * @ingroup views_field_handlers
  */
-class views_handler_field_node_revision_link_revert extends views_handler_field_node_link {
-  function construct() {
-    parent::construct();
-    $this->additional_fields['node_vid'] = array('table' => 'node', 'field' => 'vid');
-  }
+class views_handler_field_node_revision_link_revert extends views_handler_field_node_revision_link {
 
   function access() {
     return user_access('revert revisions') || user_access('administer nodes');
   }
 
   function render_link($data, $values) {
-    // ensure user has access to edit this node.
-    $node = $this->get_value($values);
-    $node->status = 1; // unpublished nodes ignore access control
-    if (!node_access('update', $node)) {
+    list($node, $vid) = $this->get_revision_entity($values, 'update');
+    if (!isset($vid)) {
       return;
     }
 
     // Current revision cannot be reverted.
-    if ($node->vid ==  $this->get_value($values, 'node_vid')) {
+    if ($node->vid == $vid) {
       return;
     }
 
-    $text = !empty($this->options['text']) ? $this->options['text'] : t('revert');
-
     $this->options['alter']['make_link'] = TRUE;
-    $this->options['alter']['path'] = "node/$node->nid/revisions/$node->vid/revert";
+    $this->options['alter']['path'] = 'node/' . $node->nid . "/revisions/$vid/revert";
     $this->options['alter']['query'] = drupal_get_destination();
 
-    return $text;
+    return !empty($this->options['text']) ? $this->options['text'] : t('revert');
   }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_type.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_type.inc
index 6d6202a..ba8ee3e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_type.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_field_node_type.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_node_type.
+ */
+
+/**
  * Field handler to translate a node type into its readable form.
  *
  * @ingroup views_field_handlers
@@ -8,7 +13,7 @@
 class views_handler_field_node_type extends views_handler_field_node {
   function option_definition() {
     $options = parent::option_definition();
-    $options['machine_name'] = array('default' => FALSE);
+    $options['machine_name'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -24,7 +29,6 @@ class views_handler_field_node_type extends views_handler_field_node {
       '#description' => t('Display field as the content type machine name.'),
       '#type' => 'checkbox',
       '#default_value' => !empty($this->options['machine_name']),
-      '#fieldset' => 'more',
     );
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_history_user_timestamp.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_history_user_timestamp.inc
index a13f531..acdb831 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_history_user_timestamp.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_history_user_timestamp.inc
@@ -1,8 +1,15 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_history_user_timestamp.
+ */
+
 /**
- * Filter for new content
+ * Filter for new content.
  *
- * The handler is named history_user, because of compability reasons, the table is history.
+ * The handler is named history_user, because of compability reasons, the table
+ * is history.
  *
  * @ingroup views_filter_handlers
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_access.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_access.inc
index 37306f8..a9ee85c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_access.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_access.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_node_access.
+ */
+
 /**
  * Filter by node_access records.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_status.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_status.inc
index 0babe5b..2afb286 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_status.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_status.inc
@@ -1,6 +1,12 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_node_status.
+ */
+
 /**
- * Filter by published status
+ * Filter by published status.
  *
  * @ingroup views_filter_handlers
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc
index 8312691..7f8ab4b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc
@@ -1,6 +1,12 @@
 <?php
+
 /**
- * Filter by node type
+ * @file
+ * Definition of views_handler_filter_node_type.
+ */
+
+/**
+ * Filter by node type.
  *
  * @ingroup views_filter_handlers
  */
@@ -9,6 +15,7 @@ class views_handler_filter_node_type extends views_handler_filter_in_operator {
     if (!isset($this->value_options)) {
       $this->value_title = t('Content types');
       $types = node_type_get_types();
+      $options = array();
       foreach ($types as $type => $info) {
         $options[$type] = t($info->name);
       }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc
index 9c6055c..4d3d9a7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc
@@ -1,7 +1,8 @@
 <?php
+
 /**
  * @file
- * Contains handler views_handler_filter_node_uid_revision.
+ * Definition of views_handler_filter_node_uid_revision.
  */
 
 /**
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc
index f88af08..65fc0eb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the node from URL argument default plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc
index 498ee76..018965d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the 'node' argument validator plugin.
@@ -11,7 +12,7 @@ class views_plugin_argument_validate_node extends views_plugin_argument_validate
   function option_definition() {
     $options = parent::option_definition();
     $options['types'] = array('default' => array());
-    $options['access'] = array('default' => FALSE);
+    $options['access'] = array('default' => FALSE, 'bool' => TRUE);
     $options['access_op'] = array('default' => 'view');
     $options['nid_type'] = array('default' => 'nid');
 
@@ -20,6 +21,7 @@ class views_plugin_argument_validate_node extends views_plugin_argument_validate
 
   function options_form(&$form, &$form_state) {
     $types = node_type_get_types();
+    $options = array();
     foreach ($types as $type => $info) {
       $options[$type] = check_plain(t($info->name));
     }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc
index 189ff1f..5da746b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the node RSS row style plugin.
@@ -20,7 +21,7 @@ class views_plugin_row_node_rss extends views_plugin_row {
     $options = parent::option_definition();
 
     $options['item_length'] = array('default' => 'default');
-    $options['links'] = FALSE;
+    $options['links'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -135,8 +136,15 @@ class views_plugin_row_node_rss extends views_plugin_row {
 
     if (!empty($node->rss_namespaces)) {
       $this->view->style_plugin->namespaces = array_merge($this->view->style_plugin->namespaces, $node->rss_namespaces);
-    } else if (module_exists('rdf')) {
-      $this->view->style_plugin->namespaces = array_merge($this->view->style_plugin->namespaces, rdf_get_namespaces());
+    }
+    elseif (function_exists('rdf_get_namespaces')) {
+      // Merge RDF namespaces in the XML namespaces in case they are used
+      // further in the RSS content.
+      $xml_rdf_namespaces = array();
+      foreach (rdf_get_namespaces() as $prefix => $uri) {
+        $xml_rdf_namespaces['xmlns:' . $prefix] = $uri;
+      }
+      $this->view->style_plugin->namespaces += $xml_rdf_namespaces;
     }
 
     // Hide the links if desired.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc
index d745add..4aefe46 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the node view row style plugin.
@@ -35,8 +36,8 @@ class views_plugin_row_node_view extends views_plugin_row {
     $options = parent::option_definition();
 
     $options['view_mode'] = array('default' => 'teaser');
-    $options['links'] = array('default' => TRUE);
-    $options['comments'] = array('default' => FALSE);
+    $options['links'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['comments'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -98,10 +99,12 @@ class views_plugin_row_node_view extends views_plugin_row {
   }
 
   function render($row) {
-    $node = $this->nodes[$row->{$this->field_alias}];
-    $node->view = $this->view;
-    $build = node_view($node, $this->options['view_mode']);
+    if (isset($this->nodes[$row->{$this->field_alias}])) {
+      $node = $this->nodes[$row->{$this->field_alias}];
+      $node->view = $this->view;
+      $build = node_view($node, $this->options['view_mode']);
 
-    return drupal_render($build);
+      return drupal_render($build);
+    }
   }
-}
+}
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/poll.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/poll.views.inc
index 5819b7e..d3fd76a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/poll.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/poll.views.inc
@@ -1,18 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for poll.module
- */
 
 /**
- * @defgroup views_poll_module poll.module handlers
+ * @file
+ * Provide views data and handlers for poll.module.
  *
- * Includes only the core 'poll' table for now.
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function poll_views_data() {
   // Basic table information.
@@ -49,7 +45,3 @@ function poll_views_data() {
 
   return $data;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile.views.inc
index 65ad71d..89db913 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile.views.inc
@@ -1,17 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for user.module
- */
 
 /**
- * @defgroup views_profile_module profile.module handlers
+ * @file
+ * Provide views data and handlers for user.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function profile_views_data() {
   $data['profile_values']['moved to'] = 'profile_value';
@@ -82,7 +79,7 @@ function profile_views_get_fields() {
         }
         else {
           // serialized fields or modified version
-          $row->options = unserialize(db_decode_blob($row->options));
+          $row->options = unserialize($row->options);
         }
       }
       $fields[$row->fid] = $row;
@@ -218,7 +215,3 @@ function profile_views_fetch_field($field) {
   // @todo: add access control to hidden fields.
   return $data;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc
index e6b5fbc..2d9fe96 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_profile_date.
+ */
+
 /**
  * Field handler display a profile date
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_list.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_list.inc
index e3eaa30..8917b93 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_list.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_field_profile_list.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_profile_list.
+ */
+
 /**
  * Field handler display a profile list item.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_filter_profile_selection.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_filter_profile_selection.inc
index 9906753..d3403c9 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_filter_profile_selection.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/profile/views_handler_filter_profile_selection.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_profile_selection.
+ */
+
+/**
  * Filter by a selection widget in the profile.
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search.views.inc
index 6f0bc1b..dad84bb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search.views.inc
@@ -1,18 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for search.module
- */
 
 /**
- * @defgroup views_search_module search.module handlers
+ * @file
+ * Provide views data and handlers for search.module.
  *
- * Includes the tables 'search_index'
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function search_views_data() {
   // Basic table information.
@@ -134,7 +130,7 @@ function search_views_data() {
 }
 
 /**
- * Implements hook_views_plugins
+ * Implements hook_views_plugins().
  */
 function search_views_plugins() {
   return;
@@ -204,8 +200,3 @@ function template_preprocess_views_view_row_search(&$vars) {
 //$vars['score'] = $item->score;
   $vars['snippet'] = search_excerpt($vars['view']->value, $node->body);
 }
-
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_argument_search.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_argument_search.inc
index 1b2c6e5..f0a4a44 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_argument_search.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_argument_search.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_search.
+ */
+
+/**
  * Argument that accepts query keys for search.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_field_search_score.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_field_search_score.inc
index 96f124d..0feddac 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_field_search_score.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_field_search_score.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_search_score.
+ */
+
 /**
  * Field handler to provide simple renderer that allows linking to a node.
  *
@@ -72,5 +78,4 @@ class views_handler_field_search_score extends views_handler_field_numeric {
       return parent::render($values);
     }
   }
-
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_filter_search.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_filter_search.inc
index c5defd8..7430494 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_filter_search.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_filter_search.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Contains a search filter handler.
+ */
+
+/**
  * Field handler to provide simple renderer that allows linking to a node.
  *
  * @ingroup views_filter_handlers
@@ -170,6 +175,9 @@ class views_handler_filter_search extends views_handler_filter {
   }
 }
 
+/**
+ * Extends the core SearchQuery.
+ */
 class viewsSearchQuery extends SearchQuery {
   public function &conditions() {
     return $this->conditions;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc
index 614d83a..d37fb65 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_sort_search_score.
+ */
+
+/**
  * Field handler to provide simple renderer that allows linking to a node.
  *
  * @ingroup views_sort_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_plugin_row_search_view.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_plugin_row_search_view.inc
index 7383344..e4aacdc 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_plugin_row_search_view.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/search/views_plugin_row_search_view.inc
@@ -1,7 +1,8 @@
 <?php
+
 /**
  * @file
- * Contains the search row style plugin.
+ * Definition of views_plugin_row_search_view.
  */
 
 /**
@@ -11,7 +12,7 @@ class views_plugin_row_search_view extends views_plugin_row {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['score'] = array('default' => TRUE);
+    $options['score'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics.views.inc
index 187d9f1..d6637f3 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics.views.inc
@@ -1,18 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for statistics.module
- */
 
 /**
- * @defgroup views_statistics_module statistics.module handlers
+ * @file
+ * Provide views data and handlers for statistics.module.
  *
- * Includes the ability to create views of just the statistics table.
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function statistics_views_data() {
   // Basic table information.
@@ -265,7 +261,3 @@ function statistics_views_data() {
 
   return $data;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc
index d0daa69..85b2352 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_accesslog_path.
+ */
+
 /**
  * Field handler to provide simple renderer that turns a URL into a clickable link.
  *
@@ -18,7 +24,7 @@ class views_handler_field_accesslog_path extends views_handler_field {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['display_as_link'] = array('default' => TRUE);
+    $options['display_as_link'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system.views.inc
index d49385c..243cbc7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system.views.inc
@@ -1,19 +1,14 @@
 <?php
-/**
- * @file
- *
- * Provide views data and handlers for system tables that are not represented by
- * their own module.
- */
 
 /**
- * @defgroup views_system_module system.module handlers
+ * @file
+ * Provide views data and handlers for system.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function system_views_data() {
   $data = array();
@@ -35,11 +30,6 @@ function system_views_data() {
   );
   $data['file_managed']['table']['entity type'] = 'file';
 
-
-  // The file table does not inherently join to the node table,
-  // but may things (such as upload.module) can add relationships
-  // that allow file fields to be used.
-
   // fid
   $data['file_managed']['fid'] = array(
     'title' => t('File ID'),
@@ -253,7 +243,7 @@ function system_views_data() {
       'base' => 'node',
       'base field' => 'nid',
       'relationship field' => 'id',
-      'extra' => array(array('field' => 'type', 'value' => 'node')),
+      'extra' => array(array('table' => 'file_usage', 'field' => 'type', 'operator' => '=', 'value' => 'node')),
     ),
   );
   $data['file_usage']['node_to_file'] = array(
@@ -431,6 +421,23 @@ function system_views_data() {
       'handler' => 'views_handler_sort',
     ),
   );
+  $data['file_usage']['id'] = array(
+    'title' => t('Entity ID'),
+    'help' => t('The ID of the entity that is related to the file.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
   $data['file_usage']['count'] = array(
     'title' => t('Use count'),
     'help' => t('The number of times the file is used by this entity.'),
@@ -569,7 +576,3 @@ function _views_file_status($choice = NULL) {
 
   return $status;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc
index 8a4088f..aa2d947 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_file_fid.
+ */
+
 /**
  * Argument handler to accept multiple file ids.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file.inc
index f642b89..4168acf 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_file.
+ */
+
 /**
  * Field handler to provide simple renderer that allows linking to a file.
  *
@@ -17,7 +23,7 @@ class views_handler_field_file extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_file'] = array('default' => FALSE);
+    $options['link_to_file'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_extension.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_extension.inc
index e64fbc9..6f9a03f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_extension.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_extension.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_file_extension.
+ */
+
+/**
  * Returns a pure file extension of the file, for example 'module'.
  * @ingroup views_field_handlers
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc
index 0b29c79..318fdcf 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_file_filemime.
+ */
+
+/**
  * Field handler to add rendering MIME type images as an option on the filemime field.
  *
  * @ingroup views_field_handlers
@@ -8,7 +13,7 @@
 class views_handler_field_file_filemime extends views_handler_field_file {
   function option_definition() {
     $options = parent::option_definition();
-    $options['filemime_image'] = array('default' => FALSE);
+    $options['filemime_image'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_status.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_status.inc
index 84d9148..ac1022c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_status.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_status.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_file_status.
+ */
+
 /**
  * Field handler to translate a node type into its readable form.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_uri.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_uri.inc
index d36aba3..334e505 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_uri.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_field_file_uri.inc
@@ -1,12 +1,17 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_file_uri.
+ */
+
+/**
  * Field handler to add rendering file paths as file URLs instead of as internal file URIs.
  */
 class views_handler_field_file_uri extends views_handler_field_file {
   function option_definition() {
     $options = parent::option_definition();
-    $options['file_download_path'] = array('default' => FALSE);
+    $options['file_download_path'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc
index 3133755..6194395 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_file_status.
+ */
+
 /**
  * Filter by file status.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_system_type.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_system_type.inc
index 5a9a811..84d4bcd 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_system_type.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/system/views_handler_filter_system_type.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_system_type.
+ */
+
+/**
  * Filter by system type.
  */
 class views_handler_filter_system_type extends views_handler_filter_in_operator {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy.views.inc
index 7dd225b..58d62d1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy.views.inc
@@ -1,18 +1,14 @@
 <?php
-/**
- * @file
- *
- * Provide views data and handlers for taxonomy.module
- */
 
 /**
- * @defgroup views_taxonomy_module taxonomy.module handlers
+ * @file
+ * Provide views data and handlers for taxonomy.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function taxonomy_views_data() {
   $data = array();
@@ -90,6 +86,24 @@ function taxonomy_views_data() {
       'handler' => 'views_handler_field',
     ),
   );
+  $data['taxonomy_vocabulary']['weight'] = array(
+    'title' => t('Weight'),
+    'help' => t('The taxonomy vocabulary weight'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+      'name field' => 'weight',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+  );
 
   // ----------------------------------------------------------------------
  // taxonomy_term_data table
@@ -152,6 +166,17 @@ function taxonomy_views_data() {
     ),
   );
 
+  // raw tid field
+  $data['taxonomy_term_data']['tid_raw'] = array(
+    'title' => t('Term ID'),
+    'help' => t('The tid of a taxonomy term.'),
+    'real field' => 'tid',
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+      'allow empty' => TRUE,
+    ),
+  );
+
   $data['taxonomy_term_data']['tid_representative'] = array(
     'relationship' => array(
       'title' => t('Representative node'),
@@ -204,6 +229,9 @@ function taxonomy_views_data() {
     'filter' => array(
       'handler' => 'views_handler_filter_numeric',
     ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
   );
 
   // Term description
@@ -332,6 +360,10 @@ function taxonomy_views_data() {
       'field' => 'parent',
       'label' => t('Parent'),
     ),
+    'filter' => array(
+      'help' => t('Filter the results of "Taxonomy: Term" by the parent pid.'),
+      'handler' => 'views_handler_filter_numeric',
+    ),
     'argument' => array(
       'help' => t('The parent term of the term.'),
       'handler' => 'views_handler_argument_taxonomy',
@@ -457,7 +489,7 @@ function taxonomy_field_views_data_views_data_alter(&$data, $field) {
 }
 
 /**
- * Implements hook_views_plugins
+ * Implements hook_views_plugins().
  */
 function taxonomy_views_plugins() {
   return array(
@@ -497,6 +529,7 @@ function views_taxonomy_set_breadcrumb(&$breadcrumb, &$argument) {
     }
     if (!empty($argument->options['use_taxonomy_term_path'])) {
       $path = taxonomy_term_uri($parent);
+      $path = $path['path'];
     }
     else {
       $args[$argument->position] = $parent->tid;
@@ -505,7 +538,3 @@ function views_taxonomy_set_breadcrumb(&$breadcrumb, &$argument) {
     $breadcrumb[$path] = check_plain($parent->name);
   }
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc
index 5c32ea4..10fc500 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_taxonomy.
+ */
+
+/**
  * Argument handler for basic taxonomy tid.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid.inc
index e36c778..f47f08a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_term_node_tid.
+ */
+
 /**
  * Allow taxonomy term ID(s) as argument.
  *
@@ -7,7 +13,7 @@
 class views_handler_argument_term_node_tid extends views_handler_argument_many_to_one {
   function option_definition() {
     $options = parent::option_definition();
-    $options['set_breadcrumb'] = array('default' => FALSE);
+    $options['set_breadcrumb'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc
index 03b1409..116a4de 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_term_node_tid_depth.
+ */
+
 /**
  * Argument handler for taxonomy terms with depth.
  *
@@ -12,9 +18,9 @@ class views_handler_argument_term_node_tid_depth extends views_handler_argument
     $options = parent::option_definition();
 
     $options['depth'] = array('default' => 0);
-    $options['break_phrase'] = array('default' => FALSE);
-    $options['set_breadcrumb'] = array('default' => FALSE);
-    $options['use_taxonomy_term_path'] = array('default' => FALSE);
+    $options['break_phrase'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['set_breadcrumb'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['use_taxonomy_term_path'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc
index da71796..2f9dd4e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_term_node_tid_depth_modif.
+ */
+
+/**
  * Argument handler for to modify depth for a previous term.
  *
  * This handler is actually part of the node table and has some restrictions,
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc
index b91b08f..427cf2b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_vocabulary_machine_name.
+ */
+
+/**
  * Argument handler to accept a vocabulary machine name.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc
index d79859b..c696640 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_argument_vocabulary_vid.
+ */
+
+/**
  * Argument handler to accept a vocabulary id.
  *
  * @ingroup views_argument_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc
index c1ccb6d..48da283 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_taxonomy.
+ */
+
+/**
  * Field handler to provide simple renderer that allows linking to a taxonomy
  * term.
  *
@@ -25,8 +30,8 @@ class views_handler_field_taxonomy extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_taxonomy'] = array('default' => FALSE);
-    $options['convert_spaces'] = array('default' => FALSE);
+    $options['link_to_taxonomy'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['convert_spaces'] = array('default' => FALSE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc
index ae1f0a5..75ab0f8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_term_link_edit.
+ */
+
+/**
  * Field handler to present a term edit link.
  *
  * @ingroup views_field_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc
index 4a6c7a4..4c6362e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_term_node_tid.
+ */
+
+/**
  * Field handler to display all taxonomy terms of a node.
  *
  * @ingroup views_field_handlers
@@ -30,8 +35,8 @@ class views_handler_field_term_node_tid extends views_handler_field_prerender_li
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['link_to_taxonomy'] = array('default' => TRUE);
-    $options['limit'] = array('default' => FALSE);
+    $options['link_to_taxonomy'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['limit'] = array('default' => FALSE, 'bool' => TRUE);
     $options['vocabularies'] = array('default' => array());
 
     return $options;
@@ -51,7 +56,6 @@ class views_handler_field_term_node_tid extends views_handler_field_prerender_li
       '#type' => 'checkbox',
       '#title' => t('Limit terms by vocabulary'),
       '#default_value'=> $this->options['limit'],
-      '#fieldset' => 'more',
     );
 
     $options = array();
@@ -68,7 +72,6 @@ class views_handler_field_term_node_tid extends views_handler_field_prerender_li
       '#options' => $options,
       '#default_value' => $this->options['vocabularies'],
       '#dependency' => array('edit-options-limit' => array(TRUE)),
-      '#fieldset' => 'more',
     );
 
     parent::options_form($form, $form_state);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc
index 25f9a7b..7eb868f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_term_node_tid.
+ */
+
+/**
  * Filter by term id.
  *
  * @ingroup views_filter_handlers
@@ -33,10 +38,10 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on
     $options = parent::option_definition();
 
     $options['type'] = array('default' => 'textfield');
-    $options['limit'] = array('default' => TRUE);
+    $options['limit'] = array('default' => TRUE, 'bool' => TRUE);
     $options['vocabulary'] = array('default' => 0);
     $options['hierarchy'] = array('default' => 0);
-    $options['error_message'] = array('default' => TRUE);
+    $options['error_message'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
@@ -168,6 +173,11 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on
             $keys = array_keys($options);
             $default_value = array_shift($keys);
           }
+          // Due to #1464174 there is a chance that array('') was saved in the admin ui.
+          // Let's choose a safe default value.
+          elseif ($default_value == array('')) {
+            $default_value = 'All';
+          }
           else {
             $copy = $default_value;
             $default_value = array_shift($copy);
@@ -336,6 +346,7 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on
     $this->value_options = array();
 
     if ($this->value) {
+      $this->value = array_filter($this->value);
       $result = db_select('taxonomy_term_data', 'td')
         ->fields('td')
         ->condition('td.tid', $this->value)
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc
index 3955269..fe12780 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_term_node_tid_depth.
+ */
+
 /**
  * Filter handler for taxonomy terms with depth.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc
index 5d2c9f5..062450c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_vocabulary_machine_name.
+ */
+
+/**
  * Filter by vocabulary machine name.
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_vid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_vid.inc
index a02f7b2..2759ee1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_vid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_filter_vocabulary_vid.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_vocabulary_vid.
+ */
+
+/**
  * Filter by vocabulary id.
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_relationship_node_term_data.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_relationship_node_term_data.inc
index 1855cae..d7fbb4c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_relationship_node_term_data.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_handler_relationship_node_term_data.inc
@@ -1,10 +1,10 @@
 <?php
+
 /**
  * @file
- * Views' relationship handlers.
+ * Definition of views_handler_relationship_node_term_data.
  */
 
-
 /**
  * Relationship handler to return the taxonomy terms of nodes.
  *
@@ -58,8 +58,8 @@ class views_handler_relationship_node_term_data extends views_handler_relationsh
     $def['table'] = 'taxonomy_term_data';
 
     if (!array_filter($this->options['vocabularies'])) {
-      $term_node = $this->query->add_table('taxonomy_index', $this->relationship);
-      $def['left_table'] = 'taxonomy_index';
+      $taxonomy_index = $this->query->add_table('taxonomy_index', $this->relationship);
+      $def['left_table'] = $taxonomy_index;
       $def['left_field'] = 'tid';
       $def['field'] = 'tid';
       $def['type'] = empty($this->options['required']) ? 'LEFT' : 'INNER';
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
index 17ee634..9c1d81f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
@@ -1,9 +1,13 @@
 <?php
+
 /**
  * @file
- *   Taxonomy tid default argument.
+ * Definition of views_plugin_argument_default_taxonomy_tid.
  */
 
+/**
+ * Taxonomy tid default argument.
+ */
 class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_default {
   function init(&$view, &$argument, $options) {
     parent::init($view, $argument, $options);
@@ -22,10 +26,10 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['term_page'] = array('default' => TRUE);
-    $options['node'] = array('default' => FALSE);
+    $options['term_page'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['node'] = array('default' => FALSE, 'bool' => TRUE);
     $options['anyall'] = array('default' => ',');
-    $options['limit'] = array('default' => FALSE);
+    $options['limit'] = array('default' => FALSE, 'bool' => TRUE);
     $options['vocabularies'] = array('default' => array());
 
     return $options;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc
index c81c619..3a88199 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the 'taxonomy term' argument validator plugin.
@@ -26,7 +27,7 @@ class views_plugin_argument_validate_taxonomy_term extends views_plugin_argument
     $options = parent::option_definition();
     $options['vocabularies'] = array('default' => array());
     $options['type'] = array('default' => 'tid');
-    $options['transform'] = array('default' => FALSE);
+    $options['transform'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation.views.inc
index 8189faa..b36c7a7 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation.views.inc
@@ -2,14 +2,9 @@
 
 /**
  * @file
+ * Provide views data and handlers for translation.module.
  *
- * Provide views data and handlers for translation.module
- */
-
-/**
- * @defgroup views_translation_module translation.module handlers
- *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
@@ -25,26 +20,6 @@ function translation_views_data_alter(&$data) {
     'field' => 'tnid',
   );
 
-  // Language field
-  $data['node']['language'] = array(
-    'group' => t('Content translation'),
-    'title' => t('Language'),
-    'help' => t('The language the content is in.'),
-    'field' => array(
-      'handler' => 'views_handler_field_node_language',
-      'click sortable' => TRUE,
-    ),
-    'filter' => array(
-      'handler' => 'views_handler_filter_node_language',
-    ),
-    'argument' => array(
-      'handler' => 'views_handler_argument_node_language',
-    ),
-    'sort' => array(
-      'handler' => 'views_handler_sort',
-    ),
-  );
-
   // The translation ID (nid of the "source" translation)
   $data['node']['tnid'] = array(
     'group' => t('Content translation'),
@@ -144,7 +119,3 @@ function translation_views_data_alter(&$data) {
 
 
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc
index 9dd29a1..61e9eba 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Provide node tnid argument handler.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc
deleted file mode 100644
index b2e8d9c..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * Field handler to translate a language into its readable form.
- *
- * @ingroup views_field_handlers
- */
-class views_handler_field_node_language extends views_handler_field_node {
-  function option_definition() {
-    $options = parent::option_definition();
-    $options['native_language'] = array('default' => FALSE);
-
-    return $options;
-  }
-
-  function options_form(&$form, &$form_state) {
-    parent::options_form($form, $form_state);
-    $form['native_language'] = array(
-      '#title' => t('Native language'),
-      '#type' => 'checkbox',
-      '#default_value' => $this->options['native_language'],
-      '#description' => t('If enabled, the native name of the language will be displayed'),
-    );
-  }
-
-  function render($values) {
-    $languages = views_language_list(empty($this->options['native_language']) ? 'name' : 'native');
-    $value = $this->get_value($values);
-    $value = isset($languages[$value]) ? $languages[$value] : '';
-    return $this->render_link($value, $values);
-  }
-}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc
index 962b4f9..3e30725 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_link_translate.
+ */
+
 /**
  * Field handler to present a link node translate.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_translation_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_translation_link.inc
index 537ba60..9d50369 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_translation_link.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_field_node_translation_link.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_translation_link.
+ */
+
 /**
  * Field handler to present a link to the node.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc
deleted file mode 100644
index 73af163..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Filter by language.
- *
- * @ingroup views_filter_handlers
- */
-class views_handler_filter_node_language extends views_handler_filter_in_operator {
-  function get_value_options() {
-    if (!isset($this->value_options)) {
-      $this->value_title = t('Language');
-      $languages = array(
-        '***CURRENT_LANGUAGE***' => t("Current user's language"),
-        '***DEFAULT_LANGUAGE***' => t("Default site language"),
-        LANGUAGE_NONE => t('No language')
-      );
-      $languages = array_merge($languages, views_language_list());
-      $this->value_options = $languages;
-    }
-  }
-}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc
index 6d8cfe7..ed4d6a9 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_node_tnid.
+ */
+
 /**
  * Filter by whether the node is the original translation.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc
index f0d953b..51316eb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_node_tnid_child.
+ */
+
 /**
  * Filter by whether the node is not the original translation.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_relationship_translation.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_relationship_translation.inc
index b7d2641..509a935 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_relationship_translation.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/translation/views_handler_relationship_translation.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_relationship_translation.
+ */
+
+/**
  * Handles relationships for content translation sets and provides multiple
  * options.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user.views.inc
index 1d7f161..7077104 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user.views.inc
@@ -1,17 +1,14 @@
 <?php
-/**
- * @file
- * Provide views data and handlers for user.module
- */
 
 /**
- * @defgroup views_user_module user.module handlers
+ * @file
+ * Provide views data and handlers for user.module.
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function user_views_data() {
   // ----------------------------------------------------------------
@@ -75,6 +72,16 @@ function user_views_data() {
     ),
   );
 
+  // uid_raw
+  $data['users']['uid_raw'] = array(
+    'help' => t('The raw numeric user ID.'),
+    'real field' => 'uid',
+    'filter' => array(
+      'title' => t('The user ID'),
+      'handler' => 'views_handler_filter_numeric',
+    ),
+  );
+
   // uid
   $data['users']['uid_representative'] = array(
     'relationship' => array(
@@ -521,7 +528,7 @@ function user_views_data() {
 }
 
 /**
- * Implements hook_views_plugins
+ * Implements hook_views_plugins().
  */
 function user_views_plugins() {
   return array(
@@ -566,7 +573,3 @@ function user_views_query_substitutions($view) {
   global $user;
   return array('***CURRENT_USER***' => intval($user->uid));
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc
index 21785a9..6ab9167 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc
@@ -1,7 +1,8 @@
 <?php
+
 /**
  * @file
- * Provide user uid argument handler.
+ * Definition of views_handler_argument_user_uid.
  */
 
 /**
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc
index 89b3704..31c5814 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_argument_users_roles_rid.
+ */
+
 /**
  * Allow role ID(s) as argument.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user.inc
index f90a6f9..f6b15b5 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_user.
+ */
+
+/**
  * Field handler to provide simple renderer that allows linking to a user.
  *
  * @ingroup views_field_handlers
@@ -18,7 +23,7 @@ class views_handler_field_user extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_to_user'] = array('default' => TRUE);
+    $options['link_to_user'] = array('default' => TRUE, 'bool' => TRUE);
     return $options;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_language.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_language.inc
index 96b784b..e29da31 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_language.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_language.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_user_language.
+ */
+
+/**
  * Views field handler for user language.
  *
  * @ingroup views_field_handlers
@@ -9,9 +14,12 @@ class views_handler_field_user_language extends views_handler_field_user {
 
   function render_link($data, $values) {
     $uid = $this->get_value($values, 'uid');
-    if (!empty($this->options['link_to_user']) && user_access('access user profiles') && $uid) {
-      $this->options['alter']['make_link'] = TRUE;
-      $this->options['alter']['path'] = 'user/' . $uid;
+    if (!empty($this->options['link_to_user'])) {
+      $uid = $this->get_value($values, 'uid');
+      if (user_access('access user profiles') && $uid) {
+        $this->options['alter']['make_link'] = TRUE;
+        $this->options['alter']['path'] = 'user/' . $uid;
+      }
     }
     if (empty($data)) {
       $lang = language_default();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link.inc
index 36135d5..03b5e0d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_user_link.
+ */
+
 /**
  * Field handler to present a link to the user.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc
index 4debce9..9129c01 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_user_link_cancel.
+ */
+
 /**
  * Field handler to present a link to user cancel.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_edit.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_edit.inc
index 4f25bf6..e37feae 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_edit.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_link_edit.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_user_link_edit.
+ */
+
 /**
  * Field handler to present a link to user edit.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc
index 8408e64..82d1933 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_user_mail.
+ */
+
 /**
  * Field handler to provide acess control for the email field.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_name.inc
index 26cdbce..4551451 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_name.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_user_name.
+ */
+
 /**
  * Field handler to provide simple renderer that allows using a themed user link.
  *
@@ -18,9 +24,9 @@ class views_handler_field_user_name extends views_handler_field_user {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['overwrite_anonymous'] = array('default' => FALSE);
+    $options['overwrite_anonymous'] = array('default' => FALSE, 'bool' => TRUE);
     $options['anonymous_text'] = array('default' => '', 'translatable' => TRUE);
-    $options['format_username'] = array('default' => TRUE);
+    $options['format_username'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc
index e20f27f..edc9c44 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_user_permissions.
+ */
+
 /**
  * Field handler to provide a list of permissions.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc
index 940a89a..babbae5 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_field_user_picture.
+ */
+
+/**
  * Field handler to provide simple renderer that allows using a themed user link.
  *
  * @ingroup views_field_handlers
@@ -37,7 +42,7 @@ class views_handler_field_user_picture extends views_handler_field {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['link_photo_to_profile'] = array('default' => TRUE);
+    $options['link_photo_to_profile'] = array('default' => TRUE, 'bool' => TRUE);
     $options['image_style'] = array('default' => '');
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc
index f556107..e6571cd 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_field_user_roles.
+ */
+
 /**
  * Field handler to provide a list of roles.
  *
@@ -43,7 +49,9 @@ class views_handler_field_user_roles extends views_handler_field_prerender_list
   }
 
   function add_self_tokens(&$tokens, $item) {
-    $tokens['[' . $this->options['id'] . '-role' . ']'] = $item['role'];
-    $tokens['[' . $this->options['id'] . '-rid' . ']'] = $item['rid'];
+    if (!empty($item['role'])) {
+      $tokens['[' . $this->options['id'] . '-role' . ']'] = $item['role'];
+      $tokens['[' . $this->options['id'] . '-rid' . ']'] = $item['rid'];
+    }
   }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_current.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_current.inc
index 14deb0d..5f8fe4c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_current.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_current.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_user_current.
+ */
+
+/**
  * Filter handler for the current user.
  *
  * @ingroup views_filter_handlers
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc
index c885e1b..300607f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_handler_filter_user_name.
+ */
+
+/**
  * Filter handler for usernames.
  *
  * @ingroup views_filter_handlers
@@ -69,9 +74,21 @@ class views_handler_filter_user_name extends views_handler_filter_in_operator {
     }
 
     $identifier = $this->options['expose']['identifier'];
-    $values = drupal_explode_tags($form_state['values'][$identifier]);
+    $input = $form_state['values'][$identifier];
+
+    if ($this->options['is_grouped'] && isset($this->options['group_info']['group_items'][$input])) {
+      $this->operator = $this->options['group_info']['group_items'][$input]['operator'];
+      $input = $this->options['group_info']['group_items'][$input]['value'];
+    }
+
+    $values = drupal_explode_tags($input);
 
-    $uids = $this->validate_user_strings($form[$identifier], $values);
+    if (!$this->options['is_grouped'] || ($this->options['is_grouped'] && ($input != 'All'))) {
+      $uids = $this->validate_user_strings($form[$identifier], $values);
+    }
+    else {
+      $uids = FALSE;
+    }
 
     if ($uids) {
       $this->validated_exposed_input = $uids;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc
index 4cf51db..f999045 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_user_permissions.
+ */
+
 /**
  * Filter handler for user roles.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_roles.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_roles.inc
index cbf985d..ab9b8a2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_roles.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_handler_filter_user_roles.inc
@@ -1,4 +1,10 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_user_roles.
+ */
+
 /**
  * Filter handler for user roles.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc
index d79226c..e11c702 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the current user argument default plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc
index d14e345..bb10429 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc
@@ -1,11 +1,12 @@
 <?php
+
 /**
  * @file
  * Contains the user from URL argument default plugin.
  */
 
 /**
- * Default argument plugin to extract a user via menu_get_object
+ * Default argument plugin to extract a user via menu_get_object.
  */
 class views_plugin_argument_default_user extends views_plugin_argument_default {
   function option_definition() {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc
index 4dfa4bc..b727094 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_argument_validate_user.
+ */
+
+/**
  * Validate whether an argument is a valid user.
  *
  * This supports either numeric arguments (UID) or strings (username) and
@@ -11,7 +16,7 @@ class views_plugin_argument_validate_user extends views_plugin_argument_validate
   function option_definition() {
     $options = parent::option_definition();
     $options['type'] = array('default' => 'uid');
-    $options['restrict_roles'] = array('default' => FALSE);
+    $options['restrict_roles'] = array('default' => FALSE, 'bool' => TRUE);
     $options['roles'] = array('default' => array());
 
     return $options;
@@ -117,7 +122,7 @@ class views_plugin_argument_validate_user extends views_plugin_argument_validate
     }
 
     $this->argument->argument = $account->uid;
-    $this->argument->validated_title = isset($account->name) ? check_plain($account->name) : check_plain(variable_get('anonymous', t('Anonymous')));
+    $this->argument->validated_title = check_plain(format_username($account));
     return TRUE;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/views.views.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/views.views.inc
index 6aa8a09..2029aa8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/views.views.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/modules/views.views.inc
@@ -1,17 +1,14 @@
 <?php
+
 /**
  * @file
  * Provide views data and handlers that aren't tied to any other module.
- */
-
-/**
- * @defgroup views_views_module miscellaneous handlers
  *
- * @{
+ * @ingroup views_module_handlers
  */
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function views_views_data() {
   $data['views']['table']['group'] = t('Global');
@@ -60,6 +57,14 @@ function views_views_data() {
     ),
   );
 
+  $data['views']['area_text_custom'] = array(
+    'title' => t('Unfiltered text'),
+    'help' => t('Add unrestricted, custom text or markup. This is similar to the custom text field.'),
+    'area' => array(
+      'handler' => 'views_handler_area_text_custom',
+    ),
+  );
+
   $data['views']['view'] = array(
     'title' => t('View area'),
     'help' => t('Insert a view inside an area.'),
@@ -86,6 +91,14 @@ function views_views_data() {
     );
   }
 
+  $data['views']['combine'] = array(
+   'title' => t('Combine fields filter'),
+    'help' => t('Combine two fields together and search by them.'),
+    'filter' => array(
+      'handler' => 'views_handler_filter_combine',
+    ),
+  );
+
   if (module_invoke('ctools', 'api_version', '1.7.1')) {
     $data['views']['expression'] = array(
       'title' => t('Math expression'),
@@ -99,7 +112,3 @@ function views_views_data() {
 
   return $data;
 }
-
-/**
- * @}
- */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access.inc
index b3fbb29..7f80d9b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access.inc
@@ -1,9 +1,20 @@
 <?php
 
 /**
- * The base plugin to handle access control.
+ * @file
+ * Definition of views_plugin_access.
+ */
+
+/**
+ * @defgroup views_access_plugins Views access plugins
+ * @{
+ * @todo.
  *
- * @ingroup views_access_plugins
+ * @see hook_views_plugins()
+ */
+
+/**
+ * The base plugin to handle access control.
  */
 class views_plugin_access extends views_plugin {
   /**
@@ -79,3 +90,7 @@ class views_plugin_access extends views_plugin {
     return TRUE;
   }
 }
+
+/**
+ * @}
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_none.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_none.inc
index be563a2..d69fe8e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_none.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_none.inc
@@ -1,7 +1,14 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_access_none.
+ */
+
+/**
  * Access plugin that provides no access control at all.
+ *
+ * @ingroup views_access_plugins
  */
 class views_plugin_access_none extends views_plugin_access {
   function summary_title() {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_perm.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_perm.inc
index c1b473b..7279d7d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_perm.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_perm.inc
@@ -1,7 +1,14 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_access_perm.
+ */
+
+/**
  * Access plugin that provides permission-based access control.
+ *
+ * @ingroup views_access_plugins
  */
 class views_plugin_access_perm extends views_plugin_access {
   function access($account) {
@@ -42,7 +49,7 @@ class views_plugin_access_perm extends views_plugin_access {
       }
     }
 
-    asort($perms);
+    ksort($perms);
 
     $form['perm'] = array(
       '#type' => 'select',
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_role.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_role.inc
index 2ed1aff..b06812e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_role.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_access_role.inc
@@ -1,7 +1,14 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_access_role.
+ */
+
+/**
  * Access plugin that provides role-based access control.
+ *
+ * @ingroup views_access_plugins
  */
 class views_plugin_access_role extends views_plugin_access {
   function access($account) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default.inc
index 7132afa..2b87730 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default.inc
@@ -1,17 +1,16 @@
 <?php
+
 /**
  * @file
- * Contains the fixed argument default plugin.
+ * Definition of views_plugin_argument_default.
  */
 
 /**
- * @defgroup views_argument_default_plugins Views' argument default plugins
+ * @defgroup views_argument_default_plugins Views argument default plugins
  * @{
+ * Allow specialized methods of filling in arguments when they aren't provided.
  *
- * Allow specialized methods of filling in arguments when they aren't
- * provided.
- *
- * @see hook_views_plugins
+ * @see hook_views_plugins()
  */
 
 /**
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc
index fba63ec..38ede34 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the fixed argument default plugin.
@@ -6,6 +7,8 @@
 
 /**
  * The fixed argument default handler.
+ *
+ * @ingroup views_argument_default_plugins
  */
 class views_plugin_argument_default_fixed extends views_plugin_argument_default {
   function option_definition() {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc
index 53240da..c2fb14f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the php code argument default plugin.
@@ -6,6 +7,8 @@
 
 /**
  * Default argument plugin to provide a PHP code block.
+ *
+ * @ingroup views_argument_default_plugins
  */
 class views_plugin_argument_default_php extends views_plugin_argument_default {
   function option_definition() {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc
index dcaf22f..385ca91 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the raw value argument default plugin.
@@ -6,11 +7,14 @@
 
 /**
  * Default argument plugin to use the raw value from the URL.
+ *
+ * @ingroup views_argument_default_plugins
  */
 class views_plugin_argument_default_raw extends views_plugin_argument_default {
   function option_definition() {
     $options = parent::option_definition();
     $options['index'] = array('default' => '');
+    $options['use_alias'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -26,10 +30,20 @@ class views_plugin_argument_default_raw extends views_plugin_argument_default {
       '#options' => range(1, 10),
       '#description' => t('The numbering starts from 1, e.g. on the page admin/structure/types, the 3rd path component is "types".'),
     );
+    $form['use_alias'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Use path alias'),
+      '#default_value' => $this->options['use_alias'],
+      '#description' => t('Use path alias instead of internal path.'),
+    );
   }
 
   function get_argument() {
-    if ($arg = arg($this->options['index'])) {
+    $path = NULL;
+    if ($this->options['use_alias']) {
+      $path = drupal_get_path_alias();
+    }
+    if ($arg = arg($this->options['index'], $path)) {
       return $arg;
     }
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate.inc
index 19d84cd..07b49ee 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate.inc
@@ -1,22 +1,20 @@
 <?php
+
 /**
  * @file
  * Contains the base argument validator plugin.
  */
 
 /**
- * @defgroup views_argument_validate_plugins Views' argument validate plugins
+ * @defgroup views_argument_validate_plugins Views argument validate plugins
  * @{
- *
  * Allow specialized methods of validating arguments.
  *
- * @see hook_views_plugins
+ * @see hook_views_plugins()
  */
 
 /**
  * Base argument validator plugin to provide basic functionality.
- *
- * @ingroup views_argument_validate_plugins
  */
 class views_plugin_argument_validate extends views_plugin {
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc
index 2cfeced..049531b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the numeric argument validator plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc
index 00cc9f3..83b22b4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the php code argument validator plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache.inc
index 9899d48..4d21701 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache.inc
@@ -1,9 +1,20 @@
 <?php
 
 /**
- * The base plugin to handle caching.
+ * @file
+ * Definition of views_plugin_cache.
+ */
+
+/**
+ * @defgroup views_cache_plugins Views cache plugins
+ * @{
+ * @todo.
  *
- * @ingroup views_cache_plugins
+ * @see hook_views_plugins()
+ */
+
+/**
+ * The base plugin to handle caching.
  */
 class views_plugin_cache extends views_plugin {
   /**
@@ -174,6 +185,7 @@ class views_plugin_cache extends views_plugin {
     $this->storage['head'] = drupal_add_html_head();
     $this->storage['css'] = drupal_add_css();
     $this->storage['js'] = drupal_add_js();
+    $this->storage['headers'] = drupal_get_http_header();
   }
 
   /**
@@ -190,32 +202,23 @@ class views_plugin_cache extends views_plugin {
 
     // Slightly less simple for CSS:
     $css = drupal_add_css();
-    $start = isset($this->storage['css']) ? $this->storage['css'] : array();
-    $this->storage['css'] = array();
-
-    foreach ($css as $file => $data) {
-      if (!isset($this->storage['css'][$file])) {
-        $this->storage['css'][$file] = $data;
-      }
-    }
+    $css_start = isset($this->storage['css']) ? $this->storage['css'] : array();
+    $this->storage['css'] = array_diff_assoc($css, $css_start);
 
-    // Get javascript after views renders
+    // Get javascript after/before views renders.
     $js = drupal_add_js();
-
-    // Get javascript before views renders.
-    $start = isset($this->storage['js']) ? $this->storage['js'] : array();
-    $this->storage['js'] = array();
-
+    $js_start = isset($this->storage['js']) ? $this->storage['js'] : array();
     // If there are any differences between the old and the new javascript then
     // store them to be added later.
-    if ($diff = array_diff_assoc($js, $start)) {
-      $this->storage['js'] = $diff;
-    }
+    $this->storage['js'] = array_diff_assoc($js, $js_start);
 
     // Special case the settings key and get the difference of the data.
-    if ($settings_diff = array_diff_assoc($js['settings']['data'], $start['settings']['data'])) {
-      $this->storage['js']['settings'] = $settings_diff;
-    }
+    $settings = isset($js['settings']['data']) ? $js['settings']['data'] : array();
+    $settings_start = isset($js_start['settings']['data']) ? $js_start['settings']['data'] : array();
+    $this->storage['js']['settings'] = array_diff_assoc($settings, $settings_start);
+
+    // Get difference of HTTP headers.
+    $this->storage['headers'] = array_diff_assoc(drupal_get_http_header(), $this->storage['headers']);
   }
 
   /**
@@ -232,7 +235,7 @@ class views_plugin_cache extends views_plugin {
     }
     if (!empty($this->storage['js'])) {
       foreach ($this->storage['js'] as $key => $args) {
-        if ($key != 'settings') {
+        if ($key !== 'settings') {
           drupal_add_js($args['data'], $args);
         }
         else {
@@ -242,6 +245,11 @@ class views_plugin_cache extends views_plugin {
         }
       }
     }
+    if (!empty($this->storage['headers'])) {
+      foreach ($this->storage['headers'] as $name => $value) {
+        drupal_add_http_header($name, $value);
+      }
+    }
   }
 
   function get_results_key() {
@@ -259,7 +267,7 @@ class views_plugin_cache extends views_plugin {
         if ($build_info[$index] instanceof SelectQueryInterface) {
           $query = clone $build_info[$index];
           $query->preExecute();
-          $build_info[$index] = (string)$query;
+          $build_info[$index] = (string) $query;
         }
       }
       $key_data = array(
@@ -267,8 +275,9 @@ class views_plugin_cache extends views_plugin {
         'roles' => array_keys($user->roles),
         'super-user' => $user->uid == 1, // special caching for super user.
         'language' => $GLOBALS['language']->language,
+        'base_url' => $GLOBALS['base_url'],
       );
-      foreach (array('exposed_info', 'page', 'sort', 'order') as $key) {
+      foreach (array('exposed_info', 'page', 'sort', 'order', 'items_per_page', 'offset') as $key) {
         if (isset($_GET[$key])) {
           $key_data[$key] = $_GET[$key];
         }
@@ -289,6 +298,7 @@ class views_plugin_cache extends views_plugin {
         'super-user' => $user->uid == 1, // special caching for super user.
         'theme' => $GLOBALS['theme'],
         'language' => $GLOBALS['language']->language,
+        'base_url' => $GLOBALS['base_url'],
       );
 
       $this->_output_key = $this->view->name . ':' . $this->display->id . ':output:' . md5(serialize($key_data));
@@ -296,5 +306,8 @@ class views_plugin_cache extends views_plugin {
 
     return $this->_output_key;
   }
-
 }
+
+/**
+ * @}
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_none.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_none.inc
index 9cc2757..9927a9d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_none.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_none.inc
@@ -1,7 +1,14 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_cache_none.
+ */
+
+/**
  * Caching plugin that provides no caching at all.
+ *
+ * @ingroup views_cache_plugins
  */
 class views_plugin_cache_none extends views_plugin_cache {
   function cache_start() { /* do nothing */ }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_time.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_time.inc
index ac84b1c..25245ea 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_time.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_cache_time.inc
@@ -1,13 +1,22 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_cache_time.
+ */
+
+/**
  * Simple caching of query results for Views displays.
+ *
+ * @ingroup views_cache_plugins
  */
 class views_plugin_cache_time extends views_plugin_cache {
   function option_definition() {
     $options = parent::option_definition();
     $options['results_lifespan'] = array('default' => 3600);
+    $options['results_lifespan_custom'] = array('default' => 0);
     $options['output_lifespan'] = array('default' => 3600);
+    $options['output_lifespan_custom'] = array('default' => 0);
 
     return $options;
   }
@@ -16,7 +25,7 @@ class views_plugin_cache_time extends views_plugin_cache {
     parent::options_form($form, $form_state);
     $options = array(60, 300, 1800, 3600, 21600, 518400);
     $options = drupal_map_assoc($options, 'format_interval');
-    $options = array(-1 => t('Never cache')) + $options;
+    $options = array(-1 => t('Never cache')) + $options + array('custom' => t('Custom'));
 
     $form['results_lifespan'] = array(
       '#type' => 'select',
@@ -25,6 +34,18 @@ class views_plugin_cache_time extends views_plugin_cache {
       '#options' => $options,
       '#default_value' => $this->options['results_lifespan'],
     );
+    $form['results_lifespan_custom'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Seconds'),
+      '#size' => '25',
+      '#maxlength' => '30',
+      '#description' => t('Length of time in seconds raw query results should be cached.'),
+      '#default_value' => $this->options['results_lifespan_custom'],
+      '#process' => array('form_process_select','ctools_dependent_process'),
+      '#dependency' => array(
+        'edit-cache-options-results-lifespan' => array('custom'),
+      ),
+    );
     $form['output_lifespan'] = array(
       '#type' => 'select',
       '#title' => t('Rendered output'),
@@ -32,14 +53,43 @@ class views_plugin_cache_time extends views_plugin_cache {
       '#options' => $options,
       '#default_value' => $this->options['output_lifespan'],
     );
+    $form['output_lifespan_custom'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Seconds'),
+      '#size' => '25',
+      '#maxlength' => '30',
+      '#description' => t('Length of time in seconds rendered HTML output should be cached.'),
+      '#default_value' => $this->options['output_lifespan_custom'],
+      '#process' => array('form_process_select','ctools_dependent_process'),
+      '#dependency' => array(
+        'edit-cache-options-output-lifespan' => array('custom'),
+      ),
+    );
+  }
+
+  function options_validate(&$form, &$form_state) {
+    $custom_fields = array('output_lifespan', 'results_lifespan');
+    foreach ($custom_fields as $field) {
+      if ($form_state['values']['cache_options'][$field] == 'custom' && !is_numeric($form_state['values']['cache_options'][$field . '_custom'])) {
+        form_error($form[$field .'_custom'], t('Custom time values must be numeric.'));
+      }
+    }
   }
 
   function summary_title() {
-    return format_interval($this->options['results_lifespan'], 1) . '/' . format_interval($this->options['output_lifespan'], 1);
+    $results_lifespan = $this->get_lifespan('results');
+    $output_lifespan = $this->get_lifespan('output');
+    return format_interval($results_lifespan, 1) . '/' . format_interval($output_lifespan, 1);
+  }
+
+  function get_lifespan($type) {
+    $lifespan = $this->options[$type . '_lifespan'] == 'custom' ? $this->options[$type . '_lifespan_custom'] : $this->options[$type . '_lifespan'];
+    return $lifespan;
   }
 
   function cache_expire($type) {
-    if ($lifespan = $this->options[$type . '_lifespan']) {
+    $lifespan = $this->get_lifespan($type);
+    if ($lifespan) {
       $cutoff = REQUEST_TIME - $lifespan;
       return $cutoff;
     }
@@ -49,7 +99,8 @@ class views_plugin_cache_time extends views_plugin_cache {
   }
 
   function cache_set_expire($type) {
-    if ($lifespan = $this->options[$type . '_lifespan']) {
+    $lifespan = $this->get_lifespan($type);
+    if ($lifespan) {
       return time() + $lifespan;
     }
     else {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display.inc
index b338043..6be3dcc 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display.inc
@@ -1,11 +1,12 @@
 <?php
+
 /**
  * @file
  * Contains the base display plugin.
  */
 
 /**
- * @defgroup views_display_plugins Views' display plugins
+ * @defgroup views_display_plugins Views display plugins
  * @{
  * Display plugins control how Views interact with the rest of Drupal.
  *
@@ -14,14 +15,12 @@
  * handle creating Views from an external module source, such as
  * a Panels pane, or an insert view, or a CCK field type.
  *
- * @see hook_views_plugins
+ * @see hook_views_plugins()
  */
 
 /**
  * The default display plugin handler. Display plugins handle options and
  * basic mechanisms for different output methods.
- *
- * @ingroup views_display_plugins
  */
 class views_plugin_display extends views_plugin {
   /**
@@ -42,6 +41,23 @@ class views_plugin_display extends views_plugin {
     $this->view = &$view;
     $this->display = &$display;
 
+    // Load extenders as soon as possible.
+    $this->extender = array();
+    $extenders = views_get_enabled_display_extenders();
+    // If you update to the dev version the registry might not be loaded yet.
+    if (!empty($extenders) && class_exists('views_plugin_display_extender')) {
+      foreach ($extenders as $extender) {
+        $plugin = views_get_plugin('display_extender', $extender);
+        if ($plugin) {
+          $plugin->init($this->view, $this);
+          $this->extender[$extender] = $plugin;
+        }
+        else {
+          vpr('Invalid display extender @extender', array('@handler' => $extender));
+        }
+      }
+    }
+
     // Track changes that the user should know about.
     $changed = FALSE;
 
@@ -212,31 +228,31 @@ class views_plugin_display extends views_plugin {
       $changed = TRUE;
     }
 
+    // Filter groups were allowed to be rewritten without its filters, so
+    // before this update the view was using the default values. To be sure that
+    // the existing view isn't broken, don't use this overridden values but copy
+    // them from the default display. Only do this if the filters are overridden
+    // but the filter_groups are not marked as so.
+    if (!$this->is_default_display() && !$this->options['defaults']['filters'] && $this->options['defaults']['filter_groups']) {
+      // Set filter_groups to be overridden and save the value in the
+      // display_options as well.
+      $this->options['defaults']['filter_groups'] = FALSE;
+      $this->display->display_options['defaults']['filter_groups'] = $this->options['defaults']['filter_groups'];
+      // Copy the filter_groups from the default, and add them to the
+      // display_options as well. $this->default_display is not initialized at
+      // this point.
+      $this->options['filter_groups'] = $this->view->display['default']->handler->options['filter_groups'];
+      $this->display->display_options['filter_groups'] = $this->options['filter_groups'];
+
+      $changed = TRUE;
+    }
+
     // Mark the view as changed so the user has a chance to save it.
     if ($changed) {
       $this->view->changed = TRUE;
     }
   }
 
-  function construct() {
-    // Load extenders as soon as possible
-    $this->extender = array();
-    $extenders = views_get_enabled_display_extenders();
-    // If you update to the dev version the registry might not be loaded yet.
-    if (!empty($extenders) && class_exists('views_plugin_display_extender')) {
-      foreach ($extenders as $extender) {
-        $data = views_fetch_plugin_data('display_extender', $extender);
-        if (isset($data['handler']) && class_exists($data['handler'])) {
-          $this->extender[$extender] = new $data['handler']($this->view, $this);
-        }
-        else {
-          vpr('Invalid display extender @extender', array('@handler' => $extender));
-        }
-      }
-    }
-    parent::construct();
-  }
-
   function destroy() {
     parent::destroy();
 
@@ -395,9 +411,12 @@ class views_plugin_display extends views_plugin {
       'css_class' => array('css_class'),
       'use_ajax' => array('use_ajax'),
       'hide_attachment_summary' => array('hide_attachment_summary'),
+      'hide_admin_links' => array('hide_admin_links'),
       'group_by' => array('group_by'),
       'query' => array('query'),
       'use_more' => array('use_more', 'use_more_always', 'use_more_text'),
+      'use_more_always' => array('use_more', 'use_more_always', 'use_more_text'),
+      'use_more_text' => array('use_more', 'use_more_always', 'use_more_text'),
       'link_display' => array('link_display', 'link_url'),
 
       // Force these to cascade properly.
@@ -421,6 +440,7 @@ class views_plugin_display extends views_plugin {
       'sorts' => array('sorts'),
       'arguments' => array('arguments'),
       'filters' => array('filters', 'filter_groups'),
+      'filter_groups' => array('filters', 'filter_groups'),
     );
 
     // If the display cannot use a pager, then we cannot default it.
@@ -456,6 +476,7 @@ class views_plugin_display extends views_plugin {
           'display_description' => FALSE,
           'use_ajax' => TRUE,
           'hide_attachment_summary' => TRUE,
+          'hide_admin_links' => FALSE,
           'pager' => TRUE,
           'pager_options' => TRUE,
           'use_more' => TRUE,
@@ -515,6 +536,10 @@ class views_plugin_display extends views_plugin {
         'default' => FALSE,
         'bool' => TRUE,
       ),
+      'hide_admin_links' => array(
+        'default' => FALSE,
+        'bool' => TRUE,
+      ),
       // This is legacy code:
       // Items_per/offset/use_pager is moved to the pager plugin
       // but the automatic update path needs this items defined, so don't remove it.
@@ -535,7 +560,8 @@ class views_plugin_display extends views_plugin {
       ),
       'use_more_always' => array(
         'default' => FALSE,
-        'bool' => FALSE,
+        'bool' => TRUE,
+        'export' => 'export_option_always',
       ),
       'use_more_text' => array(
         'default' => 'more',
@@ -686,7 +712,7 @@ class views_plugin_display extends views_plugin {
     }
 
     foreach ($this->extender as $extender) {
-      $extender->option_definition($options);
+      $extender->options_definition_alter($options);
     }
 
     return $options;
@@ -759,6 +785,10 @@ class views_plugin_display extends views_plugin {
     }
   }
 
+  function get_url() {
+    return $this->view->get_url();
+  }
+
   /**
    * Check to see if the display needs a breadcrumb
    *
@@ -944,9 +974,19 @@ class views_plugin_display extends views_plugin {
 
   /**
    * Retrieve a list of fields for the current display with the
-   *  relationship associated if it exists.
+   * relationship associated if it exists.
+   *
+   * @param $groupable_only
+   *  Return only an array of field labels from handler that return TRUE
+   *  from use_string_group_by method.
    */
   function get_field_labels() {
+    // Use func_get_arg so the function signature isn't amended
+    // but we can still pass TRUE into the function to filter
+    // by groupable handlers.
+    $args = func_get_args();
+    $groupable_only = isset($args[0]) ? $args[0] : FALSE;
+
     $options = array();
     foreach ($this->get_handlers('relationship') as $relationship => $handler) {
       if ($label = $handler->label()) {
@@ -958,6 +998,10 @@ class views_plugin_display extends views_plugin {
     }
 
     foreach ($this->get_handlers('field') as $id => $handler) {
+      if ($groupable_only && !$handler->use_string_group_by()) {
+        // Continue to next handler if it's not groupable.
+        continue;
+      }
       if ($label = $handler->label()) {
         $options[$id] = $label;
       }
@@ -1176,6 +1220,14 @@ class views_plugin_display extends views_plugin {
         'desc' => t('Change whether or not to display attachments when displaying a contextual filter summary.'),
       );
     }
+    if (!isset($this->definition['contextual links locations']) || !empty($this->definition['contextual links locations'])) {
+      $options['hide_admin_links'] = array(
+        'category' => 'other',
+        'title' => t('Hide contextual links'),
+        'value' => $this->get_option('hide_admin_links') ? t('Yes') : t('No'),
+        'desc' => t('Change whether or not to display contextual links for this view.'),
+      );
+    }
 
     $pager_plugin = $this->get_plugin('pager');
     if (!$pager_plugin) {
@@ -1443,18 +1495,26 @@ class views_plugin_display extends views_plugin {
           '#default_value' => $this->get_option('hide_attachment_summary') ? 1 : 0,
         );
         break;
+      case 'hide_admin_links':
+        $form['#title'] .= t('Hide contextual links on this view.');
+        $form['hide_admin_links'] = array(
+          '#type' => 'radios',
+          '#options' => array(1 => t('Yes'), 0 => t('No')),
+          '#default_value' => $this->get_option('hide_admin_links') ? 1 : 0,
+        );
+      break;
       case 'use_more':
         $form['#title'] .= t('Add a more link to the bottom of the display.');
         $form['use_more'] = array(
           '#type' => 'checkbox',
           '#title' => t('Create more link'),
-          '#description' => t("This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above. You can override the url at the link display setting."),
+          '#description' => t("This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' section under advanced. You can override the url at the link display setting."),
           '#default_value' => $this->get_option('use_more'),
         );
         $form['use_more_always'] = array(
           '#type' => 'checkbox',
-          '#title' => t('Do not display more link unless there is more content'),
-          '#description' => t("This will display the more link even if there are no more items to display."),
+          '#title' => t("Display 'more' link only if there is more content"),
+          '#description' => t("Leave this unchecked to display the 'more' link even if there are no more items to display."),
           '#default_value' => !$this->get_option('use_more_always'),
             '#dependency' => array(
               'edit-use-more' => array(TRUE),
@@ -2292,6 +2352,7 @@ class views_plugin_display extends views_plugin {
         break;
       case 'use_ajax':
       case 'hide_attachment_summary':
+      case 'hide_admin_links':
         $this->set_option($section, (bool)$form_state['values'][$section]);
         break;
       case 'use_more':
@@ -2414,6 +2475,13 @@ class views_plugin_display extends views_plugin {
 
   /**
    * Flip the override setting for the given section.
+   *
+   * @param string $section
+   *   Which option should be marked as overridden, for example "filters".
+   * @param bool $new_state
+   *   Select the new state of the option.
+   *     - TRUE: Revert to default.
+   *     - FALSE: Mark it as overridden.
    */
   function set_override($section, $new_state = NULL) {
     $options = $this->defaultable_sections($section);
@@ -2584,6 +2652,10 @@ class views_plugin_display extends views_plugin {
     foreach ($this->extender as $extender) {
       $extender->pre_execute();
     }
+
+    if ($this->get_option('hide_admin_links')) {
+      $this->view->hide_admin_links = TRUE;
+    }
   }
 
   /**
@@ -2666,13 +2738,29 @@ class views_plugin_display extends views_plugin {
 
   /**
    * Check if the provided identifier is unique.
+   *
+   * @param string $id
+   *   The id of the handler which is checked.
+   * @param string $identifier
+   *   The actual get identifier configured in the exposed settings.
+   *
+   * @return bool
+   *   Returns whether the identifier is unique on all handlers.
+   *
    */
   function is_identifier_unique($id, $identifier) {
     foreach (views_object_types() as $type => $info) {
       foreach ($this->get_handlers($type) as $key => $handler) {
         if ($handler->can_expose() && $handler->is_exposed()) {
-          if ($id != $key && $identifier == $handler->options['expose']['identifier']) {
-            return FALSE;
+          if ($handler->is_a_group()) {
+            if ($id != $key && $identifier == $handler->options['group_info']['identifier']) {
+              return FALSE;
+            }
+          }
+          else {
+            if ($id != $key && $identifier == $handler->options['expose']['identifier']) {
+              return FALSE;
+            }
           }
         }
       }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_attachment.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_attachment.inc
index d05d1e6..91c8d1f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_attachment.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_attachment.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the attachment display plugin.
@@ -19,10 +20,10 @@ class views_plugin_display_attachment extends views_plugin_display {
 
     $options['displays'] = array('default' => array());
     $options['attachment_position'] = array('default' => 'before');
-    $options['inherit_arguments'] = array('default' => TRUE);
-    $options['inherit_exposed_filters'] = array('default' => FALSE);
-    $options['inherit_pager'] = array('default' => FALSE);
-    $options['render_pager'] = array('default' => FALSE);
+    $options['inherit_arguments'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['inherit_exposed_filters'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['inherit_pager'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['render_pager'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_block.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_block.inc
index 4338d75..c903a9b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_block.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_block.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the block display plugin.
@@ -30,10 +31,10 @@ class views_plugin_display_block extends views_plugin_display {
 
     if (empty($desc)) {
       if ($this->display->display_title == $this->definition['title']) {
-        $desc = t('View: @view', array('@view' => $this->view->get_human_name()));
+        $desc = t('View: !view', array('!view' => $this->view->get_human_name()));
       }
       else {
-        $desc = t('View: @view: @display', array('@view' => $this->view->get_human_name(), '@display' => $this->display->display_title));
+        $desc = t('View: !view: !display', array('!view' => $this->view->get_human_name(), '!display' => $this->display->display_title));
       }
     }
     return array(
@@ -85,11 +86,6 @@ class views_plugin_display_block extends views_plugin_display {
       'value' => views_ui_truncate($block_description, 24),
     );
 
-    $cache_type = $this->get_option('block_caching');
-    if (empty($cache_type)) {
-      $cache_type = DRUPAL_NO_CACHE;
-    }
-
     $types = $this->block_caching_modes();
     $options['block_caching'] = array(
       'category' => 'other',
@@ -129,7 +125,6 @@ class views_plugin_display_block extends views_plugin_display {
    * Provide the default form for setting options.
    */
   function options_form(&$form, &$form_state) {
-    parent::options_form($form, $form_state);
     // It is very important to call the parent function here:
     parent::options_form($form, $form_state);
 
@@ -152,6 +147,14 @@ class views_plugin_display_block extends views_plugin_display {
           '#default_value' => $this->get_cache_type(),
         );
         break;
+      case 'exposed_form_options':
+        $this->view->init_handlers();
+        if (!$this->uses_exposed() && parent::uses_exposed()) {
+          $form['exposed_form_options']['warning'] = array(
+            '#weight' => -10,
+            '#markup' => '<div class="messages warning">' . t('Exposed filters in block displays require "Use AJAX" to be set to work correctly.') . '</div>',
+          );
+        }
     }
   }
 
@@ -179,14 +182,13 @@ class views_plugin_display_block extends views_plugin_display {
   /**
    * Block views use exposed widgets only if AJAX is set.
    */
-  function uses_exposed() {
-    if ($this->use_ajax()) {
-      return parent::uses_exposed();
+    function uses_exposed() {
+      if ($this->use_ajax()) {
+        return parent::uses_exposed();
+      }
+      return FALSE;
     }
 
-    return FALSE;
-  }
-
   /**
    * Update the block delta when you change the machine readable name of the display.
    */
@@ -204,16 +206,21 @@ class views_plugin_display_block extends views_plugin_display {
       $hashes[$md5_delta] = $delta;
       $delta = $md5_delta;
     }
-    db_update('block')
-      ->fields(array('delta' => $delta))
-      ->condition('delta', $old_delta)
-      ->execute();
+
+    // Maybe people don't have block module installed, so let's skip this.
+    if (db_table_exists('block')) {
+      db_update('block')
+        ->fields(array('delta' => $delta))
+        ->condition('delta', $old_delta)
+        ->execute();
+    }
 
     // Update the hashes if needed.
     if ($hashes != $old_hashes) {
       variable_set('views_block_hashes', $hashes);
     }
   }
+
   /**
    * Save the block cache setting in the blocks table if this block allready
    * exists in the blocks table. Dirty fix untill http://drupal.org/node/235673 gets in.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_default.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_default.inc
index d46a126..4b1fc08 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_default.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_default.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the default display plugin.
@@ -28,6 +29,7 @@ class views_plugin_display_default extends views_plugin_display {
    * @code
    *   $view->set_arguments($args);
    *   $view->build('default'); // Build the query
+   *   $view->pre_execute(); // Pre-execute the query.
    *   $view->execute(); // Run the query
    *   $output = $view->render(); // Render the view
    * @endcode
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_embed.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_embed.inc
new file mode 100644
index 0000000..8b25cf9
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_embed.inc
@@ -0,0 +1,14 @@
+<?php
+/**
+ * @file
+ * Contains the embed display plugin.
+ */
+
+/**
+ * The plugin that handles an embed display.
+ *
+ * @ingroup views_display_plugins
+ */
+class views_plugin_display_embed extends views_plugin_display {
+  // This display plugin does nothing apart from exist.
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_extender.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_extender.inc
index c2cc488..08e981a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_extender.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_extender.inc
@@ -1,9 +1,17 @@
 <?php
+
+/**
+ * @file
+ * Definition of views_plugin_display_extender.
+ */
+
 /**
- * @todo
+ * @todo.
+ *
+ * @ingroup views_display_plugins
  */
 class views_plugin_display_extender extends views_plugin {
-  function __construct(&$view, &$display) {
+  function init(&$view, &$display) {
     $this->view = $view;
     $this->display = $display;
   }
@@ -12,7 +20,7 @@ class views_plugin_display_extender extends views_plugin {
   /**
    * Provide a form to edit options for this plugin.
    */
-  function options_definition(&$options) { }
+  function options_definition_alter(&$options) { }
 
   /**
    * Provide a form to edit options for this plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_feed.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_feed.inc
index 3b07158..37d0ae4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_feed.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_feed.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the feed display plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_page.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_page.inc
index 77f2100..cd7fe37 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_page.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_display_page.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the page display plugin.
@@ -217,6 +218,10 @@ class views_plugin_display_page extends views_plugin_display {
       return drupal_not_found();
     }
 
+    if (!empty($this->view->build_info['denied'])) {
+      return drupal_access_denied();
+    }
+
     $this->view->get_breadcrumb(TRUE);
 
 
@@ -371,7 +376,6 @@ class views_plugin_display_page extends views_plugin_display {
           );
         }
         $form['menu']['weight'] = array(
-          '#suffix' => '</div>',
           '#title' => t('Weight'),
           '#type' => 'textfield',
           '#default_value' => isset($menu['weight']) ? $menu['weight'] : 0,
@@ -380,6 +384,7 @@ class views_plugin_display_page extends views_plugin_display {
         );
         $form['menu']['context'] = array(
           '#title' => t('Context'),
+          '#suffix' => '</div>',
           '#type' => 'checkbox',
           '#default_value' => !empty($menu['context']),
           '#description' => t('Displays the link in contextual links'),
@@ -471,9 +476,8 @@ class views_plugin_display_page extends views_plugin_display {
           form_error($form['path'], t('"%" may not be used for the first segment of a path.'));
         }
 
-        // automatically remove '/' from path.
-        $form_state['values']['path'] = trim($form_state['values']['path'], '/');
-
+        // automatically remove '/' and trailing whitespace from path.
+        $form_state['values']['path'] = trim($form_state['values']['path'], '/ ');
         break;
       case 'menu':
         $path = $this->get_option('path');
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form.inc
index 8dbe583..833f44b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form.inc
@@ -1,6 +1,21 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_exposed_form.
+ */
+
+/**
+ * @defgroup views_exposed_form_plugins Views exposed form plugins
+ * @{
+ * Plugins that handle the validation/submission and rendering of exposed forms.
+ *
+ * If needed, it is possible to use them to add additional form elements.
+ *
+ * @see hook_views_plugins()
+ */
+
+/**
  * The base plugin to handle exposed filter forms.
  */
 class views_plugin_exposed_form extends views_plugin {
@@ -22,14 +37,14 @@ class views_plugin_exposed_form extends views_plugin {
 
   function option_definition() {
     $options = parent::option_definition();
-    $options['submit_button'] = array('default' => t('Apply'), 'translatable' => TRUE);
+    $options['submit_button'] = array('default' => 'Apply', 'translatable' => TRUE);
     $options['reset_button'] = array('default' => FALSE, 'bool' => TRUE);
     $options['reset_button_label'] = array('default' => 'Reset', 'translatable' => TRUE);
     $options['exposed_sorts_label'] = array('default' => 'Sort by', 'translatable' => TRUE);
     $options['sort_asc_label'] = array('default' => 'Asc', 'translatable' => TRUE);
     $options['sort_desc_label'] = array('default' => 'Desc', 'translatable' => TRUE);
-    $options['autosubmit'] = array('default' => FALSE);
-    $options['autosubmit_hide'] = array('default' => TRUE);
+    $options['autosubmit'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['autosubmit_hide'] = array('default' => TRUE, 'bool' => TRUE);
     return $options;
   }
 
@@ -300,3 +315,7 @@ class views_plugin_exposed_form extends views_plugin {
     $form_state['values'] = array();
   }
 }
+
+/**
+ * @}
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_basic.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_basic.inc
index 71d4224..73ae54a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_basic.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_basic.inc
@@ -1,6 +1,13 @@
 <?php
 
 /**
- * Exposed form plugin that provides basic exposed form
+ * @file
+ * Definition of views_plugin_exposed_form_basic.
+ */
+
+/**
+ * Exposed form plugin that provides a basic exposed form.
+ *
+ * @ingroup views_exposed_form_plugins
  */
 class views_plugin_exposed_form_basic extends views_plugin_exposed_form { }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc
index 2b564a4..4f2c2d2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc
@@ -1,14 +1,21 @@
 <?php
 
 /**
- * Exposed form plugin that provides basic exposed form
+ * @file
+ * Definition of views_plugin_exposed_form_input_required.
+ */
+
+/**
+ * Exposed form plugin that provides an exposed form with required input.
+ *
+ * @ingroup views_exposed_form_plugins
  */
 class views_plugin_exposed_form_input_required extends views_plugin_exposed_form {
 
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['text_input_required'] = array('default' => t('Select any filter and click on Apply to see results'), 'translatable' => TRUE);
+    $options['text_input_required'] = array('default' => 'Select any filter and click on Apply to see results', 'translatable' => TRUE);
     $options['text_input_required_format'] = array('default' => NULL);
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_localization.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_localization.inc
index bfff15f..08caf9e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_localization.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_localization.inc
@@ -6,9 +6,15 @@
  */
 
 /**
- * The base plugin to handle localization of Views strings.
+ * @defgroup views_localization_plugins Views localization plugins
+ * @{
+ * @todo.
  *
- * @ingroup views_localization_plugins
+ * @see hook_views_plugins()
+ */
+
+/**
+ * The base plugin to handle localization of Views strings.
  */
 class views_plugin_localization extends views_plugin {
   // Store for exported strings
@@ -159,3 +165,7 @@ class views_plugin_localization extends views_plugin {
     }
   }
 }
+
+/**
+ * @}
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager.inc
index 57a987d..416d662 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager.inc
@@ -1,9 +1,20 @@
 <?php
 
 /**
- * The base plugin to handle pager.
+ * @file
+ * Definition of views_plugin_pager.
+ */
+
+/**
+ * @defgroup views_pager_plugins Views pager plugins
+ * @{
+ * @todo.
  *
- * @ingroup views_pager_plugins
+ * @see hook_views_plugins()
+ */
+
+/**
+ * The base plugin to handle pager.
  */
 class views_plugin_pager extends views_plugin {
   var $current_page = NULL;
@@ -219,3 +230,7 @@ class views_plugin_pager extends views_plugin {
     return FALSE;
   }
 }
+
+/**
+ * @}
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_full.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_full.inc
index 3884ac1..d4c2203 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_full.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_full.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_pager_full.
+ */
+
+/**
  * The plugin to handle full pager.
  *
  * @ingroup views_pager_plugins
@@ -19,18 +24,28 @@ class views_plugin_pager_full extends views_plugin_pager {
     $options['offset'] = array('default' => 0);
     $options['id'] = array('default' => 0);
     $options['total_pages'] = array('default' => '');
+    // Use the same default quantity that core uses by default.
+    $options['quantity'] = array('default' => 9);
     $options['expose'] = array(
       'contains' => array(
         'items_per_page' => array('default' => FALSE, 'bool' => TRUE),
         'items_per_page_label' => array('default' => 'Items per page', 'translatable' => TRUE),
         'items_per_page_options' => array('default' => '5, 10, 20, 40, 60'),
-        'items_per_page_options_all' => array('default' => FALSE),
+        'items_per_page_options_all' => array('default' => FALSE, 'bool' => TRUE),
         'items_per_page_options_all_label' => array('default' => '- All -', 'translatable' => TRUE),
 
         'offset' => array('default' => FALSE, 'bool' => TRUE),
         'offset_label' => array('default' => 'Offset', 'translatable' => TRUE),
       ),
     );
+    $options['tags'] = array(
+      'contains' => array(
+        'first' => array('default' => '« first', 'translatable' => TRUE),
+        'previous' => array('default' => '‹ previous', 'translatable' => TRUE),
+        'next' => array('default' => 'next ›', 'translatable' => TRUE),
+        'last' => array('default' => 'last »', 'translatable' => TRUE),
+      ),
+    );
     return $options;
   }
 
@@ -68,6 +83,51 @@ class views_plugin_pager_full extends views_plugin_pager {
       '#default_value' => $this->options['total_pages'],
     );
 
+    $form['quantity'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Number of pager links visible'),
+      '#description' => t('Specify the number of links to pages to display in the pager.'),
+      '#default_value' => $this->options['quantity'],
+    );
+
+    $form['tags'] = array (
+      '#type' => 'fieldset',
+      '#collapsible' => FALSE,
+      '#collapsed' => FALSE,
+      '#tree' => TRUE,
+      '#title' => t('Tags'),
+      '#input' => TRUE,
+      '#description' => t('A lists of labels for the controls in the pager'),
+    );
+
+    $form['tags']['first'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text for "first"-link'),
+      '#description' => t('Text for "first"-link'),
+      '#default_value' => $this->options['tags']['first'],
+    );
+
+    $form['tags']['previous'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text for "previous"-link'),
+      '#description' => t('Text for "previous"-link'),
+      '#default_value' => $this->options['tags']['previous'],
+    );
+
+    $form['tags']['next'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text for "next"-link'),
+      '#description' => t('Text for "next"-link'),
+      '#default_value' => $this->options['tags']['next'],
+    );
+
+    $form['tags']['last'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text for "last"-link'),
+      '#description' => t('Text for "last"-link'),
+      '#default_value' => $this->options['tags']['last'],
+    );
+
     $form['expose'] = array (
       '#type' => 'fieldset',
       '#collapsible' => FALSE,
@@ -207,8 +267,19 @@ class views_plugin_pager_full extends views_plugin_pager {
 
   function render($input) {
     $pager_theme = views_theme_functions('pager', $this->view, $this->display);
+    // The 0, 1, 3, 4 index are correct. See theme_pager documentation.
+    $tags = array(
+      0 => $this->options['tags']['first'],
+      1 => $this->options['tags']['previous'],
+      3 => $this->options['tags']['next'],
+      4 => $this->options['tags']['last'],
+    );
     $output = theme($pager_theme, array(
-      'parameters' => $input, 'element' => $this->options['id']));
+      'tags' => $tags,
+      'element' => $this->options['id'],
+      'parameters' => $input,
+      'quantity' => $this->options['quantity'],
+    ));
     return $output;
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_mini.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_mini.inc
index 13617ed..2daea99 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_mini.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_mini.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_pager_mini.
+ */
+
+/**
  * The plugin to handle full pager.
  *
  * @ingroup views_pager_plugins
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_none.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_none.inc
index 1fca14b..12b96d0 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_none.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_none.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_pager_none.
+ */
+
+/**
  * Plugin for views without pagers.
  *
  * @ingroup views_pager_plugins
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_some.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_some.inc
index a482f87..09452ce 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_some.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_pager_some.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_pager_some.
+ */
+
+/**
  * Plugin for views without pagers.
  *
  * @ingroup views_pager_plugins
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query.inc
index 55c0b2a..d39ed98 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query.inc
@@ -1,15 +1,26 @@
 <?php
+
 /**
- * @file views_plugin_query.inc
+ * @file
  * Defines the base query class, which is the underlying layer in a View.
  */
 
 /**
+ * @defgroup views_query_plugins Views query plugins
+ * @{
+ * A Views query plugin builds SQL to execute using the Drupal database API.
+ *
+ * @see hook_views_plugins()
+ */
+
+/**
  * Object used to create a SELECT query.
  */
 class views_plugin_query extends views_plugin {
   /**
    * A pager plugin that should be provided by the display.
+   *
+   * @var views_plugin_pager
    */
   var $pager = NULL;
 
@@ -54,7 +65,8 @@ class views_plugin_query extends views_plugin {
    * Values to set: $view->result, $view->total_rows, $view->execute_time,
    * $view->pager['current_page'].
    *
-   * $view->result should contain an array of objects.
+   * $view->result should contain an array of objects. The array must use a
+   * numeric index starting at 0.
    *
    * @param view $view
    *   The view which is executed.
@@ -167,3 +179,7 @@ class views_plugin_query extends views_plugin {
     return FALSE;
   }
 }
+
+/**
+ * @}
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query_default.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query_default.inc
index 39e0174..c6c7649 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query_default.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_query_default.inc
@@ -1,12 +1,14 @@
 <?php
+
 /**
- * @file views_plugin_query_default.inc
- * Defines the default query object which builds SQL to execute using the
- * Drupal database API.
+ * @file
+ * Defines the default query object.
  */
 
 /**
  * Object used to create a SELECT query.
+ *
+ * @ingroup views_query_plugins
  */
 class views_plugin_query_default extends views_plugin_query {
 
@@ -54,6 +56,13 @@ class views_plugin_query_default extends views_plugin_query {
    */
   var $groupby = array();
 
+
+  /**
+   * An array of fields.
+   */
+  var $fields = array();
+
+
   /**
    * The table header to use for tablesort. This matters because tablesort
    * needs to modify the query and needs the header.
@@ -90,6 +99,22 @@ class views_plugin_query_default extends views_plugin_query {
    var $tags = array();
 
   /**
+   * Is the view marked as not distinct.
+   *
+   * @var bool
+   */
+  var $no_distinct;
+
+  /**
+   * Defines the distinct type.
+   * - FALSE if it's distinct by base field.
+   * - TRUE if it just adds the sql distinct keyword.
+   *
+   * @var bool
+   */
+  public $pure_distinct = FALSE;
+
+  /**
    * Constructor; Create the basic query object and fill with default values.
    */
   function init($base_table = 'node', $base_field = 'nid', $options) {
@@ -140,11 +165,20 @@ class views_plugin_query_default extends views_plugin_query {
   // Utility methods to set flags and data.
 
   /**
-   * Set the base field to be distinct.
+   * Set the view to be distinct.
+   *
+   * There are either distinct per base field or distinct in the pure sql way,
+   * based on $pure_distinct.
+   *
+   * @param bool $value
+   *   Should the view by distincted.
+   * @param bool $pure_distinct
+   *   Should only the sql keyword be added.
    */
-  function set_distinct($value = TRUE) {
+  function set_distinct($value = TRUE, $pure_distinct = FALSE) {
     if (!(isset($this->no_distinct) && $value)) {
       $this->distinct = $value;
+      $this->pure_distinct = $pure_distinct;
     }
   }
 
@@ -182,13 +216,19 @@ class views_plugin_query_default extends views_plugin_query {
       'default' => FALSE,
       'bool' => TRUE,
     );
+    $options['pure_distinct'] = array(
+      'default' => FALSE,
+      'bool' => TRUE,
+    );
     $options['slave'] = array(
       'default' => FALSE,
       'bool' => TRUE,
     );
     $options['query_comment'] = array(
       'default' => '',
-      'bool' => FALSE,
+    );
+    $options['query_tags'] = array(
+      'default' => array(),
     );
 
     return $options;
@@ -213,6 +253,13 @@ class views_plugin_query_default extends views_plugin_query {
       '#description' => t('This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution.'),
       '#default_value' => !empty($this->options['distinct']),
     );
+    $form['pure_distinct'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Pure Distinct'),
+      '#description' => t('This will prevent views from adding the base column to the distinct field. If this is not selected and the base column is a primary key, then a non-pure distinct will not function properly because the primary key is always unique.'),
+      '#default_value' => !empty($this->options['pure_distinct']),
+      '#dependency' => array('edit-query-options-distinct' => '1'),
+    );
     $form['slave'] = array(
       '#type' => 'checkbox',
       '#title' => t('Use Slave Server'),
@@ -225,6 +272,23 @@ class views_plugin_query_default extends views_plugin_query {
       '#description' => t('If set, this comment will be embedded in the query and passed to the SQL server. This can be helpful for logging or debugging.'),
       '#default_value' => $this->options['query_comment'],
     );
+    $form['query_tags'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Query Tags'),
+      '#description' => t('If set, these tags will be appended to the query and can be used to identify the query in a module. This can be helpful for altering queries.'),
+      '#default_value' => implode(', ', $this->options['query_tags']),
+      '#element_validate' => array('views_element_validate_tags'),
+    );
+  }
+
+  /**
+   * Special submit handling.
+   */
+  function options_submit(&$form, &$form_state) {
+    $element = array('#parents' => array('query', 'options', 'query_tags'));
+    $value = explode(',', drupal_array_get_nested_value($form_state['values'], $element['#parents']));
+    $value = array_filter(array_map('trim', $value));
+    form_set_value($element, $value, $form_state);
   }
 
   // ----------------------------------------------------------------
@@ -788,7 +852,19 @@ class views_plugin_query_default extends views_plugin_query {
    *   options such as IN, LIKE, or BETWEEN. Defaults to IN if $value is an array
    *   = otherwise. If $field is a string you have to use 'formula' here.
    *
+   * The $field, $value and $operator arguments can also be passed in with a
+   * single DatabaseCondition object, like this:
+   * @code
+   *   $this->query->add_where(
+   *     $this->options['group'],
+   *     db_or()
+   *       ->condition($field, $value, 'NOT IN')
+   *       ->condition($field, $value, 'IS NULL')
+   *   );
+   * @endcode
+   *
    * @see QueryConditionInterface::condition()
+   * @see DatabaseCondition
    */
   function add_where($group, $field, $value = NULL, $operator = NULL) {
     // Ensure all variants of 0 are actually 0. Thus '', 0 and NULL are all
@@ -1009,7 +1085,7 @@ class views_plugin_query_default extends views_plugin_query {
   /**
    * Adds a query tag to the sql object.
    *
-   * @see SelectQuery::addTag
+   * @see SelectQuery::addTag()
    */
   function add_tag($tag) {
     $this->tags[] = $tag;
@@ -1129,6 +1205,7 @@ class views_plugin_query_default extends views_plugin_query {
       }
       // This is a formula, using no tables.
       elseif (empty($field['table'])) {
+        $non_aggregates[] = $fieldname;
         $placeholders = !empty($field['placeholders']) ? $field['placeholders'] : array();
         $query->addExpression($string, $fieldname, $placeholders);
       }
@@ -1171,8 +1248,10 @@ class views_plugin_query_default extends views_plugin_query {
   function query($get_count = FALSE) {
     // Check query distinct value.
     if (empty($this->no_distinct) && $this->distinct && !empty($this->fields)) {
-      $base_field_alias = $this->add_field($this->base_table, $this->base_field);
-      $this->add_groupby($base_field_alias);
+      if ($this->pure_distinct === FALSE){
+        $base_field_alias = $this->add_field($this->base_table, $this->base_field);
+        $this->add_groupby($base_field_alias);
+      }
       $distinct = TRUE;
     }
 
@@ -1276,6 +1355,13 @@ class views_plugin_query_default extends views_plugin_query {
       $query->comment($this->options['query_comment']);
     }
 
+    // Add the query tags.
+    if (!empty($this->options['query_tags'])) {
+      foreach ($this->options['query_tags'] as $tag) {
+        $query->addTag($tag);
+      }
+    }
+
     // Add all query substitutions as metadata.
     $query->addMetaData('views_substitutions', module_invoke_all('views_query_substitutions', $this));
 
@@ -1312,7 +1398,7 @@ class views_plugin_query_default extends views_plugin_query {
   function build(&$view) {
     // Make the query distinct if the option was set.
     if (!empty($this->options['distinct'])) {
-      $this->set_distinct();
+      $this->set_distinct(TRUE, !empty($this->options['pure_distinct']));
     }
 
     // Store the view in the object to be able to use it later.
@@ -1402,14 +1488,13 @@ class views_plugin_query_default extends views_plugin_query {
 
         $this->pager->post_execute($view->result);
 
-        if ($this->pager->use_pager()) {
+        if ($this->pager->use_count_query() || !empty($view->get_total_rows)) {
           $view->total_rows = $this->pager->get_total_items();
         }
       }
       catch (Exception $e) {
         $view->result = array();
         if (!empty($view->live_preview)) {
-          drupal_set_message(time());
           drupal_set_message($e->getMessage(), 'error');
         }
         else {
@@ -1418,6 +1503,9 @@ class views_plugin_query_default extends views_plugin_query {
       }
 
     }
+    else {
+      $start = microtime(TRUE);
+    }
     $view->execute_time = microtime(TRUE) - $start;
   }
 
@@ -1489,6 +1577,15 @@ class views_plugin_query_default extends views_plugin_query {
           'sort' => 'views_handler_sort_group_by_numeric',
         ),
       ),
+      'stddev_pop' => array(
+        'title' => t('Standard derivation'),
+        'method' => 'views_query_default_aggregation_method_simple',
+        'handler' => array(
+          'argument' => 'views_handler_argument_group_by_numeric',
+          'filter' => 'views_handler_filter_group_by_numeric',
+          'sort' => 'views_handler_sort_group_by_numeric',
+        ),
+      )
     );
   }
 
@@ -1545,3 +1642,16 @@ function views_query_default_aggregation_method_distinct($group_type, $field) {
   $group_type = str_replace('_distinct', '', $group_type);
   return strtoupper($group_type) . '(DISTINCT ' . $field . ')';
 }
+
+/**
+ * Validation callback for query tags.
+ */
+function views_element_validate_tags($element, &$form_state) {
+  $values = array_map('trim', explode(',', $element['#value']));
+  foreach ($values as $value) {
+    if (preg_match("/[^a-z_]/", $value)) {
+      form_error($element, t('The query tags may only contain lower-case alphabetical characters and underscores.'));
+      return;
+    }
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row.inc
index 78d043e..157cc26 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row.inc
@@ -1,25 +1,24 @@
 <?php
+
 /**
  * @file
  * Contains the base row style plugin.
  */
 
 /**
- * @defgroup views_row_plugins Views' row plugins
+ * @defgroup views_row_plugins Views row plugins
  * @{
+ * Row plugins control how Views outputs an individual record.
  *
- * Row plugins control how Views outputs an individual record. They are
- * tightly coupled to style plugins, in that a style plugin is what calls
- * the row plugin.
+ * They are tightly coupled to style plugins, in that a style plugin is what
+ * calls the row plugin.
  *
- * @see hook_views_plugins
+ * @see hook_views_plugins()
  */
 
 /**
  * Default plugin to view a single row of a table. This is really just a wrapper around
  * a theme function.
- *
- * @ingroup views_row_plugins
  */
 class views_plugin_row extends views_plugin {
   /**
@@ -130,6 +129,12 @@ class views_plugin_row extends views_plugin {
   /**
    * Render a row object. This usually passes through to a theme template
    * of some form, but not always.
+   *
+   * @param stdClass $row
+   *   A single row of the query result, so an element of $view->result.
+   *
+   * @return string
+   *   The rendered output of a single row, used by the style plugin.
    */
   function render($row) {
     return theme($this->theme_functions(),
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_fields.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_fields.inc
index 65510d2..b1c02e1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_fields.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_fields.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the base row style plugin.
@@ -18,8 +19,8 @@ class views_plugin_row_fields extends views_plugin_row {
 
     $options['inline'] = array('default' => array());
     $options['separator'] = array('default' => '');
-    $options['hide_empty'] = array('default' => FALSE);
-    $options['default_field_elements'] = array('default' => TRUE);
+    $options['hide_empty'] = array('default' => FALSE, 'bool' => TRUE);
+    $options['default_field_elements'] = array('default' => TRUE, 'bool' => TRUE);
     return $options;
   }
 
@@ -61,6 +62,9 @@ class views_plugin_row_fields extends views_plugin_row {
       '#size' => 10,
       '#default_value' => isset($this->options['separator']) ? $this->options['separator'] : '',
       '#description' => t('The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field.'),
+      '#dependency' => array(
+        'edit-row-options-default-field-elements' => array(1),
+      ),
     );
 
     $form['hide_empty'] = array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_rss_fields.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_rss_fields.inc
new file mode 100644
index 0000000..9355e83
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_row_rss_fields.inc
@@ -0,0 +1,180 @@
+<?php
+/**
+ * @file
+ * Contains an implementation of RSS items based on fields on a row plugin.
+ */
+
+/**
+ * Renders an RSS item based on fields.
+ */
+class views_plugin_row_rss_fields extends views_plugin_row {
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['title_field'] = array('default' => '');
+    $options['link_field'] = array('default' => '');
+    $options['description_field'] = array('default' => '');
+    $options['creator_field'] = array('default' => '');
+    $options['date_field'] = array('default' => '');
+    $options['guid_field_options']['guid_field'] = array('default' => '');
+    $options['guid_field_options']['guid_field_is_permalink'] = array('default' => TRUE, 'bool' => TRUE);
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $initial_labels = array('' => t('- None -'));
+    $view_fields_labels = $this->display->handler->get_field_labels();
+    $view_fields_labels = array_merge($initial_labels, $view_fields_labels);
+
+    $form['title_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Title field'),
+      '#description' => t('The field that is going to be used as the RSS item title for each row.'),
+      '#options' => $view_fields_labels,
+      '#default_value' => $this->options['title_field'],
+      '#required' => TRUE,
+    );
+    $form['link_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Link field'),
+      '#description' => t('The field that is going to be used as the RSS item link for each row. This must be a drupal relative path.'),
+      '#options' => $view_fields_labels,
+      '#default_value' => $this->options['link_field'],
+      '#required' => TRUE,
+    );
+    $form['description_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Description field'),
+      '#description' => t('The field that is going to be used as the RSS item description for each row.'),
+      '#options' => $view_fields_labels,
+      '#default_value' => $this->options['description_field'],
+      '#required' => TRUE,
+    );
+    $form['creator_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Creator field'),
+      '#description' => t('The field that is going to be used as the RSS item creator for each row.'),
+      '#options' => $view_fields_labels,
+      '#default_value' => $this->options['creator_field'],
+      '#required' => TRUE,
+    );
+    $form['date_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Publication date field'),
+      '#description' => t('The field that is going to be used as the RSS item pubDate for each row. It needs to be in RFC 2822 format.'),
+      '#options' => $view_fields_labels,
+      '#default_value' => $this->options['date_field'],
+      '#required' => TRUE,
+    );
+    $form['guid_field_options'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('GUID settings'),
+      '#collapsible' => FALSE,
+      '#collapsed' => FALSE,
+    );
+    $form['guid_field_options']['guid_field'] = array(
+      '#type' => 'select',
+      '#title' => t('GUID field'),
+      '#description' => t('The globally unique identifier of the RSS item.'),
+      '#options' => $view_fields_labels,
+      '#default_value' => $this->options['guid_field_options']['guid_field'],
+      '#required' => TRUE,
+    );
+    $form['guid_field_options']['guid_field_is_permalink'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('GUID is permalink'),
+      '#description' => t('The RSS item GUID is a permalink.'),
+      '#default_value' => $this->options['guid_field_options']['guid_field_is_permalink'],
+    );
+  }
+
+  function validate() {
+    $errors = parent::validate();
+    $required_options = array('title_field', 'link_field', 'description_field', 'creator_field', 'date_field');
+    foreach ($required_options as $required_option) {
+      if (empty($this->options[$required_option])) {
+        $errors[] = t('Row style plugin requires specifying which views fields to use for RSS item.');
+        break;
+      }
+    }
+    // Once more for guid.
+    if (empty($this->options['guid_field_options']['guid_field'])) {
+      $errors[] = t('Row style plugin requires specifying which views fields to use for RSS item.');
+    }
+    return $errors;
+  }
+
+  function render($row) {
+    static $row_index;
+    if (!isset($row_index)) {
+      $row_index = 0;
+    }
+    if (function_exists('rdf_get_namespaces')) {
+      // Merge RDF namespaces in the XML namespaces in case they are used
+      // further in the RSS content.
+      $xml_rdf_namespaces = array();
+      foreach (rdf_get_namespaces() as $prefix => $uri) {
+        $xml_rdf_namespaces['xmlns:' . $prefix] = $uri;
+      }
+      $this->view->style_plugin->namespaces += $xml_rdf_namespaces;
+    }
+
+    // Create the RSS item object.
+    $item = new stdClass();
+    $item->title = $this->get_field($row_index, $this->options['title_field']);
+    $item->link = url($this->get_field($row_index, $this->options['link_field']), array('absolute' => TRUE));
+    $item->description = $this->get_field($row_index, $this->options['description_field']);
+    $item->elements = array(
+      array('key' => 'pubDate', 'value' => $this->get_field($row_index, $this->options['date_field'])),
+      array(
+        'key' => 'dc:creator',
+        'value' => $this->get_field($row_index, $this->options['creator_field']),
+        'namespace' => array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/'),
+      ),
+    );
+    $guid_is_permalink_string = 'false';
+    $item_guid = $this->get_field($row_index, $this->options['guid_field_options']['guid_field']);
+    if ($this->options['guid_field_options']['guid_field_is_permalink']) {
+      $guid_is_permalink_string = 'true';
+      $item_guid = url($item_guid, array('absolute' => TRUE));
+    }
+    $item->elements[] = array(
+      'key' => 'guid',
+      'value' => $item_guid,
+      'attributes' => array('isPermaLink' => $guid_is_permalink_string),
+    );
+
+    $row_index++;
+
+    foreach ($item->elements as $element) {
+      if (isset($element['namespace'])) {
+        $this->view->style_plugin->namespaces = array_merge($this->view->style_plugin->namespaces, $element['namespace']);
+      }
+    }
+
+    return theme($this->theme_functions(),
+      array(
+        'view' => $this->view,
+        'options' => $this->options,
+        'row' => $item,
+        'field_alias' => isset($this->field_alias) ? $this->field_alias : '',
+      ));
+  }
+
+  /**
+   * Retrieves a views field value from the style plugin.
+   *
+   * @param $index
+   *   The index count of the row as expected by views_plugin_style::get_field().
+   * @param $field_id
+   *   The ID assigned to the required field in the display.
+   */
+  function get_field($index, $field_id) {
+    if (empty($this->view->style_plugin) || !is_object($this->view->style_plugin) || empty($field_id)) {
+      return '';
+    }
+    return $this->view->style_plugin->get_field($index, $field_id);
+  }
+
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style.inc
index 421591a..d355e1b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style.inc
@@ -1,7 +1,12 @@
 <?php
 
 /**
- * @defgroup views_style_plugins Views' style plugins
+ * @file
+ * Definition of views_plugin_style.
+ */
+
+/**
+ * @defgroup views_style_plugins Views style plugins
  * @{
  * Style plugins control how a view is rendered. For example, they
  * can choose to display a collection of fields, node_view() output,
@@ -11,7 +16,7 @@
  * a single record. Not all style plugins can utilize this, so it is
  * up to the plugin to set this up and call through to the row plugin.
  *
- * @see hook_views_plugins
+ * @see hook_views_plugins()
  */
 
 /**
@@ -22,6 +27,15 @@ class views_plugin_style extends views_plugin {
    * Store all available tokens row rows.
    */
   var $row_tokens = array();
+
+  /**
+   * Contains the row plugin, if it's initialized
+   * and the style itself supports it.
+   *
+   * @var views_plugin_row
+   */
+  var $row_plugin;
+
   /**
    * Initialize a style plugin.
    *
@@ -75,15 +89,18 @@ class views_plugin_style extends views_plugin {
 
   /**
    * Return TRUE if this style also uses fields.
+   *
+   * @return bool
    */
   function uses_fields() {
     // If we use a row plugin, ask the row plugin. Chances are, we don't
     // care, it does.
+    $row_uses_fields = FALSE;
     if ($this->uses_row_plugin() && !empty($this->row_plugin)) {
-      return $this->row_plugin->uses_fields();
+      $row_uses_fields = $this->row_plugin->uses_fields();
     }
-    // Otherwise, maybe we do.
-    return !empty($this->definition['uses fields']);
+    // Otherwise, check the definition or the option.
+    return $row_uses_fields || !empty($this->definition['uses fields']) || !empty($this->options['uses_fields']);
   }
 
   /**
@@ -154,7 +171,10 @@ class views_plugin_style extends views_plugin {
     $options['grouping'] = array('default' => array());
     if ($this->uses_row_class()) {
       $options['row_class'] = array('default' => '');
+      $options['default_row_class'] = array('default' => TRUE, 'bool' => TRUE);
+      $options['row_class_special'] = array('default' => TRUE, 'bool' => TRUE);
     }
+    $options['uses_fields'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -167,9 +187,8 @@ class views_plugin_style extends views_plugin {
     // @TODO: Document "uses grouping" in docs.php when docs.php is written.
     if ($this->uses_fields() && $this->definition['uses grouping']) {
       $options = array('' => t('- None -'));
-      $field_labels = $this->display->handler->get_field_labels();
+      $field_labels = $this->display->handler->get_field_labels(TRUE);
       $options += $field_labels;
-
       // If there are no fields, we can't group on them.
       if (count($options) > 1) {
         // This is for backward compability, when there was just a single select form.
@@ -227,6 +246,28 @@ class views_plugin_style extends views_plugin {
       if ($this->uses_fields()) {
         $form['row_class']['#description'] .= ' ' . t('You may use field tokens from as per the "Replacement patterns" used in "Rewrite the output of this field" for all fields.');
       }
+
+      $form['default_row_class'] = array(
+        '#title' => t('Add views row classes'),
+        '#description' => t('Add the default row classes like views-row-1 to the output. You can use this to quickly reduce the amount of markup the view provides by default, at the cost of making it more difficult to apply CSS.'),
+        '#type' => 'checkbox',
+        '#default_value' => $this->options['default_row_class'],
+      );
+      $form['row_class_special'] = array(
+        '#title' => t('Add striping (odd/even), first/last row classes'),
+        '#description' => t('Add css classes to the first and last line, as well as odd/even classes for striping.'),
+        '#type' => 'checkbox',
+        '#default_value' => $this->options['row_class_special'],
+      );
+    }
+
+    if (!$this->uses_fields() || !empty($this->options['uses_fields'])) {
+      $form['uses_fields'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Force using fields'),
+        '#description' => t('If neither the row nor the style plugin supports fields, this field allows to enable them, so you can for example use groupby.'),
+        '#default_value' => $this->options['uses_fields'],
+      );
     }
   }
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_default.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_default.inc
index e8c9db8..a18f6cc 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_default.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_default.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the default style plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_grid.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_grid.inc
index 915f14c..9be7ee1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_grid.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_grid.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the grid style plugin.
@@ -18,7 +19,7 @@ class views_plugin_style_grid extends views_plugin_style {
 
     $options['columns'] = array('default' => '4');
     $options['alignment'] = array('default' => 'horizontal');
-    $options['fill_single_line'] = array('default' => TRUE);
+    $options['fill_single_line'] = array('default' => TRUE, 'bool' => TRUE);
     $options['summary'] = array('default' => '');
 
     return $options;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc
index 1da6f21..f571f62 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the table style plugin.
@@ -13,11 +14,11 @@ class views_plugin_style_jump_menu extends views_plugin_style {
   function option_definition() {
     $options = parent::option_definition();
 
-    $options['hide'] = array('default' => FALSE);
+    $options['hide'] = array('default' => FALSE, 'bool' => TRUE);
     $options['path'] = array('default' => '');
     $options['text'] = array('default' => 'Go', 'translatable' => TRUE);
     $options['choose'] = array('default' => '- Choose -', 'translatable' => TRUE);
-    $options['default_value'] = array('default' => FALSE);
+    $options['default_value'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_list.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_list.inc
index 3662004..2a1dadb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_list.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_list.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the list style plugin.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_rss.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_rss.inc
index a54eccc..27106a8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_rss.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_rss.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the RSS style plugin.
@@ -70,6 +71,21 @@ class views_plugin_style_rss extends views_plugin_style {
     return array();
   }
 
+  /**
+   * Get RSS feed description.
+   *
+   * @return string
+   *   The string containing the description with the tokens replaced.
+   */
+  function get_description() {
+    $description = $this->options['description'];
+
+    // Allow substitutions from the first row.
+    $description = $this->tokenize_value($description, 0);
+
+    return $description;
+  }
+
   function render() {
     if (empty($this->row_plugin)) {
       vpr('views_plugin_style_default: Missing row plugin');
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary.inc
index 1f705ce..5081dd6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the default summary style plugin, which displays items in an HTML list.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc
index 0bde6a6..5b02163 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the default summary style plugin, which displays items in an HTML list.
@@ -14,11 +15,11 @@ class views_plugin_style_summary_jump_menu extends views_plugin_style {
     $options = parent::option_definition();
 
     $options['base_path'] = array('default' => '');
-    $options['count'] = array('default' => TRUE);
-    $options['hide'] = array('default' => FALSE);
+    $options['count'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['hide'] = array('default' => FALSE, 'bool' => TRUE);
     $options['text'] = array('default' => 'Go', 'translatable' => TRUE);
     $options['choose'] = array('default' => '- Choose -', 'translatable' => TRUE);
-    $options['default_value'] = array('default' => FALSE);
+    $options['default_value'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc
index 56a0024..fc46624 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the unformatted summary style plugin.
@@ -12,7 +13,7 @@
 class views_plugin_style_summary_unformatted extends views_plugin_style_summary {
   function option_definition() {
     $options = parent::option_definition();
-    $options['inline'] = array('default' => FALSE);
+    $options['inline'] = array('default' => FALSE, 'bool' => TRUE);
     $options['separator'] = array('default' => '');
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_table.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_table.inc
index bd090e5..98919ab 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_table.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_plugin_style_table.inc
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains the table style plugin.
@@ -29,11 +30,11 @@ class views_plugin_style_table extends views_plugin_style {
     $options['columns'] = array('default' => array());
     $options['default'] = array('default' => '');
     $options['info'] = array('default' => array());
-    $options['override'] = array('default' => TRUE);
-    $options['sticky'] = array('default' => FALSE);
+    $options['override'] = array('default' => TRUE, 'bool' => TRUE);
+    $options['sticky'] = array('default' => FALSE, 'bool' => TRUE);
     $options['order'] = array('default' => 'asc');
     $options['summary'] = array('default' => '', 'translatable' => TRUE);
-    $options['empty_table'] = array('default' => FALSE);
+    $options['empty_table'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php
index 09d9d32..8893ab8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Provides the interface and base class for Views Wizard plugins.
+ */
+
+/**
+ * Defines a common interface for Views Wizard plugins.
+ */
 interface ViewsWizardInterface {
   function __construct($plugin);
 
@@ -549,6 +557,16 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface {
         }
       }
     }
+
+    // If any of the displays use the table style, take sure that the fields
+    // always have a labels by unsetting the override.
+    foreach ($display_options as &$options) {
+      if ($options['style_plugin'] == 'table') {
+        foreach ($display_options['default']['fields'] as &$field) {
+          unset($field['label']);
+        }
+      }
+    }
   }
 
   /**
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_comment_views_wizard.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_comment_views_wizard.class.php
index be8e743..09d4994 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_comment_views_wizard.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_comment_views_wizard.class.php
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsUiCommentViewsWizard.
+ */
+
+/**
+ * Tests creating comment views with the wizard.
+ */
 class ViewsUiCommentViewsWizard extends ViewsUiBaseViewsWizard {
 
   protected function row_style_options($type) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_file_managed_views_wizard.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_file_managed_views_wizard.class.php
index 9894d77..111b631 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_file_managed_views_wizard.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_file_managed_views_wizard.class.php
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsUiFileManagedViewsWizard.
+ */
+
+/**
+ * Tests creating managed files views with the wizard.
+ */
 class ViewsUiFileManagedViewsWizard extends ViewsUiBaseViewsWizard {
   protected function default_display_options($form, $form_state) {
     $display_options = parent::default_display_options($form, $form_state);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_revision_views_wizard.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_revision_views_wizard.class.php
index f465e6b..3623f53 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_revision_views_wizard.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_revision_views_wizard.class.php
@@ -1,7 +1,25 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsUiNodeRevisionViewsWizard.
+ */
+
+/**
+ * Tests creating node revision views with the wizard.
+ */
 class ViewsUiNodeRevisionViewsWizard extends ViewsUiNodeViewsWizard {
 
+  /**
+   * Node revisions do not support full posts or teasers, so remove them.
+   */
+  protected function row_style_options($type) {
+    $options = parent::row_style_options($type);
+    unset($options['teasers']);
+    unset($options['full_posts']);
+    return $options;
+  }
+
   protected function default_display_options($form, $form_state) {
     $display_options = parent::default_display_options($form, $form_state);
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_views_wizard.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_views_wizard.class.php
index 14f97f6..010220e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_views_wizard.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_node_views_wizard.class.php
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsUiNodeViewsWizard.
+ */
+
+/**
+ * Tests creating node views with the wizard.
+ */
 class ViewsUiNodeViewsWizard extends ViewsUiBaseViewsWizard {
 
   protected function row_style_options($type) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_taxonomy_term_views_wizard.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_taxonomy_term_views_wizard.class.php
index 6310e8c..4f05548 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_taxonomy_term_views_wizard.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_taxonomy_term_views_wizard.class.php
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsUiTaxonomyTermViewsWizard.
+ */
+
+/**
+ * Tests creating taxonomy views with the wizard.
+ */
 class ViewsUiTaxonomyTermViewsWizard extends ViewsUiBaseViewsWizard {
 
   protected function default_display_options($form, $form_state) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_users_views_wizard.class.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_users_views_wizard.class.php
index 1134a24..73eff48 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_users_views_wizard.class.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/plugins/views_wizard/views_ui_users_views_wizard.class.php
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsUiUsersViewsWizard.
+ */
+
+/**
+ * Tests creating user views with the wizard.
+ */
 class ViewsUiUsersViewsWizard extends ViewsUiBaseViewsWizard {
   protected function default_display_options($form, $form_state) {
     $display_options = parent::default_display_options($form, $form_state);
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test
index 8de9777..353d929 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test
@@ -1,7 +1,12 @@
 <?php
+
 /**
  * @file
- * Test the argument_comment_user_uid handler.
+ * Definition of viewsHandlerArgumentCommentUserUidTest.
+ */
+
+/**
+ * Tests the argument_comment_user_uid handler.
  */
 class viewsHandlerArgumentCommentUserUidTest extends ViewsSqlTest {
   public static function getInfo() {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test
index c504088..1f3f75c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test
@@ -1,7 +1,13 @@
 <?php
+
 /**
  * @file
- * Test the filter_comment_user_uid handler.
+ * Definition of viewsHandlerFilterCommentUserUidTest.
+ */
+
+/**
+ * Tests the filter_comment_user_uid handler.
+ *
  * The actual stuff is done in the parent class.
  */
 class viewsHandlerFilterCommentUserUidTest extends viewsHandlerArgumentCommentUserUidTest {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/field/views_fieldapi.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/field/views_fieldapi.test
new file mode 100644
index 0000000..c5393b5
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/field/views_fieldapi.test
@@ -0,0 +1,498 @@
+<?php
+
+/**
+ * @file
+ * Tests the fieldapi integration of viewsdata.
+ */
+
+/**
+ * @TODO
+ *   - Test on a generic entity not on a node.
+ *
+ * What has to be tested:
+ *   - Take sure that every wanted field is added to the according entity type.
+ *   - Take sure the joins are done correct.
+ *   - Use basic fields and take sure that the full wanted object is build.
+ *   - Use relationships between different entity types, for example node and the node author(user).
+ */
+
+/**
+ * Provides some helper methods for testing fieldapi integration into views.
+ */
+class ViewsFieldApiTestHelper extends ViewsSqlTest {
+  /**
+   * Stores the field definitions used by the test.
+   * @var array
+   */
+  public $fields;
+  /**
+   * Stores the instances of the fields. They have
+   * the same keys as the fields.
+   * @var array
+   */
+  public $instances;
+
+  protected function CreateUser($extra_edit = array()) {
+    $permissions = array('access comments', 'access content', 'post comments', 'skip comment approval');
+    // Create a role with the given permission set.
+    if (!($rid = $this->drupalCreateRole($permissions))) {
+      return FALSE;
+    }
+
+    // Create a user assigned to that role.
+    $edit = array();
+    $edit['name']   = $this->randomName();
+    $edit['mail']   = $edit['name'] . '@example.com';
+    $edit['roles']  = array($rid => $rid);
+    $edit['pass']   = user_password();
+    $edit['status'] = 1;
+    $edit += $extra_edit;
+
+    $account = user_save(drupal_anonymous_user(), $edit);
+
+    $this->assertTrue(!empty($account->uid), t('User created with name %name and pass %pass', array('%name' => $edit['name'], '%pass' => $edit['pass'])), t('User login'));
+    if (empty($account->uid)) {
+      return FALSE;
+    }
+
+    // Add the raw password so that we can log in as this user.
+    $account->pass_raw = $edit['pass'];
+    return $account;
+  }
+
+  function setUpFields($amount = 3) {
+    // Create three fields.
+    $field_names = array();
+    for ($i = 0; $i < $amount; $i++) {
+      $field_names[$i] = 'field_name_' . $i;
+      $field = array('field_name' => $field_names[$i], 'type' => 'text');
+
+      $this->fields[$i] = $field = field_create_field($field);
+    }
+    return $field_names;
+  }
+
+  function setUpInstances($bundle = 'page') {
+    foreach ($this->fields as $key => $field) {
+      $instance = array(
+        'field_name' => $field['field_name'],
+        'entity_type' => 'node',
+        'bundle' => 'page',
+      );
+      $this->instances[$key] = field_create_instance($instance);
+    }
+  }
+
+  /**
+   * Clear all views caches and static caches which are required for the patch.
+   */
+  function clearViewsCaches() {
+    // Reset views data cache.
+    $cache = &drupal_static('_views_fetch_data' . '_cache');
+    $recursion_protection = &drupal_static('_views_fetch_data' . '_recursion_protected');
+    $cache = NULL;
+    $recursion_protection = NULL;
+  }
+}
+
+/**
+ * Test the produced views_data.
+ */
+class viewsFieldApiDataTest extends ViewsFieldApiTestHelper {
+  /**
+   * Stores the fields for this test case.
+   */
+  var $fields;
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Fieldapi: Views Data',
+      'description' => 'Tests the fieldapi views data.',
+      'group' => 'Views Modules',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    $langcode = LANGUAGE_NONE;
+
+
+    $field_names = $this->setUpFields();
+
+    // The first one will be attached to nodes only.
+    $instance = array(
+      'field_name' => $field_names[0],
+      'entity_type' => 'node',
+      'bundle' => 'page',
+    );
+    field_create_instance($instance);
+
+    // The second one will be attached to users only.
+    $instance = array(
+      'field_name' => $field_names[1],
+      'entity_type' => 'user',
+      'bundle' => 'user',
+    );
+    field_create_instance($instance);
+
+    // The third will be attached to both nodes and users.
+    $instance = array(
+      'field_name' => $field_names[2],
+      'entity_type' => 'node',
+      'bundle' => 'page',
+    );
+    field_create_instance($instance);
+    $instance = array(
+      'field_name' => $field_names[2],
+      'entity_type' => 'user',
+      'bundle' => 'user',
+    );
+    field_create_instance($instance);
+
+    // Now create some example nodes/users for the view result.
+    for ($i = 0; $i < 5; $i++) {
+      $edit = array(
+        // @TODO Write a helper method to create such values.
+        'field_name_0' => array($langcode => array((array('value' => $this->randomName())))),
+        'field_name_2' => array($langcode => array((array('value' => $this->randomName())))),
+      );
+      $this->nodes[] = $this->drupalCreateNode($edit);
+    }
+
+    for ($i = 0; $i < 5; $i++) {
+      $edit = array(
+        'field_name_1' => array($langcode => array((array('value' => $this->randomName())))),
+        'field_name_2' => array($langcode => array((array('value' => $this->randomName())))),
+      );
+      $this->users[] = $this->CreateUser($edit);
+    }
+
+    // Reset views data cache.
+    $cache = &drupal_static('_views_fetch_data' . '_cache');
+    $recursion_protection = &drupal_static('_views_fetch_data' . '_recursion_protected');
+    $cache = NULL;
+    $recursion_protection = NULL;
+  }
+
+  /**
+   * Unit testing the views data structure.
+   *
+   * We check data structure for both node and node revision tables.
+   */
+  function testViewsData() {
+    $data = views_fetch_data();
+    
+    // Check the table and the joins of the first field.
+    // Attached to node only.
+    $field = $this->fields[0];
+    $current_table = _field_sql_storage_tablename($field);
+    $revision_table = _field_sql_storage_revision_tablename($field);
+
+    $this->assertTrue(isset($data[$current_table]));
+    $this->assertTrue(isset($data[$revision_table]));
+    // The node field should join against node.
+    $this->assertTrue(isset($data[$current_table]['table']['join']['node']));
+    $this->assertTrue(isset($data[$revision_table]['table']['join']['node_revision']));
+
+    $expected_join = array(
+      'left_field' => 'nid',
+      'field' => 'entity_id',
+      'extra' => array(
+        array('field' => 'entity_type', 'value' => 'node'),
+        array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
+      ),
+    );
+    $this->assertEqual($expected_join, $data[$current_table]['table']['join']['node']);
+    $expected_join = array(
+      'left_field' => 'vid',
+      'field' => 'revision_id',
+      'extra' => array(
+        array('field' => 'entity_type', 'value' => 'node'),
+        array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
+      ),
+    );
+    $this->assertEqual($expected_join, $data[$revision_table]['table']['join']['node_revision']);
+
+
+    // Check the table and the joins of the second field.
+    // Attached to both node and user.
+    $field_2 = $this->fields[2];
+    $current_table_2 = _field_sql_storage_tablename($field_2);
+    $revision_table_2 = _field_sql_storage_revision_tablename($field_2);
+
+    $this->assertTrue(isset($data[$current_table_2]));
+    $this->assertTrue(isset($data[$revision_table_2]));
+    // The second field should join against both node and users.
+    $this->assertTrue(isset($data[$current_table_2]['table']['join']['node']));
+    $this->assertTrue(isset($data[$revision_table_2]['table']['join']['node_revision']));
+    $this->assertTrue(isset($data[$current_table_2]['table']['join']['users']));
+
+    $expected_join = array(
+      'left_field' => 'nid',
+      'field' => 'entity_id',
+      'extra' => array(
+        array('field' => 'entity_type', 'value' => 'node'),
+        array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
+      )
+    );
+    $this->assertEqual($expected_join, $data[$current_table_2]['table']['join']['node']);
+    $expected_join = array(
+      'left_field' => 'vid',
+      'field' => 'revision_id',
+      'extra' => array(
+        array('field' => 'entity_type', 'value' => 'node'),
+        array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
+      )
+    );
+    $this->assertEqual($expected_join, $data[$revision_table_2]['table']['join']['node_revision']);
+    $expected_join = array(
+      'left_field' => 'uid',
+      'field' => 'entity_id',
+      'extra' => array(
+        array('field' => 'entity_type', 'value' => 'user'),
+        array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
+      )
+    );
+    $this->assertEqual($expected_join, $data[$current_table_2]['table']['join']['users']);
+
+    // Check the fields
+    // @todo
+
+    // Check the arguments
+    // @todo
+
+    // Check the sort criterias
+    // @todo
+
+    // Check the relationships
+    // @todo
+
+  }
+}
+
+/**
+ * Tests the field_field handler.
+ * @TODO
+ *   Check a entity-type with bundles
+ *   Check a entity-type without bundles
+ *   Check locale:disabled, locale:enabled and locale:enabled with another language
+ *   Check revisions
+ */
+class viewsHandlerFieldFieldTest extends ViewsFieldApiTestHelper {
+  public $nodes;
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Fieldapi: Field handler',
+      'description' => 'Tests the field itself of the fieldapi integration',
+      'group' => 'Views Modules'
+    );
+  }
+
+  protected function setUp() {
+    parent::setUp();
+
+    // Setup basic fields.
+    $this->setUpFields(3);
+
+    // Setup a field with cardinality > 1.
+    $this->fields[3] = $field = field_create_field(array('field_name' => 'field_name_3', 'type' => 'text', 'cardinality' => FIELD_CARDINALITY_UNLIMITED));
+    // Setup a field that will have no value.
+    $this->fields[4] = $field = field_create_field(array('field_name' => 'field_name_4', 'type' => 'text', 'cardinality' => FIELD_CARDINALITY_UNLIMITED));
+
+    $this->setUpInstances();
+
+    $this->clearViewsCaches();
+
+    // Create some nodes.
+    $this->nodes = array();
+    for ($i = 0; $i < 3; $i++) {
+      $edit = array('type' => 'page');
+
+      for ($key = 0; $key < 3; $key++) {
+        $field = $this->fields[$key];
+        $edit[$field['field_name']][LANGUAGE_NONE][0]['value'] = $this->randomName(8);
+      }
+      for ($j = 0; $j < 5; $j++) {
+        $edit[$this->fields[3]['field_name']][LANGUAGE_NONE][$j]['value'] = $this->randomName(8);
+      }
+      // Set this field to be empty.
+      $edit[$this->fields[4]['field_name']] = array();
+
+      $this->nodes[$i] = $this->drupalCreateNode($edit);
+    }
+  }
+
+  public function testFieldRender() {
+    $this->_testSimpleFieldRender();
+    $this->_testFormatterSimpleFieldRender();
+    $this->_testMultipleFieldRender();
+  }
+
+  public function _testSimpleFieldRender() {
+    $view = $this->getFieldView();
+    $this->executeView($view);
+
+    // Tests that the rendered fields match the actual value of the fields.
+    for ($i = 0; $i < 3; $i++) {
+      for ($key = 0; $key < 2; $key++) {
+        $field = $this->fields[$key];
+        $rendered_field = $view->style_plugin->get_field($i, $field['field_name']);
+        $expected_field = $this->nodes[$i]->{$field['field_name']}[LANGUAGE_NONE][0]['value'];
+        $this->assertEqual($rendered_field, $expected_field);
+      }
+    }
+  }
+
+  /**
+   * Tests that fields with formatters runs as expected.
+   */
+  public function _testFormatterSimpleFieldRender() {
+    $view = $this->getFieldView();
+    $view->display['default']->display_options['fields'][$this->fields[0]['field_name']]['type'] = 'text_trimmed';
+    $view->display['default']->display_options['fields'][$this->fields[0]['field_name']]['settings'] = array(
+      'trim_length' => 3,
+    );
+    $this->executeView($view);
+
+    // Take sure that the formatter works as expected.
+    // @TODO: actually there should be a specific formatter.
+    for ($i = 0; $i < 2; $i++) {
+      $rendered_field = $view->style_plugin->get_field($i, $this->fields[0]['field_name']);
+      $this->assertEqual(strlen($rendered_field), 3);
+    }
+  }
+
+  public function _testMultipleFieldRender() {
+    $view = $this->getFieldView();
+
+    // Test delta limit.
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['group_rows'] = TRUE;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_limit'] = 3;
+    $this->executeView($view);
+
+    for ($i = 0; $i < 3; $i++) {
+      $rendered_field = $view->style_plugin->get_field($i, $this->fields[3]['field_name']);
+      $items = array();
+      $pure_items = $this->nodes[$i]->{$this->fields[3]['field_name']}[LANGUAGE_NONE];
+      $pure_items = array_splice($pure_items, 0, 3);
+      foreach ($pure_items as $j => $item) {
+        $items[] = $pure_items[$j]['value'];
+      }
+      $this->assertEqual($rendered_field, implode(', ', $items), 'Take sure that the amount of items are limited.');
+    }
+
+    // Test that an empty field is rendered without error.
+    $rendered_field = $view->style_plugin->get_field(4, $this->fields[4]['field_name']);
+
+    $view->destroy();
+
+    // Test delta limit + offset
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['group_rows'] = TRUE;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_limit'] = 3;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_offset'] = 1;
+    $this->executeView($view);
+
+    for ($i = 0; $i < 3; $i++) {
+      $rendered_field = $view->style_plugin->get_field($i, $this->fields[3]['field_name']);
+      $items = array();
+      $pure_items = $this->nodes[$i]->{$this->fields[3]['field_name']}[LANGUAGE_NONE];
+      $pure_items = array_splice($pure_items, 1, 3);
+      foreach ($pure_items as $j => $item) {
+        $items[] = $pure_items[$j]['value'];
+      }
+      $this->assertEqual($rendered_field, implode(', ', $items), 'Take sure that the amount of items are limited.');
+    }
+    $view->destroy();
+
+    // Test delta limit + reverse.
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_offset'] = 0;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['group_rows'] = TRUE;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_limit'] = 3;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_reversed'] = TRUE;
+    $this->executeView($view);
+
+    for ($i = 0; $i < 3; $i++) {
+      $rendered_field = $view->style_plugin->get_field($i, $this->fields[3]['field_name']);
+      $items = array();
+      $pure_items = $this->nodes[$i]->{$this->fields[3]['field_name']}[LANGUAGE_NONE];
+      array_splice($pure_items, 0, -3);
+      $pure_items = array_reverse($pure_items);
+      foreach ($pure_items as $j => $item) {
+        $items[] = $pure_items[$j]['value'];
+      }
+      $this->assertEqual($rendered_field, implode(', ', $items), 'Take sure that the amount of items are limited.');
+    }
+    $view->destroy();
+
+    // Test delta first last.
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['group_rows'] = TRUE;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_limit'] = 0;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_first_last'] = TRUE;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_reversed'] = FALSE;
+    $this->executeView($view);
+
+    for ($i = 0; $i < 3; $i++) {
+      $rendered_field = $view->style_plugin->get_field($i, $this->fields[3]['field_name']);
+      $items = array();
+      $pure_items = $this->nodes[$i]->{$this->fields[3]['field_name']}[LANGUAGE_NONE];
+      $items[] = $pure_items[0]['value'];
+      $items[] = $pure_items[4]['value'];
+      $this->assertEqual($rendered_field, implode(', ', $items), 'Take sure that the amount of items are limited.');
+    }
+    $view->destroy();
+
+    // Test delta limit + custom seperator.
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_first_last'] = FALSE;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['delta_limit'] = 3;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['group_rows'] = TRUE;
+    $view->display['default']->display_options['fields'][$this->fields[3]['field_name']]['separator'] = ':';
+    $this->executeView($view);
+
+    for ($i = 0; $i < 3; $i++) {
+      $rendered_field = $view->style_plugin->get_field($i, $this->fields[3]['field_name']);
+      $items = array();
+      $pure_items = $this->nodes[$i]->{$this->fields[3]['field_name']}[LANGUAGE_NONE];
+      $pure_items = array_splice($pure_items, 0, 3);
+      foreach ($pure_items as $j => $item) {
+        $items[] = $pure_items[$j]['value'];
+      }
+      $this->assertEqual($rendered_field, implode(':', $items), 'Take sure that the amount of items are limited.');
+    }
+  }
+
+  protected function getFieldView() {
+    $view = new view;
+    $view->name = 'view_fieldapi';
+    $view->description = '';
+    $view->tag = 'default';
+    $view->base_table = 'node';
+    $view->human_name = 'view_fieldapi';
+    $view->core = 7;
+    $view->api_version = '3.0';
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Master */
+    $handler = $view->new_display('default', 'Master', 'default');
+    $handler->display->display_options['access']['type'] = 'perm';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['query']['type'] = 'views_query';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'fields';
+
+    $handler->display->display_options['fields']['nid']['id'] = 'nid';
+    $handler->display->display_options['fields']['nid']['table'] = 'node';
+    $handler->display->display_options['fields']['nid']['field'] = 'nid';
+    foreach ($this->fields as $key => $field) {
+      $handler->display->display_options['fields'][$field['field_name']]['id'] = $field['field_name'];
+      $handler->display->display_options['fields'][$field['field_name']]['table'] = 'field_data_' . $field['field_name'];
+      $handler->display->display_options['fields'][$field['field_name']]['field'] = $field['field_name'];
+    }
+    return $view;
+  }
+
+}
+
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_area_text.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_area_text.test
index d9724a4..9f30e0c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_area_text.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_area_text.test
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of ViewsHandlerAreaTextTest.
+ */
+
+/**
  * Tests the text area handler.
  *
  * @see views_handler_area_text
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_null.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_null.test
index da01136..e8650a3 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_null.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_null.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerArgumentNullTest.
+ */
+
+/**
+ * Tests the core views_handler_argument_null handler.
+ */
 class ViewsHandlerArgumentNullTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_string.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_string.test
new file mode 100644
index 0000000..d078abf
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_argument_string.test
@@ -0,0 +1,96 @@
+<?php
+/**
+ * @file
+ * Definition of ViewsHandlerArgumentNullTest.
+ */
+
+/**
+ * Tests the core views_handler_argument_string handler.
+ */
+class ViewsHandlerArgumentStringTest extends ViewsSqlTest {
+  public static function getInfo() {
+    return array(
+      'name' => 'Argument: String',
+      'description' => 'Test the core views_handler_argument_string handler.',
+      'group' => 'Views Handlers',
+    );
+  }
+
+  /**
+   * Tests the glossary feature.
+   */
+  function testGlossary() {
+    // Setup some nodes, one with a, two with b and three with c.
+    $counter = 1;
+    foreach (array('a', 'b', 'c') as $char) {
+      for ($i = 0; $i < $counter; $i++) {
+        $edit = array(
+          'title' => $char . $this->randomName(),
+        );
+        $this->drupalCreateNode($edit);
+      }
+    }
+
+    $view = $this->viewGlossary();
+    $view->init_display();
+    $this->executeView($view);
+
+    $count_field = 'nid';
+    foreach ($view->result as &$row) {
+      if (strpos($row->node_title, 'a') === 0) {
+        $this->assertEqual(1, $row->{$count_field});
+      }
+      if (strpos($row->node_title, 'b') === 0) {
+        $this->assertEqual(2, $row->{$count_field});
+      }
+      if (strpos($row->node_title, 'c') === 0) {
+        $this->assertEqual(3, $row->{$count_field});
+      }
+    }
+  }
+
+  /**
+   * Provide a test view for testGlossary.
+   *
+   * @see testGlossary
+   * @return view
+   */
+  function viewGlossary() {
+    $view = new view();
+    $view->name = 'test_glossary';
+    $view->description = '';
+    $view->tag = 'default';
+    $view->base_table = 'node';
+    $view->human_name = 'test_glossary';
+    $view->core = 7;
+    $view->api_version = '3.0';
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Master */
+    $handler = $view->new_display('default', 'Master', 'default');
+    $handler->display->display_options['access']['type'] = 'perm';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['query']['type'] = 'views_query';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'fields';
+    /* Field: Content: Title */
+    $handler->display->display_options['fields']['title']['id'] = 'title';
+    $handler->display->display_options['fields']['title']['table'] = 'node';
+    $handler->display->display_options['fields']['title']['field'] = 'title';
+    $handler->display->display_options['fields']['title']['label'] = '';
+    /* Contextual filter: Content: Title */
+    $handler->display->display_options['arguments']['title']['id'] = 'title';
+    $handler->display->display_options['arguments']['title']['table'] = 'node';
+    $handler->display->display_options['arguments']['title']['field'] = 'title';
+    $handler->display->display_options['arguments']['title']['default_argument_type'] = 'fixed';
+    $handler->display->display_options['arguments']['title']['summary']['number_of_records'] = '0';
+    $handler->display->display_options['arguments']['title']['summary']['format'] = 'default_summary';
+    $handler->display->display_options['arguments']['title']['summary_options']['items_per_page'] = '25';
+    $handler->display->display_options['arguments']['title']['glossary'] = TRUE;
+    $handler->display->display_options['arguments']['title']['limit'] = '1';
+
+    return $view;
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field.test
index 726857e..9e6dfca 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field.test
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains tests for views_handler_field.
+ * Definition of ViewsHandlerFieldTest.
  */
 
 /**
@@ -39,39 +39,216 @@ class ViewsHandlerFieldTest extends ViewsSqlTest {
   function _testHideIfEmpty() {
     $view = $this->getBasicView();
     $view->init_display();
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
 
     $column_map_reversed = array_flip($this->column_map);
     $view->row_index = 0;
+    $random_name = $this->randomName();
+    $random_value = $this->randomName();
+
+    // Test when results are not rewritten and empty values are not hidden.
+    $view->field['name']->options['hide_alter_empty'] = FALSE;
+    $view->field['name']->options['hide_empty'] = FALSE;
+    $view->field['name']->options['empty_zero'] = FALSE;
+
+    // Test a valid string.
+    $view->result[0]->{$column_map_reversed['name']} = $random_name;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_name, 'By default, a string should not be treated as empty.');
+
+    // Test an empty string.
+    $view->result[0]->{$column_map_reversed['name']} = "";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'By default, "" should not be treated as empty.');
+
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, '0', 'By default, 0 should not be treated as empty.');
+
+    // Test zero as a string.
+    $view->result[0]->{$column_map_reversed['name']} = "0";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "0", 'By default, "0" should not be treated as empty.');
 
+    // Test when results are not rewritten and non-zero empty values are hidden.
+    $view->field['name']->options['hide_alter_empty'] = TRUE;
     $view->field['name']->options['hide_empty'] = TRUE;
+    $view->field['name']->options['empty_zero'] = FALSE;
+
+    // Test a valid string.
+    $view->result[0]->{$column_map_reversed['name']} = $random_name;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_name, 'If hide_empty is checked, a string should not be treated as empty.');
+
+    // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
     $render = $view->field['name']->advanced_render($view->result[0]);
     $this->assertIdentical($render, "", 'If hide_empty is checked, "" should be treated as empty.');
 
-    $view->field['name']->options['empty_zero'] = FALSE;
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, '0', 'If hide_empty is checked, but not empty_zero, 0 should not be treated as empty.');
+
+    // Test zero as a string.
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $view->field['name']->advanced_render($view->result[0]);
-    $this->assertIdentical($render, "0", 'If hide_empty is checked, but not empty_zero, "0" should be treated as not empty.');
+    $this->assertIdentical($render, "0", 'If hide_empty is checked, but not empty_zero, "0" should not be treated as empty.');
 
+    // Test when results are not rewritten and all empty values are hidden.
+    $view->field['name']->options['hide_alter_empty'] = TRUE;
+    $view->field['name']->options['hide_empty'] = TRUE;
     $view->field['name']->options['empty_zero'] = TRUE;
+
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'If hide_empty and empty_zero are checked, 0 should be treated as empty.');
+
+    // Test zero as a string.
+    $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $view->field['name']->advanced_render($view->result[0]);
     $this->assertIdentical($render, "", 'If hide_empty and empty_zero are checked, "0" should be treated as empty.');
 
+    // Test when results are rewritten to a valid string and non-zero empty
+    // results are hidden.
     $view->field['name']->options['hide_alter_empty'] = FALSE;
+    $view->field['name']->options['hide_empty'] = TRUE;
+    $view->field['name']->options['empty_zero'] = FALSE;
     $view->field['name']->options['alter']['alter_text'] = TRUE;
-    $view->result[0]->{$column_map_reversed['name']} = "";
-    $random_name = $this->randomName();
     $view->field['name']->options['alter']['text'] = $random_name;
+
+    // Test a valid string.
+    $view->result[0]->{$column_map_reversed['name']} = $random_value;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, it should not be treated as empty.');
+
+    // Test an empty string.
+    $view->result[0]->{$column_map_reversed['name']} = "";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "" should not be treated as empty.');
+
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
     $render = $view->field['name']->advanced_render($view->result[0]);
-    $this->assertIdentical($render, $random_name, 'If hide_empty but not hide_alter_empty is checked, some rewrite should appear even if the value is empty.');
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, 0 should not be treated as empty.');
 
+    // Test zero as a string.
+    $view->result[0]->{$column_map_reversed['name']} = "0";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "0" should not be treated as empty.');
+
+    // Test when results are rewritten to an empty string and non-zero empty results are hidden.
     $view->field['name']->options['hide_alter_empty'] = TRUE;
-    $random_name = $this->randomName();
-    $view->field['name']->options['alter']['text'] = $random_name;
+    $view->field['name']->options['hide_empty'] = TRUE;
+    $view->field['name']->options['empty_zero'] = FALSE;
+    $view->field['name']->options['alter']['alter_text'] = TRUE;
+    $view->field['name']->options['alter']['text'] = "";
+
+    // Test a valid string.
+    $view->result[0]->{$column_map_reversed['name']} = $random_name;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is empty, it should not be treated as empty.');
+
+    // Test an empty string.
+    $view->result[0]->{$column_map_reversed['name']} = "";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'If the rewritten string is empty, "" should be treated as empty.');
+
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, '0', 'If the rewritten string is empty, 0 should not be treated as empty.');
+
+    // Test zero as a string.
+    $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $view->field['name']->advanced_render($view->result[0]);
-    $this->assertIdentical($render, "", 'If hide_empty and hide_alter_empty are checked, rewrite should be empty all the time.');
+    $this->assertIdentical($render, "0", 'If the rewritten string is empty, "0" should not be treated as empty.');
+
+    // Test when results are rewritten to zero as a string and non-zero empty
+    // results are hidden.
+    $view->field['name']->options['hide_alter_empty'] = FALSE;
+    $view->field['name']->options['hide_empty'] = TRUE;
+    $view->field['name']->options['empty_zero'] = FALSE;
+    $view->field['name']->options['alter']['alter_text'] = TRUE;
+    $view->field['name']->options['alter']['text'] = "0";
+
+    // Test a valid string.
+    $view->result[0]->{$column_map_reversed['name']} = $random_name;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, the string rewritten as 0 should not be treated as empty.');
+
+    // Test an empty string.
+    $view->result[0]->{$column_map_reversed['name']} = "";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "" rewritten as 0 should not be treated as empty.');
+
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, 0 should not be treated as empty.');
+
+    // Test zero as a string.
+    $view->result[0]->{$column_map_reversed['name']} = "0";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "0" should not be treated as empty.');
+
+    // Test when results are rewritten to a valid string and non-zero empty
+    // results are hidden.
+    $view->field['name']->options['hide_alter_empty'] = TRUE;
+    $view->field['name']->options['hide_empty'] = TRUE;
+    $view->field['name']->options['empty_zero'] = FALSE;
+    $view->field['name']->options['alter']['alter_text'] = TRUE;
+    $view->field['name']->options['alter']['text'] = $random_value;
+
+    // Test a valid string.
+    $view->result[0]->{$column_map_reversed['name']} = $random_name;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, it should not be treated as empty.');
+
+    // Test an empty string.
+    $view->result[0]->{$column_map_reversed['name']} = "";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'If either the original or rewritten string is invalid, "" should be treated as empty.');
+
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, 0 should not be treated as empty.');
+
+    // Test zero as a string.
+    $view->result[0]->{$column_map_reversed['name']} = "0";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, "0" should not be treated as empty.');
+
+    // Test when results are rewritten to zero as a string and all empty
+    // original values and results are hidden.
+    $view->field['name']->options['hide_alter_empty'] = TRUE;
+    $view->field['name']->options['hide_empty'] = TRUE;
+    $view->field['name']->options['empty_zero'] = TRUE;
+    $view->field['name']->options['alter']['alter_text'] = TRUE;
+    $view->field['name']->options['alter']['text'] = "0";
+
+    // Test a valid string.
+    $view->result[0]->{$column_map_reversed['name']} = $random_name;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'If the rewritten string is zero, it should be treated as empty.');
+
+    // Test an empty string.
+    $view->result[0]->{$column_map_reversed['name']} = "";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'If the rewritten string is zero, "" should be treated as empty.');
+
+    // Test zero as an integer.
+    $view->result[0]->{$column_map_reversed['name']} = 0;
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'If the rewritten string is zero, 0 should not be treated as empty.');
+
+    // Test zero as a string.
+    $view->result[0]->{$column_map_reversed['name']} = "0";
+    $render = $view->field['name']->advanced_render($view->result[0]);
+    $this->assertIdentical($render, "", 'If the rewritten string is zero, "0" should not be treated as empty.');
   }
 
   /**
@@ -80,8 +257,7 @@ class ViewsHandlerFieldTest extends ViewsSqlTest {
   function _testEmptyText() {
     $view = $this->getBasicView();
     $view->init_display();
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
 
     $column_map_reversed = array_flip($this->column_map);
     $view->row_index = 0;
@@ -112,4 +288,27 @@ class ViewsHandlerFieldTest extends ViewsSqlTest {
     $this->assertIdentical($render, $empty_text, 'If a field is empty, some rewrite text exists, and hide_alter_empty is checked, use the empty text.');
   }
 
-}
\ No newline at end of file
+  /**
+   * Tests views_handler_field::is_value_empty().
+   */
+  function testIsValueEmpty() {
+    $view = $this->getBasicView();
+    $view->init_display();
+    $view->init_handlers();
+    $field = $view->field['name'];
+
+    $this->assertFalse($field->is_value_empty("not empty", TRUE), 'A normal string is not empty.');
+    $this->assertTrue($field->is_value_empty("not empty", TRUE, FALSE), 'A normal string which skips empty() can be seen as empty.');
+
+    $this->assertTrue($field->is_value_empty("", TRUE), '"" is considered as empty.');
+
+    $this->assertTrue($field->is_value_empty('0', TRUE), '"0" is considered as empty if empty_zero is TRUE.');
+    $this->assertTrue($field->is_value_empty(0, TRUE), '0 is considered as empty if empty_zero is TRUE.');
+    $this->assertFalse($field->is_value_empty('0', FALSE), '"0" is considered not as empty if empty_zero is FALSE.');
+    $this->assertFalse($field->is_value_empty(0, FALSE), '0 is considered not as empty if empty_zero is FALSE.');
+
+    $this->assertTrue($field->is_value_empty(NULL, TRUE, TRUE), 'Null should be always seen as empty, regardless of no_skip_empty.');
+    $this->assertTrue($field->is_value_empty(NULL, TRUE, FALSE), 'Null should be always seen as empty, regardless of no_skip_empty.');
+  }
+
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test
index 54b4287..92ec7a5 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFieldBooleanTest.
+ */
+
+/**
+ * Tests the core views_handler_field_boolean handler.
+ */
 class ViewsHandlerFieldBooleanTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_counter.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_counter.test
index c628a79..2ddcb6f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_counter.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_counter.test
@@ -1,10 +1,18 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFilterCounterTest.
+ */
+
+/**
+ * Tests the views_handler_field_counter handler.
+ */
 class ViewsHandlerFilterCounterTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
       'name' => 'Field: Counter',
-      'description' => 'Tests the views_handler_field_counter handler',
+      'description' => 'Tests the views_handler_field_counter handler.',
       'group' => 'Views Handlers',
     );
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_custom.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_custom.test
index 787cdbd..b45fd17 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_custom.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_custom.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFieldCustomTest.
+ */
+
+/**
+ * Tests the core views_handler_field_custom handler.
+ */
 class ViewsHandlerFieldCustomTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_date.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_date.test
index 0b9bde5..028b687 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_date.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_date.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFieldDateTest.
+ */
+
+/**
+ * Tests the core views_handler_field_date handler.
+ */
 class ViewsHandlerFieldDateTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -30,25 +38,50 @@ class ViewsHandlerFieldDateTest extends ViewsSqlTest {
     ));
     $time = gmmktime(0, 0, 0, 1, 1, 2000);
 
-    $maps = array(
-      'small' => format_date($time, 'small'),
-      'medium' => format_date($time, 'medium'),
-      'large' => format_date($time, 'large'),
-      'custom' => format_date($time, 'custom', 'c'),
+    $this->executeView($view);
+
+    $timezones = array(
+      NULL,
+      'UTC',
+      'America/New_York',
+    );
+    foreach ($timezones as $timezone) {
+      $dates = array(
+        'small' => format_date($time, 'small', '', $timezone),
+        'medium' => format_date($time, 'medium', '', $timezone),
+        'large' => format_date($time, 'large', '', $timezone),
+        'custom' => format_date($time, 'custom', 'c', $timezone),
+      );
+      $this->assertRenderedDatesEqual($view, $dates, $timezone);
+    }
+
+    $intervals = array(
       'raw time ago' => format_interval(REQUEST_TIME - $time, 2),
       'time ago' => t('%time ago', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
       // TODO write tests for them
 //       'raw time span' => format_interval(REQUEST_TIME - $time, 2),
 //       'time span' => t('%time hence', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
     );
+    $this->assertRenderedDatesEqual($view, $intervals);
+  }
 
-    $this->executeView($view);
-
-    foreach ($maps as $date_format => $expected_result) {
+  protected function assertRenderedDatesEqual($view, $map, $timezone = NULL) {
+    foreach ($map as $date_format => $expected_result) {
       $view->field['created']->options['date_format'] = $date_format;
-      $this->assertEqual($expected_result, $view->field['created']->advanced_render($view->result[0]));
-      debug($view->field['created']->advanced_render($view->result[0]));
+      $t_args = array(
+        '%value' => $expected_result,
+        '%format' => $date_format,
+      );
+      if (isset($timezone)) {
+        $t_args['%timezone'] = $timezone;
+        $message = t('Value %value in %format format for timezone %timezone matches.', $t_args);
+        $view->field['created']->options['timezone'] = $timezone;
+      }
+      else {
+        $message = t('Value %value in %format format matches.', $t_args);
+      }
+      $actual_result = $view->field['created']->advanced_render($view->result[0]);
+      $this->assertEqual($expected_result, $actual_result, $message);
     }
-    debug($view->result);
   }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_file_size.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_file_size.test
index ae2569e..8652754 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_file_size.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_file_size.test
@@ -1,6 +1,13 @@
 <?php
 
 /**
+ * @file
+ * Definition of ViewsHandlerTestFileSize.
+ */
+
+/**
+ * Tests the core views_handler_field_file_size handler.
+ *
  * @see CommonXssUnitTest
  */
 class ViewsHandlerTestFileSize extends ViewsSqlTest {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_math.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_math.test
index 2d222e6..ac33ac4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_math.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_math.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFieldMath.
+ */
+
+/**
+ * Tests the core views_handler_field_math handler.
+ */
 class ViewsHandlerFieldMath extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_url.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_url.test
index 35bffa7..527e94f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_url.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_url.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFieldUrlTest.
+ */
+
+/**
+ * Tests the core views_handler_field_url handler.
+ */
 class ViewsHandlerFieldUrlTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_xss.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_xss.test
index c76d188..65a1ce2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_xss.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_field_xss.test
@@ -1,6 +1,13 @@
 <?php
 
 /**
+ * @file
+ * Definition of ViewsHandlerTestXss.
+ */
+
+/**
+ * Tests the core views_handler_field_css handler.
+ *
  * @see CommonXssUnitTest
  */
 class ViewsHandlerTestXss extends ViewsSqlTest {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_combine.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_combine.test
new file mode 100644
index 0000000..99bf1eb
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_combine.test
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * @file
+ * Definition of ViewsHandlerFilterCombineTest.
+ */
+
+/**
+ * Tests the combine filter handler.
+ */
+class ViewsHandlerFilterCombineTest extends ViewsSqlTest {
+  var $column_map = array();
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Filter: Combine',
+      'description' => 'Tests the combine filter handler.',
+      'group' => 'Views Handlers',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+    $this->column_map = array(
+      'views_test_name' => 'name',
+      'views_test_job' => 'job',
+    );
+  }
+
+  protected function getBasicView() {
+    $view = parent::getBasicView();
+    $fields = $view->display['default']->handler->options['fields'];
+    $view->display['default']->display_options['fields']['job'] = array(
+      'id' => 'job',
+      'table' => 'views_test',
+      'field' => 'job',
+      'relationship' => 'none',
+    );
+    return $view;
+  }
+
+  public function testFilterCombineContains() {
+    $view = $this->getBasicView();
+
+    // Change the filtering.
+    $view->display['default']->handler->override_option('filters', array(
+      'age' => array(
+        'id' => 'combine',
+        'table' => 'views',
+        'field' => 'combine',
+        'relationship' => 'none',
+        'operator' => 'contains',
+        'fields' => array(
+          'name',
+          'job',
+        ),
+        'value' => 'ing',
+      ),
+    ));
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'John',
+        'job' => 'Singer',
+      ),
+      array(
+        'name' => 'George',
+        'job' => 'Singer',
+      ),
+      array(
+        'name' => 'Ringo',
+        'job' => 'Drummer',
+      ),
+      array(
+        'name' => 'Ginger',
+        'job' => NULL,
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+  /**
+   * Additional data to test the NULL issue.
+   */
+  protected function dataSet() {
+    $data_set = parent::dataSet();
+    $data_set[] = array(
+      'name' => 'Ginger',
+      'age' => 25,
+      'job' => NULL,
+      'created' => gmmktime(0, 0, 0, 1, 2, 2000),
+    );
+    return $data_set;
+  }
+
+  /**
+   * Allow {views_test}.job to be NULL.
+   */
+  protected function schemaDefinition() {
+    $schema = parent::schemaDefinition();
+    unset($schema['views_test']['fields']['job']['not null']);
+    return $schema;
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_date.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_date.test
index 135ce4f..34ccba6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_date.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_date.test
@@ -1,7 +1,12 @@
 <?php
 
 /**
- * Tests the handler filter_date.
+ * @file
+ * Definition of ViewsHandlerFilterDateTest.
+ */
+
+/**
+ * Tests the core views_handler_filter_date handler.
  */
 class ViewsHandlerFilterDateTest extends ViewsSqlTest {
   public static function getInfo() {
@@ -28,7 +33,7 @@ class ViewsHandlerFilterDateTest extends ViewsSqlTest {
   }
 
   /**
-  /* Test the general offset functionality.
+   * Test the general offset functionality.
    */
   function testOffset() {
     $view = $this->views_test_offset();
@@ -62,7 +67,7 @@ class ViewsHandlerFilterDateTest extends ViewsSqlTest {
 
 
   /**
-   * Test the filter operator between/not between.
+   * Tests the filter operator between/not between.
    */
   function testBetween() {
     // Test between with min and max.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test
index 96e82aa..5bb48c8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFilterEqualityTest.
+ */
+
+/**
+ * Tests the core views_handler_filter_equality handler.
+ */
 class ViewsHandlerFilterEqualityTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -47,6 +55,24 @@ class ViewsHandlerFilterEqualityTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  public function testEqualGroupedExposed() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: =, Value: Ringo
+    $filters['name']['group_info']['default_group'] = 1;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'Ringo',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testNotEqual() {
     $view = $this->getBasicView();
 
@@ -79,4 +105,69 @@ class ViewsHandlerFilterEqualityTest extends ViewsSqlTest {
     );
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
+
+  public function testEqualGroupedNotExposed() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: !=, Value: Ringo
+    $filters['name']['group_info']['default_group'] = 2;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'John',
+      ),
+      array(
+        'name' => 'George',
+      ),
+      array(
+        'name' => 'Paul',
+      ),
+      array(
+        'name' => 'Meredith',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+
+  protected function getGroupedExposedFilters() {
+    $filters = array(
+      'name' => array(
+        'id' => 'name',
+        'table' => 'views_test',
+        'field' => 'name',
+        'relationship' => 'none',
+        'exposed' => TRUE,
+        'expose' => array(
+          'operator' => 'name_op',
+          'label' => 'name',
+          'identifier' => 'name',
+        ),
+        'is_grouped' => TRUE,
+        'group_info' => array(
+          'label' => 'name',
+          'identifier' => 'name',
+          'default_group' => 'All',
+          'group_items' => array(
+            1 => array(
+              'title' => 'Name is equal to Ringo',
+              'operator' => '=',
+              'value' => array('value' => 'Ringo'),
+            ),
+            2 => array(
+              'title' => 'Name is not equal to Ringo',
+              'operator' => '!=',
+              'value' => array('value' => 'Ringo'),
+            ),
+          ),
+        ),
+      ),
+    );
+    return $filters;
+  }
+
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_in_operator.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_in_operator.test
index 04ac5de..3a20f8c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_in_operator.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_in_operator.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFilterInOperator.
+ */
+
+/**
+ * Tests the core views_handler_filter_in_operator handler.
+ */
 class ViewsHandlerFilterInOperator extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -86,4 +94,103 @@ class ViewsHandlerFilterInOperator extends ViewsSqlTest {
       'views_test_age' => 'age',
     ));
   }
+
+  public function testFilterInOperatorGroupedExposedSimple() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Age, Operator: in, Value: 26, 30
+    $filters['age']['group_info']['default_group'] = 1;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $expected_result = array(
+      array(
+        'name' => 'Paul',
+        'age' => 26,
+      ),
+      array(
+        'name' => 'Meredith',
+        'age' => 30,
+      ),
+    );
+
+    $this->assertEqual(2, count($view->result));
+    $this->assertIdenticalResultset($view, $expected_result, array(
+      'views_test_name' => 'name',
+      'views_test_age' => 'age',
+    ));
+  }
+
+  public function testFilterNotInOperatorGroupedExposedSimple() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Age, Operator: in, Value: 26, 30
+    $filters['age']['group_info']['default_group'] = 2;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $expected_result = array(
+      array(
+        'name' => 'John',
+        'age' => 25,
+      ),
+      array(
+        'name' => 'George',
+        'age' => 27,
+      ),
+      array(
+        'name' => 'Ringo',
+        'age' => 28,
+      ),
+    );
+
+    $this->assertEqual(3, count($view->result));
+    $this->assertIdenticalResultset($view, $expected_result, array(
+      'views_test_name' => 'name',
+      'views_test_age' => 'age',
+    ));
+  }
+
+  protected function getGroupedExposedFilters() {
+    $filters = array(
+      'age' => array(
+        'id' => 'age',
+        'table' => 'views_test',
+        'field' => 'age',
+        'relationship' => 'none',
+        'exposed' => TRUE,
+        'expose' => array(
+          'operator' => 'age_op',
+          'label' => 'age',
+          'identifier' => 'age',
+        ),
+        'is_grouped' => TRUE,
+        'group_info' => array(
+          'label' => 'age',
+          'identifier' => 'age',
+          'default_group' => 'All',
+          'group_items' => array(
+            1 => array(
+              'title' => 'Age is one of 26, 30',
+              'operator' => 'in',
+              'value' => array(26, 30),
+            ),
+            2 => array(
+              'title' => 'Age is not one of 26, 30',
+              'operator' => 'not in',
+              'value' => array(26, 30),
+            ),
+          ),
+        ),
+      ),
+    );
+    return $filters;
+  }
+
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test
index 0112118..2ab1aea 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test
@@ -1,11 +1,19 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFilterNumericTest.
+ */
+
+/**
+ * Tests the numeric filter handler.
+ */
 class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
   var $column_map = array();
 
   public static function getInfo() {
     return array(
-      'name' => 'Handlers: filter_numeric',
+      'name' => 'Filter: Numeric',
       'description' => 'Tests the numeric filter handler',
       'group' => 'Views Handlers',
     );
@@ -52,6 +60,25 @@ class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  public function testFilterNumericExposedGroupedSimple() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Age, Operator: =, Value: 28
+    $filters['age']['group_info']['default_group'] = 1;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'Ringo',
+        'age' => 28,
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   public function testFilterNumericBetween() {
     $view = $this->getBasicView();
 
@@ -124,6 +151,63 @@ class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  public function testFilterNumericExposedGroupedBetween() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Age, Operator: between, Value: 26 and 29
+    $filters['age']['group_info']['default_group'] = 2;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'George',
+        'age' => 27,
+      ),
+      array(
+        'name' => 'Ringo',
+        'age' => 28,
+      ),
+      array(
+        'name' => 'Paul',
+        'age' => 26,
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+  public function testFilterNumericExposedGroupedNotBetween() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Age, Operator: between, Value: 26 and 29
+    $filters['age']['group_info']['default_group'] = 3;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'John',
+        'age' => 25,
+      ),
+      array(
+        'name' => 'Paul',
+        'age' => 26,
+      ),
+      array(
+        'name' => 'Meredith',
+        'age' => 30,
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+
   public function testFilterNumericEmpty() {
     $view = $this->getBasicView();
 
@@ -183,6 +267,60 @@ class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+
+  public function testFilterNumericExposedGroupedEmpty() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Age, Operator: empty, Value:
+    $filters['age']['group_info']['default_group'] = 4;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+
+    $this->executeView($view);
+    $resultset = array(
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+  public function testFilterNumericExposedGroupedNotEmpty() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Age, Operator: empty, Value:
+    $filters['age']['group_info']['default_group'] = 5;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+
+    $this->executeView($view);
+    $resultset = array(
+    array(
+        'name' => 'John',
+        'age' => 25,
+      ),
+      array(
+        'name' => 'George',
+        'age' => 27,
+      ),
+      array(
+        'name' => 'Ringo',
+        'age' => 28,
+      ),
+      array(
+        'name' => 'Paul',
+        'age' => 26,
+      ),
+      array(
+        'name' => 'Meredith',
+        'age' => 30,
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+
   public function testAllowEmpty() {
     $view = $this->getBasicView();
 
@@ -212,4 +350,60 @@ class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
     $this->assertTrue(isset($age_operators['empty']));
     $this->assertTrue(isset($age_operators['not empty']));
   }
+
+  protected function getGroupedExposedFilters() {
+    $filters = array(
+      'age' => array(
+        'id' => 'age',
+        'table' => 'views_test',
+        'field' => 'age',
+        'relationship' => 'none',
+        'exposed' => TRUE,
+        'expose' => array(
+          'operator' => 'age_op',
+          'label' => 'age',
+          'identifier' => 'age',
+        ),
+        'is_grouped' => TRUE,
+        'group_info' => array(
+          'label' => 'age',
+          'identifier' => 'age',
+          'default_group' => 'All',
+          'group_items' => array(
+            1 => array(
+              'title' => 'Age is 28',
+              'operator' => '=',
+              'value' => array('value' => 28),
+            ),
+            2 => array(
+              'title' => 'Age is between 26 and 29',
+              'operator' => 'between',
+              'value' => array(
+                'min' => 26,
+                'max' => 29,
+              ),
+            ),
+            3 => array(
+              'title' => 'Age is not between 26 and 29',
+              'operator' => 'not between',
+              'value' => array(
+                'min' => 26,
+                'max' => 29,
+              ),
+            ),
+            4 => array(
+              'title' => 'Age is empty',
+              'operator' => 'empty',
+            ),
+            5 => array(
+              'title' => 'Age is not empty',
+              'operator' => 'not empty',
+            ),
+          ),
+        ),
+      ),
+    );
+    return $filters;
+  }
+
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_string.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_string.test
index cd78311..ee74a28 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_string.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_filter_string.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsHandlerFilterStringTest.
+ */
+
+/**
+ * Tests the core views_handler_filter_string handler.
+ */
 class ViewsHandlerFilterStringTest extends ViewsSqlTest {
   var $column_map = array();
 
@@ -86,9 +94,29 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
       ),
     );
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
-    $view->destroy();
+  }
+
+  function testFilterStringGroupedExposedEqual() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: =, Value: Ringo
+    $filters['name']['group_info']['default_group'] = 1;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'Ringo',
+      ),
+    );
 
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
 
+  function testFilterStringNotEqual() {
     $view = $this->getBasicView();
 
     // Change the filtering
@@ -121,6 +149,36 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  function testFilterStringGroupedExposedNotEqual() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: !=, Value: Ringo
+    $filters['name']['group_info']['default_group'] = '2';
+
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'John',
+      ),
+      array(
+        'name' => 'George',
+      ),
+      array(
+        'name' => 'Paul',
+      ),
+      array(
+        'name' => 'Meredith',
+      ),
+    );
+
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testFilterStringContains() {
     $view = $this->getBasicView();
 
@@ -145,6 +203,28 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+
+  function testFilterStringGroupedExposedContains() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: contains, Value: ing
+    $filters['name']['group_info']['default_group'] = '3';
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'Ringo',
+      ),
+    );
+
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+
   function testFilterStringWord() {
     $view = $this->getBasicView();
 
@@ -195,6 +275,47 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+
+  function testFilterStringGroupedExposedWord() {
+      $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: contains, Value: ing
+    $filters['name']['group_info']['default_group'] = '3';
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'Ringo',
+      ),
+    );
+
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+    $view->destroy();
+
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Description, Operator: contains, Value: actor
+    $filters['description']['group_info']['default_group'] = '1';
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'George',
+      ),
+      array(
+        'name' => 'Ringo',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testFilterStringStarts() {
     $view = $this->getBasicView();
 
@@ -219,6 +340,25 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  function testFilterStringGroupedExposedStarts() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: starts, Value: George
+    $filters['description']['group_info']['default_group'] = 2;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'George',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testFilterStringNotStarts() {
     $view = $this->getBasicView();
 
@@ -250,6 +390,32 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  function testFilterStringGroupedExposedNotStarts() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: not_starts, Value: George
+    $filters['description']['group_info']['default_group'] = 3;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'John',
+      ),
+      array(
+        'name' => 'Ringo',
+      ),
+      array(
+        'name' => 'Paul',
+      ),
+      // There is no Meredith returned because his description is empty
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testFilterStringEnds() {
     $view = $this->getBasicView();
 
@@ -277,6 +443,28 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  function testFilterStringGroupedExposedEnds() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Descriptino, Operator: ends, Value: Beatles
+    $filters['description']['group_info']['default_group'] = 4;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'George',
+      ),
+      array(
+        'name' => 'Ringo',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testFilterStringNotEnds() {
     $view = $this->getBasicView();
 
@@ -305,6 +493,29 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  function testFilterStringGroupedExposedNotEnds() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Description, Operator: not_ends, Value: Beatles
+    $filters['description']['group_info']['default_group'] = 5;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'John',
+      ),
+      array(
+        'name' => 'Paul',
+      ),
+      // There is no Meredith returned because his description is empty
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testFilterStringNot() {
     $view = $this->getBasicView();
 
@@ -333,6 +544,31 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+
+  function testFilterStringGroupedExposedNot() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Description, Operator: not (does not contains), Value: Beatles
+    $filters['description']['group_info']['default_group'] = 6;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+
+    $resultset = array(
+      array(
+        'name' => 'John',
+      ),
+      array(
+        'name' => 'Paul',
+      ),
+      // There is no Meredith returned because his description is empty
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+
+  }
+
   function testFilterStringShorter() {
     $view = $this->getBasicView();
 
@@ -360,6 +596,27 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  function testFilterStringGroupedExposedShorter() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: shorterthan, Value: 5
+    $filters['name']['group_info']['default_group'] = 4;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'John',
+      ),
+      array(
+        'name' => 'Paul',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
   function testFilterStringLonger() {
     $view = $this->getBasicView();
 
@@ -384,6 +641,25 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
 
+  function testFilterStringGroupedExposedLonger() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Name, Operator: longerthan, Value: 4
+    $filters['name']['group_info']['default_group'] = 5;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'Meredith',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+
   function testFilterStringEmpty() {
     $view = $this->getBasicView();
 
@@ -406,4 +682,129 @@ class ViewsHandlerFilterStringTest extends ViewsSqlTest {
     );
     $this->assertIdenticalResultset($view, $resultset, $this->column_map);
   }
+
+  function testFilterStringGroupedExposedEmpty() {
+    $filters = $this->getGroupedExposedFilters();
+    $view = $this->getBasicPageView();
+
+    // Filter: Description, Operator: empty, Value:
+    $filters['description']['group_info']['default_group'] = 7;
+    $view->set_display('page_1');
+    $view->display['page_1']->handler->override_option('filters', $filters);
+
+    $this->executeView($view);
+    $resultset = array(
+      array(
+        'name' => 'Meredith',
+      ),
+    );
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+  protected function getGroupedExposedFilters() {
+    $filters = array(
+      'name' => array(
+        'id' => 'name',
+        'table' => 'views_test',
+        'field' => 'name',
+        'relationship' => 'none',
+        'exposed' => TRUE,
+        'expose' => array(
+          'operator' => 'name_op',
+          'label' => 'name',
+          'identifier' => 'name',
+        ),
+        'is_grouped' => TRUE,
+        'group_info' => array(
+          'label' => 'name',
+          'identifier' => 'name',
+          'default_group' => 'All',
+          'group_items' => array(
+            1 => array(
+              'title' => 'Is Ringo',
+              'operator' => '=',
+              'value' => 'Ringo',
+            ),
+            2 => array(
+              'title' => 'Is not Ringo',
+              'operator' => '!=',
+              'value' => array('value' => 'Ringo'),
+            ),
+            3 => array(
+              'title' => 'Contains ing',
+              'operator' => 'contains',
+              'value' => 'ing',
+            ),
+            4 => array(
+              'title' => 'Shorter than 5 letters',
+              'operator' => 'shorterthan',
+              'value' => 5,
+            ),
+            5 => array(
+              'title' => 'Longer than 7 letters',
+              'operator' => 'longerthan',
+              'value' => 7,
+            ),
+          ),
+        ),
+      ),
+      'description' => array(
+        'id' => 'description',
+        'table' => 'views_test',
+        'field' => 'description',
+        'relationship' => 'none',
+        'exposed' => TRUE,
+        'expose' => array(
+          'operator' => 'description_op',
+          'label' => 'description',
+          'identifier' => 'description',
+        ),
+        'is_grouped' => TRUE,
+        'group_info' => array(
+          'label' => 'description',
+          'identifier' => 'description',
+          'default_group' => 'All',
+          'group_items' => array(
+            1 => array(
+              'title' => 'Contains the word: Actor',
+              'operator' => 'word',
+              'value' => 'actor',
+            ),
+            2 => array(
+              'title' => 'Starts with George',
+              'operator' => 'starts',
+              'value' => 'George',
+            ),
+            3 => array(
+              'title' => 'Not Starts with: George',
+              'operator' => 'not_starts',
+              'value' => 'George',
+            ),
+            4 => array(
+              'title' => 'Ends with: Beatles',
+              'operator' => 'ends',
+              'value' => 'Beatles.',
+            ),
+            5 => array(
+              'title' => 'Not Ends with: Beatles',
+              'operator' => 'not_ends',
+              'value' => 'Beatles.',
+            ),
+            6 => array(
+              'title' => 'Does not contain: Beatles',
+              'operator' => 'not',
+              'value' => 'Beatles.',
+            ),
+            7 => array(
+              'title' => 'Empty description',
+              'operator' => 'empty',
+              'value' => '',
+            ),
+          ),
+        ),
+      ),
+    );
+    return $filters;
+  }
+
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort.test
index aa63a9a..70f2aac 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort.test
@@ -1,7 +1,12 @@
 <?php
 
 /**
- * Test for core views_handler_sort handler.
+ * @file
+ * Definition of ViewsHandlerSortTest.
+ */
+
+/**
+ * Tests for core views_handler_sort handler.
  */
 class ViewsHandlerSortTest extends ViewsSqlTest {
   public static function getInfo() {
@@ -13,7 +18,7 @@ class ViewsHandlerSortTest extends ViewsSqlTest {
   }
 
   /**
-   * Test numeric ordering of the result set.
+   * Tests numeric ordering of the result set.
    */
   public function testNumericOrdering() {
     $view = $this->getBasicView();
@@ -64,7 +69,7 @@ class ViewsHandlerSortTest extends ViewsSqlTest {
   }
 
   /**
-   * Test string ordering of the result set.
+   * Tests string ordering of the result set.
    */
   public function testStringOrdering() {
     $view = $this->getBasicView();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_date.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_date.test
index 528c85a..65a94e8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_date.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_date.test
@@ -1,7 +1,12 @@
 <?php
 
 /**
- * Test for core views_handler_sort_date handler.
+ * @file
+ * Definition of ViewsHandlerSortDateTest.
+ */
+
+/**
+ * Tests for core views_handler_sort_date handler.
  */
 class ViewsHandlerSortDateTest extends ViewsSqlTest {
   public static function getInfo() {
@@ -135,7 +140,7 @@ class ViewsHandlerSortDateTest extends ViewsSqlTest {
   }
 
   /**
-   * Test numeric ordering of the result set.
+   * Tests numeric ordering of the result set.
    */
   public function testDateOrdering() {
     foreach (array('second', 'minute', 'hour', 'day', 'month', 'year') as $granularity) {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_random.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_random.test
index 18677a0..19db8a9 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_random.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/handlers/views_handler_sort_random.test
@@ -1,7 +1,12 @@
 <?php
 
 /**
- * Test for core views_handler_sort_random handler.
+ * @file
+ * Definition of ViewsHandlerSortRandomTest.
+ */
+
+/**
+ * Tests for core views_handler_sort_random handler.
  */
 class ViewsHandlerSortRandomTest extends ViewsSqlTest {
   public static function getInfo() {
@@ -47,9 +52,9 @@ class ViewsHandlerSortRandomTest extends ViewsSqlTest {
   }
 
   /**
-   * Test random ordering of the result set.
+   * Tests random ordering of the result set.
    *
-   * @see DatabaseSelectTestCase::testRandomOrder().
+   * @see DatabaseSelectTestCase::testRandomOrder()
    */
   public function testRandomOrdering() {
     // Execute a basic view first.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/plugins/views_plugin_display.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/plugins/views_plugin_display.test
new file mode 100644
index 0000000..df33a34
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/plugins/views_plugin_display.test
@@ -0,0 +1,194 @@
+<?php
+
+/**
+ * @file
+ * Definition of ViewsPluginDisplayTestCase.
+ */
+
+/**
+ *
+ */
+class ViewsPluginDisplayTestCase extends ViewsSqlTest {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Display plugin',
+      'description' => 'Tests the basic display plugin.',
+      'group' => 'Views Plugins',
+    );
+  }
+
+  /**
+   * Tests the overriding of filter_groups.
+   */
+  function testFilterGroupsOverriding() {
+    $view = $this->viewFilterGroupsUpdating();
+    $view->init_display();
+
+    // mark is as overridden, yes FALSE, means overridden.
+    $view->display['page']->handler->set_override('filter_groups', FALSE);
+    $this->assertFalse($view->display['page']->handler->is_defaulted('filter_groups'), "Take sure that 'filter_groups' is marked as overridden.");
+    $this->assertFalse($view->display['page']->handler->is_defaulted('filters'), "Take sure that 'filters'' is marked as overridden.");
+  }
+
+  /**
+   * Returns a test view for testFilterGroupsOverriding.
+   *
+   * @see testFilterGroupsOverriding
+   * @return view
+   */
+  function viewFilterGroupsOverriding() {
+    $view = new view();
+    $view->name = 'test_filter_group_override';
+    $view->description = '';
+    $view->tag = 'default';
+    $view->base_table = 'node';
+    $view->human_name = 'test_filter_group_override';
+    $view->core = 7;
+    $view->api_version = '3.0';
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Master */
+    $handler = $view->new_display('default', 'Master', 'default');
+    $handler->display->display_options['access']['type'] = 'perm';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['query']['type'] = 'views_query';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'fields';
+    /* Field: Content: Title */
+    $handler->display->display_options['fields']['title']['id'] = 'title';
+    $handler->display->display_options['fields']['title']['table'] = 'node';
+    $handler->display->display_options['fields']['title']['field'] = 'title';
+    $handler->display->display_options['fields']['title']['label'] = '';
+    $handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
+    $handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
+    /* Filter criterion: Content: Published */
+    $handler->display->display_options['filters']['status']['id'] = 'status';
+    $handler->display->display_options['filters']['status']['table'] = 'node';
+    $handler->display->display_options['filters']['status']['field'] = 'status';
+    $handler->display->display_options['filters']['status']['value'] = 1;
+    $handler->display->display_options['filters']['status']['group'] = 1;
+    $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+
+    /* Display: Page */
+    $handler = $view->new_display('page', 'Page', 'page_1');
+    $handler->display->display_options['path'] = 'test';
+
+    return $view;
+  }
+
+  /**
+   * Based on a bug some filter_groups landed in the overridden display, even the filters weren't overridden.
+   * This caused multiple issues.
+   * Take sure that the value from the default display are used.
+   *
+   * @see http://drupal.org/node/1259608
+   * @see views_plugin_display::init()
+   */
+  function testFilterGroupsUpdating() {
+    $view = $this->viewFilterGroupsUpdating();
+    $view->init_display();
+
+    $this->assertFalse($view->display['page']->handler->options['defaults']['filter_groups']);
+    $this->assertEqual($view->display['default']->handler->options['filter_groups'], $view->display['page']->handler->options['filter_groups'], 'Take sure the default options are used for the filter_groups');
+  }
+
+  /**
+   * Returns a test view for testFilterGroupUpdating.
+   *
+   * @see testFilterGroupUpdating
+   *
+   * @return view
+   */
+  function viewFilterGroupsUpdating() {
+    $view = new view();
+    $view->name = 'test_filter_groups';
+    $view->description = '';
+    $view->tag = 'default';
+    $view->base_table = 'node';
+    $view->human_name = 'test_filter_groups';
+    $view->core = 7;
+    $view->api_version = '3.0';
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Master */
+    $handler = $view->new_display('default', 'Master', 'default');
+    $handler->display->display_options['title'] = 'test_filter_groups';
+    $handler->display->display_options['access']['type'] = 'perm';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['query']['type'] = 'views_query';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['pager']['options']['items_per_page'] = '10';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'node';
+    /* Field: Content: Title */
+    $handler->display->display_options['fields']['title']['id'] = 'title';
+    $handler->display->display_options['fields']['title']['table'] = 'node';
+    $handler->display->display_options['fields']['title']['field'] = 'title';
+    $handler->display->display_options['fields']['title']['label'] = '';
+    $handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
+    $handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
+    /* Sort criterion: Content: Post date */
+    $handler->display->display_options['sorts']['created']['id'] = 'created';
+    $handler->display->display_options['sorts']['created']['table'] = 'node';
+    $handler->display->display_options['sorts']['created']['field'] = 'created';
+    $handler->display->display_options['sorts']['created']['order'] = 'DESC';
+    $handler->display->display_options['filter_groups']['groups'] = array(
+      1 => 'AND',
+      2 => 'AND',
+    );
+    /* Filter criterion: Content: Published */
+    $handler->display->display_options['filters']['status']['id'] = 'status';
+    $handler->display->display_options['filters']['status']['table'] = 'node';
+    $handler->display->display_options['filters']['status']['field'] = 'status';
+    $handler->display->display_options['filters']['status']['value'] = 1;
+    $handler->display->display_options['filters']['status']['group'] = 1;
+    $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+    /* Filter criterion: Content: Nid */
+    $handler->display->display_options['filters']['nid']['id'] = 'nid';
+    $handler->display->display_options['filters']['nid']['table'] = 'node';
+    $handler->display->display_options['filters']['nid']['field'] = 'nid';
+    $handler->display->display_options['filters']['nid']['value']['value'] = '1';
+    $handler->display->display_options['filters']['nid']['group'] = 2;
+    /* Filter criterion: Content: Nid */
+    $handler->display->display_options['filters']['nid_1']['id'] = 'nid_1';
+    $handler->display->display_options['filters']['nid_1']['table'] = 'node';
+    $handler->display->display_options['filters']['nid_1']['field'] = 'nid';
+    $handler->display->display_options['filters']['nid_1']['value']['value'] = '2';
+    $handler->display->display_options['filters']['nid_1']['group'] = 2;
+
+    /* Display: Page */
+    $handler = $view->new_display('page', 'Page', 'page');
+    $handler->display->display_options['filter_groups']['operator'] = 'OR';
+    $handler->display->display_options['filter_groups']['groups'] = array(
+      1 => 'OR',
+      2 => 'OR',
+    );
+    $handler->display->display_options['defaults']['filters'] = FALSE;
+    /* Filter criterion: Content: Published */
+    $handler->display->display_options['filters']['status']['id'] = 'status';
+    $handler->display->display_options['filters']['status']['table'] = 'node';
+    $handler->display->display_options['filters']['status']['field'] = 'status';
+    $handler->display->display_options['filters']['status']['value'] = 1;
+    $handler->display->display_options['filters']['status']['group'] = 1;
+    $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+    /* Filter criterion: Content: Nid */
+    $handler->display->display_options['filters']['nid']['id'] = 'nid';
+    $handler->display->display_options['filters']['nid']['table'] = 'node';
+    $handler->display->display_options['filters']['nid']['field'] = 'nid';
+    $handler->display->display_options['filters']['nid']['value']['value'] = '1';
+    $handler->display->display_options['filters']['nid']['group'] = 2;
+    /* Filter criterion: Content: Nid */
+    $handler->display->display_options['filters']['nid_1']['id'] = 'nid_1';
+    $handler->display->display_options['filters']['nid_1']['table'] = 'node';
+    $handler->display->display_options['filters']['nid_1']['field'] = 'nid';
+    $handler->display->display_options['filters']['nid_1']['value']['value'] = '2';
+    $handler->display->display_options['filters']['nid_1']['group'] = 2;
+    $handler->display->display_options['path'] = 'test-filter-groups';
+
+    return $view;
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style.test
index 875fcf1..87f5b7d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style.test
@@ -2,6 +2,10 @@
 
 /**
  * @file
+ * Definition of ViewsPluginStyleTestCase.
+ */
+
+/**
  * Tests some general style plugin related functionality.
  */
 class ViewsPluginStyleTestCase extends ViewsSqlTest {
@@ -227,4 +231,48 @@ class ViewsPluginStyleTestCase extends ViewsSqlTest {
       $this->assertEqual($sets_new_value, $expected, t('The style plugins should proper group the results with grouping by the value.'));
     }
   }
+
+
+  /**
+   * Stores a view output in the elements.
+   */
+  function storeViewPreview($output) {
+    $htmlDom = new DOMDocument();
+    @$htmlDom->loadHTML($output);
+    if ($htmlDom) {
+      // It's much easier to work with simplexml than DOM, luckily enough
+      // we can just simply import our DOM tree.
+      $this->elements = simplexml_import_dom($htmlDom);
+    }
+  }
+
+  /**
+   * Tests custom css classes.
+   */
+  function testCustomRowClasses() {
+    $view = $this->getBasicView();
+
+    // Setup some random css class.
+    $view->init_display();
+    $view->init_style();
+    $random_name = $this->randomName();
+    $view->style_plugin->options['row_class'] = $random_name . " test-token-[name]";
+
+    $rendered_output = $view->preview();
+    $this->storeViewPreview($rendered_output);
+
+    $rows = $this->elements->body->div->div->div;
+    $count = 0;
+    foreach ($rows as $row) {
+      $attributes = $row->attributes();
+      $class = (string) $attributes['class'][0];
+      $this->assertTrue(strpos($class, $random_name) !== FALSE, 'Take sure that a custom css class is added to the output.');
+
+      // Check token replacement.
+      $name = $view->field['name']->get_value($view->result[$count]);
+      $this->assertTrue(strpos($class, "test-token-$name") !== FALSE, 'Take sure that a token in custom css class is replaced.');
+
+      $count++;
+    }
+  }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test
index 03495c3..9a53bfc 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of viewsPluginStyleJumpMenuTest.
+ */
+
+/**
+ * Tests jump menu style functionality.
+ */
 class viewsPluginStyleJumpMenuTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_unformatted.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_unformatted.test
new file mode 100644
index 0000000..20b7b4d
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/styles/views_plugin_style_unformatted.test
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @file
+ * Definition of ViewsPluginStyleUnformattedTestCase.
+ */
+
+/**
+ * Tests the default/unformatted row style.
+ */
+class ViewsPluginStyleUnformattedTestCase extends ViewsSqlTest {
+
+  /**
+   * Stores all created nodes.
+   *
+   * @var array
+   */
+  var $nodes;
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Style: unformatted',
+      'description' => 'Test unformatted style functionality.',
+      'group' => 'Views Plugins',
+    );
+  }
+
+  /**
+   * Stores a view output in the elements.
+   */
+  function storeViewPreview($output) {
+    $htmlDom = new DOMDocument();
+    @$htmlDom->loadHTML($output);
+    if ($htmlDom) {
+      // It's much easier to work with simplexml than DOM, luckily enough
+      // we can just simply import our DOM tree.
+      $this->elements = simplexml_import_dom($htmlDom);
+    }
+  }
+
+  /**
+   * Take sure that the default css classes works as expected.
+   */
+  function testDefaultRowClasses() {
+    $view = $this->getBasicView();
+    $rendered_output = $view->preview();
+    $this->storeViewPreview($rendered_output);
+
+    $rows = $this->elements->body->div->div->div;
+    $count = 0;
+    $count_result = count($view->result);
+    foreach ($rows as $row) {
+      $count++;
+      $attributes = $row->attributes();
+      $class = (string) $attributes['class'][0];
+      // Take sure that each row has a row css class.
+      $this->assertTrue(strpos($class, "views-row-$count") !== FALSE, 'Take sure that each row has a row css class.');
+      // Take sure that the odd/even classes are set right.
+      $odd_even = $count % 2 == 0 ? 'even' : 'odd';
+      $this->assertTrue(strpos($class, "views-row-$odd_even") !== FALSE, 'Take sure that the odd/even classes are set right.');
+
+      if ($count == 1) {
+        $this->assertTrue(strpos($class, "views-row-first") !== FALSE, 'Take sure that the first class is set right.');
+      }
+      else if ($count == $count_result) {
+        $this->assertTrue(strpos($class, "views-row-last") !== FALSE, 'Take sure that the last class is set right.');
+
+      }
+      $this->assertTrue(strpos($class, 'views-row') !== FALSE, 'Take sure that the views row class is set right.');
+    }
+  }
+
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/taxonomy/views_handler_relationship_node_term_data.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/taxonomy/views_handler_relationship_node_term_data.test
new file mode 100644
index 0000000..37e8aa6
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/taxonomy/views_handler_relationship_node_term_data.test
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * @file
+ * Definition of ViewsHandlerRelationshipNodeTermDataTest.
+ */
+
+/**
+ * Tests the relationship_node_term_data handler.
+ */
+class ViewsHandlerRelationshipNodeTermDataTest extends ViewsSqlTest {
+  public static function getInfo() {
+    return array(
+      'name' => 'Tests handler relationship_node_term_data',
+      'description' => 'Tests the taxonomy term on node relationship handler',
+      'group' => 'Views Modules',
+    );
+  }
+
+  /**
+   * Returns a new term with random properties in vocabulary $vid.
+   */
+  function createTerm($vocabulary) {
+    $term = new stdClass();
+    $term->name = $this->randomName();
+    $term->description = $this->randomName();
+    // Use the first available text format.
+    $term->format = db_query_range('SELECT format FROM {filter_format}', 0, 1)->fetchField();
+    $term->vid = $vocabulary->vid;
+    taxonomy_term_save($term);
+    return $term;
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    //$web_user = $this->drupalCreateUser(array('create article content'));
+    //$this->drupalLogin($web_user);
+
+    $vocabulary = taxonomy_vocabulary_machine_name_load('tags');
+    $this->term_1 = $this->createTerm($vocabulary);
+    $this->term_2 = $this->createTerm($vocabulary);
+
+    $node = array();
+    $node['type'] = 'article';
+    $node['field_tags'][LANGUAGE_NONE][]['tid'] = $this->term_1->tid;
+    $node['field_tags'][LANGUAGE_NONE][]['tid'] = $this->term_2->tid;
+    $this->node = $this->drupalCreateNode($node);
+  }
+
+  function testViewsHandlerRelationshipNodeTermData() {
+    $view = $this->view_taxonomy_node_term_data();
+
+    $this->executeView($view, array($this->term_1->tid, $this->term_2->tid));
+    $resultset = array(
+      array(
+        'nid' => $this->node->nid,
+      ),
+    );
+    $this->column_map = array('nid' => 'nid');
+    debug($view->result);
+    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
+  }
+
+  function view_taxonomy_node_term_data() {
+    $view = new view();
+    $view->name = 'test_taxonomy_node_term_data';
+    $view->description = '';
+    $view->tag = '';
+    $view->base_table = 'node';
+    $view->human_name = 'test_taxonomy_node_term_data';
+    $view->core = 7;
+    $view->api_version = '3.0';
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Master */
+    $handler = $view->new_display('default', 'Master', 'default');
+    $handler->display->display_options['access']['type'] = 'perm';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['query']['type'] = 'views_query';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'node';
+    /* Relationship: Content: Taxonomy terms on node */
+    $handler->display->display_options['relationships']['term_node_tid']['id'] = 'term_node_tid';
+    $handler->display->display_options['relationships']['term_node_tid']['table'] = 'node';
+    $handler->display->display_options['relationships']['term_node_tid']['field'] = 'term_node_tid';
+    $handler->display->display_options['relationships']['term_node_tid']['label'] = 'Term #1';
+    $handler->display->display_options['relationships']['term_node_tid']['vocabularies'] = array(
+      'tags' => 0,
+    );
+    /* Relationship: Content: Taxonomy terms on node */
+    $handler->display->display_options['relationships']['term_node_tid_1']['id'] = 'term_node_tid_1';
+    $handler->display->display_options['relationships']['term_node_tid_1']['table'] = 'node';
+    $handler->display->display_options['relationships']['term_node_tid_1']['field'] = 'term_node_tid';
+    $handler->display->display_options['relationships']['term_node_tid_1']['label'] = 'Term #2';
+    $handler->display->display_options['relationships']['term_node_tid_1']['vocabularies'] = array(
+      'tags' => 0,
+    );
+    /* Contextual filter: Taxonomy term: Term ID */
+    $handler->display->display_options['arguments']['tid']['id'] = 'tid';
+    $handler->display->display_options['arguments']['tid']['table'] = 'taxonomy_term_data';
+    $handler->display->display_options['arguments']['tid']['field'] = 'tid';
+    $handler->display->display_options['arguments']['tid']['relationship'] = 'term_node_tid';
+    $handler->display->display_options['arguments']['tid']['default_argument_type'] = 'fixed';
+    $handler->display->display_options['arguments']['tid']['summary']['number_of_records'] = '0';
+    $handler->display->display_options['arguments']['tid']['summary']['format'] = 'default_summary';
+    $handler->display->display_options['arguments']['tid']['summary_options']['items_per_page'] = '25';
+    /* Contextual filter: Taxonomy term: Term ID */
+    $handler->display->display_options['arguments']['tid_1']['id'] = 'tid_1';
+    $handler->display->display_options['arguments']['tid_1']['table'] = 'taxonomy_term_data';
+    $handler->display->display_options['arguments']['tid_1']['field'] = 'tid';
+    $handler->display->display_options['arguments']['tid_1']['relationship'] = 'term_node_tid_1';
+    $handler->display->display_options['arguments']['tid_1']['default_argument_type'] = 'fixed';
+    $handler->display->display_options['arguments']['tid_1']['summary']['number_of_records'] = '0';
+    $handler->display->display_options['arguments']['tid_1']['summary']['format'] = 'default_summary';
+    $handler->display->display_options['arguments']['tid_1']['summary_options']['items_per_page'] = '25';
+
+    return $view;
+  }
+}
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/templates/views-view--frontpage.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/templates/views-view--frontpage.tpl.php
index 00d5f64..eb4f58b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/templates/views-view--frontpage.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/templates/views-view--frontpage.tpl.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * @file views-view.tpl.php
- * Main view template
+ * @file
+ * Main view template.
  *
  * Variables available:
  * - $classes_array: An array of classes determined in
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc
index 82b4548..cecec2f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc
@@ -1,9 +1,17 @@
 <?php
 
+/**
+ * @file
+ * Definition of views_test_plugin_access_test_dynamic.
+ */
+
+/**
+ * Tests a dynamic access plugin.
+ */
 class views_test_plugin_access_test_dynamic extends views_plugin_access {
   function option_definition() {
     $options = parent::option_definition();
-    $options['access'] = array('default' => FALSE);
+    $options['access'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc
index 5d99731..187d6ea 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc
@@ -1,9 +1,17 @@
 <?php
 
+/**
+ * @file
+ * Definition of views_test_plugin_access_test_static.
+ */
+
+/**
+ * Tests a static access plugin.
+ */
 class views_test_plugin_access_test_static extends views_plugin_access {
   function option_definition() {
     $options = parent::option_definition();
-    $options['access'] = array('default' => FALSE);
+    $options['access'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_handler_field_user_name.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_handler_field_user_name.test
index f627ea2..6ace471 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_handler_field_user_name.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_handler_field_user_name.test
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of viewsHandlerFieldUserNameTest.
+ */
+
+/**
  * Tests the field username handler.
  *
  * @see views_handler_field_user_name
@@ -17,8 +22,7 @@ class viewsHandlerFieldUserNameTest extends ViewsSqlTest {
   function testUserName() {
     $view = $this->view_user_name();
     $view->init_display();
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
 
     $view->row_index = 0;
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user.test
index 286e2df..52c5026 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user.test
@@ -2,9 +2,12 @@
 
 /**
  * @file
- * Tests basic user module integration into views.
+ * Definition of ViewsUserTestCase.
  */
 
+/**
+ * Tests basic user module integration into views.
+ */
 class ViewsUserTestCase extends ViewsSqlTest {
   var $users = array();
   var $nodes = array();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_default.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_default.test
index 4159b59..afb24d1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_default.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_default.test
@@ -2,9 +2,12 @@
 
 /**
  * @file
- * Tests views user argument default plugin.
+ * Definition of ViewsUserArgumentDefault.
  */
 
+/**
+ * Tests views user argument default plugin.
+ */
 class ViewsUserArgumentDefault extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_validate.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_validate.test
index 3c36b3a..6e157bf 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_validate.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/user/views_user_argument_validate.test
@@ -2,10 +2,12 @@
 
 /**
  * @file
- * Tests views user argument argument handler.
+ * Definition of ViewsUserArgumentValidate.
  */
 
-
+/**
+ * Tests views user argument argument handler.
+ */
 class ViewsUserArgumentValidate extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_access.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_access.test
index 14bc532..f02eca9 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_access.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_access.test
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of ViewsAccessTest.
+ */
+
+/**
  * Basic test for pluggable access.
  */
 class ViewsAccessTest extends ViewsSqlTest {
@@ -48,7 +53,7 @@ class ViewsAccessTest extends ViewsSqlTest {
   }
 
   /**
-   * Test none access plugin.
+   * Tests none access plugin.
    */
   function testAccessNone() {
     $view = $this->view_access_none();
@@ -61,7 +66,7 @@ class ViewsAccessTest extends ViewsSqlTest {
   }
 
   /**
-   * Test perm access plugin.
+   * Tests perm access plugin.
    */
   function testAccessPerm() {
     $view = $this->view_access_perm();
@@ -75,7 +80,7 @@ class ViewsAccessTest extends ViewsSqlTest {
   }
 
   /**
-   * Test role access plugin.
+   * Tests role access plugin.
    */
   function testAccessRole() {
     $view = $this->view_access_role();
@@ -93,7 +98,7 @@ class ViewsAccessTest extends ViewsSqlTest {
    */
 
   /**
-   * Test static access check.
+   * Tests static access check.
    */
   function testStaticAccessPlugin() {
     $view = $this->view_access_static();
@@ -120,7 +125,7 @@ class ViewsAccessTest extends ViewsSqlTest {
   }
 
   /**
-   * Test dynamic access plugin.
+   * Tests dynamic access plugin.
    */
   function testDynamicAccessPlugin() {
     $view = $this->view_access_dynamic();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_analyze.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_analyze.test
index 9bd7922..c21a4bb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_analyze.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_analyze.test
@@ -2,9 +2,12 @@
 
 /**
  * @file
- * Tests the views analyze system.
+ * Definition of ViewsAnalyzeTest.
  */
 
+/**
+ * Tests the views analyze system.
+ */
 class ViewsAnalyzeTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_default.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_default.test
index 39e54e7..9c0a7eb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_default.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_default.test
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of ViewsArgumentDefaultTest.
+ */
+
+/**
  * Basic test for pluggable argument default.
  */
 class ViewsArgumentDefaultTest extends ViewsSqlTest {
@@ -19,7 +24,32 @@ class ViewsArgumentDefaultTest extends ViewsSqlTest {
   }
 
   /**
-   * Test fixed default argument.
+   * Tests the use of a default argument plugin that provides no options.
+   */
+  function testArgumentDefaultNoOptions() {
+    module_enable(array('views_ui', 'views_test'));
+    $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration'));
+    $this->drupalLogin($admin_user);
+
+    // The current_user plugin has no options form, and should pass validation.
+    $argument_type = 'current_user';
+    $edit = array(
+      'options[default_argument_type]' => $argument_type,
+    );
+    $this->drupalPost('admin/structure/views/nojs/config-item/test_argument_default_current_user/default/argument/uid', $edit, t('Apply'));
+
+    // Note, the undefined index error has two spaces after it.
+    $error = array(
+      '%type' => 'Notice',
+      '!message' => 'Undefined index:  ' . $argument_type,
+      '%function' => 'views_handler_argument->options_validate()',
+    );
+    $message = t('%type: !message in %function', $error);
+    $this->assertNoRaw($message, t('Did not find error message: !message.', array('!message' => $message)));
+  }
+
+  /**
+   * Tests fixed default argument.
    */
   function testArgumentDefaultFixed() {
     $view = $this->view_argument_default_fixed();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_validator.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_validator.test
index cbbb7b8..fb2e4f2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_validator.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_argument_validator.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsArgumentValidatorTest.
+ */
+
+/**
+ * Tests Views argument validators.
+ */
 class ViewsArgumentValidatorTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_basic.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_basic.test
index 20a9d4f..5fc60d8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_basic.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_basic.test
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of ViewsBasicTest.
+ */
+
+/**
  * Basic test class for Views query builder tests.
  */
 class ViewsBasicTest extends ViewsSqlTest {
@@ -13,13 +18,13 @@ class ViewsBasicTest extends ViewsSqlTest {
   }
 
   /**
-   * Test a trivial result set.
+   * Tests a trivial result set.
    */
   public function testSimpleResultSet() {
     $view = $this->getBasicView();
 
     // Execute the view.
-    $view->execute();
+    $this->executeView($view);
 
     // Verify the result.
     $this->assertEqual(5, count($view->result), t('The number of returned rows match.'));
@@ -30,7 +35,7 @@ class ViewsBasicTest extends ViewsSqlTest {
   }
 
   /**
-   * Test filtering of the result set.
+   * Tests filtering of the result set.
    */
   public function testSimpleFiltering() {
     $view = $this->getBasicView();
@@ -58,7 +63,7 @@ class ViewsBasicTest extends ViewsSqlTest {
     ));
 
     // Execute the view.
-    $view->execute();
+    $this->executeView($view);
 
     // Build the expected result.
     $dataset = array(
@@ -88,7 +93,7 @@ class ViewsBasicTest extends ViewsSqlTest {
   }
 
   /**
-   * Test simple argument.
+   * Tests simple argument.
    */
   public function testSimpleArgument() {
     $view = $this->getBasicView();
@@ -139,7 +144,7 @@ class ViewsBasicTest extends ViewsSqlTest {
 
     // Execute with a view
     $view->set_arguments(array(27));
-    $view->execute();
+    $this->executeView($view);
 
     // Build the expected result.
     $dataset = array(
@@ -159,7 +164,7 @@ class ViewsBasicTest extends ViewsSqlTest {
 
     // Test "show all" if no argument is present.
     $view = $saved_view;
-    $view->execute();
+    $this->executeView($view);
 
     // Build the expected result.
     $dataset = $this->dataSet();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test
index c004112..3103762 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test
@@ -2,11 +2,13 @@
 
 /**
  * @file
- * Test cache system.
+ * Definition of ViewsCacheTest.
  */
 
 /**
  * Basic test for pluggable caching.
+ *
+ * @see views_plugin_cache
  */
 class ViewsCacheTest extends ViewsSqlTest {
   public static function getInfo() {
@@ -19,13 +21,15 @@ class ViewsCacheTest extends ViewsSqlTest {
 
   /**
    * Build and return a basic view of the views_test table.
+   *
+   * @return view
    */
   protected function getBasicView() {
     views_include('view');
 
     // Create the basic view.
     $view = new view();
-    $view->vid = 'test_view';
+    $view->name = 'test_view';
     $view->add_display('default');
     $view->base_table = 'views_test';
 
@@ -68,6 +72,8 @@ class ViewsCacheTest extends ViewsSqlTest {
 
   /**
    * Tests time based caching.
+   *
+   * @see views_plugin_cache_time
    */
   function testTimeCaching() {
     // Create a basic result which just 2 results.
@@ -79,7 +85,7 @@ class ViewsCacheTest extends ViewsSqlTest {
       'output_lifespan' => '3600',
     ));
 
-    $view->execute();
+    $this->executeView($view);
     // Verify the result.
     $this->assertEqual(5, count($view->result), t('The number of returned rows match.'));
 
@@ -100,13 +106,15 @@ class ViewsCacheTest extends ViewsSqlTest {
       'output_lifespan' => '3600',
     ));
 
-    $view->execute();
+    $this->executeView($view);
     // Verify the result.
     $this->assertEqual(5, count($view->result), t('The number of returned rows match.'));
   }
 
   /**
    * Tests no caching.
+   *
+   * @see views_plugin_cache_time
    */
   function testNoneCaching() {
     // Create a basic result which just 2 results.
@@ -116,7 +124,7 @@ class ViewsCacheTest extends ViewsSqlTest {
       'type' => 'none',
     ));
 
-    $view->execute();
+    $this->executeView($view);
     // Verify the result.
     $this->assertEqual(5, count($view->result), t('The number of returned rows match.'));
 
@@ -129,17 +137,108 @@ class ViewsCacheTest extends ViewsSqlTest {
 
     drupal_write_record('views_test', $record);
 
-    // The Result should be the same as before, because of the caching.
+    // The Result changes, because the view is not cached.
     $view = $this->getBasicView();
     $view->set_display();
     $view->display_handler->override_option('cache', array(
-      'type' => 'time',
-      'results_lifespan' => '3600',
-      'output_lifespan' => '3600',
+      'type' => 'none',
     ));
 
-    $view->execute();
+    $this->executeView($view);
     // Verify the result.
     $this->assertEqual(6, count($view->result), t('The number of returned rows match.'));
   }
+
+  /**
+   * Tests css/js storage and restoring mechanism.
+   */
+  function testHeaderStorage() {
+    // Create a view with output caching enabled.
+    // Some hook_views_pre_render in views_test.module adds the test css/js file.
+    // so they should be added to the css/js storage.
+    $view = $this->getBasicView();
+    $view->init_display();
+    $view->name = 'test_cache_header_storage';
+    $view->display_handler->override_option('cache', array(
+      'type' => 'time',
+      'output_lifespan' => '3600',
+    ));
+
+    $view->preview();
+    $view->destroy();
+    unset($view->pre_render_called);
+    drupal_static_reset('drupal_add_css');
+    drupal_static_reset('drupal_add_js');
+
+    $view->init_display();
+    $view->preview();
+    $css = drupal_add_css();
+    $css_path = drupal_get_path('module', 'views_test') . '/views_cache.test.css';
+    $js_path = drupal_get_path('module', 'views_test') . '/views_cache.test.js';
+    $js = drupal_add_js();
+
+    $this->assertTrue(isset($css[$css_path]), 'Make sure the css is added for cached views.');
+    $this->assertTrue(isset($js[$js_path]), 'Make sure the js is added for cached views.');
+    $this->assertFalse(!empty($view->pre_render_called), 'Make sure hook_views_pre_render is not called for the cached view.');
+    $view->destroy();
+
+    // Now add some css/jss before running the view.
+    // Make sure that this css is not added when running the cached view.
+    $view->name = 'test_cache_header_storage_2';
+
+    $system_css_path = drupal_get_path('module', 'system') . '/system.maintenance.css';
+    drupal_add_css($system_css_path);
+    $system_js_path = drupal_get_path('module', 'system') . '/system.cron.js';
+    drupal_add_js($system_js_path);
+
+    $view->init_display();
+    $view->preview();
+    $view->destroy();
+    drupal_static_reset('drupal_add_css');
+    drupal_static_reset('drupal_add_js');
+
+    $view->init_display();
+    $view->preview();
+
+    $css = drupal_add_css();
+    $js = drupal_add_js();
+
+    $this->assertFalse(isset($css[$system_css_path]), 'Make sure that unrelated css is not added.');
+    $this->assertFalse(isset($js[$system_js_path]), 'Make sure that unrelated js is not added.');
+
+  }
+
+  /**
+   * Check that HTTP headers are cached for views.
+   */
+  function testHttpHeadersCaching() {
+    // Create a few nodes to appear in RSS feed.
+    for ($i = 0; $i < 5; $i++) {
+      $this->drupalCreateNode();
+    }
+
+    // Make the first request and check returned content type.
+    $this->drupalGet('test_feed_http_headers_caching');
+    $first_content = $this->drupalGetContent();
+    $first_content_type = $this->drupalGetHeader('content-type');
+    $expected_type = 'application/rss+xml';
+    $this->assertIdentical(0, strpos(trim($first_content_type), $expected_type), t('Expected content type returned.'));
+
+    // Check that we have 5 items in RSS feed returned by the first request.
+    $xml = simplexml_load_string($first_content);
+    $items = $xml->xpath('/rss/channel/item');
+    $this->assertEqual(5, count($items), t('The number of RSS feed items matched.'));
+
+    // Create another node to be sure we get cached results on the second
+    // request.
+    $this->drupalCreateNode();
+
+    // Make the second request, check content type and content matching.
+    $this->drupalGet('test_feed_http_headers_caching');
+    $second_content = $this->drupalGetContent();
+    $this->assertEqual($first_content, $second_content, t('The second result fetched from cache.'));
+    $second_content_type = $this->drupalGetHeader('content-type');
+    $this->assertEqual($first_content_type, $second_content_type, t('Content types of responses are equal.'));
+  }
+
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.css b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.css
new file mode 100644
index 0000000..8dd17c1
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.css
@@ -0,0 +1,5 @@
+/**
+ * @file
+ * Just a placeholder file for the test.
+ * @see ViewsCacheTest::testHeaderStorage
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.js b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.js
new file mode 100644
index 0000000..8dd17c1
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_cache.test.js
@@ -0,0 +1,5 @@
+/**
+ * @file
+ * Just a placeholder file for the test.
+ * @see ViewsCacheTest::testHeaderStorage
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_exposed_form.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_exposed_form.test
index 4c660f6..72baf2c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_exposed_form.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_exposed_form.test
@@ -2,9 +2,12 @@
 
 /**
  * @file
- * Test exposed forms.
+ * Definition of ViewsExposedFormTest.
  */
 
+/**
+ * Tests exposed forms.
+ */
 class ViewsExposedFormTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -54,7 +57,7 @@ class ViewsExposedFormTest extends ViewsSqlTest {
   }
 
   /**
-   * Test the admin interface of exposed filter and sort items.
+   * Tests the admin interface of exposed filter and sort items.
    */
   function testExposedAdminUi() {
     $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration'));
@@ -63,13 +66,28 @@ class ViewsExposedFormTest extends ViewsSqlTest {
     $edit = array();
 
     $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
-    // Be sure that the button is called exposed
+    // Be sure that the button is called exposed.
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Expose filter'));
 
+    // The first time the filter UI is displayed, the operator and the
+    // value forms should be shown.
+    $this->assertFieldById('edit-options-operator-in', '', 'Operator In exists');
+    $this->assertFieldById('edit-options-operator-not-in', '', 'Operator Not In exists');
+    $this->assertFieldById('edit-options-value-page', '', 'Checkbox for Page exists');
+    $this->assertFieldById('edit-options-value-article', '', 'Checkbox for Article exists');
+
     // Click the Expose filter button.
     $this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type', $edit, t('Expose filter'));
-    // Check the label of the expose button
+    // Check the label of the expose button.
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide filter'));
+    // Check the label of the grouped exposed button
+    $this->helperButtonHasLabel('edit-options-group-button-button', t('Grouped filters'));
+
+    // After Expose the filter, Operator and Value should be still here
+    $this->assertFieldById('edit-options-operator-in', '', 'Operator In exists');
+    $this->assertFieldById('edit-options-operator-not-in', '', 'Operator Not In exists');
+    $this->assertFieldById('edit-options-value-page', '', 'Checkbox for Page exists');
+    $this->assertFieldById('edit-options-value-article', '', 'Checkbox for Article exists');
 
     // Check the validations of the filter handler.
     $edit = array();
@@ -87,10 +105,65 @@ class ViewsExposedFormTest extends ViewsSqlTest {
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Expose sort'));
     $this->assertNoFieldById('edit-options-expose-label', '', t('Make sure no label field is shown'));
 
+    // Click the Grouped Filters button.
+    $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
+    $this->drupalPost(NULL, array(), t('Grouped filters'));
+
+    // After click on 'Grouped Filters' standard operator and value should not be displayed
+    $this->assertNoFieldById('edit-options-operator-in', '', 'Operator In not exists');
+    $this->assertNoFieldById('edit-options-operator-not-in', '', 'Operator Not In not exists');
+    $this->assertNoFieldById('edit-options-value-page', '', 'Checkbox for Page not exists');
+    $this->assertNoFieldById('edit-options-value-article', '', 'Checkbox for Article not exists');
+
+
+    // Check that after click on 'Grouped Filters', a new button is shown to
+    // add more items to the list.
+    $this->helperButtonHasLabel('edit-options-group-info-add-group', t('Add another item'));
+
+    // Create a grouped filter
+    $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
+    $edit = array();
+    $edit["options[group_info][group_items][1][title]"] = 'Is Article';
+    $edit["options[group_info][group_items][1][value][article]"] = 'article';
+
+    $edit["options[group_info][group_items][2][title]"] = 'Is Page';
+    $edit["options[group_info][group_items][2][value][page]"] = TRUE;
+
+    $edit["options[group_info][group_items][3][title]"] = 'Is Page and Article';
+    $edit["options[group_info][group_items][3][value][article]"] = TRUE;
+    $edit["options[group_info][group_items][3][value][page]"] = TRUE;
+    $this->drupalPost(NULL, $edit, t('Apply'));
+
+    // Validate that all the titles are defined for each group
+    $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
+    $edit = array();
+    $edit["options[group_info][group_items][1][title]"] = 'Is Article';
+    $edit["options[group_info][group_items][1][value][article]"] = TRUE;
+
+    // This should trigger an error
+    $edit["options[group_info][group_items][2][title]"] = '';
+    $edit["options[group_info][group_items][2][value][page]"] = TRUE;
+
+    $edit["options[group_info][group_items][3][title]"] = 'Is Page and Article';
+    $edit["options[group_info][group_items][3][value][article]"] = TRUE;
+    $edit["options[group_info][group_items][3][value][page]"] = TRUE;
+    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->assertRaw(t('The title is required if value for this item is defined.'), t('Group items should have a title'));
+
+    // Un-Expose the filter
+    $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
+    $this->drupalPost(NULL, array(), t('Hide filter'));
+
+    // After Un-Expose the filter, Operator and Value should be shown again
+    $this->assertFieldById('edit-options-operator-in', '', 'Operator In exists after hide filter');
+    $this->assertFieldById('edit-options-operator-not-in', '', 'Operator Not In exists after hide filter');
+    $this->assertFieldById('edit-options-value-page', '', 'Checkbox for Page exists after hide filter');
+    $this->assertFieldById('edit-options-value-article', '', 'Checkbox for Article exists after hide filter');
+
     // Click the Expose sort button.
     $edit = array();
     $this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created', $edit, t('Expose sort'));
-    // Check the label of the expose button
+    // Check the label of the expose button.
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide sort'));
     $this->assertFieldById('edit-options-expose-label', '', t('Make sure a label field is shown'));
   }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_glossary.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_glossary.test
index 4c0ca56..0fe0fba 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_glossary.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_glossary.test
@@ -2,9 +2,12 @@
 
 /**
  * @file
- * Test glossary view ( summary of arguments ).
+ * Definition of ViewsGlossaryTestCase.
  */
 
+/**
+ * Tests glossary view ( summary of arguments ).
+ */
 class ViewsGlossaryTestCase extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -19,7 +22,7 @@ class ViewsGlossaryTestCase extends ViewsSqlTest {
   }
 
   /**
-   * Test the default glossary view.
+   * Tests the default glossary view.
    */
   public function testGlossaryView() {
     // create a contentype and add some nodes, with a non random title.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_groupby.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_groupby.test
index ed27598..718d8dc 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_groupby.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_groupby.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Tests aggregate functionality of Views.
+ */
+
+/**
+ * Tests aggregate functionality of views, for example count.
+ */
 class ViewsQueryGroupByTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -11,7 +19,7 @@ class ViewsQueryGroupByTest extends ViewsSqlTest {
   }
 
   /**
-   * Test aggregate count feature.
+   * Tests aggregate count feature.
    */
   public function testAggregateCount() {
     // Create 2 nodes of type1 and 3 nodes of type2
@@ -276,6 +284,9 @@ class ViewsQueryGroupByTest extends ViewsSqlTest {
   }
 }
 
+/**
+ * Tests UI of aggregate functionality..
+ */
 class viewsUiGroupbyTestCase extends DrupalWebTestCase {
   function setUp() {
     // Enable views_ui.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_handlers.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_handlers.test
index 19126fa..d54a7df 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_handlers.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_handlers.test
@@ -2,9 +2,12 @@
 
 /**
  * @file
- * Test abstract handlers of views.
+ * Definition of ViewsHandlersTest.
  */
 
+/**
+ * Tests abstract handlers of views.
+ */
 class ViewsHandlersTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -37,7 +40,7 @@ class ViewsHandlersTest extends ViewsSqlTest {
   }
 
   /**
-   * Test views_break_phrase_string function.
+   * Tests views_break_phrase_string function.
    */
   function test_views_break_phrase_string() {
     $empty_stdclass = new stdClass();
@@ -52,28 +55,47 @@ class ViewsHandlersTest extends ViewsSqlTest {
     $this->assertEqual($handler, views_break_phrase_string('', $handler));
 
     // test ors
-    $this->assertEqualValue(array('word1', 'word2', 'word'), views_break_phrase_string('word1 word2+word', $handler));
+    $handler = views_break_phrase_string('word1 word2+word');
+    $this->assertEqualValue(array('word1', 'word2', 'word'), $handler);
+    $this->assertEqual('or', $handler->operator);
+    $handler = views_break_phrase_string('word1+word2+word');
+    $this->assertEqualValue(array('word1', 'word2', 'word'), $handler);
     $this->assertEqual('or', $handler->operator);
-    $this->assertEqualValue(array('word1', 'word2', 'word'), views_break_phrase_string('word1+word2+word', $handler));
+    $handler = views_break_phrase_string('word1 word2 word');
+    $this->assertEqualValue(array('word1', 'word2', 'word'), $handler);
     $this->assertEqual('or', $handler->operator);
-    $this->assertEqualValue(array('word1', 'word2', 'word'), views_break_phrase_string('word1 word2 word', $handler));
+    $handler = views_break_phrase_string('word-1+word-2+word');
+    $this->assertEqualValue(array('word-1', 'word-2', 'word'), $handler);
     $this->assertEqual('or', $handler->operator);
-    $this->assertEqualValue(array('word1', 'word2', 'word'), views_break_phrase_string('word1 word2++word', $handler));
+    $handler = views_break_phrase_string('wõrd1+wõrd2+wõrd');
+    $this->assertEqualValue(array('wõrd1', 'wõrd2', 'wõrd'), $handler);
     $this->assertEqual('or', $handler->operator);
 
     // test ands.
-    $this->assertEqualValue(array('word1', 'word2', 'word'), views_break_phrase_string('word1,word2,word', $handler));
+    $handler = views_break_phrase_string('word1,word2,word');
+    $this->assertEqualValue(array('word1', 'word2', 'word'), $handler);
     $this->assertEqual('and', $handler->operator);
-    $this->assertEqualValue(array('word1', 'word2', 'word'), views_break_phrase_string('word1,,word2,word', $handler));
+    $handler = views_break_phrase_string('word1 word2,word');
+    $this->assertEqualValue(array('word1 word2', 'word'), $handler);
     $this->assertEqual('and', $handler->operator);
-    $this->assertEqualValue(array('word1 word2', 'word'), views_break_phrase_string('word1 word2,word', $handler));
+    $handler = views_break_phrase_string('word1,word2 word');
+    $this->assertEqualValue(array('word1', 'word2 word'), $handler);
     $this->assertEqual('and', $handler->operator);
-    $this->assertEqualValue(array('word1', 'word2 word'), views_break_phrase_string('word1,word2 word', $handler));
+    $handler = views_break_phrase_string('word-1,word-2,word');
+    $this->assertEqualValue(array('word-1', 'word-2', 'word'), $handler);
+    $this->assertEqual('and', $handler->operator);
+    $handler = views_break_phrase_string('wõrd1,wõrd2,wõrd');
+    $this->assertEqualValue(array('wõrd1', 'wõrd2', 'wõrd'), $handler);
+    $this->assertEqual('and', $handler->operator);
+
+    // test a single word
+    $handler = views_break_phrase_string('word');
+    $this->assertEqualValue(array('word'), $handler);
     $this->assertEqual('and', $handler->operator);
   }
 
   /**
-   * Test views_break_phrase function.
+   * Tests views_break_phrase function.
    */
   function test_views_break_phrase() {
     $empty_stdclass = new stdClass();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_module.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_module.test
index 9804f57..dc6c164 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_module.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_module.test
@@ -1,6 +1,13 @@
 <?php
 
-
+/**
+ * @file
+ * Definition of ViewsModuleTest.
+ */
+
+/**
+ * Tests basic functions from the Views module.
+ */
 class ViewsModuleTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -96,7 +103,7 @@ class ViewsModuleTest extends ViewsSqlTest {
   }
 
   /**
-   * Test the views_get_handler method.
+   * Tests the views_get_handler method.
    */
   function testviews_get_handler() {
     $types = array('field', 'area', 'filter');
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_pager.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_pager.test
index 9c3cf3e..fef4915 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_pager.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_pager.test
@@ -2,10 +2,13 @@
 
 /**
  * @file
- * Tests the pluggable pager system.
+ * Definition of ViewsPagerTest.
  */
 
-class ViewsPagerTest extends DrupalWebTestCase {
+/**
+ * Tests the pluggable pager system.
+ */
+class ViewsPagerTest extends ViewsSqlTest {
   public static function getInfo() {
     return array(
       'name' => 'Pager',
@@ -114,7 +117,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
   }
 
   /**
-   * Test the none-pager-query.
+   * Tests the none-pager-query.
    */
   public function testNoLimit() {
     // Create 11 nodes and make sure that everyone is returned.
@@ -124,8 +127,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
     }
     $view = $this->viewsPagerNoLimit();
     $view->set_display('default');
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
     $this->assertEqual(count($view->result), 11, 'Make sure that every item is returned in the result');
 
     $view->destroy();
@@ -141,8 +143,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
       ),
     );
     $view->display_handler->set_option('pager', $pager);
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
 
     $this->assertEqual(count($view->result), 8, 'Make sure that every item beside the first three is returned in the result');
 
@@ -174,8 +175,27 @@ class ViewsPagerTest extends DrupalWebTestCase {
     return $view;
   }
 
+  public function testViewTotalRowsWithoutPager() {
+    $this->createNodes(23);
+
+    $view = $this->viewsPagerNoLimit();
+    $view->get_total_rows = TRUE;
+    $view->set_display('default');
+    $this->executeView($view);
+
+    $this->assertEqual($view->total_rows, 23, "'total_rows' is calculated when pager type is 'none' and 'get_total_rows' is TRUE.");
+  }
+
+  public function createNodes($count) {
+    if ($count >= 0) {
+      for ($i = 0; $i < $count; $i++) {
+        $this->drupalCreateNode();
+      }
+    }
+  }
+
   /**
-   * Test the some pager plugin.
+   * Tests the some pager plugin.
    */
   public function testLimit() {
     // Create 11 nodes and make sure that everyone is returned.
@@ -185,7 +205,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
     }
     $view = $this->viewsPagerLimit();
     $view->set_display('default');
-    $view->execute();
+    $this->executeView($view);
     $this->assertEqual(count($view->result), 5, 'Make sure that only a certain count of items is returned');
     $view->destroy();
 
@@ -201,8 +221,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
       ),
     );
     $view->display_handler->set_option('pager', $pager);
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
     $this->assertEqual(count($view->result), 3, 'Make sure that only a certain count of items is returned');
 
     // Check some public functions.
@@ -235,7 +254,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
   }
 
   /**
-   * Test the normal pager.
+   * Tests the normal pager.
    */
   public function testNormalPager() {
     // Create 11 nodes and make sure that everyone is returned.
@@ -245,8 +264,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
     }
     $view = $this->viewsPagerFull();
     $view->set_display('default');
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
     $this->assertEqual(count($view->result), 5, 'Make sure that only a certain count of items is returned');
     $view->destroy();
 
@@ -262,15 +280,13 @@ class ViewsPagerTest extends DrupalWebTestCase {
       ),
     );
     $view->display_handler->set_option('pager', $pager);
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
     $this->assertEqual(count($view->result), 3, 'Make sure that only a certain count of items is returned');
 
     // Test items per page = 0
     $view = $this->viewPagerFullZeroItemsPerPage();
     $view->set_display('default');
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
 
     $this->assertEqual(count($view->result), 11, 'All items are return');
 
@@ -292,7 +308,7 @@ class ViewsPagerTest extends DrupalWebTestCase {
     );
 
     $view->display_handler->set_option('pager', $pager);
-    $view->execute();
+    $this->executeView($view);
     $this->assertEqual($view->query->pager->get_items_per_page(), 0);
     $this->assertEqual(count($view->result), 11);
   }
@@ -402,14 +418,14 @@ class ViewsPagerTest extends DrupalWebTestCase {
   }
 
   /**
-   * Test the minipager.
+   * Tests the minipager.
    */
   public function testMiniPager() {
     // the functionality is the same as the normal pager, so i don't know what to test here.
   }
 
   /**
-   * Test rendering with NULL pager.
+   * Tests rendering with NULL pager.
    */
   public function testRenderNullPager() {
     // Create 11 nodes and make sure that everyone is returned.
@@ -419,10 +435,62 @@ class ViewsPagerTest extends DrupalWebTestCase {
     }
     $view = $this->viewsPagerFullFields();
     $view->set_display('default');
-    $view->execute();
+    $this->executeView($view);
     $view->use_ajax = TRUE; // force the value again here
     $view->query->pager = NULL;
     $output = $view->render();
     $this->assertEqual(preg_match('/<ul class="pager">/', $output), 0, t('The pager is not rendered.'));
   }
+
+  /**
+   * Test the api functions on the view object.
+   */
+  function testPagerApi() {
+    $view = $this->viewsPagerFull();
+    // On the first round don't initialize the pager.
+
+    $this->assertEqual($view->get_items_per_page(), NULL, 'If the pager is not initialized and no manual override there is no items per page.');
+    $rand_number = rand(1, 5);
+    $view->set_items_per_page($rand_number);
+    $this->assertEqual($view->get_items_per_page(), $rand_number, 'Make sure get_items_per_page uses the settings of set_items_per_page.');
+
+    $this->assertEqual($view->get_offset(), NULL, 'If the pager is not initialized and no manual override there is no offset.');
+    $rand_number = rand(1, 5);
+    $view->set_offset($rand_number);
+    $this->assertEqual($view->get_offset(), $rand_number, 'Make sure get_offset uses the settings of set_offset.');
+
+    $this->assertEqual($view->get_current_page(), NULL, 'If the pager is not initialized and no manual override there is no current page.');
+    $rand_number = rand(1, 5);
+    $view->set_current_page($rand_number);
+    $this->assertEqual($view->get_current_page(), $rand_number, 'Make sure get_current_page uses the settings of set_current_page.');
+
+    $view->destroy();
+
+    // On this round enable the pager.
+    $view->init_display();
+    $view->init_query();
+    $view->init_pager();
+
+    $this->assertEqual($view->get_items_per_page(), 5, 'Per default the view has 5 items per page.');
+    $rand_number = rand(1, 5);
+    $view->set_items_per_page($rand_number);
+    $rand_number = rand(6, 11);
+    $view->query->pager->set_items_per_page($rand_number);
+    $this->assertEqual($view->get_items_per_page(), $rand_number, 'Make sure get_items_per_page uses the settings of set_items_per_page.');
+
+    $this->assertEqual($view->get_offset(), 0, 'Per default a view has a 0 offset.');
+    $rand_number = rand(1, 5);
+    $view->set_offset($rand_number);
+    $rand_number = rand(6, 11);
+    $view->query->pager->set_offset($rand_number);
+    $this->assertEqual($view->get_offset(), $rand_number, 'Make sure get_offset uses the settings of set_offset.');
+
+    $this->assertEqual($view->get_current_page(), 0, 'Per default the current page is 0.');
+    $rand_number = rand(1, 5);
+    $view->set_current_page($rand_number);
+    $rand_number = rand(6, 11);
+    $view->query->pager->set_current_page($rand_number);
+    $this->assertEqual($view->get_current_page(), $rand_number, 'Make sure get_current_page uses the settings of set_current_page.');
+
+  }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_plugin_localization_test.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_plugin_localization_test.inc
index 35a870d..1987fd8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_plugin_localization_test.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_plugin_localization_test.inc
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Definition of views_plugin_localization_test.
+ */
+
+/**
  * A stump localisation plugin which has static variables to cache the input.
  */
 class views_plugin_localization_test extends views_plugin_localization {
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_query.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_query.test
index ea4e2bc..735df0e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_query.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_query.test
@@ -367,7 +367,7 @@ abstract class ViewsSqlTest extends ViewsTestCase {
 
     // Create the basic view.
     $view = new view();
-    $view->vid = 'test_view';
+    $view->name = 'test_view';
     $view->add_display('default');
     $view->base_table = 'views_test';
 
@@ -413,4 +413,21 @@ abstract class ViewsSqlTest extends ViewsTestCase {
 
     return $view;
   }
+
+  /**
+   * Build and return a Page view of the views_test table.
+   *
+   * @return view
+   */
+  protected function getBasicPageView() {
+    views_include('view');
+    $view = $this->getBasicView();
+
+    // In order to test exposed filters, we have to disable
+    // the exposed forms cache.
+    drupal_static_reset('views_exposed_form_cache');
+
+    $display = $view->new_display('page', 'Page', 'page_1');
+    return $view;
+  }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.info b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.info
index c3278f7..c41ad54 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.info
@@ -5,9 +5,9 @@ core = 7.x
 dependencies[] = views
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-02-22
-version = "7.x-3.3"
+; Information added by drupal.org packaging script on 2012-08-24
+version = "7.x-3.5"
 core = "7.x"
 project = "views"
-datestamp = "1329946249"
+datestamp = "1345829394"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.install b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.install
index 3080b74..b0ccd8b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.install
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.install
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Install, update, and uninstall functions for the Views Test module.
+ */
+
+/**
+ * Implements hook_schema().
+ */
 function views_test_schema() {
   return variable_get('views_test_schema', array());
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.module b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.module
index 18536b9..f6026b8 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.module
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.module
@@ -1,6 +1,11 @@
 <?php
 
 /**
+ * @file
+ * Helper module for Views tests.
+ */
+
+/**
  * Implements hook_permission().
  */
 function views_test_permission() {
@@ -23,14 +28,14 @@ function views_test_views_api() {
 }
 
 /**
- * Implements hook_views_data()
+ * Implements hook_views_data().
  */
 function views_test_views_data() {
   return  variable_get('views_test_views_data', array());
 }
 
 /**
- * Implements hook_views_plugins()
+ * Implements hook_views_plugins().
  */
 function views_test_views_plugins() {
   return variable_get('views_test_views_plugins', array());
@@ -43,3 +48,14 @@ function views_test_test_static_access_callback($access) {
 function views_test_test_dynamic_access_callback($access, $argument1, $argument2) {
   return $access && $argument1 == variable_get('test_dynamic_access_argument1', NULL) && $argument2 == variable_get('test_dynamic_access_argument2', NULL);
 }
+
+/**
+ * Implements hook_views_pre_render().
+ */
+function views_test_views_pre_render(&$view) {
+  if ($view->name == 'test_cache_header_storage') {
+    drupal_add_js(drupal_get_path('module', 'views_test') . '/views_cache.test.js');
+    drupal_add_css(drupal_get_path('module', 'views_test') . '/views_cache.test.css');
+    $view->pre_render_called = TRUE;
+  }
+}
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.views_default.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.views_default.inc
index dce5906..0448705 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.views_default.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_test.views_default.inc
@@ -1,7 +1,8 @@
 <?php
+
 /**
  * @file
- *   Test views
+ * Tests views.
  */
 
 /**
@@ -141,5 +142,81 @@ function views_test_views_default_views() {
 
   $views[$view->name] = $view;
 
+  $view = new view;
+  $view->name = 'test_argument_default_current_user';
+  $view->description = '';
+  $view->tag = '';
+  $view->view_php = '';
+  $view->base_table = 'node';
+  $view->is_cacheable = FALSE;
+  $view->api_version = 3;
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['access']['type'] = 'none';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '10';
+  $handler->display->display_options['pager']['options']['offset'] = '0';
+  $handler->display->display_options['pager']['options']['id'] = '0';
+  $handler->display->display_options['style_plugin'] = 'default';
+  $handler->display->display_options['row_plugin'] = 'fields';
+  /* Field: Content: Title */
+  $handler->display->display_options['fields']['title']['id'] = 'title';
+  $handler->display->display_options['fields']['title']['table'] = 'node';
+  $handler->display->display_options['fields']['title']['field'] = 'title';
+  $handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['trim'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['word_boundary'] = 1;
+  $handler->display->display_options['fields']['title']['alter']['ellipsis'] = 1;
+  $handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['title']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['title']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['title']['link_to_node'] = 0;
+  /* Contextual filter: Content: Author uid */
+  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['table'] = 'node';
+  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['default_action'] = 'default';
+
+  $views[$view->name] = $view;
+
+  $view = new view();
+  $view->name = 'test_feed_http_headers_caching';
+  $view->description = '';
+  $view->tag = '';
+  $view->base_table = 'node';
+  $view->core = 7;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE;
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['access']['type'] = 'none';
+  $handler->display->display_options['cache']['type'] = 'time';
+  $handler->display->display_options['cache']['results_lifespan'] = '3600';
+  $handler->display->display_options['cache']['results_lifespan_custom'] = '0';
+  $handler->display->display_options['cache']['output_lifespan'] = '3600';
+  $handler->display->display_options['cache']['output_lifespan_custom'] = '0';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['style_plugin'] = 'default';
+  $handler->display->display_options['row_plugin'] = 'node';
+
+  /* Display: Feed */
+  $handler = $view->new_display('feed', 'Feed', 'feed_1');
+  $handler->display->display_options['pager']['type'] = 'none';
+  $handler->display->display_options['pager']['options']['offset'] = '0';
+  $handler->display->display_options['style_plugin'] = 'rss';
+  $handler->display->display_options['row_plugin'] = 'node_rss';
+  $handler->display->display_options['path'] = 'test_feed_http_headers_caching';
+
+  $views[$view->name] = $view;
+
   return $views;
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_translatable.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_translatable.test
index 515a33d..0cb27e4 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_translatable.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_translatable.test
@@ -1,5 +1,13 @@
 <?php
 
+/**
+ * @file
+ * Definition of ViewsTranslatableTest.
+ */
+
+/**
+ * Tests Views pluggable translations.
+ */
 class ViewsTranslatableTest extends ViewsSqlTest {
   var $strings;
 
@@ -11,7 +19,7 @@ class ViewsTranslatableTest extends ViewsSqlTest {
     );
   }
 
-  /*
+  /**
    * The views plugin definition. Override it if you test provides a plugin.
    */
   public function viewsPlugins() {
@@ -40,7 +48,7 @@ class ViewsTranslatableTest extends ViewsSqlTest {
   }
 
   /**
-   * Test the unpack translation funtionality.
+   * Tests the unpack translation funtionality.
    */
   public function testUnpackTranslatable() {
     $view = $this->view_unpack_translatable();
@@ -74,8 +82,7 @@ class ViewsTranslatableTest extends ViewsSqlTest {
   public function testTranslation() {
     $view = $this->view_unpack_translatable();
     $view->set_display('default');
-    $view->pre_execute();
-    $view->execute();
+    $this->executeView($view);
 
     $expected_strings = array();
     foreach ($this->strings as $string) {
@@ -109,12 +116,15 @@ class ViewsTranslatableTest extends ViewsSqlTest {
         'Offset1' => array('pager', 'expose', 'offset_label'),
         'Master1' => array('title'),
         'title1' => array('title'),
+        'Tag first1' => array('pager', 'tags', 'first'),
+        'Tag prev1' => array('pager', 'tags', 'previous'),
+        'Tag next1' => array('pager', 'tags', 'next'),
+        'Tag last1' => array('pager', 'tags', 'last'),
         'Items per page1' => array('pager', 'expose', 'items_per_page_label'),
         'fieldlabel1' => array('field', 'node', 'nid', 'label'),
         'filterlabel1' => array('filter', 'node', 'nid', 'expose', 'label'),
         '- All -' => array('pager', 'expose', 'items_per_page_options_all_label'),
       );
-
       foreach ($translatables as $translatable) {
         $this->assertEqual($translatable['keys'], $this->string_keys[$translatable['value']]);
       }
@@ -148,6 +158,11 @@ class ViewsTranslatableTest extends ViewsSqlTest {
     $handler->display->display_options['pager']['options']['items_per_page'] = '10';
     $handler->display->display_options['pager']['options']['offset'] = '0';
     $handler->display->display_options['pager']['options']['id'] = '0';
+    $handler->display->display_options['pager']['options']['quantity'] = '9';
+    $handler->display->display_options['pager']['options']['tags']['first'] = 'Tag first1';
+    $handler->display->display_options['pager']['options']['tags']['previous'] = 'Tag prev1';
+    $handler->display->display_options['pager']['options']['tags']['next'] = 'Tag next1';
+    $handler->display->display_options['pager']['options']['tags']['last'] = 'Tag last1';
     $handler->display->display_options['pager']['options']['expose']['items_per_page'] = TRUE;
     $handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Items per page1';
     $handler->display->display_options['pager']['options']['expose']['offset'] = TRUE;
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_ui.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_ui.test
index 6301ac9..8785539 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_ui.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_ui.test
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Tests views UI Wizard.
+ * Tests Views UI Wizard.
  */
 
 /**
@@ -19,6 +19,9 @@ class ViewsUIWizardHelper extends DrupalWebTestCase {
   }
 }
 
+/**
+ * Tests creating views with the wizard and viewing them on the listing page.
+ */
 class ViewsUIWizardBasicTestCase extends ViewsUIWizardHelper {
   public static function getInfo() {
     return array(
@@ -136,7 +139,7 @@ class ViewsUIWizardBasicTestCase extends ViewsUIWizardHelper {
 
     // Check if the export screen works.
     $this->drupalGet('admin/structure/views/view/' . $view3['name'] . '/export');
-    $this->assertRaw('$view = new view;');
+    $this->assertRaw('$view = new view();');
     $this->assertRaw($view3['human_name']);
     $this->assertRaw($view3['description']);
 
@@ -145,6 +148,9 @@ class ViewsUIWizardBasicTestCase extends ViewsUIWizardHelper {
   }
 }
 
+/**
+ * Tests enabling, disabling, and reverting default views via the listing page.
+ */
 class ViewsUIWizardDefaultViewsTestCase extends ViewsUIWizardHelper {
   public static function getInfo() {
     return array(
@@ -155,7 +161,7 @@ class ViewsUIWizardDefaultViewsTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test default views.
+   * Tests default views.
    */
   function testDefaultViews() {
     // Make sure the front page view starts off as disabled (does not appear on
@@ -250,6 +256,9 @@ class ViewsUIWizardDefaultViewsTestCase extends ViewsUIWizardHelper {
   }
 }
 
+/**
+ * Tests the ability of the views wizard to create views filtered by taxonomy.
+ */
 class ViewsUIWizardTaggedWithTestCase extends ViewsUIWizardHelper {
   protected $node_type_with_tags;
   protected $node_type_without_tags;
@@ -319,7 +328,7 @@ class ViewsUIWizardTaggedWithTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test the "tagged with" functionality.
+   * Tests the "tagged with" functionality.
    */
   function testTaggedWith() {
     // In this test we will only create nodes that have an instance of the tag
@@ -383,7 +392,7 @@ class ViewsUIWizardTaggedWithTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test that the "tagged with" form element only shows for node types that support it.
+   * Tests that the "tagged with" form element only shows for node types that support it.
    */
   function testTaggedWithByNodeType() {
     // The tagging field is associated with one of our node types only. So the
@@ -415,6 +424,9 @@ class ViewsUIWizardTaggedWithTestCase extends ViewsUIWizardHelper {
   }
 }
 
+/**
+ * Tests the ability of the views wizard to create views with sorts.
+ */
 class ViewsUIWizardSortingTestCase extends ViewsUIWizardHelper {
   public static function getInfo() {
     return array(
@@ -425,7 +437,7 @@ class ViewsUIWizardSortingTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test the sorting functionality.
+   * Tests the sorting functionality.
    */
   function testSorting() {
     // Create nodes, each with a different creation time so that we can do a
@@ -482,6 +494,9 @@ class ViewsUIWizardSortingTestCase extends ViewsUIWizardHelper {
   }
 }
 
+/**
+ * Tests the ability of the views wizard to specify the number of items per page.
+ */
 class ViewsUIWizardItemsPerPageTestCase extends ViewsUIWizardHelper {
   public static function getInfo() {
     return array(
@@ -492,7 +507,7 @@ class ViewsUIWizardItemsPerPageTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test the number of items per page.
+   * Tests the number of items per page.
    */
   function testItemsPerPage() {
     // Create articles, each with a different creation time so that we can do a
@@ -564,6 +579,9 @@ class ViewsUIWizardItemsPerPageTestCase extends ViewsUIWizardHelper {
   }
 }
 
+/**
+ * Tests the ability of the views wizard to put views in a menu.
+ */
 class ViewsUIWizardMenuTestCase extends ViewsUIWizardHelper {
   public static function getInfo() {
     return array(
@@ -574,7 +592,7 @@ class ViewsUIWizardMenuTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test the menu functionality.
+   * Tests the menu functionality.
    */
   function testMenus() {
     // Create a view with a page display and a menu link in the Main Menu.
@@ -609,6 +627,9 @@ class ViewsUIWizardMenuTestCase extends ViewsUIWizardHelper {
   }
 }
 
+/**
+ * Tests the ability of the views wizard to create views with a jump menu style plugin.
+ */
 class ViewsUIWizardJumpMenuTestCase extends ViewsUIWizardHelper {
   public static function getInfo() {
     return array(
@@ -619,7 +640,7 @@ class ViewsUIWizardJumpMenuTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test the jump menu style plugin.
+   * Tests the jump menu style plugin.
    */
   function testJumpMenus() {
     // We'll run this test for several different base tables that appear in the
@@ -767,6 +788,9 @@ class ViewsUIWizardJumpMenuTestCase extends ViewsUIWizardHelper {
   }
 }
 
+/**
+ * Tests that displays can be correctly overridden via the user interface.
+ */
 class ViewsUIWizardOverrideDisplaysTestCase extends ViewsUIWizardHelper {
   public static function getInfo() {
     return array(
@@ -777,7 +801,7 @@ class ViewsUIWizardOverrideDisplaysTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test that displays can be overridden via the UI.
+   * Tests that displays can be overridden via the UI.
    */
   function testOverrideDisplays() {
     // Create a basic view that shows all content, with a page and a block
@@ -838,7 +862,7 @@ class ViewsUIWizardOverrideDisplaysTestCase extends ViewsUIWizardHelper {
   }
 
   /**
-   * Test that the wizard correctly sets up default and overridden displays.
+   * Tests that the wizard correctly sets up default and overridden displays.
    */
   function testWizardMixedDefaultOverriddenDisplays() {
     // Create a basic view with a page, block, and feed. Give the page and feed
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_upgrade.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_upgrade.test
index 0e8626b..3f453db 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_upgrade.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_upgrade.test
@@ -2,11 +2,14 @@
 
 /**
  * @file
+ * Definition of ViewsUpgradeTestCase.
+ */
+
+/**
  * Try to test the upgrade path of all conversions.
  *
  * You can find all conversions by searching for "moved to".
  */
-
 class ViewsUpgradeTestCase extends ViewsSqlTest {
   public static function getInfo() {
     return array(
@@ -48,7 +51,7 @@ class ViewsUpgradeTestCase extends ViewsSqlTest {
   }
 
   /**
-   * Test the moved to parameter in general.
+   * Tests the moved to parameter in general.
    */
   public function testMovedTo() {
     // Test moving on field lavel.
@@ -87,7 +90,7 @@ class ViewsUpgradeTestCase extends ViewsSqlTest {
   }
 
   /**
-   * Test a import via ui.
+   * Tests a import via ui.
    *
    * To ensure the general functionality, the recent comments view from drupal6
    * is used.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_view.test b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_view.test
index f57961e..d268a0c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_view.test
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/tests/views_view.test
@@ -1,7 +1,12 @@
 <?php
 
 /**
- * Test the view class.
+ * @file
+ * Definition of ViewsViewTest.
+ */
+
+/**
+ * Views class tests.
  */
 class ViewsViewTest extends ViewsSqlTest {
   public static function getInfo() {
@@ -13,7 +18,7 @@ class ViewsViewTest extends ViewsSqlTest {
   }
 
   /**
-   * Test the deconstructor to be sure that every kind of heavy objects are removed.
+   * Tests the deconstructor to be sure that every kind of heavy objects are removed.
    */
   function testDestroy() {
     $view = $this->view_test_destroy();
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/theme.inc b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/theme.inc
index eaf8d2d..52598d5 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/theme.inc
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/theme.inc
@@ -1,10 +1,8 @@
 <?php
 
 /**
- * @file theme.inc
- *
- * An array of preprocessors to fill variables for templates and helper
- * functions to make theming easier.
+ * @file
+ * Preprocessors and helper functions to make theming easier.
  */
 
 /**
@@ -55,6 +53,8 @@ function template_preprocess_views_view(&$vars) {
   $vars['display_id'] = $view->current_display;
 
   // Basic classes
+  $vars['css_class'] = '';
+
   $vars['classes_array'] = array();
   $vars['classes_array'][] = 'view';
   $vars['classes_array'][] = 'view-' . drupal_clean_css_identifier($vars['name']);
@@ -72,7 +72,7 @@ function template_preprocess_views_view(&$vars) {
   $vars['header'] = $view->display_handler->render_area('header', $empty);
   $vars['footer'] = $view->display_handler->render_area('footer', $empty);
   if ($empty) {
-    $vars['empty'] = $view->display_handler->render_area('empty');
+    $vars['empty'] = $view->display_handler->render_area('empty', $empty);
   }
 
   $vars['exposed']    = !empty($view->exposed_widgets) ? $view->exposed_widgets : '';
@@ -113,7 +113,7 @@ function template_preprocess_views_view(&$vars) {
     // we set up a hash with the current time, $dom_id, to issue a "unique" identifier for
     // each view. This identifier is written to both Drupal.settings and the DIV
     // wrapper.
-    $vars['dom_id'] = !empty($view->dom_id) ? $view->dom_id : md5($view->name . REQUEST_TIME . rand());
+    $vars['dom_id'] = $view->dom_id;
     $vars['classes_array'][] = 'view-dom-id-' . $vars['dom_id'];
   }
 
@@ -186,7 +186,7 @@ function template_preprocess_views_view_fields(&$vars) {
   foreach ($view->field as $id => $field) {
     // render this even if set to exclude so it can be used elsewhere.
     $field_output = $view->style_plugin->get_field($view->row_index, $id);
-    $empty = $field_output !== 0 && empty($field_output);
+    $empty = $field->is_value_empty($field_output, $field->options['empty_zero']);
     if (empty($field->options['exclude']) && (!$empty || (empty($field->options['hide_empty']) && empty($vars['options']['hide_empty'])))) {
       $object = new stdClass();
       $object->handler = &$view->field[$id];
@@ -470,6 +470,9 @@ function template_preprocess_views_view_table(&$vars) {
   $options  = $view->style_plugin->options;
   $handler  = $view->style_plugin;
 
+  $default_row_class = isset($options['default_row_class']) ? $options['default_row_class'] : TRUE;
+  $row_class_special = isset($options['row_class_special']) ? $options['row_class_special'] : TRUE;
+
   $fields   = &$view->field;
   $columns  = $handler->sanitize_columns($options['columns'], $fields);
 
@@ -533,6 +536,10 @@ function template_preprocess_views_view_table(&$vars) {
         }
         $vars['header_classes'][$field] .= $class;
       }
+      // Add a CSS align class to each field if one was set
+      if (!empty($options['info'][$field]['align'])) {
+        $vars['header_classes'][$field] .= ' ' . drupal_clean_css_identifier($options['info'][$field]['align']);
+      }
 
       // Add a header label wrapper if one was selected.
       if ($vars['header'][$field]) {
@@ -598,24 +605,34 @@ function template_preprocess_views_view_table(&$vars) {
         $empty &= empty($columns[$column]);
       }
       if ($empty) {
-        foreach ($vars['rows'] as $num => &$columns) {
-          unset($columns[$column]);
+        foreach ($vars['rows'] as $num => &$column_items) {
+          unset($column_items[$column]);
           unset($vars['header'][$column]);
         }
       }
     }
   }
 
+  // Hide table header if all labels are empty.
+  if (!array_filter($vars['header'])) {
+    $vars['header'] = array();
+  }
+
   $count = 0;
   foreach ($vars['rows'] as $num => $row) {
-    $vars['row_classes'][$num][] = ($count++ % 2 == 0) ? 'odd' : 'even';
+    $vars['row_classes'][$num] = array();
+    if ($row_class_special) {
+      $vars['row_classes'][$num][] = ($count++ % 2 == 0) ? 'odd' : 'even';
+    }
     if ($row_class = $handler->get_row_class($num)) {
       $vars['row_classes'][$num][] = $row_class;
     }
   }
 
-  $vars['row_classes'][0][] = 'views-row-first';
-  $vars['row_classes'][count($vars['row_classes']) - 1][] = 'views-row-last';
+  if ($row_class_special) {
+    $vars['row_classes'][0][] = 'views-row-first';
+    $vars['row_classes'][count($vars['row_classes']) - 1][] = 'views-row-last';
+  }
 
   $vars['classes_array'] = array('views-table');
   if (empty($vars['rows']) && !empty($options['empty_table'])) {
@@ -645,6 +662,8 @@ function template_preprocess_views_view_grid(&$vars) {
   $result   = $view->result;
   $options  = $view->style_plugin->options;
   $handler  = $view->style_plugin;
+  $default_row_class = isset($options['default_row_class']) ? $options['default_row_class'] : TRUE;
+  $row_class_special = isset($options['row_class_special']) ? $options['row_class_special'] : TRUE;
 
   $columns  = $options['columns'];
 
@@ -670,7 +689,7 @@ function template_preprocess_views_view_grid(&$vars) {
     }
     if ($row) {
       // Fill up the last line only if it's configured, but this is default.
-      if (!empty($handler->options['fill_single_line']) || count($rows)) {
+      if (!empty($handler->options['fill_single_line']) && count($rows)) {
         for ($i = 0; $i < ($columns - $col_count); $i++) {
           $row[] = '';
         }
@@ -710,22 +729,30 @@ function template_preprocess_views_view_grid(&$vars) {
   // Apply the row classes
   foreach ($rows as $row_number => $row) {
     $row_classes = array();
-    $row_classes[] =  'row-' . ($row_number + 1);
-    if ($row_number == 0) {
-      $row_classes[] =  'row-first';
+    if ($default_row_class) {
+      $row_classes[] =  'row-' . ($row_number + 1);
     }
-    if (count($rows) == ($row_number + 1)) {
-      $row_classes[] =  'row-last';
+    if ($row_class_special) {
+      if ($row_number == 0) {
+        $row_classes[] =  'row-first';
+      }
+      if (count($rows) == ($row_number + 1)) {
+        $row_classes[] =  'row-last';
+      }
     }
     $vars['row_classes'][$row_number] = implode(' ', $row_classes);
     foreach ($rows[$row_number] as $column_number => $item) {
       $column_classes = array();
-      $column_classes[] = 'col-'. ($column_number + 1);
-      if ($column_number == 0) {
-        $column_classes[] = 'col-first';
+      if ($default_row_class) {
+        $column_classes[] = 'col-'. ($column_number + 1);
       }
-      elseif (count($rows[$row_number]) == ($column_number + 1)) {
-        $column_classes[] = 'col-last';
+      if ($row_class_special) {
+        if ($column_number == 0) {
+          $column_classes[] = 'col-first';
+        }
+        elseif (count($rows[$row_number]) == ($column_number + 1)) {
+          $column_classes[] = 'col-last';
+        }
       }
       if (isset($row_indexes[$row_number][$column_number]) && $column_class = $view->style_plugin->get_row_class($row_indexes[$row_number][$column_number])) {
         $column_classes[] = $column_class;
@@ -746,22 +773,30 @@ function template_preprocess_views_view_grid(&$vars) {
 function template_preprocess_views_view_unformatted(&$vars) {
   $view = $vars['view'];
   $rows = $vars['rows'];
+  $style = $view->style_plugin;
+  $options = $style->options;
 
   $vars['classes_array'] = array();
   $vars['classes'] = array();
+  $default_row_class = isset($options['default_row_class']) ? $options['default_row_class'] : FALSE;
+  $row_class_special = isset($options['row_class_special']) ? $options['row_class_special'] : FALSE;
   // Set up striping values.
   $count = 0;
   $max = count($rows);
   foreach ($rows as $id => $row) {
     $count++;
-    $vars['classes'][$id][] = 'views-row';
-    $vars['classes'][$id][] = 'views-row-' . $count;
-    $vars['classes'][$id][] = 'views-row-' . ($count % 2 ? 'odd' : 'even');
-    if ($count == 1) {
-      $vars['classes'][$id][] = 'views-row-first';
+    if ($default_row_class) {
+      $vars['classes'][$id][] = 'views-row';
+      $vars['classes'][$id][] = 'views-row-' . $count;
     }
-    if ($count == $max) {
-      $vars['classes'][$id][] = 'views-row-last';
+    if ($row_class_special) {
+      $vars['classes'][$id][] = 'views-row-' . ($count % 2 ? 'odd' : 'even');
+      if ($count == 1) {
+        $vars['classes'][$id][] = 'views-row-first';
+      }
+      if ($count == $max) {
+        $vars['classes'][$id][] = 'views-row-last';
+      }
     }
 
     if ($row_class = $view->style_plugin->get_row_class($id)) {
@@ -769,7 +804,7 @@ function template_preprocess_views_view_unformatted(&$vars) {
     }
 
     // Flatten the classes to a string for each row for the template file.
-    $vars['classes_array'][$id] = implode(' ', $vars['classes'][$id]);
+    $vars['classes_array'][$id] = isset($vars['classes'][$id]) ? implode(' ', $vars['classes'][$id]) : '';
   }
 }
 
@@ -818,7 +853,7 @@ function template_preprocess_views_view_rss(&$vars) {
   // The RSS 2.0 "spec" doesn't indicate HTML can be used in the description.
   // We strip all HTML tags, but need to prevent double encoding from properly
   // escaped source data (such as &amp becoming &amp;).
-  $vars['description'] = check_plain(decode_entities(strip_tags($options['description'])));
+  $vars['description'] = check_plain(decode_entities(strip_tags($style->get_description())));
 
   if ($view->display_handler->get_option('sitename_title')) {
     $title = variable_get('site_name', 'Drupal');
@@ -901,16 +936,23 @@ function template_preprocess_views_exposed_form(&$vars) {
     }
     $widget = new stdClass;
     // set up defaults so that there's always something there.
-    $widget->label = $widget->operator = $widget->widget = NULL;
+    $widget->label = $widget->operator = $widget->widget = $widget->description = NULL;
 
     $widget->id = isset($form[$info['value']]['#id']) ? $form[$info['value']]['#id'] : '';
+
     if (!empty($info['label'])) {
-      $widget->label = $info['label'];
+      $widget->label = check_plain($info['label']);
     }
     if (!empty($info['operator'])) {
       $widget->operator = drupal_render($form[$info['operator']]);
     }
+
     $widget->widget = drupal_render($form[$info['value']]);
+
+    if (!empty($info['description'])) {
+      $widget->description = check_plain($info['description']);
+    }
+
     $vars['widgets'][$id] = $widget;
   }
 
@@ -1053,7 +1095,7 @@ function theme_views_container($variables) {
 }
 
 /**
- * @defgroup views_templates Views' template files
+ * @defgroup views_templates Views template files
  * @{
  * All views templates can be overridden with a variety of names, using
  * the view, the display ID of the view, the display type of the view,
@@ -1095,6 +1137,6 @@ function theme_views_container($variables) {
  * Important! When adding a new template to your theme, be sure to flush the
  * theme registry cache!
  *
- * @see _views_theme_functions
+ * @see _views_theme_functions()
  * @}
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-exposed-form.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-exposed-form.tpl.php
index 1112a7c..bdd570c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-exposed-form.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-exposed-form.tpl.php
@@ -1,7 +1,7 @@
 <?php
+
 /**
- * @file views-exposed-form.tpl.php
- *
+ * @file
  * This template handles the layout of the views exposed filter form.
  *
  * Variables available:
@@ -43,6 +43,11 @@
         <div class="views-widget">
           <?php print $widget->widget; ?>
         </div>
+        <?php if (!empty($widget->description)): ?>
+          <div class="description">
+            <?php print $widget->description; ?>
+          </div>
+        <?php endif; ?>
       </div>
     <?php endforeach; ?>
     <?php if (!empty($sort_by)): ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-more.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-more.tpl.php
index 43b5221..0b7080b 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-more.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-more.tpl.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * @file views-more.tpl.php
- * Theme the more link
+ * @file
+ * Theme the more link.
  *
  * - $view: The view object.
  * - $more_url: the url for the more link.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-bucket.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-bucket.tpl.php
index 6fa850e..6d51a1d 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-bucket.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-bucket.tpl.php
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @file views-ui-display-tab-bucket.tpl.php
+ * @file
  * Template for each "box" on the display query edit screen.
  */
 ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-setting.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-setting.tpl.php
index dd5c985..3d13e12 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-setting.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-display-tab-setting.tpl.php
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @file views-ui-display-tab-setting.tpl.php
+ * @file
  * Template for each row inside the "boxes" on the display query edit screen.
  */
 ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-item.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-item.tpl.php
index a82aca9..bf90ec1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-item.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-item.tpl.php
@@ -1,7 +1,7 @@
 <?php
+
 /**
- * @file views-ui-edit-item.tpl.php
- *
+ * @file
  * This template handles the printing of fields/filters/sort criteria/arguments or relationships.
  */
 ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-view.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-view.tpl.php
index 592ce58..5c3732c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-view.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-ui-edit-view.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-ui-edit-view.tpl.php
+ * @file
  * Template for the primary view editing window.
  */
 ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-field.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-field.tpl.php
index 6bd6656..91d92ee 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-field.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-field.tpl.php
@@ -1,22 +1,25 @@
 <?php
- /**
-  * This template is used to print a single field in a view. It is not
-  * actually used in default Views, as this is registered as a theme
-  * function which has better performance. For single overrides, the
-  * template is perfectly okay.
-  *
-  * Variables available:
-  * - $view: The view object
-  * - $field: The field handler object that can process the input
-  * - $row: The raw SQL result that can be used
-  * - $output: The processed output that will normally be used.
-  *
-  * When fetching output from the $row, this construct should be used:
-  * $data = $row->{$field->field_alias}
-  *
-  * The above will guarantee that you'll always get the correct data,
-  * regardless of any changes in the aliasing that might happen if
-  * the view is modified.
-  */
+
+/**
+ * @file
+ * This template is used to print a single field in a view.
+ *
+ * It is not actually used in default Views, as this is registered as a theme
+ * function which has better performance. For single overrides, the template is
+ * perfectly okay.
+ *
+ * Variables available:
+ * - $view: The view object
+ * - $field: The field handler object that can process the input
+ * - $row: The raw SQL result that can be used
+ * - $output: The processed output that will normally be used.
+ *
+ * When fetching output from the $row, this construct should be used:
+ * $data = $row->{$field->field_alias}
+ *
+ * The above will guarantee that you'll always get the correct data,
+ * regardless of any changes in the aliasing that might happen if
+ * the view is modified.
+ */
 ?>
 <?php print $output; ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-fields.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-fields.tpl.php
index 6d431b4..ae3a4c6 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-fields.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-fields.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-fields.tpl.php
+ * @file
  * Default simple view template to all the fields as a row.
  *
  * - $view: The view in use.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grid.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grid.tpl.php
index b5dbfac..cd8d39e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grid.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grid.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-grid.tpl.php
+ * @file
  * Default simple view template to display a rows in a grid.
  *
  * - $rows contains a nested array of rows. Each row contains an array of
@@ -15,9 +16,9 @@
 <table class="<?php print $class; ?>"<?php print $attributes; ?>>
   <tbody>
     <?php foreach ($rows as $row_number => $columns): ?>
-      <tr class="<?php print $row_classes[$row_number]; ?>">
+      <tr <?php if ($row_classes[$row_number]) { print 'class="' . $row_classes[$row_number] .'"';  } ?>>
         <?php foreach ($columns as $column_number => $item): ?>
-          <td class="<?php print $column_classes[$row_number][$column_number]; ?>">
+          <td <?php if ($column_classes[$row_number][$column_number]) { print 'class="' . $column_classes[$row_number][$column_number] .'"';  } ?>>
             <?php print $item; ?>
           </td>
         <?php endforeach; ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grouping.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grouping.tpl.php
index caffc5f..ebf7bc2 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grouping.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-grouping.tpl.php
@@ -1,18 +1,21 @@
 <?php
- /**
-  * This template is used to print a single grouping in a view. It is not
-  * actually used in default Views, as this is registered as a theme
-  * function which has better performance. For single overrides, the
-  * template is perfectly okay.
-  *
-  * Variables available:
-  * - $view: The view object
-  * - $grouping: The grouping instruction.
-  * - $grouping_level: Integer indicating the hierarchical level of the grouping.
-  * - $rows: The rows contained in this grouping.
-  * - $title: The title of this grouping.
-  * - $content: The processed content output that will normally be used.
-  */
+
+/**
+ * @file
+ * This template is used to print a single grouping in a view.
+ *
+ * It is not actually used in default Views, as this is registered as a theme
+ * function which has better performance. For single overrides, the template is
+ * perfectly okay.
+ *
+ * Variables available:
+ * - $view: The view object
+ * - $grouping: The grouping instruction.
+ * - $grouping_level: Integer indicating the hierarchical level of the grouping.
+ * - $rows: The rows contained in this grouping.
+ * - $title: The title of this grouping.
+ * - $content: The processed content output that will normally be used.
+ */
 ?>
 <div class="view-grouping">
   <div class="view-grouping-header"><?php print $title; ?></div>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-list.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-list.tpl.php
index b1d66f4..601279a 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-list.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-list.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-list.tpl.php
+ * @file
  * Default simple view template to display a list of rows.
  *
  * - $title : The title of this group of rows.  May be empty.
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-comment.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-comment.tpl.php
index 627f5f7..7fe2e81 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-comment.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-comment.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-row-comment.tpl.php
+ * @file
  * Default simple view template to display a single comment.
  *
  * Rather than doing anything with this particular template, it is more
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-rss.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-rss.tpl.php
index 03c6acf..01e0696 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-rss.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-row-rss.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-row-rss.tpl.php
+ * @file
  * Default view template to display a item in an RSS feed.
  *
  * @ingroup views_templates
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-rss.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-rss.tpl.php
index 10800b2..18ca73e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-rss.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-rss.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-rss.tpl.php
+ * @file
  * Default template for feed displays that use the RSS style.
  *
  * @ingroup views_templates
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary-unformatted.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary-unformatted.tpl.php
index 632d334..306d76f 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary-unformatted.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary-unformatted.tpl.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * @file views-view-summary-unformatted.tpl.php
- * Default simple view template to display a group of summary lines
+ * @file
+ * Default simple view template to display a group of summary lines.
  *
  * This wraps items in a span if set to inline, or a div if not.
  *
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary.tpl.php
index 3ee25bb..22969eb 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-summary.tpl.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * @file views-view-summary.tpl.php
- * Default simple view template to display a list of summary lines
+ * @file
+ * Default simple view template to display a list of summary lines.
  *
  * @ingroup views_templates
  */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-table.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-table.tpl.php
index 28138db..a9abcd3 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-table.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-table.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-table.tpl.php
+ * @file
  * Template to display a view as a table.
  *
  * - $title : The title of this group of rows.  May be empty.
@@ -34,7 +35,7 @@
   <?php endif; ?>
   <tbody>
     <?php foreach ($rows as $row_count => $row): ?>
-      <tr class="<?php print implode(' ', $row_classes[$row_count]); ?>">
+      <tr <?php if ($row_classes[$row_count]) { print 'class="' . implode(' ', $row_classes[$row_count]) .'"';  } ?>>
         <?php foreach ($row as $field => $content): ?>
           <td <?php if ($field_classes[$field][$row_count]) { print 'class="'. $field_classes[$field][$row_count] . '" '; } ?><?php print drupal_attributes($field_attributes[$field][$row_count]); ?>>
             <?php print $content; ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-unformatted.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-unformatted.tpl.php
index 89b35aa..4f4558e 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-unformatted.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view-unformatted.tpl.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views-view-unformatted.tpl.php
+ * @file
  * Default simple view template to display a list of rows.
  *
  * @ingroup views_templates
@@ -10,7 +11,7 @@
   <h3><?php print $title; ?></h3>
 <?php endif; ?>
 <?php foreach ($rows as $id => $row): ?>
-  <div class="<?php print $classes_array[$id]; ?>">
+  <div <?php if ($classes_array[$id]) { print 'class="' . $classes_array[$id] .'"';  } ?>>
     <?php print $row; ?>
   </div>
 <?php endforeach; ?>
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view.tpl.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view.tpl.php
index 94393ee..579cf12 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view.tpl.php
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/theme/views-view.tpl.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * @file views-view.tpl.php
- * Main view template
+ * @file
+ * Main view template.
  *
  * Variables available:
  * - $classes_array: An array of classes determined in
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views.api.php b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.api.php
new file mode 100644
index 0000000..f41c565
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.api.php
@@ -0,0 +1,1107 @@
+<?php
+
+/**
+ * @file
+ * Describe hooks provided by the Views module.
+ */
+
+/**
+ * @mainpage Views 3 API Manual
+ *
+ * Much of this information is actually stored in the advanced help; please
+ * check the API topic. This help will primarily be aimed at documenting
+ * classes and function calls.
+ *
+ * Topics:
+ * - @link views_lifetime The life of a view @endlink
+ * - @link views_hooks Views hooks @endlink
+ * - @link views_handlers About Views handlers @endlink
+ * - @link views_plugins About Views plugins @endlink
+ * - @link views_templates Views template files @endlink
+ * - @link views_module_handlers Views module handlers @endlink
+ */
+
+/**
+ * @defgroup views_lifetime The life of a view
+ * @{
+ * This page explains the basic cycle of a view and what processes happen.
+ *
+ * @todo.
+ * @}
+ */
+
+/**
+ * @defgroup views_handlers About Views handlers
+ * @{
+ * In Views, a handler is an object that is part of the view and is part of the
+ * query building flow.
+ *
+ * Handlers are objects; much of the time, the base handlers will work, but
+ * often you'll need to override the handler to achieve something meaningful.
+ * One typical handler override will be views_handler_filter_operator_in which
+ * allows you to have a filter select from a list of options; you'll need to
+ * override this to provide your list.
+ *
+ * Handlers have two distinct code flows; the UI flow and the view building
+ * flow.
+ *
+ * For the query flow:
+ * - handler->construct()
+ *   - Create the initial handler; at this time it is not yet attached to a
+ *     view. It is here that you can set basic defaults if needed, but there
+ *     will be no knowledge of the environment yet.
+ * - handler->set_definition()
+ *   - Set the data from hook_views_data() relevant to the handler.
+ * - handler->init()
+ *   - Attach the handler to a view, and usually provides the options from the
+ *     display.
+ * - handler->pre_query()
+ *   - Run prior to the query() stage to do early processing.
+ * - handler->query()
+ *   - Do the bulk of the work this handler needs to do to add itself to the
+ *     query.
+ *
+ * Fields, being the only handlers concerned with output, also have an extended
+ * piece of the flow:
+ *
+ * - handler->pre_render(&$values)
+ *   - Called prior to the actual rendering, this allows handlers to query for
+ *     extra data; the entire resultset is available here, and this is where
+ *     items that have "multiple values" per record can do their extra query for
+ *     all of the records available. There are several examples of this at work
+ *     in the code, see for example views_handler_field_user_roles.
+ * - handler->render()
+ *   - This does the actual work of rendering the field.
+ *
+ * Most handlers are just extensions of existing classes with a few tweaks that
+ * are specific to the field in question. For example,
+ * views_handler_filter_in_operator provides a simple mechanism to set a
+ * multiple-value list for setting filter values. Below,
+ * views_handler_filter_node_type overrides the list options, but inherits
+ * everything else.
+ *
+ * @code
+ * class views_handler_filter_node_type extends views_handler_filter_in_operator {
+ *   function get_value_options() {
+ *     if (!isset($this->value_options)) {
+ *       $this->value_title = t('Node type');
+ *       $types = node_get_types();
+ *       foreach ($types as $type => $info) {
+ *         $options[$type] = $info->name;
+ *       }
+ *       $this->value_options = $options;
+ *     }
+ *   }
+ * }
+ * @endcode
+ *
+ * Handlers are stored in their own files and loaded on demand. Like all other
+ * module files, they must first be registered through the module's info file.
+ * For example:
+ *
+ * @code
+ * name = Example module
+ * description = "Gives an example of a module."
+ * core = 7.x
+ * files[] = example.module
+ * files[] = example.install
+ *
+ * ; Views handlers
+ * files[] = includes/views/handlers/example_handler_argument_string.inc
+ * @endcode
+ *
+ * The best place to learn more about handlers and how they work is to explore
+ * @link views_handlers Views' handlers @endlink and use existing handlers as a
+ * guide and a model. Understanding how views_handler and its child classes work
+ * is handy but you can do a lot just following these models. You can also
+ * explore the views module directory, particularly node.views.inc.
+ *
+ * Please note that while all handler names in views are prefixed with views_,
+ * you should use your own module's name to prefix your handler names in order
+ * to ensure namespace safety. Note that the basic pattern for handler naming
+ * goes like this:
+ *
+ * [module]_handler_[type]_[tablename]_[fieldname].
+ *
+ * Sometimes table and fieldname are not appropriate, but something that
+ * resembles what the table/field would be can be used.
+ *
+ * See also:
+ * - @link views_field_handlers Views field handlers @endlink
+ * - @link views_sort_handlers Views sort handlers @endlink
+ * - @link views_filter_handlers Views filter handlers @endlink
+ * - @link views_argument_handlers Views argument handlers @endlink
+ * - @link views_relationship_handlers Views relationship handlers @endlink
+ * - @link views_area_handlers Views area handlers @endlink
+ * @}
+ */
+
+/**
+ * @defgroup views_plugins About Views plugins
+ *
+ * In Views, a plugin is a bit like a handler, but plugins are not directly
+ * responsible for building the query. Instead, they are objects that are used
+ * to display the view or make other modifications.
+ *
+ * There are 10 types of plugins in Views:
+ * - Display: Display plugins are responsible for controlling *where* a view
+ *   lives; that is, how they are being exposed to other parts of Drupal. Page
+ *   and block are the most common displays, as well as the ubiquitous 'master'
+ *   (or 'default') display.
+ * - Style: Style plugins control how a view is displayed. For the most part
+ *   they are object wrappers around theme templates. Styles could for example
+ *   be HTML lists or tables.
+ * - Row style: Row styles handle each individual record from the main view
+ *   table. The two included by default render the entire entity (nodes only),
+ *   or selected fields.
+ * - Argument default: Argument default plugins allow pluggable ways of
+ *   providing default values for contextual filters (previously 'arguments').
+ *   This is useful for blocks and other display types lacking a natural
+ *   argument input. Examples are plugins to extract node and user IDs from the
+ *   URL.
+ * - Argument validator: Validator plugins can ensure arguments are valid, and
+ *   even do transformations on the arguments. They can also provide replacement
+ *   patterns for the view title. For example, the 'content' validator
+ *   verifies verifies that the argument value corresponds to a node, loads
+ *   that node and provides the node title as a replacement pattern.
+ * - Access: Access plugins are responsible for controlling access to the view.
+ *   Views includes plugins for checking user roles and individual permissions.
+ * - Query: Query plugins generate and execute a query, so they can be seen as
+ *   a data backend. The default implementation is using SQL. There are
+ *   contributed modules reading data from other sources, see for example the
+ *   Views XML Backend module.
+ * - Cache: Cache plugins control the storage and loading of caches. Currently
+ *   they can do both result and render caching, but maybe one day cache the
+ *   generated query.
+ * - Pager plugins: Pager plugins take care of everything regarding pagers.
+ *   From getting and setting the total amount of items to render the pager and
+ *   setting the global pager arrays.
+ * - Exposed form plugins: Exposed form plugins are responsible for building,
+ *   rendering and controlling exposed forms. They can expose new parts of the
+ *   view to the user and more.
+ * - Localization plugins: Localization plugins take care how the view options
+ *   are translated. There are example implementations for t(), 'no
+ *   translation' and i18n.
+ * - Display extenders: Display extender plugins allow scaling of views options
+ *   horizontally. This means that you can add options and do stuff on all
+ *   views displays. One theoretical example is metatags for views.
+ *
+ * Plugins are registered by implementing hook_views_plugins() in your
+ * modulename.views.inc file and returning an array of data.
+ * For examples please look at views_views_plugins() in
+ * views/includes/plugins.inc as it has examples for all of them.
+ *
+ * Similar to handlers, make sure that you add your plugin files to the
+ * module.info file.
+ *
+ * The array defining plugins will look something like this:
+ * @code
+ * return array(
+ *   'display' => array(
+ *     // ... list of display plugins,
+ *    ),
+ *   'style' => array(
+ *     // ... list of style plugins,
+ *    ),
+ *   'row' => array(
+ *     // ... list of row style plugins,
+ *    ),
+ *   'argument default' => array(
+ *     // ... list of argument default plugins,
+ *    ),
+ *   'argument validator' => array(
+ *     // ... list of argument validator plugins,
+ *    ),
+ *    'access' => array(
+ *     // ... list of access plugins,
+ *    ),
+ *    'query' => array(
+ *      // ... list of query plugins,
+ *     ),,
+ *    'cache' => array(
+ *      // ... list of cache plugins,
+ *     ),,
+ *    'pager' => array(
+ *      // ... list of pager plugins,
+ *     ),,
+ *    'exposed_form' => array(
+ *      // ... list of exposed_form plugins,
+ *     ),,
+ *    'localization' => array(
+ *      // ... list of localization plugins,
+ *     ),
+ *    'display_extender' => array(
+ *      // ... list of display extender plugins,
+ *     ),
+ * );
+ * @endcode
+ *
+ * Each plugin will be registered with an identifier for the plugin, plus a
+ * fairly lengthy list of items that can define how and where the plugin is
+ * used. Here is an example of a row style plugin from Views core:
+ * @code
+ *     'node' => array(
+ *       'title' => t('Node'),
+ *       'help' => t('Display the node with standard node view.'),
+ *       'handler' => 'views_plugin_row_node_view',
+ *       'path' => drupal_get_path('module', 'views') . '/modules/node', // not necessary for most modules
+ *       'theme' => 'views_view_row_node',
+ *       'base' => array('node'), // only works with 'node' as base.
+ *       'uses options' => TRUE,
+ *       'type' => 'normal',
+ *     ),
+ * @endcode
+ *
+ * Of particular interest is the *path* directive, which works a little
+ * differently from handler registration; each plugin must define its own path,
+ * rather than relying on a global info for the paths. For example:
+ * @code
+ *    'feed' => array(
+ *      'title' => t('Feed'),
+ *      'help' => t('Display the view as a feed, such as an RSS feed.'),
+ *      'handler' => 'views_plugin_display_feed',
+ *      'uses hook menu' => TRUE,
+ *      'use ajax' => FALSE,
+ *      'use pager' => FALSE,
+ *      'accept attachments' => FALSE,
+ *      'admin' => t('Feed'),
+ *      'help topic' => 'display-feed',
+ *     ),
+ * @endcode
+ *
+ * Please be sure to prefix your plugin identifiers with your module name to
+ * ensure namespace safety; after all, two different modules could try to
+ * implement the 'grid2' plugin, and that would cause one plugin to completely
+ * fail.
+ *
+ * @todo Finish this document.
+ *
+ * See also:
+ * - @link views_display_plugins Views display plugins @endlink
+ * - @link views_style_plugins Views style plugins @endlink
+ * - @link views_row_plugins Views row plugins @endlink
+ */
+
+/**
+ * @defgroup views_hooks Views hooks
+ * @{
+ * Hooks that can be implemented by other modules in order to implement the
+ * Views API.
+ */
+
+/**
+ * Describes data tables (or the equivalent) to Views.
+ *
+ * This hook should be placed in MODULENAME.views.inc and it will be
+ * auto-loaded. MODULENAME.views.inc must be in the directory specified by the
+ * 'path' key returned by MODULENAME_views_api(), or the same directory as the
+ * .module file, if 'path' is unspecified.
+ *
+ * @return
+ *   An associative array describing the data structure. Primary key is the
+ *   name used internally by Views for the table(s) – usually the actual table
+ *   name. The values for the key entries are described in detail below.
+ */
+function hook_views_data() {
+  // This example describes how to write hook_views_data() for the following
+  // table:
+  //
+  // CREATE TABLE example_table (
+  //   nid INT(11) NOT NULL         COMMENT 'Primary key; refers to {node}.nid.',
+  //   plain_text_field VARCHAR(32) COMMENT 'Just a plain text field.',
+  //   numeric_field INT(11)        COMMENT 'Just a numeric field.',
+  //   boolean_field INT(1)         COMMENT 'Just an on/off field.',
+  //   timestamp_field INT(8)       COMMENT 'Just a timestamp field.',
+  //   PRIMARY KEY(nid)
+  // );
+
+  // First, the entry $data['example_table']['table'] describes properties of
+  // the actual table – not its content.
+
+  // The 'group' index will be used as a prefix in the UI for any of this
+  // table's fields, sort criteria, etc. so it's easy to tell where they came
+  // from.
+  $data['example_table']['table']['group'] = t('Example table');
+
+  // Define this as a base table – a table that can be described in itself by
+  // views (and not just being brought in as a relationship). In reality this
+  // is not very useful for this table, as it isn't really a distinct object of
+  // its own, but it makes a good example.
+  $data['example_table']['table']['base'] = array(
+    'field' => 'nid', // This is the identifier field for the view.
+    'title' => t('Example table'),
+    'help' => t('Example table contains example content and can be related to nodes.'),
+    'weight' => -10,
+  );
+
+  // This table references the {node} table. The declaration below creates an
+  // 'implicit' relationship to the node table, so that when 'node' is the base
+  // table, the fields are automatically available.
+  $data['example_table']['table']['join'] = array(
+    // Index this array by the table name to which this table refers.
+    // 'left_field' is the primary key in the referenced table.
+    // 'field' is the foreign key in this table.
+    'node' => array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    ),
+  );
+
+  // Next, describe each of the individual fields in this table to Views. This
+  // is done by describing $data['example_table']['FIELD_NAME']. This part of
+  // the array may then have further entries:
+  //   - title: The label for the table field, as presented in Views.
+  //   - help: The description text for the table field.
+  //   - relationship: A description of any relationship handler for the table
+  //     field.
+  //   - field: A description of any field handler for the table field.
+  //   - sort: A description of any sort handler for the table field.
+  //   - filter: A description of any filter handler for the table field.
+  //   - argument: A description of any argument handler for the table field.
+  //   - area: A description of any handler for adding content to header,
+  //     footer or as no result behaviour.
+  //
+  // The handler descriptions are described with examples below.
+
+  // Node ID table field.
+  $data['example_table']['nid'] = array(
+    'title' => t('Example content'),
+    'help' => t('Some example content that references a node.'),
+    // Define a relationship to the {node} table, so example_table views can
+    // add a relationship to nodes. If you want to define a relationship the
+    // other direction, use hook_views_data_alter(), or use the 'implicit' join
+    // method described above.
+    'relationship' => array(
+      'base' => 'node', // The name of the table to join with.
+      'base field' => 'nid', // The name of the field on the joined table.
+      // 'field' => 'nid' -- see hook_views_data_alter(); not needed here.
+      'handler' => 'views_handler_relationship',
+      'label' => t('Default label for the relationship'),
+      'title' => t('Title shown when adding the relationship'),
+      'help' => t('More information on this relationship'),
+    ),
+  );
+
+  // Example plain text field.
+  $data['example_table']['plain_text_field'] = array(
+    'title' => t('Plain text field'),
+    'help' => t('Just a plain text field.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE, // This is use by the table display plugin.
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  // Example numeric text field.
+  $data['example_table']['numeric_field'] = array(
+    'title' => t('Numeric field'),
+    'help' => t('Just a numeric field.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+     ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // Example boolean field.
+  $data['example_table']['boolean_field'] = array(
+    'title' => t('Boolean field'),
+    'help' => t('Just an on/off field.'),
+    'field' => array(
+      'handler' => 'views_handler_field_boolean',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_boolean_operator',
+      // Note that you can override the field-wide label:
+      'label' => t('Published'),
+      // This setting is used by the boolean filter handler, as possible option.
+      'type' => 'yes-no',
+      // use boolean_field = 1 instead of boolean_field <> 0 in WHERE statment.
+      'use equal' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // Example timestamp field.
+  $data['example_table']['timestamp_field'] = array(
+    'title' => t('Timestamp field'),
+    'help' => t('Just a timestamp field.'),
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+  );
+
+  return $data;
+}
+
+/**
+ * Alter table structure.
+ *
+ * You can add/edit/remove existing tables defined by hook_views_data().
+ *
+ * This hook should be placed in MODULENAME.views.inc and it will be
+ * auto-loaded. MODULENAME.views.inc must be in the directory specified by the
+ * 'path' key returned by MODULENAME_views_api(), or the same directory as the
+ * .module file, if 'path' is unspecified.
+ *
+ * @param $data
+ *   An array of all Views data, passed by reference. See hook_views_data() for
+ *   structure.
+ *
+ * @see hook_views_data()
+ */
+function hook_views_data_alter(&$data) {
+  // This example alters the title of the node:nid field in the Views UI.
+  $data['node']['nid']['title'] = t('Node-Nid');
+
+  // This example adds an example field to the users table.
+  $data['users']['example_field'] = array(
+    'title' => t('Example field'),
+    'help' => t('Some example content that references a user'),
+    'handler' => 'hook_handlers_field_example_field',
+  );
+
+  // This example changes the handler of the node title field.
+  // In this handler you could do stuff, like preview of the node when clicking
+  // the node title.
+  $data['node']['title']['handler'] = 'modulename_handlers_field_node_title';
+
+  // This example adds a relationship to table {foo}, so that 'foo' views can
+  // add this table using a relationship. Because we don't want to write over
+  // the primary key field definition for the {foo}.fid field, we use a dummy
+  // field name as the key.
+  $data['foo']['dummy_name'] = array(
+    'title' => t('Example relationship'),
+    'help' => t('Example help'),
+    'relationship' => array(
+      'base' => 'example_table', // Table we're joining to.
+      'base field' => 'eid', // Field on the joined table.
+      'field' => 'fid', // Real field name on the 'foo' table.
+      'handler' => 'views_handler_relationship',
+      'label' => t('Default label for relationship'),
+      'title' => t('Title seen when adding relationship'),
+      'help' => t('More information about relationship.'),
+    ),
+  );
+
+  // Note that the $data array is not returned – it is modified by reference.
+}
+
+
+/**
+ * Describes plugins defined by the module.
+ *
+ * This hook should be placed in MODULENAME.views.inc and it will be
+ * auto-loaded. MODULENAME.views.inc must be in the directory specified by the
+ * 'path' key returned by MODULENAME_views_api(), or the same directory as the
+ * .module file, if 'path' is unspecified. All plugin files need to be
+ * referenced in MODULENAME.info with the files[] directive.
+ *
+ * @return
+ *   An array on the form $plugins['PLUGIN TYPE']['PLUGIN NAME']. The plugin
+ *   must be one of row, display, display_extender, style, argument default,
+ *   argument validator, access, query, cache, pager, exposed_form or
+ *   localization. The plugin name should be prefixed with your module name.
+ *   The value for each entry is an associateive array that may contain the
+ *   following entries:
+ *   - Used by all plugin types:
+ *     - title (required): The name of the plugin, as shown in Views. Wrap in
+ *       t().
+ *     - handler (required): The name of the file containing the class
+ *       describing the handler, which must also be the name of the handler's
+ *       class.
+ *     - path: Path to the handler. Only required if the handler is not placed
+ *       in the same folder as the .module file or in the subfolder 'views'.
+ *     - parent: The name of the plugin this plugin extends. Since Drupal 7 this
+ *       is no longer required, but may still be useful from a code readability
+ *       perspective.
+ *     - no ui: Set to TRUE to denote that the plugin doesn't appear to be
+ *       selectable in the ui, though on the api side they still exists.
+ *     - uses options: Set to TRUE to denote that the plugin has an additional
+ *       options form.
+ *     - help: A short help text, wrapped in t() used as description on the plugin settings form.
+ *     - help topic: The name of an entry by advanced help for the plugin.
+ *     - theme: The name of a theme suggestion to use for the display.
+ *     - js: An array with paths to js files that should be included for the
+ *       display. Note that the path should be relative Drupal root, not module
+ *       root.
+ *     - type: Each plugin can specify a type parameter to group certain
+ *       plugins together. For example all row plugins related to feeds are
+ *       grouped together, because a rss style plugin only accepts feed row
+ *       plugins.
+ *
+ *   - Used by display plugins:
+ *     - admin: The administrative name of the display, as displayed on the
+ *       Views overview and also used as default name for new displays. Wrap in
+ *       t().
+ *     - no remove: Set to TRUE to make the display non-removable. (Basically
+ *       only used for the master/default display.)
+ *     - use ajax: Set to TRUE to allow AJAX loads in the display. If it's
+ *       disabled there will be no ajax option in the ui.
+ *     - use pager: Set to TRUE to allow paging in the display.
+ *     - use more: Set to TRUE to allow the 'use more' setting in the display.
+ *     - accept attachments: Set to TRUE to allow attachment displays to be
+ *       attached to this display type.
+ *     - contextual links locations: An array with places where contextual links
+ *       should be added. Can for example be 'page' or 'block'. If you don't
+ *       specify it there will be contextual links around the rendered view. If
+ *       this is not set or regions have been specified, views will display an
+ *       option to 'hide contextual links'. Use an empty array if you do not want
+ *       this.
+ *     - uses hook menu: Set to TRUE to have the display included by
+ *       views_menu_alter(). views_menu_alter executes then execute_hook_menu
+ *       on the display object.
+ *     - uses hook block: Set to TRUE to have the display included by
+ *       views_block_info().
+ *     - theme: The name of a theme suggestion to use for the display.
+ *     - js: An array with paths to js files that should be included for the
+ *       display. Note that the path should be relative Drupal root, not module
+ *       root.
+ *
+ *   - Used by style plugins:
+ *     - uses row plugin: Set to TRUE to allow row plugins for this style.
+ *     - uses row class: Set to TRUE to allow the CSS class settings for rows.
+ *     - uses fields: Set to TRUE to have the style plugin accept field
+ *       handlers.
+ *     - uses grouping: Set to TRUE to allow the grouping settings for rows.
+ *     - even empty: May have the value 'even empty' to tell Views that the style
+ *       should be rendered even if there are no results.
+ *
+ *   - Used by row plugins:
+ *     - uses fields: Set to TRUE to have the row plugin accept field handlers.
+ */
+function hook_views_plugins() {
+  $plugins = array();
+  $plugins['argument validator'] = array(
+    'taxonomy_term' => array(
+      'title' => t('Taxonomy term'),
+      'handler' => 'views_plugin_argument_validate_taxonomy_term',
+      // Declaring path explicitly not necessary for most modules.
+      'path' => drupal_get_path('module', 'views') . '/modules/taxonomy',
+    ),
+  );
+
+  return array(
+    'module' => 'views', // This just tells our themes are elsewhere.
+    'argument validator' => array(
+      'taxonomy_term' => array(
+        'title' => t('Taxonomy term'),
+        'handler' => 'views_plugin_argument_validate_taxonomy_term',
+        'path' => drupal_get_path('module', 'views') . '/modules/taxonomy', // not necessary for most modules
+      ),
+    ),
+    'argument default' => array(
+      'taxonomy_tid' => array(
+        'title' => t('Taxonomy term ID from URL'),
+        'handler' => 'views_plugin_argument_default_taxonomy_tid',
+        'path' => drupal_get_path('module', 'views') . '/modules/taxonomy',
+        'parent' => 'fixed',
+      ),
+    ),
+  );
+}
+
+/**
+ * Alter existing plugins data, defined by modules.
+ *
+ * @see hook_views_plugins()
+ */
+function hook_views_plugins_alter(&$plugins) {
+  // Add apachesolr to the base of the node row plugin.
+  $plugins['row']['node']['base'][] = 'apachesolr';
+}
+
+/**
+ * Register View API information.
+ *
+ * This is required for your module to have its include files loaded; for
+ * example, when implementing hook_views_default_views().
+ *
+ * @return
+ *   An array with the following possible keys:
+ *   - api: (required) The version of the Views API the module implements.
+ *   - path: (optional) If includes are stored somewhere other than within the
+ *     root module directory, specify its path here.
+ *   - template path: (optional) A path where the module has stored it's views
+ *     template files. When you have specificed this key views automatically
+ *     uses the template files for the views. You can use the same naming
+ *     conventions like for normal views template files.
+ */
+function hook_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'example') . '/includes/views',
+    'template path' => drupal_get_path('module', 'example') . '/themes',
+  );
+}
+
+/**
+ * This hook allows modules to provide their own views which can either be used
+ * as-is or as a "starter" for users to build from.
+ *
+ * This hook should be placed in MODULENAME.views.inc and it will be
+ * auto-loaded. MODULENAME.views.inc must be in the directory specified by the
+ * 'path' key returned by MODULENAME_views_api(), or the same directory as the
+ * .module file, if 'path' is unspecified.
+ *
+ * The $view->disabled boolean flag indicates whether the View should be
+ * enabled (FALSE) or disabled (TRUE) by default.
+ *
+ * @return
+ *   An associative array containing the structures of views, as generated from
+ *   the Export tab, keyed by the view name. A best practice is to go through
+ *   and add t() to all title and label strings, with the exception of menu
+ *   strings.
+ */
+function hook_views_default_views() {
+  // Begin copy and paste of output from the Export tab of a view.
+  $view = new view;
+  $view->name = 'frontpage';
+  $view->description = 'Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page.';
+  $view->tag = 'default';
+  $view->base_table = 'node';
+  $view->human_name = 'Front page';
+  $view->core = 0;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['access']['type'] = 'none';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['style_plugin'] = 'default';
+  $handler->display->display_options['row_plugin'] = 'node';
+  /* Sort criterion: Content: Sticky */
+  $handler->display->display_options['sorts']['sticky']['id'] = 'sticky';
+  $handler->display->display_options['sorts']['sticky']['table'] = 'node';
+  $handler->display->display_options['sorts']['sticky']['field'] = 'sticky';
+  $handler->display->display_options['sorts']['sticky']['order'] = 'DESC';
+  /* Sort criterion: Content: Post date */
+  $handler->display->display_options['sorts']['created']['id'] = 'created';
+  $handler->display->display_options['sorts']['created']['table'] = 'node';
+  $handler->display->display_options['sorts']['created']['field'] = 'created';
+  $handler->display->display_options['sorts']['created']['order'] = 'DESC';
+  /* Filter criterion: Content: Promoted to front page */
+  $handler->display->display_options['filters']['promote']['id'] = 'promote';
+  $handler->display->display_options['filters']['promote']['table'] = 'node';
+  $handler->display->display_options['filters']['promote']['field'] = 'promote';
+  $handler->display->display_options['filters']['promote']['value'] = '1';
+  $handler->display->display_options['filters']['promote']['group'] = 0;
+  $handler->display->display_options['filters']['promote']['expose']['operator'] = FALSE;
+  /* Filter criterion: Content: Published */
+  $handler->display->display_options['filters']['status']['id'] = 'status';
+  $handler->display->display_options['filters']['status']['table'] = 'node';
+  $handler->display->display_options['filters']['status']['field'] = 'status';
+  $handler->display->display_options['filters']['status']['value'] = '1';
+  $handler->display->display_options['filters']['status']['group'] = 0;
+  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+
+  /* Display: Page */
+  $handler = $view->new_display('page', 'Page', 'page');
+  $handler->display->display_options['path'] = 'frontpage';
+
+  /* Display: Feed */
+  $handler = $view->new_display('feed', 'Feed', 'feed');
+  $handler->display->display_options['defaults']['title'] = FALSE;
+  $handler->display->display_options['title'] = 'Front page feed';
+  $handler->display->display_options['pager']['type'] = 'some';
+  $handler->display->display_options['style_plugin'] = 'rss';
+  $handler->display->display_options['row_plugin'] = 'node_rss';
+  $handler->display->display_options['path'] = 'rss.xml';
+  $handler->display->display_options['displays'] = array(
+    'default' => 'default',
+    'page' => 'page',
+  );
+  $handler->display->display_options['sitename_title'] = '1';
+
+  // (Export ends here.)
+
+  // Add view to list of views to provide.
+  $views[$view->name] = $view;
+
+  // ...Repeat all of the above for each view the module should provide.
+
+  // At the end, return array of default views.
+  return $views;
+}
+
+/**
+ * Alter default views defined by other modules.
+ *
+ * This hook is called right before all default views are cached to the
+ * database. It takes a keyed array of views by reference.
+ *
+ * Example usage to add a field to a view:
+ * @code
+ *   $handler =& $view->display['DISPLAY_ID']->handler;
+ *   // Add the user name field to the view.
+ *   $handler->display->display_options['fields']['name']['id'] = 'name';
+ *   $handler->display->display_options['fields']['name']['table'] = 'users';
+ *   $handler->display->display_options['fields']['name']['field'] = 'name';
+ *   $handler->display->display_options['fields']['name']['label'] = 'Author';
+ *   $handler->display->display_options['fields']['name']['link_to_user'] = 1;
+ * @endcode
+ */
+function hook_views_default_views_alter(&$views) {
+  if (isset($views['taxonomy_term'])) {
+    $views['taxonomy_term']->display['default']->display_options['title'] = 'Categories';
+  }
+}
+
+/**
+ * Performs replacements in the query before being performed.
+ *
+ * @param $view
+ *   The View being executed.
+ * @return
+ *   An array with keys being the strings to replace, and the values the strings
+ *   to replace them with. The strings to replace are ofted surrounded with
+ *   '***', as illustrated in the example implementation.
+ */
+function hook_views_query_substitutions($view) {
+  // Example from views_views_query_substitutions().
+  global $language_content;
+  return array(
+    '***CURRENT_VERSION***' => VERSION,
+    '***CURRENT_TIME***' => REQUEST_TIME,
+    '***CURRENT_LANGUAGE***' => $language_content->language,
+    '***DEFAULT_LANGUAGE***' => language_default('language'),
+  );
+}
+
+/**
+ * This hook is called to get a list of placeholders and their substitutions,
+ * used when preprocessing a View with form elements.
+ *
+ * @return
+ *   An array with keys being the strings to replace, and the values the strings
+ *   to replace them with.
+ */
+function hook_views_form_substitutions() {
+  return array(
+    '<!--views-form-example-substitutions-->' => 'Example Substitution',
+  );
+}
+
+/**
+ * Allows altering a view at the very beginning of views processing, before
+ * anything is done.
+ *
+ * Adding output to the view can be accomplished by placing text on
+ * $view->attachment_before and $view->attachment_after.
+ * @param $view
+ *   The view object about to be processed.
+ * @param $display_id
+ *   The machine name of the active display.
+ * @param $args
+ *   An array of arguments passed into the view.
+ */
+function hook_views_pre_view(&$view, &$display_id, &$args) {
+  // Change the display if the acting user has 'administer site configuration'
+  // permission, to display something radically different.
+  // (Note that this is not necessarily the best way to solve that task. Feel
+  // free to contribute another example!)
+  if (
+    $view->name == 'my_special_view' &&
+    user_access('administer site configuration') &&
+    $display_id == 'public_display'
+  ) {
+    $display_id = 'private_display';
+  }
+}
+
+/**
+ * This hook is called right before the build process, but after displays
+ * are attached and the display performs its pre_execute phase.
+ *
+ * Adding output to the view can be accomplished by placing text on
+ * $view->attachment_before and $view->attachment_after.
+ * @param $view
+ *   The view object about to be processed.
+ */
+function hook_views_pre_build(&$view) {
+  // Because of some unexplicable business logic, we should remove all
+  // attachments from all views on Mondays.
+  // (This alter could be done later in the execution process as well.)
+  if (date('D') == 'Mon') {
+    unset($view->attachment_before);
+    unset($view->attachment_after);
+  }
+}
+
+/**
+ * This hook is called right after the build process. The query is now fully
+ * built, but it has not yet been run through db_rewrite_sql.
+ *
+ * Adding output to the view can be accomplished by placing text on
+ * $view->attachment_before and $view->attachment_after.
+ * @param $view
+ *   The view object about to be processed.
+ */
+function hook_views_post_build(&$view) {
+  // If the exposed field 'type' is set, hide the column containing the content
+  // type. (Note that this is a solution for a particular view, and makes
+  // assumptions about both exposed filter settings and the fields in the view.
+  // Also note that this alter could be done at any point before the view being
+  // rendered.)
+  if ($view->name == 'my_view' && isset($view->exposed_raw_input['type']) && $view->exposed_raw_input['type'] != 'All') {
+    // 'Type' should be interpreted as content type.
+    if (isset($view->field['type'])) {
+      $view->field['type']->options['exclude'] = TRUE;
+    }
+  }
+}
+
+/**
+ * This hook is called right before the execute process. The query is now fully
+ * built, but it has not yet been run through db_rewrite_sql.
+ *
+ * Adding output to the view can be accomplished by placing text on
+ * $view->attachment_before and $view->attachment_after.
+ * @param $view
+ *   The view object about to be processed.
+ */
+function hook_views_pre_execute(&$view) {
+  // Whenever a view queries more than two tables, show a message that notifies
+  // view administrators that the query might be heavy.
+  // (This action could be performed later in the execution process, but not
+  // earlier.)
+  if (count($view->query->tables) > 2 && user_access('administer views')) {
+    drupal_set_message(t('The view %view may be heavy to execute.', array('%view' => $view->name)), 'warning');
+  }
+}
+
+/**
+ * This hook is called right after the execute process. The query has
+ * been executed, but the pre_render() phase has not yet happened for
+ * handlers.
+ *
+ * Adding output to the view can be accomplished by placing text on
+ * $view->attachment_before and $view->attachment_after. Altering the
+ * content can be achieved by editing the items of $view->result.
+ * @param $view
+ *   The view object about to be processed.
+ */
+function hook_views_post_execute(&$view) {
+  // If there are more than 100 results, show a message that encourages the user
+  // to change the filter settings.
+  // (This action could be performed later in the execution process, but not
+  // earlier.)
+  if ($view->total_rows > 100) {
+    drupal_set_message(t('You have more than 100 hits. Use the filter settings to narrow down your list.'));
+  }
+}
+
+/**
+ * This hook is called right before the render process. The query has been
+ * executed, and the pre_render() phase has already happened for handlers, so
+ * all data should be available.
+ *
+ * Adding output to the view can be accomplished by placing text on
+ * $view->attachment_before and $view->attachment_after. Altering the content
+ * can be achieved by editing the items of $view->result.
+ *
+ * This hook can be utilized by themes.
+ * @param $view
+ *   The view object about to be processed.
+ */
+function hook_views_pre_render(&$view) {
+  // Scramble the order of the rows shown on this result page.
+  // Note that this could be done earlier, but not later in the view execution
+  // process.
+  shuffle($view->result);
+}
+
+/**
+ * Post process any rendered data.
+ *
+ * This can be valuable to be able to cache a view and still have some level of
+ * dynamic output. In an ideal world, the actual output will include HTML
+ * comment based tokens, and then the post process can replace those tokens.
+ *
+ * Example usage. If it is known that the view is a node view and that the
+ * primary field will be a nid, you can do something like this:
+ *
+ * <!--post-FIELD-NID-->
+ *
+ * And then in the post render, create an array with the text that should
+ * go there:
+ *
+ * strtr($output, array('<!--post-FIELD-1-->' => 'output for FIELD of nid 1');
+ *
+ * All of the cached result data will be available in $view->result, as well,
+ * so all ids used in the query should be discoverable.
+ *
+ * This hook can be utilized by themes.
+ * @param $view
+ *   The view object about to be processed.
+ * @param $output
+ *   A flat string with the rendered output of the view.
+ * @param $cache
+ *   The cache settings.
+ */
+function hook_views_post_render(&$view, &$output, &$cache) {
+  // When using full pager, disable any time-based caching if there are less
+  // then 10 results.
+  if ($view->query->pager instanceof views_plugin_pager_full && $cache->options['type'] == 'time' && count($view->result) < 10) {
+    $cache['options']['results_lifespan'] = 0;
+    $cache['options']['output_lifespan'] = 0;
+  }
+}
+
+/**
+ * Alter the query before executing the query.
+ *
+ * This hook should be placed in MODULENAME.views.inc and it will be
+ * auto-loaded. MODULENAME.views.inc must be in the directory specified by the
+ * 'path' key returned by MODULENAME_views_api(), or the same directory as the
+ * .module file, if 'path' is unspecified.
+ *
+ * @param $view
+ *   The view object about to be processed.
+ * @param $query
+ *   An object describing the query.
+ * @see hook_views_query_substitutions()
+ */
+function hook_views_query_alter(&$view, &$query) {
+  // (Example assuming a view with an exposed filter on node title.)
+  // If the input for the title filter is a positive integer, filter against
+  // node ID instead of node title.
+  if ($view->name == 'my_view' && is_numeric($view->exposed_raw_input['title']) && $view->exposed_raw_input['title'] > 0) {
+    // Traverse through the 'where' part of the query.
+    foreach ($query->where as &$condition_group) {
+      foreach ($condition_group['conditions'] as &$condition) {
+        // If this is the part of the query filtering on title, chang the
+        // condition to filter on node ID.
+        if ($condition['field'] == 'node.title') {
+          $condition = array(
+            'field' => 'node.nid',
+            'value' => $view->exposed_raw_input['title'],
+            'operator' => '=',
+          );
+        }
+      }
+    }
+  }
+}
+
+/**
+ * Alter the information box that (optionally) appears with a view preview,
+ * including query and performance statistics.
+ *
+ * This hook should be placed in MODULENAME.views.inc and it will be
+ * auto-loaded. MODULENAME.views.inc must be in the directory specified by the
+ * 'path' key returned by MODULENAME_views_api(), or the same directory as the
+ * .module file, if 'path' is unspecified.
+ *
+ * Warning: $view is not a reference in PHP4 and cannot be modified here. But it
+ * IS a reference in PHP5, and can be modified. Please be careful with it.
+ *
+ * @param $rows
+ *   An associative array with two keys:
+ *   - query: An array of rows suitable for theme('table'), containing
+ *     information about the query and the display title and path.
+ *   - statistics: An array of rows suitable for theme('table'), containing
+ *     performance statistics.
+ * @param $view
+ *   The view object.
+ * @see theme_table()
+ */
+function hook_views_preview_info_alter(&$rows, $view) {
+  // Adds information about the tables being queried by the view to the query
+  // part of the info box.
+  $rows['query'][] = array(
+    t('<strong>Table queue</strong>'),
+    count($view->query->table_queue) . ': (' . implode(', ', array_keys($view->query->table_queue)) . ')',
+  );
+}
+
+/**
+ * This hooks allows to alter the links at the top of the view edit form. Some
+ * modules might want to add links there.
+ *
+ * @param $links
+ *   An array of links which will be displayed at the top of the view edit form.
+ *   Each entry should be on a form suitable for theme('link').
+ * @param view $view
+ *   The full view object which is currently edited.
+ * @param $display_id
+ *   The current display id which is edited. For example that's 'default' or
+ *   'page_1'.
+ */
+function hook_views_ui_display_top_links_alter(&$links, $view, $display_id) {
+  // Put the export link first in the list.
+  if (isset($links['export'])) {
+    $links = array('export' => $links['export']) + $links;
+  }
+}
+
+/**
+ * This hook allows to alter the commands which are used on a views ajax
+ * request.
+ *
+ * @param $commands
+ *   An array of ajax commands
+ * @param $view view
+ *   The view which is requested.
+ */
+function hook_views_ajax_data_alter(&$commands, $view) {
+  // Replace Views' method for scrolling to the top of the element with your
+  // custom scrolling method.
+  foreach ($commands as &$command) {
+    if ($command['method'] == 'viewsScrollTop') {
+      $command['method'] .= 'myScrollTop';
+    }
+  }
+}
+
+/**
+ * Allow modules to respond to the Views cache being invalidated.
+ *
+ * This hook should fire whenever a view is enabled, disabled, created,
+ * updated, or deleted.
+ *
+ * @see views_invalidate_cache()
+ */
+function hook_views_invalidate_cache() {
+  cache_clear_all('views:*', 'cache_mymodule', TRUE);
+}
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup views_module_handlers Views module handlers
+ * @{
+ * Handlers exposed by various modules to Views.
+ * @}
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views.info b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.info
index 3fce296..3bd7470 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/views.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.info
@@ -12,6 +12,7 @@ dependencies[] = ctools
 files[] = handlers/views_handler_area.inc
 files[] = handlers/views_handler_area_result.inc
 files[] = handlers/views_handler_area_text.inc
+files[] = handlers/views_handler_area_text_custom.inc
 files[] = handlers/views_handler_area_view.inc
 files[] = handlers/views_handler_argument.inc
 files[] = handlers/views_handler_argument_date.inc
@@ -39,8 +40,10 @@ files[] = handlers/views_handler_field_url.inc
 files[] = handlers/views_handler_filter.inc
 files[] = handlers/views_handler_filter_boolean_operator.inc
 files[] = handlers/views_handler_filter_boolean_operator_string.inc
+files[] = handlers/views_handler_filter_combine.inc
 files[] = handlers/views_handler_filter_date.inc
 files[] = handlers/views_handler_filter_equality.inc
+files[] = handlers/views_handler_filter_entity_bundle.inc
 files[] = handlers/views_handler_filter_group_by_numeric.inc
 files[] = handlers/views_handler_filter_in_operator.inc
 files[] = handlers/views_handler_filter_many_to_one.inc
@@ -69,6 +72,7 @@ files[] = modules/aggregator/views_handler_field_aggregator_item_description.inc
 files[] = modules/aggregator/views_handler_field_aggregator_xss.inc
 files[] = modules/aggregator/views_handler_filter_aggregator_category_cid.inc
 files[] = modules/aggregator/views_plugin_row_aggregator_rss.inc
+files[] = modules/book/views_plugin_argument_default_book_root.inc
 files[] = modules/comment/views_handler_argument_comment_user_uid.inc
 files[] = modules/comment/views_handler_field_comment.inc
 files[] = modules/comment/views_handler_field_comment_depth.inc
@@ -96,8 +100,11 @@ files[] = modules/contact/views_handler_field_contact_link.inc
 files[] = modules/field/views_handler_field_field.inc
 files[] = modules/field/views_handler_relationship_entity_reverse.inc
 files[] = modules/field/views_handler_argument_field_list.inc
+files[] = modules/field/views_handler_argument_field_list_string.inc
 files[] = modules/field/views_handler_filter_field_list.inc
 files[] = modules/filter/views_handler_field_filter_format_name.inc
+files[] = modules/locale/views_handler_field_node_language.inc
+files[] = modules/locale/views_handler_filter_node_language.inc
 files[] = modules/locale/views_handler_argument_locale_group.inc
 files[] = modules/locale/views_handler_argument_locale_language.inc
 files[] = modules/locale/views_handler_field_locale_group.inc
@@ -118,6 +125,7 @@ files[] = modules/node/views_handler_field_node_link.inc
 files[] = modules/node/views_handler_field_node_link_delete.inc
 files[] = modules/node/views_handler_field_node_link_edit.inc
 files[] = modules/node/views_handler_field_node_revision.inc
+files[] = modules/node/views_handler_field_node_revision_link.inc
 files[] = modules/node/views_handler_field_node_revision_link_delete.inc
 files[] = modules/node/views_handler_field_node_revision_link_revert.inc
 files[] = modules/node/views_handler_field_node_path.inc
@@ -163,19 +171,13 @@ files[] = modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc
 files[] = modules/taxonomy/views_handler_relationship_node_term_data.inc
 files[] = modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc
 files[] = modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
-;files[] = modules/translation/views_handler_argument_node_language.inc
 files[] = modules/system/views_handler_filter_system_type.inc
 files[] = modules/translation/views_handler_argument_node_tnid.inc
-files[] = modules/translation/views_handler_field_node_language.inc
 files[] = modules/translation/views_handler_field_node_link_translate.inc
 files[] = modules/translation/views_handler_field_node_translation_link.inc
-files[] = modules/translation/views_handler_filter_node_language.inc
 files[] = modules/translation/views_handler_filter_node_tnid.inc
 files[] = modules/translation/views_handler_filter_node_tnid_child.inc
 files[] = modules/translation/views_handler_relationship_translation.inc
-files[] = modules/upload/views_handler_field_upload_description.inc
-files[] = modules/upload/views_handler_field_upload_fid.inc
-files[] = modules/upload/views_handler_filter_upload_fid.inc
 files[] = modules/user/views_handler_argument_user_uid.inc
 files[] = modules/user/views_handler_argument_users_roles_rid.inc
 files[] = modules/user/views_handler_field_user.inc
@@ -234,6 +236,7 @@ files[] = plugins/views_plugin_query.inc
 files[] = plugins/views_plugin_query_default.inc
 files[] = plugins/views_plugin_row.inc
 files[] = plugins/views_plugin_row_fields.inc
+files[] = plugins/views_plugin_row_rss_fields.inc
 files[] = plugins/views_plugin_style.inc
 files[] = plugins/views_plugin_style_default.inc
 files[] = plugins/views_plugin_style_grid.inc
@@ -248,6 +251,7 @@ files[] = plugins/views_plugin_style_table.inc
 ; Tests
 files[] = tests/handlers/views_handler_area_text.test
 files[] = tests/handlers/views_handler_argument_null.test
+files[] = tests/handlers/views_handler_argument_string.test
 files[] = tests/handlers/views_handler_field.test
 files[] = tests/handlers/views_handler_field_boolean.test
 files[] = tests/handlers/views_handler_field_custom.test
@@ -257,6 +261,7 @@ files[] = tests/handlers/views_handler_field_file_size.test
 files[] = tests/handlers/views_handler_field_math.test
 files[] = tests/handlers/views_handler_field_url.test
 files[] = tests/handlers/views_handler_field_xss.test
+files[] = tests/handlers/views_handler_filter_combine.test
 files[] = tests/handlers/views_handler_filter_date.test
 files[] = tests/handlers/views_handler_filter_equality.test
 files[] = tests/handlers/views_handler_filter_in_operator.test
@@ -267,14 +272,17 @@ files[] = tests/handlers/views_handler_sort_date.test
 files[] = tests/handlers/views_handler_sort.test
 files[] = tests/test_plugins/views_test_plugin_access_test_dynamic.inc
 files[] = tests/test_plugins/views_test_plugin_access_test_static.inc
+files[] = tests/plugins/views_plugin_display.test
 files[] = tests/styles/views_plugin_style_jump_menu.test
 files[] = tests/styles/views_plugin_style.test
+files[] = tests/styles/views_plugin_style_unformatted.test
 files[] = tests/views_access.test
 files[] = tests/views_analyze.test
 files[] = tests/views_basic.test
 files[] = tests/views_argument_default.test
 files[] = tests/views_argument_validator.test
 files[] = tests/views_exposed_form.test
+files[] = tests/field/views_fieldapi.test
 files[] = tests/views_glossary.test
 files[] = tests/views_groupby.test
 files[] = tests/views_handlers.test
@@ -287,6 +295,7 @@ files[] = tests/views_upgrade.test
 files[] = tests/views_test.views_default.inc
 files[] = tests/comment/views_handler_argument_comment_user_uid.test
 files[] = tests/comment/views_handler_filter_comment_user_uid.test
+files[] = tests/taxonomy/views_handler_relationship_node_term_data.test
 files[] = tests/user/views_handler_field_user_name.test
 files[] = tests/user/views_user_argument_default.test
 files[] = tests/user/views_user_argument_validate.test
@@ -295,9 +304,9 @@ files[] = tests/views_cache.test
 files[] = tests/views_view.test
 files[] = tests/views_ui.test
 
-; Information added by drupal.org packaging script on 2012-02-22
-version = "7.x-3.3"
+; Information added by drupal.org packaging script on 2012-08-24
+version = "7.x-3.5"
 core = "7.x"
 project = "views"
-datestamp = "1329946249"
+datestamp = "1345829394"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views.install b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.install
index 46b005f..b69f410 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/views.install
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.install
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views.install
+ * @file
  * Contains install and update functions for Views.
  */
 
@@ -111,6 +112,7 @@ function views_schema_6000() {
       'save callback' => 'views_save_view',
       'delete callback' => 'views_delete_view',
       'export callback' => 'views_export_view',
+      'status callback' => 'views_export_status',
       'cache defaults' => TRUE,
       'default cache bin' => 'cache_views',
     ),
@@ -425,7 +427,7 @@ function views_update_6009() {
     $sql = "SELECT vid, id, display_options_old FROM {views_display}";
     $result = db_query($sql);
     foreach ($result as $row) {
-      $row['display_options_old'] = db_decode_blob($row['display_options_old']);
+      $row['display_options_old'] = $row['display_options_old'];
       $sql = "UPDATE {views_display} SET display_options = :display_optons WHERE vid = :vid AND id = :id";
       db_query($sql, array(
         ':display_optons' => $row['display_options_old'],
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views.module b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.module
index 1b637e4..3b9eff1 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/views.module
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/views.module
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Primarily Drupal hooks and global API functions to manipulate views.
@@ -173,7 +174,7 @@ function views_theme($existing, $type, $theme, $path) {
  * @param $path
  *   The path to search.
  *
- * @see drupal_find_theme_templates
+ * @see drupal_find_theme_templates()
  */
 function _views_find_module_templates($cache, $path) {
   $templates = array();
@@ -237,6 +238,57 @@ function _views_find_module_templates($cache, $path) {
 }
 
 /**
+ * Returns a list of plugins and metadata about them.
+ *
+ * @return array
+ *   An array keyed by PLUGIN_TYPE:PLUGIN_NAME, like 'display:page' or
+ *   'pager:full', containing an array with the following keys:
+ *   - title: The plugin's title.
+ *   - type: The plugin type.
+ *   - module: The module providing the plugin.
+ *   - views: An array of enabled Views that are currently using this plugin,
+ *     keyed by machine name.
+ */
+function views_plugin_list() {
+  $plugin_data = views_fetch_plugin_data();
+  $plugins = array();
+  foreach (views_get_enabled_views() as $view) {
+    foreach ($view->display as $display_id => $display) {
+      foreach ($plugin_data as $type => $info) {
+        if ($type == 'display' && isset($display->display_plugin)) {
+          $name = $display->display_plugin;
+        }
+        elseif (isset($display->display_options["{$type}_plugin"])) {
+          $name = $display->display_options["{$type}_plugin"];
+        }
+        elseif (isset($display->display_options[$type]['type'])) {
+          $name = $display->display_options[$type]['type'];
+        }
+        else {
+          continue;
+        }
+
+        // Key first by the plugin type, then the name.
+        $key = $type . ':' . $name;
+        // Add info for this plugin.
+        if (!isset($plugins[$key])) {
+          $plugins[$key] = array(
+            'type' => $type,
+            'title' => check_plain($info[$name]['title']),
+            'module' => check_plain($info[$name]['module']),
+            'views' => array(),
+          );
+        }
+
+        // Add this view to the list for this plugin.
+        $plugins[$key]['views'][$view->name] = $view->name;
+      }
+    }
+  }
+  return $plugins;
+}
+
+/**
  * A theme preprocess function to automatically allow view-based node
  * templates if called from a view.
  *
@@ -281,7 +333,7 @@ function views_preprocess_comment(&$vars) {
   }
 }
 
-/*
+/**
  * Implement hook_permission().
  */
 function views_permission() {
@@ -453,13 +505,21 @@ function views_arg_load($value, $name, $display_id, $index) {
 }
 
 /**
- * Page callback entry point; requires a view and a display id, then
- * passes control to the display handler.
+ * Page callback: Displays a page view, given a name and display id.
+ *
+ * @param $name
+ *   The name of a view.
+ * @param $display_id
+ *   The display id of a view.
+ *
+ * @return
+ *   Either the HTML of a fully-executed view, or MENU_NOT_FOUND.
  */
-function views_page() {
+function views_page($name, $display_id) {
   $args = func_get_args();
-  $name = array_shift($args);
-  $display_id = array_shift($args);
+  // Remove $name and $display_id from the arguments.
+  array_shift($args);
+  array_shift($args);
 
   // Load the view and render it.
   if ($view = views_get_view($name)) {
@@ -467,7 +527,7 @@ function views_page() {
   }
 
   // Fallback; if we get here no view was found or handler was not valid.
-  return drupal_not_found();
+  return MENU_NOT_FOUND;
 }
 
 /**
@@ -807,7 +867,7 @@ function views_add_contextual_links(&$render_element, $location, $view, $display
  * @param $all
  *   Boolean to return all languages or only enabled ones
  *
- * @see locale_language_list
+ * @see locale_language_list()
  */
 function views_language_list($field = 'name', $all = FALSE) {
   if ($all) {
@@ -859,7 +919,17 @@ function views_field_delete_instance($instance) {
  * Invalidate the views cache, forcing a rebuild on the next grab of table data.
  */
 function views_invalidate_cache() {
+  // Clear the views cache.
   cache_clear_all('*', 'cache_views', TRUE);
+
+  // Clear the page and block cache.
+  cache_clear_all();
+
+  // Set the menu as needed to be rebuilt.
+  variable_set('menu_rebuild_needed', TRUE);
+
+  // Allow modules to respond to the Views cache being cleared.
+  module_invoke_all('views_invalidate_cache');
 }
 
 /**
@@ -1396,12 +1466,14 @@ function views_get_disabled_views() {
  * @param bool $optgroup
  *  If TRUE, returns an array with optgroups for each view (will be ignored for
  *  $views_only = TRUE). Can be used by select
+ * @param bool $sort
+ *  If TRUE, the list of views is sorted ascending.
  *
  * @return array
  *  an associative array for use in select.
  *  - key: view name and display id separated by ':', or the view name only
  */
-function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclude_view = NULL, $optgroup = FALSE) {
+function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclude_view = NULL, $optgroup = FALSE, $sort = FALSE) {
 
   // Filter the big views array.
   switch ($filter) {
@@ -1448,6 +1520,9 @@ function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclu
       }
     }
   }
+  if ($sort) {
+    ksort($options);
+  }
   return $options;
 }
 
@@ -1573,6 +1648,14 @@ function views_export_view(&$view, $indent = '') {
   return $view->export($indent);
 }
 
+/**
+ * Export callback to change view status.
+ */
+function views_export_status($view, $status) {
+  ctools_export_set_object_status($view, $status);
+  views_invalidate_cache();
+}
+
 // ------------------------------------------------------------------
 // Views debug helper functions
 
@@ -1681,12 +1764,15 @@ function views_view_has_form_elements($view) {
  */
 function views_form($form, &$form_state, $view, $output) {
   $form_state['step'] = isset($form_state['step']) ? $form_state['step'] : 'views_form_views_form';
+  // Cache the built form to prevent it from being rebuilt prior to validation
+  // and submission, which could lead to data being processed incorrectly,
+  // because the views rows (and thus, the form elements as well) have changed
+  // in the meantime.
+  $form_state['cache'] = TRUE;
 
   $form = array();
   $query = drupal_get_query_parameters($_GET, array('q'));
   $form['#action'] = url($view->get_url(), array('query' => $query));
-  $form['#validate'] = array('views_form_validate');
-  $form['#submit'] = array('views_form_submit');
   // Tell the preprocessor whether it should hide the header, footer, pager...
   $form['show_view_elements'] = array(
     '#type' => 'value',
@@ -1698,32 +1784,6 @@ function views_form($form, &$form_state, $view, $output) {
 }
 
 /**
- * The basic form validate handler.
- * Fires the hook_views_form_validate() function.
- */
-function views_form_validate($form, &$form_state) {
-  // Fire the hook. Doesn't use module_invoke_all() because $form_state needs
-  // to be passed by reference.
-  foreach (module_implements('views_form_validate') as $module) {
-    $function = $module . '_views_form_validate';
-    $function($form, $form_state);
-  }
-}
-
-/**
- * The basic form submit handler.
- * Fires the hook_views_form_submit() function.
- */
-function views_form_submit($form, &$form_state) {
-  // Fire the hook. Doesn't use module_invoke_all() because $form_state needs
-  // to be passed by reference.
-  foreach (module_implements('views_form_submit') as $module) {
-    $function = $module . '_views_form_submit';
-    $function($form, $form_state);
-  }
-}
-
-/**
  * Callback for the main step of a Views form.
  * Invoked by views_form().
  */
@@ -1907,7 +1967,18 @@ function views_exposed_form($form, &$form_state) {
   foreach ($view->display_handler->handlers as $type => $value) {
     foreach ($view->$type as $id => $handler) {
       if ($handler->can_expose() && $handler->is_exposed()) {
-        $handler->exposed_form($form, $form_state);
+        // Grouped exposed filters have their own forms.
+        // Instead of render the standard exposed form, a new Select or
+        // Radio form field is rendered with the available groups.
+        // When an user choose an option the selected value is split
+        // into the operator and value that the item represents.
+        if ($handler->is_a_group()) {
+          $handler->group_form($form, $form_state);
+          $id = $handler->options['group_info']['identifier'];
+        }
+        else {
+          $handler->exposed_form($form, $form_state);
+        }
         if ($info = $handler->exposed_info()) {
           $form['#info']["$type-$id"] = $info;
         }
@@ -1922,7 +1993,7 @@ function views_exposed_form($form, &$form_state) {
     '#id' => drupal_html_id('edit-submit-' . $view->name),
   );
 
-  $form['#action'] = url($view->get_url());
+  $form['#action'] = url($view->display_handler->get_url());
   $form['#theme'] = views_theme_functions('views_exposed_form', $view, $display);
   $form['#id'] = drupal_clean_css_identifier('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display->id));
 //  $form['#attributes']['class'] = array('views-exposed-form');
@@ -2006,7 +2077,9 @@ function views_exposed_form_submit(&$form, &$form_state) {
  *   Array. The form structure, if any. Otherwise, return FALSE.
  */
 function views_exposed_form_cache($views_name, $display_name, $form_output = NULL) {
-  static $views_exposed;
+  // When running tests for exposed filters, this cache should
+  // be cleared between each test.
+  $views_exposed = &drupal_static(__FUNCTION__);
 
   // Save the form output
   if (!empty($form_output)) {
@@ -2129,23 +2202,22 @@ function views_embed_view($name, $display_id = 'default') {
 }
 
 /**
-* Get the result of a view.
-*
-* @param string $name
-*      The name of the view to retrieve the data from.
-* @param string $display_id
-*      The display id. On the edit page for the view in question, you'll find
-*      a list of displays at the left side of the control area. "Master"
-*      will be at the top of that list. Hover your cursor over the name of the
-*      display you want to use. An URL will appear in the status bar of your
-*      browser. This is usually at the bottom of the window, in the chrome.
-*      Everything after #views-tab- is the display ID, e.g. page_1.
+ * Get the result of a view.
+ *
+ * @param string $name
+ *   The name of the view to retrieve the data from.
+ * @param string $display_id
+ *   The display id. On the edit page for the view in question, you'll find
+ *   a list of displays at the left side of the control area. "Master"
+ *   will be at the top of that list. Hover your cursor over the name of the
+ *   display you want to use. An URL will appear in the status bar of your
+ *   browser. This is usually at the bottom of the window, in the chrome.
+ *   Everything after #views-tab- is the display ID, e.g. page_1.
  * @param ...
  *   Any additional parameters will be passed as arguments.
-* @return
-*      array
-*          An array containing an object for each view item.
-*/
+ * @return array
+ *   An array containing an object for each view item.
+ */
 function views_get_view_result($name, $display_id = NULL) {
   $args = func_get_args();
   array_shift($args); // remove $name
@@ -2228,7 +2300,7 @@ function views_var_export($var, $prefix = '', $init = TRUE) {
  * @return
  *   The cleaned identifier.
  *
- * @see drupal_clean_css_identifier
+ * @see drupal_clean_css_identifier()
  */
 function views_clean_css_identifier($identifier, $filter = array(' ' => '-', '/' => '-', '[' => '-', ']' => '')) {
   // By default, we filter using Drupal's coding standards.
@@ -2447,10 +2519,6 @@ if (!function_exists('translation_views_api')) {
   function translation_views_api() { return views_views_api(); }
 }
 
-if (!function_exists('upload_views_api')) {
-  function upload_views_api() { return views_views_api(); }
-}
-
 if (!function_exists('user_views_api')) {
   function user_views_api() { return views_views_api(); }
 }
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views3.doxy b/kolab.org/www/drupal-7.15/sites/all/modules/views/views3.doxy
deleted file mode 100644
index 7c38ae4..0000000
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/views3.doxy
+++ /dev/null
@@ -1,1252 +0,0 @@
-# Doxyfile 1.4.7
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME           =  Views
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER         = 2.0
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = doc
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
-# Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING   = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC    = YES
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF      = YES
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP         = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 2
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = NO
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT                  =
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
-FILE_PATTERNS          = *.module *.inc *.php
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.  Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.  The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.  Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE               =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = YES
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD                =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.  This is useful
-# if you want to understand what is going on.  On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING   = NO
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-#   TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#   TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS           =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH    = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT   = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that a graph may be further truncated if the graph's
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
-# the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views_export/views_export.module b/kolab.org/www/drupal-7.15/sites/all/modules/views/views_export/views_export.module
index c98f08b..bcc3c7c 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/views_export/views_export.module
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/views_export/views_export.module
@@ -1,5 +1,10 @@
 <?php
-// This module has been removed, and this note is left here to ensure
-// that users who don't delete their directory before upgrading have
-// the code removed and to let people looking for it to know to use
-// the CTools bulk export module instead.
+
+/**
+ * @file
+ * The Views Export module has been removed.
+ *
+ * This note is left here to ensure that users who don't delete their directory
+ * before upgrading have the code removed and to let people looking for it to
+ * know to use the CTools bulk export module instead.
+ */
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.info b/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.info
index ec61446..74d9e16 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.info
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.info
@@ -7,9 +7,9 @@ dependencies[] = views
 files[] = views_ui.module
 files[] = plugins/views_wizard/views_ui_base_views_wizard.class.php
 
-; Information added by drupal.org packaging script on 2012-02-22
-version = "7.x-3.3"
+; Information added by drupal.org packaging script on 2012-08-24
+version = "7.x-3.5"
 core = "7.x"
 project = "views"
-datestamp = "1329946249"
+datestamp = "1345829394"
 
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.module b/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.module
index a4480a9..8182714 100644
--- a/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.module
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/views/views_ui.module
@@ -1,6 +1,7 @@
 <?php
+
 /**
- * @file views_ui.module
+ * @file
  * Provide structure for the administrative interface to Views.
  */
 
@@ -10,15 +11,6 @@
 function views_ui_menu() {
   $items = array();
 
-  //module_load_include('inc', 'views_ui', 'includes/admin');
-
-  // Drupal core loads the module file when uninstall a module. So views.module is not loaded.
-  // There is a core bug filled, remove it once the bug is fixed.
-  // @see http://drupal.org/node/1029606
-  if (!module_exists('views')) {
-    return;
-  }
-
   // Minor code reduction technique.
   $base = array(
     'access callback' => 'user_access',
@@ -152,10 +144,24 @@ function views_ui_menu() {
   ) + $base;
 
   // A page in the Reports section to show usage of fields in all views
-  $items['admin/reports/views-fields'] = array(
-    'title' => 'Fields used in views',
+  $items['admin/reports/fields/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/reports/fields/views-fields'] = array(
+    'title' => 'Used in views',
     'description' => 'Overview of fields used in all views.',
     'page callback' => 'views_ui_field_list',
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 0,
+  ) + $base;
+
+  // A page in the Reports section to show usage of plugins in all views.
+  $items['admin/reports/views-plugins'] = array(
+    'title' => 'Views plugins',
+    'description' => 'Overview of plugins used in all views.',
+    'page callback' => 'views_ui_plugin_list',
   ) + $base;
 
   return $items;
@@ -203,6 +209,12 @@ function views_ui_theme() {
       'file' => "includes/admin.inc",
     ),
 
+    // Group of filters.
+    'views_ui_build_group_filter_form' => array(
+      'render element' => 'form',
+      'file' => 'includes/admin.inc',
+    ),
+
     // tab themes
     'views_tabset' => array(
       'variables' => array('tabs' => NULL),
@@ -840,19 +852,6 @@ function views_ui_library_alter(&$libraries, $module) {
 }
 
 /**
- * Handle bad updates from alpha versions to beta versions.
- *
- * This function will ONLY be called if there is an old menu entry for
- * this hanging around. This will force a menu rebuild and a cache clear
- * which should resolve the problem.
- */
-function views_ui_list_views() {
-  drupal_flush_all_caches();
-  menu_rebuild();
-  drupal_goto($_GET['q']);
-}
-
-/**
  * Truncate strings to a set length and provide a ... if they truncated.
  *
  * This is often used in the UI to ensure long strings fit.





More information about the commits mailing list