[prev in list] [next in list] [prev in thread] [next in thread]
List: kolab-commits
Subject: Branch 'production' - 3 commits - kolab.org/www
From: Torsten Grote <grote () kolabsys ! com>
Date: 2014-01-23 16:29:24
Message-ID: 20140123162924.C23713EF1C6 () app01 ! kolabsys ! com
[Download RAW message or body]
--==============q45925686911999282=Content-Type: text/plain
kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_devel/admin_devel.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu-rtl.css \
| 48 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.admin.js \
| 14 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.api.php \
| 104 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.css \
| 65 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.drush.inc \
| 14 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.inc \
| 154 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.install \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.js \
| 145 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.module \
| 139 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css \
| 11 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module \
| 34 kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.admin.inc \
| 47 kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.install \
| 58 kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.module \
| 193 kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.test \
| 28 kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha-rtl.css \
| 14 kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.admin.inc \
| 21 kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.module \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.user.inc \
| 18 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/da.po \
| 875 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/de.po \
| 633 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/es.po \
| 717 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fi.po \
| 747 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fr.po \
| 712 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/he.po \
| 611 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/hu.po \
| 635 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/id.po \
| 698 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/it.po \
| 502 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/lt.po \
| 651 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/nl.po \
| 658 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/pl.po \
| 510 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk-ua.po \
| 428 kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk.po \
| 428 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/README.txt \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.admin.inc \
| 56 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.api.php \
| 13 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.css \
| 14 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.install \
| 17 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.js \
| 51 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.module \
| 219 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.pages.inc \
| 93 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi_example/checklistapi_example.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/lib/Drupal/checklistapi/ChecklistapiChecklist.php \
| 67 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/templates/checklistapi-progress-bar.tpl.php \
| 22 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/checklistapi.test \
| 11 kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/modules/checklistapi_test/checklistapi_test.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/CHANGELOG.txt \
| 20 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.api.php \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.config.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.info \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.install \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.module \
| 47 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.styles.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.inc \
| 19 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.drush.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.features.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.lib.inc \
| 23 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.page.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.user.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.utils.js \
| 21 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/filemanager.config.php \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/jqueryUI/sort.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/dialogs/uicolor.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/bg.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cs.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cy.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/da.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/de.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/el.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/en.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/eo.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/et.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fa.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fi.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fr.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/he.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/hr.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/it.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/mk.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nb.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nl.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/no.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/pl.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/tr.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/ug.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/uk.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/vi.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/zh-cn.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/plugin.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/drupalbreaks/plugin.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/imce/plugin.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/media/plugin.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/dialogs/mediaembed.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/plugin.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/API.txt \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/bulk_export/bulk_export.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/button.css \
| 3 kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/dropbutton.css \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.api.php \
| 61 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.install \
| 26 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.module \
| 95 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.install \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.module \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/plugins/content_types/no_context_content_type.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ctools/drush/ctools.drush.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins-implementing.html \
| 13 kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins.html \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/action-links.theme.inc \
| 33 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.menu.inc \
| 15 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.plugin-type.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context-task-handler.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context.inc \
| 13 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropbutton.theme.inc \
| 3 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropdown.theme.inc \
| 3 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/fields.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/plugins.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/auto-submit.js \
| 9 kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dependent.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dropbutton.js \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/modal.js \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.admin.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.api.php \
| 39 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.module \
| 3 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/task_handlers/http_response.inc \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/comment_reply.inc \
| 162 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc \
| 72 kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/user_edit.inc \
| 15 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_bundle.inc \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_field_value.inc \
| 58 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/arguments/user_edit.inc \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/block/block.inc \
| 16 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc \
| 50 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc \
| 7 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_context/node_title.inc \
| 49 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_form/node_form_language.inc \
| 41 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/page/page_actions.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/user_context/user_profile.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/string.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/user_edit_form.inc \
| 25 kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/relationships/user_category_edit_form_from_user.inc \
| 31 kolab.org/www/drupal-7.18/sites/all/modules/ctools/stylizer/stylizer.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/context.test \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_plugin_test.info \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression.test \
| 129 kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression_stack.test \
| 63 kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/relationships/view_from_argument.inc \
| 3 kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/views_content.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/CHANGELOG.txt \
| 64 kolab.org/www/drupal-7.18/sites/all/modules/date/date.api.php \
| 3 kolab.org/www/drupal-7.18/sites/all/modules/date/date.diff.inc \
| 79 kolab.org/www/drupal-7.18/sites/all/modules/date/date.field.inc \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/date/date.info \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/date/date.migrate.inc \
| 200 kolab.org/www/drupal-7.18/sites/all/modules/date/date.module \
| 19 kolab.org/www/drupal-7.18/sites/all/modules/date/date.theme \
| 66 kolab.org/www/drupal-7.18/sites/all/modules/date/date_admin.inc \
| 9 kolab.org/www/drupal-7.18/sites/all/modules/date/date_all_day/date_all_day.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.module \
| 73 kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_elements.inc \
| 23 kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_sql.inc \
| 32 kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/date_context.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/date/date_elements.inc \
| 13 kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date.migrate.inc \
| 175 kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.info \
| 14 kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.module \
| 12 kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.test \
| 70 kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info \
| 7 kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.migrate.inc \
| 59 kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.module \
| 3 kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/README.txt \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.module \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat_form.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.module \
| 25 kolab.org/www/drupal-7.18/sites/all/modules/date/date_tools/date_tools.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/date_views.info \
| 7 kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_argument_handler_simple.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler_simple.inc \
| 48 kolab.org/www/drupal-7.18/sites/all/modules/date/tests/date_migrate.test \
kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.test \
| 26 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_block/i18n_block.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_contact/i18n_contact.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.api.php \
| 53 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.module \
| 132 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_forum/i18n_forum.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.inc \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.module \
| 39 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_path/i18n_path.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_select/i18n_select.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc \
| 17 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.node.inc \
| 11 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module \
| 26 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_translation/i18n_translation.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_user/i18n_user.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_variable/i18n_variable.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/i18n/tests/i18n_test.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.install \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.module \
| 90 kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.admin.inc \
| 9 kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.page.inc \
| 32 kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce.js \
| 13 kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce_extras.js \
| 19 kolab.org/www/drupal-7.18/sites/all/modules/imce/tpl/imce-page.tpl.php \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/CHANGELOG.txt \
| 7 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/LICENSE.txt \
| 601 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.info \
| 10 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.install \
| 7 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.module \
| 173 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.5/jquery.js \
| 8316 ++++++++ kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.5/jquery.min.js \
| 16 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.7/jquery.js \
| 9266 +++++++++ kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.7/jquery.min.js \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.8/jquery.js \
| 9440 ++++++++++ kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.8/jquery.min.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/jquery.js \
| 8374 -------- kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/jquery.min.js \
| 16 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/misc/1.7/states.js \
| 423 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/misc/jquery.form.js \
| 810 kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/misc/jquery.form.min.js \
| 11 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/CHANGELOG.txt \
| 47 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/README.txt \
| 12 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.admin.inc \
| 91 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.batch.inc \
| 114 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.drush.inc \
| 26 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.info \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.install \
| 109 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.module \
| 1309 + kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.pages.inc \
| 83 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.redirect.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/linkchecker/linkchecker.test \
| 282 kolab.org/www/drupal-7.18/sites/all/modules/permission_select/LICENSE.txt \
| 601 kolab.org/www/drupal-7.18/sites/all/modules/permission_select/checkbox-checked.png \
|binary kolab.org/www/drupal-7.18/sites/all/modules/permission_select/checkbox-unchecked.png \
|binary kolab.org/www/drupal-7.18/sites/all/modules/permission_select/permission_select.css \
| 36 kolab.org/www/drupal-7.18/sites/all/modules/permission_select/permission_select.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/permission_select/permission_select.js \
| 50 kolab.org/www/drupal-7.18/sites/all/modules/permission_select/permission_select.module \
| 102 kolab.org/www/drupal-7.18/sites/all/modules/piwik/piwik.admin.inc \
| 35 kolab.org/www/drupal-7.18/sites/all/modules/piwik/piwik.info \
| 9 kolab.org/www/drupal-7.18/sites/all/modules/piwik/piwik.install \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/piwik/piwik.module \
| 53 kolab.org/www/drupal-7.18/sites/all/modules/piwik/piwik.test \
| 119 kolab.org/www/drupal-7.18/sites/all/modules/piwik/piwik.variable.inc \
| 48 kolab.org/www/drupal-7.18/sites/all/modules/seo_checklist/seo_checklist.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/seo_checklist/seo_checklist.install \
| 156 kolab.org/www/drupal-7.18/sites/all/modules/seo_checklist/seo_checklist.module \
| 316 kolab.org/www/drupal-7.18/sites/all/modules/seo_checklist/seo_checklist_intro_tab.tpl.php \
| 20 kolab.org/www/drupal-7.18/sites/all/modules/seo_checklist/volacci-logo.png \
|binary kolab.org/www/drupal-7.18/sites/all/modules/socialshareprivacy/.gitignore \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/socialshareprivacy/css/overlay_fix.css \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/socialshareprivacy/css/reset.css \
| 36 kolab.org/www/drupal-7.18/sites/all/modules/socialshareprivacy/socialshareprivacy.admin.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/socialshareprivacy/socialshareprivacy.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/socialshareprivacy/socialshareprivacy.module \
| 48 kolab.org/www/drupal-7.18/sites/all/modules/token/tests/token_test.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/token/token.drush.inc \
| 22 kolab.org/www/drupal-7.18/sites/all/modules/token/token.info \
| 10 kolab.org/www/drupal-7.18/sites/all/modules/token/token.js \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/token/token.module \
| 36 kolab.org/www/drupal-7.18/sites/all/modules/token/token.pages.inc \
| 11 kolab.org/www/drupal-7.18/sites/all/modules/token/token.test \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/token/token.tokens.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/variable/includes/menu.variable.inc \
| 20 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.form.inc \
| 19 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.module \
| 46 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.variable.inc \
| 16 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_admin/variable_admin.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.info \
| 11 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.module \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.variable.inc \
| 73 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_example/variable_example.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.form.inc \
| 10 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.module \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.variable.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_store/variable_store.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_views/variable_views.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/views/css/views-admin.ctools.css \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/views/handlers/views_handler_area_text.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/views/handlers/views_handler_field.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/views/handlers/views_handler_field_boolean.inc \
| 34 kolab.org/www/drupal-7.18/sites/all/modules/views/handlers/views_handler_filter_combine.inc \
| 51 kolab.org/www/drupal-7.18/sites/all/modules/views/handlers/views_handler_filter_numeric.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/views/includes/admin.inc \
| 18 kolab.org/www/drupal-7.18/sites/all/modules/views/includes/base.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/views/includes/cache.inc \
| 98 kolab.org/www/drupal-7.18/sites/all/modules/views/includes/handlers.inc \
| 9 kolab.org/www/drupal-7.18/sites/all/modules/views/includes/view.inc \
| 12 kolab.org/www/drupal-7.18/sites/all/modules/views/js/ajax_view.js \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/views/js/views-admin.js \
| 7 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/aggregator/views_handler_argument_aggregator_iid.inc \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/field.views.inc \
| 78 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/node.views.inc \
| 45 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/node/views_handler_field_node_revision.inc \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/node/views_handler_filter_node_access.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/search/views_handler_filter_search.inc \
| 30 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc \
| 23 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc \
| 13 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/tracker.views.inc \
| 183 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/tracker/views_handler_argument_tracker_comment_user_uid.inc \
| 26 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/tracker/views_handler_filter_tracker_boolean_operator.inc \
| 31 kolab.org/www/drupal-7.18/sites/all/modules/views/modules/tracker/views_handler_filter_tracker_comment_user_uid.inc \
| 23 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/export_ui/views_ui.class.php \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_display.inc \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_display_feed.inc \
| 1 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_display_page.inc \
| 24 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_exposed_form.inc \
| 25 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_pager_mini.inc \
| 48 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_query_default.inc \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_style_grid.inc \
| 10 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc \
| 17 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_style_mapping.inc \
| 125 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc \
| 17 kolab.org/www/drupal-7.18/sites/all/modules/views/plugins/views_plugin_style_table.inc \
| 11 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/field/views_fieldapi.test \
| 12 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test \
| 34 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/node/views_node_revision_relations.test \
| 177 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/styles/views_plugin_style.test \
| 16 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/styles/views_plugin_style_base.test \
| 33 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test \
| 8 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/styles/views_plugin_style_mapping.test \
| 144 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/styles/views_plugin_style_unformatted.test \
| 22 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/test_plugins/views_test_plugin_style_test_mapping.inc \
| 52 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/views_test.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/views_test.module \
| 56 kolab.org/www/drupal-7.18/sites/all/modules/views/tests/views_translatable.test \
| 23 kolab.org/www/drupal-7.18/sites/all/modules/views/theme/theme.inc \
| 29 kolab.org/www/drupal-7.18/sites/all/modules/views/theme/views-view-grid.tpl.php \
| 4 kolab.org/www/drupal-7.18/sites/all/modules/views/theme/views-view-table.tpl.php \
| 5 kolab.org/www/drupal-7.18/sites/all/modules/views/theme/views-view-unformatted.tpl.php \
| 2 kolab.org/www/drupal-7.18/sites/all/modules/views/views.api.php \
| 14 kolab.org/www/drupal-7.18/sites/all/modules/views/views.info \
| 14 kolab.org/www/drupal-7.18/sites/all/modules/views/views.module \
| 10 kolab.org/www/drupal-7.18/sites/all/modules/views/views_ui.info \
| 6 kolab.org/www/drupal-7.18/sites/all/modules/views/views_ui.module \
| 3 370 files changed, 36385 insertions(+), 20566 deletions(-)
New commits:
commit 4e2be8e55d919b5c1db3aad765792b44bf29ef3b
Author: Torsten Grote <grote@kolabsys.com>
Date: Thu Jan 23 16:58:03 2014 +0100
upgrade critical Token and Variable modules
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/tests/token_test.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/tests/token_test.info index \
9c7d245..141ed5c 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/token/tests/token_test.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/tests/token_test.info
@@ -5,9 +5,9 @@ core = 7.x
files[] = token_test.module
hidden = TRUE
-; Information added by drupal.org packaging script on 2012-09-12
-version = "7.x-1.3"
+; Information added by drupal.org packaging script on 2013-02-24
+version = "7.x-1.5"
core = "7.x"
project = "token"
-datestamp = "1347466790"
+datestamp = "1361665026"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.drush.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.drush.inc new file mode \
100644 index 0000000..fc32357
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.drush.inc
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @file
+ * Drush integration for the Token module.
+ */
+
+/**
+ * Implements hook_drush_cache_clear().
+ */
+function token_drush_cache_clear(&$types) {
+ if (function_exists('module_exists') && module_exists('token')) {
+ $types['token'] = 'drush_token_cache_clear_token_info';
+ }
+}
+
+/**
+ * Clear caches internal to Token module.
+ */
+function drush_token_cache_clear_token_info() {
+ token_clear_cache();
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.info index 17a4b57..43fced1 \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.info
@@ -1,15 +1,11 @@
name = Token
description = Provides a user interface for the Token API and some missing core \
tokens. core = 7.x
-files[] = token.module
-files[] = token.install
-files[] = token.tokens.inc
-files[] = token.pages.inc
files[] = token.test
-; Information added by drupal.org packaging script on 2012-09-12
-version = "7.x-1.3"
+; Information added by drupal.org packaging script on 2013-02-24
+version = "7.x-1.5"
core = "7.x"
project = "token"
-datestamp = "1347466790"
+datestamp = "1361665026"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.js index 88a75c1..98d1ac3 \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.js
@@ -14,6 +14,12 @@ Drupal.behaviors.tokenDialog = {
$('a.token-dialog', context).once('token-dialog').click(function() {
var url = $(this).attr('href');
var dialog = $('<div style="display: none" class="loading">' + \
Drupal.t('Loading token browser...') + '</div>').appendTo('body'); +
+ // Emulate the AJAX data sent normally so that we get the same theme.
+ var data = {};
+ data['ajax_page_state[theme]'] = Drupal.settings.ajaxPageState.theme;
+ data['ajax_page_state[theme_token]'] = \
Drupal.settings.ajaxPageState.theme_token; +
dialog.dialog({
title: $(this).attr('title') || Drupal.t('Available tokens'),
width: 700,
@@ -24,7 +30,7 @@ Drupal.behaviors.tokenDialog = {
// Load the token tree using AJAX.
dialog.load(
url,
- {},
+ data,
function (responseText, textStatus, XMLHttpRequest) {
dialog.removeClass('loading');
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.module index \
7bba8a7..88bcc60 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.module
@@ -78,6 +78,7 @@ function token_menu() {
'access callback' => TRUE,
'type' => MENU_CALLBACK,
'file' => 'token.pages.inc',
+ 'theme callback' => 'ajax_base_page_theme',
);
// Devel token pages.
@@ -265,7 +266,7 @@ function token_form_block_admin_configure_alter(&$form, \
$form_state) { $form['settings']['title']['#description'] .= ' ' . t('This field \
supports tokens.'); // @todo Figure out why this token validation does not seem to \
be working here. $form['settings']['title']['#element_validate'][] = \
'token_element_validate';
- $form['settings']['title']['#token_types'] = array();
+ $form['settings']['title'] += array('#token_types' => array());
}
/**
@@ -377,23 +378,26 @@ function token_clear_cache() {
* @see token_entity_info_alter()
* @see http://drupal.org/node/737726
*/
-function token_get_entity_mapping($value_type = 'token', $value = NULL) {
+function token_get_entity_mapping($value_type = 'token', $value = NULL, $fallback = \
FALSE) { $mapping = &drupal_static(__FUNCTION__, array());
if (empty($mapping)) {
foreach (entity_get_info() as $entity_type => $info) {
$mapping[$entity_type] = !empty($info['token type']) ? $info['token type'] : \
$entity_type; }
+ // Allow modules to alter the mapping array.
+ drupal_alter('token_entity_mapping', $mapping);
}
if (!isset($value)) {
- return $mapping;
+ return $value_type == 'token' ? array_flip($mapping) : $mapping;
}
elseif ($value_type == 'token') {
- return array_search($value, $mapping);
+ $return = array_search($value, $mapping);
+ return $return !== FALSE ? $return : ($fallback ? $value : FALSE);
}
elseif ($value_type == 'entity') {
- return isset($mapping[$value]) ? $mapping[$value] : FALSE;
+ return isset($mapping[$value]) ? $mapping[$value] : ($fallback ? $value : \
FALSE); }
}
@@ -739,24 +743,28 @@ function token_element_validate_token_context(&$element, \
&$form_state) {
* Implements hook_form_FORM_ID_alter().
*/
function token_form_field_ui_field_edit_form_alter(&$form, $form_state) {
- if (!isset($form['instance'])) {
+ if (!isset($form['instance']) || !empty($form['#field']['locked'])) {
return;
}
if (($form['#field']['type'] == 'file' || $form['#field']['type'] == 'image') && \
isset($form['instance']['settings']['file_directory']) && \
!module_exists('filefield_paths')) {
// GAH! We can only support global tokens in the upload file directory path.
$form['instance']['settings']['file_directory']['#element_validate'][] = \
'token_element_validate';
- $form['instance']['settings']['file_directory']['#token_types'] = array();
- $form['instance']['settings']['token_tree'] = array(
- '#theme' => 'token_tree',
- '#token_types' => array(),
- '#weight' => $form['instance']['settings']['file_directory']['#weight'] + 0.5,
- );
+ $form['instance']['settings']['file_directory'] += array('#token_types' => \
array());
$form['instance']['settings']['file_directory']['#description'] .= ' ' . t('This \
field supports tokens.'); }
// Note that the description is tokenized via token_field_widget_form_alter().
$form['instance']['description']['#description'] .= '<br />' . t('This field \
supports tokens.'); + $form['instance']['description']['#element_validate'][] = \
'token_element_validate'; + $form['instance']['description'] += array('#token_types' \
=> array()); +
+ $form['instance']['settings']['token_tree'] = array(
+ '#theme' => 'token_tree',
+ '#token_types' => array(),
+ '#dialog' => TRUE,
+ '#weight' => $form['instance']['description']['#weight'] + 0.5,
+ );
}
/**
@@ -775,6 +783,7 @@ function token_form_system_actions_configure_alter(&$form, \
$form_state) { $form['token_tree'] = array(
'#theme' => 'token_tree',
'#token_types' => 'all',
+ '#dialog' => TRUE,
'#weight' => 100,
);
// @todo Add token validation to the action fields that can use tokens.
@@ -836,10 +845,11 @@ function token_form_user_admin_settings_alter(&$form, \
&$form_state) { }
// Add the token tree UI.
- $form['token_tree'] = array(
+ $form['email']['token_tree'] = array(
'#theme' => 'token_tree',
'#token_types' => array('user'),
'#show_restricted' => TRUE,
+ '#dialog' => TRUE,
'#weight' => 90,
);
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.pages.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.pages.inc index \
4e281af..2341a9f 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.pages.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.pages.inc
@@ -56,8 +56,8 @@ function token_page_output_tree() {
// a dialog.
$options['dialog'] = FALSE;
- $output = theme('token_tree', array($options));
- print '<html><head><title></title>' . drupal_get_css() . drupal_get_js() . \
'</head>'; + $output = theme('token_tree', $options);
+ print '<html><head>' . drupal_get_css() . drupal_get_js() . '</head>';
print '<body class="token-tree">' . $output . '</body></html>';
drupal_exit();
}
@@ -231,7 +231,7 @@ function _token_clean_css_identifier($id) {
/**
* Menu callback; prints the available tokens and values for an object.
*/
-function token_devel_token_object($entity_type, $entity) {
+function token_devel_token_object($entity_type, $entity, $token_type = NULL) {
$header = array(
t('Token'),
t('Value'),
@@ -243,7 +243,10 @@ function token_devel_token_object($entity_type, $entity) {
'values' => TRUE,
'data' => array($entity_type => $entity),
);
- $tree = token_build_tree($entity_type, $options);
+ if (!isset($token_type)) {
+ $token_type = $entity_type;
+ }
+ $tree = token_build_tree($token_type, $options);
foreach ($tree as $token => $token_info) {
if (!empty($token_info['restricted'])) {
continue;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.test index b7e9582..59fa645 \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.test
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.test
@@ -676,10 +676,12 @@ class TokenEntityTestCase extends TokenTestHelper {
$this->assertIdentical(token_get_entity_mapping('token', 'term'), \
'taxonomy_term');
$this->assertIdentical(token_get_entity_mapping('token', 'vocabulary'), \
'taxonomy_vocabulary');
$this->assertIdentical(token_get_entity_mapping('token', 'invalid'), FALSE);
+ $this->assertIdentical(token_get_entity_mapping('token', 'invalid', TRUE), \
'invalid');
$this->assertIdentical(token_get_entity_mapping('entity', 'node'), 'node');
$this->assertIdentical(token_get_entity_mapping('entity', 'taxonomy_term'), \
'term');
$this->assertIdentical(token_get_entity_mapping('entity', \
'taxonomy_vocabulary'), 'vocabulary');
$this->assertIdentical(token_get_entity_mapping('entity', 'invalid'), FALSE);
+ $this->assertIdentical(token_get_entity_mapping('entity', 'invalid', TRUE), \
'invalid');
// Test that when we send the mis-matched entity type into token_replace()
// that we still get the tokens replaced.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.tokens.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.tokens.inc index \
3dc2d3b..e0c0b5e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/token/token.tokens.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/token/token.tokens.inc
@@ -80,7 +80,7 @@ function token_token_info_alter(&$info) {
foreach ($date_format_types as $date_format_type => $date_format_type_info) {
if (!isset($info['tokens']['date'][$date_format_type])) {
$info['tokens']['date'][$date_format_type] = array(
- 'name' => $date_format_type_info['title'],
+ 'name' => check_plain($date_format_type_info['title']),
'description' => t("A date in '@type' format. (%date)", array('@type' => \
$date_format_type, '%date' => format_date(REQUEST_TIME, $date_format_type))), \
'module' => 'token', );
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/LICENSE.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/LICENSE.txt old mode 100644
new mode 100755
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/includes/menu.variable.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/includes/menu.variable.inc \
index 444800e..c8dcfa2 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/includes/menu.variable.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/includes/menu.variable.inc
@@ -26,6 +26,26 @@ function menu_variable_info($options) {
'description' => t('Select the source for the Secondary links.', array() , \
$options), 'group' => 'menu_settings'
);
+ $variables['menu_parent_[node_type]'] = array(
+ 'type' => 'multiple',
+ 'title' => t('Menu parent'),
+ 'repeat' => array(
+ 'type' => 'select',
+ 'options' => 'menu',
+ ),
+ 'group' => 'menu_settings',
+ 'description' => t('Select the menu parent', array(), $options),
+ );
+ $variables['menu_options_[node_type]'] = array(
+ 'type' => 'multiple',
+ 'title' => t('Menu options'),
+ 'repeat' => array(
+ 'type' => 'options',
+ 'options' => 'menu',
+ ),
+ 'description' => t('Select the available menus',array() , $options),
+ 'group' => 'menu_settings',
+ );
return $variables;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.form.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.form.inc index \
15c8043..08beeed 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.form.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.form.inc
@@ -154,14 +154,19 @@ function variable_form_element_options($variable, $options = \
array()) { }
/**
- * Implement validate callback
+ * Execute submit callbacks for variables in form.
*/
-function variable_form_element_validate($element, &$form_state, $form) {
- $variable = $element['#variable'];
- variable_include($variable);
- $variable['value'] = isset($element['#value']) ? $element['#value'] : NULL;
- if ($error = call_user_func($variable['validate callback'], $variable)) {
- form_error($element, $error);
+function variable_form_submit_callback($form, &$form_state) {
+ if (isset($form['#variable_edit_form'])) {
+ // This may contain some realm options.
+ $options = isset($form['#variable_options']) ? $form['#variable_options'] : \
array(); + foreach ($form['#variable_edit_form'] as $name) {
+ $variable = variable_get_info($name);
+ if ($variable && isset($variable['submit callback'])) {
+ variable_include($variable);
+ $variable['submit callback']($variable, $options, $form, $form_state);
+ }
+ }
}
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.info index \
7ab1e1e..ce3ca59 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.info
@@ -12,9 +12,9 @@ files[] = includes/taxonomy.variable.inc
files[] = includes/translation.variable.inc
files[] = includes/user.variable.inc
files[] = variable.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-2.2"
+; Information added by Drupal.org packaging script on 2014-01-21
+version = "7.x-2.4"
core = "7.x"
project = "variable"
-datestamp = "1358075138"
+datestamp = "1390310315"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.module index \
781124f..472bba7 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.module
@@ -415,17 +415,36 @@ function variable_hook_info() {
* Form for variable list
*
* @param $list
- * Variable name or list of variable names
+ * Variable name or list of variable names.
+ * @param $options
+ * Optional array with variable options.
*/
-function variable_edit_form($form, $form_state, $list, $options = array()) {
- // Pass on the values on the form for further reference.
- $form['#variable_edit_form'] = $list;
- module_load_include('form.inc', 'variable');
+function variable_edit_form($form, &$form_state, $list, $options = array()) {
+ $list = is_array($list) ? $list : array($list);
+ $form = variable_base_form($form, $form_state, $list, $options);
$form += variable_edit_subform($list, $options);
return variable_settings_form($form, $options);
}
/**
+ * Build base form for variable list without fields.
+ *
+ * @param $list
+ * List of variable names.
+ * @param $options
+ * Optional array with variable options.
+ */
+function variable_base_form($form, &$form_state, $list, $options = array()) {
+ form_load_include($form_state, 'form.inc', 'variable');
+ // Pass on the values on the form for further reference.
+ $form['#variable_edit_form'] = $list;
+ $form['#variable_options'] = $options;
+ // Run submit callback for variables in form.
+ $form['#submit'][] = 'variable_form_submit_callback';
+ return $form;
+}
+
+/**
* Form elements for variable list.
*
* @param $list
@@ -682,7 +701,23 @@ function variable_form_alter(&$form, &$form_state, $form_id) {
}
}
+/**
+ * Implement validate callback.
+ *
+ * This needs to be in the module as it may be needed by form ajax callbacks.
+ */
+function variable_form_element_validate($element, &$form_state, $form) {
+ $options = isset($form['#variable_options']) ? $form['#variable_options'] : \
array(); + $variable = $element['#variable'];
+ variable_include($variable);
+ $variable['value'] = isset($element['#value']) ? $element['#value'] : NULL;
+
+ $error = $variable['validate callback']($variable, $options, $element, $form, \
$form_state);
+ if ($error) {
+ form_error($element, $error);
+ }
+}
/**
* Implements hook_module_implements_alter().
@@ -765,6 +800,7 @@ function variable_settings_form_submit($form, &$form_state) {
form_state_values_clean($form_state);
// This may contain some realm options.
$options = isset($form['#variable_options']) ? $form['#variable_options'] : \
array(); +
// Now run regular settings submission but using variable_set_value()
foreach ($form_state['values'] as $key => $value) {
if (is_array($value) && isset($form_state['values']['array_filter'])) {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.variable.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.variable.inc index \
0ab3331..d03679e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.variable.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable.variable.inc
@@ -93,6 +93,7 @@ function variable_variable_type_info() {
'element' => array('#type' => 'textfield', '#size' => 15, '#maxlength' => 10),
'token' => TRUE,
'validate callback' => 'variable_validate_number',
+ 'format callback' => 'variable_format_number',
);
// Select multiple options from multiple choices
$type['options'] = array(
@@ -275,6 +276,21 @@ function variable_format_empty($variable) {
}
/**
+ * Format variable as number.
+ */
+function variable_format_number($variable, $options = array()) {
+ if (is_numeric($variable['value'])) {
+ return (string)$variable['value'];
+ }
+ elseif (empty($variable['value'])) {
+ return '';
+ }
+ else {
+ return check_plain($variable['value']);
+ }
+}
+
+/**
* Format variable as string. Either check plain for filter_xss.
*/
function variable_format_string($variable, $options = array()) {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_admin/variable_admin.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_admin/variable_admin.info
index 7b78612..b13dbe7 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_admin/variable_admin.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_admin/variable_admin.info
@@ -3,9 +3,9 @@ description = Variable Administration UI
dependencies[] = variable
package = Variable
core = 7.x
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-2.2"
+; Information added by Drupal.org packaging script on 2014-01-21
+version = "7.x-2.4"
core = "7.x"
project = "variable"
-datestamp = "1358075138"
+datestamp = "1390310315"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.info
deleted file mode 100644
index d9ee706..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.info
+++ /dev/null
@@ -1,11 +0,0 @@
-name = Variable advanced
-description = Provides access to advanced low level variables. By using this you \
will be able to break your site badly.
-dependencies[] = variable
-package = Variable
-core = 7.x
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-2.2"
-core = "7.x"
-project = "variable"
-datestamp = "1358075138"
-
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.module
deleted file mode 100644
index 1ec1275..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.module
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-/**
- * @file
- * Drupal module - Advanced variable otpions.
- */
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.variable.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.variable.inc
deleted file mode 100644
index 5bd408e..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_advanced/variable_advanced.variable.inc
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * @file
- * Advanced variables.
- */
-
-/**
- * Implements hook_variable_group_info().
- */
-function variable_advanced_variable_group_info() {
- $groups['advanced'] = array(
- 'title' => t('Advanced options'),
- 'description' => t('Advanced settings not usually exposed. Changing these \
variables may seriously break your site so make sure you know what \
you do.'),
- );
- return $groups;
-}
-
-/**
- * Implements hook_variable_info().
- */
-function variable_advanced_variable_info($options) {
- // Bootstrap caching options
- $variables['page_cache_invoke_hooks'] = array(
- 'title' => t('Cache invoke hooks'),
- 'type' => 'enable',
- 'default' => 1,
- 'group' => 'advanced',
- 'description' => T('Invoke <em>boot</em> and <em>exit</em> hooks when the page \
is served from cache.'),
- );
- $variables['actions_max_stack'] = array(
- 'title' => t('Actions recursion level'),
- 'type' => 'number',
- 'default' => 35,
- 'group' => 'advanced',
- 'description' => t('Maximum recursion level for actions before the execution is \
aborted.', array(), $options),
- );
- // Bootstrap language variables.
- $variables['language_count'] = array(
- 'title' => t('Language count'),
- 'type' => 'number',
- 'default' => 1,
- 'group' => 'advanced',
- 'description' => t('Number of enabled languages, used for quick bootstrap. Not \
to be changed manually.', array(), $options),
- );
- $variables['language_types'] = array(
- 'title' => t('Language types'),
- 'type' => 'array',
- 'default callback' => 'drupal_language_types',
- 'group' => 'advanced',
- 'description' => t('Available language types.'),
- );
- // Bootstrap proxy configuration
- $variables['reverse_proxy'] = array(
- 'title' => t('Reverse proxy'),
- 'type' => 'enable',
- 'default' => 0,
- 'group' => 'advanced',
- 'description' => t('If Drupal is behind a reverse proxy, we use the \
X-Forwarded-For header instead of $_SERVER[\'REMOTE_ADDR\'], which would be the IP \
address of the proxy server, and not the client\'s. The actual header name can be \
configured by the reverse_proxy_header variable.', array(), \
$options),
- );
- $variables['reverse_proxy_header'] = array(
- 'title' => t('Reverse proxy header'),
- 'default' => 'HTTP_X_FORWARDED_FOR',
- 'group' => 'advanced',
- );
- $variables['reverse_proxy_addresses'] = array(
- 'title' => t('Reverse proxy addresses'),
- 'type' => 'array',
- 'group' => 'advanced',
- 'default' => array(),
- 'description' => t('If an array of known reverse proxy IPs is provided, then \
trust the XFF header if request really comes from one of them.', \
array(), $options),
- );
- return $variables;
-}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_example/variable_example.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_example/variable_example.info
index 64d6ff0..c4ea743 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_example/variable_example.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_example/variable_example.info
@@ -6,9 +6,9 @@ package = Example modules
core = 7.x
files[] = variable_example.variable.inc
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-2.2"
+; Information added by Drupal.org packaging script on 2014-01-21
+version = "7.x-2.4"
core = "7.x"
project = "variable"
-datestamp = "1358075138"
+datestamp = "1390310315"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.form.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.form.inc
index 8805d9a..2050ba7 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.form.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.form.inc
@@ -86,7 +86,10 @@ function variable_realm_edit_variables_form($form, &$form_state, \
$realm_name, $r $form['realm_name'] = array('#type' => 'value', '#value' => \
$realm_name); $form['realm_key'] = array('#type' => 'value', '#value' => \
$realm_key); $options['realm'] = variable_realm($realm_name, $realm_key);
+
if ($variable_list = $controller->getEnabledVariables()) {
+ $form = variable_base_form($form, $form_state, $variable_list, $options);
+
// Group variables by variable group for vertical tabls
$group_list = array();
foreach ($variable_list as $variable_name) {
@@ -150,6 +153,11 @@ function variable_realm_form_key_selector($realm_name, \
$current_key) { $element_name = VARIABLE_REALM_FORM_SWITCHER . $realm_name;
$query_name = 'variable_realm_' . $realm_name . '_key';
$controller = variable_realm_controller($realm_name);
+ $keys = $controller->getAllKeys();
+ // Don't show selector if there aren't any keys to select.
+ if (empty($keys)) {
+ return array();
+ }
$form[$element_name] = array(
'#type' => 'fieldset',
'#title' => t('There are %name variables in this form', array('%name' => \
$controller->getVariableName())), @@ -159,7 +167,7 @@ function \
variable_realm_form_key_selector($realm_name, $current_key) { // Replace only this \
element on current query string, there may be others. $current_query = $_GET;
unset($current_query['q']);
- foreach ($controller->getAllKeys() as $realm_key => $key_name) {
+ foreach ($keys as $realm_key => $key_name) {
$query[VARIABLE_REALM_QUERY_STRING . $realm_name] = $realm_key;
$link = l($key_name, $_GET['q'], array('query' => $query + $current_query));
$items[] = $current_key == $realm_key ? '<strong>' . $link . '</strong>' : \
$link;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.info
index e1f56c6..f31aa86 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.info
@@ -8,9 +8,9 @@ version = 7.x-2.x
files[] = variable_realm.class.inc
files[] = variable_realm_union.class.inc
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-2.2"
+; Information added by Drupal.org packaging script on 2014-01-21
+version = "7.x-2.4"
core = "7.x"
project = "variable"
-datestamp = "1358075138"
+datestamp = "1390310315"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.module
index b980741..174eaa7 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.module
@@ -600,6 +600,10 @@ function _variable_realm_invoke_all() {
foreach (module_list() as $module) {
if (module_hook($module, $hook) && $merge = call_user_func_array($module . '_' . \
$hook, $args)) { $result = drupal_array_merge_deep($result, $merge);
+ // Add module name to each of the realms provided by the module.
+ foreach (array_keys($merge) as $key) {
+ $result[$key] += array('module' => $module);
+ };
unset($merge);
}
}
@@ -610,7 +614,7 @@ function _variable_realm_invoke_all() {
* Implements hook_form_FORM_ID_alter()
*/
function variable_realm_form_system_theme_settings_alter(&$form, &$form_state, \
$form_id) {
- module_load_include('form.inc', 'variable_realm');
+ form_load_include($form_state, 'form.inc', 'variable_realm');
$theme_variable = $form['var']['#value'];
foreach (_variable_realm_variable_settings_form_list() as $realm_name => \
$variables) { if (in_array($theme_variable, variable_children($variables))) {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.variable.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.variable.inc
index 5d6897b..7ed7f25 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.variable.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_realm/variable_realm.variable.inc
@@ -47,7 +47,7 @@ function variable_realm_variable_type_info() {
* Implements hook_variable_settings_form_alter().
*/
function variable_realm_variable_settings_form_alter(&$form, &$form_state, $form_id) \
{
- module_load_include('form.inc', 'variable_realm');
+ form_load_include($form_state, 'form.inc', 'variable_realm');
foreach (_variable_realm_variable_settings_form_list() as $realm_name => \
$variables) {
if ($realm_variables = _variable_realm_variable_settings_form_alter($form, \
$realm_name, variable_children($variables))) { \
$form['#realm_variables'][$realm_name] = $realm_variables;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_store/variable_store.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_store/variable_store.info
index 1da3f39..809eea2 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_store/variable_store.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_store/variable_store.info
@@ -8,9 +8,9 @@ version = 7.x-2.x
files[] = variable_store.class.inc
files[] = variable_store.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-2.2"
+; Information added by Drupal.org packaging script on 2014-01-21
+version = "7.x-2.4"
core = "7.x"
project = "variable"
-datestamp = "1358075138"
+datestamp = "1390310315"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_views/variable_views.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_views/variable_views.info
index 0098950..1a04e05 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_views/variable_views.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/variable/variable_views/variable_views.info
@@ -9,9 +9,9 @@ files[] = includes/views_plugin_argument_default_variable.inc
files[] = includes/views_handler_field_variable_title.inc
files[] = includes/views_handler_field_variable_value.inc
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-2.2"
+; Information added by Drupal.org packaging script on 2014-01-21
+version = "7.x-2.4"
core = "7.x"
project = "variable"
-datestamp = "1358075138"
+datestamp = "1390310315"
commit bb4c82f7ff77a04d0b9e8920fe6cad35a3280ad0
Author: Torsten Grote <grote@kolabsys.com>
Date: Thu Jan 23 15:26:35 2014 +0100
update Chaos tool suite module as well
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/API.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/API.txt index 2df7e22..e0441d6 \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/API.txt
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/API.txt
@@ -1,8 +1,12 @@
-Current API Version: 2.0.5
+Current API Version: 2.0.8
Please note that the API version is an internal number and does not match release \
numbers. It is entirely possible that releases will not increase the API version \
number, and increasing this number too often would burden contrib module maintainers \
who need to keep up with API changes.
This file contains a log of changes to the API.
+API Version 2.0.8
+ Introduce ctools_class_add().
+ Introduce ctools_class_remove().
+
API Version 2.0.7
All ctools object cache database functions can now accept session_id as an \
optional argument to facilitate using non-session id keys.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/bulk_export/bulk_export.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/bulk_export/bulk_export.info \
index 6f57712..d27ea9a 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/bulk_export/bulk_export.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/button.css \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/button.css index \
91a6044..15e484b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/button.css
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/button.css
@@ -1,4 +1,3 @@
-/* $Id$ */
.ctools-button-processed {
border-style: solid;
@@ -29,4 +28,4 @@
.ctools-button li a {
padding-left: 12px;
padding-right: 12px;
-}
\ No newline at end of file
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/dropbutton.css \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/dropbutton.css index \
7825111..5e3ea24 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/dropbutton.css
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/css/dropbutton.css
@@ -1,4 +1,3 @@
-/* $Id$ */
.ctools-dropbutton-processed {
padding-right: 18px;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.api.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.api.php index \
1aef57c..a7ab783 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.api.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.api.php
@@ -203,5 +203,66 @@ function hook_ctools_content_subtype_alter($subtype, $plugin) {
}
/**
+ * Alter the definition of an entity context plugin.
+ *
+ * @param array $plugin
+ * An associative array defining a plugin.
+ * @param array $entity
+ * The entity info array of a specific entity type.
+ * @param string $plugin_id
+ * The plugin ID, in the format NAME:KEY.
+ */
+function hook_ctools_entity_context_alter(&$plugin, &$entity, $plugin_id) {
+ ctools_include('context');
+ switch ($plugin_id) {
+ case 'entity_id:taxonomy_term':
+ $plugin['no ui'] = TRUE;
+ case 'entity:user':
+ $plugin = ctools_get_context('user');
+ unset($plugin['no ui']);
+ unset($plugin['no required context ui']);
+ break;
+ }
+}
+
+/**
+ * Alter the definition of entity context plugins.
+ *
+ * @param array $plugins
+ * An associative array of plugin definitions, keyed by plugin ID.
+ *
+ * @see hook_ctools_entity_context_alter()
+ */
+function hook_ctools_entity_contexts_alter(&$plugins) {
+ $plugins['entity_id:taxonomy_term']['no ui'] = TRUE;
+}
+
+/**
+ * Change cleanstring settings.
+ *
+ * @param array $settings
+ * An associative array of cleanstring settings.
+ *
+ * @see ctools_cleanstring()
+ */
+function hook_ctools_cleanstring_alter(&$settings) {
+ // Convert all strings to lower case.
+ $settings['lower case'] = TRUE;
+}
+
+/**
+ * Change cleanstring settings for a specific clean ID.
+ *
+ * @param array $settings
+ * An associative array of cleanstring settings.
+ *
+ * @see ctools_cleanstring()
+ */
+function hook_ctools_cleanstring_CLEAN_ID_alter(&$settings) {
+ // Convert all strings to lower case.
+ $settings['lower case'] = TRUE;
+}
+
+/**
* @} End of "addtogroup hooks".
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.info index \
c3e56fb..8a7b0b6 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.install index \
4a6f55c..1f961f1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.install
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.install
@@ -26,7 +26,7 @@ function ctools_requirements($phase) {
}
if (!function_exists('error_get_last')) {
- $requirements['ctools_php_52']['title'] = t('CTools PHP requirements');
+ $requirements['ctools_php_52']['title'] = t('CTools PHP requirements');
$requirements['ctools_php_52']['description'] = t('CTools requires certain \
features only available in PHP 5.2.0 or higher.'); \
$requirements['ctools_php_52']['severity'] = REQUIREMENT_WARNING;
$requirements['ctools_php_52']['value'] = t('PHP !version', array('!version' \
=> phpversion())); @@ -52,6 +52,14 @@ function ctools_schema_2() {
// update the 'name' field to be 128 bytes long:
$schema['ctools_object_cache']['fields']['name']['length'] = 128;
+ // Update the 'data' field to be type 'blob'.
+ $schema['ctools_object_cache']['fields']['data'] = array(
+ 'type' => 'blob',
+ 'size' => 'big',
+ 'description' => 'Serialized data being stored.',
+ 'serialize' => TRUE,
+ );
+
// DO NOT MODIFY THIS TABLE -- this definition is used to create the table.
// Changes to this table must be made in schema_3 or higher.
$schema['ctools_css_cache'] = array(
@@ -194,4 +202,18 @@ function ctools_update_6007() {
return $ret;
}
-
+/**
+ * ctools_object_cache needs to be defined as a blob.
+ */
+function ctools_update_6008() {
+ db_delete('ctools_object_cache')
+ ->execute();
+
+ db_change_field('ctools_object_cache', 'data', 'data', array(
+ 'type' => 'blob',
+ 'size' => 'big',
+ 'description' => 'Serialized data being stored.',
+ 'serialize' => TRUE,
+ )
+ );
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.module index \
7dfc989..f014e74 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools.module
@@ -367,6 +367,52 @@ function ctools_set_no_blocks($blocks = FALSE) {
$status = $blocks;
}
+/**
+ * Add an array of classes to the body.
+ *
+ * @param mixed $classes
+ * A string or an array of class strings to add.
+ * @param string $hook
+ * The theme hook to add the class to. The default is 'html' which will
+ * affect the body tag.
+ */
+function ctools_class_add($classes, $hook = 'html') {
+ if (!is_array($classes)) {
+ $classes = array($classes);
+ }
+
+ $static = &drupal_static('ctools_process_classes', array());
+ if (!isset($static[$hook]['add'])) {
+ $static[$hook]['add'] = array();
+ }
+ foreach ($classes as $class) {
+ $static[$hook]['add'][] = $class;
+ }
+}
+
+/**
+ * Remove an array of classes from the body.
+ *
+ * @param mixed $classes
+ * A string or an array of class strings to remove.
+ * @param string $hook
+ * The theme hook to remove the class from. The default is 'html' which will
+ * affect the body tag.
+ */
+function ctools_class_remove($classes, $hook = 'html') {
+ if (!is_array($classes)) {
+ $classes = array($classes);
+ }
+
+ $static = &drupal_static('ctools_process_classes', array());
+ if (!isset($static[$hook]['remove'])) {
+ $static[$hook]['remove'] = array();
+ }
+ foreach ($classes as $class) {
+ $static[$hook]['remove'][] = $class;
+ }
+}
+
// -----------------------------------------------------------------------
// Drupal core hooks
@@ -574,6 +620,36 @@ function ctools_page_token_processing($children, $elements) {
return $children;
}
+/**
+ * Implements hook_process().
+ *
+ * Add and remove CSS classes from the variables array. We use process so that
+ * we alter anything added in the preprocess hooks.
+ */
+function ctools_process(&$variables, $hook) {
+ if (!isset($variables['classes'])) {
+ return;
+ }
+
+ $classes = drupal_static('ctools_process_classes', array());
+
+ // Process the classses to add.
+ if (!empty($classes[$hook]['add'])) {
+ $add_classes = array_map('drupal_clean_css_identifier', $classes[$hook]['add']);
+ $variables['classes_array'] = \
array_unique(array_merge($variables['classes_array'], $add_classes)); + }
+
+ // Process the classes to remove.
+ if (!empty($classes[$hook]['remove'])) {
+ $remove_classes = array_map('drupal_clean_css_identifier', \
$classes[$hook]['remove']); + $variables['classes_array'] = \
array_diff($variables['classes_array'], $remove_classes); + }
+
+ // Since this runs after template_process(), we need to re-implode the
+ // classes array.
+ $variables['classes'] = implode(' ', $variables['classes_array']);
+}
+
// -----------------------------------------------------------------------
// Menu callbacks that must be in the .module file.
@@ -699,22 +775,6 @@ function ctools_export_ui_task_access($plugin_name, $op, $item = \
NULL) { }
/**
- * Cache callback on behalf of ctools_export_ui.
- */
-function ctools_export_ui_context_cache_get($plugin_name, $key) {
- dsm('should not be called!');
- return;
-}
-
-/**
- * Cache callback on behalf of ctools_export_ui.
- */
-function ctools_export_ui_context_cache_set($plugin_name, $key, $item) {
- dsm('should not be called!');
- return;
-}
-
-/**
* Callback for access control ajax form on behalf of export ui.
*
* Returns the cached access config and contexts used.
@@ -815,6 +875,9 @@ function ctools_ajax_theme_callback() {
}
}
+/**
+ * Implements hook_ctools_entity_context_alter().
+ */
function ctools_ctools_entity_context_alter(&$plugin, &$entity, $plugin_id) {
ctools_include('context');
switch ($plugin_id) {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
index 04c92c3..1019253 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.install
index b1613d8..3f00877 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.install
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.install
@@ -17,7 +17,7 @@ function ctools_access_ruleset_schema_1() {
'bulk export' => TRUE,
'primary key' => 'rsid',
'api' => array(
- 'owner' => 'ctools',
+ 'owner' => 'ctools_access_ruleset',
'api' => 'ctools_rulesets',
'minimum_version' => 1,
'current_version' => 1,
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
index bbf708c..03ccb34 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
index b56e3be..d9c4567 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
index c9f12e7..e4fa534 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.module
index 442969d..01d5338 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.module
@@ -85,8 +85,8 @@ function ctools_plugin_example_explanation_page() {
You can find it in %path.',
array(
'@demo_url' => url('ctools_plugin_example/xxxxx'),
- '!ctools_plugin_example_help' => theme('advanced_help_topic', \
'ctools_plugin_example', 'Chaos-Tools--CTools--Plugin-Examples', \
'title'),
- '!ctools_help' => theme('advanced_help_topic', 'ctools', 'plugins', 'title'),
+ '!ctools_plugin_example_help' => theme('advanced_help_topic', array('module' \
=> 'ctools_plugin_example', 'topic' => 'Chaos-Tools--CTools--Plugin-Examples', 'type' \
=> 'title')), + '!ctools_help' => theme('advanced_help_topic', array('module' => \
'ctools', 'topic' => 'plugins', 'type' => 'title')), '%path' => \
drupal_get_path('module', 'ctools_plugin_example'), )) . '</p>';
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/plugins/content_types/no_context_content_type.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/plugins/content_types/no_context_content_type.inc
index 8b73408..3c02ab8 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/plugins/content_types/no_context_content_type.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/ctools_plugin_example/plugins/content_types/no_context_content_type.inc
@@ -53,8 +53,8 @@ $plugin = array(
function no_context_content_type_render($subtype, $conf, $args, $context) {
$block = new stdClass();
- $ctools_help = theme('advanced_help_topic', 'ctools', 'plugins', 'title');
- $ctools_plugin_example_help = theme('advanced_help_topic', \
'ctools_plugin_example', 'Chaos-Tools--CTools--Plugin-Examples', 'title'); + \
$ctools_help = theme('advanced_help_topic', array('module' => 'ctools', 'topic' => \
'plugins', 'type' => 'title')); + $ctools_plugin_example_help = \
theme('advanced_help_topic', array('module' => 'ctools_plugin_example', 'topic' => \
'Chaos-Tools--CTools--Plugin-Examples', 'type' => 'title'));
// The title actually used in rendering
$block->title = check_plain("No-context content type");
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/drush/ctools.drush.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/drush/ctools.drush.inc index \
bf1df1f..1862dbe 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/drush/ctools.drush.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/drush/ctools.drush.inc
@@ -381,6 +381,7 @@ function ctools_drush_export_info() {
// Get info on these tables, or all tables if none specified.
$info = _ctools_drush_export_info($table_names, $load);
+ $schemas = $info['schemas'];
$exportables = $info['exportables'];
if (empty($exportables)) {
@@ -416,11 +417,12 @@ function ctools_drush_export_info() {
}
// Build a tabular output as default.
else {
- $header = $tables_only ? array() : array(dt('Base table'), dt('Exportables'));
+ $header = $tables_only ? array() : array(dt('Module'), dt('Base table'), \
dt('Exportables')); $rows = array();
foreach ($exportables as $table => $info) {
if (is_array($info)) {
$row = array(
+ $schemas[$table]['module'],
$table,
// Machine name is better for this?
shellColours::getColouredOutput(implode("\n", array_keys($info)), \
'light_green') . "\n", @@ -434,7 +436,7 @@ function ctools_drush_export_info() {
if (!empty($rows)) {
drush_print("\n");
array_unshift($rows, $header);
- drush_print_table($rows, TRUE, array(20));
+ drush_print_table($rows, TRUE, array(20, 20));
drush_print(dt('Total exportables found: !total', array('!total' => \
$exportable_counts['total'])));
foreach ($exportable_counts['exportables'] as $table_name => $count) {
drush_print(dt('!table_name (!count)', array('!table_name' => $table_name, \
'!count' => $count)), 2);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins-implementing.html \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins-implementing.html \
index 070f08d..c95e72d 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins-implementing.html
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins-implementing.html
@@ -1,6 +1,7 @@
-<p>To implement plugins, you need to implement a single hook in your module to tell \
the system where your plugins live, and then you need to implement one or more .inc \
files that contain the plugin data.</p> +<p>There are two parts to implementing a \
plugin: telling the system where it is, and implementing one or more .inc files that \
contain the plugin data.</p>
-<h2>Telling it where your plugins live</h2>
+<h2>Telling the system where your plugins live</h2>
+<h3>How a module implements plugins</h3>
<p>To implement any plugins at all, you must implement a single function for all \
plugins: <strong>hook_ctools_plugin_directory</strong>. Every time a module loads \
plugins, this hook will be called to see which modules implement those plugins and in \
what directory those plugins will live.</p>
<pre>
@@ -30,13 +31,13 @@ plugins/
my_content_type.inc
layouts/
my_layout.inc
- my_laout.css
+ my_layout.css
my_layout.tpl.php
my_layout_image.png
</pre>
-<h2>How a theme can implement plugins</h2>
-<p>Themes can implement plugins if the plugin owner specified that it's possible in \
its hook_ctools_api_TYPE() call. If so, it is generally exactly the same as modules, \
except for one important difference: themes don't get hook_ctools_plugin_directory(). \
Instead, themes add a line to their info file:</p> +<h3>How a theme implements \
plugins</h3> +<p>Themes can implement plugins if the plugin owner specified that it's \
possible in its hook_ctools_plugin_type() call. If so, it is generally exactly the \
same as modules, except for one important difference: themes don't get \
hook_ctools_plugin_directory(). Instead, themes add a line to their .info file:</p>
<pre>
plugins[module][type] = directory
@@ -54,7 +55,7 @@ $plugin = array(
);
</pre>
-<p>Several values will be filled in for you automatically, but you can override them \
if necessary. They include 'name', 'path', 'file' and 'module'. Additionally, the \
plugin can owner can provide other defaults as well.</p> +<p>Several values will be \
filled in for you automatically, but you can override them if necessary. They include \
'name', 'path', 'file' and 'module'. Additionally, the plugin owner can provide other \
defaults as well.</p>
<p>There are no required keys by the plugin system itself. The only requirements in \
the $plugin array will be defined by the plugin type.</p>
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins.html \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins.html index \
b948411..1e64da0 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins.html
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/help/plugins.html
@@ -1,5 +1,5 @@
<p>The plugins tool allows a module to allow <b>other</b> modules (and themes!) to \
provide plugins which provide some kind of functionality or some kind of task. For \
example, in Panels there are several types of plugins: Content types (which are like \
blocks), layouts (which are page layouts) and styles (which can be used to style a \
panel). Each plugin is represented by a .inc file, and the functionality they offer \
can differ wildly.</p>
-<p>A module which uses plugins can implement a hook describing the plugin (which is \
not necessary, as defaults will be filled in) and then calls a ctools function which \
loads either all the known plugins (used for listing/choosing) or loads a specific \
plugin (used when its known which plugin is needed). From the perspective of the \
plugin system, a plugin is a packet of data, usually some printable info and a list \
of callbacks. It is up to the module implementing plugins to determine what that info \
means and what the callbacks do.</p> +<p>A module which uses plugins can implement a \
hook describing the plugin (which is not necessary, as defaults will be filled in) \
and then calls a ctools function which loads either all the known plugins (used for \
listing/choosing) or a specific plugin (used when it's known which plugin is needed). \
From the perspective of the plugin system, a plugin is a packet of data, usually some \
printable info and a list of callbacks. It is up to the module implementing plugins \
to determine what that info means and what the callbacks do.</p>
-<p>A module which implements plugins must first implement the \
<strong>hook_ctools_plugin_directory</strong> function, which simply tells the system \
which plugins are supported and what directory to look in. Each plugin will then be \
in a .inc file in the directory supplied. The .inc file will contain a specially \
named hook which returns the data necessary to implement the plugin.</p> \ No newline \
at end of file +<p>A module which implements plugins must first implement the \
<strong>hook_ctools_plugin_directory</strong> function, which simply tells the system \
which plugins are supported and what directory to look in. Each plugin will then be \
in a separate .inc file in the directory supplied. The .inc file will contain a \
specially named hook which returns the data necessary to implement \
the plugin.</p>
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/action-links.theme.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/action-links.theme.inc \
new file mode 100644 index 0000000..3a2398a
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/action-links.theme.inc
@@ -0,0 +1,33 @@
+<?php
+/**
+ * @file
+ * Theme function for wrapping menu local actions.
+ */
+
+/**
+ * Delegated implementation of hook_theme()
+ */
+function ctools_action_links_theme(&$items) {
+ $items['ctools_menu_local_actions_wrapper'] = array(
+ 'render element' => 'links',
+ 'file' => 'includes/action-links.theme.inc',
+ );
+}
+
+/**
+ * Render a menu local actions wrapper.
+ *
+ * @param $links
+ * Local actions links.
+ * @param $attributes
+ * An array of attributes to append to the wrapper.
+ */
+function theme_ctools_menu_local_actions_wrapper($variables) {
+ $links = drupal_render($variables['links']);
+
+ if (empty($links)) {
+ return;
+ }
+
+ return '<ul class="action-links">' . $links . '</ul>';
+}
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.menu.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.menu.inc index \
11a686a..93884fc 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.menu.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.menu.inc
@@ -50,6 +50,21 @@ function ctools_content_autocomplete_entity($type, $string = '') {
$matches = array();
if ($type == 'node') {
+ if (!user_access('bypass node access')) {
+ // If the user is able to view their own unpublished nodes, allow them
+ // to see these in addition to published nodes.
+ if (user_access('view own unpublished content')) {
+ $query->condition(db_or()
+ ->condition('b.status', NODE_PUBLISHED)
+ ->condition('b.uid', $GLOBALS['user']->uid)
+ );
+ }
+ else {
+ // If not, restrict the query to published nodes.
+ $query->condition('b.status', NODE_PUBLISHED);
+ }
+ }
+
$query->addTag('node_access');
$query->join('users', 'u', 'b.uid = u.uid');
$query->addField('u', 'name', 'name');
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.plugin-type.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.plugin-type.inc \
index 4c767ae..a0debc3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.plugin-type.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/content.plugin-type.inc
@@ -10,7 +10,7 @@ function ctools_content_plugin_type(&$items) {
'cache' => FALSE,
'process' => array(
'function' => 'ctools_content_process',
- 'file' => 'export-ui.inc',
+ 'file' => 'content.inc',
'path' => drupal_get_path('module', 'ctools') . '/includes',
),
);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context-task-handler.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context-task-handler.inc
index 617f20e..37aa6df 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context-task-handler.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context-task-handler.inc
@@ -143,6 +143,10 @@ function ctools_context_handler_render_handler($task, $subtask, \
$handler, $conte return MENU_ACCESS_DENIED;
case 404:
return MENU_NOT_FOUND;
+ case 410:
+ drupal_add_http_header('Status', '410 Gone');
+ drupal_exit();
+ break;
case 301:
case 302:
case 303:
@@ -451,7 +455,7 @@ function ctools_context_handler_edit_criteria($form, \
&$form_state) { ctools_include('ajax');
ctools_modal_add_plugin_js(ctools_get_access_plugins());
ctools_include('context-access-admin');
- $form_state['module'] = 'page_manager_task_handler';
+ $form_state['module'] = (isset($form_state['module'])) ? $form_state['module'] : \
'page_manager_task_handler'; // Encode a bunch of info into the argument so we can \
get our cache later $form_state['callback argument'] = $form_state['task_name'] . \
'*' . $form_state['handler']->name; $form_state['access'] = \
$form_state['handler']->conf['access'];
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context.inc index \
5c7a4ce..93be748 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/context.inc
@@ -508,6 +508,17 @@ function ctools_context_get_all_converters() {
/**
* Let the context convert an argument based upon the converter that was given.
+ *
+ * @param $context
+ * The context object
+ * @param $converter
+ * The converter to use, which should be a string provided by the converter list.
+ * @param $converter_options
+ * A n array of options to pass on to the generation function. For contexts
+ * that use token module, of particular use is 'sanitize' => FALSE which can
+ * get raw tokens. This should ONLY be used in values that will later be
+ * treated as unsafe user input since these values are by themselves unsafe.
+ * It is particularly useful to get raw values from Field API.
*/
function ctools_context_convert_context($context, $converter, $converter_options = \
array()) { // Contexts without plugins might be optional placeholders.
@@ -633,7 +644,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_-]+(?:\:[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.18/sites/all/modules/ctools/includes/dropbutton.theme.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropbutton.theme.inc \
index 0848666..fcdd5a3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropbutton.theme.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropbutton.theme.inc
@@ -1,10 +1,11 @@
<?php
-// $Id$
/**
* @file
* Provide a javascript based dropbutton menu.
*
+ * An example are the edit/disable/delete links on the views listing page.
+ *
* The dropbutton menu will show up as a button with a clickable twisty pointer
* to the right. When clicked the button will expand, showing the list of links.
*
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropdown.theme.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropdown.theme.inc \
index 2e21559..7e748f5 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropdown.theme.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/dropdown.theme.inc
@@ -4,6 +4,9 @@
* @file
* Provide a javascript based dropdown menu.
*
+ * An example are the dropdown settings in the panels ui, like for adding
+ * new panes.
+ *
* The dropdown menu will show up as a clickable link; when clicked,
* a small menu will slide down beneath it, showing the list of links.
*
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/fields.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/fields.inc index \
dcd6139..162262c 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/fields.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/fields.inc
@@ -170,6 +170,8 @@ function ctools_field_label($field_name) {
*
* @param $field_name
* Either a field instance object or the name of the field.
+ * If the 'field' key is populated it will be used as the field
+ * settings.
* @param $op
* Possible operations include:
* - form
@@ -222,6 +224,7 @@ function ctools_field_label($field_name) {
function ctools_field_invoke_field($field_name, $op, $entity_type, $entity, &$a = \
NULL, &$b = NULL, $options = array()) { if (is_array($field_name)) {
$instance = $field_name;
+ $field = empty($field_name['field']) ? field_info_field($instance['field_name']) \
: $field_name['field']; $field_name = $instance['field_name'];
}
else {
@@ -245,7 +248,6 @@ function ctools_field_invoke_field($field_name, $op, \
$entity_type, $entity, &$a
// Everything from here is unmodified code from _field_invoke() formerly
// inside a foreach loop over the instances.
- $field = field_info_field($field_name);
$function = $options['default'] ? 'field_default_' . $op : $field['module'] . \
'_field_' . $op; if (function_exists($function)) {
// Determine the list of languages to iterate on.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/plugins.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/plugins.inc index \
2dbdd48..0363fcb 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/plugins.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/includes/plugins.inc
@@ -440,7 +440,7 @@ function ctools_plugin_load_includes($info, $filename = NULL) {
$all_files[$info['module']][$info['type']] = array();
// Load all our plugins.
$directories = ctools_plugin_get_directories($info);
- $extension = empty($info['info file']) ? $info['extension'] : 'info';
+ $extension = (empty($info['info file']) || ($info['extension'] != 'inc')) ? \
$info['extension'] : 'info';
foreach ($directories as $module => $path) {
$all_files[$info['module']][$info['type']][$module] = \
file_scan_directory($path, '/\.' . $extension . '$/', array('key' => \
'name'));
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/auto-submit.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/auto-submit.js index \
890dd1f..a3e9aa4 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/auto-submit.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/auto-submit.js
@@ -45,11 +45,11 @@ 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, \
.ctools-auto-submit-exclude)') + .filter('form, select, input:not(:text, \
:submit)')
.once('ctools-auto-submit')
.change(function (e) {
// don't trigger on text change for full-form
- if ($(e.target).is(':not(:text, :submit)')) {
+ if ($(e.target).is(':not(:text, :submit, .ctools-auto-submit-exclude)')) {
triggerSubmit.call(e.target.form);
}
});
@@ -88,6 +88,11 @@ Drupal.behaviors.CToolsAutoSubmit = {
if ($.inArray(e.keyCode, discardKeyCode) === -1) {
timeoutID = setTimeout($.proxy(triggerSubmit, this.form), 500);
}
+ })
+ .bind('change', function (e) {
+ if ($.inArray(e.keyCode, discardKeyCode) === -1) {
+ timeoutID = setTimeout($.proxy(triggerSubmit, this.form), 500);
+ }
});
});
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dependent.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dependent.js index \
07ff021..e9e2447 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dependent.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dependent.js
@@ -97,7 +97,7 @@
else {
switch ($(trigger).attr('type')) {
case 'checkbox':
- var val = $(trigger).attr('checked') || 0;
+ var val = $(trigger).attr('checked') ? true : false;
if (val) {
$(trigger).siblings('label').removeClass('hidden-options').addClass('expanded-options');
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dropbutton.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dropbutton.js index \
49bc107..f505550 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dropbutton.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/dropbutton.js
@@ -1,4 +1,3 @@
-// $Id$
/**
* @file
* Implement a simple, clickable dropbutton menu.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/modal.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/modal.js index \
5b417d0..831649f 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/modal.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/js/modal.js
@@ -399,7 +399,7 @@
}
var parents = $(target).parents().get();
- for (var i in $(target).parents().get()) {
+ for (var i = 0; i < parents.length; ++i) {
var position = $(parents[i]).css('position');
if (position == 'absolute' || position == 'fixed') {
return true;
@@ -434,7 +434,7 @@
}
};
- $(document).bind('keypress', modalEventEscapeCloseHandler);
+ $(document).bind('keydown', modalEventEscapeCloseHandler);
// Close the open modal content and backdrop
function close() {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.admin.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.admin.inc
index c01961b..3dce041 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.admin.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.admin.inc
@@ -158,7 +158,7 @@ function page_manager_get_pages($tasks, &$pages, $task_id = \
NULL) { $visible_path = '';
if (!empty($task['admin path'])) {
foreach (explode('/', $task['admin path']) as $bit) {
- if ($bit[0] != '!') {
+ if (isset($bit[0]) && $bit[0] != '!') {
$path[] = $bit;
}
}
@@ -1126,9 +1126,11 @@ function page_manager_render_operations(&$page, $operations, \
$active_trail, $att // We only render an li for things in the same nav tree.
if (empty($operation['location']) || $operation['location'] == $location) {
if (!is_array($attributes['class'])) {
- dsm($attributes['class']);
+ $attributes['class'] = array($attributes['class']);
}
+
$class = empty($attributes['class']) || !is_array($attributes['class']) ? \
array() : $attributes['class']; +
if ($id == $first) {
$class[] = 'operation-first';
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.api.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.api.php
new file mode 100644
index 0000000..03e2e75
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.api.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @file
+ * Describe hooks provided by the Page Manager module.
+ */
+
+/**
+ * @addtogroup hooks
+ * @{
+ */
+
+/**
+ * @todo.
+ *
+ * @param array $result
+ * @todo.
+ * @param object $page
+ * @todo.
+ */
+function hook_page_manager_operations_alter(&$result, &$page) {
+ // @todo.
+}
+
+/**
+ * @todo.
+ *
+ * @param array $operations
+ * @todo.
+ * @param object $handler
+ * @todo.
+ */
+function hook_page_manager_variant_operations_alter(&$operations, &$handler) {
+ // @todo.
+}
+
+/**
+ * @} End of "addtogroup hooks".
+ */
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.info \
index d3e3588..76095ff 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.module \
index 62f6d27..da99a57 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/page_manager.module
@@ -838,9 +838,6 @@ function page_manager_get_task_subtasks($task) {
if (is_array($retval)) {
return $retval;
}
- else {
- dsm($retval);
- }
}
return array();
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/task_handlers/http_response.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/task_handlers/http_response.inc
index c11dcd7..e5c0141 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/task_handlers/http_response.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/task_handlers/http_response.inc
@@ -105,8 +105,9 @@ $plugin = array(
*/
function page_manager_http_response_codes() {
return array(
- 404 => t('404 Page not found'),
403 => t('403 Access denied'),
+ 404 => t('404 Page not found'),
+ 410 => t('410 Gone'),
301 => t('301 Redirect'),
);
}
@@ -282,4 +283,4 @@ function page_manager_http_response_render($handler, \
$base_contexts, $args, $tes }
return $info;
-}
\ No newline at end of file
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/comment_reply.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/comment_reply.inc
new file mode 100644
index 0000000..0fcf9e2
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/comment_reply.inc
@@ -0,0 +1,162 @@
+<?php
+/**
+ * Specialized implementation of hook_page_manager_task_tasks(). See api-task.html \
for + * more information.
+ */
+function page_manager_comment_reply_page_manager_tasks() {
+ if (!module_exists('comment')) {
+ return;
+ }
+
+ return array(
+ // This is a 'page' task and will fall under the page admin UI
+ 'task type' => 'page',
+
+ 'title' => t('Comment Reply page'),
+ 'admin title' => t('Comment Reply page'),
+ 'admin description' => t('When enabled, this overrides the default Drupal \
behavior for the site contact page at <em>/contact</em>. If no variant is selected, \
the default Drupal contact form will be used.'), + 'admin path' => \
'comment/reply/%node', +
+ // Menu hooks so that we can alter the node/%node menu entry to point to us.
+ 'hook menu alter' => 'page_manager_comment_reply_menu_alter',
+
+ // This is task uses 'context' handlers and must implement these to give the
+ // handler data it needs.
+ 'handler type' => 'context',
+ 'get arguments' => 'page_manager_comment_reply_get_arguments',
+ 'get context placeholders' => 'page_manager_comment_reply_get_contexts',
+
+ // Allow this to be enabled or disabled:
+ 'disabled' => variable_get('page_manager_comment_reply_disabled', TRUE),
+ 'enable callback' => 'page_manager_comment_reply_enable',
+ 'access callback' => 'page_manager_comment_reply_check',
+ );
+}
+
+/**
+ * Callback to enable/disable the page from the UI.
+ */
+function page_manager_comment_reply_enable($cache, $status) {
+ variable_set('page_manager_comment_reply_disabled', $status);
+ // Set a global flag so that the menu routine knows it needs
+ // to set a message if enabling cannot be done.
+ if (!$status) {
+ $GLOBALS['page_manager_enabling_comment_reply'] = TRUE;
+ }
+}
+
+
+/**
+ * Entry point for our overridden comment.
+ *
+ */
+function page_manager_comment_reply_page($node, $pid = NULL){
+ // Load my task plugin
+ $task = page_manager_get_task('comment_reply');
+
+ // Load the node into a context.
+ ctools_include('context');
+ ctools_include('context-task-handler');
+
+ $contexts = ctools_context_handler_get_task_contexts($task, '', array($node, \
$pid)); +
+ if (array_key_exists('argument_cid_3', $contexts) && \
$contexts['argument_cid_3']->data->nid != $node->nid) { + // Attempting to reply \
to a comment not belonging to the current nid. + drupal_set_message(t('The comment \
you are replying to does not exist.'), 'error'); + drupal_goto("node/$node->nid");
+ }
+
+ $output = ctools_context_handler_render($task, '', $contexts, array($node, $pid));
+ if ($output != FALSE) {
+ return $output;
+ }
+
+ $function = 'comment_reply';
+ foreach (module_implements('page_manager_override') as $module) {
+ $call = $module . '_page_manager_override';
+ if (($rc = $call('comment_reply')) && function_exists($rc)) {
+ $function = $rc;
+ break;
+ }
+ }
+
+ module_load_include('inc', 'comment', 'comment.pages');
+ return $function($node, $pid);
+}
+
+/**
+ * Callback to get arguments provided by this task handler.
+ *
+ * Since this is the node view and there is no UI on the arguments, we
+ * create dummy arguments that contain the needed data.
+ */
+function page_manager_comment_reply_get_arguments($task, $subtask_id) {
+ return array(
+ array(
+ 'keyword' => 'node',
+ 'identifier' => t('Node being commented on'),
+ 'id' => 2,
+ 'name' => 'entity_id:node',
+ 'settings' => array(),
+ ),
+ array(
+ 'keyword' => 'comment',
+ 'identifier' => t('Comment being replied to'),
+ 'id' => 3,
+ 'name' => 'entity_id:comment',
+ 'settings' => array(),
+ ),
+ );
+}
+
+/**
+ * Callback to get context placeholders provided by this handler.
+ */
+function page_manager_comment_reply_get_contexts($task, $subtask_id) {
+ return ctools_context_get_placeholders_from_argument(page_manager_comment_reply_get_arguments($task, \
$subtask_id)); +}
+
+/**
+ * Callback defined by page_manager_node_view_page_manager_tasks().
+ *
+ * Alter the node view input so that node view comes to us rather than the
+ * normal node view process.
+ */
+function page_manager_comment_reply_menu_alter(&$items, $task) {
+ if (variable_get('page_manager_comment_reply_disabled', TRUE)) {
+ return;
+ }
+ // Override the node view handler for our purpose.
+ $callback = $items['comment/reply/%node']['page callback'];
+ if ($callback == 'comment_reply' || variable_get('page_manager_override_anyway', \
FALSE)) { + $items['comment/reply/%node']['page callback'] = \
'page_manager_comment_reply_page'; + $items['comment/reply/%node']['file path'] = \
$task['path']; + $items['comment/reply/%node']['file'] = $task['file'];
+ }
+ else {
+ // automatically disable this task if it cannot be enabled.
+ variable_set('page_manager_comment_reply_disabled', TRUE);
+ if (!empty($GLOBALS['page_manager_enabling_comment_reply'])) {
+ drupal_set_message(t('Page manager module is unable to enable \
comment/reply/%node because some other module already has overridden with \
%callback.', array('%callback' => $callback)), 'error'); + }
+ }
+
+ // @todo override node revision handler as well?
+}
+
+/**
+ * Callback to determine if a page is accessible.
+ *
+ * @param $task
+ * The task plugin.
+ * @param $subtask_id
+ * The subtask id
+ * @param $contexts
+ * The contexts loaded for the task.
+ * @return
+ * TRUE if the current user can access the page.
+ */
+function page_manager_comment_reply_access_check($task, $subtask_id, $contexts) {
+ $context = reset($contexts);
+ return TRUE;
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc
index 6933a54..e276570 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/term_view.inc
@@ -106,44 +106,90 @@ function page_manager_term_view_menu_alter(&$items, $task) {
* to run with it. If no one does, it passes through to Drupal core's
* term view, which is term_page_view().
*/
-function page_manager_term_view_page($term) {
- // Assign the term name as the page title, just as the original page
- // callback did.
+function page_manager_term_view_page($term, $depth = NULL) {
+ // Prep the term to be displayed so all of the regular hooks are triggered.
+ // Rather than calling taxonomy_term_page() directly, as it that would
+ // potentially load nodes that were not necessary, execute some of the code
+ // prior to identifying the correct CTools or Page Manager task handler and
+ // only proceed with the rest of the code if necessary.
+
+ // Assign the term name as the page title.
drupal_set_title($term->name);
- // While we ordinarily should never actually get feeds through here,
- // just in case
+ // If there is a menu link to this term, the link becomes the last part
+ // of the active trail, and the link name becomes the page title.
+ // Thus, we must explicitly set the page title to be the node title.
+ $uri = entity_uri('taxonomy_term', $term);
+
+ // Set the term path as the canonical URL to prevent duplicate content.
+ drupal_add_html_head_link(array('rel' => 'canonical', 'href' => url($uri['path'], \
$uri['options'])), TRUE); + // Set the non-aliased path as a default shortlink.
+ drupal_add_html_head_link(array('rel' => 'shortlink', 'href' => url($uri['path'], \
array_merge($uri['options'], array('alias' => TRUE)))), TRUE); +
+ // Trigger the main
+ $build = taxonomy_term_show($term);
+
// Load my task plugin
$task = page_manager_get_task('term_view');
// Load the term into a context.
ctools_include('context');
ctools_include('context-task-handler');
- $contexts = ctools_context_handler_get_task_contexts($task, '', array($term));
+ $contexts = ctools_context_handler_get_task_contexts($task, '', array($term, \
$depth));
if (empty($contexts)) {
return drupal_not_found();
}
+ // Build the full output using the configured CTools plugin.
$output = ctools_context_handler_render($task, '', $contexts, array($term->tid));
if ($output !== FALSE) {
return $output;
}
- $function = 'taxonomy_term_page';
+ // Try loading an override plugin.
foreach (module_implements('page_manager_override') as $module) {
$call = $module . '_page_manager_override';
if (($rc = $call('term_view')) && function_exists($rc)) {
- $function = $rc;
- break;
+ return $rc($node);
}
}
- // Otherwise, fall back.
- if ($function == 'taxonomy_term_page') {
- module_load_include('inc', 'taxonomy', 'taxonomy.pages');
+ // Otherwise, fall back to replicating the output normally generated by
+ // taxonomy_term_page().
+
+ // Build breadcrumb based on the hierarchy of the term.
+ $current = (object) array(
+ 'tid' => $term->tid,
+ );
+ // @todo This overrides any other possible breadcrumb and is a pure hard-coded
+ // presumption. Make this behavior configurable per vocabulary or term.
+ $breadcrumb = array();
+ while ($parents = taxonomy_get_parents($current->tid)) {
+ $current = array_shift($parents);
+ $breadcrumb[] = l($current->name, 'taxonomy/term/' . $current->tid);
+ }
+ $breadcrumb[] = l(t('Home'), NULL);
+ $breadcrumb = array_reverse($breadcrumb);
+ drupal_set_breadcrumb($breadcrumb);
+ drupal_add_feed('taxonomy/term/' . $term->tid . '/feed', 'RSS - ' . $term->name);
+
+ if ($nids = taxonomy_select_nodes($term->tid, TRUE, \
variable_get('default_nodes_main', 10))) { + $nodes = node_load_multiple($nids);
+ $build += node_view_multiple($nodes);
+ $build['pager'] = array(
+ '#theme' => 'pager',
+ '#weight' => 5,
+ );
+ }
+ else {
+ $build['no_content'] = array(
+ '#prefix' => '<p>',
+ '#markup' => t('There is currently no content classified with this term.'),
+ '#suffix' => '</p>',
+ );
}
- return $function($term);
+ return $build;
}
/**
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/user_edit.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/user_edit.inc
index 3d98426..6d0135d 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/user_edit.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/page_manager/plugins/tasks/user_edit.inc
@@ -52,6 +52,17 @@ function page_manager_user_edit_menu_alter(&$items, $task) {
$items['user/%user/edit']['page arguments'] = array(1);
$items['user/%user/edit']['file path'] = $task['path'];
$items['user/%user/edit']['file'] = $task['file'];
+ if (($categories = _user_categories()) && (count($categories) > 1)) {
+ foreach ($categories as $key => $category) {
+ // 'account' is already handled by the MENU_DEFAULT_LOCAL_TASK.
+ if ($category['name'] != 'account') {
+ $items['user/%user_category/edit/' . $category['name']]['page callback'] = \
'page_manager_user_edit_page'; + $items['user/%user_category/edit/' . \
$category['name']]['page arguments'] = array(1, 3); + \
$items['user/%user_category/edit/' . $category['name']]['file path'] = $task['path']; \
+ $items['user/%user_category/edit/' . $category['name']]['file'] = \
$task['file']; + }
+ }
+ }
}
else {
// automatically disable this task if it cannot be enabled.
@@ -69,7 +80,9 @@ function page_manager_user_edit_menu_alter(&$items, $task) {
* to run with it. If no one does, it passes through to Drupal core's
* user edit, which is drupal_get_form('user_profile_form',$account).
*/
-function page_manager_user_edit_page($account) {
+function page_manager_user_edit_page($account, $category = 'account') {
+ // Store the category on the user for later usage.
+ $account->user_category = $category;
// Load my task plugin:
$task = page_manager_get_task('user_edit');
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_bundle.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_bundle.inc \
index ed68096..e07a048 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_bundle.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_bundle.inc
@@ -1,5 +1,4 @@
<?php
-// $Id$
/**
* @file
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_field_value.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_field_value.inc
index 59b01fb..e5857d8 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_field_value.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/access/entity_field_value.inc
@@ -98,6 +98,7 @@ function ctools_entity_field_value_ctools_access_settings($form, \
&$form_state, $ foreach (element_children($form['settings']) as $element) {
unset($form['settings'][$element]['#weight']);
}
+
// Need more logic here to handle compound fields.
foreach ($columns as $column) {
if (isset($conf[$column]) && is_array($conf[$column])) {
@@ -105,12 +106,13 @@ function \
ctools_entity_field_value_ctools_access_settings($form, &$form_state, $ if \
(is_numeric($delta) && is_array($conf_value)) {
$form['settings'][$field_name][LANGUAGE_NONE][$delta]['value']['#default_value'] \
= $conf_value['value']; }
- else {
- $form['settings'][$field_name][LANGUAGE_NONE]['#default_value'] = \
$conf[$column];
- }
}
}
+ else {
+ $form['settings'][$field_name][LANGUAGE_NONE]['#default_value'] = \
$conf[$column]; + }
}
+
return $form;
}
@@ -148,29 +150,29 @@ function ctools_entity_field_value_ctools_access_check($conf, \
$context, $plugin) 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) {
- $conf_value_array = \
_ctools_entity_field_value_ctools_access_get_conf_field_values($values, \
$langcode);
- if (empty($conf_value_array)) {
- return FALSE;
- }
+ if (isset($conf[$field_name])) {
+ // We have settings for this field.
+ $conf_value_array = \
_ctools_entity_field_value_ctools_access_get_conf_field_values($conf[$field_name], \
$langcode); + if (empty($conf_value_array)) {
+ return FALSE;
+ }
- // Check field value.
- foreach ($field_items as $field_value) {
- 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;
- }
+ // Check field value.
+ foreach ($field_items as $field_value) {
+ foreach ($field_value as $field_column => $value) {
+ // Iterate through config values.
+ foreach ($conf_value_array as $conf_value) {
+ // Check access only for stored in config column values.
+ if (isset($conf_value[$field_column]) && $value == \
$conf_value[$field_column]) { + return TRUE;
}
}
}
}
}
}
+
return FALSE;
}
@@ -221,15 +223,17 @@ function ctools_entity_field_value_ctools_access_summary($conf, \
$context, $plugi $options = array('language' => LANGUAGE_NONE);
ctools_include('fields');
$display = field_get_display($instance, $view_mode, $entity);
- $display['type'] = 'list_default';
- $function = $display['module'] . '_field_formatter_view';
- $items = isset($entity->{$field_name}[LANGUAGE_NONE]) ? \
$entity->{$field_name}[LANGUAGE_NONE] : array();
- if (function_exists($function)) {
- $elements = $function($entity_type, $entity, $field, $instance, LANGUAGE_NONE, \
$items, $display);
- }
- $value_keys = array_keys($values);
- foreach ($value_keys as $key => $value) {
- $values[$value] = $elements[$key]['#markup'];
+ if (isset($display['module'])) {
+ $display['type'] = 'list_default';
+ $function = $display['module'] . '_field_formatter_view';
+ $items = isset($entity->{$field_name}[LANGUAGE_NONE]) ? \
$entity->{$field_name}[LANGUAGE_NONE] : array(); + if (function_exists($function)) \
{ + $elements = $function($entity_type, $entity, $field, $instance, \
LANGUAGE_NONE, $items, $display); + }
+ $value_keys = array_keys($values);
+ foreach ($value_keys as $key => $value) {
+ $values[$value] = isset($elements[$key]['#markup']) ? \
$elements[$key]['#markup'] : ''; + }
}
$values = array_merge($keys, $values);
return t($string, $values);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/arguments/user_edit.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/arguments/user_edit.inc \
index fc77f80..32b2b81 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/arguments/user_edit.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/arguments/user_edit.inc
@@ -44,5 +44,4 @@ function ctools_user_edit_context($arg = NULL, $conf = NULL, \
$empty = FALSE) {
// This will perform a node_access check, so we don't have to.
return ctools_context_create('user_edit_form', $account);
- return NULL;
}
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/block/block.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/block/block.inc
index f5b0063..9d55e8a 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/block/block.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/block/block.inc
@@ -85,6 +85,10 @@ function _ctools_block_content_type_content_type($module, $delta, \
$block) {
* doesn't cache its results anyway.
*/
function _ctools_block_load_blocks() {
+ if (!module_exists('block')) {
+ return array();
+ }
+
$blocks = &drupal_static(__FUNCTION__, NULL);
if (!isset($blocks)) {
global $theme_key;
@@ -142,8 +146,8 @@ function ctools_block_content_type_render($subtype, $conf) {
// 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;
}
+ $block = (object) $block;
if (empty($block)) {
return;
@@ -152,7 +156,7 @@ function ctools_block_content_type_render($subtype, $conf) {
$block->module = $module;
$block->delta = $delta;
- if ($module == 'block') {
+ if ($module == 'block' && !empty($info) && isset($info->title)) {
$block->title = $info->title;
}
else if (isset($block->subject)) {
@@ -280,7 +284,7 @@ function ctools_block_content_type_admin_title($subtype, $conf) {
*/
function ctools_block_content_type_admin_info($subtype, $conf) {
list($module, $delta) = _ctools_block_get_module_delta($subtype, $conf);
- $block = (object) module_invoke($module, 'block', 'view', $delta);
+ $block = (object) module_invoke($module, 'block_view', $delta);
// Sanitize the block because <script> tags can hose javascript up:
if (!empty($block->content)) {
@@ -493,11 +497,11 @@ function ctools_user_login_pane_render($subtype, $conf, \
$panel_args, $contexts) $info->module = $module;
$info->delta = $delta;
- $block = new stdClass;
- $block->subject = t('User login');
+ $block = array();
+ $block['subject'] = t('User login');
// Manually set the content (rather than invoking block_view) because the
// block implementation won't render on certain URLs.
- $block->content = drupal_get_form('user_login_block');
+ $block['content'] = drupal_get_form('user_login_block');
// Allow modules to modify the block before it is viewed, via either
// hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc
new file mode 100644
index 0000000..f31a702
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/comment/comment_reply_form.inc
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @file
+ * Ctools content-type plugin to provide a comment-reply form (replying either
+ * to a node or to another comment).
+ */
+
+// Only provide the plugin in the comment module is enabled.
+if (module_exists('comment')) {
+ $plugin = array(
+ 'single' => TRUE,
+ 'title' => t('Comment Reply Form'),
+ 'icon' => 'icon_comment.png',
+ 'description' => t('A form to add a new comment reply.'),
+ 'required context' => array(
+ new ctools_context_required(t('Node'), 'node'),
+ new ctools_context_optional(t('Comment'), 'comment'),
+ ),
+ 'category' => t('Comment'),
+ 'render callback' => 'ctools_comment_reply_form_content_type_render',
+ 'defaults' => array('anon_links' => false),
+ );
+}
+
+function ctools_comment_reply_form_content_type_render($subtype, $conf, $panel_args, \
$context) { +
+ $comment = ($context[1]->identifier == 'No context') ? NULL : \
clone($context[1]->data); + $block = new stdClass();
+ $block->module = 'comments';
+ if ($comment) $block->delta = $comment->cid;
+ $block->title = t('Add comment');
+ $node = $context[0]->data;
+
+ module_load_include('inc', 'comment', 'comment.pages');
+ $block->content = comment_reply($node, ($comment ? $comment->cid : NULL));
+
+ return $block;
+}
+
+function ctools_comment_reply_form_content_type_admin_title($subtype, $conf, \
$context) { + return t('"@s" comment form', array('@s' => $context[0]->identifier));
+}
+
+function ctools_comment_reply_form_content_type_edit_form($form, &$form_state) {
+ return $form;
+}
+
+function ctools_comment_reply_form_content_type_edit_form_submit($form, \
&$form_state) { +}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
index 0183fc6..56fb76a 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
@@ -104,7 +104,12 @@ function ctools_entity_form_field_content_type_render($subtype, \
$conf, $panel_ar function \
ctools_entity_form_field_content_type_admin_title($subtype, $conf, $context) { \
list($entity_type, $field_name) = explode(':', $subtype, 2);
- $field = field_info_instance($entity_type, $field_name, \
$context->restrictions['type'][0]); + if (!empty($context->restrictions)) {
+ $field = field_info_instance($entity_type, $field_name, \
$context->restrictions['type'][0]); + }
+ else {
+ $field = array('label' => $subtype);
+ }
return t('"@s" @field form', array('@s' => $context->identifier, '@field' => \
$field['label'])); }
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_context/node_title.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_context/node_title.inc
index 6a52306..bec8982 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_context/node_title.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_context/node_title.inc
@@ -13,6 +13,9 @@ $plugin = array(
'category' => t('Node'),
'defaults' => array(
'link' => TRUE,
+ 'markup' => 'none',
+ 'id' => '',
+ 'class' => '',
),
);
@@ -30,11 +33,27 @@ function ctools_node_title_content_type_render($subtype, $conf, \
$panel_args, $co // Load information about the node type.
$type = node_type_get_type($node);
+ // Generate the title
+ $content = !empty($conf['link']) ? l($node->title, 'node/' . $node->nid) : \
check_plain($node->title); +
+ // Build any surrounding markup if so configured
+ if (isset($conf['markup']) && $conf['markup'] != 'none') {
+ $markup = '<' . $conf['markup'];
+ if (!empty($conf['id'])) {
+ $markup .= ' id="' . $conf['id'] . '"';
+ }
+ if (!empty($conf['class'])) {
+ $markup .= ' class="' . $conf['class'] . '"';
+ }
+ $markup .= '>' . $content . '</' . $conf['markup'] . '>' . "\n";
+ $content = $markup;
+ }
+
// Build the content type block.
$block = new stdClass();
$block->module = 'node_title';
$block->title = $type->title_label;
- $block->content = !empty($conf['link']) ? l($node->title, 'node/' . $node->nid) : \
check_plain($node->title); + $block->content = $content;
$block->delta = $node->nid;
return $block;
@@ -46,6 +65,34 @@ function ctools_node_title_content_type_render($subtype, $conf, \
$panel_args, $co function ctools_node_title_content_type_edit_form($form, \
&$form_state) { $conf = $form_state['conf'];
+ $form['markup'] = array(
+ '#title' => t('Title tag'),
+ '#type' => 'select',
+ '#options' => array(
+ 'none' => t('- No tag -'),
+ 'h1' => t('h1'),
+ 'h2' => t('h2'),
+ 'h3' => t('h3'),
+ 'h4' => t('h4'),
+ 'h5' => t('h5'),
+ 'h6' => t('h6'),
+ 'div' => t('div'),
+ ),
+ '#default_value' => $conf['markup'],
+ );
+
+ $form['id'] = array(
+ '#title' => t('CSS id to use'),
+ '#type' => 'textfield',
+ '#default_value' => $conf['id'],
+ );
+
+ $form['class'] = array(
+ '#title' => t('CSS class to use'),
+ '#type' => 'textfield',
+ '#default_value' => $conf['class'],
+ );
+
$form['link'] = array(
'#title' => t('Link to node'),
'#type' => 'checkbox',
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_form/node_form_language.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_form/node_form_language.inc
new file mode 100644
index 0000000..2043c1c
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/node_form/node_form_language.inc
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+ 'single' => TRUE,
+ 'icon' => 'icon_node_form.png',
+ 'title' => t('Node form languages'),
+ 'description' => t('The language selection form.'),
+ 'required context' => new ctools_context_required(t('Form'), 'node_form'),
+ 'category' => t('Form'),
+);
+
+function ctools_node_form_language_content_type_render($subtype, $conf, $panel_args, \
&$context) { + $block = new stdClass();
+ $block->module = t('node_form');
+
+ $block->delta = 'language-options';
+
+ if (isset($context->form)) {
+ if (!empty($context->form['language'])) {
+ $block->content['language'] = $context->form['language'];
+ unset($context->form['language']);
+ }
+ }
+ else {
+ $block->content = t('Node language form.');
+ }
+ return $block;
+}
+
+function ctools_node_form_language_content_type_admin_title($subtype, $conf, \
$context) { + return t('"@s" node form language field', array('@s' => \
$context->identifier)); +}
+
+function ctools_node_form_language_content_type_edit_form($form, &$form_state) {
+ // provide a blank form so we have a place to have context setting.
+ return $form;
+}
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/page/page_actions.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/page/page_actions.inc
index e8762d4..c20c408 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/page/page_actions.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/page/page_actions.inc
@@ -26,7 +26,7 @@ $plugin = array(
*/
function ctools_page_actions_content_type_render($subtype, $conf, $panel_args) {
$block = new stdClass();
- $block->content = menu_local_actions();
+ $block->content = theme('ctools_menu_local_actions_wrapper', array('links' => \
menu_local_actions()));
return $block;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
index 4585611..dc3124b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
@@ -49,7 +49,7 @@ function ctools_term_list_content_type_render($subtype, $conf, \
$panel_args, $con
case 'parent':
$terms = taxonomy_get_parents($term->tid);
- $block->title = format_plural(count($terms), 'Parent term', 'Parent terms');
+ $block->title = count($terms) == 1 ? t('Parent term') : t('Parent terms');
break;
case 'sibling':
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/user_context/user_profile.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/user_context/user_profile.inc
index 3e769d6..6c41882 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/user_context/user_profile.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/content_types/user_context/user_profile.inc
@@ -21,7 +21,7 @@ $plugin = array(
*/
function ctools_user_profile_content_type_render($subtype, $conf, $panel_args, \
$context) { $account = isset($context->data) ? clone($context->data) : NULL;
- if (!$account || ($account->access == 0 && !user_access('administer users'))) {
+ if (!$account) {
return NULL;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/string.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/string.inc \
index c53acae..0ea5e52 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/string.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/string.inc
@@ -15,7 +15,7 @@ $plugin = array(
'description' => t('A context that is just a string.'),
'context' => 'ctools_context_create_string',
'keyword' => 'string',
- 'no ui' => TRUE,
+ 'no ui' => FALSE,
'context name' => 'string',
'convert list' => array(
'raw' => t('Raw string'),
@@ -45,7 +45,7 @@ function ctools_context_create_string($empty, $data = NULL, $conf = \
FALSE) {
if ($data !== FALSE ) {
$context->data = $data;
- $context->title = check_plain($data);
+ $context->title = ($conf) ? check_plain($data['identifier']) : \
check_plain($data); return $context;
}
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/user_edit_form.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/user_edit_form.inc
index 89ee2b4..da0cca0 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/user_edit_form.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/contexts/user_edit_form.inc
@@ -30,16 +30,29 @@ $plugin = array(
* are not always created from the UI.
*/
function ctools_context_create_user_edit_form($empty, $user = NULL, $conf = FALSE) {
- static $created;
+ // Determine the user category.
+ $category = !empty($conf['category']) ? $conf['category'] : FALSE;
+ unset($conf['category']);
+
+ // Return previously created contexts, per category.
+ static $created = array();
+ if (!empty($created[$category])) {
+ return $created[$category];
+ }
+ // If no category was specified, use the default 'account'.
+ if (!$category) {
+ $category = 'account';
+ }
+
$context = new ctools_context(array('form', 'user_edit', 'user_form', \
'user_edit_form', 'user', 'entity:user')); + // Store this context for later.
+ $created[$category] = $context;
$context->plugin = 'user_edit_form';
-
- if ($empty || (isset($created) && $created)) {
+ if ($empty) {
return $context;
}
- $created = TRUE;
- if ($conf) {
+ if (!empty($conf)) {
// In this case, $user is actually our $conf array.
$uid = is_array($user) && isset($user['uid']) ? $user['uid'] : (is_object($user) \
? $user->uid : 0);
@@ -58,7 +71,7 @@ function ctools_context_create_user_edit_form($empty, $user = NULL, \
$conf = FALS if (!empty($user)) {
$form_id = 'user_profile_form';
- $form_state = array('want form' => TRUE, 'build_info' => array('args' => \
array($user))); + $form_state = array('want form' => TRUE, 'build_info' => \
array('args' => array($user, $category)));
$file = drupal_get_path('module', 'user') . '/user.pages.inc';
require_once DRUPAL_ROOT . '/' . $file;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/relationships/user_category_edit_form_from_user.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/relationships/user_category_edit_form_from_user.inc
new file mode 100644
index 0000000..28dac72
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/plugins/relationships/user_category_edit_form_from_user.inc
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Plugin to provide an relationship handler for term from node.
+ */
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+ 'title' => t('User category edit form from user'),
+ 'keyword' => 'user_category_form',
+ 'description' => t('Adds user category edit form from a user context.'),
+ 'required context' => new ctools_context_required(t('User'), 'user'),
+ 'context' => 'ctools_user_category_edit_form_from_user_context',
+);
+
+/**
+ * Return a new context based on an existing context.
+ */
+function ctools_user_category_edit_form_from_user_context($context, $conf) {
+ if (empty($context->data)) {
+ return ctools_context_create_empty('user_edit_form', NULL);
+ }
+
+ if (isset($context->data->user_category)) {
+ return ctools_context_create('user_edit_form', $context->data, array('category' \
=> $context->data->user_category)); + }
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/stylizer/stylizer.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/stylizer/stylizer.info index \
9c7f117..888cc8e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/stylizer/stylizer.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/context.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/context.test index \
b5f6fb1..bdf14e3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/context.test
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/context.test
@@ -23,6 +23,10 @@ class CtoolsContextKeywordsSubstitutionTestCase extends \
DrupalWebTestCase {
// Run tests on some edge cases.
$checks = array(
+ '%node:changed:raw:' => array(
+ "{$node->changed}:",
+ t('Multi-level token has been replaced. Colon left untouched.'),
+ ),
'%node:title' => array(
"{$node->title}",
t('Keyword and converter have been replaced.'),
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
index 2d975c3..669c4ae 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_plugin_test.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_plugin_test.info \
index 6d5e9cd..5bb61ed 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_plugin_test.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/ctools_plugin_test.info
@@ -7,11 +7,13 @@ files[] = ctools.plugins.test
files[] = object_cache.test
files[] = css.test
files[] = context.test
+files[] = math_expression.test
+files[] = math_expression_stack.test
hidden = TRUE
-; Information added by drupal.org packaging script on 2012-08-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression.test new \
file mode 100644 index 0000000..730e079
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression.test
@@ -0,0 +1,129 @@
+<?php
+
+/**
+ * @file
+ * Contains \CtoolsMathExpressionTestCase.
+ */
+
+/**
+ * Tests the MathExpression library of ctools.
+ */
+class CtoolsMathExpressionTestCase extends DrupalWebTestCase {
+ public static function getInfo() {
+ return array(
+ 'name' => 'CTools math expression tests',
+ 'description' => 'Test the math expression library of ctools.',
+ 'group' => 'Chaos Tools Suite',
+ );
+ }
+
+ public function setUp() {
+ parent::setUp('ctools', 'ctools_plugin_test');
+ }
+
+ /**
+ * Returns a random double between 0 and 1.
+ */
+ protected function rand01() {
+ return rand(0, PHP_INT_MAX) / PHP_INT_MAX;
+ }
+
+ /**
+ * A custom assertion with checks the values in a certain range.
+ */
+ protected function assertFloat($first, $second, $delta = 0.0000001, $message = '', \
$group = 'Other') { + return $this->assert(abs($first - $second) <= $delta, \
$message ? $message : t('Value @first is equal to value @second.', array('@first' => \
var_export($first, TRUE), '@second' => var_export($second, TRUE))), $group); + }
+
+ public function testArithmetic() {
+ $math_expression = new ctools_math_expr();
+
+ // Test constant expressions.
+ $this->assertEqual($math_expression->e('2'), 2);
+ $random_number = rand(0, 10);
+ $this->assertEqual($random_number, $math_expression->e((string) \
$random_number)); +
+ // Test simple arithmetic.
+ $random_number_a = rand(5, 10);
+ $random_number_b = rand(5, 10);
+ $this->assertEqual($random_number_a + $random_number_b, \
$math_expression->e("$random_number_a + $random_number_b")); + \
$this->assertEqual($random_number_a - $random_number_b, \
$math_expression->e("$random_number_a - $random_number_b")); + \
$this->assertEqual($random_number_a * $random_number_b, \
$math_expression->e("$random_number_a * $random_number_b")); + \
$this->assertEqual($random_number_a / $random_number_b, \
$math_expression->e("$random_number_a / $random_number_b")); +
+ // Test Associative property.
+ $random_number_c = rand(5, 10);
+ $this->assertEqual($math_expression->e("$random_number_a + ($random_number_b + \
$random_number_c)"), $math_expression->e("($random_number_a + $random_number_b) + \
$random_number_c")); + $this->assertEqual($math_expression->e("$random_number_a * \
($random_number_b * $random_number_c)"), $math_expression->e("($random_number_a * \
$random_number_b) * $random_number_c")); +
+ // Test Commutative property.
+ $this->assertEqual($math_expression->e("$random_number_a + $random_number_b"), \
$math_expression->e("$random_number_b + $random_number_a")); + \
$this->assertEqual($math_expression->e("$random_number_a * $random_number_b"), \
$math_expression->e("$random_number_b * $random_number_a")); +
+ // Test Distributive property.
+ $this->assertEqual($math_expression->e("($random_number_a + $random_number_b) * \
$random_number_c"), $math_expression->e("($random_number_a * $random_number_c + \
$random_number_b * $random_number_c)")); +
+ $this->assertEqual(pow($random_number_a, $random_number_b), \
$math_expression->e("$random_number_a ^ $random_number_b")); + }
+
+ public function testBuildInFunctions() {
+ $math_expression = new ctools_math_expr();
+
+ // @todo: maybe run this code multiple times to test different values.
+ $random_double = $this->rand01();
+ $random_int = rand(5, 10);
+ $this->assertFloat(sin($random_double), \
$math_expression->e("sin($random_double)")); + \
$this->assertFloat(cos($random_double), $math_expression->e("cos($random_double)")); \
+ $this->assertFloat(tan($random_double), \
$math_expression->e("tan($random_double)")); + \
$this->assertFloat(exp($random_double), $math_expression->e("exp($random_double)")); \
+ $this->assertFloat(sqrt($random_double), \
$math_expression->e("sqrt($random_double)")); + \
$this->assertFloat(log($random_double), $math_expression->e("ln($random_double)")); + \
$this->assertFloat(round($random_double), \
$math_expression->e("round($random_double)")); + \
$this->assertFloat(abs($random_double + $random_int), $math_expression->e('abs(' . \
($random_double + $random_int) . ')')); + $this->assertEqual(round($random_double \
+ $random_int), $math_expression->e('round(' . ($random_double + $random_int) . \
')')); + $this->assertEqual(ceil($random_double + $random_int), \
$math_expression->e('ceil(' . ($random_double + $random_int) . ')')); + \
$this->assertEqual(floor($random_double + $random_int), $math_expression->e('floor(' \
. ($random_double + $random_int) . ')')); +
+ // @fixme: you can't run time without an argument.
+ $this->assertFloat(time(), $math_expression->e('time(1)'));
+
+ $random_double_a = $this->rand01();
+ $random_double_b = $this->rand01();
+ // @fixme: max/min don't work at the moment.
+// $this->assertFloat(max($random_double_a, $random_double_b), \
$math_expression->e("max($random_double_a, $random_double_b)")); +// \
$this->assertFloat(min($random_double_a, $random_double_b), \
$math_expression->e("min($random_double_a, $random_double_b)")); + }
+
+ public function testVariables() {
+ $math_expression = new ctools_math_expr();
+
+ $random_number_a = rand(5, 10);
+ $random_number_b = rand(5, 10);
+
+ // Store the first random number and use it on calculations.
+ $math_expression->e("var = $random_number_a");
+ $this->assertEqual($random_number_a + $random_number_b, $math_expression->e("var \
+ $random_number_b")); + $this->assertEqual($random_number_a * $random_number_b, \
$math_expression->e("var * $random_number_b")); + \
$this->assertEqual($random_number_a - $random_number_b, $math_expression->e("var - \
$random_number_b")); + $this->assertEqual($random_number_a / $random_number_b, \
$math_expression->e("var / $random_number_b")); + }
+
+ public function testCustomFunctions() {
+ $math_expression = new ctools_math_expr();
+
+ $random_number_a = rand(5, 10);
+ $random_number_b = rand(5, 10);
+
+ // Create a one-argument function.
+ $math_expression->e("f(x) = 2 * x");
+ $this->assertEqual($random_number_a * 2, \
$math_expression->e("f($random_number_a)")); + $this->assertEqual($random_number_b \
* 2, $math_expression->e("f($random_number_b)")); +
+ // Create a two-argument function.
+ $math_expression->e("g(x, y) = 2 * x + y");
+ $this->assertEqual($random_number_a * 2 + $random_number_b, \
$math_expression->e("g($random_number_a, $random_number_b)")); +
+ // Use a custom function in another function.
+ $this->assertEqual(($random_number_a * 2 + $random_number_b) * 2, \
$math_expression->e("f(g($random_number_a, $random_number_b))")); + }
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression_stack.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression_stack.test \
new file mode 100644 index 0000000..8143a55
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/tests/math_expression_stack.test
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * @file
+ * Contains \CtoolsMathExpressionStackTestCase
+ */
+
+/**
+ * Tests the simple MathExpressionStack class.
+ */
+class CtoolsMathExpressionStackTestCase extends DrupalWebTestCase {
+ public static function getInfo() {
+ return array(
+ 'name' => 'CTools math expression stack tests',
+ 'description' => 'Test the stack class of the math expression library.',
+ 'group' => 'Chaos Tools Suite',
+ );
+ }
+
+ public function setUp() {
+ parent::setUp('ctools', 'ctools_plugin_test');
+ }
+
+ public function testStack() {
+ $stack = new ctools_math_expr_stack();
+
+ // Test the empty stack.
+ $this->assertNull($stack->last());
+ $this->assertNull($stack->pop());
+
+ // Add an element and see whether it's the right element.
+ $value = $this->randomName();
+ $stack->push($value);
+ $this->assertIdentical($value, $stack->last());
+ $this->assertIdentical($value, $stack->pop());
+ $this->assertNull($stack->pop());
+
+ // Add multiple elements and see whether they are returned in the right order.
+ $values = array($this->randomName(), $this->randomName(), $this->randomName());
+ foreach ($values as $value) {
+ $stack->push($value);
+ }
+
+ // Test the different elements at different positions with the last() method.
+ $count = count($values);
+ foreach ($values as $key => $value) {
+ $this->assertEqual($value, $stack->last($count - $key));
+ }
+
+ // Pass in a non-valid number to last.
+ $non_valid_number = rand(10, 20);
+ $this->assertNull($stack->last($non_valid_number));
+
+ // Test the order of the poping.
+ $values = array_reverse($values);
+ foreach ($values as $key => $value) {
+ $this->assertEqual($stack->last(), $value);
+ $this->assertEqual($stack->pop(), $value);
+ }
+ $this->assertNull($stack->pop());
+
+ }
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
index deea741..262d81d 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
@@ -144,7 +144,7 @@ function views_content_views_content_type_render($subtype, \
$conf, $panel_args, $ list($cid, $converter) = explode('.', $context_info, 2);
}
if (!empty($contexts[$cid])) {
- $arg = ctools_context_convert_context($contexts[$cid], $converter);
+ $arg = ctools_context_convert_context($contexts[$cid], $converter, \
array('sanitize' => FALSE)); array_splice($args, $count, 0, array($arg));
}
else {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
index a27a26c..10a6a83 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
@@ -156,7 +156,7 @@ function views_content_views_panes_content_type_render($subtype, \
$conf, $panel_a if (isset($contexts[$key])) {
if (strpos($argument['context'], '.')) {
list($context, $converter) = explode('.', $argument['context'], 2);
- $args[] = ctools_context_convert_context($contexts[$key], $converter);
+ $args[] = ctools_context_convert_context($contexts[$key], $converter, \
array('sanitize' => FALSE)); }
else {
$args[] = $contexts[$key]->argument;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/relationships/view_from_argument.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/relationships/view_from_argument.inc
index 4da5fe5..cefc6db 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/relationships/view_from_argument.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/plugins/relationships/view_from_argument.inc
@@ -1,5 +1,4 @@
<?php
-// $Id$
/**
* @file
@@ -77,7 +76,7 @@ function views_content_view_from_argument_context($contexts, $conf) \
{ if (isset($contexts [$key])) {
if (strpos($argument['context'], '.')) {
list($context, $converter) = explode('.', $argument['context'], 2);
- $args[] = ctools_context_convert_context($contexts[$key], $converter);
+ $args[] = ctools_context_convert_context($contexts[$key], $converter, \
array('sanitize' => FALSE)); }
else {
$args[] = $contexts[$key]->argument;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/views_content.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/views_content.info \
index cd7ce44..1782d37 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ctools/views_content/views_content.info
+++ b/kolab.org/www/drupal-7.18/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-18
-version = "7.x-1.2"
+; Information added by drupal.org packaging script on 2013-04-03
+version = "7.x-1.3"
core = "7.x"
project = "ctools"
-datestamp = "1345319204"
+datestamp = "1365013512"
commit 9ec77367e92d9c9dd55f6b4f3d88b09f18e56b49
Author: Torsten Grote <grote@kolabsys.com>
Date: Thu Jan 23 15:16:54 2014 +0100
bring most modules up to date
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_devel/admin_devel.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_devel/admin_devel.info \
index df04a54..6408a1b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_devel/admin_devel.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_devel/admin_devel.info
@@ -4,9 +4,9 @@ package = Administration
core = 7.x
scripts[] = admin_devel.js
-; Information added by drupal.org packaging script on 2012-05-17
-version = "7.x-3.0-rc3"
+; Information added by drupal.org packaging script on 2013-01-31
+version = "7.x-3.0-rc4"
core = "7.x"
project = "admin_menu"
-datestamp = "1337292349"
+datestamp = "1359651687"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu-rtl.css \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu-rtl.css index \
6004de5..9414dcf 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu-rtl.css
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu-rtl.css
@@ -1,50 +1,64 @@
#admin-menu {
- direction: rtl;
text-align: right;
}
-#admin-menu li.admin-menu-action {
+#admin-menu .dropdown .admin-menu-users a {
+ background-position: 10% center;
+ padding-left: 22px;
+ padding-right: 0;
+}
+#admin-menu .dropdown .admin-menu-action,
+#admin-menu .dropdown .admin-menu-search {
float: left;
}
-#admin-menu li.admin-menu-action a {
+#admin-menu .dropdown .admin-menu-action a {
border-left: none;
border-right: 1px solid #323232;
}
/* All lists */
-#admin-menu ul a {
+#admin-menu a {
+ text-align: right;
+}
+#admin-menu .dropdown a {
border-left: 1px solid #323232;
border-right: 0;
- padding: 4px 8px;
- text-align: right;
+}
+#admin-menu .dropdown .admin-menu-tab a {
+ border-left: 1px solid #52565E;
+ border-right: 0;
+}
+#admin-menu .dropdown li li a {
+ border-left: 0;
}
/* All list items */
-#admin-menu li {
+#admin-menu .dropdown li {
float: right;
- position: relative;
}
-#admin-menu li li {
- position: static;
+#admin-menu .dropdown li li {
}
/* Second-level lists */
-#admin-menu li ul {
- right: 0;
+#admin-menu .dropdown li ul {
+ left: auto;
+ right: -999em;
}
/* Third-and-above-level lists */
-#admin-menu li li.expandable ul {
- margin: -20px 160px 0 0;
+#admin-menu .dropdown li li.expandable ul {
+ margin-left: 0;
+ margin-right: 160px;
}
/* Lists nested under hovered list items */
-#admin-menu li.admin-menu-action:hover ul {
+#admin-menu .dropdown li.admin-menu-action:hover ul {
left: 0 !important;
right: auto;
}
/* Second-and-more-level hovering */
-#admin-menu li li.expandable {
- background: #45454A url(images/arrow-rtl.png) no-repeat 5px 7px;
+#admin-menu .dropdown li li.expandable {
+ background-image: url(images/arrow-rtl.png);
+ background-position: 5px 6px;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.admin.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.admin.js index \
6adf3a8..9ee9f36 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.admin.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.admin.js
@@ -1,6 +1,20 @@
(function($) {
/**
+ * Live preview of Administration menu components.
+ */
+Drupal.behaviors.adminMenuLivePreview = {
+ attach: function (context, settings) {
+ $('input[name^="admin_menu_components"]', \
context).once('admin-menu-live-preview') + .change(function () {
+ var target = $(this).attr('rel');
+ $(target).toggle(this.checked);
+ })
+ .trigger('change');
+ }
+};
+
+/**
* Automatically enables required permissions on demand.
*
* Many users do not understand that two permissions are required for the
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.api.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.api.php index \
46646ae..2d212fb 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.api.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.api.php
@@ -41,11 +41,21 @@ function hook_admin_menu_map() {
/**
* Add to the administration menu content before it is rendered.
*
+ * Only use this hook to add new data to the menu structure. Use
+ * hook_admin_menu_output_alter() to *alter* existing data.
+ *
* @param array $content
- * A structured array suitable for drupal_render(), containing:
+ * A structured array suitable for drupal_render(), potentially containing:
* - menu: The administrative menu of links below the path 'admin/*'.
* - icon: The icon menu.
- * - user: The user items and links.
+ * - account: The user account name and log out link.
+ * - users: The user counter.
+ * Additionally, these special properties:
+ * - #components: The actual components contained in $content are configurable
+ * and depend on the 'admin_menu_components' configuration value. #components
+ * holds a copy of that for convenience.
+ * - #complete: A Boolean indicating whether the complete menu should be built,
+ * ignoring the current configuration in #components.
* Passed by reference.
*
* @see hook_admin_menu_output_alter()
@@ -55,45 +65,77 @@ function hook_admin_menu_map() {
* @see theme_admin_menu_links()
*/
function hook_admin_menu_output_build(&$content) {
+ // In case your implementation provides a configurable component, check
+ // whether the component should be displayed:
+ if (empty($content['#components']['shortcut.links']) && !$content['#complete']) {
+ return;
+ }
+
+ // Add new top-level item to the menu.
+ if (isset($content['menu'])) {
+ $content['menu']['myitem'] = array(
+ '#title' => t('My item'),
+ // #attributes are used for list items (LI).
+ '#attributes' => array('class' => array('mymodule-myitem')),
+ '#href' => 'mymodule/path',
+ // #options are passed to l().
+ '#options' => array(
+ 'query' => drupal_get_destination(),
+ // Apply a class on the link (anchor).
+ 'attributes' => array('class' => array('myitem-link-anchor')),
+ ),
+ // #weight controls the order of links in the resulting item list.
+ '#weight' => 50,
+ );
+ }
+ // Add link to the icon menu to manually run cron.
+ if (isset($content['icon'])) {
+ $content['icon']['myitem']['cron'] = array(
+ '#title' => t('Run cron'),
+ '#access' => user_access('administer site configuration'),
+ '#href' => 'admin/reports/status/run-cron',
+ );
+ }
}
/**
* Change the administration menu content before it is rendered.
*
+ * Only use this hook to alter existing data in the menu structure. Use
+ * hook_admin_menu_output_build() to *add* new data.
+ *
* @param array $content
- * A structured array suitable for drupal_render(), containing:
- * - menu: The administrative menu of links below the path 'admin/*'.
- * - icon: The icon menu.
- * - user: The user items and links.
- * Passed by reference.
+ * A structured array suitable for drupal_render(). Passed by reference.
*
* @see hook_admin_menu_output_build()
- * @see admin_menu_links_menu()
- * @see admin_menu_links_icon()
- * @see admin_menu_links_user()
- * @see theme_admin_menu_links()
*/
function hook_admin_menu_output_alter(&$content) {
- // Add new top-level item.
- $content['menu']['myitem'] = array(
- '#title' => t('My item'),
- // #attributes are used for list items (LI).
- '#attributes' => array('class' => array('mymodule-myitem')),
- '#href' => 'mymodule/path',
- // #options are passed to l(). Note that you can apply 'attributes' for
- // links (A) here.
- '#options' => array(
- 'query' => drupal_get_destination(),
- ),
- // #weight controls the order of links in the resulting item list.
- '#weight' => 50,
- );
- // Add link to manually run cron.
- $content['menu']['myitem']['cron'] = array(
- '#title' => t('Run cron'),
- '#access' => user_access('administer site configuration'),
- '#href' => 'admin/reports/status/run-cron',
- );
+}
+
+/**
+ * Return content to be replace via JS in the cached menu output.
+ *
+ * @param bool $complete
+ * A Boolean indicating whether all available components of the menu will be
+ * output and the cache will be skipped.
+ *
+ * @return array
+ * An associative array whose keys are jQuery selectors and whose values are
+ * strings containing the replacement content.
+ */
+function hook_admin_menu_replacements($complete) {
+ $items = array();
+ // If the complete menu is output, then it is uncached and will contain the
+ // current counts already.
+ if (!$complete) {
+ // Check whether the users count component is enabled.
+ $components = variable_get('admin_menu_components', array());
+ if (!empty($components['admin_menu.users']) && ($user_count = \
admin_menu_get_user_count())) { + // Replace the counters in the cached menu \
output with current counts. + $items['.admin-menu-users a'] = $user_count;
+ }
+ }
+ return $items;
}
/**
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.css \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.css index \
0ceec28..fd86dd7 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.css
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.css
@@ -34,7 +34,8 @@
background: transparent url(images/icon_users.png) 90% center no-repeat;
padding-right: 22px;
}
-#admin-menu .dropdown .admin-menu-action {
+#admin-menu .dropdown .admin-menu-action,
+#admin-menu .dropdown .admin-menu-search {
float: right;
}
#admin-menu .dropdown .admin-menu-action a {
@@ -57,31 +58,33 @@ body.admin-menu {
#admin-menu .dropdown {
position: static;
}
-#admin-menu a {
+#admin-menu a,
+#admin-menu li > span {
background: transparent none;
border: none;
color: #EEE;
font-weight: normal;
- text-align: left;
+ text-align: left; /* LTR */
text-decoration: none;
}
-#admin-menu .dropdown a {
- border-right: 1px solid #323232;
+#admin-menu .dropdown a,
+#admin-menu .dropdown li > span {
+ border-right: 1px solid #323232; /* LTR */
display: block;
padding: 4px 8px;
}
#admin-menu .dropdown .admin-menu-tab a {
- border-right: 1px solid #52565E;
+ border-right: 1px solid #52565E; /* LTR */
}
#admin-menu .dropdown li li a {
- border-right: none;
+ border-right: none; /* LTR */
border-top: 1px solid #323232;
}
/* All list items */
#admin-menu .dropdown li {
background-image: none;
- float: left;
+ float: left; /* LTR */
height: 100%;
list-style-image: none;
list-style-type: none;
@@ -108,7 +111,7 @@ body.admin-menu {
#admin-menu .dropdown li ul {
background: none;
display: none;
- left: -999em;
+ left: -999em; /* LTR */
line-height: 1.2em;
margin: 0;
position: absolute;
@@ -117,7 +120,7 @@ body.admin-menu {
/* Third-and-above-level lists */
#admin-menu .dropdown li li.expandable ul {
- margin: -20px 0 0 160px;
+ margin: -20px 0 0 160px; /* LTR */
}
#admin-menu .dropdown li:hover ul ul,
@@ -129,7 +132,7 @@ body.admin-menu {
#admin-menu .dropdown li.iehover ul ul ul ul,
#admin-menu .dropdown li.iehover ul ul ul ul ul {
display: none;
- left: -999em;
+ left: -999em; /* LTR */
}
/* Lists nested under hovered list items */
@@ -144,10 +147,10 @@ body.admin-menu {
#admin-menu .dropdown li li li li.iehover ul,
#admin-menu .dropdown li li li li li.iehover ul {
display: block;
- left: auto;
+ left: auto; /* LTR */
}
#admin-menu .dropdown li.admin-menu-action:hover ul {
- right: 0;
+ right: 0; /* LTR */
}
/* Second-and-more-level hovering */
@@ -184,6 +187,42 @@ body.admin-menu {
width: 90%; /* IE */
}
+/* Search form */
+#admin-menu .admin-menu-search .form-item {
+ margin: 0;
+ padding: 0;
+}
+#admin-menu .admin-menu-search input {
+ background: #fff none center right no-repeat;
+ border: none;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ font-size: 10px;
+ margin: 1px 0;
+ outline: none;
+ padding: 2px 22px 2px 4px;
+ width: 158px;
+}
+
+#admin-menu .dropdown .admin-menu-search-results {
+ display: block !important;
+ left: auto !important;
+ top: 100%;
+}
+#admin-menu .admin-menu-search-results,
+#admin-menu .admin-menu-search-results li {
+ width: 186px;
+}
+
+#admin-menu li.highlight {
+ background-color: #eee !important;
+}
+#admin-menu li.highlight > a {
+ border-color: #ccc !important;
+ color: #111 !important;
+}
+
/* #210615: Mozilla on Mac fix */
html.js fieldset.collapsible div.fieldset-wrapper {
overflow: visible;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.drush.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.drush.inc deleted \
file mode 100644 index a8469a9..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.drush.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-/**
- * Implments hook_drush_exit()
- *
- * This is necessary because drush skips the normal hook_exit() where
- * we build the links.
- */
-function admin_menu_drush_exit() {
- if (function_exists('admin_menu_exit')) {
- admin_menu_exit();
- }
-}
-
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.inc index \
31efaea..e212970 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.inc
@@ -425,6 +425,7 @@ function admin_menu_links_icon() {
$links = array(
'#theme' => 'admin_menu_links',
+ '#wrapper_attributes' => array('id' => 'admin-menu-icon'),
'#weight' => -100,
);
$links['icon'] = array(
@@ -495,52 +496,47 @@ function admin_menu_links_icon() {
),
);
}
+
// Add link to toggle developer modules (performance).
$saved_state = variable_get('admin_menu_devel_modules_enabled', NULL);
$links['icon']['toggle-modules'] = array(
'#title' => isset($saved_state) ? t('Enable developer modules') : t('Disable \
developer modules'), '#weight' => 88,
- '#access' => user_access('administer site configuration'),
+ '#access' => user_access('administer modules'),
'#href' => 'admin_menu/toggle-modules',
'#options' => array(
'query' => $destination + array('token' => \
drupal_get_token('admin_menu/toggle-modules')), ),
);
- // Add Devel module links.
+ // Add Devel module menu links.
if (module_exists('devel')) {
- // Add variable editor.
- $links['icon']['devel-variables'] = array(
- '#title' => t('Variable editor'),
- '#weight' => 20,
- '#access' => user_access('access devel information'),
- '#href' => 'devel/variable',
- );
+ $devel_tree = menu_build_tree('devel');
+ $devel_links = admin_menu_links_menu($devel_tree);
+ if (element_get_visible_children($devel_links)) {
+ $links['icon']['devel'] = array(
+ '#title' => t('Development'),
+ '#weight' => 30,
+ ) + $devel_links;
+ }
}
return $links;
}
/**
- * Build user/action links; mostly account information and links.
+ * Builds the account links.
*
* @see theme_admin_menu_links()
*/
-function admin_menu_links_user() {
+function admin_menu_links_account() {
$links = array(
'#theme' => 'admin_menu_links',
+ '#wrapper_attributes' => array('id' => 'admin-menu-account'),
'#weight' => 100,
);
- // Add link to show current authenticated/anonymous users.
- $links['user-counter'] = array(
- '#title' => admin_menu_get_user_count(),
- '#description' => t('Current anonymous / authenticated users'),
- '#weight' => -90,
- '#attributes' => array('class' => array('admin-menu-action', \
'admin-menu-users')),
- '#href' => (user_access('administer users') ? 'admin/people/people' : 'user'),
- );
$links['account'] = array(
- '#title' => $GLOBALS['user']->name,
+ '#title' => format_username($GLOBALS['user']),
'#weight' => -99,
'#attributes' => array('class' => array('admin-menu-action', \
'admin-menu-account')), '#href' => 'user/' . $GLOBALS['user']->uid,
@@ -551,7 +547,6 @@ function admin_menu_links_user() {
'#attributes' => array('class' => array('admin-menu-action')),
'#href' => 'user/logout',
);
-
// Add Devel module switch user links.
$switch_links = module_invoke('devel', 'switch_user_list');
if (!empty($switch_links) && count($switch_links) > 1) {
@@ -567,7 +562,51 @@ function admin_menu_links_user() {
);
}
}
+ return $links;
+}
+/**
+ * Builds user counter.
+ *
+ * @see theme_admin_menu_links()
+ */
+function admin_menu_links_users() {
+ $links = array(
+ '#theme' => 'admin_menu_links',
+ '#wrapper_attributes' => array('id' => 'admin-menu-users'),
+ '#weight' => 150,
+ );
+ // Add link to show current authenticated/anonymous users.
+ $links['user-counter'] = array(
+ '#title' => admin_menu_get_user_count(),
+ '#description' => t('Current anonymous / authenticated users'),
+ '#weight' => -90,
+ '#attributes' => array('class' => array('admin-menu-action', \
'admin-menu-users')), + '#href' => (user_access('administer users') ? \
'admin/people/people' : 'user'), + );
+ return $links;
+}
+
+/**
+ * Build search widget.
+ *
+ * @see theme_admin_menu_links()
+ */
+function admin_menu_links_search() {
+ $links = array(
+ '#theme' => 'admin_menu_links',
+ '#wrapper_attributes' => array('id' => 'admin-menu-search'),
+ '#weight' => 180,
+ );
+ $links['search'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Search'),
+ '#title_display' => 'attribute',
+ '#attributes' => array(
+ 'placeholder' => t('Search'),
+ 'class' => array('admin-menu-search'),
+ ),
+ );
return $links;
}
@@ -584,20 +623,43 @@ function admin_menu_theme_settings() {
$form['admin_menu_position_fixed'] = array(
'#type' => 'checkbox',
'#title' => t('Keep menu at top of page'),
- '#default_value' => variable_get('admin_menu_position_fixed', 0),
+ '#default_value' => variable_get('admin_menu_position_fixed', 1),
'#description' => t('Displays the administration menu always at the top of the \
browser viewport (even when scrolling the page).'), );
// @todo Re-confirm this with latest browser versions.
$form['admin_menu_position_fixed']['#description'] .= '<br /><strong>' . t('In \
some browsers, this setting may result in a malformed page, an invisible cursor, \
non-selectable elements in forms, or other issues.') . '</strong>';
- $form['admin_menu_cache_client'] = array(
- '#type' => 'checkbox',
- '#title' => t('Cache menu in client-side browser'),
- '#default_value' => variable_get('admin_menu_cache_client', 1),
+
+ $form['advanced'] = array(
+ '#type' => 'vertical_tabs',
+ '#title' => t('Advanced settings'),
);
+ $form['plugins'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Plugins'),
+ '#group' => 'advanced',
+ );
+ $form['plugins']['admin_menu_components'] = array(
+ '#type' => 'checkboxes',
+ '#title' => t('Enabled components'),
+ '#options' => array(
+ 'admin_menu.icon' => t('Icon menu'),
+ 'admin_menu.menu' => t('Administration menu'),
+ 'admin_menu.search' => t('Search bar'),
+ 'admin_menu.users' => t('User counts'),
+ 'admin_menu.account' => t('Account links'),
+ ),
+ );
+ $form['plugins']['admin_menu_components']['#default_value'] = \
array_keys(array_filter(variable_get('admin_menu_components', \
$form['plugins']['admin_menu_components']['#options']))); +
+ $process = element_info_property('checkboxes', '#process', array());
+ $form['plugins']['admin_menu_components']['#process'] = \
array_merge(array('admin_menu_settings_process_components'), $process); + \
$form['#attached']['js'][] = drupal_get_path('module', 'admin_menu') . \
'/admin_menu.admin.js'; +
$form['tweaks'] = array(
'#type' => 'fieldset',
- '#title' => t('Advanced settings'),
+ '#title' => t('System tweaks'),
+ '#group' => 'advanced',
);
$form['tweaks']['admin_menu_tweak_modules'] = array(
'#type' => 'checkbox',
@@ -625,6 +687,16 @@ function admin_menu_theme_settings() {
'#description' => t('Moves the tabs on all pages into the administration menu. \
Only possible for themes using the CSS classes <code>tabs primary</code> and \
<code>tabs secondary</code>.'), );
+ $form['performance'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Performance'),
+ '#group' => 'advanced',
+ );
+ $form['performance']['admin_menu_cache_client'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Cache menu in client-side browser'),
+ '#default_value' => variable_get('admin_menu_cache_client', 1),
+ );
// Fetch all available modules manually, since module_list() only returns
// currently enabled modules, which makes this setting pointless if developer
// modules are currently disabled.
@@ -638,7 +710,7 @@ function admin_menu_theme_settings() {
}
$devel_modules = variable_get('admin_menu_devel_modules', \
_admin_menu_developer_modules()); $devel_modules = array_intersect_key($all_modules, \
array_flip($devel_modules));
- $form['tweaks']['admin_menu_devel_modules_skip'] = array(
+ $form['performance']['admin_menu_devel_modules_skip'] = array(
'#type' => 'checkboxes',
'#title' => t('Developer modules to keep enabled'),
'#default_value' => variable_get('admin_menu_devel_modules_skip', array()),
@@ -653,6 +725,32 @@ function admin_menu_theme_settings() {
}
/**
+ * #process callback for component plugin form element in \
admin_menu_theme_settings(). + */
+function admin_menu_settings_process_components($element) {
+ // Assign 'rel' attributes to all options to achieve a live preview.
+ // Unfortunately, #states relies on wrapping .form-wrapper classes, so it
+ // cannot be used here.
+ foreach ($element['#options'] as $key => $label) {
+ if (!isset($element[$key]['#attributes']['rel'])) {
+ $id = preg_replace('/[^a-z]/', '-', $key);
+ $element[$key]['#attributes']['rel'] = '#' . $id;
+ }
+ }
+ return $element;
+}
+
+/**
+ * Form validation handler for admin_menu_theme_settings().
+ */
+function admin_menu_theme_settings_validate(&$form, &$form_state) {
+ // Change the configured components to Boolean values.
+ foreach ($form_state['values']['admin_menu_components'] as $component => \
&$enabled) { + $enabled = (bool) $enabled;
+ }
+}
+
+/**
* Implementation of hook_form_FORM_ID_alter().
*
* Extends Devel module with Administration menu developer settings.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.info index \
bac8b2e..ee58c66 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.info
@@ -8,9 +8,9 @@ configure = admin/config/administration/admin_menu
dependencies[] = system (>7.10)
files[] = tests/admin_menu.test
-; Information added by drupal.org packaging script on 2012-05-17
-version = "7.x-3.0-rc3"
+; Information added by drupal.org packaging script on 2013-01-31
+version = "7.x-3.0-rc4"
core = "7.x"
project = "admin_menu"
-datestamp = "1337292349"
+datestamp = "1359651687"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.install index \
acbd06b..70e31c6 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.install
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.install
@@ -32,6 +32,7 @@ function admin_menu_install() {
*/
function admin_menu_uninstall() {
// Delete variables.
+ variable_del('admin_menu_components');
variable_del('admin_menu_devel_modules');
variable_del('admin_menu_devel_modules_enabled');
variable_del('admin_menu_devel_modules_skip');
@@ -102,7 +103,9 @@ function admin_menu_update_7303() {
*/
function admin_menu_update_7304() {
// Remove the custom menu used by 6.x-1.x.
- db_delete('menu_custom')->condition('menu_name', 'admin_menu')->execute();
+ if (db_table_exists('menu_custom')) {
+ db_delete('menu_custom')->condition('menu_name', 'admin_menu')->execute();
+ }
// 6.x-1.x cloned the entire link structure below the path 'admin' into a
// separate 'menu_name' "admin_menu" with 'module' "admin_menu". 6.x-3.x and
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.js index \
169eba8..de0bb90 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.js
@@ -85,10 +85,11 @@ Drupal.behaviors.adminMenuCollapsePermissions = {
});
});
});
- // Get fragment from current URL.
- var fragment = window.location.hash || '#';
// Collapse all but the targeted permission rows set.
- $modules.not(':has(' + fragment + ')').trigger('click.admin-menu');
+ if (window.location.hash.length) {
+ $modules = $modules.not(':has(' + window.location.hash + ')');
+ }
+ $modules.trigger('click.admin-menu');
}
}
};
@@ -252,6 +253,144 @@ Drupal.admin.behaviors.hover = function (context, settings, \
$adminMenu) { };
/**
+ * Apply the search bar functionality.
+ */
+Drupal.admin.behaviors.search = function (context, settings, $adminMenu) {
+ // @todo Add a HTML ID.
+ var $input = $('input.admin-menu-search', $adminMenu);
+ // Initialize the current search needle.
+ var needle = $input.val();
+ // Cache of all links that can be matched in the menu.
+ var links;
+ // Minimum search needle length.
+ var needleMinLength = 2;
+ // Append the results container.
+ var $results = $('<div />').insertAfter($input);
+
+ /**
+ * Executes the search upon user input.
+ */
+ function keyupHandler() {
+ var matches, $html, value = $(this).val();
+ // Only proceed if the search needle has changed.
+ if (value !== needle) {
+ needle = value;
+ // Initialize the cache of menu links upon first search.
+ if (!links && needle.length >= needleMinLength) {
+ // @todo Limit to links in dropdown menus; i.e., skip menu additions.
+ links = buildSearchIndex($adminMenu.find('li:not(.admin-menu-action, \
.admin-menu-action li) > a')); + }
+ // Empty results container when deleting search text.
+ if (needle.length < needleMinLength) {
+ $results.empty();
+ }
+ // Only search if the needle is long enough.
+ if (needle.length >= needleMinLength && links) {
+ matches = findMatches(needle, links);
+ // Build the list in a detached DOM node.
+ $html = buildResultsList(matches);
+ // Display results.
+ $results.empty().append($html);
+ }
+ }
+ }
+
+ /**
+ * Builds the search index.
+ */
+ function buildSearchIndex($links) {
+ return $links
+ .map(function () {
+ var text = (this.textContent || this.innerText);
+ // Skip menu entries that do not contain any text (e.g., the icon).
+ if (typeof text === 'undefined') {
+ return;
+ }
+ return {
+ text: text,
+ textMatch: text.toLowerCase(),
+ element: this
+ };
+ });
+ }
+
+ /**
+ * Searches the index for a given needle and returns matching entries.
+ */
+ function findMatches(needle, links) {
+ var needleMatch = needle.toLowerCase();
+ // Select matching links from the cache.
+ return $.grep(links, function (link) {
+ return link.textMatch.indexOf(needleMatch) !== -1;
+ });
+ }
+
+ /**
+ * Builds the search result list in a detached DOM node.
+ */
+ function buildResultsList(matches) {
+ var $html = $('<ul class="dropdown admin-menu-search-results" />');
+ $.each(matches, function () {
+ var result = this.text;
+ var $element = $(this.element);
+
+ // Check whether there is a top-level category that can be prepended.
+ var $category = $element.closest('#admin-menu-wrapper > ul > li');
+ var categoryText = $category.find('> a').text()
+ if ($category.length && categoryText) {
+ result = categoryText + ': ' + result;
+ }
+
+ var $result = $('<li><a href="' + $element.attr('href') + '">' + result + \
'</a></li>'); + $result.data('original-link', $(this.element).parent());
+ $html.append($result);
+ });
+ return $html;
+ }
+
+ /**
+ * Highlights selected result.
+ */
+ function resultsHandler(e) {
+ var $this = $(this);
+ var show = e.type === 'mouseenter' || e.type === 'focusin';
+ $this.trigger(show ? 'showPath' : 'hidePath', [this]);
+ }
+
+ /**
+ * Closes the search results and clears the search input.
+ */
+ function resultsClickHandler(e, link) {
+ var $original = $(this).data('original-link');
+ $original.trigger('mouseleave');
+ $input.val('').trigger('keyup');
+ }
+
+ /**
+ * Shows the link in the menu that corresponds to a search result.
+ */
+ function highlightPathHandler(e, link) {
+ if (link) {
+ var $original = $(link).data('original-link');
+ var show = e.type === 'showPath';
+ // Toggle an additional CSS class to visually highlight the matching link.
+ // @todo Consider using same visual appearance as regular hover.
+ $original.toggleClass('highlight', show);
+ $original.trigger(show ? 'mouseenter' : 'mouseleave');
+ }
+ }
+
+ // Attach showPath/hidePath handler to search result entries.
+ $results.delegate('li', 'mouseenter mouseleave focus blur', resultsHandler);
+ // Hide the result list after a link has been clicked, useful for overlay.
+ $results.delegate('li', 'click', resultsClickHandler);
+ // Attach hover/active highlight behavior to search result entries.
+ $adminMenu.delegate('.admin-menu-search-results li', 'showPath hidePath', \
highlightPathHandler); + // Attach the search input event handler.
+ $input.bind('keyup search', keyupHandler);
+};
+
+/**
* @} End of "defgroup admin_behaviors".
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.module index \
4f4f056..8a8dee1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu.module
@@ -89,7 +89,7 @@ function admin_menu_menu() {
// Menu link callbacks.
$items['admin_menu/toggle-modules'] = array(
'page callback' => 'admin_menu_toggle_modules',
- 'access arguments' => array('administer site configuration'),
+ 'access arguments' => array('administer modules'),
'type' => MENU_CALLBACK,
'file' => 'admin_menu.inc',
);
@@ -182,10 +182,16 @@ function admin_menu_page_build(&$page) {
// Destination query strings are applied via JS.
$settings['destination'] = drupal_http_build_query(drupal_get_destination());
+ // Determine whether we need to show all components and disable all caches.
+ $complete = FALSE;
+ if (current_path() == 'admin/config/administration/admin_menu' && \
$_SERVER['REQUEST_METHOD'] == 'GET') { + $complete = TRUE;
+ }
+
// If the client supports JavaScript and we have a cached menu for the current
// user, only output the hash for the client-side HTTP cache callback URL.
$cid = 'admin_menu:' . $user->uid . ':' . session_id() . ':' . \
$language->language;
- if (!empty($_COOKIE['has_js']) && ($hash = admin_menu_cache_get($cid))) {
+ if (!$complete && !empty($_COOKIE['has_js']) && ($hash = \
admin_menu_cache_get($cid))) { $settings['hash'] = $hash;
// The base path to use for cache requests depends on whether clean URLs
// are enabled, whether Drupal runs in a sub-directory, and on the language
@@ -198,10 +204,10 @@ function admin_menu_page_build(&$page) {
}
// Otherwise, add the full menu to the page.
else {
- $page['page_bottom']['admin_menu']['#markup'] = admin_menu_output();
+ $page['page_bottom']['admin_menu']['#markup'] = admin_menu_output($complete);
}
- $replacements = module_invoke_all('admin_menu_replacements');
+ $replacements = module_invoke_all('admin_menu_replacements', $complete);
if (!empty($replacements)) {
$settings['replacements'] = $replacements;
}
@@ -213,7 +219,7 @@ function admin_menu_page_build(&$page) {
// @see http://drupal.org/node/1473548, http://drupal.org/node/1194528
//$page['#attributes']['class'][] = 'admin-menu';
}
- if ($setting = variable_get('admin_menu_position_fixed', 0)) {
+ if ($setting = variable_get('admin_menu_position_fixed', 1)) {
$settings['position_fixed'] = $setting;
// In fixed positioning, supply a callback function for tableheader.js to
@@ -326,6 +332,9 @@ function admin_menu_cache_set($cid, $data) {
function admin_menu_js_cache() {
global $conf;
+ // Suppress Devel module.
+ $GLOBALS['devel_shutdown'] = FALSE;
+
// Enforce page caching.
$conf['cache'] = 1;
drupal_page_is_cacheable(TRUE);
@@ -384,10 +393,17 @@ function admin_menu_deliver($page_callback_result) {
/**
* Implements hook_admin_menu_replacements().
*/
-function admin_menu_admin_menu_replacements() {
+function admin_menu_admin_menu_replacements($complete) {
$items = array();
- if ($user_count = admin_menu_get_user_count()) {
- $items['.admin-menu-users a'] = $user_count;
+ // If the complete menu is output, then it is uncached and will contain the
+ // current counts already.
+ if (!$complete) {
+ // Check whether the users count component is enabled.
+ $components = variable_get('admin_menu_components', array());
+ if (!empty($components['admin_menu.users']) && ($user_count = \
admin_menu_get_user_count())) { + // Replace the counters in the cached menu \
output with current counts. + $items['.admin-menu-users a'] = $user_count;
+ }
}
return $items;
}
@@ -434,11 +450,16 @@ function admin_menu_session_count($timestamp = 0, $anonymous = \
TRUE) {
/**
* Build the administration menu output.
+ *
+ * @param bool $complete
+ * (optional) Whether to build to the complete menu including all components
+ * and ignore the cache. Defaults to FALSE. Internally used for the settings
+ * page.
*/
-function admin_menu_output() {
+function admin_menu_output($complete = FALSE) {
global $user, $language;
- $cache_server_enabled = variable_get('admin_menu_cache_server', TRUE);
+ $cache_server_enabled = !$complete && variable_get('admin_menu_cache_server', \
TRUE); $cid = 'admin_menu:' . $user->uid . ':' . session_id() . ':' . \
$language->language;
// Try to load and output administration menu from server-side cache.
@@ -458,6 +479,16 @@ function admin_menu_output() {
// Rebuild the output.
if (!isset($content)) {
+ // Retrieve enabled components to display and make them available for others.
+ $components = variable_get('admin_menu_components', array());
+ $components += array(
+ 'admin_menu.menu' => TRUE,
+ 'admin_menu.icon' => TRUE,
+ 'admin_menu.account' => TRUE,
+ );
+ $content['#components'] = $components;
+ $content['#complete'] = $complete;
+
// Add site name as CSS class for development/staging theming purposes. We
// leverage the cookie domain instead of HTTP_HOST to account for many (but
// not all) multi-domain setups (e.g. language-based sub-domains).
@@ -475,15 +506,31 @@ function admin_menu_output() {
// Load menu builder functions.
module_load_include('inc', 'admin_menu');
+ // @todo Move the below callbacks into hook_admin_menu_build()
+ // implementations (and $module.admin_menu.inc).
+
// Add administration menu.
- $content['menu'] = admin_menu_links_menu(admin_menu_tree('management'));
- $content['menu']['#theme'] = 'admin_menu_links';
- // Ensure the menu tree is rendered between the icon and user links.
- $content['menu']['#weight'] = 0;
+ if (!empty($components['admin_menu.menu']) || $complete) {
+ $content['menu'] = admin_menu_links_menu(admin_menu_tree('management'));
+ $content['menu']['#theme'] = 'admin_menu_links';
+ $content['menu']['#wrapper_attributes']['id'] = 'admin-menu-menu';
+ // Ensure the menu tree is rendered between the icon and user links.
+ $content['menu']['#weight'] = 0;
+ }
// Add menu additions.
- $content['icon'] = admin_menu_links_icon();
- $content['user'] = admin_menu_links_user();
+ if (!empty($components['admin_menu.icon']) || $complete) {
+ $content['icon'] = admin_menu_links_icon();
+ }
+ if (!empty($components['admin_menu.account']) || $complete) {
+ $content['account'] = admin_menu_links_account();
+ }
+ if (!empty($components['admin_menu.users']) || $complete) {
+ $content['users'] = admin_menu_links_users();
+ }
+ if (!empty($components['admin_menu.search']) || $complete) {
+ $content['search'] = admin_menu_links_search();
+ }
// Allow modules to enhance the menu.
// Uses '_output' suffix for consistency with the alter hook (see below).
@@ -506,7 +553,7 @@ function admin_menu_output() {
}
// Store the new hash for this user.
- if (!empty($_COOKIE['has_js'])) {
+ if (!empty($_COOKIE['has_js']) && !$complete) {
admin_menu_cache_set($cid, md5($content));
}
@@ -517,6 +564,10 @@ function admin_menu_output() {
* Implements hook_admin_menu_output_build().
*/
function admin_menu_admin_menu_output_build(&$content) {
+ if (!isset($content['menu'])) {
+ return;
+ }
+
// Unassign weights for categories below Configuration.
// An alphabetical order is more natural for a dropdown menu.
if (isset($content['menu']['admin/config'])) {
@@ -623,6 +674,7 @@ function theme_admin_menu_links($variables) {
}
$link = '';
+ // Handle menu links.
if (isset($elements[$path]['#href'])) {
// Strip destination query string from href attribute and apply a CSS class
// for our JavaScript behavior instead.
@@ -631,21 +683,21 @@ function theme_admin_menu_links($variables) {
$elements[$path]['#options']['attributes']['class'][] = \
'admin-menu-destination'; }
- $link .= l($elements[$path]['#title'], $elements[$path]['#href'], \
$elements[$path]['#options']); + $link = l($elements[$path]['#title'], \
$elements[$path]['#href'], $elements[$path]['#options']); }
- elseif (isset($elements[$path]['#title'])) {
+ // Handle plain text items, but do not interfere with menu additions.
+ elseif (!isset($elements[$path]['#type']) && isset($elements[$path]['#title'])) \
{ if (!empty($elements[$path]['#options']['html'])) {
$title = $elements[$path]['#title'];
}
else {
$title = check_plain($elements[$path]['#title']);
}
- if (!empty($elements[$path]['#options']['attributes'])) {
- $link .= '<span' . \
drupal_attributes($elements[$path]['#options']['attributes']) . '>' . $title . \
'</span>';
- }
- else {
- $link .= $title;
+ $attributes = '';
+ if (isset($elements[$path]['#options']['attributes'])) {
+ $attributes = drupal_attributes($elements[$path]['#options']['attributes']);
}
+ $link = '<span' . $attributes . '>' . $title . '</span>';
}
$output .= '<li' . drupal_attributes($elements[$path]['#attributes']) . '>';
@@ -655,7 +707,9 @@ function theme_admin_menu_links($variables) {
// @todo #attributes probably required for UL, but already used for LI.
// @todo Use $element['#children'] here instead.
if ($output) {
- $output = "\n" . '<ul class="dropdown">' . $output . '</ul>';
+ $elements['#wrapper_attributes']['class'][] = 'dropdown';
+ $attributes = drupal_attributes($elements['#wrapper_attributes']);
+ $output = "\n" . '<ul' . $attributes . '>' . $output . '</ul>';
}
return $output;
}
@@ -665,12 +719,12 @@ function theme_admin_menu_links($variables) {
*/
function admin_menu_element_sort($a, $b) {
// @see element_sort()
- $a_weight = (is_array($a) && isset($a['#weight'])) ? $a['#weight'] : 0;
- $b_weight = (is_array($b) && isset($b['#weight'])) ? $b['#weight'] : 0;
+ $a_weight = isset($a['#weight']) ? $a['#weight'] : 0;
+ $b_weight = isset($b['#weight']) ? $b['#weight'] : 0;
if ($a_weight == $b_weight) {
// @see element_sort_by_title()
- $a_title = (is_array($a) && isset($a['#title'])) ? $a['#title'] : '';
- $b_title = (is_array($b) && isset($b['#title'])) ? $b['#title'] : '';
+ $a_title = isset($a['#title']) ? $a['#title'] : '';
+ $b_title = isset($b['#title']) ? $b['#title'] : '';
return strnatcasecmp($a_title, $b_title);
}
return ($a_weight < $b_weight) ? -1 : 1;
@@ -723,6 +777,22 @@ function admin_menu_translated_menu_link_alter(&$item, $map) {
* (optional) A user ID to limit the cache flush to.
*/
function admin_menu_flush_caches($uid = NULL) {
+ // A call to menu_rebuild() will trigger potentially thousands of calls into
+ // menu_link_save(), for which admin_menu has to implement the corresponding
+ // CRUD hooks, in order to take up any menu link changes, since any menu link
+ // change could affect the admin menu (which essentially is an aggregate) and
+ // since there is no other way to get notified about stale caches. The cache
+ // only needs to be flushed once though, so we prevent a ton of needless
+ // subsequent calls with this static.
+ // @see http://drupal.org/node/918538
+ $was_flushed = &drupal_static(__FUNCTION__, array());
+ // $uid can be NULL. PHP automatically converts that into '' (empty string),
+ // which is different to uid 0 (zero).
+ if (isset($was_flushed[$uid])) {
+ return;
+ }
+ $was_flushed[$uid] = TRUE;
+
$cid = 'admin_menu:';
if (isset($uid)) {
$cid .= $uid . ':';
@@ -742,6 +812,7 @@ function admin_menu_flush_caches($uid = NULL) {
*/
function admin_menu_form_alter(&$form, &$form_state, $form_id) {
$global_flush_ids = array(
+ 'admin_menu_theme_settings' => 1,
// Update links for clean/non-clean URLs.
'system_clean_url_settings' => 1,
// Incorporate changed user permissions.
@@ -753,12 +824,12 @@ function admin_menu_form_alter(&$form, &$form_state, $form_id) \
{ );
if (isset($global_flush_ids[$form_id])) {
$form['#submit'][] = 'admin_menu_form_alter_flush_cache_submit';
- }
- // Optionally limit the cache flush to a certain user ID.
- $form_state['admin_menu_uid'] = NULL;
- if ($form_id == 'user_profile_form') {
- $form_state['admin_menu_uid'] = $form_state['user']->uid;
+ // Optionally limit the cache flush to a certain user ID.
+ $form_state['admin_menu_uid'] = NULL;
+ if ($form_id == 'user_profile_form') {
+ $form_state['admin_menu_uid'] = $form_state['user']->uid;
+ }
}
// UX: Add a confirmation to the permissions form to ask the user whether to
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css
index 56e448a..a3e9f3e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css
@@ -16,7 +16,8 @@ html body.admin-menu {
html body.admin-menu-with-shortcuts {
margin-top: 65px !important;
}
-body div#toolbar {
+/* Displace the core Toolbar, if concurrently output. */
+body div#toolbar.toolbar {
top: 30px;
}
@@ -28,11 +29,9 @@ body div#toolbar {
*/
#admin-menu {
font: normal small "Lucida Grande", Verdana, sans-serif;
- margin: 0 -20px;
- padding: 0 20px;
- -moz-box-shadow: 0 3px 20px #000;
- -webkit-box-shadow: 0 3px 20px #000;
- box-shadow: 0 3px 20px #000;
+ -moz-box-shadow: 0 -10px 20px 13px #000;
+ -webkit-box-shadow: 0 -10px 20px 13px #000;
+ box-shadow: 0 -10px 20px 13px #000;
right: 0;
width: auto;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info
index a63b6ce..2514776 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info
@@ -4,9 +4,9 @@ package = Administration
core = 7.x
dependencies[] = admin_menu
-; Information added by drupal.org packaging script on 2012-05-17
-version = "7.x-3.0-rc3"
+; Information added by drupal.org packaging script on 2013-01-31
+version = "7.x-3.0-rc4"
core = "7.x"
project = "admin_menu"
-datestamp = "1337292349"
+datestamp = "1359651687"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module
index 1885fce..74a9ee1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module
@@ -8,6 +8,17 @@
*/
/**
+ * Implements hook_form_FORMID_alter().
+ */
+function admin_menu_toolbar_form_admin_menu_theme_settings_alter(&$form) {
+ // Add the shortcut links as component on behalf of Shortcut module.
+ $form['plugins']['admin_menu_components']['#options']['shortcut.links'] = \
t('Shortcuts'); + // The shortcut bar consists of two elements, so we target their \
class names + // instead of cluttering the markup with additional IDs.
+ $form['plugins']['admin_menu_components']['shortcut.links']['#attributes']['rel'] \
= '.shortcut-toggle, .shortcut-toolbar'; +}
+
+/**
* Implementation of hook_page_build().
*/
function admin_menu_toolbar_page_build(&$page) {
@@ -48,6 +59,9 @@ function admin_menu_toolbar_page_build(&$page) {
* Implements hook_admin_menu_output_build().
*/
function admin_menu_toolbar_admin_menu_output_build(&$content) {
+ if (empty($content['#components']['shortcut.links']) && !$content['#complete']) {
+ return;
+ }
// Add shortcuts toggle.
$content['shortcut-toggle'] = array(
'#access' => module_exists('shortcut'),
@@ -82,17 +96,23 @@ function admin_menu_toolbar_admin_menu_output_build(&$content) {
*/
function admin_menu_toolbar_admin_menu_output_alter(&$content) {
// Add a class to top-level items for styling.
- foreach (element_children($content['menu']) as $link) {
- $content['menu'][$link]['#attributes']['class'][] = \
'admin-menu-toolbar-category'; + if (isset($content['menu'])) {
+ foreach (element_children($content['menu']) as $link) {
+ $content['menu'][$link]['#attributes']['class'][] = \
'admin-menu-toolbar-category'; + }
}
// Alter icon.
- unset($content['icon']['icon']['#theme']);
- $content['icon']['icon']['#title'] = '<span>' . t('Home') . '</span>';
- $content['icon']['icon']['#attributes']['class'][] = \
'admin-menu-toolbar-category'; + if (isset($content['icon'])) {
+ unset($content['icon']['icon']['#theme']);
+ $content['icon']['icon']['#title'] = '<span>' . t('Home') . '</span>';
+ $content['icon']['icon']['#attributes']['class'][] = \
'admin-menu-toolbar-category'; + }
// Alter user account link.
- $content['user']['account']['#title'] = t('Hello <strong>@username</strong>', \
array('@username' => $content['user']['account']['#title']));
- $content['user']['account']['#options']['html'] = TRUE;
+ if (isset($content['account'])) {
+ $content['account']['account']['#title'] = t('Hello <strong>@username</strong>', \
array('@username' => $content['account']['account']['#title'])); + \
$content['account']['account']['#options']['html'] = TRUE; + }
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.admin.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.admin.inc index \
013855a..0d095ae 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.admin.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.admin.inc
@@ -18,8 +18,8 @@
function _captcha_available_challenge_types($add_special_options=TRUE) {
$captcha_types = array();
if ($add_special_options) {
- $captcha_types['none'] = '[' . t('none') . ']';
- $captcha_types['default'] = '[' . t('default challenge type') . ']';
+ $captcha_types['none'] = t('- No challenge -');
+ $captcha_types['default'] = t('Default challenge type');
}
// We do our own version of Drupal's module_invoke_all() here because
// we want to build an array with custom keys and values.
@@ -47,9 +47,7 @@ function captcha_admin_settings() {
$form['captcha_form_protection'] = array(
'#type' => 'fieldset',
'#title' => t('Form protection'),
- '#description' => t('Select the challenge type you want for each of the listed \
forms (identified by their so called <em>form_id</em>\'s). You can easily add \
arbitrary forms with textfield at the bottom of the table or with the help of the \
\'%CAPTCHA_admin_links\' option below.',
- array('%CAPTCHA_admin_links' => t('Add CAPTCHA administration links to \
forms'))
- ),
+ '#description' => t("Select the challenge type you want for each of the listed \
forms (identified by their so called <em>form_id</em>'s). You can easily add \
arbitrary forms with the textfield at the bottom of the table or with the help of the \
option <em>Add CAPTCHA administration links to forms</em> below."), );
$form['captcha_form_protection']['captcha_default_challenge'] = array(
'#type' => 'select',
@@ -75,7 +73,7 @@ function captcha_admin_settings() {
if (isset($captcha_point->module) && $captcha_point->module) {
$captcha_type = $captcha_point->module . '/' . $captcha_point->captcha_type;
}
- elseif ($captcha_point->captcha_type == 'default') {
+ elseif (isset($captcha_point->captcha_type) && ($captcha_point->captcha_type == \
'default')) { $captcha_type = 'default';
}
else {
@@ -113,27 +111,27 @@ function captcha_admin_settings() {
'#type' => 'checkbox',
'#title' => t('Add CAPTCHA administration links to forms'),
'#default_value' => variable_get('captcha_administration_mode', FALSE),
- '#description' => t('This option makes it easy to manage CAPTCHA settings on \
forms. When enabled, users with the "%admincaptcha" permission will see a fieldset \
with CAPTCHA administration links on all forms, except on administrative pages.', \
array('%admincaptcha' => t('administer CAPTCHA settings'))), + '#description' => \
t('This option makes it easy to manage CAPTCHA settings on forms. When enabled, users \
with the <em>administer CAPTCHA settings</em> permission will see a fieldset with \
CAPTCHA administration links on all forms, except on administrative pages.'), );
// Field for the CAPTCHAs on admin pages.
$form['captcha_form_protection']['captcha_allow_on_admin_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Allow CAPTCHAs and CAPTCHA administration links on administrative \
pages'),
'#default_value' => variable_get('captcha_allow_on_admin_pages', FALSE),
- '#description' => t('This option makes it possible to add CAPTCHAs to forms on \
administrative pages. CAPTCHAs are disabled by default on administrative pages (which \
shouldn\'t be accessible to untrusted users normally) to avoid the related overhead. \
In some situations, e.g. in the case of demo sites, it can be usefull to allow \
CAPTCHAs on administrative pages.'), + '#description' => t("This option makes it \
possible to add CAPTCHAs to forms on administrative pages. CAPTCHAs are disabled by \
default on administrative pages (which shouldn't be accessible to untrusted users \
normally) to avoid the related overhead. In some situations, e.g. in the case of demo \
sites, it can be usefull to allow CAPTCHAs on administrative pages."), );
- // Button for flushing the CAPTCHA placement cache.
+ // Button for clearing the CAPTCHA placement cache.
// Based on Drupal core's "Clear all caches" (performance settings page).
$form['captcha_form_protection']['captcha_placement_caching'] = array(
'#type' => 'item',
'#title' => t('CAPTCHA placement caching'),
- '#description' => t('For efficiency, the positions of the CAPTCHA elements in \
each of the configured forms are cached. Most of the time, the structure of a form \
does not change and it would be a waste to recalculate the positions every time. \
Occasionally however, the form structure can change (e.g. during site building) and \
flushing the CAPTCHA placement cache can be required to fix the CAPTCHA placement.'), \
+ '#description' => t('For efficiency, the positions of the CAPTCHA elements in \
each of the configured forms are cached. Most of the time, the structure of a form \
does not change and it would be a waste to recalculate the positions every time. \
Occasionally however, the form structure can change (e.g. during site building) and \
clearing the CAPTCHA placement cache can be required to fix the CAPTCHA placement.'), \
);
- $form['captcha_form_protection']['captcha_placement_caching']['captcha_placement_cache_flush'] \
= array( + $form['captcha_form_protection']['captcha_placement_caching']['captcha_placement_cache_clear'] \
= array( '#type' => 'submit',
- '#value' => t('Flush the CAPTCHA placement cache'),
- '#submit' => array('captcha_flush_captcha_placement_cache_submit'),
+ '#value' => t('Clear the CAPTCHA placement cache'),
+ '#submit' => array('captcha_clear_captcha_placement_cache_submit'),
);
// Configuration option for adding a CAPTCHA description.
@@ -149,7 +147,7 @@ function captcha_admin_settings() {
$form['captcha_descriptions'] = array(
'#type' => 'fieldset',
'#title' => t('CAPTCHA description'),
- '#description' => t('Configurable description of the CAPTCHA. An empty entry \
will reset the description.'), + '#description' => t('Configurable description \
of the CAPTCHA. An empty entry will reset the description to default.'), \
'#attributes' => array('id' => 'edit-captcha-description-wrapper'), );
foreach ($langs as $lang_code => $lang_name) {
@@ -165,7 +163,7 @@ function captcha_admin_settings() {
$form['captcha_description'] = array(
'#type' => 'textfield',
'#title' => t('Challenge description'),
- '#description' => t('Configurable description of the CAPTCHA. An empty entry \
will reset the description.'), + '#description' => t('Configurable description \
of the CAPTCHA. An empty entry will reset the description to default.'), \
'#default_value' => _captcha_get_description(), '#maxlength' => 256,
'#attributes' => array('id' => 'edit-captcha-description-wrapper'),
@@ -203,6 +201,14 @@ function captcha_admin_settings() {
'#description' => t('Define if challenges should be omitted during the rest of a \
session once the user successfully responds to a challenge.'), );
+ // Enable wrong response counter.
+ $form['captcha_enable_stats'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Enable statistics'),
+ '#description' => t('Keep CAPTCHA related counters in the <a \
href="!statusreport">status report</a>. Note that this comes with a performance \
penalty as updating the counters results in clearing the variable cache.', \
array('!statusreport' => url('admin/reports/status'))), + '#default_value' => \
variable_get('captcha_enable_stats', FALSE), + );
+
// Option for logging wrong responses.
$form['captcha_log_wrong_responses'] = array(
'#type' => 'checkbox',
@@ -311,9 +317,10 @@ function captcha_admin_settings_submit($form, &$form_state) {
variable_set('captcha_default_validation', \
$form_state['values']['captcha_default_validation']); \
variable_set('captcha_persistence', $form_state['values']['captcha_persistence']); + \
variable_set('captcha_enable_stats', $form_state['values']['captcha_enable_stats']); \
variable_set('captcha_log_wrong_responses', \
$form_state['values']['captcha_log_wrong_responses']);
- drupal_set_message(t('The CAPTCHA settings were saved.'), 'status');
+ drupal_set_message(t('The CAPTCHA settings have been saved.'), 'status');
}
@@ -322,9 +329,9 @@ function captcha_admin_settings_submit($form, &$form_state) {
/**
* Submit callback; clear CAPTCHA placement cache.
*/
-function captcha_flush_captcha_placement_cache_submit($form, &$form_state) {
+function captcha_clear_captcha_placement_cache_submit($form, &$form_state) {
variable_del('captcha_placement_map_cache');
- drupal_set_message(t('Flushed the CAPTCHA placement cache.'));
+ drupal_set_message(t('Cleared the CAPTCHA placement cache.'));
}
@@ -378,7 +385,7 @@ function captcha_point_admin_form($form, $form_state, \
$captcha_point_form_id=NUL $form['captcha_type'] = array(
'#type' => 'select',
'#title' => t('Challenge type'),
- '#description' => t('The CAPTCHA type to use for this form'),
+ '#description' => t('The CAPTCHA type to use for this form.'),
'#default_value' => $default_captcha_type,
'#options' => _captcha_available_challenge_types(),
);
@@ -495,7 +502,7 @@ function captcha_examples($form, $form_state, $module, \
$challenge) { foreach ($challenges as $ckey => $challenge) {
$form["captcha_{$mkey}_{$ckey}"] = array(
'#type' => 'fieldset',
- '#title' => t('Challenge "%challenge" by module "%module"', \
array('%challenge' => $challenge, '%module' => $module)), + '#title' => \
t('Challenge %challenge by module %module', array('%challenge' => $challenge, \
'%module' => $module)),
'challenge' => _captcha_generate_example_challenge($module, $challenge),
'more_examples' => array(
'#markup' => l(t('10 more examples of this challenge.'), \
"admin/config/people/captcha/captcha/examples/$module/$challenge"),
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.inc index \
e8212b1..6af73a6 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.inc
@@ -194,7 +194,7 @@ function _captcha_get_description($lang_code=NULL) {
global $language;
$lang_code = isset($lang_code) ? $lang_code : $language->language;
// The hardcoded but localizable default.
- $default = t('This question is for testing whether you are a human visitor and to \
prevent automated spam submissions.', array(), array('langcode' => $lang_code)); + \
$default = t('This question is for testing whether or not you are a human visitor and \
to prevent automated spam submissions.', array(), array('langcode' => $lang_code)); \
// Look up the configured CAPTCHA description or fall back on the (localized) \
default. if (module_exists('locale')) {
$description = variable_get("captcha_description_$lang_code", $default);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.info index \
15c72ac..32c91fc 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.info
@@ -10,9 +10,9 @@ files[] = captcha.admin.inc
files[] = captcha.install
files[] = captcha.test
-; Information added by drupal.org packaging script on 2012-01-02
-version = "7.x-1.0-beta2"
+; Information added by drupal.org packaging script on 2013-06-25
+version = "7.x-1.0"
core = "7.x"
project = "captcha"
-datestamp = "1325504137"
+datestamp = "1372203950"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.install index \
e7aecbe..f53f600 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.install
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.install
@@ -114,7 +114,7 @@ function captcha_schema() {
function captcha_requirements($phase) {
$requirements = array();
$t = get_t();
- if ($phase == 'runtime') {
+ if ($phase == 'runtime' && variable_get('captcha_enable_stats', FALSE)) {
// Show the wrong response counter in the status report.
$requirements['captcha_wrong_response_counter'] = array(
'title' => $t('CAPTCHA'),
@@ -178,62 +178,6 @@ function captcha_uninstall() {
/**
* Implementation of hook_update_N()
*/
-function captcha_update_1() {
- $items = array();
- switch ($GLOBALS['db_type']) {
- case 'mysql':
- case 'mysqli':
- $items[] = update_sql("CREATE TABLE {captcha_points} (
- form_id varchar(128) NOT NULL,
- module varchar(64) default NULL,
- type varchar(64) default NULL,
- PRIMARY KEY (form_id)
- ) /*!40100 DEFAULT CHARACTER SET utf8 */;"
- );
- $succes = TRUE;
- break;
- case 'pgsql':
- $items[] = update_sql("CREATE TABLE {captcha_points} (
- form_id varchar(128) NOT NULL,
- module varchar(64) default NULL,
- type varchar(64) default NULL,
- PRIMARY KEY (form_id)
- );"
- );
- $succes = TRUE;
- break;
- default:
- drupal_set_message(t('Unsupported database.'), 'error');
- $succes = FALSE;
- break;
- }
- if ($succes) {
- // insert some defaults
- $form_ids = array('comment_form', 'contact_mail_user', 'contact_mail_page',
- 'user_register', 'user_pass');
- foreach ($form_ids as $form_id) {
- $items[] = update_sql("INSERT INTO {captcha_points} (form_id, module, type) \
VALUES ('$form_id', NULL, NULL)");
- }
- }
- return $items;
-}
-
-/**
- * Implementation of hook_update_N()
- */
-function captcha_update_2() {
- $items = array();
- // insert some defaults
- $form_ids = array('user_login', 'user_login_block');
- foreach ($form_ids as $form_id) {
- $items[] = update_sql("INSERT INTO {captcha_points} (form_id, module, type) \
VALUES ('$form_id', NULL, NULL)");
- }
- return $items;
-}
-
-/**
- * Implementation of hook_update_N()
- */
function captcha_update_6200() {
$items = array();
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.module index \
87124d0..b2772b6 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.module
@@ -39,12 +39,10 @@ function captcha_help($path, $arg) {
switch ($path) {
case 'admin/help#captcha':
$output = '<p>' . t('"CAPTCHA" is an acronym for "Completely Automated Public \
Turing test to tell Computers and Humans Apart". It is typically a challenge-response \
test to determine whether the user is human. The CAPTCHA module is a tool to fight \
automated submission by malicious users (spamming) of for example comments forms, \
user registration forms, guestbook forms, etc. You can extend the desired forms with \
an additional challenge, which should be easy for a human to solve correctly, but \
hard enough to keep automated scripts and spam bots out.') . '</p>';
- $output .= '<p>' . t('Note that the CAPTCHA module interacts with page caching \
(see <a href="!performancesettings">performance settings</a>). Because the challenge \
should be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the "%commentlocation" to "%separatepage" in the comment settings \
of the relevant <a href="!contenttypes">content types</a> for better caching \
efficiency.' , + $output .= '<p>' . t('Note that the CAPTCHA module interacts \
with page caching (see <a href="!performancesettings">performance settings</a>). \
Because the challenge should be unique for each generated form, the caching of the \
page it appears on is prevented. Make sure that these forms do not appear on too many \
pages or you will lose much caching efficiency. For example, if you put a CAPTCHA on \
the user login block, which typically appears on each page for anonymous visitors, \
caching will practically be disabled. The comment submission forms are another \
example. In this case you should set the <em>Location of comment submission form</em> \
to <em>Display on separate page</em> in the comment settings of the relevant <a \
href="!contenttypes">content types</a> for better caching efficiency.', array(
- '!performancesettings' => url('admin/settings/performance'),
- '%commentlocation' => t('Location of comment submission form'),
- '%separatepage' => t('Display on separate page'),
- '!contenttypes' => url('admin/content/types'),
+ '!performancesettings' => url('admin/config/development/performance'),
+ '!contenttypes' => url('admin/structure/types'),
)
) . '</p>';
$output .= '<p>' . t('CAPTCHA is a trademark of Carnegie Mellon University.') \
. '</p>'; @@ -52,10 +50,8 @@ function captcha_help($path, $arg) {
case 'admin/config/people/captcha':
case 'admin/config/people/captcha/captcha':
case 'admin/config/people/captcha/captcha/settings':
- $output = '<p>' . t('A CAPTCHA can be added to virtually each Drupal form. \
Some default forms are already provided in the form list, but arbitrary forms can be \
easily added and managed when the option "%adminlinks" is enabled.',
- array('%adminlinks' => t('Add CAPTCHA administration links to forms'))) . \
'</p>';
- $output .= '<p>' . t('Users with the "%skipcaptcha" <a \
href="@perm">permission</a> won\'t be offered a challenge. Be sure to grant this \
permission to the trusted users (e.g. site administrators). If you want to test a \
protected form, be sure to do it as a user without the "%skipcaptcha" permission \
(e.g. as anonymous user).',
- array('%skipcaptcha' => t('skip CAPTCHA'), '@perm' => \
url('admin/user/permissions'))) . '</p>'; + $output = '<p>' . t('A CAPTCHA can \
be added to virtually each Drupal form. Some default forms are already provided in \
the form list, but arbitrary forms can be easily added and managed when the option \
<em>Add CAPTCHA administration links to forms</em> is enabled.') . '</p>'; + \
$output .= '<p>' . t('Users with the <em>Skip CAPTCHA</em> <a \
href="@perm">permission</a> won\'t be offered a challenge. Be sure to grant this \
permission to the trusted users (e.g. site administrators). If you want to test a \
protected form, be sure to do it as a user without the <em>Skip CAPTCHA</em> \
permission (e.g. as anonymous user).', array('@perm' => \
url('admin/people/permissions'))) . '</p>'; return $output;
}
}
@@ -281,7 +277,10 @@ function captcha_element_process($element, &$form_state, \
$complete_form) { $element['#theme'] = 'captcha';
// Add pre_render callback for additional CAPTCHA processing.
- $element['#pre_render'] = array('captcha_pre_render_process');
+ if (!isset($element['#pre_render'])) {
+ $element['#pre_render'] = array();
+ }
+ $element['#pre_render'][] = 'captcha_pre_render_process';
// Store the solution in the #captcha_info array.
$element['#captcha_info']['solution'] = $captcha['solution'];
@@ -327,91 +326,93 @@ function theme_captcha($variables) {
*/
function captcha_form_alter(&$form, &$form_state, $form_id) {
- if (arg(0) != 'admin' || variable_get('captcha_allow_on_admin_pages', FALSE)) {
-
+ if (!user_access('skip CAPTCHA')) {
+ // Visitor does not have permission to skip CAPTCHAs.
module_load_include('inc', 'captcha');
- if (!user_access('skip CAPTCHA')) {
- // Visitor does not have permission to skip the CAPTCHA
-
- // Get CAPTCHA type and module for given form_id.
- $captcha_point = captcha_get_form_id_setting($form_id);
- if ($captcha_point && $captcha_point->captcha_type) {
- module_load_include('inc', 'captcha');
- // Build CAPTCHA form element.
- $captcha_element = array(
- '#type' => 'captcha',
- '#captcha_type' => $captcha_point->module . '/' . \
$captcha_point->captcha_type,
- );
- // Add a CAPTCHA description if required.
- if (variable_get('captcha_add_captcha_description', TRUE)) {
- $captcha_element['#description'] = _captcha_get_description();
- }
-
- // Get placement in form and insert in form.
- $captcha_placement = _captcha_get_captcha_placement($form_id, $form);
- _captcha_insert_captcha_element($form, $captcha_placement, \
$captcha_element);
-
- }
- }
- elseif (user_access('administer CAPTCHA settings') && \
variable_get('captcha_administration_mode', FALSE)) {
- $captcha_point = captcha_get_form_id_setting($form_id);
- // For administrators: show CAPTCHA info and offer link to configure it
+ // Get CAPTCHA type and module for given form_id.
+ $captcha_point = captcha_get_form_id_setting($form_id);
+ if ($captcha_point && $captcha_point->captcha_type) {
+ module_load_include('inc', 'captcha');
+ // Build CAPTCHA form element.
$captcha_element = array(
- '#type' => 'fieldset',
- '#title' => t('CAPTCHA'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE,
- '#attributes' => array('class' => array('captcha-admin-links')),
+ '#type' => 'captcha',
+ '#captcha_type' => $captcha_point->module . '/' . \
$captcha_point->captcha_type, );
- if ($captcha_point !== NULL && $captcha_point->captcha_type) {
- $captcha_element['#title'] = t('CAPTCHA: challenge "@type" enabled', \
array('@type' => $captcha_point->captcha_type));
- $captcha_element['#description'] = t('Untrusted users will see a CAPTCHA \
here (!settings).',
- array('!settings' => l(t('general CAPTCHA settings'), \
'admin/config/people/captcha'))
- );
- $captcha_element['challenge'] = array(
- '#type' => 'item',
- '#title' => t('Enabled challenge'),
- '#markup' => t('"@type" by module "@module" (!change, !disable)', array(
- '@type' => $captcha_point->captcha_type,
- '@module' => $captcha_point->module,
- '!change' => l(t('change'), \
"admin/config/people/captcha/captcha/captcha_point/$form_id", array('query' => \
drupal_get_destination())),
- '!disable' => l(t('disable'), \
"admin/config/people/captcha/captcha/captcha_point/$form_id/disable", array('query' \
=> drupal_get_destination())),
- )),
- );
- // Add an example challenge with solution.
- // This does not work with the reCAPTCHA and Egglue challenges as
- // discussed in http://drupal.org/node/487032 and
- // http://drupal.org/node/525586. As a temporary workaround, we
- // blacklist the reCAPTCHA and Egglue challenges and do not show
- // an example challenge.
- // TODO: Once the issues mentioned above are fixed, this workaround
- // should be removed.
- if ($captcha_point->module != 'recaptcha' && $captcha_point->module != \
'egglue_captcha') {
- $captcha_element['example'] = array(
- '#type' => 'fieldset',
- '#title' => t('Example'),
- '#description' => t('This is a pre-solved, non-blocking example of this \
challenge.'),
- );
- $captcha_element['example']['example_captcha'] = array(
- '#type' => 'captcha',
- '#captcha_type' => $captcha_point->module . '/' . \
$captcha_point->captcha_type,
- '#captcha_admin_mode' => TRUE,
- );
- }
+ // Add a CAPTCHA description if required.
+ if (variable_get('captcha_add_captcha_description', TRUE)) {
+ $captcha_element['#description'] = _captcha_get_description();
}
- else {
- $captcha_element['#title'] = t('CAPTCHA: no challenge enabled');
- $captcha_element['add_captcha'] = array(
- '#markup' => l(t('Place a CAPTCHA here for untrusted users.'), \
"admin/config/people/captcha/captcha/captcha_point/$form_id", array('query' => \
drupal_get_destination()))
- );
- }
// Get placement in form and insert in form.
$captcha_placement = _captcha_get_captcha_placement($form_id, $form);
_captcha_insert_captcha_element($form, $captcha_placement, $captcha_element);
+ }
+ }
+ else if (
+ variable_get('captcha_administration_mode', FALSE)
+ && user_access('administer CAPTCHA settings')
+ && (arg(0) != 'admin' || variable_get('captcha_allow_on_admin_pages', FALSE))
+ ) {
+ // Add CAPTCHA administration tools.
+ module_load_include('inc', 'captcha');
+
+ $captcha_point = captcha_get_form_id_setting($form_id);
+ // For administrators: show CAPTCHA info and offer link to configure it
+ $captcha_element = array(
+ '#type' => 'fieldset',
+ '#title' => t('CAPTCHA'),
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#attributes' => array('class' => array('captcha-admin-links')),
+ );
+ if ($captcha_point !== NULL && $captcha_point->captcha_type) {
+ $captcha_element['#title'] = t('CAPTCHA: challenge "@type" enabled', \
array('@type' => $captcha_point->captcha_type)); + \
$captcha_element['#description'] = t('Untrusted users will see a CAPTCHA here (<a \
href="@settings">general CAPTCHA settings</a>).', + array('@settings' => \
url('admin/config/people/captcha')) + );
+ $captcha_element['challenge'] = array(
+ '#type' => 'item',
+ '#title' => t('Enabled challenge'),
+ '#markup' => t('%type by module %module (<a href="@change">change</a>, <a \
href="@disable">disable</a>)', array( + '%type' => \
$captcha_point->captcha_type, + '%module' => $captcha_point->module,
+ '@change' => \
url("admin/config/people/captcha/captcha/captcha_point/$form_id", array('query' => \
drupal_get_destination())), + '@disable' => \
url("admin/config/people/captcha/captcha/captcha_point/$form_id/disable", \
array('query' => drupal_get_destination())), + )),
+ );
+ // Add an example challenge with solution.
+ // This does not work with the reCAPTCHA and Egglue challenges as
+ // discussed in http://drupal.org/node/487032 and
+ // http://drupal.org/node/525586. As a temporary workaround, we
+ // blacklist the reCAPTCHA and Egglue challenges and do not show
+ // an example challenge.
+ // TODO: Once the issues mentioned above are fixed, this workaround
+ // should be removed.
+ if ($captcha_point->module != 'recaptcha' && $captcha_point->module != \
'egglue_captcha') { + $captcha_element['example'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Example'),
+ '#description' => t('This is a pre-solved, non-blocking example of this \
challenge.'), + );
+ $captcha_element['example']['example_captcha'] = array(
+ '#type' => 'captcha',
+ '#captcha_type' => $captcha_point->module . '/' . \
$captcha_point->captcha_type, + '#captcha_admin_mode' => TRUE,
+ );
+ }
+ }
+ else {
+ $captcha_element['#title'] = t('CAPTCHA: no challenge enabled');
+ $captcha_element['add_captcha'] = array(
+ '#markup' => l(t('Place a CAPTCHA here for untrusted users.'), \
"admin/config/people/captcha/captcha/captcha_point/$form_id", array('query' => \
drupal_get_destination())) + );
}
+ // Get placement in form and insert in form.
+ $captcha_placement = _captcha_get_captcha_placement($form_id, $form);
+ _captcha_insert_captcha_element($form, $captcha_placement, $captcha_element);
+
}
// Add a warning about caching on the Perfomance settings page.
@@ -446,7 +447,7 @@ function captcha_validate_strict_equality($solution, $response) {
* @return TRUE when case insensitive equal, FALSE otherwise.
*/
function captcha_validate_case_insensitive_equality($solution, $response) {
- return strtolower($solution) === strtolower($response);
+ return drupal_strtolower($solution) === drupal_strtolower($response);
}
/**
@@ -456,7 +457,7 @@ function captcha_validate_case_insensitive_equality($solution, \
$response) {
* @return TRUE when equal (ignoring spaces), FALSE otherwise.
*/
function captcha_validate_ignore_spaces($solution, $response) {
- return preg_replace('/\s/', '', $solution) == preg_replace('/\s/', '', $response);
+ return preg_replace('/\s/', '', $solution) === preg_replace('/\s/', '', \
$response); }
/**
@@ -466,7 +467,7 @@ function captcha_validate_ignore_spaces($solution, $response) {
* @return TRUE when equal (ignoring spaces), FALSE otherwise.
*/
function captcha_validate_case_insensitive_ignore_spaces($solution, $response) {
- return preg_replace('/\s/', '', strtolower($solution)) == preg_replace('/\s/', '', \
strtolower($response)); + return preg_replace('/\s/', '', \
drupal_strtolower($solution)) === preg_replace('/\s/', '', \
drupal_strtolower($response)); }
/**
@@ -598,7 +599,13 @@ function captcha_validate($element, &$form_state) {
// we also provide the CAPTCHA $element and $form_state arrays for more advanced \
use cases.
if ($captcha_validate($solution, $captcha_response, $element, $form_state)) {
// Correct answer.
- $_SESSION['captcha_success_form_ids'][$form_id] = $form_id;
+
+ // Store form_id in session (but only if it is useful to do so, avoid setting \
stuff in session unnecessarily). + $captcha_persistence = \
variable_get('captcha_persistence', \
CAPTCHA_PERSISTENCE_SKIP_ONCE_SUCCESSFUL_PER_FORM_INSTANCE); + if \
($captcha_persistence == CAPTCHA_PERSISTENCE_SKIP_ONCE_SUCCESSFUL || \
$captcha_persistence == CAPTCHA_PERSISTENCE_SKIP_ONCE_SUCCESSFUL_PER_FORM_TYPE) { + \
$_SESSION['captcha_success_form_ids'][$form_id] = $form_id; + }
+
// Record success.
db_update('captcha_sessions')
->condition('csid', $csid)
@@ -615,13 +622,15 @@ function captcha_validate($element, &$form_state) {
// set form error
form_set_error('captcha_response', t('The answer you entered for the CAPTCHA \
was not correct.')); // update wrong response counter
- variable_set('captcha_wrong_response_counter', \
variable_get('captcha_wrong_response_counter', 0) + 1); + if \
(variable_get('captcha_enable_stats', FALSE)) { + \
variable_set('captcha_wrong_response_counter', \
variable_get('captcha_wrong_response_counter', 0) + 1); + }
// log to watchdog if needed
if (variable_get('captcha_log_wrong_responses', FALSE)) {
watchdog('CAPTCHA',
- '%form_id post blocked by CAPTCHA module: challenge "%challenge" (by \
module "%module"), user answered "%response", but the solution was "%solution".', + \
'%form_id post blocked by CAPTCHA module: challenge %challenge (by module %module), \
user answered "@response", but the solution was "@solution".', array('%form_id' => \
$form_id,
- '%response' => $captcha_response, '%solution' => $solution,
+ '@response' => $captcha_response, '@solution' => $solution,
'%challenge' => $captcha_info['captcha_type'], '%module' => \
$captcha_info['module'], ),
WATCHDOG_NOTICE);
@@ -640,6 +649,8 @@ function captcha_validate($element, &$form_state) {
* @return the manipulated element
*/
function captcha_pre_render_process($element) {
+ module_load_include('inc', 'captcha');
+
// Get form and CAPTCHA information.
$captcha_info = $element['#captcha_info'];
$form_id = $captcha_info['form_id'];
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.test index \
1647df2..bccefe3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.test
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/captcha.test
@@ -376,6 +376,24 @@ class CaptchaTestCase extends CaptchaBaseWebTestCase {
$this->assertCaptchaPresence(FALSE);
}
+
+ /**
+ * CAPTCHA should also be put on admin pages even if visitor
+ * has no access
+ */
+ function testCaptchaOnLoginBlockOnAdminPagesIssue893810() {
+ // Set a CAPTCHA on login block form
+ captcha_set_form_id_setting('user_login_block', 'captcha/Math');
+
+ // Check if there is a CAPTCHA on home page.
+ $this->drupalGet('node');
+ $this->assertCaptchaPresence(TRUE);
+
+ // Check there is a CAPTCHA on "forbidden" admin pages
+ $this->drupalGet('admin');
+ $this->assertCaptchaPresence(TRUE);
+ }
+
}
@@ -598,9 +616,9 @@ class CaptchaAdminTestCase extends CaptchaBaseWebTestCase {
}
/**
- * Test the CAPTCHA placement flushing.
+ * Test the CAPTCHA placement clearing.
*/
- function testCaptchaPlacementCacheFlushing() {
+ function testCaptchaPlacementCacheClearing() {
// Set CAPTCHA on user register form.
captcha_set_form_id_setting('user_register_form', 'captcha/Math');
// Visit user register form to fill the CAPTCHA placement cache.
@@ -608,12 +626,12 @@ class CaptchaAdminTestCase extends CaptchaBaseWebTestCase {
// Check if there is CAPTCHA placement cache.
$placement_map = variable_get('captcha_placement_map_cache', NULL);
$this->assertNotNull($placement_map, 'CAPTCHA placement cache should be set.');
- // Flush the cache
+ // Clear the cache
$this->drupalLogin($this->admin_user);
- $this->drupalPost(self::CAPTCHA_ADMIN_PATH, array(), t('Flush the CAPTCHA \
placement cache')); + $this->drupalPost(self::CAPTCHA_ADMIN_PATH, array(), \
t('Clear the CAPTCHA placement cache')); // Check that the placement cache is unset
$placement_map = variable_get('captcha_placement_map_cache', NULL);
- $this->assertNull($placement_map, 'CAPTCHA placement cache should be unset after \
flush.'); + $this->assertNull($placement_map, 'CAPTCHA placement cache should be \
unset after cache clear.'); }
/**
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha-rtl.css \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha-rtl.css
deleted file mode 100644
index 8785e86..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha-rtl.css
+++ /dev/null
@@ -1,14 +0,0 @@
-/* $Id: image_captcha-rtl.css,v 1.1.2.1 2010/11/29 23:33:37 soxofaan Exp $ */
-
-/**
- * Styling of the font selection list (with previews)
- * on the Image CAPTCHA settings page.
- */
-
-/**
- * Float the fonts with preview (with a fixed width)
- * to create a multi-column layout.
- */
-.image_captcha_admin_font_preview {
- float: right;
-}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.admin.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.admin.inc
index b3c9f02..5bf39fc 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.admin.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.admin.inc
@@ -59,6 +59,17 @@ function image_captcha_settings_form() {
'#default_value' => (int) variable_get('image_captcha_code_length', 5),
'#description' => t('The code length influences the size of the image. Note that \
larger values make the image generation more CPU intensive.'), );
+ // RTL support option (only show this option when there are RTL languages).
+ $languages = language_list('direction');
+ if (isset($languages[LANGUAGE_RTL])) {
+ $form['image_captcha_code_settings']['image_captcha_rtl_support'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('RTL support'),
+ '#default_value' => variable_get('image_captcha_rtl_support', 0),
+ '#description' => t('Enable this option to render the code from right to left \
for right to left languages.'), + );
+ }
+
// Font related stuff.
$form['image_captcha_font_settings'] = \
_image_captcha_settings_form_font_section(); @@ -89,11 +100,11 @@ function \
image_captcha_settings_form() { '#type' => 'select',
'#title' => t('Additional variation of text color'),
'#options' => array(
- 0 => t('none'),
- 50 => t('small'),
- 100 => t('moderate'),
- 150 => t('high'),
- 200 => t('very high'),
+ 0 => t('No variation'),
+ 50 => t('Little variation'),
+ 100 => t('Medium variation'),
+ 150 => t('High variation'),
+ 200 => t('Very high variation'),
),
'#default_value' => (int) \
variable_get('image_captcha_foreground_color_randomness', 100),
'#description' => t('The different characters will have randomized colors in the \
specified range around the text color.'),
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.info
index d09b65c..1c0e9b1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.info
@@ -10,9 +10,9 @@ files[] = image_captcha.module
files[] = image_captcha.admin.inc
files[] = image_captcha.user.inc
-; Information added by drupal.org packaging script on 2012-01-02
-version = "7.x-1.0-beta2"
+; Information added by drupal.org packaging script on 2013-06-25
+version = "7.x-1.0"
core = "7.x"
project = "captcha"
-datestamp = "1325504137"
+datestamp = "1372203950"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.module
index 485510c..fc1e850 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.module
@@ -229,7 +229,13 @@ function image_captcha_captcha($op, $captcha_type='', \
$captcha_sid=NULL) {
// Generate image source URL (add timestamp to avoid problems with
// client side caching: subsequent images of the same CAPTCHA session
// have the same URL, but should display a different code).
- $img_src = check_url(url("image_captcha/$captcha_sid/" . REQUEST_TIME));
+ $options = array(
+ 'query' => array(
+ 'sid' => $captcha_sid,
+ 'ts' => REQUEST_TIME,
+ ),
+ );
+ $img_src = check_url(url("image_captcha", $options));
list($width, $height) = _image_captcha_image_size($code);
// TODO: start using a theming funtion for generating the image markup?
$result['form']['captcha_image'] = array(
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.user.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.user.inc
index 38434f4..07aeb84 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.user.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/image_captcha/image_captcha.user.inc
@@ -11,15 +11,16 @@
/**
* Menu callback function that generates the CAPTCHA image.
*/
-function image_captcha_image($captcha_sid=NULL) {
+function image_captcha_image() {
// If output buffering is on: discard current content and disable further \
buffering if (ob_get_level()) {
ob_end_clean();
}
-
- if (!$captcha_sid) {
+
+ if (!isset($_GET['sid'])) {
exit();
}
+ $captcha_sid = $_GET['sid'];
// Get solution (the code to show).
$code = db_query("SELECT solution FROM {captcha_sessions} WHERE csid = :csid",
@@ -96,8 +97,12 @@ function _image_captcha_generate_image($code) {
}
imagefilledrectangle($image, 0, 0, $width, $height, $background_color);
+ // Do we need to draw in RTL mode?
+ global $language;
+ $rtl = $language->direction && ((bool) variable_get('image_captcha_rtl_support', \
0)); +
// draw text
- $result = _image_captcha_image_generator_print_string($image, $width, $height, \
$fonts, $font_size, $code); + $result = \
_image_captcha_image_generator_print_string($image, $width, $height, $fonts, \
$font_size, $code, $rtl); if (!$result) {
return FALSE;
}
@@ -230,7 +235,7 @@ function _image_captcha_image_generator_add_dots(&$image, $width, \
$height, $colo /**
* Helper function for drawing text on the image.
*/
-function _image_captcha_image_generator_print_string(&$image, $width, $height, \
$fonts, $font_size, $text) { +function \
_image_captcha_image_generator_print_string(&$image, $width, $height, $fonts, \
$font_size, $text, $rtlúLSE) { // get characters
$characters = _image_captcha_utf8_split($text);
$character_quantity = count($characters);
@@ -260,6 +265,9 @@ function _image_captcha_image_generator_print_string(&$image, \
$width, $height, $ foreach ($characters as $c => $character) {
// initial position of character: in the center of its cage
$center_x = ($c + 0.5) * $ccage_width;
+ if ($rtl) {
+ $center_x = $width - $center_x;
+ }
$center_y = 0.5 * $height;
// Pick a random font from the list.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/da.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/da.po deleted file \
mode 100644 index dc76738..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/da.po
+++ /dev/null
@@ -1,875 +0,0 @@
-# Dansk translation of captcha (6.x-2.0-beta5)
-# Copyright (c) 2009 by the Dansk translation team
-# Generated from files:
-# captcha.admin.inc,v 1.24 2009/05/14 22:47:37 soxofaan
-# image_captcha.admin.inc,v 1.19 2009/05/14 22:47:38 soxofaan
-# captcha.module,v 1.89 2009/05/17 17:02:20 soxofaan
-# captcha.info,v 1.7 2008/02/17 12:49:24 soxofaan
-# image_captcha.user.inc,v 1.19 2009/04/24 22:16:48 soxofaan
-# image_captcha.module,v 1.25 2009/05/14 22:47:38 soxofaan
-# captcha.inc,v 1.4 2009/05/03 21:20:46 soxofaan
-# captcha.install,v 1.9 2009/03/22 20:06:39 soxofaan
-# image_captcha.info,v 1.5 2008/02/17 12:49:24 soxofaan
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: captcha (6.x-2.0-beta5)\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-29 02:46-0700\n"
-"PO-Revision-Date: 2009-05-29 11:47+0200\n"
-"Last-Translator: Morten Wulff <wulff@ratatosk.net>\n"
-"Language-Team: Dansk <dansk@klid.dk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);"
-
-#: captcha.admin.inc:176
-msgid "Save configuration"
-msgstr "Gem indstillinger"
-
-#: captcha.admin.inc:83
-msgid "delete"
-msgstr "slet"
-
-#: captcha.admin.inc:186
-msgid "Operations"
-msgstr "Handlinger"
-
-#: captcha.admin.inc:359
-msgid "Delete"
-msgstr "Slet"
-
-#: captcha.admin.inc:318
-msgid "Save"
-msgstr "Gem"
-
-#: captcha.admin.inc:16; image_captcha/image_captcha.admin.inc:148,170
-msgid "none"
-msgstr "ingen"
-
-#: image_captcha/image_captcha.admin.inc:138
-msgid "Text color"
-msgstr "Tekstfarve"
-
-#: captcha.module:34
-msgid "Location of comment submission form"
-msgstr "Placering af formular"
-
-#: captcha.module:35
-msgid "Display on separate page"
-msgstr "Vis på separat side"
-
-#: captcha.module:76
-msgid "General settings"
-msgstr "Generelle indstillinger"
-
-#: captcha.admin.inc:363
-msgid "Disable"
-msgstr "Deaktivér"
-
-#: captcha.module:327
-msgid "disable"
-msgstr "deaktivér"
-
-#: captcha.module:263,311,118,211,413,59,70; captcha.info:0; \
image_captcha/image_captcha.user.inc:29,72; \
image_captcha/image_captcha.module:94
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: image_captcha/image_captcha.admin.inc:130
-msgid "Background color"
-msgstr "Baggrundsfarve"
-
-#: image_captcha/image_captcha.admin.inc:151,174
-msgid "high"
-msgstr "høj"
-
-#: image_captcha/image_captcha.admin.inc:96,117,173
-msgid "normal"
-msgstr "normal"
-
-#: image_captcha/image_captcha.admin.inc:171
-msgid "low"
-msgstr "lav"
-
-#: captcha.module:30
-msgid ""
-"\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing "
-"test to tell Computers and Humans Apart\". It is typically a "
-"challenge-response test to determine whether the user is human. The "
-"CAPTCHA module is a tool to fight automated submission by malicious "
-"users (spamming) of for example comments forms, user registration "
-"forms, guestbook forms, etc. You can extend the desired forms with an "
-"additional challenge, which should be easy for a human to solve "
-"correctly, but hard enough to keep automated scripts and spam bots "
-"out."
-msgstr ""
-"CAPTCHA er et akronym for \"Completely Automated Public Turing test to "
-"tell Computers and Humans Apart\" (fulstændig automatisk offentlig "
-"Turing-test til at skille computere fra mennesker). Det er typisk en "
-"udfordring-svar test som bestemmer hvorvidt brugeren er et menneske. "
-"CAPTCHA-modulet er et værktøj til bekæmpelse af ondsindede brugeres "
-"automatiske indsendelse (spamming) af kommentarformularer, "
-"brugeroprettelser, gæstebogsindlæg osv. Du kan udvide de ønskede "
-"formularer med en yderligere udfordring, som vil være let at løse "
-"for mennesker men svær nok til at holde automatiske scripts og "
-"spam-robotter ude."
-
-#: captcha.module:39
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA er et varemærke tilhørende Carnegie Mellon University."
-
-#: captcha.module:60
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Administrer hvor og hvordan CAPTCHAs bruges."
-
-#: captcha.module:82
-msgid "Examples"
-msgstr "Eksempler"
-
-#: captcha.module:83
-msgid "An overview of the available challenge types with examples."
-msgstr "En oversigt over de forskellige udfordringstyper med eksempler."
-
-#: captcha.inc:131
-msgid ""
-"This question is for testing whether you are a human visitor and to "
-"prevent automated spam submissions."
-msgstr ""
-"Dette spørgsmål tester hvorvidt du er et menneske og forhindrer "
-"automatisk indsendelse af spam."
-
-#: captcha.admin.inc:380
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "CAPTCHA for formular %form_id deaktiveret."
-
-#: captcha.admin.inc:376
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "CAPTCHA for formular %form_id slettet."
-
-#: captcha.admin.inc:122,137
-msgid "Challenge description"
-msgstr "Beskrivelse af udfordring"
-
-#: captcha.admin.inc:123,138
-msgid ""
-"With this description you can explain the purpose of the challenge to "
-"the user."
-msgstr ""
-"Med denne beskrivelse kan du forklarer formålet med udfordringen til "
-"brugeren."
-
-#: captcha.admin.inc:128
-msgid "For language %lang_name (code %lang_code)"
-msgstr "For sproget %lang_name (kode %lang_code)"
-
-#: captcha.admin.inc:155
-msgid "Persistence"
-msgstr "Vedholdenhed"
-
-#: captcha.admin.inc:158
-msgid "Always add a challenge."
-msgstr "Tilføj altid en udfordring."
-
-#: captcha.admin.inc:159
-msgid ""
-"Omit challenges for a form once the user has successfully responded to "
-"a challenge for that form."
-msgstr ""
-"Udelad udfordringer fra en formular når brugeren har klaret "
-"udfordringen for den pågældende formular."
-
-#: captcha.admin.inc:160
-msgid ""
-"Omit challenges for all forms once the user has successfully responded "
-"to a challenge."
-msgstr ""
-"Udelad udfordringer fra alle formularer når brugeren har klaret "
-"udfordringen for en formular."
-
-#: captcha.admin.inc:162
-msgid ""
-"Define if challenges should be omitted during the rest of a session "
-"once the user successfully responses to a challenge."
-msgstr ""
-"Angiv om udfordringerne skal udelades under resten af en session når "
-"brugeren har givet et korrekt svar på en udfordring."
-
-#: captcha.admin.inc:168
-msgid "Log wrong responses"
-msgstr "Log forkerte svar"
-
-#: captcha.admin.inc:255
-msgid "The CAPTCHA settings were saved."
-msgstr "Indstillinger for CAPTCHA gemt."
-
-#: captcha.module:211
-msgid ""
-"CAPTCHA problem: hook_captcha() of module %module returned nothing "
-"when trying to retrieve challenge type %type for form %form_id."
-msgstr ""
-"CAPTCHA-problem: hook_captcha() fra modulet %module returnerede intet "
-"under forsøget på at hente udfordringstypen %type for formularen "
-"%form_id."
-
-#: captcha.module:408
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "Svaret, som du indtastede på CAPTCHAen, er ikke korrekt."
-
-#: captcha.module:413
-msgid ""
-"%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by "
-"module \"%module\"), user answered \"%response\", but the solution was "
-"\"%solution\"."
-msgstr ""
-"%form_id-indsendelse blokeret af CAPTCHA-modulet: udfordring "
-"\"%challenge\" (fra modulet \"%module\"), brugeren svarede "
-"\"%response\", men løsningen var \"%solution\"."
-
-#: captcha.admin.inc:417
-msgid ""
-"This page gives an overview of all available challenge types, "
-"generated with their current settings."
-msgstr ""
-"Denne side giver et overblik over alle tilgængelige udfordringstyper "
-"genereret med deres aktuelle indstillinger."
-
-#: captcha.admin.inc:425
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Udfordring \"%challenge\" fra modulet \"%module\""
-
-#: captcha.admin.inc:428
-msgid "10 more examples of this challenge."
-msgstr "10 eksempler til på denne udfordring."
-
-#: captcha.module:497
-msgid ""
-"Solve this simple math problem and enter the result. E.g. for 1+3, "
-"enter 4."
-msgstr ""
-"Løs denne simple matematikopgave og indtast resultatet. Indtast "
-"f.eks. 4 hvis opgaven er 1+3."
-
-#: captcha.module:498
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-#: captcha.admin.inc:107; captcha.module:106
-msgid "administer CAPTCHA settings"
-msgstr "administrer CAPTCHA-indstillinger"
-
-#: captcha.module:47,106
-msgid "skip CAPTCHA"
-msgstr "spring over CAPTCHA"
-
-#: captcha.module:0
-msgid "captcha"
-msgstr "captcha"
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr "Database ikke understøttet."
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr ""
-"Basalt CAPTCHA-modul som tilføjer udfordringer til vilkårlige "
-"formularer."
-
-#: captcha.info:0; image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr "Spam-kontrol"
-
-#: image_captcha/image_captcha.module:179,40; image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr "Billed-CAPTCHA"
-
-#: image_captcha/image_captcha.admin.inc:13
-msgid "Built-in font"
-msgstr "Indbygget skrifttype"
-
-#: image_captcha/image_captcha.admin.inc:57
-msgid "Code settings"
-msgstr "Kodeindstillinger"
-
-#: image_captcha/image_captcha.admin.inc:61
-msgid "Characters to use in the code"
-msgstr "Tegn som bruges i koden"
-
-#: image_captcha/image_captcha.admin.inc:66
-msgid "Code length"
-msgstr "Kodelængde"
-
-#: image_captcha/image_captcha.admin.inc:69
-msgid ""
-"The code length influences the size of the image. Note that larger "
-"values make the image generation more CPU intensive."
-msgstr ""
-"Kodelængden har betydning for billedets størrelse. Bemærk at "
-"større værdier gør genereringen af billedet mere CPU-tung."
-
-#: image_captcha/image_captcha.admin.inc:75
-msgid "Font settings"
-msgstr "Skrifttypeindstillinger"
-
-#: image_captcha/image_captcha.admin.inc:81
-msgid "Font"
-msgstr "Skrift"
-
-#: image_captcha/image_captcha.admin.inc:83
-msgid "The TrueType font (.ttf) to use for the text in the image CAPTCHA."
-msgstr ""
-"TrueType skrifttypen (.ttf) som skal bruges til teksten i "
-"billed-CAPTCHAen."
-
-#: image_captcha/image_captcha.admin.inc:92
-msgid "Font size"
-msgstr "Skriftstørrelse"
-
-#: image_captcha/image_captcha.admin.inc:94
-msgid "tiny"
-msgstr "lillebitte"
-
-#: image_captcha/image_captcha.admin.inc:95,116,149
-msgid "small"
-msgstr "lille"
-
-#: image_captcha/image_captcha.admin.inc:97,118
-msgid "large"
-msgstr "stor"
-
-#: image_captcha/image_captcha.admin.inc:100
-msgid ""
-"The font size influences the size of the image. Note that larger "
-"values make the image generation more CPU intensive."
-msgstr ""
-"Skriftstørrelsen har betydning for billedets størrelse. Bemærk at "
-"større værdier gør genereringen af billedet mere CPU-tung."
-
-#: image_captcha/image_captcha.admin.inc:112
-msgid "Character spacing"
-msgstr "Spatiering"
-
-#: image_captcha/image_captcha.admin.inc:113
-msgid ""
-"Define the average spacing between characters. Note that larger values "
-"make the image generation more CPU intensive."
-msgstr ""
-"Angiv den gennemsnitlige afstand mellem tegnene. Bemærk at større "
-"værdier gør genereringen af billedet mere CPU-tung."
-
-#: image_captcha/image_captcha.admin.inc:162
-msgid "Distortion and noise"
-msgstr "Forvrængning og støj"
-
-#: image_captcha/image_captcha.admin.inc:163
-msgid ""
-"With these settings you can control the degree of obfuscation by "
-"distortion and added noise. Do not exaggerate the obfuscation and "
-"assure that the code in the image is reasonably readable. For example, "
-"do not combine high levels of distortion and noise."
-msgstr ""
-"Med disse indstillinger kan du kontrollér hvor godt tekststrengen "
-"skal skjules med forvrængning og støj. Du bør ikke overdrive "
-"forvrængningen og du skal sikre dig at koden i billede er nogenlunde "
-"læselig. Du bør f.eks. ikke kombinere store mængder af "
-"forvrængning og støj."
-
-#: image_captcha/image_captcha.admin.inc:168
-msgid "Distortion level"
-msgstr "Forvrængningsniveau"
-
-#: image_captcha/image_captcha.admin.inc:150,172
-msgid "moderate"
-msgstr "moderat"
-
-#: image_captcha/image_captcha.admin.inc:175
-msgid "severe"
-msgstr "kraftig"
-
-#: image_captcha/image_captcha.admin.inc:178
-msgid "Set the degree of wave distortion in the image."
-msgstr "Angiv mængden af bølge-forvrænging i billedet."
-
-#: image_captcha/image_captcha.admin.inc:182
-msgid "Smooth distortion"
-msgstr "Jævn forvrængning"
-
-#: image_captcha/image_captcha.admin.inc:191
-msgid "This option adds randomly colored point noise."
-msgstr "Tilføjer tilfældig farvet punktstøj."
-
-#: image_captcha/image_captcha.admin.inc:195
-msgid "Add line noise"
-msgstr "Tilføj linjestøj"
-
-#: image_captcha/image_captcha.admin.inc:197
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Tegner tilfældige linjer ovenpå teksten."
-
-#: image_captcha/image_captcha.admin.inc:201
-msgid "Noise level"
-msgstr "Støjniveau"
-
-#: image_captcha/image_captcha.admin.inc:234
-msgid ""
-"The usage of the built-in bitmap font it is not recommended because of "
-"its small size and missing UTF-8 support."
-msgstr ""
-"Brugen af den indbyggede bitmap-skrifttype er ikke anbefalet på grund "
-"af dens lille størrelse og manglende UTF8-understøttelse."
-
-#: image_captcha/image_captcha.admin.inc:245
-msgid "The list of characters to use should not contain spaces."
-msgstr "Listen af anvendte tegn skal ikke indeholde mellemrum."
-
-#: image_captcha/image_captcha.admin.inc:250
-msgid "You need to select a font"
-msgstr "Du skal vælge en skrifttype"
-
-#: image_captcha/image_captcha.admin.inc:253
-msgid "Font does not exist or is not readable."
-msgstr "Skrifttypen eksisterer ikke eller er ikke læsbar."
-
-#: image_captcha/image_captcha.module:94
-msgid ""
-"Encountered an illegal byte while splitting an utf8 string in "
-"characters."
-msgstr ""
-"Stødte på en ugyldig byte ved opsplitning af en UTF8-tekststreng i "
-"tegn."
-
-#: image_captcha/image_captcha.module:184
-msgid "What code is in the image?"
-msgstr "Hvilken kode vises i billedet?"
-
-#: image_captcha/image_captcha.user.inc:29
-msgid ""
-"Generation of image CAPTCHA failed. Check your image CAPTCHA "
-"configuration and especially the used font."
-msgstr ""
-"Generereing af billed-CAPTCHA mislykkedes. Undersøg dine Image "
-"CAPTCHA indstillinger og især den anvendte skrifttype."
-
-#: image_captcha/image_captcha.module:0
-msgid "image_captcha"
-msgstr "image_captcha"
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "Tilbyder en billedbaseret CAPTCHA."
-
-#: captcha.admin.inc:41,105; captcha.module:45
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Tilføj CAPTCHA-administrationslinks til formularer"
-
-#: captcha.admin.inc:169
-msgid "Report information about wrong responses to the !log."
-msgstr "Gem information om forkerte besvarelser i !log."
-
-#: captcha.admin.inc:169
-msgid "log"
-msgstr "log"
-
-#: captcha.admin.inc:287,301
-msgid "Form ID"
-msgstr "Formular ID"
-
-#: captcha.admin.inc:288,302
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Drupal form_id for formularen som CAPTCHA skal tilføjees til."
-
-#: captcha.admin.inc:186,308
-msgid "Challenge type"
-msgstr "Udfordringstype"
-
-#: captcha.admin.inc:309
-msgid "The CAPTCHA type to use for this form"
-msgstr "CAPTCHA-typen som skal bruges til denne formular"
-
-#: captcha.admin.inc:213,329
-msgid "Illegal form_id"
-msgstr "Ugyldig form_id"
-
-#: captcha.admin.inc:341
-msgid "Saved CAPTCHA point settings."
-msgstr "CAPTCHA-indstillinger gemt."
-
-#: captcha.admin.inc:358
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "Ønsker du at slette CAPTCHA for form_id %form_id?"
-
-#: captcha.admin.inc:362
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "Ønsker du at deaktivere CAPTCHA for form_id %form_id?"
-
-#: captcha.module:31
-msgid ""
-"Note that the CAPTCHA module interacts with page caching (see <a "
-"href=\"!performancesettings\">performance settings</a>). Because the "
-"challenge should be unique for each generated form, the caching of the "
-"page it appears on is prevented. Make sure that these forms do not "
-"appear on too many pages or you will lose much caching efficiency. For "
-"example, if you put a CAPTCHA on the user login block, which typically "
-"appears on each page for anonymous visitors, caching will practically "
-"be disabled. The comment submission forms are another example. In this "
-"case you should set the \"%commentlocation\" to \"%separatepage\" in "
-"the comment settings of the relevant <a href=\"!contenttypes\">content "
-"types</a> for better caching efficiency."
-msgstr ""
-"Bemærk at CAPTCHA-modulet interagerer med sidecaching (ee <a "
-"href=\"!performancesettings\">indstillinger for ydelse</a>). Fordi "
-"udfordringen skal være unik for hver genereret formular forhindres "
-"caching af siden hvor formularen optræder. Forvis dig om at disse "
-"formularer ikke optræder på for mange sider eller du vil miste en "
-"del cacheffektivitet. Hvis du f.eks. tilføjer CAPTCHA til "
-"login-blokken, som typisk optræder på alle sider for anonyme "
-"brugere, vil caching i praksis være deaktiveret. "
-"Kommentarformularerne er et andet eksempel. I dette tilfælde skal du "
-"sætte \"%commentlocation\" til \"%separatepage\" under <a "
-"href=\"!commentsettings\">kommentarindstillingerne</a> for bedre "
-"cache-effektivitet."
-
-#: captcha.module:44
-msgid ""
-"A CAPTCHA can be added to virtually each Drupal form. Some default "
-"forms are already provided in the form list, but arbitrary forms can "
-"be easily added and managed when the option \"%adminlinks\" is "
-"enabled."
-msgstr ""
-"En CAPTCHA kan tilføjes til praktisk talt enhver Drupal-formular. "
-"Enkelte standardformularer er til rådighed i formularlisten, men "
-"vilkårlige formularer kan let tilføjes og håndteres når "
-"\"%adminlinks\" er aktiveret."
-
-#: captcha.module:46
-msgid ""
-"Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't "
-"be offered a challenge. Be sure to grant this permission to the "
-"trusted users (e.g. site administrators). If you want to test a "
-"protected form, be sure to do it as a user without the "
-"\"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr ""
-"Brugere med <a href=\"@perm\">tilladelsen</a> \"%skipcaptcha\" bliver "
-"ikke tilbudt en udfordring. Giv kun denne tilladelse til betroede "
-"brugere (f.eks. administratorer). Hvis du ønsker at teste en "
-"beskyttet formular skal du gøre det som en bruger uden tilladelsen "
-"\"%skipcaptcha\" (f.eks. som anonym bruger)."
-
-#: captcha.module:317
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr "Utroværdige brugere vil se en CAPTCHA her (!settings)."
-
-#: captcha.module:318
-msgid "general CAPTCHA settings"
-msgstr "generelle CAPTCHA-indstillinger"
-
-#: captcha.module:322
-msgid "Enabled challenge"
-msgstr "Udfordring aktiveret"
-
-#: captcha.module:323
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr "\"@type\" af modul \"@module\" (!change, !disable)"
-
-#: captcha.module:326
-msgid "change"
-msgstr "skift"
-
-#: captcha.module:344
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Placér en CAPTCHA her for utroværdige brugere."
-
-#: captcha.install:115
-msgid ""
-"You can now <a href=\"!captcha_admin\">configure the CAPTCHA "
-"module</a> for your site."
-msgstr ""
-"Du kan nu <a href=\"!captcha_admin\">indstille CAPTCHA-modulet</a> på "
-"dit site."
-
-#: image_captcha/image_captcha.admin.inc:125
-msgid "Color settings"
-msgstr "Farveindstillinger"
-
-#: image_captcha/image_captcha.admin.inc:126
-msgid "Configuration of the background and text colors in the image CAPTCHA."
-msgstr "Indstilling af baggrunds- og tekstfarver i billed-CAPTCHA."
-
-#: image_captcha/image_captcha.admin.inc:131
-msgid ""
-"Enter the hexadecimal code for the background color (e.g. #FFF or "
-"#FFCE90)."
-msgstr ""
-"Indtast den hexadecimale kode for baggrundsfarven (f.eks. #FFF eller "
-"#FFCE90)."
-
-#: image_captcha/image_captcha.admin.inc:139
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr ""
-"Indtast den hexadecimale kode for tekstfarven (f.eks. #000 eller "
-"#004283)."
-
-#: image_captcha/image_captcha.admin.inc:146
-msgid "Additional variation of text color"
-msgstr "Variation i tekstfarve"
-
-#: image_captcha/image_captcha.admin.inc:152
-msgid "very high"
-msgstr "meget høj"
-
-#: image_captcha/image_captcha.admin.inc:155
-msgid ""
-"The different characters will have randomized colors in the specified "
-"range around the text color."
-msgstr ""
-"De forskellige tegn får tilfældige farver i det angivne interval "
-"omkring tekstfarven."
-
-#: image_captcha/image_captcha.admin.inc:258
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Baggrundsfarven er ikke en gyldig hexadecimal farveværdi."
-
-#: image_captcha/image_captcha.admin.inc:261
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Tekstfarven er ikke en gyldig hexadecimal farveværdi."
-
-#: captcha.module:517
-msgid "Test"
-msgstr "Test"
-
-#: captcha.admin.inc:39
-msgid "Form protection"
-msgstr "Formularbeskyttelse"
-
-#: captcha.admin.inc:40
-msgid ""
-"Select the challenge type you want for each of the listed forms "
-"(identified by their so called <em>form_id</em>'s). You can easily add "
-"arbitrary forms with textfield at the bottom of the table or with the "
-"help of the '%CAPTCHA_admin_links' option below."
-msgstr ""
-"Vælg typen af udfordring du ønsker for hver af de viste formularer "
-"(identificeret ved deres såkaldte <em>form_id</em>). Du kan let "
-"tilføje vilkårlige formularer med tekstfeltet i bunden af tabellen "
-"eller ved hjælp af '%CAPTCHA_admin_links' herunder."
-
-#: captcha.admin.inc:237
-msgid "Added CAPTCHA point."
-msgstr "CAPTCHA-punkt tilføjet."
-
-#: captcha.module:389
-msgid "CAPTCHA test failed (unknown csid)."
-msgstr "CAPTCHA-test mislykkedes (ukendt csid)."
-
-#: captcha.module:342
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA: ingen udfordring aktiveret"
-
-#: captcha.module:92
-msgid "CAPTCHA point administration"
-msgstr "CAPTCHA pointadministration"
-
-#: image_captcha/image_captcha.admin.inc:184
-msgid ""
-"This option enables bilinear interpolation of the distortion which "
-"makes the image look smoother, but it is more CPU intensive."
-msgstr ""
-"Dette valg aktiverer biliniær interpolation af forvrængningen, som "
-"får billedet til at se mere jævnt ud, men er mere CPU-tungt."
-
-#: image_captcha/image_captcha.admin.inc:189
-msgid "Add salt and pepper noise"
-msgstr "Tilføj \"salt og peber\" støj"
-
-#: image_captcha/image_captcha.admin.inc:231
-msgid ""
-"The image CAPTCHA module works best with a TrueType font file (TTF) "
-"for generating the images, but because of licencing issues it is not "
-"allowed to package fonts with the module. A simple built-in bitmap "
-"font is provided as default instead. You can install TrueType fonts "
-"yourself by putting them in the fonts directory of the image CAPTCHA "
-"module (directory \"%fontsdir\") or by uploading them to your Drupal "
-"file system (directory \"%filesdir\") with for example the upload "
-"module."
-msgstr ""
-"Image CAPTCHA-modulet virker bedst med en TrueType skrifttypefil "
-"(.ttf) til generering af billederne, men på grund af licensproblemer "
-"er det ikke muligt at inkludere skrifttyper med modulet. Der bruges en "
-"simpel indbygget bitmap-skrifttype som standard i stedet. Du kan selv "
-"installere TrueType skrifttyper ved at placere dem i mappen fonts i "
-"Image CAPTCHA-modulets mappe (\"%fontsdir\") eller ved at uploade dem "
-"til dit Drupal filsystem (\"%filesdir\") med Upload-modulet."
-
-#: image_captcha/image_captcha.module:28
-msgid ""
-"The image CAPTCHA is a popular challenge where a random textual code "
-"is obfuscated in an image. The image is generated on the fly for each "
-"request, which is rather CPU intensive for the server. Be careful with "
-"the size and computation related settings."
-msgstr ""
-"Billed-CAPTCHAen er en populær udfordring hvor en tilfældig "
-"tekstkode skjules i et billede. Billedet genereres i farten for hver "
-"anmodning, hvilket er ganske CPU-intensivt for serveren. Vær varsom "
-"med størrelsen og de beregningsrelaterede indstillinger."
-
-#: image_captcha/image_captcha.module:169
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr "Indtast tegnene som er vist på billeder (uden mellemrum)"
-
-#: image_captcha/image_captcha.module:166
-msgid ""
-"Enter the characters shown in the image. Ignore spaces and be careful "
-"about upper and lower case."
-msgstr ""
-"Indtast tegnene som vises på billeder. Ignorér mellemrum og vær "
-"omhyggelig med store og små bogstaver."
-
-#: captcha.module:316
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr "CAPTCHA: udfordring \"@type\" aktiveret"
-
-#: captcha.module:332; image_captcha/image_captcha.admin.inc:45
-msgid "Example"
-msgstr "Eksempel"
-
-#: captcha.module:333
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr ""
-"Dette er et ikke-blokerende og allerede løst eksempel på denne "
-"udfordring."
-
-#: captcha.module:119
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] "Har allerede blokeret 1 formularindsendelse"
-msgstr[1] "Har allerede blokeret @count formularindsendelser"
-
-#: image_captcha/image_captcha.admin.inc:35
-msgid ""
-"The Image CAPTCHA module can not generate images because your PHP "
-"setup does not support it (no <a href=\"!gdlib\">GD library</a>)."
-msgstr ""
-"Image CAPTCHA-modulet kan ikke generere billeder fordi din "
-"PHP-opsætning ikke understøtter det (intet <a "
-"href=\"!gdlib\">GD-bibliotek</a>)."
-
-#: image_captcha/image_captcha.admin.inc:203
-msgid "1 - low"
-msgstr "1 - lav"
-
-#: image_captcha/image_captcha.admin.inc:205
-msgid "3 - medium"
-msgstr "3 - middel"
-
-#: image_captcha/image_captcha.admin.inc:207
-msgid "5 - high"
-msgstr "5 - høj"
-
-#: image_captcha/image_captcha.admin.inc:209
-msgid "10 - severe"
-msgstr "10 - alvorlig"
-
-#: image_captcha/image_captcha.admin.inc:226
-msgid ""
-"The Image CAPTCHA module can not use True Type fonts because your PHP "
-"setup does not support it. There is only a built-in bitmap font "
-"available."
-msgstr ""
-"Image CAPTCHA-modulet kan ikke bruge True Type skrifttyper fordi din "
-"PHP-opsætning ikke understøtter dem. Kun den indbyggede "
-"bitmap-skrifttype er tilgængelig."
-
-#: image_captcha/image_captcha.user.inc:72
-msgid ""
-"Could not find or read the configured font (\"%font\") for the image "
-"CAPTCHA."
-msgstr ""
-"Kan ikke finde eller læse den valgte skrifttype (\"%font\") for Image "
-"CAPTCHA."
-
-#: captcha.admin.inc:17
-msgid "default challenge type"
-msgstr "standard udfordringstype"
-
-#: captcha.admin.inc:23
-msgid "@type (from module @module)"
-msgstr "@type (fra modulet @module)"
-
-#: captcha.admin.inc:46
-msgid "Default challenge type"
-msgstr "Standard udfordringstype"
-
-#: captcha.admin.inc:47
-msgid ""
-"Select the default challenge type for CAPTCHAs. This can be overriden "
-"for each form if desired."
-msgstr ""
-"Vælg standardudfordringstypen for CAPTCHAer. Den kan tilsidesættes "
-"på hver formular hvis det ønskes."
-
-#: captcha.admin.inc:107
-msgid ""
-"This option makes it easy to manage CAPTCHA settings on forms. When "
-"enabled, users with the \"%admincaptcha\" permission will see a "
-"fieldset with CAPTCHA administration links on all forms, except on "
-"administrative pages."
-msgstr ""
-"Gør det nemt at administrere CAPTCHA-indstillinger på formularer. "
-"Brugere med tilladelsen \"%admincaptcha\" vil se en feltgruppe med "
-"CAPTCHA administrationslinks på alle formularer, undtagen på "
-"administrationssider."
-
-#: captcha.admin.inc:112
-msgid ""
-"Allow CAPTCHAs and CAPTCHA administration links on administrative "
-"pages"
-msgstr ""
-"Tillad CAPTCHAer og CAPTCHA administrationslinks på administrative "
-"sider."
-
-#: captcha.admin.inc:114
-msgid ""
-"This option makes it possible to add CAPTCHAs to forms on "
-"administrative pages. CAPTCHAs are disabled by default on "
-"administrative pages (which shouldn't be accessible to untrusted users "
-"normally) to avoid the related overhead. In some situations, e.g. in "
-"the case of demo sites, it can be usefull to allow CAPTCHAs on "
-"administrative pages."
-msgstr ""
-"Gør det muligt at tilføje CAPTCHAs til formularer på administrative "
-"sider. CAPTCHAs er som standard deaktiveret på administrative sider "
-"(som normalt ikke er tilgængelige for almindelige brugere) for at "
-"undgå de relaterede omkostninger. I visse situationer, f.eks. på "
-"demosites, kan det være nyttigt at tillade CAPTCHAs på "
-"administrative sider."
-
-#: captcha.admin.inc:147
-msgid "Case sensitive validation"
-msgstr "Versalfølsom validering"
-
-#: captcha.admin.inc:148
-msgid ""
-"Disable this option to ignore uppercase/lowercase errors in the "
-"response."
-msgstr "Deaktivér for at ignorere fejl i store/små bogstaver i svaret."
-
-#: captcha.inc:35
-msgid ""
-"Failed to set a CAPTCHA type for form %form_id: could not interpret "
-"value \"@captcha_type\""
-msgstr ""
-"Kunne ikke sætte en CAPTCHA-type på formularen %form_id: kunne ikke "
-"fortolke værdien \"@captcha_type\""
-
-#: captcha.module:496
-msgid "Math question"
-msgstr "Matematikspørgsmål"
-
-#: image_captcha/image_captcha.admin.inc:46
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr ""
-"Forudfyldt billed-CAPTCHA eksempel, genereret med de aktuelle "
-"indstillinger."
-
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/de.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/de.po deleted file \
mode 100644 index cf7f01f..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/de.po
+++ /dev/null
@@ -1,633 +0,0 @@
-# $Id: de.po,v 1.6.2.1 2010/08/17 12:12:59 soxofaan Exp $
-#
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-# captcha.admin.inc,v 1.15 2009/02/02 19:44:08 soxofaan
-# image_captcha.admin.inc,v 1.13 2009/02/06 18:02:29 soxofaan
-# captcha.module,v 1.76 2009/02/06 17:45:20 soxofaan
-# captcha.pages.inc,v 1.10 2009/02/06 17:45:20 soxofaan
-# captcha.info,v 1.7 2008/02/17 12:49:24 soxofaan
-# image_captcha.user.inc,v 1.15 2009/02/06 18:02:29 soxofaan
-# image_captcha.module,v 1.18 2009/02/06 18:02:29 soxofaan
-# captcha.install,v 1.8 2009/01/03 18:04:55 soxofaan
-# image_captcha.info,v 1.5 2008/02/17 12:49:24 soxofaan
-#
-msgid ""
-msgstr "Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2009-02-24 10:13+0100\n"
-"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
-"Last-Translator: drupalcenter.de - Drupal Voice Channel\n"
-"Language-Team: drupalcenter.de - Drupal Voice Channel\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-#: captcha.admin.inc:13 image_captcha/image_captcha.admin.inc:128;150
-msgid "none"
-msgstr "keine"
-
-#: captcha.admin.inc:32
-msgid "Form protection"
-msgstr "Formularschutz"
-
-#: captcha.admin.inc:33
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr "Wählen Sie einen Test, den Sie für jeden der aufgeführten Formularen \
(anhand der form_id). Über das Textfeld am Ende der Tabelle können beliebige \
Formulare unter Zuhilfenahme der Option '%CAPTCHA_admin_links' \
hinzugefügt werden."
-
-#: captcha.admin.inc:34;81 captcha.module:43
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Füge CAPTCHA Verwaltungslinks zu Formularen hinzu"
-
-#: captcha.admin.inc:59
-msgid "delete"
-msgstr "löschen"
-
-#: captcha.admin.inc:83
-msgid "This option is very helpful to enable/disable challenges on forms. When \
enabled, users with the \"%admincaptcha\" permission will see CAPTCHA administration \
links on all forms (except on administrative pages, which shouldn't be accessible to \
untrusted users in the first place). These links make it possible to enable a \
challenge of the desired type or disable it."
-msgstr "Diese Option ist sehr hilfreich, zum Aktivieren bzw. Deaktivieren von Tests \
auf Formularen. Benutzer mit dem Recht \"%admincaptcha\" erhalten Links zur \
Verwaltung von CAPTCHA - Tests auf alle Formularen (ausgenommen Verwaltungs-Seiten). \
Einen Test des gewünschten Typs aktivieren oder deaktivieren."
-
-#: captcha.admin.inc:83 captcha.module:104
-msgid "administer CAPTCHA settings"
-msgstr "Einstellungen von CAPTCHA verwalten"
-
-#: captcha.admin.inc:91;106
-msgid "Challenge description"
-msgstr "Beschreibung des Test"
-
-#: captcha.admin.inc:92;107
-msgid "With this description you can explain the purpose of the challenge to the \
user."
-msgstr "Mit dieser Beschreibung wird dem Benutzer erklärt, warum diesr Test \
notwendig ist."
-
-#: captcha.admin.inc:97
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Für die Sprache %lang_name (%lang_code)"
-
-#: captcha.admin.inc:116
-msgid "Persistence"
-msgstr "Gültigkeitsdauer"
-
-#: captcha.admin.inc:119
-msgid "Always add a challenge."
-msgstr "Füge immer einen Test hinzu."
-
-#: captcha.admin.inc:120
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Sobald der Benutzer einen Test für dieses Formular gelöst hat, werden \
Tests für das Formular übersprungen."
-
-#: captcha.admin.inc:121
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Sobald der Benutzer einen Test gelöst hat, werden Tests für alle Formulare \
übersprungen."
-
-#: captcha.admin.inc:123
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr "Sobald der Benutzer einen Test gelöst hat, werden Tests für den Rest der \
Sitzung übersprungen."
-
-#: captcha.admin.inc:129
-msgid "Log wrong responses"
-msgstr "Falsche Antworten protokollieren"
-
-#: captcha.admin.inc:130
-msgid "Report information about wrong responses to the !log."
-msgstr "Informationen über falsche Antworten im !log festhalten."
-
-#: captcha.admin.inc:130
-msgid "log"
-msgstr "Protokoll"
-
-#: captcha.admin.inc:137
-msgid "Save configuration"
-msgstr "Konfiguration speichern"
-
-#: captcha.admin.inc:147
-msgid "Challenge type (module)"
-msgstr "Testtyp (Modul)"
-
-#: captcha.admin.inc:147
-msgid "Operations"
-msgstr "Operationen"
-
-#: captcha.admin.inc:188;300
-msgid "Illegal form_id"
-msgstr "Ungültige form_id"
-
-#: captcha.admin.inc:209
-msgid "Added CAPTCHA point."
-msgstr "CAPTCHA für Formular hinzugefügt."
-
-#: captcha.admin.inc:227
-msgid "The CAPTCHA settings were saved."
-msgstr "Die CAPTCHA Einstellungen wurden gespeichert."
-
-#: captcha.admin.inc:257;272
-msgid "Form ID"
-msgstr "Formular ID"
-
-#: captcha.admin.inc:258;273
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Die Drupal form_id des Formulars zu dem das CAPTCHA hinzugefügt werden \
soll."
-
-#: captcha.admin.inc:279
-msgid "Challenge type"
-msgstr "Testtyp"
-
-#: captcha.admin.inc:280
-msgid "The CAPTCHA type to use for this form"
-msgstr "Der CAPTCHA-Typ für dieses Formular."
-
-#: captcha.admin.inc:289
-msgid "Save"
-msgstr "Speichern"
-
-#: captcha.admin.inc:312
-msgid "Saved CAPTCHA point settings."
-msgstr "Einstellungen für CAPTCHA Zuordnung gespeichert."
-
-#: captcha.admin.inc:329
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "CAPTCHA für die form_id %form_id wirklich löschen?"
-
-#: captcha.admin.inc:330
-msgid "Delete"
-msgstr "Löschen"
-
-#: captcha.admin.inc:333
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "CAPTCHA für die form_id %form_id wirklich deaktivieren?"
-
-#: captcha.admin.inc:334
-msgid "Disable"
-msgstr "Deaktivieren"
-
-#: captcha.admin.inc:347
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "CAPTCHA für Formular %form_id gelöscht."
-
-#: captcha.admin.inc:351
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "CAPTCHA für Formular %form_id deaktiviert."
-
-#: captcha.admin.inc:386
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Diese Seite gibt einen Überblick aller verfügbaren Testtypen unter \
Verwendung ihrer aktuellen Einstellungen."
-
-#: captcha.admin.inc:394
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Test \"%challenge\" pro Modul \"%module\""
-
-#: captcha.admin.inc:397
-msgid "10 more examples of this challenge."
-msgstr "10 weitere Beispiele dieses Test."
-
-#: (duplicate) captcha.pages.inc:52;39 captcha.module:186;116 ;263;57;68 \
captcha.info:0 image_captcha/image_captcha.user.inc:29 \
image_captcha/image_captcha.module:94
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: captcha.pages.inc:39
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr "CAPTCHA Problem: Die Rückgabe von hook_captcha() des Moduls %module ist \
fehlgeschlagen, als versucht wurde für das Formular %form_id den Testtyp %type zu \
erstellen."
-
-#: captcha.module:28
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr "CAPTCHA ist ein Akronym für Completely Automated Public Turing test to tell \
Computers and Humans Apart. Wörtlich übersetzt bedeutet das \"Vollautomatischer \
öffentlicher Turing-Test, um Computer und Menschen zu unterscheiden\". Es ist in der \
Regel ein Challenge-Response-Test, um festzustellen, ob der Benutzer menschlich ist. \
Das CAPTCHA-Modul ist ein Werkzeug zur automatisierten Überprüfung von Benutzern, \
um Spamming zu vermeiden, zB in Kommentaren, bei der Benutzer-Registrierung, im \
Gästebuch Formulare, etc. Einzelne Formulare können mit einem zusätzlichen Test \
versehen werden, der einfach für eine Menschen zu lösen ist, aber schwer für \
automatisierte Skripte und Spam-Bots."
-
-#: captcha.module:29
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr "Das CAPTCHA-Modul interagiert mit dem Seiten-Caching, siehe <a \
href=\"!performancesettings\">Performance-Einstellungen</a>. Da für jeden einzelnen \
Abruf des Formulars ein neuer Test erzeugt wird, werden die Formularseiten nicht in \
den Cache aufgenommen. Stellen Sie sicher, dass die Tests nicht auf zu viele Seiten \
erscheinen , sonst wird viel Effizienz verloren (Caching deaktiviert für diese \
Seiten). Zum Beispiel, wenn Sie ein CAPTCHA auf dem User-Login-Block aktivieren, der \
in der Regel auf jeder Seite für anonyme Besucher erscheint, ist das Caching damit \
praktisch ausgeschaltet. Der Kommentar Formulare sind ein weiteres Beispiel. In \
diesem Fall sollten Sie den \"%commentlocation\" auf \"%separatepage\" in den \
Kommentar-Einstellungen des jeweiligen <a href=\"!contenttypes\">Inhaltstpyen</a> \
für eine bessere Caching-Effizienz."
-
-#: captcha.module:32
-msgid "Location of comment submission form"
-msgstr "Position des Formulars zum Eingeben von Kommentaren"
-
-#: captcha.module:33
-msgid "Display on separate page"
-msgstr "Auf einer separaten Seite anzeigen."
-
-#: captcha.module:37
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA ist ein Warenzeichen der Carnegie Mellon Universität."
-
-#: captcha.module:42
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr "Ein CAPTCHA kann zu praktisch jedem Drupal-Formular hinzugefügt werden. \
Manche Standardformulare sind bereits in der Liste, zusätzliche Formulare können \
hinzugefügt und verwaltet werden, wenn die Option \"%adminlinks\" \
aktiviert ist."
-
-#: captcha.module:44
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr "Benutzer mit der \"%skipcaptcha\" <a href=\"@perm\">Berechtigung</a> werden \
vom Test ausgenommen. Achten Sie darauf, dieses Recht nur vertrauenswürdigen \
Benutzern zu gewähren (z. B. Website-Administratoren). Wenn Sie zu ein geschütztes \
Formular testen wollen, so sollten Sie es als Benutzer tun, ohne die \"%skipcaptcha\" \
Berechtigung (zB als anonymer Benutzer)."
-
-#: captcha.module:45;104
-msgid "skip CAPTCHA"
-msgstr "CAPTCHA überspringen"
-
-#: captcha.module:150
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Diese Frage hat den Zweck zu testen, ob Sie ein menschlicher Benutzer sind \
und um automatisiertem Spam vorzubeugen."
-
-#: captcha.module:191
-msgid "CAPTCHA: \"@type\" enabled"
-msgstr "CAPTCHA: \"@type\" aktiviert"
-
-#: captcha.module:192
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr "Nicht vertauenswürdige Benutzer werden hier ein CAPTCHA sehen (!settings)."
-
-#: captcha.module:193
-msgid "general CAPTCHA settings"
-msgstr "Allgemeine CAPTCHA-Einstellungen"
-
-#: captcha.module:197
-msgid "Enabled challenge"
-msgstr "Test aktiviert"
-
-#: captcha.module:198
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr "\"@type\" pro Modul \"@module\" (!change, !disable)"
-
-#: captcha.module:201
-msgid "change"
-msgstr "Ändern"
-
-#: captcha.module:202
-msgid "disable"
-msgstr "Deaktivieren"
-
-#: captcha.module:207
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA: keine Test aktiviert"
-
-#: captcha.module:209
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Hier einen CAPTCHA für nicht vertrauenswürdige Benutzer platzieren."
-
-#: captcha.module:244
-msgid "CAPTCHA test failed (unknown csid)."
-msgstr "CAPTCHA fehlgeschlagen."
-
-#: captcha.module:258
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "Die von Ihnen eingegebene Antwort war nicht korrekt."
-
-#: captcha.module:398
-msgid "Math Question"
-msgstr "Mathematischer Test"
-
-#: captcha.module:399
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Das einfache mathematische Problem ist zu lösen und das Ergebnis \
einzugeben. Z.B. muss für 1+3 der Wert 4 eingegebene werden."
-
-#: captcha.module:400
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-#: (duplicate) captcha.module:117
-msgid "Already @counter blocked form submissions"
-msgstr "Es wurden bisher @counter Formulareingaben abgeblockt"
-
-#: captcha.module:263
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr "Der Beitrag von %form_id wurde vom CAPTCHA Modul geblockt: Test \
\"%challenge\" (vom Modul \"%module\"), der Benutzer antwortete \"%response\", aber \
die Lösung war \"%solution\"."
-
-#: captcha.module:58
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Verwalten, wo und wie CAPTCHAs verwendet werden."
-
-#: captcha.module:74
-msgid "General settings"
-msgstr "Allgemeine Einstellungen"
-
-#: captcha.module:80
-msgid "Examples"
-msgstr "Beispiele"
-
-#: captcha.module:81
-msgid "An overview of the available challenge types with examples."
-msgstr "Überblick verfügbarer Testtypen mit Beispielen."
-
-#: captcha.module:90
-msgid "CAPTCHA point administration"
-msgstr "Verwaltung der CAPTCHA Zuordnungen"
-
-#: captcha.module:0
-msgid "captcha"
-msgstr "captcha"
-
-#: captcha.install:10
-msgid "This table describes which challenges should be added to which forms."
-msgstr "Diese Tabelle beschreibt, welche Test zu welchem Formular hinzugefügt \
wird."
-
-#: captcha.install:13
-msgid "The form_id of the form to add a CAPTCHA to."
-msgstr "Die form_id des Formulars, zu dem ein CAPTCHA hinzugefügt wird."
-
-#: captcha.install:19
-msgid "The module that provides the challenge."
-msgstr "Das Modul, das die Test bereitstellt."
-
-#: captcha.install:24
-msgid "The challenge type to use."
-msgstr "Der zu verwendende Testtyp."
-
-#: captcha.install:33;191
-msgid "Stores the data about CAPTCHA sessions (solution, IP address, timestamp, \
...)."
-msgstr "Speichert die Daten der CAPTCHA Sessions (Lösung, IP Adresse, Zeit, ...)."
-
-#: captcha.install:36;194
-msgid "CAPTCHA session ID."
-msgstr "CAPTCHA Session-ID."
-
-#: captcha.install:41;199
-msgid "User's {users}.uid."
-msgstr "{users}.uid des Benutzers."
-
-#: captcha.install:47;205
-msgid "Session ID of the user."
-msgstr "Session-ID des Benutzers."
-
-#: captcha.install:54;212
-msgid "IP addres of visitor."
-msgstr "IP Adresse des Besuchers."
-
-#: captcha.install:60;218
-msgid "A Unix timestamp indicating when the challenge was generated."
-msgstr "Ein UNIX Zeitstempel, der den Generierungszeitpunkt der Frage markiert."
-
-#: captcha.install:66;224
-msgid "The form_id of the form where the CAPTCHA is added to."
-msgstr "Die form_id des Formulars, zu dem ein CAPTCHA hinzugefügt wird."
-
-#: captcha.install:72;230
-msgid "Solution of the challenge."
-msgstr "Lösung des Test."
-
-#: captcha.install:79;237
-msgid "Status of the CAPTCHA session (unsolved, solved, ...)"
-msgstr "Status der CAPTCHA Session (ungelöst, gelöst, ...)"
-
-#: captcha.install:85;243
-msgid "The number of attempts."
-msgstr "Anzahl der Versuche."
-
-#: captcha.install:114
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr "Das CAPTCHA Modul kann jetzt auf der Seite <a \
href=\"!captcha_admin\">konfiguriert</a> werden."
-
-#: captcha.install:155
-msgid "Unsupported database."
-msgstr "Nicht unterstützte Datenbank."
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr "Basis CAPTCHA Modul zur Erweiterung beliebiger Formulare mir einem CAPTCHA \
(Test)."
-
-#: captcha.info:0 image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr "Spam Kontrolle"
-
-#: image_captcha/image_captcha.admin.inc:13
-msgid "Built-in font"
-msgstr "Eingebaute Schriftart"
-
-#: image_captcha/image_captcha.admin.inc:31
-msgid "Images cannot be generated, because your PHP installation's GD library has no \
JPEG support."
-msgstr "Bilder können nicht erzeugt werden, weil zum Erstellen des Bildes die \
GD-Bibliothek mit JPEG-Unterstützung erforderlich ist."
-
-#: image_captcha/image_captcha.admin.inc:36
-msgid "Code settings"
-msgstr "Texteigenschaften"
-
-#: image_captcha/image_captcha.admin.inc:40
-msgid "Characters to use in the code"
-msgstr "Zeichen, die im Text benutzt werden"
-
-#: image_captcha/image_captcha.admin.inc:45
-msgid "Code length"
-msgstr "Textlänge"
-
-#: image_captcha/image_captcha.admin.inc:48
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr "Die Codelänge beeinflusst die Größe des Bildes. Je größer der Wert ist, \
desto mehr Rechenzeit wird aufgewandt, um das Bild zu erstellen."
-
-#: image_captcha/image_captcha.admin.inc:53
-msgid "Case insensitive validation"
-msgstr "Groß- und Kleinschreibung wird nicht unterschieden"
-
-#: image_captcha/image_captcha.admin.inc:54
-msgid "Enable this option to ignore uppercase/lowercase errors in the response. This \
can be usefull for certain target audiences or fonts."
-msgstr "Aktivieren Sie diese Option, um Groß-/ Kleinschreibung in der Antwort zu \
ignorieren. Dies kann für bestimmte Zielgruppen oder Schriftarten \
nützlich."
-
-#: image_captcha/image_captcha.admin.inc:61
-msgid "Font settings"
-msgstr "Schrifteinstellungen"
-
-#: image_captcha/image_captcha.admin.inc:67
-msgid "Font"
-msgstr "Schrift"
-
-#: image_captcha/image_captcha.admin.inc:69
-msgid "The TrueType font (.ttf) to use for the text in the image CAPTCHA."
-msgstr "TrueType-Schrift (.ttf) zur Erzeugung des Textes in einem Bild-CAPTCHA."
-
-#: image_captcha/image_captcha.admin.inc:78
-msgid "Font size"
-msgstr "Schriftgröße"
-
-#: image_captcha/image_captcha.admin.inc:80
-msgid "tiny"
-msgstr "winzig"
-
-#: image_captcha/image_captcha.admin.inc:81;96;129
-msgid "small"
-msgstr "klein"
-
-#: image_captcha/image_captcha.admin.inc:82;97;153;191
-msgid "normal"
-msgstr "normal"
-
-#: image_captcha/image_captcha.admin.inc:83;98
-msgid "large"
-msgstr "groß"
-
-#: image_captcha/image_captcha.admin.inc:86
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr "Schriftgröße beeinflusst die Größe des Bildes. Je größer der Wert ist, \
desto mehr Rechenzeit wird aufgewandt, um das Bild zu erstellen."
-
-#: image_captcha/image_captcha.admin.inc:92
-msgid "Character spacing"
-msgstr "Zeichenabstand"
-
-#: image_captcha/image_captcha.admin.inc:93
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr "Definieren Sie die durchschnittliche Abstand zwischen den Zeichen. Je \
größer der Wert ist, desto mehr Rechenzeit wird aufgewandt, um das Bild zu \
erstellen."
-
-#: image_captcha/image_captcha.admin.inc:105
-msgid "Color settings"
-msgstr "Farbeinstellungen"
-
-#: image_captcha/image_captcha.admin.inc:106
-msgid "Configuration of the background and text colors in the image CAPTCHA."
-msgstr "Einstellungen der Hintergrund- und Textfarbe für das Bild-CAPTCHA."
-
-#: image_captcha/image_captcha.admin.inc:110
-msgid "Background color"
-msgstr "Hintergrundfarbe"
-
-#: image_captcha/image_captcha.admin.inc:111
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90)."
-msgstr "Eingabe der Hintergrundfarbe in hexadezimaler Form (z.B. #FFF oder \
#FFCE90)."
-
-#: image_captcha/image_captcha.admin.inc:118
-msgid "Text color"
-msgstr "Schriftfarbe"
-
-#: image_captcha/image_captcha.admin.inc:119
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr "Eingabe der Textfarbe in hexadezimaler Form (z.B. #000 oder #004283)."
-
-#: image_captcha/image_captcha.admin.inc:126
-msgid "Additional variation of text color"
-msgstr "Zusätzliche Variation der Textfarbe"
-
-#: image_captcha/image_captcha.admin.inc:130;152
-msgid "moderate"
-msgstr "mittel"
-
-#: image_captcha/image_captcha.admin.inc:131;154;192
-msgid "high"
-msgstr "hoch"
-
-#: image_captcha/image_captcha.admin.inc:132
-msgid "very high"
-msgstr "sehr hoch"
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr "Die verschiedenen Buchstaben werden verschiedene zufällige Schriftfarben im \
angegebenen Bereich haben."
-
-#: image_captcha/image_captcha.admin.inc:142
-msgid "Distortion and noise"
-msgstr "Verzerrung und Rauschen"
-
-#: image_captcha/image_captcha.admin.inc:143
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr "Mit diesen Einstellungen können Sie den Grad Verschleierung und das Ausmaß \
des Rauschens steuern. Übertreiben Sie nicht die Verschleierung und prüfen Sie, \
dass der Code in den Bildern einigermaßen lesbar ist. Kombinieren Sie zum Beispiel \
nicht starke Verzerrungen und starkes Rauschen."
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "Distortion level"
-msgstr "Grad der Verzerrung"
-
-#: image_captcha/image_captcha.admin.inc:151;190
-msgid "low"
-msgstr "niedrig"
-
-#: image_captcha/image_captcha.admin.inc:155;193
-msgid "severe"
-msgstr "schwer"
-
-#: image_captcha/image_captcha.admin.inc:158
-msgid "Set the degree of wave distortion in the image."
-msgstr "Setzt den Grad der Wellenverzerrung im Bild."
-
-#: image_captcha/image_captcha.admin.inc:162
-msgid "Smooth distortion"
-msgstr "Sanfte Verzerrung"
-
-#: image_captcha/image_captcha.admin.inc:164
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Diese Option aktiviert bilineare Interpolation der Verzerrung, so dass das \
Bild weicher aussieht. Dies ist jedoch sehr CPU intensiv."
-
-#: image_captcha/image_captcha.admin.inc:169
-msgid "Double vision"
-msgstr "Doppelte Darstellung"
-
-#: image_captcha/image_captcha.admin.inc:171
-msgid "When enabled, characters appear twice in the image, overlaid onto each \
other."
-msgstr "Wenn dies aktiviert ist, erscheinen Zeichen im Bild doppelt. Sie erscheinen \
dann übereinandergelegt."
-
-#: image_captcha/image_captcha.admin.inc:176
-msgid "Add salt and pepper noise"
-msgstr "Bildrauschen hinzufügen"
-
-#: image_captcha/image_captcha.admin.inc:178
-msgid "This option adds randomly colored point noise."
-msgstr "Diese Option fügt ein Rauschen mit zufälligen farbigen Punkten hinzu."
-
-#: image_captcha/image_captcha.admin.inc:182
-msgid "Add line noise"
-msgstr "Linienrauschen hinzufügen"
-
-#: image_captcha/image_captcha.admin.inc:184
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Diese Option aktiviert zufällig über den Text gelegte Linien."
-
-#: image_captcha/image_captcha.admin.inc:188
-msgid "Noise level"
-msgstr "Grad des Rauschens"
-
-#: image_captcha/image_captcha.admin.inc:206
-msgid "The image CAPTCHA module works best with a TrueType font file (TTF) for \
generating the images, but because of licencing issues it is not allowed to package \
fonts with the module. A simple built-in bitmap font is provided as default instead. \
You can install TrueType fonts yourself by putting them in the fonts directory of the \
image CAPTCHA module (directory \"%fontsdir\") or by uploading them to your Drupal \
file system (directory \"%filesdir\") with for example the upload \
module."
-msgstr "Das Bild CAPTCHA-Modul funktioniert am besten mit einer \
TrueType-Schriftart-Datei (TTF) für die Generierung der Bilder, aber wegen der \
Lizenzbedingungen ist es nicht gestattet, diese Schriftdateien mitzuliefern. Eine \
einfache Bitmap-Schrift ist stattdessen mitgeliefert. Sie können \
TrueType-Schriftarten installieren: laden Sie diese in das Schriftarten-Verzeichnis \
des CAPTCHA-Modul (Verzeichnis \"%fontsdir\") oder in Ihrer Drupal-Dateisystem \
(Verzeichnis \"%filesdir\") mit dem Upload-Modul."
-
-#: image_captcha/image_captcha.admin.inc:209
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr "Die Benutzung der eingebauten Bitmap Schriften wird aufgrund ihrer geringen \
Größe und der fehlenden UTF-8 Unterstützung nicht empfohlen."
-
-#: image_captcha/image_captcha.admin.inc:220
-msgid "The list of characters to use should not contain spaces."
-msgstr "Die Liste der Zeichen darf keine Leerzeichen enthalten."
-
-#: image_captcha/image_captcha.admin.inc:225
-msgid "You need to select a font"
-msgstr "Es muss eine Schriftart ausgewählt werden"
-
-#: image_captcha/image_captcha.admin.inc:228
-msgid "Font does not exist or is not readable."
-msgstr "Die Schriftart existiert nicht oder ist nicht lesbar."
-
-#: image_captcha/image_captcha.admin.inc:233
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Die Hintergrundfarbe wurde nicht als hexadezimaler Farbwert angegeben."
-
-#: image_captcha/image_captcha.admin.inc:236
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Die Textfarbe wurde nicht als hexadezimaler Farbwert angegeben."
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr "Das CAPTCHA-Bild konnte nicht erzeugt werden. Bitte die Einstellungen für \
Bild-CAPTCHA und insbesondere die benutzte Schriftart überprüfen."
-
-#: image_captcha/image_captcha.module:17
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr "Das Bild CAPTCHA ist ein beliebter Test, bei dem ein zufälliger Text in ein \
Bild verwoben wird. Das Bild wird neu für jede einzelne Abfrage erzeugt, was \
entsprechend CPU-Zeit auf dem Server verbraucht. Wählen Sie die Größe und andere \
Einstellungen mit Bedacht."
-
-#: image_captcha/image_captcha.module:22
-msgid "<p>Example image, generated with the current settings:</p>!img"
-msgstr "<p>Beispielbild, mit den aktuellen Einstellungen:</p>!img"
-
-#: image_captcha/image_captcha.module:146
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr "Bitte die im Bild dargestellten Buchstaben (ohne Leerzeichen) eingeben."
-
-#: image_captcha/image_captcha.module:149
-msgid "Enter the characters shown in the image. Ignore spaces and be careful about \
upper and lower case."
-msgstr "Bitte die im Bild dargestellten Buchstaben (ohne Leerzeichen) eingeben. \
Bitte die im Bild dargestellten Buchstaben (ohne Leerzeichen) eingeben und dabei \
Groß- und Kleinschreibung beachten."
-
-#: image_captcha/image_captcha.module:159;159;35 image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr "Bild-CAPTCHA"
-
-#: image_captcha/image_captcha.module:164
-msgid "What code is in the image?"
-msgstr "Welche Zeichen sind in dem Bild zu sehen?"
-
-#: image_captcha/image_captcha.module:94
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "Innerhalb eines UTF-8 kodierten Textes wurde ein unzulässiges Zeichen \
entdeckt."
-
-#: image_captcha/image_captcha.module:0
-msgid "image_captcha"
-msgstr "image_captcha"
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "Stellt einen Bild basierten CAPTCHA bereit."
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/es.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/es.po deleted file \
mode 100644 index 07cec97..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/es.po
+++ /dev/null
@@ -1,717 +0,0 @@
-# $Id: es.po,v 1.2 2009/10/04 22:24:55 soxofaan Exp $
-#
-# Spanish translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-# captcha.admin.inc,v 1.30 2009/08/10 22:33:34 soxofaan
-# image_captcha.admin.inc,v 1.28 2009/09/23 21:23:00 soxofaan
-# captcha.module,v 1.100 2009/09/20 10:57:07 soxofaan
-# captcha.inc,v 1.11 2009/08/27 22:21:56 soxofaan
-# captcha.info,v 1.7 2008/02/17 12:49:24 soxofaan
-# image_captcha.user.inc,v 1.21 2009/09/22 22:51:00 soxofaan
-# image_captcha.module,v 1.31 2009/09/22 22:51:00 soxofaan
-# captcha.install,v 1.10 2009/05/26 20:17:40 soxofaan
-# image_captcha.info,v 1.5 2008/02/17 12:49:24 soxofaan
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Drupal 6.x\n"
-"POT-Creation-Date: 2009-09-28 04:38-0400\n"
-"PO-Revision-Date: 2009-10-03 15:57+0100\n"
-"Last-Translator: Gusgsm <gusgsm@gmail.com>\n"
-"Language-Team: Gusgsm <gusgsm@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Poedit-Language: Spanish\n"
-"X-Poedit-Country: SPAIN\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: captcha.admin.inc:16
-#: image_captcha/image_captcha.admin.inc:171
-msgid "none"
-msgstr "ninguno"
-
-#: captcha.admin.inc:17
-msgid "default challenge type"
-msgstr "Tipo de "
-
-#: captcha.admin.inc:23
-msgid "@type (from module @module)"
-msgstr "@type (del módulo @module)"
-
-#: captcha.admin.inc:42
-msgid "Form protection"
-msgstr "Protección de formulario"
-
-#: captcha.admin.inc:43
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr "Seleccione el tipo de pregunta que desee para cada uno de los formularios \
listados (identificados por lo que se llama su <em>form_id</em>). Puede añadir \
fácilmente formularios con campos de texto de forma arbitraria al final de la tabla \
con la ayuda de la opción CAPTCHA_admin_links, más abajo. "
-
-#: captcha.admin.inc:44;108
-#: captcha.module:46
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Añadir enlaces de administración de CAPTCHA a los formularios"
-
-#: captcha.admin.inc:49
-msgid "Default challenge type"
-msgstr "Tipo de pregunta predefinida"
-
-#: captcha.admin.inc:50
-msgid "Select the default challenge type for CAPTCHAs. This can be overriden for \
each form if desired."
-msgstr "Seleccione el tipo de pregunta CAPTCHA predeterminada. Puede cambiarlo en \
cada formulario especificando otro, si lo desea."
-
-#: captcha.admin.inc:86
-msgid "delete"
-msgstr "borrar"
-
-#: captcha.admin.inc:110
-msgid "This option makes it easy to manage CAPTCHA settings on forms. When enabled, \
users with the \"%admincaptcha\" permission will see a fieldset with CAPTCHA \
administration links on all forms, except on administrative pages."
-msgstr "Esta opción facilita la gestión de las opciones de preguntas CAPTCHA en \
los formularios. Si se activa los usuarios con los permisos \"%admincaptcha\" verán \
un campo de texto con los enlaces de administración de CAPTCHAs en todos los \
formularios excepto en los de las páginas administrativas."
-
-#: captcha.admin.inc:110
-#: captcha.module:107
-msgid "administer CAPTCHA settings"
-msgstr "Administrar las opciones de CAPTCHA"
-
-#: captcha.admin.inc:115
-msgid "Allow CAPTCHAs and CAPTCHA administration links on administrative pages"
-msgstr "Permitir el planteamiento de preguntas CAPTCHA y los enlaces para su \
gestión en las páginas administrativas."
-
-#: captcha.admin.inc:117
-msgid "This option makes it possible to add CAPTCHAs to forms on administrative \
pages. CAPTCHAs are disabled by default on administrative pages (which shouldn't be \
accessible to untrusted users normally) to avoid the related overhead. In some \
situations, e.g. in the case of demo sites, it can be usefull to allow CAPTCHAs on \
administrative pages."
-msgstr "Esta opción permite añadir preguntas CAPTCHA a los formularios en las \
páginas administrativas. En principio, los CAPTCHA están desactivados en las \
páginas administrativas (ya que lo usual es que no sean accesibles a usuarios que no \
sean de confianza) para evitar la sobrecarga y retraso consiguiente. Sin embargo, en \
algunas situaciones (como sitios de demostración o prueba) podrÃa ser útil añadir \
CAPTCHAs en las páginas administrativas,"
-
-#: captcha.admin.inc:123
-msgid "Add a description to the CAPTCHA"
-msgstr "Añadir una descripción a la pregunta CAPTCHA"
-
-#: captcha.admin.inc:124
-msgid "Add a configurable description to explain the purpose of the CAPTCHA to the \
visitor."
-msgstr "Añadir una descripción configurable para explicar la finalidad de la \
pregunta CAPTCHA al visitante."
-
-#: captcha.admin.inc:132
-msgid "CAPTCHA description"
-msgstr "Descripción de CAPTCHA"
-
-#: captcha.admin.inc:133;149
-msgid "Configurable description of the CAPTCHA. An empty entry will reset the \
description."
-msgstr "Descripción configurable de la pregunta CAPTCHA. Si se deja el campo \
vacÃo, la descripción se reconfigurará."
-
-#: captcha.admin.inc:139
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Para idioma %lang_name (código %lang_code)"
-
-#: captcha.admin.inc:148
-msgid "Challenge description"
-msgstr "Descripción de la pregunta"
-
-#: captcha.admin.inc:159
-msgid "Default CAPTCHA validation"
-msgstr "Validación predefinida de CAPTCHA"
-
-#: captcha.admin.inc:160
-msgid "Define how the response should be processed by default. Note that the modules \
that provide the actual challenges can override or ignore this."
-msgstr "Define cómo se deben procesar las respuestas de forma predefinida. Tenga en \
cuenta que los módulos que proporcionan las preguntas pueden alterar o ignorar \
esto."
-
-#: captcha.admin.inc:162
-msgid "Case sensitive validation: the response has to exactly match the solution."
-msgstr "Validación que diferencia mayúsculas de mÃnúsculas: La respuesta tiene \
que coincidir exactamente con la solución."
-
-#: captcha.admin.inc:163
-msgid "Case insensitive validation: lowercase/uppercase errors are ignored."
-msgstr "Validación que no diferencia mayúsculas de mÃnúsculas: Las diferencias \
en esos casos no se tienen en cuenta."
-
-#: captcha.admin.inc:171
-msgid "Persistence"
-msgstr "Persistencia"
-
-#: captcha.admin.inc:174
-msgid "Always add a challenge."
-msgstr "Añadir siempre una pregunta"
-
-#: captcha.admin.inc:175
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Omitir preguntas de un formulario siempre que el usuario haya sabido \
responder bien a una en ese formulario."
-
-#: captcha.admin.inc:176
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Omitir preguntas de todos los formularios cuando el usuario haya sabido \
responder bien a una."
-
-#: captcha.admin.inc:178
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr "Definir si las preguntas deben desactivarse para el resto de la sesión una \
vez que un usuario haya respondido con éxito a una de ellas."
-
-#: captcha.admin.inc:184
-msgid "Log wrong responses"
-msgstr "Registrar respuestas erróneas"
-
-#: captcha.admin.inc:185
-msgid "Report information about wrong responses to the !log."
-msgstr "Registrar la información de las respuestas erróneas en el !log."
-
-#: captcha.admin.inc:185
-msgid "log"
-msgstr "registro"
-
-#: captcha.admin.inc:192
-msgid "Save configuration"
-msgstr "Guardar configuración"
-
-#: captcha.admin.inc:202;342
-msgid "Challenge type"
-msgstr "Tipo de pregunta"
-
-#: captcha.admin.inc:202
-msgid "Operations"
-msgstr "Operaciones"
-
-#: captcha.admin.inc:229;363
-msgid "Illegal form_id"
-msgstr "form_id ilegal"
-
-#: captcha.admin.inc:255
-msgid "Added CAPTCHA point."
-msgstr "Añadido punto CAPTCHA."
-
-#: captcha.admin.inc:270
-msgid "Reset of CAPTCHA description for language %language."
-msgstr "Se ha restablecido la descripción de la pregunta CAPTCHA para el idioma \
%language."
-
-#: captcha.admin.inc:281
-msgid "Reset of CAPTCHA description."
-msgstr "Restablecer la descripción de CAPTCHA."
-
-#: captcha.admin.inc:289
-msgid "The CAPTCHA settings were saved."
-msgstr "Las opciones de CAPTCHA se han guardado."
-
-#: captcha.admin.inc:321;335
-msgid "Form ID"
-msgstr "ID del formulario"
-
-#: captcha.admin.inc:322;336
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "La form_id de Drupal del formulario al que se quiere añadir la pregunta \
CAPTCHA."
-
-#: captcha.admin.inc:343
-msgid "The CAPTCHA type to use for this form"
-msgstr "El tipo de CAPTCHA que se usará para este formulario"
-
-#: captcha.admin.inc:352
-msgid "Save"
-msgstr "Guardar"
-
-#: captcha.admin.inc:375
-msgid "Saved CAPTCHA point settings."
-msgstr "Opciones de puntos CAPTCHA guardadas."
-
-#: captcha.admin.inc:392
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr " ¿Está seguro de querer borrar la pregungta CAPTCHA para form_id %form_id?"
-
-#: captcha.admin.inc:393
-msgid "Delete"
-msgstr "Borrar"
-
-#: captcha.admin.inc:396
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr " ¿Está seguro de querer desactivar CAPCHA para form_id %form_id?"
-
-#: captcha.admin.inc:397
-msgid "Disable"
-msgstr "Desactivar"
-
-#: captcha.admin.inc:410
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "Se ha borrado la pregunta CAPTCHA para el formulario %form_id."
-
-#: captcha.admin.inc:414
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "Se ha desactivado la pregunta CAPTCHA para el formulario %form_id."
-
-#: captcha.admin.inc:451
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Esta página proporciona un resumen de los tipos de preguntas disponibles, \
generadas con sus configuraciones actuales."
-
-#: captcha.admin.inc:459
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Pregunta \"%challenge\" por módulo \"%module\""
-
-#: captcha.admin.inc:462
-msgid "10 more examples of this challenge."
-msgstr "Diez ejemplos más de esta pregunta."
-
-#: captcha.inc:38
-msgid "Failed to set a CAPTCHA type for form %form_id: could not interpret value \
\"@captcha_type\""
-msgstr "No se pudo establecer un tipo de pregunta CAPTCHA para el formulario \
%form_id: No se logró interpretar el valor \"@captcha_type\""
-
-#: captcha.inc:146
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Esta pregunta se hace para comprobar que es usted una persona real e impedir \
el envÃo automatizado de mensajes basura."
-
-#: captcha.module:31
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr "\"CAPTCHA\" es un acrónimo de \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\" <em>(test de Turing completamente automatizado para \
distinguir humanos de ordenadores)</em>. Es la tÃpica pregunta cuya respuesta \
permite determinar si el usuario es o no humano. El módulo CAPTCHA es una \
herramienta para combatir contra los envÃos automatizados por parte de usuarios mal \
intencionados (spam) en formularios de comentarios, de registro como nuevos usuarios, \
libros de visitas, etc... Pueden añadirse nuevos formularios con nuevas preguntas \
que un humano deberÃa poder contestar pero que deberÃan ser lo bastante difÃciles \
para rechazar códigos y programas automáticos."
-
-#: captcha.module:32
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr "Tenga en cuenta que el módulo CAPTCHA interactua con la caché de páginas \
(consulte <a href=\"!performancesettings\">opciones de rendimiento</a>). Como la \
pregunta debe ser distinta para cada formulario generado, la caché de la página en \
la que aparece queda inutilizada. Asegúrese de que estos formularios no aparezcan en \
demasiadas páginas o la caché perderá mucha eficiencia. Por ejemplo, si pone una \
pregunta CAPTCHA en el bloque de comienzo de sesión como usuario, que suele aparecer \
en cada página que ve un usuario anónimo, la caché quedará virtualmente \
desactivada. En ese caso, deberÃa disponer el %commentlocation\" en\"%separatepage\" \
en las opciones de comentarios de los <a href=\"!contenttypes\">tipos de \
contenido</a> relevantes para ajustar la eficiencia de la caché."
-
-#: captcha.module:35
-msgid "Location of comment submission form"
-msgstr "Ubicación del formulario de envÃo de comentarios"
-
-#: captcha.module:36
-msgid "Display on separate page"
-msgstr "Mostrar en una página aparte"
-
-#: captcha.module:40
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA es una marca registrada de la Universidad Carnegie Mellon."
-
-#: captcha.module:45
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr "Se puede añadir una pregunta CAPTCHA casi a cualquier formulario en Drupal. \
Algunos formularios ya vienen en la lista de formularios predeterminada, pero se \
pueden añadir y gestionar otros formularios si se activa la opción \
\"%adminlinks\"."
-
-#: captcha.module:47
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr "A los usuarios con <a href=\"@perm\">permisos</a> \"%skipcaptcha\" no se \
les planteará una pregunta. Asegúrese de conceder este permiso a usuarios de \
confianza (como los administradores del sitio web). Si quiere probar un formualrio \
protegido, compruebe que lo hace como usario sin el permiso \"%skipcaptcha\"; por \
ejemplo: Como usuario anónimo no registrado."
-
-#: captcha.module:48;107
-msgid "skip CAPTCHA"
-msgstr "Evitar CAPTCHA"
-
-#: (duplicate) captcha.module:269;322;119
-#: ;222;427;456;60;71 captcha.info:0
-#: image_captcha/image_captcha.user.inc:29;73
-#: image_captcha/image_captcha.module:95
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: captcha.module:327
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr "CAPTCHA: Activada la pregunta \"@type\""
-
-#: captcha.module:328
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr "Los usuarios que no son de confianza verán un CAPTCHA aquà (!settings)."
-
-#: captcha.module:329
-msgid "general CAPTCHA settings"
-msgstr "opciones generales de CAPTCHA"
-
-#: captcha.module:333
-msgid "Enabled challenge"
-msgstr "Pregunta activada"
-
-#: captcha.module:334
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr "\"@type\" por el módulo \"@module\" (!change, !disable)"
-
-#: captcha.module:337
-msgid "change"
-msgstr "cambiar"
-
-#: captcha.module:338
-msgid "disable"
-msgstr "desactivar"
-
-#: captcha.module:352
-#: image_captcha/image_captcha.admin.inc:57
-msgid "Example"
-msgstr "Ejemplo"
-
-#: captcha.module:353
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr "Este es un ejemplo ya resuelto de la pregunta y no impide nada."
-
-#: captcha.module:362
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA: No se ha establecido ninguna pregunta"
-
-#: captcha.module:364
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Ponga un CAPTCHA a aquellos usuarios que no son de confianza."
-
-#: captcha.module:426
-msgid "CAPTCHA validation error: unknown CAPTCHA session ID. Contact the site \
administrator if this problem persists."
-msgstr "Error de validación CAPTCHA: ID de sesión CAPCHA no identificada. Contacte \
con los administradores de este sitio si el problema persiste."
-
-#: captcha.module:451
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "La respuesta a la pregunta no es correcta."
-
-#: captcha.module:538
-msgid "Math question"
-msgstr "Pregunta matemática"
-
-#: captcha.module:539
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Resuelva este simple problema matemático y escriba la solución; por \
ejemplo: Para 1+3, escriba 4."
-
-#: captcha.module:540
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-#: captcha.module:559
-msgid "Test one two three"
-msgstr "Prueba uno dos tres"
-
-#: captcha.module:222
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr "Problema de CAPTCHA: hook_captcha() del módulo %module no devolvió nada al \
intentar extraer la pregunta del tipo %type para el formulario \
%form_id."
-
-#: captcha.module:427
-msgid "CAPTCHA validation error: unknown CAPTCHA session ID (%csid)."
-msgstr "Error de validación de CAPTCHA: ID de sesión de CAPTCHA desconocido \
(%csid)."
-
-#: captcha.module:456
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr "mensaje de %form_id bloqueado por el módulo CAPTCHA: Pregunta \
\"%challenge\" (del módulo \"%module\"), el usuario respondió \"%response\", pero \
la solución era \"%solution\"."
-
-#: captcha.module:120
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] "Ya se ha bloqueado 1 envÃo a formulario"
-msgstr[1] "Ya se han bloqueado @count envÃos a formularios"
-
-#: captcha.module:61
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Administra cómo y cuándo se usa CAPTCHA."
-
-#: captcha.module:77
-msgid "General settings"
-msgstr "Opciones generales"
-
-#: captcha.module:83
-msgid "Examples"
-msgstr "Ejemplos"
-
-#: captcha.module:84
-msgid "An overview of the available challenge types with examples."
-msgstr "Un resumen de los tipos de preguntas disponibles con ejemplos."
-
-#: captcha.module:93
-msgid "CAPTCHA point administration"
-msgstr "Administración de puntos CAPTCHA"
-
-#: captcha.module:0
-msgid "captcha"
-msgstr "captcha"
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr "Base de datos no admitida."
-
-#: (duplicate) captcha.install:115
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr "Ahora puede <a href=\"!captcha_admin\">configurar el módulo CAPTCHYA </a> \
en el sitio web."
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr "El módulo CAPTCHA base para añadir preguntas a los formularios de manera \
arbitraria."
-
-#: captcha.info:0
-#: image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr "Control de correo basura"
-
-#: image_captcha/image_captcha.admin.inc:29
-msgid "Built-in font"
-msgstr "Fuente predefinida"
-
-#: image_captcha/image_captcha.admin.inc:47
-msgid "The Image CAPTCHA module can not generate images because your PHP setup does \
not support it (no <a href=\"!gdlib\">GD library</a> with JPEG \
support)."
-msgstr "El módulo de preguntas CAPTCHA de imágenes no puede generar las imágenes \
por que su configuración de PHP no lo admite (no hay una <a href=\"!gdlib\">GD \
library</a> que admita formato JPEG)."
-
-#: image_captcha/image_captcha.admin.inc:58
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr "Ejemplo de un CAPTCHA de imagen ya solucionado, creado con las opciones \
actuales."
-
-#: image_captcha/image_captcha.admin.inc:69
-msgid "Code settings"
-msgstr "Opciones de código"
-
-#: image_captcha/image_captcha.admin.inc:73
-msgid "Characters to use in the code"
-msgstr "Caracteres que se usarán en el código"
-
-#: image_captcha/image_captcha.admin.inc:78
-msgid "Code length"
-msgstr "Longitud del código"
-
-#: image_captcha/image_captcha.admin.inc:81
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr "La longitud del código influye en el tamaño de la imagen. Tenga en cuenta \
que cuanto mayor sea la longitud, más tendrá que esforzarse la CPU para crear la \
imagen."
-
-#: image_captcha/image_captcha.admin.inc:87
-msgid "Font settings"
-msgstr "Opciones de fuente"
-
-#: image_captcha/image_captcha.admin.inc:93
-msgid "Font"
-msgstr "Fuente"
-
-#: image_captcha/image_captcha.admin.inc:95
-msgid "Select the font to use for the text in the image CAPTCHA. Apart from the \
provided defaults, you can also use your own TrueType fonts (filename extension .ttf) \
by putting them in the Drupal \"files\" directory (directory %filesdir), \
%fonts_library_general or %fonts_library_specific."
-msgstr "Seleccione que tipo de letra desea usar en el texto del CAPTCHA de imagen. \
Además de las predefinidas, puede añadir sus propias fuentes TrueType (con la \
extensión de documento .ttf) colocándolas en el directorio \"files\" de su \
instalación Drupal (directory %filesdir), %fonts_library_general o \
%fonts_library_specific."
-
-#: image_captcha/image_captcha.admin.inc:110
-msgid "Font size"
-msgstr "Tamaño de letras"
-
-#: image_captcha/image_captcha.admin.inc:112
-msgid "tiny"
-msgstr "Diminuto"
-
-#: image_captcha/image_captcha.admin.inc:113;172
-msgid "small"
-msgstr "pequeño"
-
-#: image_captcha/image_captcha.admin.inc:115;139
-msgid "normal"
-msgstr "normal"
-
-#: image_captcha/image_captcha.admin.inc:117
-msgid "large"
-msgstr "grande"
-
-#: image_captcha/image_captcha.admin.inc:119
-msgid "extra large"
-msgstr "extra grande"
-
-#: image_captcha/image_captcha.admin.inc:122
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr "El tamaño de la fuente influye en el tamaño de la imagen. Tenga en cuenta \
que un valor mayor hará que la creación de la imagen será más trabajosa para la \
CPU."
-
-#: image_captcha/image_captcha.admin.inc:134
-msgid "Character spacing"
-msgstr "Espacio entre caracteres"
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr "Define el espacio promedio entre caracteres. Tenga en cuenta que a mayores \
tamaños, la imagen resultante será mayor y también lo será el esfuerzo que tenga \
que hacer la CPU."
-
-#: image_captcha/image_captcha.admin.inc:138
-msgid "tight"
-msgstr "apretado"
-
-#: image_captcha/image_captcha.admin.inc:140
-msgid "wide"
-msgstr "amplio"
-
-#: image_captcha/image_captcha.admin.inc:141
-msgid "extra wide"
-msgstr "extra amplio"
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "Color and image settings"
-msgstr "Opciones de color e imagen"
-
-#: image_captcha/image_captcha.admin.inc:149
-msgid "Configuration of the background, text colors and file format of the image \
CAPTCHA."
-msgstr "Configuración de los colores de fondo y textos, y del formato del documento \
con la imagen CAPTCHA."
-
-#: image_captcha/image_captcha.admin.inc:153
-msgid "Background color"
-msgstr "Color de fondo"
-
-#: image_captcha/image_captcha.admin.inc:154
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90). \
When using the PNG file format with transparent background, it is recommended to set \
this close to the underlying background color."
-msgstr "Indique el valor hexadecimal del color de fondo; por ejemplo: #fff o \
#ffce90. En el caso de usar el formato PNG con fondo transparente, se recomienda \
indicar un color similar al color que tenga el fondo."
-
-#: image_captcha/image_captcha.admin.inc:161
-msgid "Text color"
-msgstr "Color del texto"
-
-#: image_captcha/image_captcha.admin.inc:162
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr "Indique un valor decimal para el color del texto; por ejemplo: #000 o \
#004283."
-
-#: image_captcha/image_captcha.admin.inc:169
-msgid "Additional variation of text color"
-msgstr "Variación adicional del color del texto"
-
-#: image_captcha/image_captcha.admin.inc:173
-msgid "moderate"
-msgstr "moderada"
-
-#: image_captcha/image_captcha.admin.inc:174;245
-msgid "high"
-msgstr "alta"
-
-#: image_captcha/image_captcha.admin.inc:175
-msgid "very high"
-msgstr "extrema"
-
-#: image_captcha/image_captcha.admin.inc:178
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr "Las distintas letras tendrán colores al azar en el rango determinado en \
torno al color del texto."
-
-#: image_captcha/image_captcha.admin.inc:182
-msgid "File format"
-msgstr "Formato de documento"
-
-#: image_captcha/image_captcha.admin.inc:183
-msgid "Select the file format for the image. JPEG usually results in smaller files, \
PNG allows tranparency."
-msgstr "Seleccione el formato de documento para la imagen. JPEG suele proporcionar \
documentos más reducidos, mientras que PNG permite transparencia."
-
-#: image_captcha/image_captcha.admin.inc:186
-msgid "JPEG"
-msgstr "JPEG"
-
-#: image_captcha/image_captcha.admin.inc:187
-msgid "PNG"
-msgstr "PNG"
-
-#: image_captcha/image_captcha.admin.inc:188
-msgid "PNG with transparent background"
-msgstr "PNG con fondo transparente"
-
-#: image_captcha/image_captcha.admin.inc:195
-msgid "Distortion and noise"
-msgstr "Distorsión y ruido"
-
-#: image_captcha/image_captcha.admin.inc:196
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr "Con estas opciones se controla el grado de legibilidad añadiendo \
dirtorsiones y ruido. No exagere la pérdida de legibilidad y asegúrese de que el \
código de la imagen será razonablemente comprensible; por ejemplo: No combine altos \
niveles de distorsión y ruido."
-
-#: image_captcha/image_captcha.admin.inc:201
-msgid "Distortion level"
-msgstr "Nivel de distorsión"
-
-#: image_captcha/image_captcha.admin.inc:203
-msgid "@level - no distortion"
-msgstr "@level - Sin distorsión"
-
-#: image_captcha/image_captcha.admin.inc:204
-msgid "@level - low"
-msgstr "@level - Poca"
-
-#: image_captcha/image_captcha.admin.inc:208
-msgid "@level - medium"
-msgstr "@level - Media"
-
-#: image_captcha/image_captcha.admin.inc:213
-msgid "@level - high"
-msgstr "@level - Alta"
-
-#: image_captcha/image_captcha.admin.inc:216
-msgid "Set the degree of wave distortion in the image."
-msgstr "Establecer el nivel de la onda de distorsión en la imagen."
-
-#: image_captcha/image_captcha.admin.inc:220
-msgid "Smooth distortion"
-msgstr "Distorsión suave"
-
-#: image_captcha/image_captcha.admin.inc:222
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Esta opción permite la interpolación bilineal de la distorsión, lo que \
hace que la imagen se vea más suavizada, pero añade más carga a la \
CPU."
-
-#: image_captcha/image_captcha.admin.inc:227
-msgid "Add salt and pepper noise"
-msgstr "Añadir ruido granular"
-
-#: image_captcha/image_captcha.admin.inc:229
-msgid "This option adds randomly colored point noise."
-msgstr "Esta opción añade ruido de puntos de colores al azar."
-
-#: image_captcha/image_captcha.admin.inc:233
-msgid "Add line noise"
-msgstr "Añadir lÃnea de ruido"
-
-#: image_captcha/image_captcha.admin.inc:235
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Esta opción coloca trazos al azar encima del texto del código."
-
-#: image_captcha/image_captcha.admin.inc:239
-msgid "Noise level"
-msgstr "Nivel de ruido"
-
-#: image_captcha/image_captcha.admin.inc:241
-msgid "low"
-msgstr "bajo"
-
-#: image_captcha/image_captcha.admin.inc:243
-msgid "medium"
-msgstr "medio"
-
-#: image_captcha/image_captcha.admin.inc:247
-msgid "severe"
-msgstr "intenso"
-
-#: image_captcha/image_captcha.admin.inc:264
-msgid "The Image CAPTCHA module can not use TrueType fonts because your PHP setup \
does not support it. You can only use a low quality built-in bitmap \
font."
-msgstr "El módulo de preguntas CAPTCHAs de imagen no puede usar fuentes TrueType \
porque su configuración de PHP no lo admite. Sólo puede usar una fuente de sistema \
de mapa de bits de baja calidad."
-
-#: image_captcha/image_captcha.admin.inc:269
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr "El uso de una fuente de mapa de bits del sistema no se recomienda debido a \
su reducido tamaño y a que no funcionan con UTF-8."
-
-#: image_captcha/image_captcha.admin.inc:280
-msgid "The list of characters to use should not contain spaces."
-msgstr "La lista de caracteres no deben incluir espacios"
-
-#: image_captcha/image_captcha.admin.inc:285
-msgid "You need to select a font"
-msgstr "Tiene que seleccionar una fuente"
-
-#: image_captcha/image_captcha.admin.inc:290
-msgid "The built-in font only supports Latin2 characters. Only use \"a\" to \"z\" \
and numbers."
-msgstr "La fuente del sistema sólo admite caracteres Latin2. Utilice sólo letras \
de la \"a\" a la \"z\" y números."
-
-#: image_captcha/image_captcha.admin.inc:294
-msgid "Font does not exist or is not readable."
-msgstr "La fuente no existe o no es legible."
-
-#: image_captcha/image_captcha.admin.inc:299
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "El color de fondo no es un valor de color hexadecimal válido."
-
-#: image_captcha/image_captcha.admin.inc:302
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "El color del texto no es un valor hexadecimal válido."
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr "No se pudo crear la imagen CAPTCHA. Compruebe la configuración de su \
CAPTCHA de imagen y, sobre todo, qué tipo de letra se ha usado."
-
-#: image_captcha/image_captcha.user.inc:73
-msgid "Could not find or read the configured font (\"%font\") for the image \
CAPTCHA."
-msgstr "No se pudo leer la fuente (\"%font\") especificada para la pregunta CAPTCHA \
de imagen."
-
-#: image_captcha/image_captcha.module:29
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr "El CAPTCHA de imagen es un tipo popular de pregunta en la que un texto \
aleatorio se distorsiona y oculta como una imagen. Ésta imagen se genera sobre la \
marcha con cada petición, por lo que se incrementa el esfuerzo de la CPU del \
servidor. Tenga cuidado con las opciones relacionadas con su tamaño y cualquier \
esfuerzo del procesador."
-
-#: image_captcha/image_captcha.module:165
-msgid "Enter the characters shown in the image. Ignore spaces and be careful about \
upper and lower case."
-msgstr "Escriba los caracteres que se deben mosytrar en la imagen. Los espacios no \
se tendrán en cuenta. Tenga cuidado con las mayúsculas y \
minúsculas."
-
-#: image_captcha/image_captcha.module:168
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr "Escriba los caracteres (sin espacios) que se deben mostrar en la imagen."
-
-#: image_captcha/image_captcha.module:178;178;41
-#: image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr "CAPTCHA de imagen"
-
-#: image_captcha/image_captcha.module:183
-msgid "What code is in the image?"
-msgstr " ¿Cuál es el código de la imagen?"
-
-#: image_captcha/image_captcha.module:95
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "Se ha encontrado un byte ilegal al distribuir en caracteres una cadena \
utf8."
-
-#: image_captcha/image_captcha.module:0
-msgid "image_captcha"
-msgstr "image_captcha"
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "Proporcionar una pregunta CAPTCHA basada en una imagen."
-
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fi.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fi.po deleted file \
mode 100644 index 2c98f4c..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fi.po
+++ /dev/null
@@ -1,747 +0,0 @@
-#
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-# captcha.admin.inc,v 1.5.2.5 2008/03/09 02:16:57 soxofaan
-# image_captcha.admin.inc,v 1.3 2008/01/07 13:34:53 soxofaan
-# captcha.module,v 1.58.2.5 2008/03/09 02:16:57 soxofaan
-# captcha.info,v 1.5 2007/10/27 18:24:50 robloach
-# image_captcha.user.inc,v 1.3 2008/01/07 13:34:53 soxofaan
-# image_captcha.module,v 1.8.2.1 2008/03/09 01:42:07 soxofaan
-# captcha.install,v 1.3.2.2 2008/03/20 10:27:53 soxofaan
-# image_captcha.info,v 1.3 2007/12/11 12:05:32 soxofaan
-# text_captcha.info,v 1.3 2008/01/04 14:29:58 soxofaan
-# text_captcha.admin.inc,v 1.1 2008/01/04 14:29:58 soxofaan
-# text_captcha.user.inc,v 1.1 2008/01/04 14:29:58 soxofaan
-# text_captcha.module,v 1.3.2.1 2008/02/27 15:20:51 soxofaan
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: captcha-6.x-2.0\n"
-"POT-Creation-Date: 2009-08-22 09:54+0300\n"
-"PO-Revision-Date: 2009-08-22 16:15+0200\n"
-"Last-Translator: Juhani Pirinen <juhani.pirinen@ontieto.com>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Poedit-Language: Finnish\n"
-"X-Poedit-Country: FINLAND\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: captcha.admin.inc:16
-#: image_captcha/image_captcha.admin.inc:157;179
-msgid "none"
-msgstr "ei mitään"
-
-#: captcha.admin.inc:17
-msgid "default challenge type"
-msgstr "oletus tarkistustyyppi"
-
-#: captcha.admin.inc:23
-msgid "@type (from module @module)"
-msgstr "@type (moduuli @module)"
-
-#: captcha.admin.inc:42
-msgid "Form protection"
-msgstr "Lomakkeen suojaus"
-
-#: captcha.admin.inc:43
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr "Valitse tarkistuksen tyyppi jokaiselle listan lomakkeelle (yksilöintiin \
käytetään <em>form_id</em>:tä). Voit helposti lisätä tarkituksen muillekin \
lomakkeille taulukon alla tai käyttämällä alla valintaa \
'%CAPTCHA_admin_links'."
-
-#: captcha.admin.inc:44;108
-#: captcha.module:46
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Lisää CAPTCHA ylläpitolinkit lomakkeille"
-
-#: captcha.admin.inc:49
-msgid "Default challenge type"
-msgstr "Oletus tarkistustyyppi"
-
-#: captcha.admin.inc:50
-msgid "Select the default challenge type for CAPTCHAs. This can be overriden for \
each form if desired."
-msgstr "Valitse oletus tarkistustyyppi CAPTCHAlle. Tämä voidaan tarvittaessa \
ohittaa kunkin lomakkeen asetuksissa."
-
-#: captcha.admin.inc:86
-msgid "delete"
-msgstr "poista"
-
-#: captcha.admin.inc:110
-msgid "This option makes it easy to manage CAPTCHA settings on forms. When enabled, \
users with the \"%admincaptcha\" permission will see a fieldsset with CAPTCHA \
administration links on all forms, except on administrative pages."
-msgstr "Tämä valinta helpottaa CAPTCHAn asetusten ylläpitoa lomakkeissa. Kun \
tämä on käytössä, ne käyttäjät joilla on \"%admincaptcha\" oikeus näkevät \
CAPTCHA ylläpitolinkin kaikilla lomakkeilla, paitsi \
ylläpitosivuilla."
-
-#: captcha.admin.inc:110
-#: captcha.module:107
-msgid "administer CAPTCHA settings"
-msgstr "CAPTCHAn asetusten määrittely"
-
-#: captcha.admin.inc:115
-msgid "Allow CAPTCHAs and CAPTCHA administration links on administrative pages"
-msgstr "Ota käyttöön CAPTCHAt ja CAPTCHAn ylläpitolinkit ylläpitosivuilla"
-
-#: captcha.admin.inc:117
-msgid "This option makes it possible to add CAPTCHAs to forms on administrative \
pages. CAPTCHAs are disabled by default on administrative pages (which shouldn't be \
accessible to untrusted users normally) to avoid the related overhead. In some \
situations, e.g. in the case of demo sites, it can be usefull to allow CAPTCHAs on \
administrative pages."
-msgstr "Tämä valinta mahdollistaa CAPTCHAn lisäämisen lomakkeisiin \
ylläpitosivuilla. Oletusarvoisesti CAPTCHAt eivät ole käytössä \
ylläpitosivuilla (joille epäluotetuilla käyttäjillä ei normaalisti pitäisi olla \
pääsyä) turhan kuormituksen välttämiseksi. Joissain tapauksissa, esim. \
demosivuilla, voi olla käytännöllistä käyttää CAPTCHAa \
ylläpitosivuilla."
-
-#: captcha.admin.inc:123
-msgid "Add a description to the CAPTCHA"
-msgstr "Lisää CAPTCHAlle kuvaus"
-
-#: captcha.admin.inc:124
-msgid "Add a configurable description to explain the purpose of the CAPTCHA to the \
visitor."
-msgstr "Lisää muokattava kuvaus selittämään CAPTCHAn tarkoitusta \
käyttäjälle."
-
-#: captcha.admin.inc:132
-msgid "CAPTCHA description"
-msgstr "CAPTCHAn kuvaus"
-
-#: captcha.admin.inc:133;149
-msgid "Configurable description of the CAPTCHA. An empty entry will reset the \
description."
-msgstr "CAPTCHAn muokattava kuvaus. Tyhjä arvo tyhjentää kuvauksen."
-
-#: captcha.admin.inc:139
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Kielelle %lang_name (koodi %lang_code)"
-
-#: captcha.admin.inc:148
-msgid "Challenge description"
-msgstr "Tarkistuksen kuvaus"
-
-#: captcha.admin.inc:159
-msgid "Default CAPTCHA validation"
-msgstr "CAPTCHAn oletushyväksyntä"
-
-#: captcha.admin.inc:160
-msgid "Define how the response should be processed by default. Note that the modules \
that provide the actual challenges can override or ignore this."
-msgstr "Määrittele miten vastauksia prosessoidaan oletusarvoisesti. Huomaa, että \
moduulit jotka varsinaisesti tuottavat tarkistukset, voivat ohittaa tämän tai olla \
välittämättä tästä."
-
-#: captcha.admin.inc:162
-msgid "Case sensitive validation: the response has to exactly match the solution."
-msgstr "Merkkikokoriippuvainen hyväksyntä: vastauksen täytyy vastata ratkaisua \
tarkasti."
-
-#: captcha.admin.inc:163
-msgid "Case insensitive validation: lowercase/uppercase errors are ignored."
-msgstr "Merkkikokoriippumaton hyväksyntä: pieni/iso eroavuudesta syntyvät virheet \
jätetään huomiotta."
-
-#: captcha.admin.inc:171
-msgid "Persistence"
-msgstr "Pysyvyys"
-
-#: captcha.admin.inc:174
-msgid "Always add a challenge."
-msgstr "Lisää tarkistus aina."
-
-#: captcha.admin.inc:175
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Ohita tarkistukset samalla lomakkeella, jolla käyttäjä on vastannut \
tarkistuskyselyyn oikein."
-
-#: captcha.admin.inc:176
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Ohita tarkistukset kaikissa lomakkeissa, kun käyttäjä on vastannut \
tarkistuskyselyyn oikein."
-
-#: captcha.admin.inc:178
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr "Määrittele ohitetaanko tarkistukset loppuistunnon ajaksi, kun käyttäjä \
on vastannut tarkistuskyselyyn oikein."
-
-#: captcha.admin.inc:184
-msgid "Log wrong responses"
-msgstr "Kirjaa väärät vastaukset lokiin"
-
-#: captcha.admin.inc:185
-msgid "Report information about wrong responses to the !log."
-msgstr "Raportoi vääristä vastauksista !log."
-
-#: captcha.admin.inc:185
-msgid "log"
-msgstr "lokiin"
-
-#: captcha.admin.inc:192
-msgid "Save configuration"
-msgstr "Tallenna asetukset"
-
-#: captcha.admin.inc:202;342
-msgid "Challenge type"
-msgstr "Tarkistustyyppi"
-
-#: captcha.admin.inc:202
-msgid "Operations"
-msgstr "Toiminnot"
-
-#: captcha.admin.inc:229;363
-msgid "Illegal form_id"
-msgstr "Kielletty form_id"
-
-#: captcha.admin.inc:255
-msgid "Added CAPTCHA point."
-msgstr "CAPTCHA kohde lisätty."
-
-#: captcha.admin.inc:270
-msgid "Reset of CAPTCHA description for language %language."
-msgstr "Tyhjennä CAPTCHAn kuvaus kielelle %language."
-
-#: captcha.admin.inc:281
-msgid "Reset of CAPTCHA description."
-msgstr "CAPTCHA kuvauksen tyhjennys."
-
-#: captcha.admin.inc:289
-msgid "The CAPTCHA settings were saved."
-msgstr "CAPTCHAn asetukset tallennettu."
-
-#: captcha.admin.inc:321;335
-msgid "Form ID"
-msgstr "Form ID"
-
-#: captcha.admin.inc:322;336
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Drupalin form_id lomakkeelle johon CAPTCHA lisätään."
-
-#: captcha.admin.inc:343
-msgid "The CAPTCHA type to use for this form"
-msgstr "CAPTCHA tyyppi tälle lomakkeelle"
-
-#: captcha.admin.inc:352
-msgid "Save"
-msgstr "Tallenna"
-
-#: captcha.admin.inc:375
-msgid "Saved CAPTCHA point settings."
-msgstr "CAPTCHA kohdeasetukset tallennettu."
-
-#: captcha.admin.inc:392
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "Haluatko varmasti poistaa CAPTCHAn lomakkeelta %form_id?"
-
-#: captcha.admin.inc:393
-msgid "Delete"
-msgstr "Poista"
-
-#: captcha.admin.inc:396
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "Haluatko varmasti poistaa CAPTCHAn käytöstä lomakkeelta %form_id?"
-
-#: captcha.admin.inc:397
-msgid "Disable"
-msgstr "Poista käytöstä"
-
-#: captcha.admin.inc:410
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "CAPTCHA poistettu lomakkeelta %form_id."
-
-#: captcha.admin.inc:414
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "CAPTCHA poistettu käytöstä lomakkeelta %form_id."
-
-#: captcha.admin.inc:451
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Tämä sivu antaa yleiskatsauksen saatavilla olevista tarkistustyyppeistä, \
jotka on muodostettu nykyisillä asetuksilla."
-
-#: captcha.admin.inc:459
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Moduulin \"%module\" tarkistus \"%challenge\""
-
-#: captcha.admin.inc:462
-msgid "10 more examples of this challenge."
-msgstr "10 lisäesimerkkiä tarkistuksesta."
-
-#: captcha.inc:38
-msgid "Failed to set a CAPTCHA type for form %form_id: could not interpret value \
\"@captcha_type\""
-msgstr "CAPTCHA-tyypin asetus lomakkeelle %form_id epäonnistui: ei voitu tulkita \
arvoa \"@captcha_type\""
-
-#: captcha.inc:145
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Tämä kysymys esitetään, jotta lomakkeen automatisoitu käyttö \
voitaisiin estää."
-
-#: captcha.module:31
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr "\"CAPTCHA\" on lyhenne sanoista \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". Yleensä se on kysymys-vastaus testi, jolla \
määritetään, onko käyttäjä ihminen. CAPTCHA moduuli on työkalu taistelussa \
pahantahtoisten käyttäjien automatisoituja lähetyksiä (spamia) vastaan, \
esimerkiksi rekisteröitymislomakkeissa, vieraskirjalomakkeissa, jne. Haluttuja \
lomakkeita voi laajentaa lisätarkistuksella, jonka ihmisten pitäisi olla helppo \
ratkaista oikein, mutta joka on riittävän vaikea pitämään automaattiset skriptit \
ja spam botit poissa."
-
-#: captcha.module:32
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr "Huomaa, että CAPTCHA moduuli vaikuttaa sivuvälimuistin käyttöön (katso \
<a href=\"!performancesettings\">suorituskykyasetukset</a>). Koska tarkistus on \
ainutkertainen joka lomakkeelle, estetään kohdelomakkeen tallennus \
sivuvälimuistiin. Varmista, että näitä lomakkeita ei ole sivustolla liian monta, \
muuten sivuvälimuistin käytön hyötysuhteesta menetetään paljon. Esimerkiksi, \
jos laitat CAPTCHAn sisäänkirjautumislohkoon, mikä tavallisesti on joka sivulla \
anonyymeille vierailijoille, sivuvälimuistin käyttö käytännössä estyy. \
Kommenttien lähetyslomakkeet ovat toinen esimerkki. Tässä tapauksessa \
\"%commentlocation\" pitäisi asettaa kohteeseen \"%separatepage\" kommenttien \
asetuksissa <a href=\"!contenttypes\">sisällön tyypeissä</a>, jotta välimuistin \
käytön hyötysuhde olisi parempi."
-
-#: captcha.module:35
-msgid "Location of comment submission form"
-msgstr "Kommenttien lähetyslomakkeen sijainti"
-
-#: captcha.module:36
-msgid "Display on separate page"
-msgstr "Näytä erillisellä sivulla"
-
-#: captcha.module:40
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA on Carnegie Mellon Yliopiston tavaramerkki."
-
-#: captcha.module:45
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr "CAPTCHA voidaan lisätä käytännöllisesti katsoen kaikkiin Drupalin \
lomakkeisiin. Joitakin oletuslomakkeita on jo listalla, mutta yleensä kaikkiin \
lomakkeisiin voidaan lisätä tarkistus kun valinta \"%adminlinks\" \
on käytössä."
-
-#: captcha.module:47
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr "Käyttäjille, joilla on \"%skipcaptcha\" <a href=\"@perm\">oikeus</a> ei \
näytetä tarkistusta. Varmista, että tämä annetaan vain luotetuille käyttäjille \
(esim. ylläpitäjille). Jos tahdot testata suojattua lomaketta, varmista että teet \
sen käyttäjänä ilman \"%skipcaptcha\" oikeutta (esim. anonyyminä \
käyttäjänä)."
-
-#: captcha.module:48;107
-msgid "skip CAPTCHA"
-msgstr "CAPTCHAn ohittaminen"
-
-#: (duplicate) captcha.module:269;322;119
-#: ;222;442;60;71 captcha.info:0
-#: image_captcha/image_captcha.user.inc:29;72
-#: image_captcha/image_captcha.module:94
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: captcha.module:327
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr "CAPTCHA: tarkistus \"@type\" käytössä"
-
-#: captcha.module:328
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr "Epäluotetut käyttäjät näkevät CAPTCHAn tässä (!settings)."
-
-#: captcha.module:329
-msgid "general CAPTCHA settings"
-msgstr "Yleiset CAPTCHA asetukset"
-
-#: captcha.module:333
-msgid "Enabled challenge"
-msgstr "Käyttöönotettu tarkistus"
-
-#: captcha.module:334
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr "Moduulin \"@module\" \"@type\" (!change, !disable)"
-
-#: captcha.module:337
-msgid "change"
-msgstr "muuta"
-
-#: captcha.module:338
-msgid "disable"
-msgstr "pois käytöstä"
-
-#: captcha.module:343
-#: image_captcha/image_captcha.admin.inc:49
-msgid "Example"
-msgstr "Esimerkki"
-
-#: captcha.module:344
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr "Tämä on esiratkaistu, ei-estävä esimerkki tästä tarkistuksesta."
-
-#: captcha.module:353
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA: tarkistusta ei käytössä"
-
-#: captcha.module:355
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Aseta tähän CAPTCHA epäluotetuille käyttäjille."
-
-#: captcha.module:417
-msgid "CAPTCHA test failed (unknown csid)."
-msgstr "CAPTCHA testi epäonnistui (tuntematon csid)."
-
-#: captcha.module:437
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "CAPTCHAan annettu vastaus ei ollut oikein."
-
-#: captcha.module:524
-msgid "Math question"
-msgstr "Laskutehtävä"
-
-#: captcha.module:525
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Ratkaise tämä pieni laskutehtävä ja anna vastaus. Esim. 1+3, anna 4."
-
-#: captcha.module:526
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-#: captcha.module:545
-msgid "Test one two three"
-msgstr "Testi yksi kaksi kolme"
-
-#: captcha.module:222
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr "CAPTCHA ongelma: moduulin %module hook_captcha() ei palauttanut mitään kun \
yritettiin hakea tarkistustyyppiä %type lomakkeelle %form_id."
-
-#: captcha.module:442
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr "CAPTCHA moduuli on estänyt %form_id:n lähetyksen. Tarkistus \"%challenge\" \
(moduulilta \"%module\"), käyttäjä vastasi \"%response\", kun oikea vastaus oli \
\"%solution\"."
-
-#: captcha.module:120
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] "Jo 1 estetty lomakkeen lähetys"
-msgstr[1] "Jo @count estettyä lomakkeen lähetystä"
-
-#: captcha.module:61
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Aseta miten ja missä CAPTCHAa käytetään."
-
-#: captcha.module:77
-msgid "General settings"
-msgstr "Yleiset asetukset"
-
-#: captcha.module:83
-msgid "Examples"
-msgstr "Esimerkit"
-
-#: captcha.module:84
-msgid "An overview of the available challenge types with examples."
-msgstr "Yleiskatsaus saatavilla oleviin tarkistustyyppeihin esimerkkien kanssa."
-
-#: captcha.module:93
-msgid "CAPTCHA point administration"
-msgstr "CAPTCHA kohteiden ylläpito"
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr "Ei tukea tälle tietokannalle."
-
-#: (duplicate) captcha.install:115
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr "Nyt voit muokata <a href=\"!captcha_admin\">CAPTCHA moduulin asetuksia</a> \
sivustollasi."
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr "Perus CAPTCHA moduuli tarkistusten lisäämiseksi kaikkiin lomakkeisiin."
-
-#: captcha.info:0
-#: image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr "Roskapostin hallinta"
-
-#: image_captcha/image_captcha.admin.inc:13
-msgid "Built-in font"
-msgstr "Sisäänrakennettu fontti"
-
-#: image_captcha/image_captcha.admin.inc:39
-msgid "The Image CAPTCHA module can not generate images because your PHP setup does \
not support it (no <a href=\"!gdlib\">GD library</a>)."
-msgstr "Kuva CAPTCHA moduuli ei voi muodostaa kuvia, koska PHP asennus ei tue sitä \
(ei <a href=\"!gdlib\">GD kirjastoa</a>)."
-
-#: image_captcha/image_captcha.admin.inc:50
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr "Esiratkaistu Kuva CAPTCHA esimerkki, muodostettu nykyisillä asetuksilla."
-
-#: image_captcha/image_captcha.admin.inc:61
-msgid "Code settings"
-msgstr "Koodiasetukset"
-
-#: image_captcha/image_captcha.admin.inc:65
-msgid "Characters to use in the code"
-msgstr "Koodissa käytettävät merkit"
-
-#: image_captcha/image_captcha.admin.inc:70
-msgid "Code length"
-msgstr "Koodin pituus"
-
-#: image_captcha/image_captcha.admin.inc:73
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr "Koodin pituus vaikuttaa kuvan kokoon. Huomaa, että suuremmat arvot tekevät \
kuvien muodostamisesta palvelinta kuormittavampaa."
-
-#: image_captcha/image_captcha.admin.inc:79
-msgid "Font settings"
-msgstr "Fonttiasetukset"
-
-#: image_captcha/image_captcha.admin.inc:85
-msgid "Font"
-msgstr "Fontti"
-
-#: image_captcha/image_captcha.admin.inc:87
-msgid "The TrueType font (.ttf) to use for the text in the image CAPTCHA."
-msgstr "TrueType fontti (.ttf) tekstin käyttöön Kuva CAPTCHAssa."
-
-#: image_captcha/image_captcha.admin.inc:96
-msgid "Font size"
-msgstr "Fontin koko"
-
-#: image_captcha/image_captcha.admin.inc:98
-msgid "tiny"
-msgstr "hyvin pieni"
-
-#: image_captcha/image_captcha.admin.inc:99;158
-msgid "small"
-msgstr "pieni"
-
-#: image_captcha/image_captcha.admin.inc:101;125;185
-msgid "normal"
-msgstr "normaali"
-
-#: image_captcha/image_captcha.admin.inc:103
-msgid "large"
-msgstr "suuri"
-
-#: image_captcha/image_captcha.admin.inc:105
-msgid "extra large"
-msgstr "hyvin suuri"
-
-#: image_captcha/image_captcha.admin.inc:108
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr "Fontin koko vaikuttaa kuvan kokoon. Huomaa, että suuremmat arvot tekevät \
kuvien muodostamisesta palvelinta kuormittavampaa."
-
-#: image_captcha/image_captcha.admin.inc:120
-msgid "Character spacing"
-msgstr "Merkkien väli"
-
-#: image_captcha/image_captcha.admin.inc:121
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr "Määrittele keskimääräinen merkkien väli. Huomaa, että suuremmat arvot \
tekevät kuvien muodostamisesta palvelinta kuormittavampaa."
-
-#: image_captcha/image_captcha.admin.inc:124
-msgid "tight"
-msgstr "kapea"
-
-#: image_captcha/image_captcha.admin.inc:126
-msgid "wide"
-msgstr "laaja"
-
-#: image_captcha/image_captcha.admin.inc:127
-msgid "extra wide"
-msgstr "hyvin laaja"
-
-#: image_captcha/image_captcha.admin.inc:134
-msgid "Color settings"
-msgstr "Väriasetukset"
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "Configuration of the background and text colors in the image CAPTCHA."
-msgstr "Kuva CAPTCHAN taustan ja tekstin värien asetukset."
-
-#: image_captcha/image_captcha.admin.inc:139
-msgid "Background color"
-msgstr "Taustaväri"
-
-#: image_captcha/image_captcha.admin.inc:140
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90)."
-msgstr "Kirjoita taustavärin heksadesimaalikoodi (esim. #FFF tai #FFCE90)."
-
-#: image_captcha/image_captcha.admin.inc:147
-msgid "Text color"
-msgstr "Tekstin väri"
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr "Kirjoita tekstin värin heksadesimaalikoodi (e.g. #000 or #004283)."
-
-#: image_captcha/image_captcha.admin.inc:155
-msgid "Additional variation of text color"
-msgstr "Ylimääräinen tekstin värin muuntelu"
-
-#: image_captcha/image_captcha.admin.inc:159;183
-msgid "moderate"
-msgstr "keskinkertainen"
-
-#: image_captcha/image_captcha.admin.inc:160;187;221
-msgid "high"
-msgstr "korkea"
-
-#: image_captcha/image_captcha.admin.inc:161
-msgid "very high"
-msgstr "hyvin korkea"
-
-#: image_captcha/image_captcha.admin.inc:164
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr "Eri merkeille tulevat satunnaiset värit tietyllä vaihteluvälillä tekstin \
väristä."
-
-#: image_captcha/image_captcha.admin.inc:171
-msgid "Distortion and noise"
-msgstr "Väännös ja kohina"
-
-#: image_captcha/image_captcha.admin.inc:172
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr "Näillä asetuksilla voit hallita sekoituksen määrää väännöksissä ja \
kohinassa. Älä lisää sekoitusta liikaa ja varmista, että kuva pysyy \
ymmärrettävästi luettavana. Esimerkiksi, älä yhdistä korkeita väännöstasoja \
ja kohinaa."
-
-#: image_captcha/image_captcha.admin.inc:177
-msgid "Distortion level"
-msgstr "Väännöstaso"
-
-#: image_captcha/image_captcha.admin.inc:181;217
-msgid "low"
-msgstr "alhainen"
-
-#: image_captcha/image_captcha.admin.inc:189;223
-msgid "severe"
-msgstr "rankka"
-
-#: image_captcha/image_captcha.admin.inc:192
-msgid "Set the degree of wave distortion in the image."
-msgstr "Aseta asteluku kuvan aaltoväännölle."
-
-#: image_captcha/image_captcha.admin.inc:196
-msgid "Smooth distortion"
-msgstr "Pehmeä väännös"
-
-#: image_captcha/image_captcha.admin.inc:198
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Tämä valinta ottaa käyttöön bilineaarisen interpoloinnin \
väännöksiin, joka tekee kuvasta pehmeämmän, mutta rasittaa \
palvelinta enemmän."
-
-#: image_captcha/image_captcha.admin.inc:203
-msgid "Add salt and pepper noise"
-msgstr "Lisää suola & pippuri -kohinaa"
-
-#: image_captcha/image_captcha.admin.inc:205
-msgid "This option adds randomly colored point noise."
-msgstr "Tämä valinta lisää satunnaisesti väritettyä pistekohinaa."
-
-#: image_captcha/image_captcha.admin.inc:209
-msgid "Add line noise"
-msgstr "Lisää linjakohinaa"
-
-#: image_captcha/image_captcha.admin.inc:211
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Tämä valinta piirtää satunnaislinjoja tekstin päälle."
-
-#: image_captcha/image_captcha.admin.inc:215
-msgid "Noise level"
-msgstr "Kohinataso"
-
-#: image_captcha/image_captcha.admin.inc:219
-msgid "medium"
-msgstr "keskikokoinen"
-
-#: image_captcha/image_captcha.admin.inc:240
-msgid "The Image CAPTCHA module can not use True Type fonts because your PHP setup \
does not support it. There is only a built-in bitmap font available."
-msgstr "Kuva CAPTCHA moduuli ei voi käyttää True Type fontteja, koska PHP asennus \
ei tue sitä. Vain sisäänrakennettu bittikarttafontti on \
saatavana."
-
-#: image_captcha/image_captcha.admin.inc:245
-msgid "The image CAPTCHA module works best with a TrueType font file (TTF) for \
generating the images, but because of licencing issues it is not allowed to package \
fonts with the module. A simple built-in bitmap font is provided as default instead. \
You can install TrueType fonts yourself by putting them in the fonts directory of the \
image CAPTCHA module (directory \"%fontsdir\") or by uploading them to your Drupal \
file system (directory \"%filesdir\") with for example the upload \
module."
-msgstr "Kuva CAPTCHA toimii parhaiten TrueType fonteilla kuvien muodostamisessa, \
mutta lisenssiongelmien vuoksi fontteja ei ole sallittua toimittaa yhdessä moduulin \
kanssa. Sen sijaan oletuksena tarjotaan yksinkertainen bittikarttafontti. TrueType \
fontteja voi asentaa itse laittamalla ne kuva CAPTCHA moduulin fonttihakemistoon \
(directory \"%fontsdir\") tai lataamalla ne Drupalin tiedostojärjestelmään \
(hakupolku \"%filesdir\") esimerkiksi latausmoduulilla."
-
-#: image_captcha/image_captcha.admin.inc:248
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr "Sisäänrakennetun bittikarttafontin käyttöä ei suositella, koska koko on \
pieni eikä siinä ole UTF-8 tukea."
-
-#: image_captcha/image_captcha.admin.inc:259
-msgid "The list of characters to use should not contain spaces."
-msgstr "Käytettävän merkkilistan ei pitäisi sisältää välilyöntejä."
-
-#: image_captcha/image_captcha.admin.inc:264
-msgid "You need to select a font"
-msgstr "Valitse fontti"
-
-#: image_captcha/image_captcha.admin.inc:267
-msgid "Font does not exist or is not readable."
-msgstr "Fonttia ei ole tai se ei ole luettavissa."
-
-#: image_captcha/image_captcha.admin.inc:272
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Taustaväri ei ole kelvollinen heksadesimaali väriarvo."
-
-#: image_captcha/image_captcha.admin.inc:275
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Tekstin väri ei ole kelvollinen heksadesimaali väriarvo."
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr "CAPTCHAn kuvan luonti epäonnistui. Tarkista Kuva CAPTCHAn asetukset ja \
erityisesti käytetty fontti."
-
-#: image_captcha/image_captcha.user.inc:72
-msgid "Could not find or read the configured font (\"%font\") for the image \
CAPTCHA."
-msgstr "Ei voitu löytää tai lukea Kuva CAPTCHAlle asetettua fonttia (\"%font\")."
-
-#: image_captcha/image_captcha.module:28
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr "Kuva CAPTCHA on suosittu tarkistuskysely, missä satunnainen koodi on \
muutettu epäselvennetyksi kuvaksi. Kuva muodostetaan lennossa erikseen joka \
sivulatauksella, mikä on melko palvelinta rasittavaa. Ole tarkkana koon ja muiden \
laskentaa vaativien asetusten suhteen."
-
-#: image_captcha/image_captcha.module:166
-msgid "Enter the characters shown in the image. Ignore spaces and be careful about \
upper and lower case."
-msgstr "Kirjoita kuvassa näkyvät merkit (ilman välilyöntejä). Huomioi isot ja \
pienet kirjaimet."
-
-#: image_captcha/image_captcha.module:169
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr "Kirjoita kuvassa näkyvät merkit (ilman välilyöntejä)."
-
-#: image_captcha/image_captcha.module:179;179;40
-#: image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr "Kuva CAPTCHA"
-
-#: image_captcha/image_captcha.module:184
-msgid "What code is in the image?"
-msgstr "Mikä koodi on kuvassa?"
-
-#: image_captcha/image_captcha.module:94
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "Havaittiin kielletty bitti kun jaettiin utf8 merkkijonoa merkkeihin."
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "Tarjoaa kuvapohjaisen CAPTCHAn."
-
-#~ msgid "Challenge type per form"
-#~ msgstr "Tarkistustyyppi per lomake"
-#~ msgid "Challenge type (module)"
-#~ msgstr "Tarkistustyyppi (moduuli)"
-#~ msgid "Invalid CAPTCHA token."
-#~ msgstr "Väärä CAPTCHA merkki."
-#~ msgid "captcha"
-#~ msgstr "captcha"
-#~ msgid ""
-#~ "Images cannot be generated, because your PHP installation's GD library "
-#~ "has no JPEG support."
-#~ msgstr ""
-#~ "Kuvaa ei voi luoda, koska palvelimen PHP asetuksista puuttuu jpeg tuki."
-#~ msgid "Double vision"
-#~ msgstr "Kaksoiskuva"
-#~ msgid ""
-#~ "When enabled, characters appear twice in the image, overlayed onto each "
-#~ "other."
-#~ msgstr "Kun on käytössä, kirjaimet ilmestyvät kahdesti toistensa päälle."
-#~ msgid "Copy the characters (respecting upper/lower case) from the image."
-#~ msgstr "Kopio kirjaimet kuvasta (Huomio isot ja pienet kirjaimet)."
-#~ msgid "image_captcha"
-#~ msgstr "kuva_captcha"
-#~ msgid "Kind of words to use in the phrase"
-#~ msgstr "Lauseessa käytettäviä sanoja"
-#~ msgid "Generate nonsense random words."
-#~ msgstr "Muodosta merkityksettömiä satunnaissanoja."
-#~ msgid "Use user defined words."
-#~ msgstr "Käytä käyttäjän antamia sanoja."
-#~ msgid "User defined words"
-#~ msgstr "Käyttäjän antamat sanat"
-#~ msgid "Enter a bunch of space separated words (at least @min)."
-#~ msgstr "Anna ryhmä sanavälillä eroteltuja sanoja (vähintään @min)."
-#~ msgid "Number of words in the phrase"
-#~ msgstr "Sanojen määrä lauseessa"
-#~ msgid ""
-#~ "You need to enter at least @min words if you want to use user defined "
-#~ "words."
-#~ msgstr ""
-#~ "Sinun on annettava vähintään @min sanaa jos haluat käyttää itse "
-#~ "määriteltyjä sanoja."
-#~ msgid "Number of words in the phrase should be between 4 and 10."
-#~ msgstr "Sanojen määrä lauseessa tulee olla 4 ja 10 välillä."
-#~ msgid "first"
-#~ msgstr "ensimmäinen"
-#~ msgid "second"
-#~ msgstr "toinen"
-#~ msgid "third"
-#~ msgstr "kolmas"
-#~ msgid "fourth"
-#~ msgstr "neljäs"
-#~ msgid "fifth"
-#~ msgstr "viides"
-#~ msgid "sixth"
-#~ msgstr "kuudes"
-#~ msgid "seventh"
-#~ msgstr "seitsemäs"
-#~ msgid "ninth"
-#~ msgstr "yhdeksäs"
-#~ msgid "tenth"
-#~ msgstr "kymmenes"
-#~ msgid ""
-#~ "In this challenge the visitor is asked for the n<sup>th</sup> word of a "
-#~ "given phrase."
-#~ msgstr ""
-#~ "Tässä tarkistuksessa vierailijalta kysytään määrättyä sanaa annetusta "
-#~ "lauseesta."
-#~ msgid "What is the @nth word in the phrase \"@words\"?"
-#~ msgstr "Mikä on @nth sana lauseessa \"@words\"?"
-#~ msgid "Text CAPTCHA"
-#~ msgstr "Teksti CAPTCHA"
-#~ msgid "text_captcha"
-#~ msgstr "teksti_captcha"
-#~ msgid "Provides a simple text based CAPTCHA."
-#~ msgstr "Tarjoaa yksinkertaisen tekstipohjaisen CAPTCHA tunnistuksen."
-
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fr.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fr.po deleted file \
mode 100644 index e7a9580..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/fr.po
+++ /dev/null
@@ -1,712 +0,0 @@
-# $Id: fr.po,v 1.1.4.3 2010/03/16 20:24:50 soxofaan Exp $
-#
-# FRENCH translation of Drupal (general)
-# Copyright 2010 NAME <EMAIL@ADDRESS>
-# Generated from files:
-# captcha.admin.inc,v 1.32 2009/10/27 16:11:17 soxofaan
-# image_captcha.admin.inc,v 1.30 2009/12/15 23:53:37 soxofaan
-# captcha.module,v 1.102 2009/12/08 22:25:19 soxofaan
-# captcha.inc,v 1.11 2009/08/27 22:21:56 soxofaan
-# captcha.info,v 1.7 2008/02/17 12:49:24 soxofaan
-# image_captcha.user.inc,v 1.23 2009/12/15 23:53:37 soxofaan
-# image_captcha.module,v 1.33 2009/12/15 23:53:37 soxofaan
-# captcha.install,v 1.11 2009/12/19 00:24:36 soxofaan
-# image_captcha.info,v 1.5 2008/02/17 12:49:24 soxofaan
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: captcha 6.x-2.x\n"
-"POT-Creation-Date: 2010-01-03 15:35+0100\n"
-"PO-Revision-Date: 2010-03-08 15:17+0100\n"
-"Last-Translator: LD <lucie.dengreville@uhb.fr>\n"
-"Language-Team: French <EMAIL@ADDRESS>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-
-
-#: captcha.admin.inc:16
-#: image_captcha/image_captcha.admin.inc:92
-msgid "none"
-msgstr "aucun"
-
-#: captcha.admin.inc:17
-msgid "default challenge type"
-msgstr "Type de défi par défaut"
-
-#: captcha.admin.inc:25
-msgid "@type (from module @module)"
-msgstr "@type (du module @module)"
-
-#: captcha.admin.inc:44
-msgid "Form protection"
-msgstr "Protection de formulaire"
-
-#: captcha.admin.inc:45
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr "Choisir le type de défi désiré pour chacun des formulaires mentionnés \
(identifiés par leur <em>form_id</em>). Il est facile d'ajouter un formulaire \
arbitraire à l'aide de l'option '%CAPTCHA_admin_links'."
-
-#: captcha.admin.inc:46;110
-#: captcha.module:46
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Ajouter des liens d'administration CAPTCHA aux formulaires"
-
-#: captcha.admin.inc:51
-msgid "Default challenge type"
-msgstr "Type de défi par défaut"
-
-#: captcha.admin.inc:52
-msgid "Select the default challenge type for CAPTCHAs. This can be overriden for \
each form if desired."
-msgstr "Choisissez le type de défi par défaut. Cela peut ensuite être modifié \
pour chaque formulaire si vous le souhaitez."
-
-#: captcha.admin.inc:88
-msgid "delete"
-msgstr "supprimer"
-
-#: captcha.admin.inc:112
-msgid "This option makes it easy to manage CAPTCHA settings on forms. When enabled, \
users with the \"%admincaptcha\" permission will see a fieldset with CAPTCHA \
administration links on all forms, except on administrative pages."
-msgstr "Cette option permet de configurer les paramètres CAPTCHA sur les \
formulaires. Si activée, les utilisateurs possédant la permission \"%admincaptcha\" \
verront les liens d'administration CAPTCHA sur l'ensemble des formulaires (Ã \
l'exception des pages d'administrations, qui ne devraient pas être accessibles aux \
utilisateurs non dignes de confiance). Ces liens rendent possible l'activation ou la \
désactivation d'un certain type de défi."
-
-#: captcha.admin.inc:112
-#: captcha.module:107
-msgid "administer CAPTCHA settings"
-msgstr "Administrer les paramètres CAPTCHA"
-
-#: captcha.admin.inc:117
-msgid "Allow CAPTCHAs and CAPTCHA administration links on administrative pages"
-msgstr "Ajouter des CAPTCHAs et des liens d'administration CAPTCHA sur les pages \
d'administration."
-
-#: captcha.admin.inc:119
-msgid "This option makes it possible to add CAPTCHAs to forms on administrative \
pages. CAPTCHAs are disabled by default on administrative pages (which shouldn't be \
accessible to untrusted users normally) to avoid the related overhead. In some \
situations, e.g. in the case of demo sites, it can be usefull to allow CAPTCHAs on \
administrative pages."
-msgstr "Cette option est très utile pour ajouter des CAPTCHAs sur les formulaires \
des pages d'administration. CAPTCHA est désactivé par défaut sur les pages \
d'administration (qui ne devraient pas être accessibles aux utilisateurs non dignes \
de confiance). Dans certaines situations, par exemple dans le cas des sites de \
démonstration, il peut être utile de permettre CAPTCHAs sur les pages \
d'administration."
-
-#: captcha.admin.inc:125
-msgid "Add a description to the CAPTCHA"
-msgstr "Ajouter une description pour le CAPTCHA"
-
-#: captcha.admin.inc:126
-msgid "Add a configurable description to explain the purpose of the CAPTCHA to the \
visitor."
-msgstr "La description du défi sert à expliquer l'utilité de ce dernier à \
l'utilisateur."
-
-#: captcha.admin.inc:134
-msgid "CAPTCHA description"
-msgstr "Description du défi"
-
-#: captcha.admin.inc:135;151
-msgid "Configurable description of the CAPTCHA. An empty entry will reset the \
description."
-msgstr "Description configurable du CAPTCHA. Une entrée vide permet de \
réinitialiser la description."
-
-#: captcha.admin.inc:141
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Pour la langue %lang_name (code %lang_code)"
-
-#: captcha.admin.inc:150
-msgid "Challenge description"
-msgstr "Description du défi"
-
-#: captcha.admin.inc:161
-msgid "Default CAPTCHA validation"
-msgstr "Validation du CAPTCHA par défaut"
-
-#: captcha.admin.inc:162
-msgid "Define how the response should be processed by default. Note that the modules \
that provide the actual challenges can override or ignore this."
-msgstr "Définit la manière dont la réponse devrait être générée par défaut. \
Notez que les modules actuellement paramétrés peuvent outrepasser \
ou ignorer cela."
-
-#: captcha.admin.inc:164
-msgid "Case sensitive validation: the response has to exactly match the solution."
-msgstr "Validation sensible à la casse : la réponse doit exactement correspondre à \
la solution."
-
-#: captcha.admin.inc:165
-msgid "Case insensitive validation: lowercase/uppercase errors are ignored."
-msgstr "Validation insensible à la casse : les erreurs de type majuscule/minuscule \
sont ignorées."
-
-#: captcha.admin.inc:173
-msgid "Persistence"
-msgstr "Persistance"
-
-#: captcha.admin.inc:176
-msgid "Always add a challenge."
-msgstr "Toujours ajouter un défi."
-
-#: captcha.admin.inc:177
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Omettre les défis d'un formulaire lorsqu'un utilisateur a répondu \
correctement à un défi précédent pour ce même formulaire."
-
-#: captcha.admin.inc:178
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Omettre les défis de tous les formulaires lorsqu'un utilisateur a répondu \
correctement à un défi."
-
-#: captcha.admin.inc:180
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr "Définir si les défis devraient être omis pour toute la durée de la \
session lorsqu'un utilisateur a répondu correctement à un défi."
-
-#: captcha.admin.inc:186
-msgid "Log wrong responses"
-msgstr "Consigner les mauvaises réponses"
-
-#: captcha.admin.inc:187
-msgid "Report information about wrong responses to the !log."
-msgstr "Afficher les informations concernant les mauvaises réponses dans le !log."
-
-#: captcha.admin.inc:187
-msgid "log"
-msgstr "log"
-
-#: captcha.admin.inc:194
-msgid "Save configuration"
-msgstr "Enregistrer la configuration"
-
-#: captcha.admin.inc:204;344
-msgid "Challenge type"
-msgstr "Type de défi"
-
-#: captcha.admin.inc:204
-msgid "Operations"
-msgstr "Opérations"
-
-#: captcha.admin.inc:231;365
-msgid "Illegal form_id"
-msgstr "Form_id non admis"
-
-#: captcha.admin.inc:257
-msgid "Added CAPTCHA point."
-msgstr "Pointage CAPTCHA ajouté."
-
-#: captcha.admin.inc:272
-msgid "Reset of CAPTCHA description for language %language."
-msgstr "Réinitialisation de la description du CAPTCHA pour la langue %language."
-
-#: captcha.admin.inc:283
-msgid "Reset of CAPTCHA description."
-msgstr "Réinitialisation de la description du CAPTCHA."
-
-#: captcha.admin.inc:291
-msgid "The CAPTCHA settings were saved."
-msgstr "Les paramètres CAPTCHA ont été enregistrés."
-
-#: captcha.admin.inc:323;337
-msgid "Form ID"
-msgstr "Identifiant du formulaire"
-
-#: captcha.admin.inc:324;338
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Le form_id Drupal du formulaire auquel ajouter le CAPTCHA."
-
-#: captcha.admin.inc:345
-msgid "The CAPTCHA type to use for this form"
-msgstr "Le type de CAPTCHA Ã utiliser pour ce formulaire"
-
-#: captcha.admin.inc:354
-msgid "Save"
-msgstr "Sauvegarder"
-
-#: captcha.admin.inc:377
-msgid "Saved CAPTCHA point settings."
-msgstr "Paramètres de pointage CAPTCHA enregistrés."
-
-#: captcha.admin.inc:394
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "Êtes-vous sûr de vouloir supprimer le CAPTCHA pour le form_id %form_id ?"
-
-#: captcha.admin.inc:395
-msgid "Delete"
-msgstr "Supprimer"
-
-#: captcha.admin.inc:398
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "Êtes-vous sûr de vouloir désactiver le CAPTCHA pour le form_id %form_id \
?"
-
-#: captcha.admin.inc:399
-msgid "Disable"
-msgstr "Désactiver"
-
-#: captcha.admin.inc:412
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "Le CAPTCHA du formulaire %form_id a été supprimé."
-
-#: captcha.admin.inc:416
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "Le CAPTCHA du formulaire %form_id a été désactivé."
-
-#: captcha.admin.inc:453
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Cette page donne un aperçu de tous les types de défis disponibles, \
générés avec leurs paramètres courants."
-
-#: captcha.admin.inc:461
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Défi \"%challenge\" par le module \"%module\""
-
-#: captcha.admin.inc:464
-msgid "10 more examples of this challenge."
-msgstr "10 autres exemples de ce défi."
-
-#: captcha.inc:38
-msgid "Failed to set a CAPTCHA type for form %form_id: could not interpret value \
\"@captcha_type\""
-msgstr "Impossible de définir un type de CAPTCHA pour le formulaire %form_id : ne \
peut pas interpréter la valeur \"@captcha_type\""
-
-#: captcha.inc:146
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Cette question permet de s'assurer que vous êtes un utilisateur humain et \
non un logiciel automatisé de pollupostage."
-
-#: captcha.module:31
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr "\"CAPTCHA\" est un acronyme pour \"Completely Automated Public Turing test \
to tell Computers and Humans Apart\" (ou \"test de Turing permettant de différencier \
de manière automatisée un utilisateur humain d'un ordinateur\"). Il s'agit \
typiquement d'un test de type question/réponse qui permet de s'assurer que \
l'utilisateur est bel et bien un être humain. Le module CAPTCHA est un outil visant \
à contrer la soumission automatique de données par des utilisateurs malicieux \
(pollupostage) Ã travers des formulaires de commentaires, d'enregistrement, de \
livres d'or, etc. Il est donc possible d'ajouter à un formulaire un défi \
additionnel, qui devra idéalement être assez facile pour qu'un être humain puisse \
le résoudre, mais assez difficile pour ne pas laisser passer les scripts \
automatisés et autres robots de pollupostage."
-
-#: captcha.module:32
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr "Il est à noter que le module CAPTCHA intéragit avec la mise en cache des \
pages (voir les <a href=\"!performancesettings\">paramètres de performance</a>). \
Étant donné que le défi doit être unique pour chaque formulaire généré, la \
mise en cache des pages sur lesquelles celui-ci apparaît n'est pas effectuée. \
Assurez-vous que ces formulaires n'apparaissent pas sur une quantité trop grande de \
pages, sinon vous perdrez beaucoup d'efficacité au niveau de la mise en cache. Par \
exemple, si vous placez un CAPTCHA dans le bloc d'authentification des utilisateurs \
qui est généralement généré sur chaque page pour un utilisateur anonyme, la mise \
en cache sera pratiquement désactivée. Le formulaire de soumission de commentaire \
est un autre exemple. Dans ce cas, vous devriez définir \"%commentlocation\" à \
\"%separatepage\" dans les paramètres de commentaires des <a \
href=\"!contenttypes\">types de contenu</a> appropriés pour une meilleure \
efficacité de la mis e en cache."
-
-#: captcha.module:35
-msgid "Location of comment submission form"
-msgstr "Emplacement du formulaire de soumission de commentaire"
-
-#: captcha.module:36
-msgid "Display on separate page"
-msgstr "Afficher sur une page séparée"
-
-#: captcha.module:40
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA est une marque déposée de l'Université Carnegie Mellon."
-
-#: captcha.module:45
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr "Un CAPTCHA peut être ajouté à pratiquement n'importe quel formulaire \
Drupal. La liste des formulaires par défaut ci-dessous vous en fournit quelques-uns, \
mais des formulaires arbitraires peuvent être ajoutés et gérés aisément lorsque \
l'option \"%adminlinks\" est activée."
-
-#: captcha.module:47
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr "Les utilisateurs possédant la <a href=\"@perm\">permission</a> \
\"%skipcaptcha\" ne se verront pas offrir de défi. N'accordez cette permission \
qu'aux utilisateurs dignes de confiance (ex.: les administrateurs du site). Si vous \
désirez tester un formulaire protégé par un défi, assurez-vous de le faire à \
l'aide d'un utilisateur ne possédant pas la permission \"%skipcaptcha\" (ex.: \
l'utilisateur anonyme)."
-
-#: captcha.module:48;107
-msgid "skip CAPTCHA"
-msgstr "Ignorer le CAPTCHA"
-
-#: (duplicate) captcha.module:269;322;119
-#: ;222;446;475;60;71 captcha.info:0
-#: image_captcha/image_captcha.user.inc:29
-#: image_captcha/image_captcha.module:129
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: captcha.module:327
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr "CAPTCHA: défi \"@type\" activé"
-
-#: captcha.module:328
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr "Les utilisateurs non dignes de confiance verront un CAPTCHA ici \
(!settings)."
-
-#: captcha.module:329
-msgid "general CAPTCHA settings"
-msgstr "paramètres CAPTCHA généraux"
-
-#: captcha.module:333
-msgid "Enabled challenge"
-msgstr "Défi activé"
-
-#: captcha.module:334
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr "\"@type\" par le module \"@module\" (!change, !disable)"
-
-#: captcha.module:337
-msgid "change"
-msgstr "modifier"
-
-#: captcha.module:338
-msgid "disable"
-msgstr "désactiver"
-
-#: captcha.module:352
-#: image_captcha/image_captcha.admin.inc:36
-msgid "Example"
-msgstr "Exemple"
-
-#: captcha.module:353
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr "Ceci est un exemple résolu et non bloquant de ce défi."
-
-#: captcha.module:362
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA: pas de défi disponible"
-
-#: captcha.module:364
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Ajouter ici un CAPTCHA pour les utilisateurs non dignes de confiance."
-
-#: captcha.module:445
-msgid "CAPTCHA validation error: unknown CAPTCHA session ID. Contact the site \
administrator if this problem persists."
-msgstr "Erreur de validation CAPTCHA : ID de session CAPTCHA inconnu. Contactez \
l'administrateur du site si le problème persiste."
-
-#: captcha.module:470
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "La réponse saisie pour le CAPTCHA est incorrecte."
-
-#: captcha.module:557
-msgid "Math question"
-msgstr "Question mathématique"
-
-#: captcha.module:558
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Résolvez cette équation mathématique simple et entrez le résultat. Ex.: \
pour 1+3, entrez 4."
-
-#: captcha.module:559
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-#: captcha.module:578
-msgid "Test one two three"
-msgstr "Test un deux trois"
-
-#: captcha.module:222
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr "Problème CAPTCHA : hook_captcha() du module %module n'a rien retourné lors \
de la récupération du type de défi %type pour le formulaire \
%form_id."
-
-#: captcha.module:446
-msgid "CAPTCHA validation error: unknown CAPTCHA session ID (%csid)."
-msgstr "Erreur de la validation CAPTCHA : ID (%csid) de session CAPTCHA inconnu."
-
-#: captcha.module:475
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr "Génération du formulaire %form_id bloquée par le module CAPTCHA: défi \
\"%challenge\" (par le module \"%module\"), l'utilisateur a répondu \"%response\", \
mais la solution était \"%solution\"."
-
-#: captcha.module:120
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] "1 tentative de soumission de formulaire déjà bloquée"
-msgstr[1] "@counter tentatives de soumission de formulaire déjà bloquées"
-
-#: captcha.module:61
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Administrer où et comment les CAPTCHAs sont utilisés."
-
-#: captcha.module:77
-msgid "General settings"
-msgstr "Configuration générale"
-
-#: captcha.module:83
-msgid "Examples"
-msgstr "Exemples"
-
-#: captcha.module:84
-msgid "An overview of the available challenge types with examples."
-msgstr "Un aperçu des types de défis disponibles, suivis d'exemples."
-
-#: captcha.module:93
-msgid "CAPTCHA point administration"
-msgstr "Administration du pointage CAPTCHA"
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr "Base de données non supportée."
-
-#: (duplicate) captcha.install:115
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr "Vous pouvez maintenant <a href=\"!captcha_admin\">configurer le module \
CAPTCHA</a> pour votre site."
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr "Module CAPTCHA de base pour ajouter des défis à des formulaires \
arbitraires."
-
-#: captcha.info:0
-#: image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr "Contrôle du pollupostage"
-
-#: image_captcha/image_captcha.admin.inc:26
-msgid "The Image CAPTCHA module can not generate images because your PHP setup does \
not support it (no <a href=\"!gdlib\">GD library</a> with JPEG \
support)."
-msgstr "Les images ne peuvent être générées par le module CAPTCHA visuel, car \
votre installation PHP ne le supporte pas (pas de <a href=\"!gdlib\">librairie GD</a> \
avec support JPEG."
-
-#: image_captcha/image_captcha.admin.inc:37
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr "Exemple de visuel CAPTCHA pré-résolu, généré avec les paramètres \
actuels."
-
-#: image_captcha/image_captcha.admin.inc:48
-msgid "Code settings"
-msgstr "Paramètres de code"
-
-#: image_captcha/image_captcha.admin.inc:52
-msgid "Characters to use in the code"
-msgstr "Caractères à utiliser dans ce code"
-
-#: image_captcha/image_captcha.admin.inc:57
-msgid "Code length"
-msgstr "Longueur du code"
-
-#: image_captcha/image_captcha.admin.inc:60
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr "La longueur du code influence la taille de l'image. Il est à noter que des \
valeurs élevées peuvent rendre la génération de l'image plus lourde en terme de \
puissance de calcul."
-
-#: image_captcha/image_captcha.admin.inc:69
-msgid "Color and image settings"
-msgstr "Paramètres de couleur et d'image"
-
-#: image_captcha/image_captcha.admin.inc:70
-msgid "Configuration of the background, text colors and file format of the image \
CAPTCHA."
-msgstr "Configuration du format de fichier, des couleurs de l'arrière-plan et du \
texte dans le CAPTCHA visuel."
-
-#: image_captcha/image_captcha.admin.inc:74
-msgid "Background color"
-msgstr "Couleur de fond"
-
-#: image_captcha/image_captcha.admin.inc:75
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90). \
When using the PNG file format with transparent background, it is recommended to set \
this close to the underlying background color."
-msgstr "Entrez un code hexadécimal pour la couleur de fond (ex. #FFF ou #FFCE90). \
Si vous utilisez le format de fichier PNG avec un fond transparent, il est \
recommandé de fixer cette couleur à une valeur proche de la couleur de fond \
sous-jacente. "
-
-#: image_captcha/image_captcha.admin.inc:82
-msgid "Text color"
-msgstr "Couleur du texte"
-
-#: image_captcha/image_captcha.admin.inc:83
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr "Entrer le code hexadécimal pour la couleur du texte (ex.: #000 ou \
#004283)."
-
-#: image_captcha/image_captcha.admin.inc:90
-msgid "Additional variation of text color"
-msgstr "Variation additionnelle de la couleur du texte"
-
-#: image_captcha/image_captcha.admin.inc:93;270
-msgid "small"
-msgstr "petite"
-
-#: image_captcha/image_captcha.admin.inc:94
-msgid "moderate"
-msgstr "modéré"
-
-#: image_captcha/image_captcha.admin.inc:95;166
-msgid "high"
-msgstr "élevé"
-
-#: image_captcha/image_captcha.admin.inc:96
-msgid "very high"
-msgstr "très élevé"
-
-#: image_captcha/image_captcha.admin.inc:99
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr "Les différents caractères prendront des couleurs aléatoires autour de la \
couleur de texte, en fonction de la gamme de variation spécifiée. "
-
-#: image_captcha/image_captcha.admin.inc:103
-msgid "File format"
-msgstr "Format de fichier"
-
-#: image_captcha/image_captcha.admin.inc:104
-msgid "Select the file format for the image. JPEG usually results in smaller files, \
PNG allows tranparency."
-msgstr "Sélectionnez le format de fichier pour l'image. JPEG produit en général \
des fichiers plus petits, PNG permet la transparence."
-
-#: image_captcha/image_captcha.admin.inc:107
-msgid "JPEG"
-msgstr "JPEG"
-
-#: image_captcha/image_captcha.admin.inc:108
-msgid "PNG"
-msgstr "PNG"
-
-#: image_captcha/image_captcha.admin.inc:109
-msgid "PNG with transparent background"
-msgstr "PNG avec fond transparent"
-
-#: image_captcha/image_captcha.admin.inc:116
-msgid "Distortion and noise"
-msgstr "Distorsion et interférence"
-
-#: image_captcha/image_captcha.admin.inc:117
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr "À l'aide de ces paramètres, il est possible de contrôler le degré de \
masquage par la distorsion et l'interférence. Ne pas exagérer la masquage et \
s'assurer que le code de l'image demeure raisonnablement lisible. Par exemple, ne pas \
combiner un degré élevé de distorsion et d'interférences."
-
-#: image_captcha/image_captcha.admin.inc:122
-msgid "Distortion level"
-msgstr "Degré de distorsion"
-
-#: image_captcha/image_captcha.admin.inc:124
-msgid "@level - no distortion"
-msgstr "@level - sans distorsion"
-
-#: image_captcha/image_captcha.admin.inc:125
-msgid "@level - low"
-msgstr "@level - bas"
-
-#: image_captcha/image_captcha.admin.inc:129
-msgid "@level - medium"
-msgstr "@level - modéré"
-
-#: image_captcha/image_captcha.admin.inc:134
-msgid "@level - high"
-msgstr "@level - élévé"
-
-#: image_captcha/image_captcha.admin.inc:137
-msgid "Set the degree of wave distortion in the image."
-msgstr "Définir le degré de distorsion ondulatoire de l'image."
-
-#: image_captcha/image_captcha.admin.inc:141
-msgid "Smooth distortion"
-msgstr "Distorsion lisse"
-
-#: image_captcha/image_captcha.admin.inc:143
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Cette option active l'interpolation bilinéaire de la distorsion. Cela rend \
l'image plus lisse, mais est plus lourd en terme de puissance de \
calcul."
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "Add salt and pepper noise"
-msgstr "Ajouter de l'interférence sel et poivre"
-
-#: image_captcha/image_captcha.admin.inc:150
-msgid "This option adds randomly colored point noise."
-msgstr "Cette option ajoute de l'interférence sous forme de points colorés \
aléatoirement."
-
-#: image_captcha/image_captcha.admin.inc:154
-msgid "Add line noise"
-msgstr "Ajouter de l'interférence linéaire"
-
-#: image_captcha/image_captcha.admin.inc:156
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Cette option ajoute des lignes dessinées aléatoirement sur le texte du \
code."
-
-#: image_captcha/image_captcha.admin.inc:160
-msgid "Noise level"
-msgstr "Degré d'interférence"
-
-#: image_captcha/image_captcha.admin.inc:162
-msgid "low"
-msgstr "bas"
-
-#: image_captcha/image_captcha.admin.inc:164
-msgid "medium"
-msgstr "modéré"
-
-#: image_captcha/image_captcha.admin.inc:168
-msgid "severe"
-msgstr "sévère"
-
-#: image_captcha/image_captcha.admin.inc:198
-msgid "Font settings"
-msgstr "Paramètres de police"
-
-#: image_captcha/image_captcha.admin.inc:207
-msgid "No TrueType support"
-msgstr "Pas de support pour la police TrueType"
-
-#: image_captcha/image_captcha.admin.inc:208
-msgid "The Image CAPTCHA module can not use TrueType fonts because your PHP setup \
does not support it. You can only use a PHP built-in bitmap font of \
fixed size."
-msgstr "Le module CAPTCHA visuel ne peut utiliser les polices de caractères \
TrueType parce que votre configuration PHP ne le supporte pas. Vous pouvez seulement \
utiliser la police bitmap incorporée, de taille fixée."
-
-#: image_captcha/image_captcha.admin.inc:226
-msgid "Font preview of @font (@file)"
-msgstr "Prévisualisation pour le police @font (@file)."
-
-#: image_captcha/image_captcha.admin.inc:241
-msgid "Preview of built-in font"
-msgstr "Prévisualisation de la police incorporée"
-
-#: image_captcha/image_captcha.admin.inc:242
-msgid "PHP built-in font: !font_preview"
-msgstr "Police intégrée à PHP : !font_preview"
-
-#: image_captcha/image_captcha.admin.inc:249
-msgid "Fonts"
-msgstr "Polices"
-
-#: image_captcha/image_captcha.admin.inc:251
-msgid "Select the fonts to use for the text in the image CAPTCHA. Apart from the \
provided defaults, you can also use your own TrueType fonts (filename extension .ttf) \
by putting them in %fonts_library_general or %fonts_library_specific. You can also \
upload them to the \"files\" directory of your site (%filesdir), e.g. with the \
\"Upload\" module, but those fonts will not get a preview for \
security reasons."
-msgstr "Sélectionnez les polices à utiliser pour le texte dans le visuel CAPTCHA. \
Outre les paramètres fournis par défaut, vous pouvez aussi utiliser vos propres \
polices TrueType (extension. ttf) en les mettant dans %fonts_library_general ou \
%fonts_library_specific. Vous pouvez également les télécharger vers le répertoire \
\"files\" de votre site (%filesdir), par exemple avec le module \"Upload \" , mais \
ces polices ne permettront pas d'obtenir une prévisualisation, pour des raisons de \
sécurité."
-
-#: image_captcha/image_captcha.admin.inc:267
-msgid "Font size"
-msgstr "Taille de la police"
-
-#: image_captcha/image_captcha.admin.inc:269
-msgid "tiny"
-msgstr "minuscule"
-
-#: image_captcha/image_captcha.admin.inc:272;292
-msgid "normal"
-msgstr "normal"
-
-#: image_captcha/image_captcha.admin.inc:274
-msgid "large"
-msgstr "grande"
-
-#: image_captcha/image_captcha.admin.inc:276
-msgid "extra large"
-msgstr "très grande"
-
-#: image_captcha/image_captcha.admin.inc:279
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr "La taille de la police influence la taille de l'image. Il est à noter que \
des valeurs élevées peuvent rendre la génération de l'image plus lourde en terme \
de puissance de calcul."
-
-#: image_captcha/image_captcha.admin.inc:287
-msgid "Character spacing"
-msgstr "Espacement des caractères"
-
-#: image_captcha/image_captcha.admin.inc:288
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr "définir l'espacement moyen entre les caractères. Il est à noter que des \
valeurs élevées peuvent rendre la génération de l'image plus lourde en terme de \
puissance de calcul."
-
-#: image_captcha/image_captcha.admin.inc:291
-msgid "tight"
-msgstr "condensé"
-
-#: image_captcha/image_captcha.admin.inc:293
-msgid "wide"
-msgstr "étendu"
-
-#: image_captcha/image_captcha.admin.inc:294
-msgid "extra wide"
-msgstr "très étendu"
-
-#: image_captcha/image_captcha.admin.inc:356
-msgid "The list of characters to use should not contain spaces."
-msgstr "La liste des caractères à utiliser ne doit pas contenir d'espaces."
-
-#: image_captcha/image_captcha.admin.inc:364
-msgid "You need to select at least one font."
-msgstr "Vous devez spécifier au moins une police."
-
-#: image_captcha/image_captcha.admin.inc:369
-msgid "The built-in font only supports Latin2 characters. Only use \"a\" to \"z\" \
and numbers."
-msgstr "La police incorporée supporte uniquement les caractères Latin2. Utilisez \
seulement les caractères de \"a\" à \"z\" et les nombres."
-
-#: image_captcha/image_captcha.admin.inc:374
-msgid "The following fonts are not readable: %fonts."
-msgstr "Les polices suivantes ne sont pas lisibles : %fonts."
-
-#: image_captcha/image_captcha.admin.inc:380
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "La couleur d'arrière-plan n'est pas une valeur hexadécimale valide."
-
-#: image_captcha/image_captcha.admin.inc:383
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "La couleur du texte n'est pas une valeur hexadécimale valide."
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr "La génération du CAPTCHA visuel a échoué. Vérifiez les paramètres du \
CAPTCHA visuel et plus particulièrement la police utilisée."
-
-#: image_captcha/image_captcha.module:30
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr "Le CAPTCHA visuel est un défi populaire où un code textuel aléatoire est \
masqué dans une image. L'image en question est générée à la volée à chaque \
requête, ce qui rend le processus assez lourd en terme de puissance de calcul. Soyez \
prudent lors de la configuration des paramètres liés à la taille et au rendu de \
l'image."
-
-#: image_captcha/image_captcha.module:212;212;42
-#: image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr "CAPTCHA visuel"
-
-#: image_captcha/image_captcha.module:217
-msgid "What code is in the image?"
-msgstr "Quel est le code dans l'image?"
-
-#: image_captcha/image_captcha.module:218
-msgid "Enter the characters shown in the image."
-msgstr "Entrez les caractères (sans espace) affichés dans l'image."
-
-#: image_captcha/image_captcha.module:129
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "Rencontre d'un octet non admis lors du découpage d'une chaîne utf8 en \
caractères."
-
-#: image_captcha/image_captcha.module:51
-msgid "Font example"
-msgstr "Exemple de police"
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "Fournit un CAPTCHA visuel."
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/he.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/he.po deleted file \
mode 100644 index 439f690..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/he.po
+++ /dev/null
@@ -1,611 +0,0 @@
-# $Id: he.po,v 1.3 2009/07/11 17:30:38 soxofaan Exp $
-#
-# Hebrew translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-# captcha.admin.inc,v 1.5.2.6 2008/03/29 17:20:25 soxofaan
-# image_captcha.admin.inc,v 1.3.2.1 2008/04/06 15:27:27 soxofaan
-# captcha.module,v 1.58.2.6 2008/04/07 22:25:45 soxofaan
-# captcha.info,v 1.5 2007/10/27 18:24:50 robloach
-# image_captcha.user.inc,v 1.3.2.1 2008/04/06 15:27:27 soxofaan
-# image_captcha.module,v 1.8.2.2 2008/04/07 22:25:45 soxofaan
-# captcha.install,v 1.3.2.2 2008/03/20 10:27:53 soxofaan
-# image_captcha.info,v 1.3 2007/12/11 12:05:32 soxofaan
-# text_captcha.info,v 1.3 2008/01/04 14:29:58 soxofaan
-# text_captcha.admin.inc,v 1.1 2008/01/04 14:29:58 soxofaan
-# text_captcha.user.inc,v 1.1 2008/01/04 14:29:58 soxofaan
-# text_captcha.module,v 1.3.2.2 2008/04/07 22:25:46 soxofaan
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2009-04-27 23:28+0200\n"
-"PO-Revision-Date: 2009-05-26 17:58+0200\n"
-"Last-Translator: Shahar Or <shahar@shahar-or.co.il>\n"
-"Language-Team: Hebrew <EMAIL@ADDRESS>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-#: captcha.admin.inc:13 image_captcha/image_captcha.admin.inc:144;166
-msgid "none"
-msgstr "לל×"
-
-#: captcha.admin.inc:34
-msgid "Form protection"
-msgstr ""
-
-#: captcha.admin.inc:35
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr ""
-
-#: captcha.admin.inc:36;83 captcha.module:45
-msgid "Add CAPTCHA administration links to forms"
-msgstr ""
-
-#: captcha.admin.inc:61
-msgid "delete"
-msgstr "מחק"
-
-#: captcha.admin.inc:85
-msgid "This option makes it easy to manage CAPTCHA settings on forms. When enabled, \
users with the \"%admincaptcha\" permission will see a fieldset with CAPTCHA \
administration links on all forms, except on administrative pages."
-msgstr ""
-
-#: captcha.admin.inc:85 captcha.module:106
-msgid "administer CAPTCHA settings"
-msgstr ""
-
-#: captcha.admin.inc:90
-msgid "Allow CAPTCHAs and CAPTCHA administration links on administrative pages"
-msgstr ""
-
-#: captcha.admin.inc:92
-msgid "This option makes it possible to add CAPTCHAs to forms on administrative \
pages. CAPTCHAs are disabled by default on administrative pages (which shouldn't be \
accessible to untrusted users normally) to avoid the related overhead. In some \
situations, e.g. in the case of demo sites, it can be usefull to allow CAPTCHAs on \
administrative pages."
-msgstr ""
-
-#: captcha.admin.inc:100;115
-msgid "Challenge description"
-msgstr ""
-
-#: captcha.admin.inc:101;116
-msgid "With this description you can explain the purpose of the challenge to the \
user."
-msgstr ""
-
-#: captcha.admin.inc:106
-msgid "For language %lang_name (code %lang_code)"
-msgstr ""
-
-#: captcha.admin.inc:125
-msgid "Persistence"
-msgstr ""
-
-#: captcha.admin.inc:128
-msgid "Always add a challenge."
-msgstr ""
-
-#: captcha.admin.inc:129
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr ""
-
-#: captcha.admin.inc:130
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr ""
-
-#: captcha.admin.inc:132
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr ""
-
-#: captcha.admin.inc:138
-msgid "Log wrong responses"
-msgstr ""
-
-#: captcha.admin.inc:139
-msgid "Report information about wrong responses to the !log."
-msgstr ""
-
-#: captcha.admin.inc:139
-msgid "log"
-msgstr ""
-
-#: captcha.admin.inc:146
-msgid "Save configuration"
-msgstr ""
-
-#: captcha.admin.inc:156
-msgid "Challenge type (module)"
-msgstr ""
-
-#: captcha.admin.inc:156
-msgid "Operations"
-msgstr "פעולות ×פשריות"
-
-#: captcha.admin.inc:183;295
-msgid "Illegal form_id"
-msgstr ""
-
-#: captcha.admin.inc:205
-msgid "Added CAPTCHA point."
-msgstr ""
-
-#: captcha.admin.inc:223
-msgid "The CAPTCHA settings were saved."
-msgstr ""
-
-#: captcha.admin.inc:253;267
-msgid "Form ID"
-msgstr ""
-
-#: captcha.admin.inc:254;268
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr ""
-
-#: captcha.admin.inc:274
-msgid "Challenge type"
-msgstr ""
-
-#: captcha.admin.inc:275
-msgid "The CAPTCHA type to use for this form"
-msgstr ""
-
-#: captcha.admin.inc:284
-msgid "Save"
-msgstr ""
-
-#: captcha.admin.inc:307
-msgid "Saved CAPTCHA point settings."
-msgstr ""
-
-#: captcha.admin.inc:324
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr ""
-
-#: captcha.admin.inc:325
-msgid "Delete"
-msgstr "מחק"
-
-#: captcha.admin.inc:328
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr ""
-
-#: captcha.admin.inc:329
-msgid "Disable"
-msgstr ""
-
-#: captcha.admin.inc:342
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr ""
-
-#: captcha.admin.inc:346
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr ""
-
-#: captcha.admin.inc:384
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr ""
-
-#: captcha.admin.inc:392
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr ""
-
-#: captcha.admin.inc:395
-msgid "10 more examples of this challenge."
-msgstr ""
-
-#: captcha.inc:55
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "×תגר ×–×” × ×•×¢×“ ×œ×•×•×“× ×©×”×™× ×š ×× ×•×©×™ כדי ×œ×ž× ×•×¢ \
\"ספ××\"."
-
-#: captcha.module:30
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr ""
-
-#: captcha.module:31
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr ""
-
-#: captcha.module:34
-msgid "Location of comment submission form"
-msgstr "×ž×™×§×•× ×˜×•×¤×¡ כתיבת התגובה"
-
-#: captcha.module:35
-msgid "Display on separate page"
-msgstr "הצג בעמוד × ×¤×¨×“"
-
-#: captcha.module:39
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr ""
-
-#: captcha.module:44
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr ""
-
-#: captcha.module:46
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr ""
-
-#: captcha.module:47;106
-msgid "skip CAPTCHA"
-msgstr ""
-
-#: (duplicate) captcha.module:263;342;118 ;211;440;59;70 captcha.info:0
-#: image_captcha/image_captcha.user.inc:29;72
-#: image_captcha/image_captcha.module:97
-msgid "CAPTCHA"
-msgstr ""
-
-#: captcha.module:347
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr ""
-
-#: captcha.module:348
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr ""
-
-#: captcha.module:349
-msgid "general CAPTCHA settings"
-msgstr ""
-
-#: captcha.module:353
-msgid "Enabled challenge"
-msgstr ""
-
-#: captcha.module:354
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr ""
-
-#: captcha.module:357
-msgid "change"
-msgstr ""
-
-#: captcha.module:358
-msgid "disable"
-msgstr ""
-
-#: captcha.module:363
-msgid "Example"
-msgstr ""
-
-#: captcha.module:364
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr ""
-
-#: captcha.module:373
-msgid "CAPTCHA: no challenge enabled"
-msgstr ""
-
-#: captcha.module:375
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr ""
-
-#: captcha.module:421
-msgid "CAPTCHA test failed (unknown csid)."
-msgstr ""
-
-#: captcha.module:435
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "התשובה שסיפקת ל×תגר ××™× ×” × ×›×•× ×”."
-
-#: captcha.module:523
-#, fuzzy
-msgid "Math question"
-msgstr "ש×לת מתמטיקה"
-
-#: captcha.module:524
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "פתור ×ת הבעיה המתמטית הפשוטה הזו. לדוגמה, \
עבור 1+3, הקש 4."
-
-#: captcha.module:525
-msgid "@x + @y = "
-msgstr ""
-
-#: captcha.module:211
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr ""
-
-#: captcha.module:440
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr ""
-
-#: captcha.module:119
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] ""
-msgstr[1] ""
-
-#: captcha.module:60
-msgid "Administer how and where CAPTCHAs are used."
-msgstr ""
-
-#: captcha.module:76
-msgid "General settings"
-msgstr ""
-
-#: captcha.module:82
-msgid "Examples"
-msgstr ""
-
-#: captcha.module:83
-msgid "An overview of the available challenge types with examples."
-msgstr ""
-
-#: captcha.module:92
-msgid "CAPTCHA point administration"
-msgstr ""
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr ""
-
-#: (duplicate) captcha.install:115
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr ""
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr ""
-
-#: captcha.info:0 image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:13
-msgid "Built-in font"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:35
-msgid "The Image CAPTCHA module can not generate images because your PHP setup does \
not support it (no <a href=\"!gdlib\">GD library</a>)."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:46
-msgid "Code settings"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:50
-msgid "Characters to use in the code"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:55
-msgid "Code length"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:58
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:63
-msgid "Case insensitive validation"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:64
-msgid "Enable this option to ignore uppercase/lowercase errors in the response. This \
can be usefull for certain target audiences or fonts."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:71
-msgid "Font settings"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:77
-msgid "Font"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:79
-msgid "The TrueType font (.ttf) to use for the text in the image CAPTCHA."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:88
-msgid "Font size"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:90
-msgid "tiny"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:91;112;145
-msgid "small"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:92;113;169
-msgid "normal"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:93;114
-msgid "large"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:96
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:108
-msgid "Character spacing"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:109
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:121
-msgid "Color settings"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:122
-msgid "Configuration of the background and text colors in the image CAPTCHA."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:126
-msgid "Background color"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:127
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90)."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:134
-msgid "Text color"
-msgstr "צבע הטקסט"
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:142
-msgid "Additional variation of text color"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:146;168
-msgid "moderate"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:147;170
-msgid "high"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "very high"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:151
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:158
-msgid "Distortion and noise"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:159
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:164
-msgid "Distortion level"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:167
-msgid "low"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:171
-msgid "severe"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:174
-msgid "Set the degree of wave distortion in the image."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:178
-msgid "Smooth distortion"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:180
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:185
-msgid "Add salt and pepper noise"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:187
-msgid "This option adds randomly colored point noise."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:191
-msgid "Add line noise"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:193
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:197
-msgid "Noise level"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:199
-msgid "1 - low"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:201
-msgid "3 - medium"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:203
-msgid "5 - high"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:205
-msgid "10 - severe"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:222
-msgid "The Image CAPTCHA module can not use True Type fonts because your PHP setup \
does not support it. There is only a built-in bitmap font available."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:227
-msgid "The image CAPTCHA module works best with a TrueType font file (TTF) for \
generating the images, but because of licencing issues it is not allowed to package \
fonts with the module. A simple built-in bitmap font is provided as default instead. \
You can install TrueType fonts yourself by putting them in the fonts directory of the \
image CAPTCHA module (directory \"%fontsdir\") or by uploading them to your Drupal \
file system (directory \"%filesdir\") with for example the upload \
module."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:230
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:241
-msgid "The list of characters to use should not contain spaces."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:246
-msgid "You need to select a font"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:249
-msgid "Font does not exist or is not readable."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:254
-msgid "Background color is not a valid hexadecimal color value."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:257
-msgid "Text color is not a valid hexadecimal color value."
-msgstr ""
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr ""
-
-#: image_captcha/image_captcha.user.inc:72
-msgid "Could not find or read the configured font (\"%font\") for the image \
CAPTCHA."
-msgstr ""
-
-#: image_captcha/image_captcha.module:24
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr ""
-
-#: image_captcha/image_captcha.module:30
-msgid "Example image, generated with the current settings:"
-msgstr ""
-
-#: image_captcha/image_captcha.module:170
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr ""
-
-#: image_captcha/image_captcha.module:173
-msgid "Enter the characters shown in the image. Ignore spaces and be careful about \
upper and lower case."
-msgstr ""
-
-#: image_captcha/image_captcha.module:183;183;43
-#: image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr ""
-
-#: image_captcha/image_captcha.module:188
-msgid "What code is in the image?"
-msgstr "××™×–×” קוד ×‘×ª×ž×•× ×”?"
-
-#: image_captcha/image_captcha.module:97
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr ""
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr ""
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/hu.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/hu.po deleted file \
mode 100644 index d62900a..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/hu.po
+++ /dev/null
@@ -1,635 +0,0 @@
-# Hungarian translation of CAPTCHA (6.x-2.1)
-# Copyright (c) 2010 by the Hungarian translation team
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: CAPTCHA (6.x-2.1)\n"
-"POT-Creation-Date: 2010-01-08 20:46+0000\n"
-"PO-Revision-Date: 2010-01-08 20:45+0000\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-msgid "Save configuration"
-msgstr "BeállÃtások mentése"
-msgid "delete"
-msgstr "törlés"
-msgid "Delete"
-msgstr "Törlés"
-msgid "Operations"
-msgstr "Műveletek"
-msgid "Disable"
-msgstr "Letilt"
-msgid "none"
-msgstr "nincs"
-msgid "General settings"
-msgstr "Ãltalános beállÃtások"
-msgid "Save"
-msgstr "Mentés"
-msgid "Form ID"
-msgstr "Å°rlap azonosÃtó"
-msgid "Example"
-msgstr "Példa"
-msgid "Background color"
-msgstr "HáttérszÃn"
-msgid "Text color"
-msgstr "SzövegszÃn"
-msgid "Unsupported database."
-msgstr "Nem támogatott adatbázis."
-msgid "normal"
-msgstr "normál"
-msgid "Code length"
-msgstr "Kód hossza"
-msgid "Font size"
-msgstr "Betűméret"
-msgid "Spam control"
-msgstr "Reklámszemét felügyelet"
-msgid "Characters to use in the code"
-msgstr "A kódban használt karakterek"
-msgid "The list of characters to use should not contain spaces."
-msgstr "A használt karakterek felsorolása nem tartalmazhat szóközt."
-msgid "Math question"
-msgstr "Matematikai kérdés"
-msgid ""
-"Encountered an illegal byte while splitting an utf8 string in "
-"characters."
-msgstr ""
-"Az UTF-8 karaktersorozat átalakÃtása közben egy érvénytelen "
-"bájt fordult elő."
-msgid "For language %lang_name (code %lang_code)"
-msgstr "%lang_name nyelven (kód %lang_code)"
-msgid "change"
-msgstr "változtat"
-msgid "disable"
-msgstr "letiltás"
-msgid "low"
-msgstr "alacsony"
-msgid "medium"
-msgstr "közepes"
-msgid "high"
-msgstr "magas"
-msgid "Display on separate page"
-msgstr "MegjelenÃtés külön oldalon"
-msgid "Add CAPTCHA administration links to forms"
-msgstr "CAPTCHA adminisztrációs hivatkozás hozzáadása az űrlapokhoz"
-msgid "administer CAPTCHA settings"
-msgstr "CAPTCHA beállÃtások adminisztrációja"
-msgid "Challenge description"
-msgstr "Feladat leÃrása"
-msgid "Persistence"
-msgstr "SzÃvósság"
-msgid "Always add a challenge."
-msgstr "Mindig adja hozzá a feladatot."
-msgid ""
-"Omit challenges for a form once the user has successfully responded to "
-"a challenge for that form."
-msgstr ""
-"Mellőzi a feladatot az adott űrlap mellől, ha a felhasználó "
-"egyszer már jól válaszolt."
-msgid ""
-"Omit challenges for all forms once the user has successfully responded "
-"to a challenge."
-msgstr ""
-"Mellőzi a feladatot minden űrlap mellől, ha a felhasználó egyszer "
-"már jól válaszolt."
-msgid ""
-"Define if challenges should be omitted during the rest of a session "
-"once the user successfully responses to a challenge."
-msgstr ""
-"Megadható, hogy amennyiben a felhasználó sikeresen megoldott egy "
-"feladatot, látogatásának további szakaszában már ne kapjon "
-"többet."
-msgid "Log wrong responses"
-msgstr "Hibás válaszok naplózása"
-msgid "Report information about wrong responses to the !log."
-msgstr ""
-"Kerüljön információ a rossz válaszokról a rendszernaplóba. "
-"(!log)"
-msgid "log"
-msgstr "napló"
-msgid "The CAPTCHA settings were saved."
-msgstr "A CAPTCHA beállÃtások elmentve."
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr ""
-"A Drupal űrlap azonosÃtója, amihez a CAPTCHA feladatot hozzá kell "
-"adni."
-msgid "Challenge type"
-msgstr "Feladat tÃpusa"
-msgid "The CAPTCHA type to use for this form"
-msgstr "Az űrlaphoz használt CAPTCHA tÃpusa"
-msgid "Illegal form_id"
-msgstr "Érvénytelen form_id"
-msgid "Saved CAPTCHA point settings."
-msgstr "Mentett CAPTCHA pont beállÃtások."
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "„%form_id" <em>CAPTCHA</em> védelme biztosan törölhető?"
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "„%form_id" <em>CAPTCHA</em> védelme biztosan letiltható?"
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "%form_id űrlapról a CAPTCHA eltávolÃtva."
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "%form_id űrlapról a CAPTCHA letiltva."
-msgid ""
-"This page gives an overview of all available challenge types, "
-"generated with their current settings."
-msgstr ""
-"Ez a lap egy átfogó képet ad a rendelkezésre álló feladat "
-"tÃpusokról, azok aktuális beállÃtásaival létrehozva."
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "„%module" számára „%challenge" feladat"
-msgid "10 more examples of this challenge."
-msgstr "10 további példa ebből a feladatból."
-msgid ""
-"\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing "
-"test to tell Computers and Humans Apart\". It is typically a "
-"challenge-response test to determine whether the user is human. The "
-"CAPTCHA module is a tool to fight automated submission by malicious "
-"users (spamming) of for example comments forms, user registration "
-"forms, guestbook forms, etc. You can extend the desired forms with an "
-"additional challenge, which should be easy for a human to solve "
-"correctly, but hard enough to keep automated scripts and spam bots "
-"out."
-msgstr ""
-"A CAPTCHA a „Completely Automated Public Turing test to tell "
-"Computers and Humans Apart" rövÃdÃtése. Ez tipikusan egy "
-"feladat-válasz teszt, mely megállapÃtja, hogy felhasználó valós "
-"ember-e. A <em>CAPTCHA</em> modul egy eszköz a rosszindulatú "
-"felhasználók automatikus beküldései elleni harcban, a "
-"hozzászólás, a felhasználói regisztráció, vagy a vendégkönyv "
-"űrlapokon. A szükséges űrlapokat ki lehet egészÃteni egy "
-"egyszerű feladattal, melyet az emberek könnyedén meg tudnak oldani, "
-"de elég nehéz feladat elé állÃtják az automatikus programokat "
-"és a szemétküldő robotokat."
-msgid ""
-"Note that the CAPTCHA module interacts with page caching (see <a "
-"href=\"!performancesettings\">performance settings</a>). Because the "
-"challenge should be unique for each generated form, the caching of the "
-"page it appears on is prevented. Make sure that these forms do not "
-"appear on too many pages or you will lose much caching efficiency. For "
-"example, if you put a CAPTCHA on the user login block, which typically "
-"appears on each page for anonymous visitors, caching will practically "
-"be disabled. The comment submission forms are another example. In this "
-"case you should set the \"%commentlocation\" to \"%separatepage\" in "
-"the comment settings of the relevant <a href=\"!contenttypes\">content "
-"types</a> for better caching efficiency."
-msgstr ""
-"Megjegyzés: A <em>CAPTCHA</em> modul együttműködik a lap "
-"gyorstárazással (lásd a <a "
-"href=\"!performancesettings\">teljesÃtmény beállÃtásoknál</a>). "
-"Mivel a feladatnak egyedinek kell lennie minden űrlap esetén, ez a "
-"lap gyorstárazását meggátolja. Meg kell győződni arról, hogy "
-"ezek az űrlapok ne jelenjenek meg túl sok oldalon, mert az jelentős "
-"teljesÃtmény romláshoz vezet. Például, ha a felhasználói "
-"bejelentkezés blokkon - mely tipikusan minden oldalon megjelenik a "
-"vendég felhasználóknak - CAPTCHA védelem van, a lapok "
-"gyorstárazása átmenetileg le lesz tiltva. A hozzászólás "
-"beküldő űrlap a másik példa. Ebben az esetben célszerű a "
-"„%commentlocation" helyét „%separatepage" lehetőségre "
-"állÃtani a <a href=\"!contenttypes\">tartalomtÃpusok</a> oldalán a "
-"jobb gyorstárazás érdekében."
-msgid "Location of comment submission form"
-msgstr "Hozzászólás-beküldő űrlap helyzete"
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "A CAPTCHA a Carnegie Mellon University védjegye."
-msgid ""
-"A CAPTCHA can be added to virtually each Drupal form. Some default "
-"forms are already provided in the form list, but arbitrary forms can "
-"be easily added and managed when the option \"%adminlinks\" is "
-"enabled."
-msgstr ""
-"Minden Drupal űrlapohoz hozzá lehet adni a feladatokat. Néhány "
-"alapértelmezett űrlap már fel van kÃnálva az űrlaplistán, de "
-"bármelyik űrlapot könnyen hozzá lehet adni, ha „%adminlinks" "
-"engedélyezett."
-msgid ""
-"Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't "
-"be offered a challenge. Be sure to grant this permission to the "
-"trusted users (e.g. site administrators). If you want to test a "
-"protected form, be sure to do it as a user without the "
-"\"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr ""
-"„%skipcaptcha" <a href=\"@perm\">jogosultsággal</a> rendelkező "
-"felhasználók nem kapnak feladatokat. Ezt a jogosultságot minden "
-"megbÃzható felhasználóhoz hozzá kell rendelni (például az "
-"adminisztrátorok). Egy védett űrlap tesztelését olyan "
-"felhasználóval kell elvégezni, aki nem rendelkezik "
-"„%skipcaptcha" jogosultsággal (Például a vendégek)."
-msgid "skip CAPTCHA"
-msgstr "CAPTCHA mellőzése"
-msgid ""
-"This question is for testing whether you are a human visitor and to "
-"prevent automated spam submissions."
-msgstr ""
-"A kérdés azt vizsgálja, hogy valós látogató, vagy robot "
-"szeretné az űrlapot beküldeni."
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr ""
-"MegbÃzhatatlan felhasználók fognak látni egy CAPTCHA védelmet itt "
-"(!settings)."
-msgid "general CAPTCHA settings"
-msgstr "általános CAPTCHA beállÃtások"
-msgid "Enabled challenge"
-msgstr "Engedélyezett feladat"
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr "„@type" modul „@module" (!change, !disable)"
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "CAPTCHA elhelyezése ide megbÃzhatatlan felhasználók ellen."
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "A CAPTCHA feladatra adott válasz helytelen volt."
-msgid ""
-"Solve this simple math problem and enter the result. E.g. for 1+3, "
-"enter 4."
-msgstr "A fenti művelet eredményét kell beÃrni. Pl.: 1+3 esetén 4-et."
-msgid "@x + @y = "
-msgstr "@x + @y = "
-msgid ""
-"CAPTCHA problem: hook_captcha() of module %module returned nothing "
-"when trying to retrieve challenge type %type for form %form_id."
-msgstr ""
-"CAPTCHA hiba: %modul modul hook_captcha() függvénye nem adott vissza "
-"semmit amikor próbálta kinyerni a %type feladat tÃpusát a %form_id "
-"űrlapról."
-msgid ""
-"%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by "
-"module \"%module\"), user answered \"%response\", but the solution was "
-"\"%solution\"."
-msgstr ""
-"%form_id űrlap beküldését blokkolta a <em>CAPTCHA</em> modul. A "
-"feladat „%challenge" (modul „%module"), a felhasználó "
-"válasza „%response" volt, bár helyes a megoldás „%solution" "
-"lett volna."
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Adminisztráció, hogyan és hol használja a CAPTCHA-t."
-msgid "Examples"
-msgstr "Példák"
-msgid "An overview of the available challenge types with examples."
-msgstr "Egy áttekintés az elérhetÅ‘ feladat tÃpusokról, példákkal."
-msgid ""
-"You can now <a href=\"!captcha_admin\">configure the CAPTCHA "
-"module</a> for your site."
-msgstr ""
-"Most <a href=\"!captcha_admin\">be lehet állÃtani a <em>CAPTCHA</em> "
-"modult</a> a webhelyen."
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr "Alap CAPTCHA modul, mely feladatokat ad tetszőleges űrlapokhoz."
-msgid "Code settings"
-msgstr "Kód beállÃtások"
-msgid ""
-"The code length influences the size of the image. Note that larger "
-"values make the image generation more CPU intensive."
-msgstr ""
-"A kód hossza befolyásolja a kép méretét. Nagyobb értékek "
-"esetén a kép előállÃtása intenzÃv processzor használatot "
-"eredményez."
-msgid "Font settings"
-msgstr "Betűkészlet beállÃtások"
-msgid "tiny"
-msgstr "apró"
-msgid "small"
-msgstr "kicsi"
-msgid "large"
-msgstr "nagy"
-msgid ""
-"The font size influences the size of the image. Note that larger "
-"values make the image generation more CPU intensive."
-msgstr ""
-"A betűméret befolyásolja a kép méretét. Nagyobb értékek "
-"esetén a kép előállÃtása intenzÃv processzor használatot "
-"eredményez."
-msgid "Character spacing"
-msgstr "Karakter ritkÃtás"
-msgid ""
-"Define the average spacing between characters. Note that larger values "
-"make the image generation more CPU intensive."
-msgstr ""
-"A karakterek közötti átlagos távolságot szabályozza. Nagyobb "
-"értékek esetén a kép előállÃtása intenzÃv processzor "
-"használatot eredményez."
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr "A szöveg szÃnének hexadecimális kódja (Pl. #FFF vagy #FFCE90)."
-msgid "Additional variation of text color"
-msgstr "A szöveg szÃnének változtatása"
-msgid "moderate"
-msgstr "mérsékelt"
-msgid "very high"
-msgstr "nagyon magas"
-msgid ""
-"The different characters will have randomized colors in the specified "
-"range around the text color."
-msgstr ""
-"A különbözÅ‘ karakterek véletlenszerű szÃnt vesznek fel a "
-"megadott szövegszÃn tartomány környékérÅ‘l."
-msgid "Distortion and noise"
-msgstr "TorzÃtás és zaj"
-msgid ""
-"With these settings you can control the degree of obfuscation by "
-"distortion and added noise. Do not exaggerate the obfuscation and "
-"assure that the code in the image is reasonably readable. For example, "
-"do not combine high levels of distortion and noise."
-msgstr ""
-"Ezekkel a beállÃtásokkal lehet szabályozni a torzÃtás fokát, "
-"és a zaj hozzáadását. Nem szabad túlzásokba esni, és meg kell "
-"győződni arról, hogy a kód a képről egyértelműen leolvasható "
-"maradt. Például nem érdemes kombinálni a nagyszintű torzÃtást "
-"és a zajt."
-msgid "Distortion level"
-msgstr "TorzÃtási szint"
-msgid "severe"
-msgstr "szigorú"
-msgid "Set the degree of wave distortion in the image."
-msgstr "A hullámtorzÃtás szögének beállÃtása a képen."
-msgid "Smooth distortion"
-msgstr "Egyenletes torzÃtás"
-msgid "This option adds randomly colored point noise."
-msgstr "Ez a lehetÅ‘ség véletlenszerű, szÃnes pontokat ad."
-msgid "Add line noise"
-msgstr "Vonalzaj hozzáadása"
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr ""
-"Ez a lehetőség véletlenszerű vonalakat rajzol a szövegkód "
-"fölé."
-msgid "Noise level"
-msgstr "Zajszint"
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "A háttérszÃn hexadecimális értéke érvénytelen."
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "A szöveg szÃnének hexadecimális értéke érvénytelen."
-msgid ""
-"Generation of image CAPTCHA failed. Check your image CAPTCHA "
-"configuration and especially the used font."
-msgstr ""
-"A kép CAPTCHA előállÃtása nem sikerült. EllenÅ‘rizni kell a "
-"<em>kép CAPTCHA</em> beállÃtását, különös tekintettel a "
-"használt betűkészletre."
-msgid "Image CAPTCHA"
-msgstr "Kép CAPTCHA"
-msgid "What code is in the image?"
-msgstr "A képen látható kód"
-msgid "Provides an image based CAPTCHA."
-msgstr "Kép alapú CAPTCHA-t nyújt."
-msgid "File format"
-msgstr "Fájlformátum"
-msgid "Fonts"
-msgstr "BetűtÃpusok"
-msgid ""
-"This option enables bilinear interpolation of the distortion which "
-"makes the image look smoother, but it is more CPU intensive."
-msgstr ""
-"Ez a lehetÅ‘ség engedélyezi a torzÃtás bilineráris "
-"interpolációját, mely a képet jobban láthatóvá teszi, de "
-"intenzÃv processzor használatot eredményez."
-msgid "Add salt and pepper noise"
-msgstr "Só-bors zaj hozzáadása"
-msgid ""
-"The image CAPTCHA is a popular challenge where a random textual code "
-"is obfuscated in an image. The image is generated on the fly for each "
-"request, which is rather CPU intensive for the server. Be careful with "
-"the size and computation related settings."
-msgstr ""
-"A <em>kép CAPTCHA</em> egy népszerű feladat, ahol véletlenszerű "
-"szöveges kódok vannak eltorzÃtva a képen. A kép előállÃtása "
-"ad-hoc történik minden egyes kérésnél, ez azonban intenzÃv "
-"processzor használatot jelent a kiszolgálónak. Óvatosan kell "
-"bánni a mérettel és a számÃtási igénnyel kapcsolatos "
-"beállÃtásokkal."
-msgid "default challenge type"
-msgstr "alapértelmezés szerinti feladattÃpus"
-msgid "@type (from module @module)"
-msgstr "@type (@module modulból)"
-msgid "Form protection"
-msgstr "Űrlapvédelem"
-msgid ""
-"Select the challenge type you want for each of the listed forms "
-"(identified by their so called <em>form_id</em>'s). You can easily add "
-"arbitrary forms with textfield at the bottom of the table or with the "
-"help of the '%CAPTCHA_admin_links' option below."
-msgstr ""
-"A feladat tÃpusának meghatározása a felsorolt űrlapokhoz (Az "
-"űrlap azonosÃtása a <em>form_id</em> segÃtségével történik). "
-"Tetszőleges űrlap könnyen hozzáadható a táblázat alján "
-"található szöveges mező, vagy a lenti „%CAPTCHA_admin_links" "
-"segÃtségével."
-msgid "Default challenge type"
-msgstr "Alapértelmezés szerinti feladattÃpus"
-msgid ""
-"Select the default challenge type for CAPTCHAs. This can be overriden "
-"for each form if desired."
-msgstr ""
-"Ki kell választani az alapértelmezett CAPTCHA feladattÃpust. Ez "
-"felülÃrható minden űrlapon, ha szükséges."
-msgid ""
-"Allow CAPTCHAs and CAPTCHA administration links on administrative "
-"pages"
-msgstr ""
-"Engedélyezi a CAPTCHA feladatokat és a CAPTCHA adminisztrációs "
-"hivatkozásokat az adminisztrációs oldalakon"
-msgid ""
-"This option makes it possible to add CAPTCHAs to forms on "
-"administrative pages. CAPTCHAs are disabled by default on "
-"administrative pages (which shouldn't be accessible to untrusted users "
-"normally) to avoid the related overhead. In some situations, e.g. in "
-"the case of demo sites, it can be usefull to allow CAPTCHAs on "
-"administrative pages."
-msgstr ""
-"Ez a kapcsoló lehetővé teszi CAPTCHA feladatok hozzárendelését "
-"az adminisztrációs oldalak űrlapjaihoz. Az adminisztrációs "
-"oldalakon a feladatok le vannak tiltva alapértelmezés szerint "
-"(melyek normál módon nem elérhetÅ‘k a megbÃzhatatlan "
-"felhasználók számára) elkerülendő a kapcsolódó "
-"többletterhelést. Azonban néhány esetben (például bemutató "
-"oldalakon) hasznos lehet a CAPTCHA engedélyezése az "
-"adminisztrációs oldalakra is."
-msgid "Add a description to the CAPTCHA"
-msgstr "LeÃrás hozzáadása a CAPTCHA-hoz"
-msgid ""
-"Add a configurable description to explain the purpose of the CAPTCHA "
-"to the visitor."
-msgstr ""
-"BeállÃtható leÃrás hozzáadása, ami elmagyarázza a "
-"látogatóknak a CAPTCHA célját."
-msgid "CAPTCHA description"
-msgstr "CAPTCHA leÃrása"
-msgid ""
-"Configurable description of the CAPTCHA. An empty entry will reset the "
-"description."
-msgstr ""
-"A CAPTCHA beállÃtható leÃrása. Az üres bejegyzés elrejti a "
-"leÃrást."
-msgid "Default CAPTCHA validation"
-msgstr "Alapértelmezett CAPTCHA ellenőrzés"
-msgid ""
-"Define how the response should be processed by default. Note that the "
-"modules that provide the actual challenges can override or ignore "
-"this."
-msgstr ""
-"Meghatározza a válasz alapértelmezett feldolgozási módját. "
-"Fontos megjegyezni, hogy a jelenleg alkalmazott feladatot nyújtó "
-"modul ezt nem mindig veszi figyelembe."
-msgid ""
-"Case sensitive validation: the response has to exactly match the "
-"solution."
-msgstr ""
-"Kis- és nagybetűérzékeny ellenőrzés: a válasznak tökéletesen "
-"kell egyeznie a feladvánnyal."
-msgid "Case insensitive validation: lowercase/uppercase errors are ignored."
-msgstr ""
-"Kis-, illetve nagybetűérzéketlen ellenőrzés: a kisbetű és "
-"nagybetű hibák figyelmen kÃvül lesznek hagyva."
-msgid "Added CAPTCHA point."
-msgstr "CAPTCHA pont hozzáadva."
-msgid "Reset of CAPTCHA description for language %language."
-msgstr "CAPTCHA leÃrás elrejtése %language nyelv esetén."
-msgid "Reset of CAPTCHA description."
-msgstr "CAPTCHA leÃrás elrejtése."
-msgid ""
-"Failed to set a CAPTCHA type for form %form_id: could not interpret "
-"value \"@captcha_type\""
-msgstr ""
-"A CAPTCHA tÃpus beállÃtása nem sikerült a következÅ‘ űrlapon: "
-"%form_id. Nem értelmezhető érték: „@captcha_type"."
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr "CAPTCHA: feladat „@type" engedélyezve"
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr "Ez egy előre megoldott, nem blokkoló példája ennek a feladatnak."
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA: nincs engedélyezett feladat"
-msgid "Test one two three"
-msgstr "Teszt egy, kettő, három"
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] "Már 1 meggátolt űrlapbeküldés történt"
-msgstr[1] "Már @count meggátolt űrlapbeküldés történt"
-msgid "CAPTCHA point administration"
-msgstr "CAPTCHA pont adminisztrációja"
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr ""
-"Előre megoldott <em>kép CAPTCHA</em> példa, az aktuális "
-"beállÃtásokkal létrehozva."
-msgid "extra large"
-msgstr "nagyon nagy"
-msgid "tight"
-msgstr "szűk"
-msgid "wide"
-msgstr "széles"
-msgid "extra wide"
-msgstr "nagyon széles"
-msgid ""
-"This option makes it easy to manage CAPTCHA settings on forms. When "
-"enabled, users with the \"%admincaptcha\" permission will see a "
-"fieldset with CAPTCHA administration links on all forms, except on "
-"administrative pages."
-msgstr ""
-"Ezzel a lehetőséggel könnyebben szabályozható az űrlapokhoz "
-"rendelt CAPTCHA. Bekapcsolt állapotban a „%admincaptcha" "
-"jogosultsággal rendelkező felhasználók egy mezőcsoportot fognak "
-"látni az összes űrlap alatt, kivéve az adminisztratÃv oldalakon."
-msgid ""
-"The built-in font only supports Latin2 characters. Only use \"a\" to "
-"\"z\" and numbers."
-msgstr ""
-"A beépÃtett betűtÃpus csak Latin2 karaktereket támogat. "
-"Kizárólag a betűk „a"-tól „z"-ig, valamint számok "
-"használhatók."
-msgid ""
-"CAPTCHA validation error: unknown CAPTCHA session ID. Contact the site "
-"administrator if this problem persists."
-msgstr ""
-"CAPTCHA ellenőrzési hiba: ismeretlen CAPTCHA "
-"munkafolyamat-azonosÃtó. Ha állandósul a probléma, érdemes "
-"felvenni a kapcsolatot a webhely üzemeltetőjével."
-msgid "CAPTCHA validation error: unknown CAPTCHA session ID (%csid)."
-msgstr ""
-"CAPTCHA ellenőrzési hiba: ismeretlen CAPTCHA "
-"munkafolyamat-azonosÃtó (%csid)."
-msgid ""
-"The Image CAPTCHA module can not generate images because your PHP "
-"setup does not support it (no <a href=\"!gdlib\">GD library</a> with "
-"JPEG support)."
-msgstr ""
-"Az Image CAPTCHA modul nem tud képeket létrehozni, mert a PHP "
-"beállÃtásai nem támogatják azt (nincs JPEG támogatással "
-"rendelkező href=\"!gdlib\">GD könyvtár</a>)."
-msgid "Color and image settings"
-msgstr "SzÃn- és képbeállÃtások"
-msgid ""
-"Configuration of the background, text colors and file format of the "
-"image CAPTCHA."
-msgstr ""
-"A kép CAPTCHA hátterének, szövegszÃnének és fájlformátumának "
-"beállÃtása."
-msgid ""
-"Enter the hexadecimal code for the background color (e.g. #FFF or "
-"#FFCE90). When using the PNG file format with transparent background, "
-"it is recommended to set this close to the underlying background "
-"color."
-msgstr ""
-"A háttérszÃn tizenhatos számrendszerbeli kódja. (például #FFF "
-"vagy #FFCE90). Ãtlátszó PNG fájloknál ajánlott a kép alatt "
-"megjelenÅ‘ háttér szÃnéhez igazÃtani az átlátszóságot rosszul "
-"kezelő böngészők (például Internet Explorer 6) érdekében."
-msgid ""
-"Select the file format for the image. JPEG usually results in smaller "
-"files, PNG allows tranparency."
-msgstr ""
-"A kép fájlformátumának kiválasztása. A JPEG fájlok általában "
-"kisebbek, a PNG fájlok engedélyezik az átlátszóságot és kisebb "
-"a tömörÃtési algoritmusból fakadó zavar."
-msgid "JPEG"
-msgstr "JPEG"
-msgid "PNG"
-msgstr "PNG"
-msgid "PNG with transparent background"
-msgstr "PNG átlátszó háttérrel"
-msgid "@level - no distortion"
-msgstr "@level - nincs torzÃtás"
-msgid "@level - low"
-msgstr "@level - alacsony"
-msgid "@level - medium"
-msgstr "@level - közepes"
-msgid "@level - high"
-msgstr "@level - magas"
-msgid "No TrueType support"
-msgstr "Nincs <em>TrueType</em> támogatás"
-msgid ""
-"The Image CAPTCHA module can not use TrueType fonts because your PHP "
-"setup does not support it. You can only use a PHP built-in bitmap font "
-"of fixed size."
-msgstr ""
-"Az <em>Image Captcha</em> modul nem tud <em>TrueType</em> "
-"betűtÃpusokat használni, mert a PHP beállÃtása nem támogatja "
-"auz. Csak a PHP beépÃtett, rögzÃtett méretű betűtÃpusa "
-"használható."
-msgid "Font preview of @font (@file)"
-msgstr "@font (@file) betűtÃpus elÅ‘nézete"
-msgid "Preview of built-in font"
-msgstr "BeépÃtett betűtÃpus elÅ‘nézete"
-msgid "PHP built-in font: !font_preview"
-msgstr "BeépÃtett PHP betűtÃpus: !font_preview"
-msgid ""
-"Select the fonts to use for the text in the image CAPTCHA. Apart from "
-"the provided defaults, you can also use your own TrueType fonts "
-"(filename extension .ttf) by putting them in %fonts_library_general or "
-"%fonts_library_specific. You can also upload them to the \"files\" "
-"directory of your site (%filesdir), e.g. with the \"Upload\" module, "
-"but those fonts will not get a preview for security reasons."
-msgstr ""
-"Ki kell választani a kép CAPTCHA modulban a szövegekhez használt "
-"betűtÃpust. Az alapértelmezés szerint biztosÃtottak mellett a "
-"%fonts_library_general vagy a %fonts_library_specific könyvtárakban "
-"elhelyezett saját <em>TrueType</em> betűtÃpusok (.ttf filenév "
-"kiterjesztés) is használhatóak. A betűtÃpusokat a webhely "
-"„files" könyvtárba (%filesdir) is fel lehet tölteni pl. az "
-"<em>Upload</em> modul használatával, de ezekhez biztonsági okokból "
-"nem lesz előnézet létrehozva."
-msgid "You need to select at least one font."
-msgstr "Legalább egy betűtÃpust ki kell választani."
-msgid "The following fonts are not readable: %fonts."
-msgstr "A következÅ‘ betűtÃpusok nem olvashatóak: %fonts."
-msgid "Enter the characters shown in the image."
-msgstr "Be kell Ãrni a képen látható karaktereket."
-msgid "Font example"
-msgstr "BetűtÃpus példa"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/id.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/id.po deleted file \
mode 100644 index eda3229..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/id.po
+++ /dev/null
@@ -1,698 +0,0 @@
-# $Id: id.po,v 1.1.2.1 2010/06/03 22:56:21 soxofaan Exp $
-#
-# Indonesian translation of Drupal (general)
-# Copyright (c) 2010 by the Indonesian translation team <admin@drupal-id.org>
-# Generated from files:
-# captcha.admin.inc,v 1.30 2009/08/10 22:33:34 soxofaan
-# image_captcha.admin.inc,v 1.28 2009/09/23 21:23:00 soxofaan
-# captcha.module,v 1.100 2009/09/20 10:57:07 soxofaan
-# captcha.inc,v 1.11 2009/08/27 22:21:56 soxofaan
-# captcha.info,v 1.7 2008/02/17 12:49:24 soxofaan
-# image_captcha.user.inc,v 1.21 2009/09/22 22:51:00 soxofaan
-# image_captcha.module,v 1.31 2009/09/22 22:51:00 soxofaan
-# captcha.install,v 1.10 2009/05/26 20:17:40 soxofaan
-# image_captcha.info,v 1.5 2008/02/17 12:49:24 soxofaan
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2009-09-23 23:34+0200\n"
-"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
-"Last-Translator: Ki-drupadi <kidrupadi@yahoo.com>\n"
-"Language-Team: drupal-id.org <admin@drupal-id.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: captcha.admin.inc:16 image_captcha/image_captcha.admin.inc:171
-msgid "none"
-msgstr "tidak ada"
-
-#: captcha.admin.inc:17
-msgid "default challenge type"
-msgstr "jenis tantangan baku"
-
-#: captcha.admin.inc:23
-msgid "@type (from module @module)"
-msgstr ""
-
-#: captcha.admin.inc:42
-msgid "Form protection"
-msgstr "Perlindungan Form"
-
-#: captcha.admin.inc:43
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr ""
-
-#: captcha.admin.inc:44;108 captcha.module:46
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Tambahkan link CAPTCHA admin ke form"
-
-#: captcha.admin.inc:49
-msgid "Default challenge type"
-msgstr "Jenis tantangan baku"
-
-#: captcha.admin.inc:50
-msgid "Select the default challenge type for CAPTCHAs. This can be overriden for \
each form if desired."
-msgstr ""
-
-#: captcha.admin.inc:86
-msgid "delete"
-msgstr "hapus"
-
-#: captcha.admin.inc:110
-msgid "This option makes it easy to manage CAPTCHA settings on forms. When enabled, \
users with the \"%admincaptcha\" permission will see a fieldset with CAPTCHA \
administration links on all forms, except on administrative pages."
-msgstr ""
-
-#: captcha.admin.inc:110 captcha.module:107
-msgid "administer CAPTCHA settings"
-msgstr "Kelola pengaturan CAPTCHA"
-
-#: captcha.admin.inc:115
-msgid "Allow CAPTCHAs and CAPTCHA administration links on administrative pages"
-msgstr "Ijinkan CAPTCHA dan tautan admin CAPTCHA pada halaman Administer"
-
-#: captcha.admin.inc:117
-msgid "This option makes it possible to add CAPTCHAs to forms on administrative \
pages. CAPTCHAs are disabled by default on administrative pages (which shouldn't be \
accessible to untrusted users normally) to avoid the related overhead. In some \
situations, e.g. in the case of demo sites, it can be usefull to allow CAPTCHAs on \
administrative pages."
-msgstr ""
-
-#: captcha.admin.inc:123
-msgid "Add a description to the CAPTCHA"
-msgstr "Tambahkan deskripsi ke CAPTCHA"
-
-#: captcha.admin.inc:124
-msgid "Add a configurable description to explain the purpose of the CAPTCHA to the \
visitor."
-msgstr ""
-
-#: captcha.admin.inc:132
-msgid "CAPTCHA description"
-msgstr "deskripsi CAPTCHA"
-
-#: captcha.admin.inc:133;149
-msgid "Configurable description of the CAPTCHA. An empty entry will reset the \
description."
-msgstr "Deskripsi CAPTCHA yang bisa diubah. Entri kosong akan menghilangkan \
deskripsi"
-
-#: captcha.admin.inc:139
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Untuk bahasa %lang_name (code %lang_code)"
-
-#: captcha.admin.inc:148
-msgid "Challenge description"
-msgstr "deskripsi tantangan"
-
-#: captcha.admin.inc:159
-msgid "Default CAPTCHA validation"
-msgstr "Validasi CAPTCHA baku"
-
-#: captcha.admin.inc:160
-msgid "Define how the response should be processed by default. Note that the modules \
that provide the actual challenges can override or ignore this."
-msgstr ""
-
-#: captcha.admin.inc:162
-msgid "Case sensitive validation: the response has to exactly match the solution."
-msgstr ""
-
-#: captcha.admin.inc:163
-msgid "Case insensitive validation: lowercase/uppercase errors are ignored."
-msgstr ""
-
-#: captcha.admin.inc:171
-msgid "Persistence"
-msgstr "Menetap"
-
-#: captcha.admin.inc:174
-msgid "Always add a challenge."
-msgstr "Selalu tambahkan tantangan"
-
-#: captcha.admin.inc:175
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Hilangkan tantangan untuk form apabila pengguna berhasil merespon sekali \
saja pada form tersebut"
-
-#: captcha.admin.inc:176
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Hilangkan tantangan untuk semua form apabila pengguna berhasil merespon \
sekali"
-
-#: captcha.admin.inc:178
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr ""
-
-#: captcha.admin.inc:184
-msgid "Log wrong responses"
-msgstr "Catat respon yang salah"
-
-#: captcha.admin.inc:185
-msgid "Report information about wrong responses to the !log."
-msgstr "Laporkan informasi tentang respon yang salah pada !log"
-
-#: captcha.admin.inc:185
-msgid "log"
-msgstr "Catat"
-
-#: captcha.admin.inc:192
-msgid "Save configuration"
-msgstr "Simpan pengaturan"
-
-#: captcha.admin.inc:202;342
-msgid "Challenge type"
-msgstr "Tipe tantangan"
-
-#: captcha.admin.inc:202
-msgid "Operations"
-msgstr "Tindakan"
-
-#: captcha.admin.inc:229;363
-msgid "Illegal form_id"
-msgstr "form_id tidak dikenal"
-
-#: captcha.admin.inc:255
-msgid "Added CAPTCHA point."
-msgstr "Tambahkan titik CAPTCHA"
-
-#: captcha.admin.inc:270
-msgid "Reset of CAPTCHA description for language %language."
-msgstr "Kembalikan nilai deskripsi CAPTCHA untuk bahasa %language."
-
-#: captcha.admin.inc:281
-msgid "Reset of CAPTCHA description."
-msgstr "Kembalikan nilai deskripsi CAPTCHA."
-
-#: captcha.admin.inc:289
-msgid "The CAPTCHA settings were saved."
-msgstr "Pengaturan CAPTCHA telah disimpan"
-
-#: captcha.admin.inc:321;335
-msgid "Form ID"
-msgstr ""
-
-#: captcha.admin.inc:322;336
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr ""
-
-#: captcha.admin.inc:343
-msgid "The CAPTCHA type to use for this form"
-msgstr ""
-
-#: captcha.admin.inc:352
-msgid "Save"
-msgstr ""
-
-#: captcha.admin.inc:375
-msgid "Saved CAPTCHA point settings."
-msgstr ""
-
-#: captcha.admin.inc:392
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr ""
-
-#: captcha.admin.inc:393
-msgid "Delete"
-msgstr ""
-
-#: captcha.admin.inc:396
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr ""
-
-#: captcha.admin.inc:397
-msgid "Disable"
-msgstr ""
-
-#: captcha.admin.inc:410
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr ""
-
-#: captcha.admin.inc:414
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr ""
-
-#: captcha.admin.inc:451
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr ""
-
-#: captcha.admin.inc:459
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr ""
-
-#: captcha.admin.inc:462
-msgid "10 more examples of this challenge."
-msgstr ""
-
-#: captcha.inc:38
-msgid "Failed to set a CAPTCHA type for form %form_id: could not interpret value \
\"@captcha_type\""
-msgstr ""
-
-#: captcha.inc:146
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr ""
-
-#: captcha.module:31
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr ""
-
-#: captcha.module:32
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr ""
-
-#: captcha.module:35
-msgid "Location of comment submission form"
-msgstr ""
-
-#: captcha.module:36
-msgid "Display on separate page"
-msgstr ""
-
-#: captcha.module:40
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr ""
-
-#: captcha.module:45
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr ""
-
-#: captcha.module:47
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr ""
-
-#: captcha.module:48;107
-msgid "skip CAPTCHA"
-msgstr ""
-
-#: (duplicate) captcha.module:269;322;119 ;222;427;456;60;71 captcha.info:0 \
image_captcha/image_captcha.user.inc:29;73 \
image_captcha/image_captcha.module:95
-msgid "CAPTCHA"
-msgstr ""
-
-#: captcha.module:327
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr ""
-
-#: captcha.module:328
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr ""
-
-#: captcha.module:329
-msgid "general CAPTCHA settings"
-msgstr ""
-
-#: captcha.module:333
-msgid "Enabled challenge"
-msgstr ""
-
-#: captcha.module:334
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr ""
-
-#: captcha.module:337
-msgid "change"
-msgstr ""
-
-#: captcha.module:338
-msgid "disable"
-msgstr ""
-
-#: captcha.module:352 image_captcha/image_captcha.admin.inc:57
-msgid "Example"
-msgstr ""
-
-#: captcha.module:353
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr ""
-
-#: captcha.module:362
-msgid "CAPTCHA: no challenge enabled"
-msgstr ""
-
-#: captcha.module:364
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr ""
-
-#: captcha.module:426
-msgid "CAPTCHA validation error: unknown CAPTCHA session ID. Contact the site \
administrator if this problem persists."
-msgstr ""
-
-#: captcha.module:451
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr ""
-
-#: captcha.module:538
-msgid "Math question"
-msgstr ""
-
-#: captcha.module:539
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr ""
-
-#: captcha.module:540
-msgid "@x + @y = "
-msgstr ""
-
-#: captcha.module:559
-msgid "Test one two three"
-msgstr ""
-
-#: captcha.module:222
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr ""
-
-#: captcha.module:427
-msgid "CAPTCHA validation error: unknown CAPTCHA session ID (%csid)."
-msgstr ""
-
-#: captcha.module:456
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr ""
-
-#: captcha.module:120
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] ""
-msgstr[1] ""
-
-#: captcha.module:61
-msgid "Administer how and where CAPTCHAs are used."
-msgstr ""
-
-#: captcha.module:77
-msgid "General settings"
-msgstr "Pengaturan umum"
-
-#: captcha.module:83
-msgid "Examples"
-msgstr "Contoh"
-
-#: captcha.module:84
-msgid "An overview of the available challenge types with examples."
-msgstr ""
-
-#: captcha.module:93
-msgid "CAPTCHA point administration"
-msgstr ""
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr ""
-
-#: (duplicate) captcha.install:115
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr ""
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr ""
-
-#: captcha.info:0 image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:29
-msgid "Built-in font"
-msgstr "Font terpasang"
-
-#: image_captcha/image_captcha.admin.inc:47
-msgid "The Image CAPTCHA module can not generate images because your PHP setup does \
not support it (no <a href=\"!gdlib\">GD library</a> with JPEG \
support)."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:58
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:69
-msgid "Code settings"
-msgstr "Pengaturan kode"
-
-#: image_captcha/image_captcha.admin.inc:73
-msgid "Characters to use in the code"
-msgstr "Karakter yang digunakan dalam kode"
-
-#: image_captcha/image_captcha.admin.inc:78
-msgid "Code length"
-msgstr "Panjang kode"
-
-#: image_captcha/image_captcha.admin.inc:81
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:87
-msgid "Font settings"
-msgstr "Pengaturan Font"
-
-#: image_captcha/image_captcha.admin.inc:93
-msgid "Font"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:95
-msgid "Select the font to use for the text in the image CAPTCHA. Apart from the \
provided defaults, you can also use your own TrueType fonts (filename extension .ttf) \
by putting them in the Drupal \"files\" directory (directory %filesdir), \
%fonts_library_general or %fonts_library_specific."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:110
-msgid "Font size"
-msgstr "Ukuran Font"
-
-#: image_captcha/image_captcha.admin.inc:112
-msgid "tiny"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:113;172
-msgid "small"
-msgstr "kecil"
-
-#: image_captcha/image_captcha.admin.inc:115;139
-msgid "normal"
-msgstr "normal"
-
-#: image_captcha/image_captcha.admin.inc:117
-msgid "large"
-msgstr "besar"
-
-#: image_captcha/image_captcha.admin.inc:119
-msgid "extra large"
-msgstr "sangat besar"
-
-#: image_captcha/image_captcha.admin.inc:122
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:134
-msgid "Character spacing"
-msgstr "spasi karakter"
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:138
-msgid "tight"
-msgstr "rapat"
-
-#: image_captcha/image_captcha.admin.inc:140
-msgid "wide"
-msgstr "lebar"
-
-#: image_captcha/image_captcha.admin.inc:141
-msgid "extra wide"
-msgstr "sangat lebar"
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "Color and image settings"
-msgstr "Pengaturan warna dan gambar"
-
-#: image_captcha/image_captcha.admin.inc:149
-msgid "Configuration of the background, text colors and file format of the image \
CAPTCHA."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:153
-msgid "Background color"
-msgstr "warna latar belakang"
-
-#: image_captcha/image_captcha.admin.inc:154
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90). \
When using the PNG file format with transparent background, it is recommended to set \
this close to the underlying background color."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:161
-msgid "Text color"
-msgstr "warna teks"
-
-#: image_captcha/image_captcha.admin.inc:162
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:169
-msgid "Additional variation of text color"
-msgstr "tambahan variasi warna pada teks"
-
-#: image_captcha/image_captcha.admin.inc:173
-msgid "moderate"
-msgstr "sederhana"
-
-#: image_captcha/image_captcha.admin.inc:174;245
-msgid "high"
-msgstr "terang"
-
-#: image_captcha/image_captcha.admin.inc:175
-msgid "very high"
-msgstr "sangat terang"
-
-#: image_captcha/image_captcha.admin.inc:178
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:182
-msgid "File format"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:183
-msgid "Select the file format for the image. JPEG usually results in smaller files, \
PNG allows tranparency."
-msgstr "Pilih Format file untuk gambar. JPEG menghasilkan file yang kecil, PNG bisa \
latar transparan"
-
-#: image_captcha/image_captcha.admin.inc:186
-msgid "JPEG"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:187
-msgid "PNG"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:188
-msgid "PNG with transparent background"
-msgstr "PNG dengan latar transparan"
-
-#: image_captcha/image_captcha.admin.inc:195
-msgid "Distortion and noise"
-msgstr "Distorsi dan noise"
-
-#: image_captcha/image_captcha.admin.inc:196
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:201
-msgid "Distortion level"
-msgstr "Tingkat distorsi"
-
-#: image_captcha/image_captcha.admin.inc:203
-msgid "@level - no distortion"
-msgstr "@level - tanpa distorsi"
-
-#: image_captcha/image_captcha.admin.inc:204
-msgid "@level - low"
-msgstr "@level - rendah"
-
-#: image_captcha/image_captcha.admin.inc:208
-msgid "@level - medium"
-msgstr "@level - sedang"
-
-#: image_captcha/image_captcha.admin.inc:213
-msgid "@level - high"
-msgstr "@level - tinggi"
-
-#: image_captcha/image_captcha.admin.inc:216
-msgid "Set the degree of wave distortion in the image."
-msgstr "Atur derajat gelombang distorsi pada image"
-
-#: image_captcha/image_captcha.admin.inc:220
-msgid "Smooth distortion"
-msgstr "Distorsi halus"
-
-#: image_captcha/image_captcha.admin.inc:222
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:227
-msgid "Add salt and pepper noise"
-msgstr "Tambahkan bintik garam dan lada"
-
-#: image_captcha/image_captcha.admin.inc:229
-msgid "This option adds randomly colored point noise."
-msgstr "Pilihan ini menambahkan noise titik berwarna"
-
-#: image_captcha/image_captcha.admin.inc:233
-msgid "Add line noise"
-msgstr "tambahkan noise bergaris"
-
-#: image_captcha/image_captcha.admin.inc:235
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Pilihan ini mengaktifkan gambar garis acak di atas kode teks"
-
-#: image_captcha/image_captcha.admin.inc:239
-msgid "Noise level"
-msgstr "Tingkatan Noise"
-
-#: image_captcha/image_captcha.admin.inc:241
-msgid "low"
-msgstr "rendah"
-
-#: image_captcha/image_captcha.admin.inc:243
-msgid "medium"
-msgstr "sedang"
-
-#: image_captcha/image_captcha.admin.inc:247
-msgid "severe"
-msgstr "susah"
-
-#: image_captcha/image_captcha.admin.inc:264
-msgid "The Image CAPTCHA module can not use TrueType fonts because your PHP setup \
does not support it. You can only use a low quality built-in bitmap \
font."
-msgstr "Image CAPTCHA tidak bisa menggunakan Truetype font karena PHP anda tidak \
mendunkung. Anda hanya bisa menggunkan bitmap font kualitas rendah"
-
-#: image_captcha/image_captcha.admin.inc:269
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr "Penggunaan bitmap font terpasang tidak dianjurkan karena ukurannya kecil dan \
tidak mendukung UTF-8"
-
-#: image_captcha/image_captcha.admin.inc:280
-msgid "The list of characters to use should not contain spaces."
-msgstr "Daftar karakter yang digunkan tidak boleh berisi spasi"
-
-#: image_captcha/image_captcha.admin.inc:285
-msgid "You need to select a font"
-msgstr "Anda harus memilih font"
-
-#: image_captcha/image_captcha.admin.inc:290
-msgid "The built-in font only supports Latin2 characters. Only use \"a\" to \"z\" \
and numbers."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:294
-msgid "Font does not exist or is not readable."
-msgstr "Font tidak tersedia atau tidak terbaca"
-
-#: image_captcha/image_captcha.admin.inc:299
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Warna latar tidak termasuk nilai heksadesimal untuk warna"
-
-#: image_captcha/image_captcha.admin.inc:302
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Warna teks tidak termasuk nilai heksadesimal untuk warna"
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr ""
-
-#: image_captcha/image_captcha.user.inc:73
-msgid "Could not find or read the configured font (\"%font\") for the image \
CAPTCHA."
-msgstr "Tidak dapat menemukan atau membaca konfigurasi font (\"%font\") untuk image \
CAPTCHA"
-
-#: image_captcha/image_captcha.module:29
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr "CAPTCHA gambar adalah tantangan yang populer ketika kode teks acak tampak \
kabur dalam gambar..."
-
-#: image_captcha/image_captcha.module:165
-msgid "Enter the characters shown in the image. Ignore spaces and be careful about \
upper and lower case."
-msgstr "Masukan karakter yang nampak dalam gambar. Abaikan spasi dan hati-hati \
dengan huruf besar dan kecil"
-
-#: image_captcha/image_captcha.module:168
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr "Masukan karakter pada gambar yang tampil (tanpa spasi)"
-
-#: image_captcha/image_captcha.module:178;178;41 image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr ""
-
-#: image_captcha/image_captcha.module:183
-msgid "What code is in the image?"
-msgstr "Apakah kode pada gambar?"
-
-#: image_captcha/image_captcha.module:95
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "hitungan byte ilegal ketika memisahkan utf8 string dalam karakter"
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "CAPTCHA gambar yang tersedia"
-
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/it.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/it.po deleted file \
mode 100644 index a031b62..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/it.po
+++ /dev/null
@@ -1,502 +0,0 @@
-# $Id: it.po,v 1.3 2009/07/17 17:54:50 soxofaan Exp $
-#
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <augusto@fagioli.biz>
-# Generated from files:
-# captcha.module,v 1.42.2.24 2007/08/24 03:16:29 wundo
-# captcha.info,v 1.3.2.2 2007/07/10 22:02:33 robloach
-# captcha.install,v 1.1.4.4 2007/07/24 00:45:39 robloach
-# image_captcha.info,v 1.1.4.2 2007/07/10 22:02:34 robloach
-# text_captcha.info,v 1.1.4.2 2007/07/10 22:02:35 robloach
-# image_captcha.module,v 1.1.4.14 2007/08/29 19:18:34 robloach
-# text_captcha.module,v 1.1.4.8 2007/08/25 13:29:49 wundo
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: it\n"
-"POT-Creation-Date: 2007-09-04 21:17+0200\n"
-"PO-Revision-Date: 2008-09-10 14:21+0200\n"
-"Last-Translator: augusto\n"
-"Language-Team: <en@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Poedit-Country: GERMANY\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: captcha.module:26
-msgid "A captcha is a tool to fight automated spam submission of forms (e.g. user \
registration forms, comment forms, guestbook forms, etc.) by malicious users. A \
captcha is an extra field (or several fields) on a form presented to the user. It \
represents a challenge, which should be easy for a normal human to solve (e.g. a \
simple math problem), but hard enough to keep automated scripts and \
spam bots out."
-msgstr ""
-
-#: captcha.module:30
-msgid "<p>A captcha can be added to virtually each drupal form (which is identified \
by a <em>form_id</em>). The captcha module comes with some default forms to add a \
captcha to, but arbitrary forms can be easily added and managed when the option \
\"%adminlinks\" is enabled.</p><p>Users with the \"%skipcaptcha\" <a \
href=\"@perm\">permission</a> won't be offered a captcha. Be sure to grant this \
permission to the trusted users (e.g. site administrators). If you want to test the \
captcha challenges, be sure to do it as a user without the \"%skipcaptcha\" \
permission (e.g. as unauthenticated user).</p>"
-msgstr ""
-
-#: captcha.module:33;174
-msgid "Add captcha adminstration links to forms"
-msgstr "Aggiungi Link di gestione Captcha ai forms"
-
-#: captcha.module:49;59;342
-#: captcha.info:0
-msgid "Captcha"
-msgstr "CAPTCHA"
-
-#: captcha.module:50
-msgid "Administer how and where Captchas are used."
-msgstr "Gestisci come e dove Captcha viene usato"
-
-#: captcha.module:65
-msgid "General settings"
-msgstr "Impostazioni generali"
-
-#: captcha.module:71
-msgid "Examples"
-msgstr "Esempi"
-
-#: captcha.module:72
-msgid "An overview of the available captcha types with examples."
-msgstr "Panoramica dei typi disponibili di Captcha con esempi"
-
-#: captcha.module:119;122
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Questa domanda serve a verificare che il form non venga inviato da procedure \
automatizzate"
-
-#: captcha.module:142
-msgid "Disabled captcha for form %form_id."
-msgstr "Disabilita CAPTCHA per il form %form_id "
-
-#: captcha.module:148
-msgid "Deleted captcha for form %form_id."
-msgstr "CAPTCHA eliminati per il form %form_id"
-
-#: captcha.module:176
-msgid "This option is very helpful to enable/disable captchas on forms. When \
enabled, users with the \"%admincaptcha\" permission will see captcha administration \
links on all forms (except on administrative pages, which shouldn't be accessible to \
untrusted users in the first place)."
-msgstr "Opzione utile per abilitare/disabilitare CAPTCHA nei form. Quando abilitata, \
gli utenti con il permesso \"%admincaptcha\"- disporra' dei link di gestione \
CAPTCHA-su tutti i form. (tranne che per le pagine di amministrazione, che di norma \
sono disponibili agli utenti amministratori)."
-
-#: captcha.module:181
-msgid "Select captcha types"
-msgstr "Seleziona il tipo di Captcha"
-
-#: captcha.module:182
-msgid "Select what kind of captcha challenge you want for each form."
-msgstr "Assegna d ogni form un tipo di CAPTCHA"
-
-#: captcha.module:208
-msgid "delete"
-msgstr "elimina"
-
-#: captcha.module:218;232
-msgid "Captcha description"
-msgstr "Descrizione del CAPTCHA"
-
-#: captcha.module:219;233
-msgid "With this description you can explain the purpose of the captcha challenge to \
the user."
-msgstr "Con questa testo puoi descrivere il Captcha agli utenti del sito"
-
-#: captcha.module:224
-msgid "Captcha description for %lang_name (locale %lang_code)"
-msgstr "Descrizione CAPTCHA per la lingua %lang_name (Locale %lang_code)"
-
-#: captcha.module:240
-msgid "Persistent captchas"
-msgstr "CAPTCHAs Persistenti"
-
-#: captcha.module:241
-msgid "If checked, the user will always have to solve a captcha. If not checked, the \
captcha check for a form will be omitted during the rest of the session once the user \
has successfully solved a captcha for that form."
-msgstr ""
-
-#: captcha.module:247
-msgid "Submit"
-msgstr "Invia"
-
-#: captcha.module:263
-msgid "Captcha type (module)"
-msgstr "Tipo di CAPTCHA (Modulo)"
-
-#: captcha.module:263
-msgid "Operations"
-msgstr "Operazioni"
-
-#: captcha.module:294
-msgid "Your captcha settings were saved."
-msgstr ""
-
-#: captcha.module:330
-msgid "Captcha problem: hook_captcha() of module %module returned nothing when \
trying to retrieve captcha type %type for form %form_id."
-msgstr ""
-
-#: captcha.module:408;420
-msgid "Captcha administration"
-msgstr "CAPTCHA-Verwaltung"
-
-#: captcha.module:409
-msgid "The captcha challenge \"@type\" (by module \"@module\") is enabled here for \
untrusted users: !edit or !disable."
-msgstr "La richiesta Captcha \"@type\" (von Modul \"@module\") e' abilitata per \
utenti anonimi : !edit o !disable."
-
-#: captcha.module:412
-msgid "edit captcha type"
-msgstr "modifica il tipo di CAPTCHA"
-
-#: captcha.module:413
-msgid "disable captcha"
-msgstr "disabilita CAPTCHA"
-
-#: captcha.module:421
-msgid "Place a captcha challenge here for untrusted users."
-msgstr "Mostra Captcha agli utenti non autenticati"
-
-#: captcha.module:443
-msgid "Invalid captcha token."
-msgstr "Token Captcha non valido"
-
-#: captcha.module:450
-msgid "The answer you entered for the captcha challenge was not correct."
-msgstr "La risposta Captcha non e' corretta"
-
-#: captcha.module:490
-msgid "You can't request more than @num captcha challenges without solving them. \
Your previous captcha challenges were flushed."
-msgstr "Non puoi richiedere piu' di @num CAPTCHA senza rispondere esattamente. I \
precedenti Captcha sono stati eliminati"
-
-#: captcha.module:543
-msgid "This page gives an overview of all available captcha types, generated with \
their current settings."
-msgstr "Questa pagina mostra i tipi di Captcha disponibili., generati con le \
impostazioni attuali"
-
-#: captcha.module:554
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Richiesta \"%challenge\" del modulo \"%module\""
-
-#: captcha.module:559
-msgid "10 more examples of this captcha type."
-msgstr "Altri 10 esempi per questo tipo di Captcha"
-
-#: captcha.module:588
-msgid "Math Question"
-msgstr "Domanda matematica"
-
-#: captcha.module:589
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Risolvi la somma algebrica. Esempio : per 1 + 3 inserisci 4"
-
-#: captcha.module:590
-msgid "@x + @y = "
-msgstr "@x + @y ="
-
-#: captcha.module:329;0
-msgid "captcha"
-msgstr "CAPTCHA"
-
-#: captcha.module:85
-msgid "administer captcha"
-msgstr "Gestione CAPTCHA"
-
-#: captcha.module:85
-msgid "skip captcha challenges"
-msgstr "Salta la richiesta CAPTCHA"
-
-#: captcha.install:31;75
-msgid "Unsupported database."
-msgstr "Unsupported database."
-
-#: captcha.install:41
-msgid "The installation of the captcha_points table and some default entries was \
successful"
-msgstr "L'installazione della tabella captcha_points con valori di default e' stata \
eseguita."
-
-#: captcha.install:43
-msgid "The installation of the captcha module failed"
-msgstr "L'installazione del modulo e' fallita"
-
-#: captcha.info:0
-msgid "Base captcha module for adding captcha challenges to registration, comment \
and contact forms for example."
-msgstr "Modulo Base per aggiungere Richiesta Captcha per la registrazione, commenti, \
e moduli di contatti"
-
-#: captcha.info:0
-#: image_captcha/image_captcha.info:0
-#: text_captcha/text_captcha.info:0
-msgid "Spam control"
-msgstr "Controllo SPAM"
-
-#: image_captcha/image_captcha.module:20
-msgid "The image captcha is a popular type of captcha challenge where a random \
textual code is obfuscated in an image. The image is generated on the fly for each \
request, which is rather CPU intensive for the server. Be carefull with the size and \
computation related settings."
-msgstr "Image Captcha e' un diffuso tipo di captcha dove viene esposta immagine che \
espone del testo.L'immagine e' generata al volo per ogni richiesta, con lavoro extra \
della CPU. Verifica le prestazioni del server ed eventualmente cambia le \
impostazioni"
-
-#: image_captcha/image_captcha.module:24
-msgid "<p>Example captcha image, generated with the current settings:</p>!img"
-msgstr "<p>Esempio di captcha image, generato con le impostazioni attuali:</p>!img"
-
-#: image_captcha/image_captcha.module:39
-#: image_captcha/image_captcha.info:0
-msgid "Image captcha"
-msgstr "Image captcha"
-
-#: image_captcha/image_captcha.module:67
-msgid "No font configured."
-msgstr "Nessuna font e' stata impostata"
-
-#: image_captcha/image_captcha.module:71
-msgid "Could not find or read the configured font \"%font\" for the image captcha."
-msgstr "Non e' possibile accedere alla font selezionata \"%font\" per creare una \
image captcha."
-
-#: image_captcha/image_captcha.module:98
-msgid "Image captchas cannot be generated, because your PHP installation's GD \
library has no JPEG support."
-msgstr "Le immagini Captcha non possono essere generate per la mancanza del supporto \
JPEG della libreria GD in uso dal PHP"
-
-#: image_captcha/image_captcha.module:103
-msgid "Characters to use in the code"
-msgstr "Caratteri in uso"
-
-#: image_captcha/image_captcha.module:108
-msgid "Code length"
-msgstr "Lunghezza del codice"
-
-#: image_captcha/image_captcha.module:111
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr "La lunghezza del codice influenza sia l'uso della CPU che la dimensione \
della immagine creata."
-
-#: image_captcha/image_captcha.module:117
-msgid "The image captcha module requires a TrueType font file (.ttf) for generating \
the images, but because of licencing issues it is not allowed to package fonts with \
the module. You can install fonts yourself however, by putting them in the fonts \
directory of the image captcha module (directory \"%fontsdir\") or by uploading them \
to your Drupal file system (directory \"%filesdir\") with for example the upload \
module."
-msgstr ""
-
-#: image_captcha/image_captcha.module:124
-msgid "Select a font"
-msgstr "Seleziona un font"
-
-#: image_captcha/image_captcha.module:129
-msgid "Font"
-msgstr "Font"
-
-#: image_captcha/image_captcha.module:131
-msgid "The TrueType font (.ttf) to use for the text in the image captcha."
-msgstr "Il TrueType font (.ttf) da usare per generare il tessto nella immagine"
-
-#: image_captcha/image_captcha.module:139
-msgid "Font size"
-msgstr "Dimensine del font"
-
-#: image_captcha/image_captcha.module:141
-msgid "tiny"
-msgstr "molto piccolo"
-
-#: image_captcha/image_captcha.module:142
-msgid "small"
-msgstr "piccolo"
-
-#: image_captcha/image_captcha.module:143;164;202
-msgid "normal"
-msgstr "medio"
-
-#: image_captcha/image_captcha.module:144
-msgid "large"
-msgstr "grande"
-
-#: image_captcha/image_captcha.module:147
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr "La dimensionedel font codice influenza sia l'uso della CPU che la dimensione \
della immagine creata."
-
-#: image_captcha/image_captcha.module:153
-msgid "Distortion and noise"
-msgstr "Distorsione e disturbo"
-
-#: image_captcha/image_captcha.module:154
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr ""
-"Con questa impostazione puoi controllare il livello di affuscamento per distorsione \
ed il disturbo aggiunto. "
-"Da usare con cautela. La combinazione di questi valori possono portare a testi poco \
leggibili"
-
-#: image_captcha/image_captcha.module:159
-msgid "Distortion level"
-msgstr "Livello di distorsione"
-
-#: image_captcha/image_captcha.module:161
-msgid "none"
-msgstr "nessuno"
-
-#: image_captcha/image_captcha.module:162;201
-msgid "low"
-msgstr "basso"
-
-#: image_captcha/image_captcha.module:163
-msgid "moderate"
-msgstr "moderato"
-
-#: image_captcha/image_captcha.module:165;203
-msgid "high"
-msgstr "alto"
-
-#: image_captcha/image_captcha.module:166;204
-msgid "severe"
-msgstr "molto alto"
-
-#: image_captcha/image_captcha.module:169
-msgid "Set the degree of wave distortion in the image."
-msgstr "Imposta il livello di distorsione dell'immagine"
-
-#: image_captcha/image_captcha.module:173
-msgid "Smooth distortion"
-msgstr "Smussa angoli"
-
-#: image_captcha/image_captcha.module:175
-msgid "This option enables bilineair interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Questa opzione abilita l'interpolazione lineare della distorsione, che \
smussa gli angoli dell'immagine. Richiede piu' CPU"
-
-#: image_captcha/image_captcha.module:180
-msgid "Double vision"
-msgstr "Doppia visione"
-
-#: image_captcha/image_captcha.module:182
-msgid "When enabled, characters appear twice in the image, overlayed onto each \
other."
-msgstr "Quando abilitato, il carattere appare 2 volte, con un effetto ombra"
-
-#: image_captcha/image_captcha.module:187
-msgid "Add salt and peper noise"
-msgstr "Aggiungi disturbo sale e pepe"
-
-#: image_captcha/image_captcha.module:189
-msgid "This option adds randomly colored point noise."
-msgstr "Questa opzione aggiunge punti colorati casuali di disturbo"
-
-#: image_captcha/image_captcha.module:193
-msgid "Add line noise"
-msgstr "Aggiungi linee di disturbo"
-
-#: image_captcha/image_captcha.module:195
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Questa opzione abilita le linee casuali a disturbo del testo nell'immagine"
-
-#: image_captcha/image_captcha.module:199
-msgid "Noise level"
-msgstr "Livello del disturbo"
-
-#: image_captcha/image_captcha.module:216;233
-msgid "You need to select a font"
-msgstr "Seleziona un font"
-
-#: image_captcha/image_captcha.module:228
-msgid "The list of characters to use should not contain spaces."
-msgstr "La lista dei caratteri da usare non deve contenere spazi"
-
-#: image_captcha/image_captcha.module:236
-msgid "Font does not exist or is not readable."
-msgstr "Il font non esiste o non e' leggibile"
-
-#: image_captcha/image_captcha.module:265
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "Errore nella divisione in caratteri della stringa utf8"
-
-#: image_captcha/image_captcha.module:311
-msgid "What code is in the image?"
-msgstr "Qual'e' il codice dell'immagine?"
-
-#: image_captcha/image_captcha.module:312
-msgid "Copy the characters (respecting upper/lower case) from the image."
-msgstr "Copiare i caratteri dell'immagine, rispettando minuscole/maiuscle"
-
-#: image_captcha/image_captcha.module:339
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr "Creazione dell'immagine Captcha fallita. Verificare la configurazione del \
modulo, in partcolare le impostazioni del font"
-
-#: image_captcha/image_captcha.module:265;339;365
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: image_captcha/image_captcha.module:0
-msgid "image_captcha"
-msgstr "image_captcha"
-
-#: image_captcha/image_captcha.info:0
-msgid "Captcha module that implements image based captchas."
-msgstr "Modulo CAPTCHA che fornisce Immagini Testuali per Captcha"
-
-#: text_captcha/text_captcha.module:19
-msgid "This text based captcha presents a captcha phrase of a given number of words \
and the visitor is asked to enter the n'th word."
-msgstr "Questo Captcha mostra delle frasi captcha composte di un certo numero di \
parole.viene chiesto ai visitatori di inserirne una in particolare"
-
-#: text_captcha/text_captcha.module:33
-#: text_captcha/text_captcha.info:0
-msgid "Text captcha"
-msgstr "Testo CAPTCHA"
-
-#: text_captcha/text_captcha.module:51
-msgid "Kind of words to use in the captcha phrase"
-msgstr "Tipo di parole da usare nella frase Captcha"
-
-#: text_captcha/text_captcha.module:53
-msgid "Generate nonsense random words."
-msgstr "Genera parole a caso senza senso"
-
-#: text_captcha/text_captcha.module:54
-msgid "Use user defined words."
-msgstr "Usa parole definite dall'utente"
-
-#: text_captcha/text_captcha.module:61
-msgid "User defined words"
-msgstr "Parole definite dall'utente"
-
-#: text_captcha/text_captcha.module:63
-msgid "Enter a bunch of space separated words (at least @min)."
-msgstr "Inserisci alcune parole separate da spazio (almeno @min)."
-
-#: text_captcha/text_captcha.module:68
-msgid "Number of words in the captcha phrase"
-msgstr "Numero di parole nella frase Captcha"
-
-#: text_captcha/text_captcha.module:85
-msgid "You need to enter at least @min words if you want to use user defined words."
-msgstr "Inserisci almeno @min parole per usare Captcha con parole definite \
dall'utente"
-
-#: text_captcha/text_captcha.module:94
-msgid "Number of words in the captcha phrase should be between 4 and 10."
-msgstr "Il numero di parole della frase Captcha deve essere fra 4 e 10"
-
-#: text_captcha/text_captcha.module:146
-msgid "first"
-msgstr "prima"
-
-#: text_captcha/text_captcha.module:146
-msgid "second"
-msgstr "seconda"
-
-#: text_captcha/text_captcha.module:146
-msgid "third"
-msgstr "terza"
-
-#: text_captcha/text_captcha.module:147
-msgid "fourth"
-msgstr "quarta"
-
-#: text_captcha/text_captcha.module:147
-msgid "fifth"
-msgstr "quinta"
-
-#: text_captcha/text_captcha.module:147
-msgid "sixth"
-msgstr "sesta"
-
-#: text_captcha/text_captcha.module:147
-msgid "seventh"
-msgstr "settima"
-
-#: text_captcha/text_captcha.module:148
-msgid "eighth"
-msgstr "ottava"
-
-#: text_captcha/text_captcha.module:148
-msgid "ninth"
-msgstr "nona"
-
-#: text_captcha/text_captcha.module:148
-msgid "tenth"
-msgstr "decima"
-
-#: text_captcha/text_captcha.module:176
-msgid "What is the @nth word in the captcha phrase \"@words\"?"
-msgstr "Quale e' la @esimanth parola della frase captcha \"@words\"?"
-
-#: text_captcha/text_captcha.module:0
-msgid "text_captcha"
-msgstr "text_capcha"
-
-#: text_captcha/text_captcha.info:0
-msgid "Captcha module that implements a simple text based captcha."
-msgstr "Modulo Captcha che fornisce un semplice captcha.testuale"
-
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/lt.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/lt.po deleted file \
mode 100644 index fb54e15..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/lt.po
+++ /dev/null
@@ -1,651 +0,0 @@
-# LANGUAGE translation of Drupal (captcha.module)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from file: captcha.module,v 1.24 2006/05/19 15:00:51 wundo
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: block-module5\n"
-"POT-Creation-Date: 2009-07-03 15:01+0200\n"
-"PO-Revision-Date: 2009-03-22 12:52+0300\n"
-"Last-Translator: Domas Jokubauskis <domasj@gmail.com>\n"
-"Language-Team: Domas Jokubauskis <domasj@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100! ? 0 : n%10>=2 && (n%100<10 || \
n%100> ) ? 1 : 2;\n"
-"X-Poedit-Language: Lithuanian\n"
-"X-Poedit-Country: LITHUANIA\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: captcha.admin.inc:16 image_captcha/image_captcha.admin.inc:157;179
-msgid "none"
-msgstr "joks"
-
-#: captcha.admin.inc:17
-msgid "default challenge type"
-msgstr ""
-
-#: captcha.admin.inc:23
-msgid "@type (from module @module)"
-msgstr ""
-
-#: captcha.admin.inc:42
-msgid "Form protection"
-msgstr "Formos apsauga"
-
-#: captcha.admin.inc:43
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr "Pasirinkite jūsų norimą užduotį kiekvienai išvardintai formai \
(atpažįstamai pagal jos <em>form_id</em> identifikatorių). Jūs galite lengvai \
pridÄ—ti reikiamas formas naudodamiesi lentelÄ—s apaÄioje esanÄiu laukeliu arba \
žemiau esanÄiu „%CAPTCHA_admin_links" nustatymu."
-
-#: captcha.admin.inc:44;108 captcha.module:46
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Pridėti CAPTCHA užduoties administravimo nuorodas prie formų"
-
-#: captcha.admin.inc:49
-msgid "Default challenge type"
-msgstr ""
-
-#: captcha.admin.inc:50
-msgid "Select the default challenge type for CAPTCHAs. This can be overriden for \
each form if desired."
-msgstr ""
-
-#: captcha.admin.inc:86
-msgid "delete"
-msgstr "Å¡alinti"
-
-#: captcha.admin.inc:110
-msgid "This option makes it easy to manage CAPTCHA settings on forms. When enabled, \
users with the \"%admincaptcha\" permission will see a fieldset with CAPTCHA \
administration links on all forms, except on administrative pages."
-msgstr ""
-
-#: captcha.admin.inc:110 captcha.module:107
-msgid "administer CAPTCHA settings"
-msgstr "administruoti CAPTCHA užduoÄių nustatymus"
-
-#: captcha.admin.inc:115
-msgid "Allow CAPTCHAs and CAPTCHA administration links on administrative pages"
-msgstr ""
-
-#: captcha.admin.inc:117
-msgid "This option makes it possible to add CAPTCHAs to forms on administrative \
pages. CAPTCHAs are disabled by default on administrative pages (which shouldn't be \
accessible to untrusted users normally) to avoid the related overhead. In some \
situations, e.g. in the case of demo sites, it can be usefull to allow CAPTCHAs on \
administrative pages."
-msgstr ""
-
-#: captcha.admin.inc:123
-msgid "Add a description to the CAPTCHA"
-msgstr ""
-
-#: captcha.admin.inc:124
-msgid "Add a configurable description to explain the purpose of the CAPTCHA to the \
visitor."
-msgstr ""
-
-#: captcha.admin.inc:132
-msgid "CAPTCHA description"
-msgstr ""
-
-#: captcha.admin.inc:133;149
-msgid "Configurable description of the CAPTCHA. An empty entry will reset the \
description."
-msgstr ""
-
-#: captcha.admin.inc:139
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Kalba %lang_name (kodas %lang_code)"
-
-#: captcha.admin.inc:148
-msgid "Challenge description"
-msgstr "Užduoties aprašymas"
-
-#: captcha.admin.inc:159
-msgid "Default CAPTCHA validation"
-msgstr ""
-
-#: captcha.admin.inc:160
-msgid "Define how the response should be processed by default. Note that the modules \
that provide the actual challenges can override or ignore this."
-msgstr ""
-
-#: captcha.admin.inc:162
-msgid "Case sensitive validation: the response has to exactly match the solution."
-msgstr ""
-
-#: captcha.admin.inc:163
-msgid "Case insensitive validation: lowercase/uppercase errors are ignored."
-msgstr ""
-
-#: captcha.admin.inc:171
-msgid "Persistence"
-msgstr "Veikimas"
-
-#: captcha.admin.inc:174
-msgid "Always add a challenge."
-msgstr "Visuomet pridėti užduotį."
-
-#: captcha.admin.inc:175
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Nerodyti užduoties prie formos, kuomet naudotojas jau sėkmingai \
išsprendė užduotį tai formai."
-
-#: captcha.admin.inc:176
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Nerodyti užduoÄių prie visų formų, kuomet naudotojas jau sÄ—kmingai \
išsprendė užduotį."
-
-#: captcha.admin.inc:178
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr "Nurodykite, ar užduotys neturėtų būti rodomos likusį sesijos laiką, \
jei naudotojas sėkmingai išsprendžia užduotį."
-
-#: captcha.admin.inc:184
-msgid "Log wrong responses"
-msgstr "Įrašyti neteisingus atsakymus"
-
-#: captcha.admin.inc:185
-msgid "Report information about wrong responses to the !log."
-msgstr "Pranešti apie neteisingus atsakymus !log."
-
-#: captcha.admin.inc:185
-msgid "log"
-msgstr "žurnale"
-
-#: captcha.admin.inc:192
-msgid "Save configuration"
-msgstr "Įrašyti konfigūraciją"
-
-#: captcha.admin.inc:202;342
-msgid "Challenge type"
-msgstr "Užduotis"
-
-#: captcha.admin.inc:202
-msgid "Operations"
-msgstr "Veiksmai"
-
-#: captcha.admin.inc:229;363
-msgid "Illegal form_id"
-msgstr "Negalimas form_id"
-
-#: captcha.admin.inc:255
-msgid "Added CAPTCHA point."
-msgstr "Kitų formų CAPTCHA užduotis pridėta."
-
-#: captcha.admin.inc:270
-msgid "Reset of CAPTCHA description for language %language."
-msgstr ""
-
-#: captcha.admin.inc:281
-msgid "Reset of CAPTCHA description."
-msgstr ""
-
-#: captcha.admin.inc:289
-msgid "The CAPTCHA settings were saved."
-msgstr "CAPTCHA užduoÄių nustatymai iÅ¡saugoti."
-
-#: captcha.admin.inc:321;335
-msgid "Form ID"
-msgstr "Formos ID"
-
-#: captcha.admin.inc:322;336
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Drupal form_id identifikatorius formos, prie kurios pridÄ—ti CAPTCHA \
užduotį."
-
-#: captcha.admin.inc:343
-msgid "The CAPTCHA type to use for this form"
-msgstr "CAPTCHA užduotis, naudojama šiai formai"
-
-#: captcha.admin.inc:352
-msgid "Save"
-msgstr "Saugoti"
-
-#: captcha.admin.inc:375
-msgid "Saved CAPTCHA point settings."
-msgstr "Kitų formų CAPTCHA užduoÄių nustatymai iÅ¡saugoti."
-
-#: captcha.admin.inc:392
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "Ar jūs esate įsitikinę, jog norite pašalinti CAPTCHA užduotį formai, \
kurios ID yra %form_id?"
-
-#: captcha.admin.inc:393
-msgid "Delete"
-msgstr "Pašalinti"
-
-#: captcha.admin.inc:396
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "Ar jūs esate įsitikinę, jog norite išjungti CAPTCHA užduotį formai, \
kurios ID yra %form_id?"
-
-#: captcha.admin.inc:397
-msgid "Disable"
-msgstr "IÅ¡jungti"
-
-#: captcha.admin.inc:410
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "Pašalinta formos %form_id CAPTCHA užduotis."
-
-#: captcha.admin.inc:414
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "Išjungta formos %form_id CAPTCHA užduotis."
-
-#: captcha.admin.inc:451
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Šis puslapis leidžia peržvelgti visas galimas užduotis, sugeneruotas su \
jų dabartiniais nustatymais."
-
-#: captcha.admin.inc:459
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Užduotis „%challenge", kurią suteikia modulis „%module""
-
-#: captcha.admin.inc:462
-msgid "10 more examples of this challenge."
-msgstr "10 papildomų šios užduoties pavyzdžių."
-
-#: captcha.inc:38
-msgid "Failed to set a CAPTCHA type for form %form_id: could not interpret value \
\"@captcha_type\""
-msgstr ""
-
-#: captcha.inc:145
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Šis klausimas yra skirtas įsitikinti, jog jūs esate žmogus, ir \
sustabdyti automatinį šlamšto siuntimą."
-
-#: captcha.module:31
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr "„CAPTCHA" yra anglų k. akronimas šiam pavadininimui: „Completely \
Automated Public Turing test to tell Computers and Humans Apart". Jis reiškia \
visiškai automatizuotą viešą Turingo testą, skirtą nustatyti ar vartotojas yra \
kompiuteris ar žmogus. Dažniausiai tai yra užduotis-atsakymas testas, kuris \
nustato ar vartotojas yra žmogus. CAPTCHA užduoties modulis yra įrankis padedantis \
kovoti su automatiniais įrašais, kuriuos padaro blogų tikslų turintys naudotojai, \
komentarų, naudotojų registravimo, sveÄių knygos ir kitose formose. JÅ«s galite \
prie pasirinktų formų pridėti papildomą užduotį, kuri žmonėms turėtų būti \
lengvai teisingai išsprendžiama, bet pakankamai sudėtinga automatizuotiems \
scenarijams ir šlamštą platinantiems botams."
-
-#: captcha.module:32
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr ""
-
-#: captcha.module:35
-msgid "Location of comment submission form"
-msgstr "Location of comment submission form"
-
-#: captcha.module:36
-msgid "Display on separate page"
-msgstr "Rodyti atskirame puslapyje"
-
-#: captcha.module:40
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA yra Carnegie Mellon University prekinis ženklas."
-
-#: captcha.module:45
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr ""
-
-#: captcha.module:47
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr ""
-
-#: captcha.module:48;107
-msgid "skip CAPTCHA"
-msgstr "praleisti CAPTCHA užduotį"
-
-#: (duplicate) captcha.module:269;322;119 ;222;442;60;71 captcha.info:0
-#: image_captcha/image_captcha.user.inc:29;72
-#: image_captcha/image_captcha.module:94
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: captcha.module:327
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr ""
-
-#: captcha.module:328
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr "Nepatikimi naudotojai Äia matys CAPTCHA užduotį (!settings)."
-
-#: captcha.module:329
-msgid "general CAPTCHA settings"
-msgstr "bendri CAPTCHA užduoties nustatymai"
-
-#: captcha.module:333
-msgid "Enabled challenge"
-msgstr "Užduotis įjungta"
-
-#: captcha.module:334
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr ""
-
-#: captcha.module:337
-msgid "change"
-msgstr "keisti"
-
-#: captcha.module:338
-msgid "disable"
-msgstr "išjungti"
-
-#: captcha.module:343 image_captcha/image_captcha.admin.inc:49
-msgid "Example"
-msgstr ""
-
-#: captcha.module:344
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr ""
-
-#: captcha.module:353
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA užduotis: nÄ—ra įjungtų užduoÄių"
-
-#: captcha.module:355
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Čia rodyti CAPTCHA užduotį nepatikimiems naudotojams."
-
-#: captcha.module:417
-msgid "CAPTCHA test failed (unknown csid)."
-msgstr "CAPTCHA užduoties bandymas nepavyko (nežinomas csid)."
-
-#: captcha.module:437
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "Jūsų įvestas CAPTCHA užduoties atsakymas buvo neteisingas."
-
-#: captcha.module:524
-msgid "Math question"
-msgstr ""
-
-#: captcha.module:525
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Išspręskite šią paprastą matematinę užduotį ir įveskite atsakymą. \
Pvz., jei užduotis yra 1+3, įveskite 4."
-
-#: captcha.module:526
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-#: captcha.module:545
-msgid "Test one two three"
-msgstr ""
-
-#: captcha.module:222
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr ""
-
-#: captcha.module:442
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr "%form_id įrašas užblokuotas CAPTCHA modulio: užduotis „%challenge" \
(modulis „%module"), naudotojas atsakė „%response", bet sprendimas buvo \
„%solution"."
-
-#: captcha.module:120
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] ""
-msgstr[1] ""
-
-#: captcha.module:61
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Nustatykite kur ir kada naudoti CAPTCHA užduotis."
-
-#: captcha.module:77
-msgid "General settings"
-msgstr "Bendri nustatymai"
-
-#: captcha.module:83
-msgid "Examples"
-msgstr "Pavyzdžiai"
-
-#: captcha.module:84
-msgid "An overview of the available challenge types with examples."
-msgstr "Galimų užduoÄių su pavyzdžiais apžvalga."
-
-#: captcha.module:93
-msgid "CAPTCHA point administration"
-msgstr "Kitų formų CAPTCHA užduoÄių administravimas"
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr "Nepalaikoma duomenų bazė."
-
-#: (duplicate) captcha.install:115
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr "Dabar jūs galite <a href=\"!captcha_admin\">sukonfigūruoti CAPTCHA \
užduoties modulį</a> savo svetainei."
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr "Pagrindinis CAPTCHA užduoties modulis, leidžiantis pridėti užduotis prie \
pasirinktų formų."
-
-#: captcha.info:0 image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr "Šlamšto kontrolė"
-
-#: image_captcha/image_captcha.admin.inc:13
-msgid "Built-in font"
-msgstr "Vidinis Å¡riftas"
-
-#: image_captcha/image_captcha.admin.inc:39
-msgid "The Image CAPTCHA module can not generate images because your PHP setup does \
not support it (no <a href=\"!gdlib\">GD library</a>)."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:50
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:61
-msgid "Code settings"
-msgstr "Kodo nustatymai"
-
-#: image_captcha/image_captcha.admin.inc:65
-msgid "Characters to use in the code"
-msgstr "Kode naudojami rašmenys"
-
-#: image_captcha/image_captcha.admin.inc:70
-msgid "Code length"
-msgstr "Kodo ilgis"
-
-#: image_captcha/image_captcha.admin.inc:73
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr "Kodo ilgis daro įtaką paveikslėlio dydžiui. Reikia pastebėti, kad \
didesnės reikšmės reiškia daugiau darbo procesoriui generuojant \
paveikslÄ—lius."
-
-#: image_captcha/image_captcha.admin.inc:79
-msgid "Font settings"
-msgstr "Å rifto nustatymai"
-
-#: image_captcha/image_captcha.admin.inc:85
-msgid "Font"
-msgstr "Å riftas"
-
-#: image_captcha/image_captcha.admin.inc:87
-msgid "The TrueType font (.ttf) to use for the text in the image CAPTCHA."
-msgstr "TrueType Å¡riftas (.ttf), naudojamas tekstui vaizdinÄ—je CAPTCHA \
užduotyje."
-
-#: image_captcha/image_captcha.admin.inc:96
-msgid "Font size"
-msgstr "Å rifto dydis"
-
-#: image_captcha/image_captcha.admin.inc:98
-msgid "tiny"
-msgstr "mažytis"
-
-#: image_captcha/image_captcha.admin.inc:99;158
-msgid "small"
-msgstr "mažas"
-
-#: image_captcha/image_captcha.admin.inc:101;125;185
-msgid "normal"
-msgstr "normalus"
-
-#: image_captcha/image_captcha.admin.inc:103
-msgid "large"
-msgstr "didelis"
-
-#: image_captcha/image_captcha.admin.inc:105
-msgid "extra large"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:108
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr "Šrifto dydis daro įtaką paveikslėlio dydžiui. Reikia pastebėti, kad \
didesnis paveikslėlis reiškia daugiau darbo procesoriui generuojant \
jį."
-
-#: image_captcha/image_captcha.admin.inc:120
-msgid "Character spacing"
-msgstr "Tarpų plotis tarp simbolių"
-
-#: image_captcha/image_captcha.admin.inc:121
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr "Nustatykite vidutinį tarpą tarp simbolių. Reikia pastebėti, kad didesnis \
paveikslėlis reiškia daugiau darbo procesoriui generuojant jį."
-
-#: image_captcha/image_captcha.admin.inc:124
-msgid "tight"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:126
-msgid "wide"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:127
-msgid "extra wide"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:134
-msgid "Color settings"
-msgstr "Spalvų nustatymai"
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "Configuration of the background and text colors in the image CAPTCHA."
-msgstr "Fono ir teksto spalvų vaizdinėje CAPTCHA užduotyje konfigūravimas."
-
-#: image_captcha/image_captcha.admin.inc:139
-msgid "Background color"
-msgstr "Fono spalva"
-
-#: image_captcha/image_captcha.admin.inc:140
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90)."
-msgstr "Įveskite šešioliktainį fono spalvos kodą, pvz., #FFF ar #FFCE90."
-
-#: image_captcha/image_captcha.admin.inc:147
-msgid "Text color"
-msgstr "Teksto"
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr "Įveskite šešioliktainį teksto spalvos kodą, pvz., #000 ar #004283."
-
-#: image_captcha/image_captcha.admin.inc:155
-msgid "Additional variation of text color"
-msgstr "Papildomas teksto spalvos variavimas"
-
-#: image_captcha/image_captcha.admin.inc:159;183
-msgid "moderate"
-msgstr "vidutinis"
-
-#: image_captcha/image_captcha.admin.inc:160;187;221
-msgid "high"
-msgstr "aukštas"
-
-#: image_captcha/image_captcha.admin.inc:161
-msgid "very high"
-msgstr "labai aukštas"
-
-#: image_captcha/image_captcha.admin.inc:164
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr "Skirtingi simboliai turės atsitiktines spalvas, parenkamas iš panašių į \
nurodytÄ… teksto spalvÄ…."
-
-#: image_captcha/image_captcha.admin.inc:171
-msgid "Distortion and noise"
-msgstr "Iškraipymas ir triukšmas"
-
-#: image_captcha/image_captcha.admin.inc:172
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr "Šiuo nustatymu jūs galite valdyti apgadinimo lygį iškraipant ir \
pridedant triukšmą. Nepersistenkite su apgadinimu ir įsitikinkite, kad kodas yra \
perskaitomas. Pvz., kartu nenaudokite aukštų iškraipymo ir \
triukšmo lygių."
-
-#: image_captcha/image_captcha.admin.inc:177
-msgid "Distortion level"
-msgstr "IÅ¡kraipymo lygis"
-
-#: image_captcha/image_captcha.admin.inc:181;217
-msgid "low"
-msgstr "žemas"
-
-#: image_captcha/image_captcha.admin.inc:189;223
-msgid "severe"
-msgstr "milžiniškas"
-
-#: image_captcha/image_captcha.admin.inc:192
-msgid "Set the degree of wave distortion in the image."
-msgstr "Nustatykite paveikslėlio iškraipymo bangelėmis lygį."
-
-#: image_captcha/image_captcha.admin.inc:196
-msgid "Smooth distortion"
-msgstr "Išlyginimo iškraipymas"
-
-#: image_captcha/image_captcha.admin.inc:198
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Šis nustatymas įjungia „bilinear" iškraipymų interpoliaciją. Tai \
paveikslėlį daro glotnesnį, bet labiau apkrauna procesorių"
-
-#: image_captcha/image_captcha.admin.inc:203
-msgid "Add salt and pepper noise"
-msgstr "Druskos ir pipirų triukšmas"
-
-#: image_captcha/image_captcha.admin.inc:205
-msgid "This option adds randomly colored point noise."
-msgstr "Šis nustatymas prideda atsitiktinės spalvos taškinį triukšmą."
-
-#: image_captcha/image_captcha.admin.inc:209
-msgid "Add line noise"
-msgstr "Linijinis triukšmas"
-
-#: image_captcha/image_captcha.admin.inc:211
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Šis nustatymas įjungia ant tekstinio kodo atsitiktinai piešiamas \
linijas."
-
-#: image_captcha/image_captcha.admin.inc:215
-msgid "Noise level"
-msgstr "Triukšmo lygis"
-
-#: image_captcha/image_captcha.admin.inc:219
-msgid "medium"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:240
-msgid "The Image CAPTCHA module can not use True Type fonts because your PHP setup \
does not support it. There is only a built-in bitmap font available."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:245
-msgid "The image CAPTCHA module works best with a TrueType font file (TTF) for \
generating the images, but because of licencing issues it is not allowed to package \
fonts with the module. A simple built-in bitmap font is provided as default instead. \
You can install TrueType fonts yourself by putting them in the fonts directory of the \
image CAPTCHA module (directory \"%fontsdir\") or by uploading them to your Drupal \
file system (directory \"%filesdir\") with for example the upload \
module."
-msgstr "Vaizdinės CAPTCHA užduoties modulis geriausiai veikia su su TrueType \
šriftų failais (TTF) paveikslėlių generavimui, bet dėl licencijavimo ypatybių \
negalima šriftų platinti kartu su moduliu. Vietoje to paprastas taškinės grafikos \
šriftas yra pridedamas kaip numatytas. Jūs patys galite įdiegti TrueType šriftus \
padėdami juos vaizdinės CAPTCHA užduoties modulio šriftų aplanke „%fontsdir" \
arba atsiųsdami juos į jūsų Drupal failų sistemos aplanką „%filesdir" \
pasinaudojÄ™ atsiuntimo moduliu."
-
-#: image_captcha/image_captcha.admin.inc:248
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr "Nerekomenduojama naudoti pateikiamą taškinės grafikos šriftą dėl jo \
mažo dydžio ir UTF-8 nepalaikymo."
-
-#: image_captcha/image_captcha.admin.inc:259
-msgid "The list of characters to use should not contain spaces."
-msgstr "Rašmenų sąraše neturi būti tarpų."
-
-#: image_captcha/image_captcha.admin.inc:264
-msgid "You need to select a font"
-msgstr "JÅ«s turite pasirinkti Å¡riftÄ…"
-
-#: image_captcha/image_captcha.admin.inc:267
-msgid "Font does not exist or is not readable."
-msgstr "Å riftas neegzistuoja ar yra neperskaitomas."
-
-#: image_captcha/image_captcha.admin.inc:272
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Fono spalva nėra galima šešioliktainė spalvos vertė."
-
-#: image_captcha/image_captcha.admin.inc:275
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Teksto spalva nėra galima šešioliktainė spalvos vertė."
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr "Vaizdinės CAPTCHA užduoties generavimas nepavyko. Patikrinkite savo \
vaizdinės CAPTCHA užduoties konfigūraciją, atkreipkite dėmesį į naudojamus \
Å¡riftus."
-
-#: image_captcha/image_captcha.user.inc:72
-msgid "Could not find or read the configured font (\"%font\") for the image \
CAPTCHA."
-msgstr ""
-
-#: image_captcha/image_captcha.module:28
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr "Vaizdinė CAPTCHA užduotis, kur atsitiktinis tekstinis kodas yra \
apgadinamas paveikslÄ—lyje, yra labai plaÄiai naudojama. PaveikslÄ—lis yra \
sugeneruojamas kiekvienai užklausai, dėl to tai gana stipriai apkrauna serverio \
procesorių. BÅ«kite atsargÅ«s su dydžio ir skaiÄiavimų \
nustatymais."
-
-#: image_captcha/image_captcha.module:166
-msgid "Enter the characters shown in the image. Ignore spaces and be careful about \
upper and lower case."
-msgstr "Ä®veskite paveikslÄ—lyje esanÄius simbolius. Tarpų nepaisykite ir bÅ«kite \
atidūs su didžiosiomis ir mažosiomis raidėmis."
-
-#: image_captcha/image_captcha.module:169
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr "Ä®veskite paveikslÄ—lyje esanÄius simbolius be tarpų."
-
-#: image_captcha/image_captcha.module:179;179;40
-#: image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr "Vaizdinė CAPTCHA užduotis"
-
-#: image_captcha/image_captcha.module:184
-msgid "What code is in the image?"
-msgstr "Koks kodas yra paveikslÄ—lyje?"
-
-#: image_captcha/image_captcha.module:94
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "Prieitas negalimas baitas dalijant UTF8 simbolių eilutę į simbolius."
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "Suteikia vaizdinę CAPTCHA užduotį."
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/nl.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/nl.po deleted file \
mode 100644 index 0ce8a10..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/nl.po
+++ /dev/null
@@ -1,658 +0,0 @@
-# $Id: nl.po,v 1.8 2009/07/11 17:30:39 soxofaan Exp $
-#
-# Dutch translation of Drupal (general)
-# Copyright 2009 Stefaan Lippens
-# Generated from files:
-# captcha.admin.inc,v 1.20 2009/04/27 20:35:08 soxofaan
-# image_captcha.admin.inc,v 1.17 2009/04/24 22:16:48 soxofaan
-# captcha.module,v 1.83 2009/04/27 20:35:08 soxofaan
-# captcha.inc,v 1.1 2009/04/07 22:06:50 soxofaan
-# captcha.info,v 1.7 2008/02/17 12:49:24 soxofaan
-# image_captcha.user.inc,v 1.19 2009/04/24 22:16:48 soxofaan
-# image_captcha.module,v 1.22 2009/04/15 01:41:35 soxofaan
-# captcha.install,v 1.9 2009/03/22 20:06:39 soxofaan
-# image_captcha.info,v 1.5 2008/02/17 12:49:24 soxofaan
-msgid ""
-msgstr ""
-"Project-Id-Version: nl\n"
-"POT-Creation-Date: 2009-07-03 15:01+0200\n"
-"PO-Revision-Date: 2009-04-28 00:26+0100\n"
-"Last-Translator: soxofaan\n"
-"Language-Team: Dutch\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-#: captcha.admin.inc:16 image_captcha/image_captcha.admin.inc:157;179
-msgid "none"
-msgstr "geen"
-
-#: captcha.admin.inc:17
-msgid "default challenge type"
-msgstr "standaard CAPTCHA-type"
-
-#: captcha.admin.inc:23
-msgid "@type (from module @module)"
-msgstr ""
-
-#: captcha.admin.inc:42
-msgid "Form protection"
-msgstr "Formulierbescherming"
-
-#: captcha.admin.inc:43
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with \
textfield at the bottom of the table or with the help of the '%CAPTCHA_admin_links' \
option below."
-msgstr ""
-
-#: captcha.admin.inc:44;108 captcha.module:46
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Voeg CAPTCHA-configuratielinks toe aan de formulieren."
-
-#: captcha.admin.inc:49
-msgid "Default challenge type"
-msgstr "Standaard CAPTCHA-type"
-
-#: captcha.admin.inc:50
-msgid "Select the default challenge type for CAPTCHAs. This can be overriden for \
each form if desired."
-msgstr ""
-
-#: captcha.admin.inc:86
-msgid "delete"
-msgstr "verwijderen"
-
-#: captcha.admin.inc:110
-msgid "This option makes it easy to manage CAPTCHA settings on forms. When enabled, \
users with the \"%admincaptcha\" permission will see a fieldset with CAPTCHA \
administration links on all forms, except on administrative pages."
-msgstr "Deze optie is handig om CAPTCHA's te beheren op formulieren. Wanneer deze \
optie ingeschakeld is, zien gebruikers met de \"%admincaptcha\" permissie de \
CAPTCHA-configuratielinks op alle formulieren, met uitzondering van de \
beheerpagina's."
-
-#: captcha.admin.inc:110 captcha.module:107
-msgid "administer CAPTCHA settings"
-msgstr "CAPTCHA-instellingen beheren"
-
-#: captcha.admin.inc:115
-msgid "Allow CAPTCHAs and CAPTCHA administration links on administrative pages"
-msgstr "Laat CAPTCHA's en CAPTCHA-configuratielinks toe op beheerspagina's."
-
-#: captcha.admin.inc:117
-msgid "This option makes it possible to add CAPTCHAs to forms on administrative \
pages. CAPTCHAs are disabled by default on administrative pages (which shouldn't be \
accessible to untrusted users normally) to avoid the related overhead. In some \
situations, e.g. in the case of demo sites, it can be usefull to allow CAPTCHAs on \
administrative pages."
-msgstr "Deze optie maakt het mogelijk om CAPTCHA's toe te voegen aan formulieren op \
beheerspagina's. CAPTCHA's zijn standaard afwezig op beheerspagina's (die normaal \
gezien niet toegankelijk zijn voor onbetrouwbare bezoekers) om de gerelateerde \
overhead te vermijden. In sommige situaties, zoals bij demo-websites kan het nuttig \
zijn om CAPTCHA's toe te laten op beheerspagina's."
-
-#: captcha.admin.inc:123
-msgid "Add a description to the CAPTCHA"
-msgstr "Een beschrijving toevoegen aan de CAPTCHA"
-
-#: captcha.admin.inc:124
-msgid "Add a configurable description to explain the purpose of the CAPTCHA to the \
visitor."
-msgstr "Voeg een instelbare beschrijving toe om de bedoeling van de CAPTCHA uit te \
leggen aan de bezoeker."
-
-#: captcha.admin.inc:132
-msgid "CAPTCHA description"
-msgstr "CAPTCHA-beschrijving"
-
-#: captcha.admin.inc:133;149
-msgid "Configurable description of the CAPTCHA. An empty entry will reset the \
description."
-msgstr ""
-
-#: captcha.admin.inc:139
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Voor taal %lang_name (code %lang_code)"
-
-#: captcha.admin.inc:148
-msgid "Challenge description"
-msgstr "CAPTCHA-beschrijving"
-
-#: captcha.admin.inc:159
-msgid "Default CAPTCHA validation"
-msgstr "Standaard CAPTCHA-validatie"
-
-#: captcha.admin.inc:160
-msgid "Define how the response should be processed by default. Note that the modules \
that provide the actual challenges can override or ignore this."
-msgstr ""
-
-#: captcha.admin.inc:162
-msgid "Case sensitive validation: the response has to exactly match the solution."
-msgstr ""
-
-#: captcha.admin.inc:163
-msgid "Case insensitive validation: lowercase/uppercase errors are ignored."
-msgstr ""
-
-#: captcha.admin.inc:171
-msgid "Persistence"
-msgstr "CAPTCHA-volharding"
-
-#: captcha.admin.inc:174
-msgid "Always add a challenge."
-msgstr "Steeds een CAPTCHA voorschotelen."
-
-#: captcha.admin.inc:175
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "CAPTCHA achterwege laten eens de gebruiker een CAPTCHA juist beantwoorde \
voor het formulier."
-
-#: captcha.admin.inc:176
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "CAPTCHA achterwege laten eens de gebruiker een CAPTCHA juist beantwoorde \
ergens op de site."
-
-#: captcha.admin.inc:178
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr ""
-
-#: captcha.admin.inc:184
-msgid "Log wrong responses"
-msgstr "Hou foute anwoorden bij"
-
-#: captcha.admin.inc:185
-msgid "Report information about wrong responses to the !log."
-msgstr "Informatie omtrent foute CAPTCHA-antwoorden worden bijgehouden in het !log."
-
-#: captcha.admin.inc:185
-msgid "log"
-msgstr "log"
-
-#: captcha.admin.inc:192
-msgid "Save configuration"
-msgstr ""
-
-#: captcha.admin.inc:202;342
-msgid "Challenge type"
-msgstr "CAPTCHA-type"
-
-#: captcha.admin.inc:202
-msgid "Operations"
-msgstr "Bewerkingen"
-
-#: captcha.admin.inc:229;363
-msgid "Illegal form_id"
-msgstr "Ongeldig form_id"
-
-#: captcha.admin.inc:255
-msgid "Added CAPTCHA point."
-msgstr "CAPTCHA point instellingen zijn bewaard."
-
-#: captcha.admin.inc:270
-msgid "Reset of CAPTCHA description for language %language."
-msgstr ""
-
-#: captcha.admin.inc:281
-msgid "Reset of CAPTCHA description."
-msgstr ""
-
-#: captcha.admin.inc:289
-msgid "The CAPTCHA settings were saved."
-msgstr "De CAPTCHA-instellingen werden opgeslagen."
-
-#: captcha.admin.inc:321;335
-msgid "Form ID"
-msgstr "Form ID"
-
-#: captcha.admin.inc:322;336
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Het Drupal form_id van het formulier waaraan de CAPTCHA toegevoegd moet \
worden."
-
-#: captcha.admin.inc:343
-msgid "The CAPTCHA type to use for this form"
-msgstr "Het CAPTCHA-type te gebruiken voor dit formulier"
-
-#: captcha.admin.inc:352
-msgid "Save"
-msgstr "Bewaren"
-
-#: captcha.admin.inc:375
-msgid "Saved CAPTCHA point settings."
-msgstr "CAPTCHA-point-instellingen zijn bewaard."
-
-#: captcha.admin.inc:392
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "Bent u zeker dat u de CAPTCHA voor het formulier met form_id %form_id wilt \
verwijderen?"
-
-#: captcha.admin.inc:393
-msgid "Delete"
-msgstr "Verwijderen"
-
-#: captcha.admin.inc:396
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "Bent u zeker dat u de CAPTCHA voor het formulier met form_id %form_id wilt \
uitschakelen?"
-
-#: captcha.admin.inc:397
-msgid "Disable"
-msgstr "Uitschakelen"
-
-#: captcha.admin.inc:410
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "CAPTCHA verwijderd voor formulier %form_id."
-
-#: captcha.admin.inc:414
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "CAPTCHA uitgeschakeld voor formulier %form_id."
-
-#: captcha.admin.inc:451
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Deze pagina geeft een overzicht van de beschikbare CAPTCHA types, \
gegenereerd met hun huidige instellingen."
-
-#: captcha.admin.inc:459
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Uitdaging \"%challenge\" van module \"%module\""
-
-#: captcha.admin.inc:462
-msgid "10 more examples of this challenge."
-msgstr "10 extra voorbeelden van deze uitdaging."
-
-#: captcha.inc:38
-msgid "Failed to set a CAPTCHA type for form %form_id: could not interpret value \
\"@captcha_type\""
-msgstr ""
-
-#: captcha.inc:145
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Deze vraag wordt gebruikt om te testen indien u een menselijke bezoeker bent \
teneinde spam-inzendingen te vermijden."
-
-#: captcha.module:31
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr ""
-
-#: captcha.module:32
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr ""
-
-#: captcha.module:35
-msgid "Location of comment submission form"
-msgstr ""
-
-#: captcha.module:36
-msgid "Display on separate page"
-msgstr ""
-
-#: captcha.module:40
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA is een trademark van Carnegie Mellon University."
-
-#: captcha.module:45
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr "Een CAPTCHA kan toegevoegd worden aan zowat elk Drupal formulier. Sommige \
standaard formulieren zijn reeds beschikbaar in de formulier-lijst, maar willekeurige \
formulieren kunnen eenvoudig toegevoegd en beheerd worden indien de optie \
\"%adminlinks\" actief is."
-
-#: captcha.module:47
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr "Gebruikers met de \"%skipcaptcha\" <a href=\"@perm\">permissie</a> krijgen \
geen CAPTCHA voorgeschoteld. Verleen deze permissie aan de betrouwbare gebruikers \
(b.v websitebeheerders). Indien u de CAPTCHA's wil testen, doe het dan als gebruiker \
zonder de \"%skipcaptcha\" permissie (b.v. als anonyme gebruiker)."
-
-#: captcha.module:48;107
-msgid "skip CAPTCHA"
-msgstr "CAPTCHA overslaan"
-
-#: (duplicate) captcha.module:269;322;119 ;222;442;60;71 captcha.info:0
-#: image_captcha/image_captcha.user.inc:29;72
-#: image_captcha/image_captcha.module:94
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: captcha.module:327
-msgid "CAPTCHA: challenge \"@type\" enabled"
-msgstr "CAPTCHA: beschermd met uitdaging \"@type\""
-
-#: captcha.module:328
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr "Onbetrouwbare gebruikers zien hier een CAPTCHA (!settings)."
-
-#: captcha.module:329
-msgid "general CAPTCHA settings"
-msgstr "algemene CAPTCHA instellingen"
-
-#: captcha.module:333
-msgid "Enabled challenge"
-msgstr "Ingeschakkelde uitdaging:"
-
-#: captcha.module:334
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr "\"@type\" door module \"@module\" (!change, !disable)"
-
-#: captcha.module:337
-msgid "change"
-msgstr "wijzigen"
-
-#: captcha.module:338
-msgid "disable"
-msgstr "uitschakelen"
-
-#: captcha.module:343 image_captcha/image_captcha.admin.inc:49
-msgid "Example"
-msgstr "Voorbeeld"
-
-#: captcha.module:344
-msgid "This is a pre-solved, non-blocking example of this challenge."
-msgstr "Dit is een op voorhand opgelost en niet blokkerend voorbeeld van deze \
uitdaging."
-
-#: captcha.module:353
-msgid "CAPTCHA: no challenge enabled"
-msgstr "CAPTCHA: geen uitdaging"
-
-#: captcha.module:355
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "CAPTCHA plaatsen voor onbetrouwbare gebruikers."
-
-#: captcha.module:417
-msgid "CAPTCHA test failed (unknown csid)."
-msgstr "CAPTCHA-test faalde (ongekende csid)."
-
-#: captcha.module:437
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "Het antwoord dat u opgaf voor de CAPTCHA was niet juist."
-
-#: captcha.module:524
-msgid "Math question"
-msgstr "Wiskunde vraag"
-
-#: captcha.module:525
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Los deze eenvoudige rekenoefening op en voer het resultaat in. Bijvoorbeeld: \
voor 1+3, voer 4 in."
-
-#: captcha.module:526
-msgid "@x + @y = "
-msgstr ""
-
-#: captcha.module:545
-msgid "Test one two three"
-msgstr ""
-
-#: captcha.module:222
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr "CAPTCHA probleem: Bij het opvragen van CAPTCHA type %type voor het fomulier \
%form_id, gaf hook_captcha() van de module %module geen waarde \
terug."
-
-#: captcha.module:442
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr ""
-
-#: captcha.module:120
-msgid "Already 1 blocked form submission"
-msgid_plural "Already @count blocked form submissions"
-msgstr[0] "Reeds 1 tegengehouden formulierinzending"
-msgstr[1] "Reeds @counter tegengehouden formulierinzendingen"
-
-#: captcha.module:61
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "Configureer hoe en waar CAPTCHA's gebruikt worden."
-
-#: captcha.module:77
-msgid "General settings"
-msgstr "Algemene instellingen"
-
-#: captcha.module:83
-msgid "Examples"
-msgstr "Voorbeelden"
-
-#: captcha.module:84
-msgid "An overview of the available challenge types with examples."
-msgstr "Overzicht van de beschikbare CAPTCHA-types met voorbeelden."
-
-#: captcha.module:93
-msgid "CAPTCHA point administration"
-msgstr "CAPTCHA-point-beheer"
-
-#: captcha.install:156
-msgid "Unsupported database."
-msgstr "Databank type is niet ondersteund."
-
-#: (duplicate) captcha.install:115
-msgid "You can now <a href=\"!captcha_admin\">configure the CAPTCHA module</a> for \
your site."
-msgstr "U kan nu <a href=\"!captcha_admin\">de CAPTCHA module instellen</a> voor uw \
site."
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr "Basis CAPTCHA module om uitdagingen aan allerlei formulieren toe te voegen."
-
-#: captcha.info:0 image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr "Spamcontrole"
-
-#: image_captcha/image_captcha.admin.inc:13
-msgid "Built-in font"
-msgstr "Ingebouwd lettertype"
-
-#: image_captcha/image_captcha.admin.inc:39
-msgid "The Image CAPTCHA module can not generate images because your PHP setup does \
not support it (no <a href=\"!gdlib\">GD library</a>)."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:50
-msgid "Presolved image CAPTCHA example, generated with the current settings."
-msgstr "Reeds opgeloste afbeelding-CAPTCHA, gegenereerd met de huidige \
instellingen:"
-
-#: image_captcha/image_captcha.admin.inc:61
-msgid "Code settings"
-msgstr "Code-instellingen"
-
-#: image_captcha/image_captcha.admin.inc:65
-msgid "Characters to use in the code"
-msgstr "Karakters die in de afbeelding kunnen verschijnen"
-
-#: image_captcha/image_captcha.admin.inc:70
-msgid "Code length"
-msgstr "Codelengte"
-
-#: image_captcha/image_captcha.admin.inc:73
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr "De code lengte beïnvloedt de afmetingen van de afbeelding. Hou er \
rekening mee dat grotere waarden het genereren van de afbeeldingen CPU-intensiever \
maakt."
-
-#: image_captcha/image_captcha.admin.inc:79
-msgid "Font settings"
-msgstr "Lettertype-instellingen"
-
-#: image_captcha/image_captcha.admin.inc:85
-msgid "Font"
-msgstr "Lettertype"
-
-#: image_captcha/image_captcha.admin.inc:87
-msgid "The TrueType font (.ttf) to use for the text in the image CAPTCHA."
-msgstr "Het TrueType font (.ttf) te gebruiken vor de afbeelding-CAPTCHA"
-
-#: image_captcha/image_captcha.admin.inc:96
-msgid "Font size"
-msgstr "Lettertypegrootte"
-
-#: image_captcha/image_captcha.admin.inc:98
-msgid "tiny"
-msgstr "zeer klein"
-
-#: image_captcha/image_captcha.admin.inc:99;158
-msgid "small"
-msgstr "klein"
-
-#: image_captcha/image_captcha.admin.inc:101;125;185
-msgid "normal"
-msgstr "normaal"
-
-#: image_captcha/image_captcha.admin.inc:103
-msgid "large"
-msgstr "groot"
-
-#: image_captcha/image_captcha.admin.inc:105
-msgid "extra large"
-msgstr "extra groot"
-
-#: image_captcha/image_captcha.admin.inc:108
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:120
-msgid "Character spacing"
-msgstr "Karakter spatiëring"
-
-#: image_captcha/image_captcha.admin.inc:121
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:124
-msgid "tight"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:126
-msgid "wide"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:127
-msgid "extra wide"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:134
-msgid "Color settings"
-msgstr "Kleurinstellingen"
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "Configuration of the background and text colors in the image CAPTCHA."
-msgstr "Configuratie van de achtergrond- en tekstkleuren in de beeld-CAPTCHA."
-
-#: image_captcha/image_captcha.admin.inc:139
-msgid "Background color"
-msgstr "Achtergrondkleur"
-
-#: image_captcha/image_captcha.admin.inc:140
-msgid "Enter the hexadecimal code for the background color (e.g. #FFF or #FFCE90)."
-msgstr "Geef de hexadecimale code op voor de achtergrondkleur (e.g. #FFF of \
#FFCE90)."
-
-#: image_captcha/image_captcha.admin.inc:147
-msgid "Text color"
-msgstr "Tekstkleur"
-
-#: image_captcha/image_captcha.admin.inc:148
-msgid "Enter the hexadecimal code for the text color (e.g. #000 or #004283)."
-msgstr "Geed de hexadecimale code op voor de tekstkleur (e.g. #000 of #004283)."
-
-#: image_captcha/image_captcha.admin.inc:155
-msgid "Additional variation of text color"
-msgstr "Bijkomende varitatie op de tekstkleur"
-
-#: image_captcha/image_captcha.admin.inc:159;183
-msgid "moderate"
-msgstr "matig"
-
-#: image_captcha/image_captcha.admin.inc:160;187;221
-msgid "high"
-msgstr "hoog"
-
-#: image_captcha/image_captcha.admin.inc:161
-msgid "very high"
-msgstr "zeer hoog"
-
-#: image_captcha/image_captcha.admin.inc:164
-msgid "The different characters will have randomized colors in the specified range \
around the text color."
-msgstr "De verschillende karakters zullen een willekeurig kleur hebben in het \
opgegeven bereik rond de tekstkleur."
-
-#: image_captcha/image_captcha.admin.inc:171
-msgid "Distortion and noise"
-msgstr "Vervorming en ruis"
-
-#: image_captcha/image_captcha.admin.inc:172
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:177
-msgid "Distortion level"
-msgstr "Vervormingsniveau"
-
-#: image_captcha/image_captcha.admin.inc:181;217
-msgid "low"
-msgstr "laag"
-
-#: image_captcha/image_captcha.admin.inc:189;223
-msgid "severe"
-msgstr "ernstig"
-
-#: image_captcha/image_captcha.admin.inc:192
-msgid "Set the degree of wave distortion in the image."
-msgstr "Stel de graad van golfverorming van het beeld in."
-
-#: image_captcha/image_captcha.admin.inc:196
-msgid "Smooth distortion"
-msgstr "Vloeiende vervorming"
-
-#: image_captcha/image_captcha.admin.inc:198
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:203
-msgid "Add salt and pepper noise"
-msgstr "Zout- en peperruis toevoegen"
-
-#: image_captcha/image_captcha.admin.inc:205
-msgid "This option adds randomly colored point noise."
-msgstr "Deze optie voegt lukraak gekleurde puntruis toe."
-
-#: image_captcha/image_captcha.admin.inc:209
-msgid "Add line noise"
-msgstr "Lijn-ruis toevoegen"
-
-#: image_captcha/image_captcha.admin.inc:211
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Deze optie voegt lukraak getekende lijnen toe."
-
-#: image_captcha/image_captcha.admin.inc:215
-msgid "Noise level"
-msgstr "Ruisniveau"
-
-#: image_captcha/image_captcha.admin.inc:219
-msgid "medium"
-msgstr "medium"
-
-#: image_captcha/image_captcha.admin.inc:240
-msgid "The Image CAPTCHA module can not use True Type fonts because your PHP setup \
does not support it. There is only a built-in bitmap font available."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:245
-msgid "The image CAPTCHA module works best with a TrueType font file (TTF) for \
generating the images, but because of licencing issues it is not allowed to package \
fonts with the module. A simple built-in bitmap font is provided as default instead. \
You can install TrueType fonts yourself by putting them in the fonts directory of the \
image CAPTCHA module (directory \"%fontsdir\") or by uploading them to your Drupal \
file system (directory \"%filesdir\") with for example the upload \
module."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:248
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:259
-msgid "The list of characters to use should not contain spaces."
-msgstr "De karakterlijst mag geen spaties bevatten."
-
-#: image_captcha/image_captcha.admin.inc:264
-msgid "You need to select a font"
-msgstr "U dient een lettertype te selecteren"
-
-#: image_captcha/image_captcha.admin.inc:267
-msgid "Font does not exist or is not readable."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:272
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Achtergrondkleur is geen geldige hexadecimale kleurwaarde."
-
-#: image_captcha/image_captcha.admin.inc:275
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Tekstkleur is geen geldige hexadecimale kleurwaarde."
-
-#: image_captcha/image_captcha.user.inc:29
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr ""
-
-#: image_captcha/image_captcha.user.inc:72
-msgid "Could not find or read the configured font (\"%font\") for the image \
CAPTCHA."
-msgstr ""
-
-#: image_captcha/image_captcha.module:28
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr ""
-
-#: image_captcha/image_captcha.module:166
-msgid "Enter the characters shown in the image. Ignore spaces and be careful about \
upper and lower case."
-msgstr "Vul de letters in uit de afbeelding. Negeer spaties en let op het gebruik \
van hoofdletters."
-
-#: image_captcha/image_captcha.module:169
-msgid "Enter the characters (without spaces) shown in the image."
-msgstr "Vul de letters in uit de afbeelding (zonder spaties)."
-
-#: image_captcha/image_captcha.module:179;179;40
-#: image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr "Beeld-CAPTCHA"
-
-#: image_captcha/image_captcha.module:184
-msgid "What code is in the image?"
-msgstr "Welke code staat in de afbeelding?"
-
-#: image_captcha/image_captcha.module:94
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr ""
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr "Voorziet een afbeelding gebaseerde CAPTCHA"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/pl.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/pl.po deleted file \
mode 100644 index 60d0290..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/pl.po
+++ /dev/null
@@ -1,510 +0,0 @@
-# $Id: pl.po,v 1.2 2009/07/17 17:50:03 soxofaan Exp $
-#
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-# captcha.admin.inc,v 1.9 2008/03/08 04:27:12 soxofaan
-# image_captcha.admin.inc,v 1.5 2008/02/17 12:49:24 soxofaan
-# captcha.module,v 1.65 2008/03/08 04:27:12 soxofaan
-# captcha.pages.inc,v 1.2 2008/03/08 04:27:12 soxofaan
-# captcha.info,v 1.7 2008/02/17 12:49:24 soxofaan
-# image_captcha.user.inc,v 1.5 2008/02/17 12:49:24 soxofaan
-# image_captcha.module,v 1.10 2008/02/17 12:49:24 soxofaan
-# captcha.install,v 1.6 2008/02/17 18:35:25 soxofaan
-# image_captcha.info,v 1.5 2008/02/17 12:49:24 soxofaan
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2008-03-08 06:39+0100\n"
-"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
-"Last-Translator: Sergiusz Pawłowicz <sergiusz@pawlowicz.name>\n"
-"Language-Team: Polish <sergiusz@pawlowicz.name>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || \
n%100> ) ? 1 : 2);\n"
-
-#: captcha.admin.inc:13 image_captcha/image_captcha.admin.inc:101
-msgid "none"
-msgstr "-"
-
-#: captcha.admin.inc:32;42 captcha.module:39
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Dodaj linki CAPTCHA do formularzy"
-
-#: captcha.admin.inc:34
-msgid "This option is very helpful to enable/disable challenges on forms. When \
enabled, users with the \"%admincaptcha\" permission will see CAPTCHA administration \
links on all forms (except on administrative pages, which shouldn't be accessible to \
untrusted users in the first place). These links make it possible to enable a \
challenge of the desired type or disable it."
-msgstr ""
-
-#: captcha.admin.inc:39
-msgid "Challenge type per form"
-msgstr ""
-
-#: captcha.admin.inc:41
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with the \
help of the '%CAPTCHA_admin_links' option or the <a href=\"!add_captcha_point\">the \
CAPTCHA point form</a>."
-msgstr ""
-
-#: captcha.admin.inc:65
-msgid "delete"
-msgstr ""
-
-#: captcha.admin.inc:74;89
-msgid "Challenge description"
-msgstr ""
-
-#: captcha.admin.inc:75;90
-msgid "With this description you can explain the purpose of the challenge to the \
user."
-msgstr ""
-
-#: captcha.admin.inc:80
-msgid "For language %lang_name (code %lang_code)"
-msgstr ""
-
-#: captcha.admin.inc:98
-msgid "Persistence"
-msgstr ""
-
-#: captcha.admin.inc:101
-msgid "Always add a challenge."
-msgstr ""
-
-#: captcha.admin.inc:102
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr ""
-
-#: captcha.admin.inc:103
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr ""
-
-#: captcha.admin.inc:105
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr ""
-
-#: captcha.admin.inc:110
-msgid "Log wrong responses"
-msgstr ""
-
-#: captcha.admin.inc:111
-msgid "Report information about wrong responses to the !log."
-msgstr ""
-
-#: captcha.admin.inc:111
-msgid "log"
-msgstr ""
-
-#: captcha.admin.inc:117;227
-msgid "Save"
-msgstr ""
-
-#: captcha.admin.inc:135
-msgid "Challenge type (module)"
-msgstr ""
-
-#: captcha.admin.inc:135
-msgid "Operations"
-msgstr ""
-
-#: captcha.admin.inc:166
-msgid "The CAPTCHA settings were saved."
-msgstr ""
-
-#: captcha.admin.inc:195;210
-msgid "Form ID"
-msgstr ""
-
-#: captcha.admin.inc:196;211
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr ""
-
-#: captcha.admin.inc:217
-msgid "Challenge type"
-msgstr ""
-
-#: captcha.admin.inc:218
-msgid "The CAPTCHA type to use for this form"
-msgstr ""
-
-#: captcha.admin.inc:237
-msgid "Illegal form_id"
-msgstr ""
-
-#: captcha.admin.inc:255
-msgid "Saved CAPTCHA point settings."
-msgstr ""
-
-#: captcha.admin.inc:272
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr ""
-
-#: captcha.admin.inc:273
-msgid "Delete"
-msgstr ""
-
-#: captcha.admin.inc:276
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr ""
-
-#: captcha.admin.inc:277
-msgid "Disable"
-msgstr ""
-
-#: captcha.admin.inc:290
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr ""
-
-#: captcha.admin.inc:294
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr ""
-
-#: captcha.admin.inc:320
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr ""
-
-#: captcha.admin.inc:331
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr ""
-
-#: captcha.admin.inc:334
-msgid "10 more examples of this challenge."
-msgstr ""
-
-#: (duplicate) captcha.pages.inc:66;53;161 captcha.module:202;115 captcha.info:0 \
image_captcha/image_captcha.user.inc:28 \
image_captcha/image_captcha.module:91
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-#: captcha.pages.inc:108
-msgid "Another challenge"
-msgstr "Kolejna próba"
-
-#: captcha.pages.inc:109
-msgid "Get another challenge"
-msgstr "Kolejna próba"
-
-#: captcha.pages.inc:144
-msgid "CAPTCHA test failed (unknown challenge_id)."
-msgstr "CAPTCHA siÄ™ nie zgadza (nieznane challenge_id)."
-
-#: captcha.pages.inc:156
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "Odpowiedź na test CAPTCHA nie była prawidłowa."
-
-#: captcha.pages.inc:53
-msgid "CAPTCHA problem: hook_captcha() of module %module returned nothing when \
trying to retrieve challenge type %type for form %form_id."
-msgstr ""
-
-#: captcha.pages.inc:161
-msgid "%form_id post blocked by CAPTCHA module: challenge \"%challenge\" (by module \
\"%module\"), user answered \"%response\", but the solution was \
\"%solution\"."
-msgstr ""
-
-#: captcha.module:24
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr ""
-
-#: captcha.module:25
-msgid "Note that the CAPTCHA module interacts with page caching (see <a \
href=\"!performancesettings\">performance settings</a>). Because the challenge should \
be unique for each generated form, the caching of the page it appears on is \
prevented. Make sure that these forms do not appear on too many pages or you will \
lose much caching efficiency. For example, if you put a CAPTCHA on the user login \
block, which typically appears on each page for anonymous visitors, caching will \
practically be disabled. The comment submission forms are another example. In this \
case you should set the \"%commentlocation\" to \"%separatepage\" in the comment \
settings of the relevant <a href=\"!contenttypes\">content types</a> for better \
caching efficiency."
-msgstr ""
-
-#: captcha.module:28
-msgid "Location of comment submission form"
-msgstr ""
-
-#: captcha.module:29
-msgid "Display on separate page"
-msgstr ""
-
-#: captcha.module:33
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr ""
-
-#: captcha.module:38
-msgid "A CAPTCHA can be added to virtually each Drupal form. Some default forms are \
already provided in the form list, but arbitrary forms can be easily added and \
managed when the option \"%adminlinks\" is enabled."
-msgstr ""
-
-#: captcha.module:40
-msgid "Users with the \"%skipcaptcha\" <a href=\"@perm\">permission</a> won't be \
offered a challenge. Be sure to grant this permission to the trusted users (e.g. site \
administrators). If you want to test a protected form, be sure to do it as a user \
without the \"%skipcaptcha\" permission (e.g. as anonymous user)."
-msgstr ""
-
-#: captcha.module:149
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr ""
-
-#: captcha.module:207
-msgid "Untrusted users will see a CAPTCHA here (!settings)."
-msgstr ""
-
-#: captcha.module:208
-msgid "general CAPTCHA settings"
-msgstr ""
-
-#: captcha.module:212
-msgid "Enabled challenge"
-msgstr ""
-
-#: captcha.module:213
-msgid "\"@type\" by module \"@module\" (!change, !disable)"
-msgstr ""
-
-#: captcha.module:216
-msgid "change"
-msgstr ""
-
-#: captcha.module:217
-msgid "disable"
-msgstr ""
-
-#: captcha.module:223
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr ""
-
-#: captcha.module:247
-msgid "Math Question"
-msgstr ""
-
-#: captcha.module:248
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr ""
-
-#: captcha.module:249
-msgid "@x + @y = "
-msgstr ""
-
-#: (duplicate) captcha.module:116
-msgid "Already @counter blocked form submissions"
-msgstr ""
-
-#: captcha.install:9
-msgid "This table describes which challenges should be added to which forms."
-msgstr ""
-
-#: captcha.install:12
-msgid "The form_id of the form to add a CAPTCHA to."
-msgstr ""
-
-#: captcha.install:18
-msgid "The module that provides the challenge."
-msgstr ""
-
-#: captcha.install:23
-msgid "The challenge type to use."
-msgstr ""
-
-#: captcha.install:31;154
-msgid "Stores the solutions of the generated challenges."
-msgstr ""
-
-#: captcha.install:34;157
-msgid "Primary Key: Unique challenge ID."
-msgstr ""
-
-#: captcha.install:39;162
-msgid "Solution of the challenge."
-msgstr ""
-
-#: captcha.install:46;169
-msgid "Session ID of the user."
-msgstr ""
-
-#: captcha.install:53;176
-msgid "A Unix timestamp indicating when the challenge was generated."
-msgstr ""
-
-#: captcha.install:119
-msgid "Unsupported database."
-msgstr ""
-
-#: captcha.info:0
-msgid "Base CAPTCHA module for adding challenges to arbitrary forms."
-msgstr ""
-
-#: captcha.info:0 image_captcha/image_captcha.info:0
-msgid "Spam control"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:8
-msgid "Built-in font"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:26
-msgid "Images cannot be generated, because your PHP installation's GD library has no \
JPEG support."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:31
-msgid "Code settings"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:35
-msgid "Characters to use in the code"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:40
-msgid "Code length"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:43
-msgid "The code length influences the size of the image. Note that larger values \
make the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:49
-msgid "Font settings"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:55
-msgid "Font"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:57
-msgid "The TrueType font (.ttf) to use for the text in the image CAPTCHA."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:66
-msgid "Font size"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:68
-msgid "tiny"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:69;84
-msgid "small"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:70;85;104;142
-msgid "normal"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:71;86
-msgid "large"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:74
-msgid "The font size influences the size of the image. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:80
-msgid "Character spacing"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:81
-msgid "Define the average spacing between characters. Note that larger values make \
the image generation more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:93
-msgid "Distortion and noise"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:94
-msgid "With these settings you can control the degree of obfuscation by distortion \
and added noise. Do not exaggerate the obfuscation and assure that the code in the \
image is reasonably readable. For example, do not combine high levels of distortion \
and noise."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:99
-msgid "Distortion level"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:102;141
-msgid "low"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:103
-msgid "moderate"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:105;143
-msgid "high"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:106;144
-msgid "severe"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:109
-msgid "Set the degree of wave distortion in the image."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:113
-msgid "Smooth distortion"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:115
-msgid "This option enables bilinear interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:120
-msgid "Double vision"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:122
-msgid "When enabled, characters appear twice in the image, overlaid onto each \
other."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:127
-msgid "Add salt and pepper noise"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:129
-msgid "This option adds randomly colored point noise."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:133
-msgid "Add line noise"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:135
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:139
-msgid "Noise level"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:157
-msgid "The image captcha module works best with a TrueType font file (TTF) for \
generating the images, but because of licencing issues it is not allowed to package \
fonts with the module. A simple built-in bitmap font is provided as default instead. \
You can install TrueType fonts yourself by putting them in the fonts directory of the \
image captcha module (directory \"%fontsdir\") or by uploading them to your Drupal \
file system (directory \"%filesdir\") with for example the upload \
module."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:160
-msgid "The usage of the built-in bitmap font it is not recommended because of its \
small size and missing UTF-8 support."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:171
-msgid "The list of characters to use should not contain spaces."
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:176
-msgid "You need to select a font"
-msgstr ""
-
-#: image_captcha/image_captcha.admin.inc:179
-msgid "Font does not exist or is not readable."
-msgstr ""
-
-#: image_captcha/image_captcha.user.inc:28
-msgid "Generation of image CAPTCHA failed. Check your image CAPTCHA configuration \
and especially the used font."
-msgstr ""
-
-#: image_captcha/image_captcha.module:16
-msgid "The image CAPTCHA is a popular challenge where a random textual code is \
obfuscated in an image. The image is generated on the fly for each request, which is \
rather CPU intensive for the server. Be careful with the size and computation related \
settings."
-msgstr ""
-
-#: image_captcha/image_captcha.module:20
-msgid "<p>Example image, generated with the current settings:</p>!img"
-msgstr ""
-
-#: image_captcha/image_captcha.module:144
-msgid "What code is in the image?"
-msgstr ""
-
-#: image_captcha/image_captcha.module:145
-msgid "Copy the characters (respecting upper/lower case) from the image."
-msgstr ""
-
-#: image_captcha/image_captcha.module:91
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr ""
-
-#: image_captcha/image_captcha.info:0
-msgid "Image CAPTCHA"
-msgstr ""
-
-#: image_captcha/image_captcha.info:0
-msgid "Provides an image based CAPTCHA."
-msgstr ""
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk-ua.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk-ua.po deleted \
file mode 100644 index d1b40bb..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk-ua.po
+++ /dev/null
@@ -1,428 +0,0 @@
-# Ukrainian translation of CAPTCHA (all releases)
-# Copyright (c) 2009 by the Ukrainian translation team
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: CAPTCHA (all releases)\n"
-"POT-Creation-Date: 2009-10-08 19:53+0000\n"
-"PO-Revision-Date: 2009-10-08 22:54+0200\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; \
plural=((((n%10)==1)&&((n%100)!))?(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)> \
)))?(1):2));\n"
-"Last-Translator: podarok <podarok@ua.fm>\n"
-"X-Poedit-Language: Ukrainian\n"
-"X-Poedit-Country: UKRAINE\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-msgid "Save configuration"
-msgstr "Запам'Ñтати конфігурацію"
-
-msgid "delete"
-msgstr "видалити"
-
-msgid "Delete"
-msgstr "Видалити"
-
-msgid "Submit"
-msgstr "ÐадіÑлати"
-
-msgid "Operations"
-msgstr "Дії"
-
-msgid "Disable"
-msgstr "Вимкнено"
-
-msgid "Math Question: What is %problem?"
-msgstr "Порахуйте: Ñкільки буде %problem?"
-
-msgid "none"
-msgstr "нічого"
-
-msgid "General settings"
-msgstr "Загальні налаштуваннÑ"
-
-msgid "Save"
-msgstr "Зберегти"
-
-msgid "Font"
-msgstr "Шрифт"
-
-msgid "Form ID"
-msgstr "Ідентифікатор форми"
-
-msgid "Example"
-msgstr "Приклад"
-
-msgid "Background color"
-msgstr "Колір тла"
-
-msgid "Text color"
-msgstr "Колір текÑту"
-
-msgid "Unsupported database."
-msgstr "База даних не підтримуєтьÑÑ!"
-
-msgid "normal"
-msgstr "звичайний"
-
-msgid "second"
-msgstr "другий"
-
-msgid "Code length"
-msgstr "Довжина коду"
-
-msgid "Font size"
-msgstr "Розмір шрифта"
-
-msgid "Spam control"
-msgstr "КОнтроль Ñпаму"
-
-msgid "The list of characters to use should not contain spaces."
-msgstr "СпиÑок Ñимволів не повинен міÑтити \
пропуÑків"
-
-msgid "Math question"
-msgstr "Математичне завданнÑ"
-
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "ТрапивÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¸Ð¹ байт при \
розділенні utf8 Ñтроки в Ñимволи"
-
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Ð”Ð»Ñ Ð¼Ð¾Ð²Ð¸ %lang_name ( код %lang_code )"
-
-msgid "first"
-msgstr "перший"
-
-msgid "third"
-msgstr "третій"
-
-msgid "fourth"
-msgstr "четвертий"
-
-msgid "fifth"
-msgstr "п'Ñтий"
-
-msgid "sixth"
-msgstr "шоÑтий"
-
-msgid "seventh"
-msgstr "Ñьомий"
-
-msgid "eighth"
-msgstr "воÑьмий"
-
-msgid "ninth"
-msgstr "дев'Ñтий"
-
-msgid "tenth"
-msgstr "деÑÑтий"
-
-msgid "change"
-msgstr "зміна"
-
-msgid "disable"
-msgstr "вимкнути"
-
-msgid "low"
-msgstr "низько"
-
-msgid "medium"
-msgstr "Ñередній"
-
-msgid "high"
-msgstr "виÑоко"
-
-msgid "Display on separate page"
-msgstr "Показувати на окремій Ñторінці"
-
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Додати CAPTCHA адмініÑтративні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð¾ \
форм"
-
-msgid "This option is very helpful to enable/disable challenges on forms. When \
enabled, users with the \"%admincaptcha\" permission will see CAPTCHA administration \
links on all forms (except on administrative pages, which shouldn't be accessible to \
untrusted users in the first place). These links make it possible to enable a \
challenge of the desired type or disable it."
-msgstr "Дана функциональніÑÑ‚ÑŒ дуже кориÑна на \
перших порах Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÐ±Ñайтів. Коли \
увімкнена - кориÑтувачі з \"%admincaptcha\" доÑтупом \
будуть бачити Ñпеціальні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð±Ñ–Ð»Ñ Ð²ÑÑ–Ñ… \
форм, що дозволить швидко увімкнути-вимкнути \
капчу Ñаме в потрібних міÑцÑÑ… Ñайту."
-
-msgid "administer CAPTCHA settings"
-msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ CAPTCHA"
-
-msgid "Challenge type per form"
-msgstr "Типи в залежноÑÑ‚Ñ– від форм"
-
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with the \
help of the '%CAPTCHA_admin_links' option or the <a href=\"!add_captcha_point\">the \
CAPTCHA point form</a>."
-msgstr "Виберіть тип запитаннÑ, Ñке ви бажаєте \
відображати на перерахованих формах ( \
ідентифікатори - так звані <em>form_id</em> ). Ви \
можете легко Ñ– проÑто додати будь-Ñкі форми з \
допомогою '%CAPTCHA_admin_links' параметру або <a \
href=\"!add_captcha_point\">CAPTCHA point форми</a>."
-
-msgid "Challenge description"
-msgstr "ÐžÐ¿Ð¸Ñ Ñ‚Ð¸Ð¿Ñƒ капчі"
-
-msgid "With this description you can explain the purpose of the challenge to the \
user."
-msgstr "Цей Ð¾Ð¿Ð¸Ñ Ð¿Ð¾ÑÑнюватиме кориÑтувачу вимогу \
Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ°Ð¿Ñ‡Ñ–."
-
-msgid "Persistence"
-msgstr "СтійкіÑÑ‚ÑŒ"
-
-msgid "Always add a challenge."
-msgstr "Завжди вмикати капчу"
-
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Вмикати капчу Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ лише один раз до \
моменту правильної відповіді \
кориÑтувача."
-
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Вмикати капчу Ð´Ð»Ñ Ð²ÑÑ–Ñ… форм лише один раз \
до моменту правильної видповіді \
кориÑтувача"
-
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr "Вказуєм чи потрібно вмикати капчу \
протÑгом подальшої ÑеÑÑ–Ñ— кориÑтувача піÑÐ»Ñ \
правильної відповіді одного разу"
-
-msgid "Log wrong responses"
-msgstr "Логувати неправильні відповіді"
-
-msgid "Report information about wrong responses to the !log."
-msgstr "ЗапиÑувати інформацію про неправильні \
відповіді в !log"
-
-msgid "log"
-msgstr "лог"
-
-msgid "Challenge type (module)"
-msgstr "Тип капчі ( Ñубмобуль )"
-
-msgid "The CAPTCHA settings were saved."
-msgstr "Параметри капчі було збережено"
-
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Ідентифікатор форми form_id Друпала, до \
Ñкого заÑтоÑувати капчу"
-
-msgid "Challenge type"
-msgstr "Тип капчі"
-
-msgid "The CAPTCHA type to use for this form"
-msgstr "Тип капчі, що викориÑтовувати до цієї \
форми"
-
-msgid "Illegal form_id"
-msgstr "Ðекоректний form_id"
-
-msgid "Saved CAPTCHA point settings."
-msgstr "Збережено параметри балів капчі"
-
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "Ви впевнені щодо Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÐºÐ°Ð¿Ñ‡Ñ– Ð´Ð»Ñ \
ідентифікатора форми form_id = %form_id ?"
-
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "Ви впевнені щодо Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ ÐºÐ°Ð¿Ñ‡Ñ– Ð´Ð»Ñ \
ідентифікатора форми form_id = %form_id ?"
-
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "Видалено капчу Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ %form_id."
-
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "Вимкнено капчу Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ %form_id."
-
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Ð¦Ñ Ñторінка надає Ð¾Ð¿Ð¸Ñ Ð²ÑÑ–Ñ… доÑтупних \
типів капчі, згенерованих теперішніми \
параметрами."
-
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Капча \"%challenge\" Ð¼Ð¾Ð´ÑƒÐ»Ñ \"%module\""
-
-msgid "10 more examples of this challenge."
-msgstr "Ще 10 прикладів даного типу капчі"
-
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr "CAPTCHA (англ. «completely automated public turing test to tell \
computers and humans apart » — повніÑÑ‚ÑŽ автоматизований \
публічний теÑÑ‚ Тюринга Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ð½ÐµÐ½Ð½Ñ \
комп'ютерів і людей) — торгова марка \
УніверÑитет Карнегі — Меллона, комп'ютерний \
теÑÑ‚, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб \
визначити, хто викориÑтовує ÑиÑтему — людина \
чи комп'ютер. Термін з'ÑвивÑÑ Ð² 2000 \
році."
-
-msgid "Location of comment submission form"
-msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð¿Ð¾Ð´Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ"
-
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA is a trademark of Carnegie Mellon University."
-
-msgid "skip CAPTCHA"
-msgstr "обхід капчі"
-
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Дайте відповідь на це запитаннÑ, щоб ми \
знали що ви людина, а не тупий робот )."
-
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-msgid "general CAPTCHA settings"
-msgstr "головні параметри капчі"
-
-msgid "Enabled challenge"
-msgstr "Ввімкнена капча"
-
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Ð’ÑтавлÑти Капчу тут Ð´Ð»Ñ Ð½ÐµÐ´Ð¾Ð²Ñ–Ñ€ÐµÐ½Ð¸Ñ… \
кориÑтувачів"
-
-msgid "Invalid CAPTCHA token."
-msgstr "Ðеправильна Капча"
-
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "ВІдповідь, введена вами Ð´Ð»Ñ ÐšÐ°Ð¿Ñ‡Ñ– - \
некоректна"
-
-msgid "Math Question"
-msgstr "Математичне завданнÑ"
-
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Розв'Ñжіть цю проÑту задачку Ñ– введіть \
відповідь. Ðаприклад, Ð´Ð»Ñ 1+3 введіть 4."
-
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-msgid "Already @counter blocked form submissions"
-msgstr "Вже блоковано @counter некоректних \
відповідей на капчу"
-
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтаннÑм Капчі"
-
-msgid "Examples"
-msgstr "Приклади"
-
-msgid "CAPTCHA point adminstration"
-msgstr "ÐдмініÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ñ–Ð² капчі"
-
-msgid "Built-in font"
-msgstr "Вбудований шрифт"
-
-msgid "Code settings"
-msgstr "Параметри коду"
-
-msgid "Font settings"
-msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñ–Ð²"
-
-msgid "tiny"
-msgstr "дрібний"
-
-msgid "small"
-msgstr "малий"
-
-msgid "large"
-msgstr "великий"
-
-msgid "Character spacing"
-msgstr "ПропуÑки між Ñимволами"
-
-msgid "Color settings"
-msgstr "Параметри кольору"
-
-msgid "Additional variation of text color"
-msgstr "Додаткові варіанти кольорів текÑту"
-
-msgid "moderate"
-msgstr "керувати"
-
-msgid "very high"
-msgstr "дуже виÑоко"
-
-msgid "Distortion and noise"
-msgstr "Ð Ð¾Ð·Ð¼Ð¸Ð²Ð°Ð½Ð½Ñ Ñ‚Ð° шум"
-
-msgid "Distortion level"
-msgstr "Рівень розмиваннÑ"
-
-msgid "severe"
-msgstr "Ñередньо"
-
-msgid "Set the degree of wave distortion in the image."
-msgstr "Ð’Ñтановити процент хвильового \
Ñ€Ð¾Ð·Ð¼Ð¸Ð²Ð°Ð½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸"
-
-msgid "Smooth distortion"
-msgstr "Ðœ'Ñке розмиваннÑ"
-
-msgid "This option enables bilineair interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Цей параметр вмикає білінійну \
інтерполÑцію Ñ€Ð¾Ð·Ð¼Ð¸Ð²Ð°Ð½Ð½Ñ Ñ‰Ð¾ робить картинку \
більш розмитою, але це Ñтворює більше \
Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° процеÑор!"
-
-msgid "Double vision"
-msgstr "Подвійне відображеннÑ"
-
-msgid "When enabled, characters appear twice in the image, overlayed onto each \
other."
-msgstr "Якщо увімкнено, Ñимволи малюютьÑÑ Ð´Ð²Ñ–Ñ‡Ñ– \
на картинці, один над одним"
-
-msgid "Add salt and peper noise"
-msgstr "Додати шум \"Ñіль Ñ– перець\""
-
-msgid "This option adds randomly colored point noise."
-msgstr "Цей параметр додає випадкові кольорові \
точки шуму"
-
-msgid "Add line noise"
-msgstr "Додати лінійний шум"
-
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Цей параметр вмикає лінії, випадково \
намальовані поверх текÑту"
-
-msgid "Noise level"
-msgstr "Рівень шуму"
-
-msgid "You need to select a font"
-msgstr "Вам потрібно обрати шрифт"
-
-msgid "Font does not exist or is not readable."
-msgstr "Шрифт недоÑтупний або нечитаємий"
-
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Колір фону має неправильне шіÑнадцÑткове \
значеннÑ"
-
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Колір текÑту має неправильне \
шіÑнадцÑткове значеннÑ"
-
-msgid "<p>Example image, generated with the current settings:</p>!img"
-msgstr "<p>Приклад картинки, згенерованої \
теперішнімі параметрами: </p> !img"
-
-msgid "Image CAPTCHA"
-msgstr "Фото Капча"
-
-msgid "What code is in the image?"
-msgstr "Які Ñимволи ви бачите на малюнку?"
-
-msgid "Copy the characters (respecting upper/lower case) from the image."
-msgstr "Впишіть Ñимволи із Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ('а' та 'Ð' - \
це різні Ñимволи)."
-
-msgid "Provides an image based CAPTCHA."
-msgstr "Ðадає фото капчу"
-
-msgid "Kind of words to use in the phrase"
-msgstr "Тип Ñлів Ð´Ð»Ñ Ñ„Ñ€Ð°Ð·Ð¸"
-
-msgid "Generate nonsense random words."
-msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ Ð±ÐµÐ·Ð·Ð¼Ñ–Ñтовних випадкових Ñлів"
-
-msgid "Use user defined words."
-msgstr "ВикориÑтовувати Ñлова, зазначені \
кориÑтувачем"
-
-msgid "User defined words"
-msgstr "КориÑтувацькі Ñлова"
-
-msgid "Enter a bunch of space separated words (at least @min)."
-msgstr "Введіть набір Ñлів ( Ñк мінімум @min )"
-
-msgid "Number of words in the phrase"
-msgstr "КількіÑÑ‚ÑŒ Ñлів в фразі"
-
-msgid "You need to enter at least @min words if you want to use user defined words."
-msgstr "Вам потрібно ввеÑти мінімум @min Ñлів, Ñкщо \
Ви хочете викориÑтовувати \
\"зазначені\" Ñлова"
-
-msgid "Number of words in the phrase should be between 4 and 10."
-msgstr "КІлькіÑÑ‚ÑŒ Ñлів у фразі повинна бути між 4 \
та 10"
-
-msgid "In this challenge the visitor is asked for the n<sup>th</sup> word of a given \
phrase."
-msgstr "Ð’ даній капчі кориÑтувач зобов'Ñзаний \
напиÑати порÑдкове Ñлово з цілої \
фрази"
-
-msgid "What is the @nth word in the phrase \"@words\"?"
-msgstr "Ðапишіть @nth Ñлово в фразі \"@words\""
-
-msgid "Text CAPTCHA"
-msgstr "ТекÑтова Капча"
-
-msgid "Provides a simple text based CAPTCHA."
-msgstr "Ðадає проÑту текÑтову капчу"
-
-msgid "File format"
-msgstr "Формат файлу"
-
-msgid "The GD library for PHP is missing or outdated. Please check the <a \
href=\"@url\">PHP image documentation</a> for information on how to \
correct this."
-msgstr "Бібліотека GD Ð´Ð»Ñ PHP відÑÑƒÑ‚Ð½Ñ Ð°Ð±Ð¾ \
заÑтаріла. Будь-лаÑка, звернітьÑÑ Ð´Ð¾ <a \
href=\"@url\">документації по роботі PHP із \
зображеннÑми</a> щоб отримати інформацію по \
уÑуненню цієї помилки."
-
-msgid "CAPTCHA point administration"
-msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ CAPTCHA"
-
-msgid "JPEG"
-msgstr "JPEG"
-
-msgid "PNG"
-msgstr "PNG"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk.po \
b/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk.po deleted file \
mode 100644 index d1b40bb..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/captcha/translations/uk.po
+++ /dev/null
@@ -1,428 +0,0 @@
-# Ukrainian translation of CAPTCHA (all releases)
-# Copyright (c) 2009 by the Ukrainian translation team
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: CAPTCHA (all releases)\n"
-"POT-Creation-Date: 2009-10-08 19:53+0000\n"
-"PO-Revision-Date: 2009-10-08 22:54+0200\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; \
plural=((((n%10)==1)&&((n%100)!))?(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)> \
)))?(1):2));\n"
-"Last-Translator: podarok <podarok@ua.fm>\n"
-"X-Poedit-Language: Ukrainian\n"
-"X-Poedit-Country: UKRAINE\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-msgid "Save configuration"
-msgstr "Запам'Ñтати конфігурацію"
-
-msgid "delete"
-msgstr "видалити"
-
-msgid "Delete"
-msgstr "Видалити"
-
-msgid "Submit"
-msgstr "ÐадіÑлати"
-
-msgid "Operations"
-msgstr "Дії"
-
-msgid "Disable"
-msgstr "Вимкнено"
-
-msgid "Math Question: What is %problem?"
-msgstr "Порахуйте: Ñкільки буде %problem?"
-
-msgid "none"
-msgstr "нічого"
-
-msgid "General settings"
-msgstr "Загальні налаштуваннÑ"
-
-msgid "Save"
-msgstr "Зберегти"
-
-msgid "Font"
-msgstr "Шрифт"
-
-msgid "Form ID"
-msgstr "Ідентифікатор форми"
-
-msgid "Example"
-msgstr "Приклад"
-
-msgid "Background color"
-msgstr "Колір тла"
-
-msgid "Text color"
-msgstr "Колір текÑту"
-
-msgid "Unsupported database."
-msgstr "База даних не підтримуєтьÑÑ!"
-
-msgid "normal"
-msgstr "звичайний"
-
-msgid "second"
-msgstr "другий"
-
-msgid "Code length"
-msgstr "Довжина коду"
-
-msgid "Font size"
-msgstr "Розмір шрифта"
-
-msgid "Spam control"
-msgstr "КОнтроль Ñпаму"
-
-msgid "The list of characters to use should not contain spaces."
-msgstr "СпиÑок Ñимволів не повинен міÑтити \
пропуÑків"
-
-msgid "Math question"
-msgstr "Математичне завданнÑ"
-
-msgid "Encountered an illegal byte while splitting an utf8 string in characters."
-msgstr "ТрапивÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¸Ð¹ байт при \
розділенні utf8 Ñтроки в Ñимволи"
-
-msgid "For language %lang_name (code %lang_code)"
-msgstr "Ð”Ð»Ñ Ð¼Ð¾Ð²Ð¸ %lang_name ( код %lang_code )"
-
-msgid "first"
-msgstr "перший"
-
-msgid "third"
-msgstr "третій"
-
-msgid "fourth"
-msgstr "четвертий"
-
-msgid "fifth"
-msgstr "п'Ñтий"
-
-msgid "sixth"
-msgstr "шоÑтий"
-
-msgid "seventh"
-msgstr "Ñьомий"
-
-msgid "eighth"
-msgstr "воÑьмий"
-
-msgid "ninth"
-msgstr "дев'Ñтий"
-
-msgid "tenth"
-msgstr "деÑÑтий"
-
-msgid "change"
-msgstr "зміна"
-
-msgid "disable"
-msgstr "вимкнути"
-
-msgid "low"
-msgstr "низько"
-
-msgid "medium"
-msgstr "Ñередній"
-
-msgid "high"
-msgstr "виÑоко"
-
-msgid "Display on separate page"
-msgstr "Показувати на окремій Ñторінці"
-
-msgid "Add CAPTCHA administration links to forms"
-msgstr "Додати CAPTCHA адмініÑтративні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð¾ \
форм"
-
-msgid "This option is very helpful to enable/disable challenges on forms. When \
enabled, users with the \"%admincaptcha\" permission will see CAPTCHA administration \
links on all forms (except on administrative pages, which shouldn't be accessible to \
untrusted users in the first place). These links make it possible to enable a \
challenge of the desired type or disable it."
-msgstr "Дана функциональніÑÑ‚ÑŒ дуже кориÑна на \
перших порах Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÐ±Ñайтів. Коли \
увімкнена - кориÑтувачі з \"%admincaptcha\" доÑтупом \
будуть бачити Ñпеціальні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð±Ñ–Ð»Ñ Ð²ÑÑ–Ñ… \
форм, що дозволить швидко увімкнути-вимкнути \
капчу Ñаме в потрібних міÑцÑÑ… Ñайту."
-
-msgid "administer CAPTCHA settings"
-msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ CAPTCHA"
-
-msgid "Challenge type per form"
-msgstr "Типи в залежноÑÑ‚Ñ– від форм"
-
-msgid "Select the challenge type you want for each of the listed forms (identified \
by their so called <em>form_id</em>'s). You can easily add arbitrary forms with the \
help of the '%CAPTCHA_admin_links' option or the <a href=\"!add_captcha_point\">the \
CAPTCHA point form</a>."
-msgstr "Виберіть тип запитаннÑ, Ñке ви бажаєте \
відображати на перерахованих формах ( \
ідентифікатори - так звані <em>form_id</em> ). Ви \
можете легко Ñ– проÑто додати будь-Ñкі форми з \
допомогою '%CAPTCHA_admin_links' параметру або <a \
href=\"!add_captcha_point\">CAPTCHA point форми</a>."
-
-msgid "Challenge description"
-msgstr "ÐžÐ¿Ð¸Ñ Ñ‚Ð¸Ð¿Ñƒ капчі"
-
-msgid "With this description you can explain the purpose of the challenge to the \
user."
-msgstr "Цей Ð¾Ð¿Ð¸Ñ Ð¿Ð¾ÑÑнюватиме кориÑтувачу вимогу \
Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ°Ð¿Ñ‡Ñ–."
-
-msgid "Persistence"
-msgstr "СтійкіÑÑ‚ÑŒ"
-
-msgid "Always add a challenge."
-msgstr "Завжди вмикати капчу"
-
-msgid "Omit challenges for a form once the user has successfully responded to a \
challenge for that form."
-msgstr "Вмикати капчу Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ лише один раз до \
моменту правильної відповіді \
кориÑтувача."
-
-msgid "Omit challenges for all forms once the user has successfully responded to a \
challenge."
-msgstr "Вмикати капчу Ð´Ð»Ñ Ð²ÑÑ–Ñ… форм лише один раз \
до моменту правильної видповіді \
кориÑтувача"
-
-msgid "Define if challenges should be omitted during the rest of a session once the \
user successfully responses to a challenge."
-msgstr "Вказуєм чи потрібно вмикати капчу \
протÑгом подальшої ÑеÑÑ–Ñ— кориÑтувача піÑÐ»Ñ \
правильної відповіді одного разу"
-
-msgid "Log wrong responses"
-msgstr "Логувати неправильні відповіді"
-
-msgid "Report information about wrong responses to the !log."
-msgstr "ЗапиÑувати інформацію про неправильні \
відповіді в !log"
-
-msgid "log"
-msgstr "лог"
-
-msgid "Challenge type (module)"
-msgstr "Тип капчі ( Ñубмобуль )"
-
-msgid "The CAPTCHA settings were saved."
-msgstr "Параметри капчі було збережено"
-
-msgid "The Drupal form_id of the form to add the CAPTCHA to."
-msgstr "Ідентифікатор форми form_id Друпала, до \
Ñкого заÑтоÑувати капчу"
-
-msgid "Challenge type"
-msgstr "Тип капчі"
-
-msgid "The CAPTCHA type to use for this form"
-msgstr "Тип капчі, що викориÑтовувати до цієї \
форми"
-
-msgid "Illegal form_id"
-msgstr "Ðекоректний form_id"
-
-msgid "Saved CAPTCHA point settings."
-msgstr "Збережено параметри балів капчі"
-
-msgid "Are you sure you want to delete the CAPTCHA for form_id %form_id?"
-msgstr "Ви впевнені щодо Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÐºÐ°Ð¿Ñ‡Ñ– Ð´Ð»Ñ \
ідентифікатора форми form_id = %form_id ?"
-
-msgid "Are you sure you want to disable the CAPTCHA for form_id %form_id?"
-msgstr "Ви впевнені щодо Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ ÐºÐ°Ð¿Ñ‡Ñ– Ð´Ð»Ñ \
ідентифікатора форми form_id = %form_id ?"
-
-msgid "Deleted CAPTCHA for form %form_id."
-msgstr "Видалено капчу Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ %form_id."
-
-msgid "Disabled CAPTCHA for form %form_id."
-msgstr "Вимкнено капчу Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ %form_id."
-
-msgid "This page gives an overview of all available challenge types, generated with \
their current settings."
-msgstr "Ð¦Ñ Ñторінка надає Ð¾Ð¿Ð¸Ñ Ð²ÑÑ–Ñ… доÑтупних \
типів капчі, згенерованих теперішніми \
параметрами."
-
-msgid "Challenge \"%challenge\" by module \"%module\""
-msgstr "Капча \"%challenge\" Ð¼Ð¾Ð´ÑƒÐ»Ñ \"%module\""
-
-msgid "10 more examples of this challenge."
-msgstr "Ще 10 прикладів даного типу капчі"
-
-msgid "\"CAPTCHA\" is an acronym for \"Completely Automated Public Turing test to \
tell Computers and Humans Apart\". It is typically a challenge-response test to \
determine whether the user is human. The CAPTCHA module is a tool to fight automated \
submission by malicious users (spamming) of for example comments forms, user \
registration forms, guestbook forms, etc. You can extend the desired forms with an \
additional challenge, which should be easy for a human to solve correctly, but hard \
enough to keep automated scripts and spam bots out."
-msgstr "CAPTCHA (англ. «completely automated public turing test to tell \
computers and humans apart » — повніÑÑ‚ÑŽ автоматизований \
публічний теÑÑ‚ Тюринга Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ð½ÐµÐ½Ð½Ñ \
комп'ютерів і людей) — торгова марка \
УніверÑитет Карнегі — Меллона, комп'ютерний \
теÑÑ‚, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб \
визначити, хто викориÑтовує ÑиÑтему — людина \
чи комп'ютер. Термін з'ÑвивÑÑ Ð² 2000 \
році."
-
-msgid "Location of comment submission form"
-msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð¿Ð¾Ð´Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ"
-
-msgid "CAPTCHA is a trademark of Carnegie Mellon University."
-msgstr "CAPTCHA is a trademark of Carnegie Mellon University."
-
-msgid "skip CAPTCHA"
-msgstr "обхід капчі"
-
-msgid "This question is for testing whether you are a human visitor and to prevent \
automated spam submissions."
-msgstr "Дайте відповідь на це запитаннÑ, щоб ми \
знали що ви людина, а не тупий робот )."
-
-msgid "CAPTCHA"
-msgstr "CAPTCHA"
-
-msgid "general CAPTCHA settings"
-msgstr "головні параметри капчі"
-
-msgid "Enabled challenge"
-msgstr "Ввімкнена капча"
-
-msgid "Place a CAPTCHA here for untrusted users."
-msgstr "Ð’ÑтавлÑти Капчу тут Ð´Ð»Ñ Ð½ÐµÐ´Ð¾Ð²Ñ–Ñ€ÐµÐ½Ð¸Ñ… \
кориÑтувачів"
-
-msgid "Invalid CAPTCHA token."
-msgstr "Ðеправильна Капча"
-
-msgid "The answer you entered for the CAPTCHA was not correct."
-msgstr "ВІдповідь, введена вами Ð´Ð»Ñ ÐšÐ°Ð¿Ñ‡Ñ– - \
некоректна"
-
-msgid "Math Question"
-msgstr "Математичне завданнÑ"
-
-msgid "Solve this simple math problem and enter the result. E.g. for 1+3, enter 4."
-msgstr "Розв'Ñжіть цю проÑту задачку Ñ– введіть \
відповідь. Ðаприклад, Ð´Ð»Ñ 1+3 введіть 4."
-
-msgid "@x + @y = "
-msgstr "@x + @y = "
-
-msgid "Already @counter blocked form submissions"
-msgstr "Вже блоковано @counter некоректних \
відповідей на капчу"
-
-msgid "Administer how and where CAPTCHAs are used."
-msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтаннÑм Капчі"
-
-msgid "Examples"
-msgstr "Приклади"
-
-msgid "CAPTCHA point adminstration"
-msgstr "ÐдмініÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ñ–Ð² капчі"
-
-msgid "Built-in font"
-msgstr "Вбудований шрифт"
-
-msgid "Code settings"
-msgstr "Параметри коду"
-
-msgid "Font settings"
-msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñ–Ð²"
-
-msgid "tiny"
-msgstr "дрібний"
-
-msgid "small"
-msgstr "малий"
-
-msgid "large"
-msgstr "великий"
-
-msgid "Character spacing"
-msgstr "ПропуÑки між Ñимволами"
-
-msgid "Color settings"
-msgstr "Параметри кольору"
-
-msgid "Additional variation of text color"
-msgstr "Додаткові варіанти кольорів текÑту"
-
-msgid "moderate"
-msgstr "керувати"
-
-msgid "very high"
-msgstr "дуже виÑоко"
-
-msgid "Distortion and noise"
-msgstr "Ð Ð¾Ð·Ð¼Ð¸Ð²Ð°Ð½Ð½Ñ Ñ‚Ð° шум"
-
-msgid "Distortion level"
-msgstr "Рівень розмиваннÑ"
-
-msgid "severe"
-msgstr "Ñередньо"
-
-msgid "Set the degree of wave distortion in the image."
-msgstr "Ð’Ñтановити процент хвильового \
Ñ€Ð¾Ð·Ð¼Ð¸Ð²Ð°Ð½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸"
-
-msgid "Smooth distortion"
-msgstr "Ðœ'Ñке розмиваннÑ"
-
-msgid "This option enables bilineair interpolation of the distortion which makes the \
image look smoother, but it is more CPU intensive."
-msgstr "Цей параметр вмикає білінійну \
інтерполÑцію Ñ€Ð¾Ð·Ð¼Ð¸Ð²Ð°Ð½Ð½Ñ Ñ‰Ð¾ робить картинку \
більш розмитою, але це Ñтворює більше \
Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° процеÑор!"
-
-msgid "Double vision"
-msgstr "Подвійне відображеннÑ"
-
-msgid "When enabled, characters appear twice in the image, overlayed onto each \
other."
-msgstr "Якщо увімкнено, Ñимволи малюютьÑÑ Ð´Ð²Ñ–Ñ‡Ñ– \
на картинці, один над одним"
-
-msgid "Add salt and peper noise"
-msgstr "Додати шум \"Ñіль Ñ– перець\""
-
-msgid "This option adds randomly colored point noise."
-msgstr "Цей параметр додає випадкові кольорові \
точки шуму"
-
-msgid "Add line noise"
-msgstr "Додати лінійний шум"
-
-msgid "This option enables lines randomly drawn on top of the text code."
-msgstr "Цей параметр вмикає лінії, випадково \
намальовані поверх текÑту"
-
-msgid "Noise level"
-msgstr "Рівень шуму"
-
-msgid "You need to select a font"
-msgstr "Вам потрібно обрати шрифт"
-
-msgid "Font does not exist or is not readable."
-msgstr "Шрифт недоÑтупний або нечитаємий"
-
-msgid "Background color is not a valid hexadecimal color value."
-msgstr "Колір фону має неправильне шіÑнадцÑткове \
значеннÑ"
-
-msgid "Text color is not a valid hexadecimal color value."
-msgstr "Колір текÑту має неправильне \
шіÑнадцÑткове значеннÑ"
-
-msgid "<p>Example image, generated with the current settings:</p>!img"
-msgstr "<p>Приклад картинки, згенерованої \
теперішнімі параметрами: </p> !img"
-
-msgid "Image CAPTCHA"
-msgstr "Фото Капча"
-
-msgid "What code is in the image?"
-msgstr "Які Ñимволи ви бачите на малюнку?"
-
-msgid "Copy the characters (respecting upper/lower case) from the image."
-msgstr "Впишіть Ñимволи із Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ('а' та 'Ð' - \
це різні Ñимволи)."
-
-msgid "Provides an image based CAPTCHA."
-msgstr "Ðадає фото капчу"
-
-msgid "Kind of words to use in the phrase"
-msgstr "Тип Ñлів Ð´Ð»Ñ Ñ„Ñ€Ð°Ð·Ð¸"
-
-msgid "Generate nonsense random words."
-msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ Ð±ÐµÐ·Ð·Ð¼Ñ–Ñтовних випадкових Ñлів"
-
-msgid "Use user defined words."
-msgstr "ВикориÑтовувати Ñлова, зазначені \
кориÑтувачем"
-
-msgid "User defined words"
-msgstr "КориÑтувацькі Ñлова"
-
-msgid "Enter a bunch of space separated words (at least @min)."
-msgstr "Введіть набір Ñлів ( Ñк мінімум @min )"
-
-msgid "Number of words in the phrase"
-msgstr "КількіÑÑ‚ÑŒ Ñлів в фразі"
-
-msgid "You need to enter at least @min words if you want to use user defined words."
-msgstr "Вам потрібно ввеÑти мінімум @min Ñлів, Ñкщо \
Ви хочете викориÑтовувати \
\"зазначені\" Ñлова"
-
-msgid "Number of words in the phrase should be between 4 and 10."
-msgstr "КІлькіÑÑ‚ÑŒ Ñлів у фразі повинна бути між 4 \
та 10"
-
-msgid "In this challenge the visitor is asked for the n<sup>th</sup> word of a given \
phrase."
-msgstr "Ð’ даній капчі кориÑтувач зобов'Ñзаний \
напиÑати порÑдкове Ñлово з цілої \
фрази"
-
-msgid "What is the @nth word in the phrase \"@words\"?"
-msgstr "Ðапишіть @nth Ñлово в фразі \"@words\""
-
-msgid "Text CAPTCHA"
-msgstr "ТекÑтова Капча"
-
-msgid "Provides a simple text based CAPTCHA."
-msgstr "Ðадає проÑту текÑтову капчу"
-
-msgid "File format"
-msgstr "Формат файлу"
-
-msgid "The GD library for PHP is missing or outdated. Please check the <a \
href=\"@url\">PHP image documentation</a> for information on how to \
correct this."
-msgstr "Бібліотека GD Ð´Ð»Ñ PHP відÑÑƒÑ‚Ð½Ñ Ð°Ð±Ð¾ \
заÑтаріла. Будь-лаÑка, звернітьÑÑ Ð´Ð¾ <a \
href=\"@url\">документації по роботі PHP із \
зображеннÑми</a> щоб отримати інформацію по \
уÑуненню цієї помилки."
-
-msgid "CAPTCHA point administration"
-msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ CAPTCHA"
-
-msgid "JPEG"
-msgstr "JPEG"
-
-msgid "PNG"
-msgstr "PNG"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/LICENSE.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/LICENSE.txt old mode \
100644 new mode 100755
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/README.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/README.txt index \
0b1857e..921c0d3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/README.txt
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/README.txt
@@ -12,7 +12,7 @@ INTRODUCTION
Current Maintainer: Travis Carden <http://drupal.org/user/236758>
-Checklist API Provides a simple interface for modules to create fillable,
+Checklist API provides a simple interface for modules to create fillable,
persistent checklists that track progress with completion times and users. See
checklistapi_example.module for an example implementation.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.admin.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.admin.inc \
index 041612a..382e566 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.admin.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.admin.inc
@@ -13,6 +13,7 @@
* @ingroup forms
*/
function checklistapi_report_form() {
+ // Define table header.
$header = array(
t('Checklist'),
t('Progress'),
@@ -20,31 +21,36 @@ function checklistapi_report_form() {
t('Last updated by'),
t('Operations'),
);
+
+ // Build table rows.
+ $rows = array();
$definitions = checklistapi_get_checklist_info();
- if (count($definitions)) {
- $rows = array();
- foreach ($definitions as $id => $definition) {
- $checklist = checklistapi_checklist_load($id);
- $row = array();
- $row[] = array(
- 'data' => ($checklist->userHasAccess()) ? l($checklist->title, \
$checklist->path) : drupal_placeholder($checklist->title),
- 'title' => (!empty($checklist->description)) ? $checklist->description : '',
- );
- $row[] = t('@completed of @total (@percent%) complete', array(
- '@completed' => $completed = \
(!empty($checklist->savedProgress['#completed_items'])) ? \
$checklist->savedProgress['#completed_items'] : 0,
- '@total' => $checklist->totalItems,
- '@percent' => round($completed / $checklist->totalItems * 100),
- ));
- $row[] = (!empty($checklist->savedProgress['#changed'])) ? \
format_date($checklist->savedProgress['#changed']) : t('n/a');
- $row[] = (isset($checklist->savedProgress['#changed_by'])) ? theme('username', \
array('account' => \
user_load($checklist->savedProgress['#changed_by']))) : t('n/a');
- $row[] = ($checklist->userHasAccess('edit') && $checklist->hasSavedProgress()) \
? l(t('clear saved progress'), $checklist->path . '/clear', array(
- 'query' => array('destination' => 'admin/reports/checklistapi'),
- )) : '';
- $rows[] = $row;
- }
- }
- else {
- $rows[][] = array('data' => t('No checklists available.'), 'colspan' => 5);
+ foreach ($definitions as $id => $definition) {
+ $checklist = checklistapi_checklist_load($id);
+ $row = array();
+ $row[] = array(
+ 'data' => ($checklist->userHasAccess()) ? l($checklist->title, \
$checklist->path) : drupal_placeholder($checklist->title), + 'title' => \
(!empty($checklist->description)) ? $checklist->description : '', + );
+ $row[] = t('@completed of @total (@percent%)', array(
+ '@completed' => $checklist->getNumberCompleted(),
+ '@total' => $checklist->getNumberOfItems(),
+ '@percent' => round($checklist->getPercentComplete()),
+ ));
+ $row[] = $checklist->getLastUpdatedDate();
+ $row[] = $checklist->getLastUpdatedUser();
+ $row[] = ($checklist->userHasAccess('edit') && $checklist->hasSavedProgress()) ? \
l(t('clear saved progress'), $checklist->path . '/clear', array( + 'query' => \
array('destination' => 'admin/reports/checklistapi'), + )) : '';
+ $rows[] = $row;
}
- return theme('table', array('header' => $header, 'rows' => $rows));
+
+ // Compile table.
+ $table = array(
+ 'header' => $header,
+ 'rows' => $rows,
+ 'empty' => t('No checklists available.'),
+ );
+
+ return theme('table', $table);
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.api.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.api.php index \
93cd6a1..bc02a71 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.api.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.api.php
@@ -26,8 +26,9 @@
* corresponding menu item.
* - #help: (optional) User help to be displayed in the "System help" block
* via hook_help().
- * - #menu_name: (optional) Set this to a custom menu if you don't want your
- * item to be placed in Navigation.
+ * - #menu_name: (optional) The machine name of a menu to place the checklist
+ * into (e.g. "main-menu" or "navigation"). If this is omitted, Drupal will
+ * try to infer the correct menu placement from the specified path.
* - #weight: (optional) A floating point number used to sort the list of
* checklists before being output. Lower numbers appear before higher
* numbers.
@@ -61,14 +62,6 @@
* - #path: The link path.
* - #options: (optional) An associative array of additional options
* used by the l() function.
- * - #context: (optional) The context in which the link may appear. May
- * be one of the following:
- * - CHECKLISTAPI_LINK_CONTEXT_ANY: (default) The link will always
- * appear.
- * - CHECKLISTAPI_LINK_CONTEXT_ITEM_CHECKED: The link will appear if
- * the item it belongs to has been previously checked.
- * - CHECKLISTAPI_LINK_CONTEXT_ITEM_UNCHECKED: The link will appear if
- * the item it belongs to has not been previously checked.
* - #weight: (optional) A floating point number used to sort the list
* of items before being output. Lower numbers appear before higher
* numbers.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.css \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.css index \
4c7062d..b7cc6ea 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.css
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.css
@@ -9,3 +9,17 @@
#checklistapi-checklist-form.compact-mode div.description p {
display: none;
}
+
+/**
+ * Progress bar.
+ *
+ * @see system.theme.css
+ */
+#checklistapi-checklist-form .progress {
+ font-weight: normal;
+ margin-bottom: 0.5em;
+}
+#checklistapi-checklist-form .progress .bar,
+#checklistapi-checklist-form .progress .filled {
+ background-image: none;
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.info index \
30ef9a8..4224d78 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.info
@@ -6,9 +6,9 @@ files[] = lib/Drupal/checklistapi/ChecklistapiChecklist.php
files[] = tests/checklistapi.test
configure = admin/reports/checklistapi
-; Information added by drupal.org packaging script on 2012-07-22
-version = "7.x-1.0-beta3"
+; Information added by packaging script on 2013-11-11
+version = "7.x-1.1"
core = "7.x"
project = "checklistapi"
-datestamp = "1342935379"
+datestamp = "1384130305"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.install new \
file mode 100644 index 0000000..a42f1b0
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.install
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Install, update and uninstall functions for the Checklist API module.
+ */
+
+/**
+ * Implements hook_uninstall().
+ */
+function checklistapi_uninstall() {
+ // Delete all Checklist API persistent variables.
+ db_delete('variable')
+ ->condition('name', db_like('checklistapi_') . '%', 'LIKE')
+ ->execute();
+ cache_clear_all('variables', 'cache_bootstrap');
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.js index \
d40b105..c4c3707 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.js
@@ -1,31 +1,64 @@
(function ($) {
-
"use strict";
+
+ /**
+ * Provides the summary information for the checklist form vertical tabs.
+ */
Drupal.behaviors.checklistapiFieldsetSummaries = {
attach: function (context) {
-
- // Vertical tabs summaries.
$('#checklistapi-checklist-form .vertical-tabs-panes > fieldset', \
context).drupalSetSummary(function (context) {
var total = $(':checkbox.checklistapi-item', context).size(), args = {};
if (total) {
args['@complete'] = $(':checkbox.checklistapi-item:checked', \
context).size(); args['@total'] = total;
args['@percent'] = Math.round(args['@complete'] / args['@total'] * 100);
- return Drupal.t('@complete of @total (@percent%) complete', args);
+ return Drupal.t('@complete of @total (@percent%)', args);
}
});
+ }
+ };
- // Compact mode link.
+ /**
+ * Adds dynamic item descriptions toggling.
+ */
+ Drupal.behaviors.checklistapiCompactModeLink = {
+ attach: function (context) {
$('#checklistapi-checklist-form .compact-link a', context).click(function () {
+ $(this).closest('#checklistapi-checklist-form').toggleClass('compact-mode');
var is_compact_mode = \
$(this).closest('#checklistapi-checklist-form').hasClass('compact-mode'); $(this)
- .text((is_compact_mode) ? Drupal.t('Hide descriptions') : Drupal.t('Show \
descriptions'))
- .attr('title', (is_compact_mode) ? Drupal.t('Compress layout by hiding \
descriptions.') : Drupal.t('Expand layout to include descriptions.'))
- .closest('#checklistapi-checklist-form').toggleClass('compact-mode');
- document.cookie = 'Drupal.visitor.checklistapi_compact_mode=' + \
((is_compact_mode) ? 0 : 1); + .text(is_compact_mode ? Drupal.t('Show item \
descriptions') : Drupal.t('Hide item descriptions')) + .attr('title', \
is_compact_mode ? Drupal.t('Expand layout to include item descriptions.') : \
Drupal.t('Compress layout by hiding item descriptions.')); + document.cookie = \
'Drupal.visitor.checklistapi_compact_mode=' + (is_compact_mode ? 1 : 0); return \
false; });
+ }
+ };
+ /**
+ * Prompts the user if they try to leave the page with unsaved changes.
+ *
+ * Note: Auto-checked items are not considered unsaved changes for the purpose
+ * of this feature.
+ */
+ Drupal.behaviors.checklistapiPromptBeforeLeaving = {
+ getFormState: function () {
+ return $('#checklistapi-checklist-form \
:checkbox.checklistapi-item').serializeArray().toString(); + },
+ attach: function () {
+ var beginningState = this.getFormState();
+ $(window).bind('beforeunload', function () {
+ var endingState = \
Drupal.behaviors.checklistapiPromptBeforeLeaving.getFormState(); + if \
(beginningState !== endingState) { + return Drupal.t('Your changes will be \
lost if you leave the page without saving.'); + }
+ });
+ $('#checklistapi-checklist-form').submit(function() {
+ $(window).unbind('beforeunload');
+ });
+ $('#checklistapi-checklist-form .clear-saved-progress').click(function() {
+ $(window).unbind('beforeunload');
+ });
}
};
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.module index \
3cdd752..c229177 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.module
@@ -9,47 +9,30 @@
*/
/**
- * Link should always be shown.
- */
-define('CHECKLISTAPI_LINK_CONTEXT_ANY', 1);
-
-/**
- * Link should only be shown if the item it belongs to has been previously
- * checked.
- */
-define('CHECKLISTAPI_LINK_CONTEXT_ITEM_CHECKED', 2);
-
-/**
- * Link should only be shown if the item it belongs to has not been previously
- * checked.
- */
-define('CHECKLISTAPI_LINK_CONTEXT_ITEM_UNCHECKED', 3);
-
-/**
- * Access callback: Checks the current user's access to a checklist.
+ * Access callback: Checks the current user's access to a given checklist.
*
* @param string $id
* The checklist ID.
* @param string $operation
- * The operation to test access for. Possible values are "view", "edit", and
- * "any". Defaults to "any".
+ * (optional) The operation to test access for. Accepted values are "view",
+ * "edit", and "any". Defaults to "any".
*
* @return bool
* Returns TRUE if the current user has access to perform a given operation on
* the specified checklist, or FALSE if not.
*/
function checklistapi_checklist_access($id, $operation = 'any') {
- $view_access = user_access('view any checklistapi checklist') || user_access('view \
' . $id . ' checklistapi checklist');
- $edit_access = user_access('edit any checklistapi checklist') || user_access('edit \
' . $id . ' checklistapi checklist');
- switch ($operation) {
- case 'view':
- return $view_access;
- case 'edit':
- return $edit_access;
- case 'any':
- default:
- return $view_access || $edit_access;
+ $all_operations = array('view', 'edit', 'any');
+ if (!in_array($operation, $all_operations)) {
+ throw new Exception(t('No such operation "@operation"', array(
+ '@operation' => $operation,
+ )));
}
+
+ $access['view'] = user_access('view any checklistapi checklist') || \
user_access('view ' . $id . ' checklistapi checklist'); + $access['edit'] = \
user_access('edit any checklistapi checklist') || user_access('edit ' . $id . ' \
checklistapi checklist'); + $access['any'] = $access['view'] || $access['edit'];
+ return $access[$operation];
}
/**
@@ -79,10 +62,13 @@ function checklistapi_checklist_load($id) {
function checklistapi_get_checklist_info($id = NULL) {
$definitions = &drupal_static(__FUNCTION__);
if (!isset($definitions)) {
+ // Get definitions.
$definitions = module_invoke_all('checklistapi_checklist_info');
$definitions = checklistapi_sort_array($definitions);
+ // Let other modules alter them.
drupal_alter('checklistapi_checklist_info', $definitions);
$definitions = checklistapi_sort_array($definitions);
+ // Inject checklist IDs.
foreach ($definitions as $key => $value) {
$definitions[$key] = array('#id' => $key) + $definitions[$key];
}
@@ -120,6 +106,7 @@ function checklistapi_init() {
*/
function checklistapi_menu() {
$items = array();
+
// Checklists report.
$items['admin/reports/checklistapi'] = array(
'title' => 'Checklists',
@@ -128,43 +115,49 @@ function checklistapi_menu() {
'description' => 'Get an overview of your installed checklists with progress \
details.', 'file' => 'checklistapi.admin.inc',
);
+
// Individual checklists.
foreach (checklistapi_get_checklist_info() as $id => $definition) {
- if (!empty($definition['#path']) && !empty($definition['#title'])) {
- // View/edit checklist.
- $items[$definition['#path']] = array(
- 'title' => $definition['#title'],
- 'description' => (!empty($definition['#description'])) ? \
$definition['#description'] : '',
- 'page callback' => 'drupal_get_form',
- 'page arguments' => array('checklistapi_checklist_form', $id),
- 'access callback' => 'checklistapi_checklist_access',
- 'access arguments' => array($id),
- 'file' => 'checklistapi.pages.inc',
- );
- if (!empty($checklist['#menu_name'])) {
- $items[$definition['#path']]['menu_name'] = $definition['#menu_name'];
- }
- // Clear saved progress.
- $items[$definition['#path'] . '/clear'] = array(
- 'title' => 'Clear',
- 'page callback' => 'drupal_get_form',
- 'page arguments' => array('checklistapi_checklist_clear_confirm', $id),
- 'access callback' => 'checklistapi_checklist_access',
- 'access arguments' => array($id, 'edit'),
- 'file' => 'checklistapi.pages.inc',
- 'type' => MENU_CALLBACK,
- );
- // Toggle compact mode.
- $items[$definition['#path'] . '/compact'] = array(
- 'title' => 'Compact mode',
- 'page callback' => 'checklistapi_compact_page',
- 'access callback' => 'checklistapi_checklist_access',
- 'access arguments' => array($id),
- 'file' => 'checklistapi.pages.inc',
- 'type' => MENU_CALLBACK,
- );
+ if (empty($definition['#path']) || empty($definition['#title'])) {
+ continue;
+ }
+
+ // View/edit checklist.
+ $items[$definition['#path']] = array(
+ 'title' => $definition['#title'],
+ 'description' => (!empty($definition['#description'])) ? \
$definition['#description'] : '', + 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('checklistapi_checklist_form', $id),
+ 'access callback' => 'checklistapi_checklist_access',
+ 'access arguments' => array($id),
+ 'file' => 'checklistapi.pages.inc',
+ );
+ if (!empty($definition['#menu_name'])) {
+ $items[$definition['#path']]['menu_name'] = $definition['#menu_name'];
}
+
+ // Clear saved progress.
+ $items[$definition['#path'] . '/clear'] = array(
+ 'title' => 'Clear',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('checklistapi_checklist_clear_confirm', $id),
+ 'access callback' => 'checklistapi_checklist_access',
+ 'access arguments' => array($id, 'edit'),
+ 'file' => 'checklistapi.pages.inc',
+ 'type' => MENU_CALLBACK,
+ );
+
+ // Toggle compact mode.
+ $items[$definition['#path'] . '/compact'] = array(
+ 'title' => 'Compact mode',
+ 'page callback' => 'checklistapi_compact_page',
+ 'access callback' => 'checklistapi_checklist_access',
+ 'access arguments' => array($id),
+ 'file' => 'checklistapi.pages.inc',
+ 'type' => MENU_CALLBACK,
+ );
}
+
return $items;
}
@@ -173,6 +166,7 @@ function checklistapi_menu() {
*/
function checklistapi_permission() {
$perms = array();
+
// Universal permissions.
$perms['view checklistapi checklists report'] = array(
'title' => t(
@@ -188,25 +182,28 @@ function checklistapi_permission() {
'title' => t('Edit any checklist'),
'description' => $edit_checklist_perm_description = t('Check and uncheck list \
items and save changes, or clear saved progress.'), );
+
// Per checklist permissions.
foreach (checklistapi_get_checklist_info() as $id => $definition) {
- if (!empty($id)) {
- $perms['view ' . $id . ' checklistapi checklist'] = array(
- 'title' => t(
- 'View the !name checklist',
- array('!name' => (checklistapi_checklist_access($id)) ? \
l($definition['#title'], $definition['#path']) : \
drupal_placeholder($definition['#title']))
- ),
- 'description' => $view_checklist_perm_description,
- );
- $perms['edit ' . $id . ' checklistapi checklist'] = array(
- 'title' => t(
- 'Edit the !name checklist',
- array('!name' => (checklistapi_checklist_access($id)) ? \
l($definition['#title'], $definition['#path']) : \
drupal_placeholder($definition['#title']))
- ),
- 'description' => $edit_checklist_perm_description,
- );
+ if (empty($id)) {
+ continue;
}
+ $perms['view ' . $id . ' checklistapi checklist'] = array(
+ 'title' => t(
+ 'View the !name checklist',
+ array('!name' => (checklistapi_checklist_access($id)) ? \
l($definition['#title'], $definition['#path']) : \
drupal_placeholder($definition['#title'])) + ),
+ 'description' => $view_checklist_perm_description,
+ );
+ $perms['edit ' . $id . ' checklistapi checklist'] = array(
+ 'title' => t(
+ 'Edit the !name checklist',
+ array('!name' => (checklistapi_checklist_access($id)) ? \
l($definition['#title'], $definition['#path']) : \
drupal_placeholder($definition['#title'])) + ),
+ 'description' => $edit_checklist_perm_description,
+ );
}
+
return $perms;
}
@@ -224,33 +221,38 @@ function checklistapi_permission() {
*/
function checklistapi_sort_array(array $array) {
$child_keys = element_children($array);
- if (count($child_keys)) {
- $incrementer = 0;
- $children = array();
- foreach ($child_keys as $key) {
- // Move child to a temporary array for sorting.
- $children[$key] = $array[$key];
- unset($array[$key]);
- // Supply a default weight if missing or invalid.
- if (empty($children[$key]['#weight']) || \
!is_numeric($children[$key]['#weight'])) {
- $children[$key]['#weight'] = 0;
- }
- // Increase each weight incrementally to preserve the original order when
- // not overridden. This accounts for undefined behavior in PHP's uasort()
- // function when its comparison callback finds two values equal.
- $children[$key]['#weight'] += ($incrementer++ / 1000);
- // Descend into child.
- $children[$key] = checklistapi_sort_array($children[$key]);
- }
- // Sort by weight.
- uasort($children, 'element_sort');
- // Remove incremental weight hack.
- foreach ($children as $key => $child) {
- $children[$key]['#weight'] = floor($children[$key]['#weight']);
+
+ if (!count($child_keys)) {
+ // No children to sort.
+ return $array;
+ }
+
+ $incrementer = 0;
+ $children = array();
+ foreach ($child_keys as $key) {
+ // Move child to a temporary array for sorting.
+ $children[$key] = $array[$key];
+ unset($array[$key]);
+ // Supply a default weight if missing or invalid.
+ if (empty($children[$key]['#weight']) || \
!is_numeric($children[$key]['#weight'])) { + $children[$key]['#weight'] = 0;
}
- // Put children back in the main array.
- $array += $children;
+ // Increase each weight incrementally to preserve the original order when
+ // not overridden. This accounts for undefined behavior in PHP's uasort()
+ // function when its comparison callback finds two values equal.
+ $children[$key]['#weight'] += ($incrementer++ / 1000);
+ // Descend into child.
+ $children[$key] = checklistapi_sort_array($children[$key]);
}
+ // Sort by weight.
+ uasort($children, 'element_sort');
+ // Remove incremental weight hack.
+ foreach ($children as $key => $child) {
+ $children[$key]['#weight'] = floor($children[$key]['#weight']);
+ }
+ // Put children back in the main array.
+ $array += $children;
+
return $array;
}
@@ -279,8 +281,17 @@ function checklistapi_strtolowercamel($string) {
function checklistapi_theme() {
return array(
'checklistapi_compact_link' => array(
- 'variables' => array('id' => NULL),
'file' => 'checklistapi.pages.inc',
),
+ 'checklistapi_progress_bar' => array(
+ 'path' => drupal_get_path('module', 'checklistapi') . '/templates',
+ 'template' => 'checklistapi-progress-bar',
+ 'variables' => array(
+ 'message' => ' ',
+ 'number_complete' => 0,
+ 'number_of_items' => 0,
+ 'percent_complete' => 0,
+ ),
+ ),
);
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.pages.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.pages.inc \
index dd82ec9..9b832f3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.pages.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi.pages.inc
@@ -18,25 +18,25 @@
function checklistapi_checklist_clear_confirm($form, &$form_state, $id) {
$checklist = checklistapi_checklist_load($id);
$form['#checklist'] = $checklist;
- return confirm_form(
- $form,
- t('Are you sure you want to clear %title saved progress?', array(
- '%title' => $checklist->title,
- )),
- $checklist->path,
- t('All progress details will be erased. This action cannot be undone.'),
- t('Clear'),
- t('Cancel')
- );
+ $question = t('Are you sure you want to clear %title saved progress?', array(
+ '%title' => $checklist->title,
+ ));
+ $description = t('All progress details will be erased. This action cannot be \
undone.'); + $yes = t('Clear');
+ $no = t('Cancel');
+ return confirm_form($form, $question, $checklist->path, $description, $yes, $no);
}
/**
* Form submission handler for checklistapi_checklist_clear_confirm().
*/
function checklistapi_checklist_clear_confirm_submit($form, &$form_state) {
+ // If user confirmed, clear saved progress.
if ($form_state['values']['confirm']) {
$form['#checklist']->clearSavedProgress();
}
+
+ // Redirect back to checklist.
$form_state['redirect'] = $form['#checklist']->path;
}
@@ -53,12 +53,26 @@ function checklistapi_checklist_clear_confirm_submit($form, \
&$form_state) {
*/
function checklistapi_checklist_form($form, &$form_state, $id) {
$form['#checklist'] = $checklist = checklistapi_checklist_load($id);
+
+ $form['progress_bar'] = array(
+ '#type' => 'markup',
+ '#markup' => theme('checklistapi_progress_bar', array(
+ 'message' => ($checklist->hasSavedProgress()) ? t('Last updated @date by \
!user', array( + '@date' => $checklist->getLastUpdatedDate(),
+ '!user' => $checklist->getLastUpdatedUser(),
+ )) : ' ',
+ 'number_complete' => $checklist->getNumberCompleted(),
+ 'number_of_items' => $checklist->getNumberOfItems(),
+ 'percent_complete' => round($checklist->getPercentComplete()),
+ )),
+ );
if (checklistapi_compact_mode()) {
$form['#attributes']['class'] = array('compact-mode');
}
$form['compact_mode_link'] = array(
'#markup' => theme('checklistapi_compact_link'),
);
+
$form['checklistapi'] = array(
'#attached' => array(
'css' => array(drupal_get_path('module', 'checklistapi') . \
'/checklistapi.css'), @@ -67,6 +81,7 @@ function checklistapi_checklist_form($form, \
&$form_state, $id) { '#tree' => TRUE,
'#type' => 'vertical_tabs',
);
+
// Loop through groups.
$num_autochecked_items = 0;
$groups = $checklist->items;
@@ -79,6 +94,7 @@ function checklistapi_checklist_form($form, &$form_state, $id) {
if (!empty($group['#description'])) {
$form['checklistapi'][$group_key]['#description'] = \
filter_xss_admin($group['#description']); }
+
// Loop through items.
foreach (element_children($group) as $item_key) {
$item = &$group[$item_key];
@@ -112,21 +128,8 @@ function checklistapi_checklist_form($form, &$form_state, $id) {
$links = array();
foreach (element_children($item) as $link_key) {
$link = &$item[$link_key];
- $context = (!empty($link['#context'])) ? $link['#context'] : \
CHECKLISTAPI_LINK_CONTEXT_ANY;
- $show_link = FALSE;
- if ($context == CHECKLISTAPI_LINK_CONTEXT_ANY) {
- $show_link = TRUE;
- }
- elseif ($saved_item && $context == CHECKLISTAPI_LINK_CONTEXT_ITEM_CHECKED) {
- $show_link = TRUE;
- }
- elseif (!$saved_item && $context == \
CHECKLISTAPI_LINK_CONTEXT_ITEM_UNCHECKED) {
- $show_link = TRUE;
- }
- if ($show_link) {
- $options = (!empty($link['#options']) && is_array($link['#options'])) ? \
$link['#options'] : array();
- $links[] = l($link['#text'], $link['#path'], $options);
- }
+ $options = (!empty($link['#options']) && is_array($link['#options'])) ? \
$link['#options'] : array(); + $links[] = l($link['#text'], $link['#path'], \
$options); }
if (count($links)) {
$description .= '<div class="links">' . implode(' | ', $links) . '</div>';
@@ -142,6 +145,7 @@ function checklistapi_checklist_form($form, &$form_state, $id) {
);
}
}
+
$form['actions'] = array(
'#access' => $user_has_edit_access,
'#type' => 'actions',
@@ -153,6 +157,7 @@ function checklistapi_checklist_form($form, &$form_state, $id) {
),
'clear' => array(
'#access' => $checklist->hasSavedProgress(),
+ '#attributes' => array('class' => array('clear-saved-progress')),
'#href' => $checklist->path . '/clear',
'#title' => t('Clear saved progress'),
'#type' => 'link',
@@ -163,17 +168,16 @@ function checklistapi_checklist_form($form, &$form_state, $id) \
{ // to prevent it from reappearing after saving the form. (Testing the request
// method may not be the "correct" way to accomplish this.)
if ($num_autochecked_items && $_SERVER['REQUEST_METHOD'] == 'GET') {
- drupal_set_message(t(
- format_plural(
- $num_autochecked_items,
- '%checklist found 1 unchecked item that was already completed and checked it \
for you. Save the form to record the change.',
- '%checklist found @num unchecked items that were already completed and \
checked them for you. Save the form to record the changes.'
- ),
- array(
- '%checklist' => $checklist->title,
- '@num' => $num_autochecked_items,
- )
- ), 'status');
+ $args = array(
+ '%checklist' => $checklist->title,
+ '@num' => $num_autochecked_items,
+ );
+ $message = format_plural(
+ $num_autochecked_items,
+ t('%checklist found 1 unchecked item that was already completed and checked it \
for you. Save the form to record the change.', $args), + t('%checklist found \
@num unchecked items that were already completed and checked them for you. Save the \
form to record the changes.', $args) + );
+ drupal_set_message($message, 'status');
}
return $form;
@@ -200,7 +204,7 @@ function checklistapi_checklist_form_submit($form, &$form_state) \
{
* can be set in the settings.php file.
*
* @return bool
- * TRUE when in compact mode, FALSE when in expanded mode.
+ * TRUE when in compact mode, or FALSE when in expanded mode.
*/
function checklistapi_compact_mode() {
return isset($_COOKIE['Drupal_visitor_checklistapi_compact_mode']) ? \
$_COOKIE['Drupal_visitor_checklistapi_compact_mode'] : \
variable_get('checklistapi_compact_mode', FALSE); @@ -210,7 +214,8 @@ function \
checklistapi_compact_mode() {
* Menu callback: Sets whether the admin menu is in compact mode or not.
*
* @param string $mode
- * Valid values are 'on' and 'off'.
+ * (optional) The mode to set compact mode to. Accepted values are "on" and
+ * "off". Defaults to "off".
*/
function checklistapi_compact_page($mode = 'off') {
user_cookie_save(array('checklistapi_compact_mode' => ($mode == 'on')));
@@ -226,11 +231,11 @@ function theme_checklistapi_compact_link() {
$output = '<div class="compact-link">';
if (checklistapi_compact_mode()) {
$output .= l(
- t('Show descriptions'),
- request_path() . '/compact/off',
+ t('Show item descriptions'),
+ current_path() . '/compact/off',
array(
'attributes' => array(
- 'title' => t('Expand layout to include descriptions.'),
+ 'title' => t('Expand layout to include item descriptions.'),
),
'query' => drupal_get_destination(),
)
@@ -238,11 +243,11 @@ function theme_checklistapi_compact_link() {
}
else {
$output .= l(
- t('Hide descriptions'),
- request_path() . '/compact/on',
+ t('Hide item descriptions'),
+ current_path() . '/compact/on',
array(
'attributes' => array(
- 'title' => t('Compress layout by hiding descriptions.'),
+ 'title' => t('Compress layout by hiding item descriptions.'),
),
'query' => drupal_get_destination(),
)
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi_example/checklistapi_example.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi_example/checklistapi_example.info
index ad9f7ed..fe5e057 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi_example/checklistapi_example.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/checklistapi_example/checklistapi_example.info
@@ -5,9 +5,9 @@ package = Example modules
dependencies[] = checklistapi
configure = admin/config/development/checklistapi-example
-; Information added by drupal.org packaging script on 2012-07-22
-version = "7.x-1.0-beta3"
+; Information added by packaging script on 2013-11-11
+version = "7.x-1.1"
core = "7.x"
project = "checklistapi"
-datestamp = "1342935379"
+datestamp = "1384130305"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/lib/Drupal/checklistapi/ChecklistapiChecklist.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/lib/Drupal/checklistapi/ChecklistapiChecklist.php
index 2903c72..6a06b33 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/lib/Drupal/checklistapi/ChecklistapiChecklist.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/lib/Drupal/checklistapi/ChecklistapiChecklist.php
@@ -64,7 +64,7 @@ class ChecklistapiChecklist {
*
* @var int
*/
- public $totalItems = 0;
+ public $numberOfItems = 0;
/**
* The checklist groups and items.
@@ -88,7 +88,7 @@ class ChecklistapiChecklist {
*/
public function __construct(array $definition) {
foreach (element_children($definition) as $group_key) {
- $this->totalItems += count(element_children($definition[$group_key]));
+ $this->numberOfItems += count(element_children($definition[$group_key]));
$this->items[$group_key] = $definition[$group_key];
unset($definition[$group_key]);
}
@@ -100,6 +100,67 @@ class ChecklistapiChecklist {
}
/**
+ * Gets the total number of completed items.
+ *
+ * @return int
+ * The number of completed items.
+ */
+ public function getNumberCompleted() {
+ return (!empty($this->savedProgress['#completed_items'])) ? \
$this->savedProgress['#completed_items'] : 0; + }
+
+ /**
+ * Gets the total number of items.
+ *
+ * @return int
+ * The number of items.
+ */
+ public function getNumberOfItems() {
+ return $this->numberOfItems;
+ }
+
+ /**
+ * Gets the name of the last user to update the checklist.
+ *
+ * @return string
+ * The themed name of the last user to update the checklist, or 'n/a' if
+ * there is no record of such a user.
+ */
+ public function getLastUpdatedUser() {
+ if (isset($this->savedProgress['#changed_by'])) {
+ $last_updated_user = user_load($this->savedProgress['#changed_by']);
+ return theme('username', array('account' => $last_updated_user));
+ }
+ else {
+ return t('n/a');
+ }
+ }
+
+ /**
+ * Gets the last updated date.
+ *
+ * @return string
+ * The last updated date formatted with format_date(), or 'n/a' if there is
+ * no saved progress.
+ */
+ public function getLastUpdatedDate() {
+ return (!empty($this->savedProgress['#changed'])) ? \
format_date($this->savedProgress['#changed']) : t('n/a'); + }
+
+ /**
+ * Gets the percentage of items complete.
+ *
+ * @return float
+ * The percent complete.
+ */
+ public function getPercentComplete() {
+ if ($this->getNumberOfItems() == 0) {
+ return 100;
+ }
+ return ($this->getNumberCompleted() / $this->getNumberOfItems()) * 100;
+ }
+
+ /**
* Clears the saved progress for the checklist.
*
* Deletes the Drupal variable containing the checklist's saved progress.
@@ -118,7 +179,7 @@ class ChecklistapiChecklist {
* The Drupal variable name.
*/
public function getSavedProgressVariableName() {
- return 'checklistapi_checklist_' . $this->id;
+ return "checklistapi_checklist_{$this->id}";
}
/**
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/templates/checklistapi-progress-bar.tpl.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/templates/checklistapi-progress-bar.tpl.php
new file mode 100644
index 0000000..383dbf8
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/templates/checklistapi-progress-bar.tpl.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @file
+ * Default theme implementation for the Checklist API progress bar.
+ *
+ * Available variables:
+ * - $message: The progress message.
+ * - $number_complete: The number of items complete.
+ * - $number_of_items: The total number of items.
+ * - $percent_complete: The percent of items complete.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_checklistapi_progress_bar()
+ * @see template_process()
+ */
+?>
+<div class="progress">
+ <div class="bar"><div class="filled" style="width:<?php print $percent_complete; \
?>%;"></div></div> + <div class="percentage"><?php print $number_complete; ?> of \
<?php print $number_of_items; ?> (<?php print $percent_complete; ?>%)</div> + <div \
class="message"><?php print $message; ?></div> +</div>
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/checklistapi.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/checklistapi.test \
index 816216d..d96c3f1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/checklistapi.test
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/checklistapi.test
@@ -11,7 +11,7 @@
class ChecklistapiUnitTestCase extends DrupalUnitTestCase {
/**
- * Overrides DrupalUnitTestCase::getInfo().
+ * {@inheritdoc}
*/
public static function getInfo() {
return array(
@@ -22,7 +22,7 @@ class ChecklistapiUnitTestCase extends DrupalUnitTestCase {
}
/**
- * Overrides DrupalUnitTestCase::setUp().
+ * {@inheritdoc}
*/
public function setUp() {
drupal_load('module', 'checklistapi');
@@ -34,7 +34,8 @@ class ChecklistapiUnitTestCase extends DrupalUnitTestCase {
* Test checklistapi_sort_array().
*/
public function testChecklistapiSortArray() {
- $input = array_pop(checklistapi_test_checklistapi_checklist_info());
+ $checklistapi_test_definition = checklistapi_test_checklistapi_checklist_info();
+ $input = array_pop($checklistapi_test_definition);
$output = checklistapi_sort_array($input);
$this->assertEqual($output['group_two']['#weight'], 0, 'Supplied a default for \
omitted element weight.');
$this->assertEqual($output['group_three']['#weight'], 0, 'Supplied a default in \
place of invalid element weight.'); @@ -71,7 +72,7 @@ class ChecklistapiWebTestCase \
extends DrupalWebTestCase { protected $privilegedUser;
/**
- * Overrides DrupalWebTestCase::getInfo().
+ * {@inheritdoc}
*/
public static function getInfo() {
return array(
@@ -82,7 +83,7 @@ class ChecklistapiWebTestCase extends DrupalWebTestCase {
}
/**
- * Overrides DrupalWebTestCase::setUp().
+ * {@inheritdoc}
*/
public function setUp() {
parent::setUp('checklistapi_example');
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/modules/checklistapi_test/checklistapi_test.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/modules/checklistapi_test/checklistapi_test.info
index fba8b9c..13a6848 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/modules/checklistapi_test/checklistapi_test.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/checklistapi/tests/modules/checklistapi_test/checklistapi_test.info
@@ -6,9 +6,9 @@ core = 7.x
dependencies[] = checklistapi
hidden = TRUE
-; Information added by drupal.org packaging script on 2012-07-22
-version = "7.x-1.0-beta3"
+; Information added by packaging script on 2013-11-11
+version = "7.x-1.1"
core = "7.x"
project = "checklistapi"
-datestamp = "1342935379"
+datestamp = "1384130305"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/CHANGELOG.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/CHANGELOG.txt index \
0e72a24..d47e6ea 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/CHANGELOG.txt
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/CHANGELOG.txt
@@ -1,3 +1,23 @@
+2013-04-12
+New stable release 7.x-1.13
+
+Bug fixes:
+
+[#1063482] by nod_, wwalc, roderik, helior, hadsie: Use Libraries API for CKEditor
+[#1898294] by kscheirer: Fatal error if Libraries module is enabled after CKEditor
+[#1961596] by jcisio: Added 'feature_source()' option so that ckeditor_profile() \
component is visible in drush. +[#1356026] by Volx, hctom: Fixed Profile loses text \
formats when exported into a feature using Drush. +[#1895278] by wwalc WYSIWYG editor \
should allow Drupal to trigger 'formUpdated' event +[#1957066] by rudiedirkx: Use \
field_extra_fields to be able to position the "Rich text editor settings" fieldset \
+[#1959754] by wwalc: CKFinder is not installed correctly - improve information in \
the status report +[#1810910] by mokaspar, jcisio, DeFr: Fixed Comments gets filtered \
out by ckeditor_filter_xss(). +[#1909318] by Simon Georges: Useless file inclusion in \
ckeditor.info. +[#1603014] by anou, SebCorbin: Corrected strings used in Security \
section. +[#1889010] by michal_cksource: Problem with CKFinder files upload when \
private download method is used +[#1885950] by michal_cksource: Fix HTML validation \
for iframe in profile configuration +[#1885938] by michal_cksource: Disable div based \
editor on default +[#1872064] by dczepierga: Undefined index: loadPlugins in \
ckeditor_modules_disabled() and ckeditor_modules_uninstalled() +
2012-12-22
New stable release 7.x-1.12
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.api.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.api.php index \
447cea0..b9b91d6 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.api.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.api.php
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.config.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.config.js index \
ef4c43d..01def49 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.config.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.config.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.info index \
a5bf444..76f725f 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.info
@@ -3,10 +3,10 @@ description = "Enables CKEditor (WYSIWYG HTML editor) for use \
instead of plain t core = 7.x
package = User interface
configure = admin/config/content/ckeditor
-files[] = includes/ckeditor.user.inc
-; Information added by drupal.org packaging script on 2012-12-22
-version = "7.x-1.12"
+
+; Information added by drupal.org packaging script on 2013-04-12
+version = "7.x-1.13"
core = "7.x"
project = "ckeditor"
-datestamp = "1356180966"
+datestamp = "1365759619"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.install index \
b35281d..1a6eadb 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.install
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.install
@@ -300,9 +300,10 @@ function \
_ckeditor_requirements_ckfinder_config_check($profile_name) { $config_path = \
ckfinder_path('local') . '/config.php';
if (!file_exists($config_path)) {
- return t('!ckfinder is not installed correctly: <code>!config</code> not found. \
Make sure that you uploaded all files and did not accidentally remove the \
configuration file.', array( + return t('!ckfinder is not installed correctly: \
<code>!config</code> not found. Make sure that you uploaded all files and did not \
accidentally remove the configuration file. If you installed CKFinder in other \
location (e.g. in the libraries folder), make sure to update the path to CKFinder in \
!global.', array( '!config' => $config_path,
- '!ckfinder' => '<a href="http://ckfinder.com">CKFinder</a>'
+ '!ckfinder' => '<a href="http://cksource.com/ckfinder">CKFinder</a>',
+ '!global' => l(t('CKEditor Global Profile'), \
'admin/config/content/ckeditor/editg') ));
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.module index \
ab868ee..809b201 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.module
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
@@ -299,7 +299,7 @@ function ckeditor_pre_render_text_format($element) {
/**
* Load all profiles. Just load one profile if $name is passed in.
*/
-function ckeditor_profile_load($name = '', $clear = FALSE) {
+function ckeditor_profile_load($name = '', $clear = FALSE, $check_access = TRUE) {
static $profiles = array();
global $user;
@@ -311,7 +311,12 @@ function ckeditor_profile_load($name = '', $clear = FALSE) {
$profiles[$data->name] = $data;
}
- $input_formats = filter_formats($user);
+ if ($check_access === FALSE) {
+ // don't check if user has access to filter formats, needed for exporting as \
feature with drush + $input_formats = filter_formats();
+ } else {
+ $input_formats = filter_formats($user);
+ }
$result = db_select('ckeditor_input_format', 'f')->fields('f')->execute();
foreach ($result as $data) {
if (isset($input_formats[$data->format])) {
@@ -361,14 +366,22 @@ function ckeditor_module_path($mode = 'relative') {
* Path of library in the Drupal installation.
*/
function ckeditor_library_path($mode = 'relative') {
+ $lib_path = 'sites/all/libraries';
+
+ if (function_exists('libraries_get_path')) {
+ $path = libraries_get_path('ckeditor');
+ if ($path !== FALSE) {
+ $lib_path = drupal_substr($path, 0, strlen($path) - 9);
+ }
+ }
switch ($mode) {
default:
case 'relative':
- return ckeditor_base_path('relative') . '/sites/all/libraries';
+ return ckeditor_base_path('relative') . '/' . $lib_path;
case 'local':
- return ckeditor_base_path('local') . '/sites/all/libraries';
+ return ckeditor_base_path('local') . '/' . $lib_path;
case 'url':
- return 'sites/all/libraries';
+ return $lib_path;
}
}
@@ -545,6 +558,7 @@ function ckeditor_features_api() {
return array(
'ckeditor_profile' => array(
'name' => t('CKEditor profiles'),
+ 'feature_source' => TRUE,
'default_hook' => 'ckeditor_profile_defaults',
'default_file' => FEATURES_DEFAULTS_INCLUDED,
'file' => drupal_get_path('module', 'ckeditor') . \
'/includes/ckeditor.features.inc', @@ -603,6 +617,10 @@ function \
ckeditor_file_download($uri) {
*/
function ckeditor_modules_enabled($modules) {
module_load_include('inc', 'ckeditor', 'includes/ckeditor.lib');
+ if (in_array('libraries', $modules)) {
+ // Check and update path to CKEditor in the global profile
+ _ckeditor_requirements_isinstalled();
+ }
$profiles_list = ckeditor_profile_input_formats();
$plugins_list = ckeditor_load_plugins();
foreach ($profiles_list AS $_profile => $_inputs) {
@@ -638,6 +656,7 @@ function ckeditor_modules_disabled($modules) {
foreach ($profiles_list AS $_profile => $_inputs) {
$changed = FALSE;
$profile = ckeditor_profile_load($_profile);
+ if (!isset($profile->settings['loadPlugins'])) continue;
foreach (array_keys((array) $profile->settings['loadPlugins']) as $plugin_name) \
{ if (!array_key_exists($plugin_name, $plugins_list)) {
$profile->settings['loadPlugins'][$plugin_name]['active'] = 0;
@@ -667,6 +686,7 @@ function ckeditor_modules_uninstalled($modules) {
foreach ($profiles_list AS $_profile => $_inputs) {
$changed = FALSE;
$profile = ckeditor_profile_load($_profile);
+ if (!isset($profile->settings['loadPlugins'])) continue;
foreach (array_keys((array) $profile->settings['loadPlugins']) as $plugin_name) \
{ if (!array_key_exists($plugin_name, $plugins_list)) {
unset($profile->settings['loadPlugins'][$plugin_name]);
@@ -682,4 +702,17 @@ function ckeditor_modules_uninstalled($modules) {
->execute();
}
}
-}
\ No newline at end of file
+}
+
+
+/**
+ * Implements hook_field_extra_fields().
+ */
+function ckeditor_field_extra_fields() {
+ $fields['user']['user']['form']['ckeditor'] = array(
+ 'label' => t('Rich text editor settings'),
+ 'description' => t('Rich text editor settings'),
+ 'weight' => 10,
+ );
+ return $fields;
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.styles.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.styles.js index \
fc80b18..b87d4b0 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.styles.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/ckeditor.styles.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.inc \
index b3c576f..88ff948 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.inc
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
@@ -350,7 +350,7 @@ function ckeditor_admin_global_profile_form($form, $form_state, \
$mode = 'add') { '#maxlength' => 128,
'#description' => t(
'The path to CKFinder (AJAX based file manager downloaded from !ckfindercom) \
relative to the document root.', array(
- '!ckfindercom' => l(t('ckfinder.com'), 'http://ckfinder.com/download')
+ '!ckfindercom' => l(t('ckfinder.com'), 'http://cksource.com/ckfinder')
)
) .
'<br />' .
@@ -676,7 +676,7 @@ function ckeditor_admin_profile_form($form, $form_state, $profile \
= NULL) { '#type' => 'item',
'#title' => t('Security filters'),
'#description' => t(
- 'Below is a list of security filters along with their status for each text \
format.<br/><br/>The following statuses are available:!img_enabled - the filter is \
configured for a given text format and will be run on the content during the \
filtering proces.!img_disabled - the filter is disabled for a given text format and \
will not be run on the content during the filtering process.<br/><br/>In order to \
modify the security filters settings for each of the text formats, you need to visit \
the text format configuration sections as listed below: !elem_format_config', array( \
+ 'Below is a list of security filters along with their status for each text \
format.<br /><br />The following statuses are available: !img_enabled - the filter is \
configured for a given text format and will be run on the content during the \
filtering process. !img_disabled - the filter is disabled for a given text format and \
will not be run on the content during the filtering process.<br /><br />In order to \
modify the security filters settings for each of the text formats, you need to visit \
the text format configuration sections as listed below: \
!elem_format_config', array(
'!img_enabled' => '</br><img src="' . $module_drupal_path . \
'/images/tick.png"/>',
'!img_disabled' => '</br><img src="' . $module_drupal_path . \
'/images/delete.png"/>', '!elem_format_config' => '<ul \
class="text-formats-config"></ul>' @@ -875,7 +875,7 @@ function \
ckeditor_admin_profile_form($form, $form_state, $profile = NULL) { \
$form['appearance']['use_divarea'] = array( '#type' => 'radios',
'#title' => t('"Div-based" editor'),
- '#default_value' => !empty($profile->settings['use_divarea']) ? \
$profile->settings['use_divarea'] : 't', + '#default_value' => \
!empty($profile->settings['use_divarea']) ? $profile->settings['use_divarea'] : 'f', \
'#options' => array( 't' => t('Enabled'),
'f' => t('Disabled')
@@ -1111,7 +1111,7 @@ function ckeditor_admin_profile_form($form, $form_state, \
$profile = NULL) { 'Set the file browser settings. A file browser will allow you to \
browse the files stored on the server and embed them as links, images, or Flash \
movies. CKEditor is compatible with such Drupal modules as !imce or !elfinder. \
CKEditor can be also integrated with !ckfinder, an advanced Ajax file manager.', \
array( '!imce' => l(t('IMCE'), 'http://drupal.org/project/imce'),
'!elfinder' => l(t('elFinder'), 'http://drupal.org/project/elfinder'),
- '!ckfinder' => l(t('CKFinder'), 'http://ckfinder.com')
+ '!ckfinder' => l(t('CKFinder'), 'http://cksource.com/ckfinder')
)
)
);
@@ -1744,7 +1744,7 @@ function _ckeditor_admin_profile_form_security_filters(&$form, \
$profile, $securi '#type' => 'item',
'#title' => t("@data", array('@data' => $filter_conf['title'])),
'#description' => t("!data", array('!data' => \
$filter_conf['description'])),
- '#prefix' => t("<div class=\"filter-wrapper\"></div>!formats", \
array("!formats" => $filter_text_formats)), + '#prefix' => "<div \
class=\"filter-wrapper\"></div>" . $filter_text_formats, '#suffix' => "</div>"
);
}
@@ -1768,14 +1768,15 @@ function ckeditor_skinframe() {
$module_drupal_path = ckeditor_module_path('relative');
$html = "<!DOCTYPE html>";
+ $html .= "<html>";
$html .= "<head>";
- $html .= "<script src=\"{$editor_path}/ckeditor.js\"></script>";
+ $html .= '<title>CKEditor UI Color Picker</title>';
+ $html .= "<script type=\"text/javascript\" \
src=\"{$editor_path}/ckeditor.js\"></script>"; $html .= "</head>";
$html .= "<body>";
$html .= "<input type=\"hidden\" name=\"uicolor_user\"/>";
$html .= "<div id=\"editor\" style=\"height: 200px;\">Click the <strong>UI Color \
Picker</strong> button to set your color preferences.</div>";
- $html .= "
-<script>
+ $html .= "<script type=\"text/javascript\">
var skin = window.location.search.match(/skin=([^&]*)/)[1];
var uicolor = window.location.search.match(/uicolor=([^&]*)/)[1];
var ckeditorUiColorOnChange = function() {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.js \
index f1d169f..39809ae 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.admin.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
(function ($) {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.drush.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.drush.inc \
index 1d23960..05e12b1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.drush.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.drush.inc
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.features.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.features.inc \
index ee5b517..c68c5a9 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.features.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.features.inc
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
@@ -73,7 +73,7 @@ function ckeditor_profile_features_export_render($module_name, \
$data) { $profiles = array();
$roles = user_roles();
foreach ($data as $name) {
- $profile = (array) ckeditor_profile_load($name);
+ $profile = (array) ckeditor_profile_load($name, TRUE, FALSE);
$profiles[$name] = $profile;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.lib.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.lib.inc \
index e054d16..4fa5d68 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.lib.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.lib.inc
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
@@ -655,7 +655,7 @@ function _ckeditor_script_path() {
elseif (file_exists($module_path . '/ckeditor/ckeditor/ckeditor.js')) {
$jspath = '%m/ckeditor/ckeditor';
}
- elseif (file_exists('sites/all/libraries/ckeditor/ckeditor.js')) {
+ elseif (file_exists(ckeditor_library_path('url') . '/ckeditor/ckeditor.js')) {
$jspath = '%l/ckeditor';
}
return $jspath;
@@ -830,8 +830,8 @@ function ckeditor_profile_settings_compile($global_profile, \
$profile) { }
//add support for divarea plugin from CKE4
- if (((isset($conf['use_divarea']) && $conf['use_divarea'] == 't') || \
!isset($conf['use_divarea'])) && file_exists($editor_local_path . \
'/plugins/divarea/plugin.js')) {
- $settings['loadPlugins']['divarea'] = array('name' => 'divarea', 'path' => \
$editor_path . '/plugins/divarea/', 'buttons' => FALSE, 'default' => 't'); + if \
(isset($conf['use_divarea']) && $conf['use_divarea'] == 't' && \
file_exists($editor_local_path . '/plugins/divarea/plugin.js')) { + \
$settings['loadPlugins']['divarea'] = array('name' => 'divarea', 'path' => \
$editor_path . '/plugins/divarea/', 'buttons' => FALSE, 'default' => 'f'); }
if (isset($conf['html_entities']) && $conf['html_entities'] == 'f') {
@@ -952,16 +952,25 @@ function ckeditor_profile_settings_compile($global_profile, \
$profile) { $_SESSION['ckeditor'][$profile_name]['UserFilesAbsolutePath'] = \
strtr('%d%b%f/', array("%f" => variable_get('file_public_path', conf_path() . \
'/files'), "%u" => $user->uid, "%b" => base_path(), "%d" => \
ckeditor_get_document_root_full_path(), "%n" => $user->name)); }
if (variable_get('file_default_scheme', '') == 'private') {
- $private_dir = isset($global_profile->settings['private_dir']) ? \
trim($global_profile->settings['private_dir'], '\/') : ''; + $private_dir = \
isset($global_profile->settings['private_dir']) ? \
trim($global_profile->settings['private_dir'], '/') : ''; if (!empty($private_dir)) \
{
$private_dir = strtr($private_dir, array('%u' => $user->uid, '%n' => \
$user->name));
$_SESSION['ckeditor'][$profile_name]['UserFilesPath'] = \
url('system/files') . '/' . $private_dir . '/';
- $_SESSION['ckeditor'][$profile_name]['UserFilesAbsolutePath'] = \
variable_get('file_private_path', '') . DIRECTORY_SEPARATOR . $private_dir . \
DIRECTORY_SEPARATOR; + $private_upload_path = file_uri_target('private://' . \
variable_get('file_private_path', '')) . '/' . $private_dir; }
else {
$_SESSION['ckeditor'][$profile_name]['UserFilesPath'] = \
url('system/files') . '/';
- $_SESSION['ckeditor'][$profile_name]['UserFilesAbsolutePath'] = \
variable_get('file_private_path', '') . DIRECTORY_SEPARATOR; + \
$private_upload_path = file_uri_target('private://' . \
variable_get('file_private_path', '')); }
+ //add '/' to beginning of path if necessary
+ if (strpos(variable_get('file_private_path', ''), '/') === 0 && \
$private_upload_path[0] != '/') { + $private_upload_path = '/' . \
$private_upload_path; + }
+ //check if CKEditor private dir exists and create it if not
+ if ($private_dir && !is_dir($private_upload_path)) {
+ mkdir($private_upload_path, 0755, TRUE);
+ }
+ $_SESSION['ckeditor'][$profile_name]['UserFilesAbsolutePath'] = \
drupal_realpath($private_upload_path) . '/'; }
}
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.page.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.page.inc \
index c207a64..ba74242 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.page.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.page.inc
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
@@ -160,7 +160,7 @@ function ckeditor_help_delegate($path, $arg) {
'<ol>' .
'<li>' .
t('By using !ckfinder (commercial), an advanced Ajax file manager.', \
array(
- '!ckfinder' => l(t('CKFinder'), 'http://ckfinder.com'),
+ '!ckfinder' => l(t('CKFinder'), 'http://cksource.com/ckfinder'),
)
) .
'</li>' .
@@ -215,7 +215,7 @@ function ckeditor_filter_xss() {
if ($name == 'filter_html' && $security_filters['filters']['filter_html'] == 1) \
{
preg_match_all("|</?([a-z][a-z0-9]*)(?:\b[^>]*)>|i", $text, $matches);
if ($matches[1]) {
- $tags = array_unique($matches[1]);
+ $tags = array_unique(array_merge($matches[1], array('!--')));
$text = filter_xss($text, $tags);
}
continue;
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.user.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.user.inc \
index 063f1bc..11c667d 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.user.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.user.inc
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.utils.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.utils.js \
index 27552a4..17a1769 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.utils.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/ckeditor.utils.js
@@ -51,6 +51,16 @@ window.CKEDITOR_BASEPATH = Drupal.settings.ckeditor.editor_path;
else {
CKEDITOR.addCss(ev.editor.config.extraCss);
}
+ // Let Drupal trigger formUpdated event [#1895278]
+ ev.editor.on('change', function(ev) {
+ $(ev.editor.element.$).trigger('change');
+ });
+ ev.editor.on('blur', function(ev) {
+ $(ev.editor.element.$).trigger('blur');
+ });
+ ev.editor.on('focus', function(ev) {
+ $(ev.editor.element.$).trigger('click');
+ });
},
instanceReady : function(ev)
{
@@ -78,13 +88,20 @@ window.CKEDITOR_BASEPATH = Drupal.settings.ckeditor.editor_path;
body.attr('id', ev.editor.config.bodyId);
if (typeof(Drupal.smileysAttach) != 'undefined' && \
typeof(ev.editor.dataProcessor.writer) != 'undefined') \
ev.editor.dataProcessor.writer.indentationChars = ' '; +
+ // Let Drupal trigger formUpdated event [#1895278]
+ ((ev.editor.editable && ev.editor.editable()) || \
ev.editor.document.getBody()).on( 'keyup', function() { + \
$(ev.editor.element.$).trigger('keyup'); + });
+ ((ev.editor.editable && ev.editor.editable()) || \
ev.editor.document.getBody()).on( 'keydown', function() { + \
$(ev.editor.element.$).trigger('keydown'); + });
},
focus : function(ev)
{
Drupal.ckeditorInstance = ev.editor;
Drupal.ckeditorActiveId = ev.editor.name;
- }
- ,
+ },
afterCommandExec: function(ev)
{
if (ev.data.name != 'maximize') {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/filemanager.config.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/filemanager.config.php
index ea80deb..0adfe49 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/filemanager.config.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/filemanager.config.php
@@ -2,7 +2,7 @@
/**
* CKEditor - The text editor for the Internet - http://ckeditor.com
- * Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
*
* == BEGIN LICENSE = *
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/jqueryUI/sort.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/jqueryUI/sort.js \
index 1598773..5acea57 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/jqueryUI/sort.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/jqueryUI/sort.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
jQuery(document).ready(function() {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/dialogs/uicolor.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/dialogs/uicolor.js
index 86c1d3a..16ddf2e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/dialogs/uicolor.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/dialogs/uicolor.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/bg.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/bg.js \
index 8447d0e..96e28ef 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/bg.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/bg.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cs.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cs.js \
index 94ddba9..048ad31 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cs.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cs.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cy.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cy.js \
index d8322bd..6e4adb8 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cy.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/cy.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/da.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/da.js \
index eb4965f..10040a8 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/da.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/da.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/de.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/de.js \
index 9c303d9..b469f10 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/de.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/de.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/el.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/el.js \
index 7be30c4..a84deea 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/el.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/el.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/en.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/en.js \
index fbae027..80ad586 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/en.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/en.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/eo.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/eo.js \
index a8efd89..ac2c79b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/eo.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/eo.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/et.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/et.js \
index 6a13b07..e2c4871 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/et.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/et.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fa.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fa.js \
index 87ca9c3..98f0187 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fa.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fa.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fi.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fi.js \
index 111eb69..08c2ac1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fi.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fi.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fr.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fr.js \
index 3feab4b..aa40c7b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fr.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/fr.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/he.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/he.js \
index bbe2f21..7f9db2f 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/he.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/he.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/hr.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/hr.js \
index c3d2e5b..f328bae 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/hr.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/hr.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/it.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/it.js \
index 02065f5..58b4939 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/it.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/it.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/mk.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/mk.js \
index 3d01092..880eee0 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/mk.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/mk.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nb.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nb.js \
index 5758be1..611ccce 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nb.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nb.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nl.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nl.js \
index 103152f..ac383f5 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nl.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/nl.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/no.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/no.js \
index 6b979e4..4b7e729 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/no.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/no.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/pl.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/pl.js \
index 34c8163..2104dd9 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/pl.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/pl.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/tr.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/tr.js \
index d1920bf..56c683b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/tr.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/tr.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/ug.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/ug.js \
index b067647..4eee7df 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/ug.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/ug.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/uk.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/uk.js \
index d0c8ee3..7c738bd 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/uk.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/uk.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/vi.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/vi.js \
index 090329b..0dc823a 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/vi.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/vi.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/zh-cn.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/zh-cn.js \
index a0a3b33..df03892 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/zh-cn.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/lang/zh-cn.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/plugin.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/plugin.js \
index 9ced4cc..cc638da 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/plugin.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/includes/uicolor/plugin.js
@@ -1,5 +1,5 @@
/**
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights \
reserved. + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All \
rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/drupalbreaks/plugin.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/drupalbreaks/plugin.js \
index 62f0157..57e9887 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/drupalbreaks/plugin.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/drupalbreaks/plugin.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/imce/plugin.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/imce/plugin.js index \
f5fd882..7be4ded 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/imce/plugin.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/imce/plugin.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/media/plugin.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/media/plugin.js index \
c5c39fe..363f843 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/media/plugin.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/media/plugin.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/dialogs/mediaembed.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/dialogs/mediaembed.js
index d6bf683..6f49f62 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/dialogs/mediaembed.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/dialogs/mediaembed.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/plugin.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/plugin.js \
index 14ae934..1412331 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/plugin.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/ckeditor/plugins/mediaembed/plugin.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/CHANGELOG.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/CHANGELOG.txt index \
99e8fb0..8c00161 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/CHANGELOG.txt
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/CHANGELOG.txt
@@ -1,9 +1,45 @@
Date Module 7.x
================
-==================-Version 7.x-2.x-dev
-==================+
+=====================+Version 7.x-2.7
+=====================+- Issue #1691342 by Cyberwolf: Field description is displayed \
multiple times. +- Issue #1668240 by ianthomas_uk: /themes/jquery.timeentry.css is \
not aggregated with other CSS files. +- Issue #1974056 by pjcdawkins: Add a CSS class \
to the date repeat rule. +- Issue #2065749 by vijaycs85, blackdog: $class in \
theme_date_repeat_rrule is not used. +- Issue #1840008 by cr0ss, Alan D.: Unlock \
"Date attributes" (granularity) field setting. +- Issue #1580032 by jmuzz | 30equals: \
Date values are not being saved when field is used in a nested field collection. +- \
Issue #2071629 by blackdog: #after_build wrongly added, overwrites other modules. +- \
Issue #1869962 by kaidjohnson: Date Context breaks context edit form. +- Issue \
#1571258 by David_Rothstein | ddalvi: Date and time form elements do not have \
accessible labels when the label position is set to 'Within' or 'None'. +- Issue \
#2130575 by kostajh: Unset() should be used with more caution in \
views_filter_handler_simple().inc. +- Issue #1826598 by eromba, jyee: 'c' and 'r' \
formatter causes date to be printed twice in views. +- Issue #1933472 by \
minorOffense: Added Optimize date_now() function. +- Issue #1248786 by kenneth.venken \
| dboulet: Fixed appearance of marker for required date fields. +- Issue #1810734 by \
ParisLiakos: Fixed Repeat checkboxes working reversed with updated jQuery. +- Issue \
#1844092 by dboulet, kardave, Spleshka: Fixed Untranslated strings: month, day, ... \
+- Issue #1202248 by james.williams, dawehner, mikehues | DamienMcKenna: Fixed \
Exported view doesn't include 'default_argument_options()' attribute. +- Issue \
#1409120 by anrikun, akamustang | marsbidon: Added Date format in views exposed \
filter does not respect configured format. +- Issue #1858112 by tomdearden: Fixed \
DateObject->difference not calculating correctly for future dates > 1 year away. +- \
Issue #1659466 by artkon: Fixed Date filter does not remember value in views if the \
identifier is something other than date_filter(). +- Issue #1905096 by gielfeldt: \
Fixed Wrong usage of database API. +- Issue #1791804 by 5n00py: Errors on form \
validation if date field placed in sub-form. +- Issue [#636208] Date range: Expose a \
single filter to select events that start before the chosen date and end after the \
chosen date by anrikun. +- Issue [#2024269] Date popup documentation fix by \
RoySegall. +- Issue [#1835184] by Steven Jones, das-peter, jwhat: Fixed \
date_limit_format() can have poor performance. +- Issue [#991830] by milesw | \
restyler: Fixed validation errors when date_popup() date is localized. +- Issue \
[#2098715] by jhodgdon: Fixed Date field not obeying widget alters for #required. +- \
Issue [#1266688] by linclark, rbayliss, fago, colette: Support microdata in date \
fields. +- Issue [#1863610] by maximpodorov: Fixed Invalid date formatting.
+- META [#2034231] [#1832544] Class registration for Migrate 2.5 or later - mikeryan, \
[#1835214] Automated tests failing - Exception thrown in Date2 migration - \
PatchRanger, [# +- Issue [#1350604] by Alan D., johaziel: Added Diff support for Date \
fields. +- Issue [#2086313] by dooug: Fixed Wrong path in date_popup() README.txt
+- Issue [#1455558] by BTMash | mediameriquat: Fixed Missing file in \
date_views().info causes error 500. +- Issue [#1697322] by Alan D., ianmthomasuk | \
pandikamal: Fixed Call to a member function getName() on a non-object in date api. +- \
Code cleanup, remove #prev values that were never used in repeat functionality. +- \
Small fix needed to ensure cardinality gets set correctly if repeat option is changed \
in the UI.
===================== Version 7.x-2.6
@@ -110,7 +146,7 @@ Version 7.x-2.1
- Issue #1437242 by zerbash, Remove extraneous leading slashes in \
module_load_include().
- Issue #1436722 by hefox: Fixed Undefined variable $form_set_error() used as \
function.
-- Issue #1250626 by Gábor Hojtsy, B-Prod, hefox: Added start date and end date \
labels. +- Issue #1250626 by G�bor Hojtsy, B-Prod, hefox: Added start date and end \
date labels.
- Issue #1253482, Make sure $argument->is_default gets reset by the Date pager when \
altering results.
- Adjust Date Tools to work with changes to use Views templates to create calendars.
- Issue #1398584 by dhalbert and , Make sure groupby times is initialized.
@@ -194,7 +230,7 @@ The Date Browser has been removed. Please use the Date Pager \
instead. If you hav Browser the navigation will just disappear from them. If you add \
a Date Pager to the view you should get it back. Then delete the Date Browser \
attachment from the view, since it doesn't do anything any more.
-The UNTIL date was not getting included in repeating results and that is now fixed. \
This is an API change of sorts +The UNTIL date was not getting included in repeating \
results and that is now fixed. This is an API change of sorts for anyone who worked \
around the issue by setting it ahead.
The All Day checkbox and All Day themes were moved into a separate module, using new \
hooks added to the date @@ -219,7 +255,7 @@ New Features/Major Changes
Bugfixes
- Fix to new default date handling, the default date has to set a date in the \
database timezone, not the display timezone.
-- Issue #1245106 by Gábor Hojtsy, Hide the option to add the delta into the view for \
single value fields. +- Issue #1245106 by G�bor Hojtsy, Hide the option to add the \
delta into the view for single value fields.
- Issue #1370876, Make sure new Date All Day code does not try to set the popup \
values if Date Popup is disabled.
- Issue #874322, Add back the date_field_all_day() function to avoid breaking other \
modules that are using it.
- Fix Date text placeholder to display a formatted date instead of a format. Follow \
up to Date repeat UI changes. @@ -316,7 +352,7 @@ Bugfixes
- Issue #1179715, Default value callback for the timezone widget was not returning \
an array.
- Issue #1179716, Remove value_callback for date_repeat and date_combo forms, the \
default behavior works fine.
- Issue #1178716 by das-peter, Use drupal_array_get_nested_value() in Date Repeat \
instead of trying to find it manually.
-- Issue #1178716 by das-peter and KarenS, Tweak the date repeat widget to identify \
empty input when used on nodes with translation. +- Issue #1178716 by das-peter and \
KarenS, Tweak the date repeat widget to identify empty input when used on nodes with \
translation.
- Issue #1178716 by das-peter and KarenS, Fix date repeat form values that are not \
arrays when hidden on a node that has translation.
- Issue #1178176 by das-peter, Fix date_combo_value_callback to return NULL to avoid \
data lost on untranslatable dates used with Entity Translation.
- Date Context module was making incorrect assumptions about the $language of the \
field. @@ -350,7 +386,7 @@ field settings. Previous versions did not always honor \
those settings, this one
New Features/UX Improvements
-- Issue #1249724 by KarenS, Gábor Hojtsy, David_Rothstein, Improve usability of date \
and time input configuration. +- Issue #1249724 by KarenS, G�bor Hojtsy, \
David_Rothstein, Improve usability of date and time input \
configuration.
- Issue #1250784 by David_Rothstein, Add user-friendly labels for start and end date \
values in Views.
- Issue #742146, Add option to remove X-WR-CALNAME if VEVENT is not a feed.
- Add option to change method from PUBLISH to REQUEST in VCALENDAR.
@@ -360,8 +396,8 @@ New Features/UX Improvements
- Issue #1249724 by David_Rothstein: Improve usability of date and time input \
configuration
- Issue #1177198 by tim.plunkett: Allow CTools to process #dependency for date \
elements.
- Issue #1245562 by David_Rothstein, Rename the default date display format to \
something friendlier
-- Issue #1239934 by David_Rothstein and Gábor Hojtsy, Reuse the "years back and \
forward" dropdown widget on the Views filter settings page.
-- Issue #1239228 by Gábor Hojtsy, Date Views filter form UI improvements, clarify \
the way absolute and relative dates work. +- Issue #1239934 by David_Rothstein and \
G�bor Hojtsy, Reuse the "years back and forward" dropdown widget on the Views \
filter settings page. +- Issue #1239228 by G�bor Hojtsy, Date Views filter form UI \
improvements, clarify the way absolute and relative dates work.
- Issue #233047 by ksenzee and David_Rothstein, Add the Vegas jQuery timepicker as a \
new time selector option.
- Issue #1145976 by tim.plunkett and KarenS, Add 'is date' identifier to all date \
handlers.
- Issue #1234140 by arlinsundbulte, Change terminology in user-facing text from \
'From/To Date' to 'Start/End Date'. @@ -408,10 +444,10 @@ Bugfixes
- Issue #1254582 Repeat additions need to be adjusted to use the same time as the \
original date.
- Move vcalendar and vevent templates from Date Views to Date API modules.
- Follow up to Issue #1250344, We don't need extra space when there is a \
description, only when there is not.
-- Issue #1239228 by Gábor Hojtsy, More tweaks to filter css.
-- Issue #1244924 by Gábor Hojtsy, Minor text improvements in date filter \
configuration +- Issue #1239228 by G�bor Hojtsy, More tweaks to filter css.
+- Issue #1244924 by G�bor Hojtsy, Minor text improvements in date filter \
configuration
- Issue #1245556 by David_Rothstein, Date granularity description incorrectly \
implies that it affects the date attributes that are displayed
-- Issue #1247444 by Gábor Hojtsy, Give a little breathing space to the date year \
range "other" field +- Issue #1247444 by G�bor Hojtsy, Give a little breathing \
space to the date year range "other" field
- Issue #1250344 by jessebeach, Fix padding around date fields by adding clearfix \
class.
- Issue #1249116 by yched, Fix various glitches with D6 migration code.
- Issue #1243022 by fmosca and KarenS, Make sure all_day #states visibility is only \
set when there is a value for all_day. @@ -419,7 +455,7 @@ Bugfixes
- Issue #1246416, Test whether libraries_get_path() returns a valid path before \
using it.
- Issue #1235994, Don't display 'All Day' when using a format that has no time.
- Issue #1245690 by mikeryan, Migration plugin missing seconds from date formats
-- Issue #1229406 by David Rothstein, Gábor Hojtsy, and tim.plunkett Fix broken \
timepicker in Chrome and Safari. +- Issue #1229406 by David Rothstein, G�bor \
Hojtsy, and tim.plunkett Fix broken timepicker in Chrome and Safari.
- Issue #1239412 by keithm, Fix validation error when #access is false.
- Issue #1232522, Don't alter field_ui_field_edit form except on date fields.
- Issue #1243842, Make sure the All Day and Show End Date flags work correctly in \
unlimited value fields that use ajax.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/LICENSE.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/LICENSE.txt old mode 100644
new mode 100755
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.api.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.api.php index \
17f7514..268ae86 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.api.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.api.php
@@ -344,9 +344,6 @@ function hook_date_combo_process_alter(&$element, &$form_state, \
$context) {
'#date_increment' => $instance['widget']['settings']['increment'],
'#date_year_range' => $instance['widget']['settings']['year_range'],
'#date_label_position' => $instance['widget']['settings']['label_position'],
- '#prev_value' => isset($item['value']) ? $item['value'] : '',
- '#prev_value2' => isset($item['value2']) ? $item['value2'] : '',
- '#prev_rrule' => isset($item['rrule']) ? $item['rrule'] : '',
'#date_repeat_widget' => str_replace('_repeat', '', \
$instance['widget']['type']),
'#date_repeat_collapsed' => \
$instance['widget']['settings']['repeat_collapsed'], '#date_flexible' => 0,
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.diff.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.diff.inc new file mode 100644
index 0000000..e46d3a1
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.diff.inc
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * @file
+ * Provide diff field functions for the Date module.
+ */
+
+/**
+ * Diff field callback for parsing date fields comparative values.
+ */
+function date_field_diff_view($items, $context) {
+ $diff_items = array();
+ $display = $context['display'];
+ $display['settings']['format_type'] = $context['settings']['format_type'];
+ $display['settings']['fromto'] = $context['settings']['fromto'];
+ foreach ($items as $delta => $item) {
+ $date = date_formatter_process('date_default', $context['entity_type'], \
$context['entity'], $context['field'], $context['instance'], $context['language'], \
$item, $display); + switch ($display['settings']['fromto']) {
+ case 'both':
+ if ($date['value']['formatted'] != $date['value2']['formatted']) {
+ $diff_items[$delta] = t('@from to @to', array(
+ '@from' => $date['value']['formatted'],
+ '@to' => $date['value2']['formatted'],
+ ));
+ }
+ else {
+ $diff_items[$delta] = $date['value']['formatted'];
+ }
+ break;
+
+ case 'value':
+ case 'value2':
+ $diff_items[$delta] = $date[$display['settings']['fromto']]['formatted'];
+ break;
+
+ }
+ }
+ return $diff_items;
+}
+
+/**
+ * Provide default field comparison options.
+ */
+function date_field_diff_default_options($field_type) {
+ return array(
+ 'format_type' => 'long',
+ 'fromto' => 'both',
+ );
+}
+
+/**
+ * Provide a form for setting the field comparison options.
+ */
+function date_field_diff_options_form($field_type, $settings) {
+ $options_form = array();
+
+ $form['format_type'] = array(
+ '#title' => t('Choose how render dates and times'),
+ '#type' => 'select',
+ '#options' => date_format_type_options(),
+ '#default_value' => $settings['format_type'],
+ '#description' => t('To add or edit options, visit <a \
href="@date-time-page">Date and time settings</a>.', array('@date-time-page' => \
url('admin/config/regional/date-time'))), + '#weight' => 0,
+ );
+
+ $form['fromto'] = array(
+ '#title' => t('Display'),
+ '#type' => 'select',
+ '#options' => array(
+ 'both' => t('Both Start and End dates'),
+ 'value' => t('Start date only'),
+ 'value2' => t('End date only'),
+ ),
+ '#default_value' => $settings['fromto'],
+ '#weight' => 1,
+ );
+
+ return $options_form;
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.field.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.field.inc index \
b104702..46ea317 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.field.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.field.inc
@@ -125,8 +125,16 @@ function date_field_formatter_view($entity_type, $entity, \
$field, $instance, $la 'attributes' => array(),
'rdf_mapping' => array(),
'add_rdf' => module_exists('rdf'),
+ 'microdata' => array(),
+ 'add_microdata' => module_exists('microdata'),
);
+ // If the microdata module is enabled, the microdata mapping will have been
+ // passed in via the entity.
+ if ($variables['add_microdata'] && \
isset($entity->microdata[$field['field_name']])) { + $variables['microdata'] = \
$entity->microdata[$field['field_name']]; + }
+
// If there is an RDf mapping for this date field, pass it down to the theme.
$rdf_mapping = array();
if (!empty($entity->rdf_mapping) && function_exists('rdf_rdfa_attributes')) {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.info index e5b00c2..242937c \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.info
@@ -4,15 +4,17 @@ dependencies[] = date_api
package = Date/Time
core = 7.x
php = 5.2
+files[] = date.migrate.inc
files[] = tests/date_api.test
files[] = tests/date.test
files[] = tests/date_field.test
+files[] = tests/date_migrate.test
files[] = tests/date_validation.test
files[] = tests/date_timezone.test
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.migrate.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.migrate.inc new file mode \
100644 index 0000000..095c789
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.migrate.inc
@@ -0,0 +1,200 @@
+<?php
+
+/**
+ * @file
+ * Support for migration into Date fields.
+ */
+
+/**
+ * Implements hook_migrate_api().
+ */
+function date_migrate_api() {
+ $api = array(
+ 'api' => 2,
+ 'field handlers' => array('DateMigrateFieldHandler'),
+ );
+ return $api;
+}
+
+class DateMigrateFieldHandler extends MigrateFieldHandler {
+
+ /**
+ * Declares the types of fields used.
+ */
+ public function __construct() {
+ $this->registerTypes(array('date', 'datestamp', 'datetime'));
+ }
+
+ /**
+ * Arguments for a date field migration.
+ *
+ * @param string $timezone
+ * Timezone (such as UTC, America/New_York, etc.) to apply.
+ * @param string $timezone_db
+ * Timezone_db value for the field.
+ * @param string $rrule
+ * Rule string for a repeating date field.
+ * @param string $language
+ * Language of the text (defaults to destination language)
+ *
+ * @return array
+ * An array of the defined variables in this scope.
+ */
+ static function arguments($timezone = 'UTC', $timezone_db = 'UTC', $rrule = NULL, \
$language = NULL) { + return get_defined_vars();
+ }
+
+ /**
+ * Converts incoming data into the proper field arrays for Date fields.
+ *
+ * @param object $entity
+ * The destination entity which will hold the field arrays.
+ * @param array $field_info
+ * Metadata for the date field being populated.
+ * @param array $instance
+ * Metadata for this instance of the date field being populated.
+ * @param array $values
+ * Array of date values to be fielded.
+ *
+ * @return array|null
+ * An array of date fields.
+ */
+ public function prepare($entity, array $field_info, array $instance, array \
$values) { + if (isset($values['arguments'])) {
+ $arguments = $values['arguments'];
+ unset($values['arguments']);
+ }
+ else {
+ $arguments = array();
+ }
+
+ $language = $this->getFieldLanguage($entity, $field_info, $arguments);
+
+ foreach ($values as $delta => $from) {
+ if (!empty($arguments['timezone'])) {
+ if (is_array($arguments['timezone'])) {
+ $timezone = $arguments['timezone'][$delta];
+ }
+ else {
+ $timezone = $arguments['timezone'];
+ }
+ }
+ else {
+ $timezone = 'UTC';
+ }
+
+ if (!empty($arguments['rrule'])) {
+ if (is_array($arguments['rrule'])) {
+ $rrule = $arguments['rrule'][$delta];
+ }
+ else {
+ $rrule = $arguments['rrule'];
+ }
+ }
+ else {
+ $rrule = NULL;
+ }
+
+ if (!empty($arguments['to'])) {
+ if (is_array($arguments['to'])) {
+ $to = $arguments['to'][$delta];
+ }
+ else {
+ $to = $arguments['to'];
+ }
+ }
+ else {
+ $to = NULL;
+ }
+
+ // Legacy support for JSON containing a set of properties - deprecated
+ // now that we have subfields.
+ if (!empty($from) && $from{0} == '{') {
+ $properties = drupal_json_decode($from);
+ $from = $properties['from'];
+ // Properties passed in with the date override any set via arguments.
+ if (!empty($properties['to'])) {
+ $to = $properties['to'];
+ }
+ if (!empty($properties['timezone'])) {
+ $timezone = $properties['timezone'];
+ }
+ if (!empty($properties['rrule'])) {
+ $rrule = $properties['rrule'];
+ }
+ }
+
+ // Missing data? Create an empty value and return;
+ // Don't try to turn the empty value into a bogus
+ // timestamp for 'now'.
+ if (empty($from)) {
+ $return[$language][$delta]['value'] = NULL;
+ if (!empty($field_info['settings']['todate'])) {
+ $return[$language][$delta]['value2'] = NULL;
+ }
+ return $return;
+ }
+
+ // If there is no 'to' date, just use the 'from' date.
+ if (!empty($field_info['settings']['todate']) && empty($to)) {
+ $to = $from;
+ }
+
+ // If we have a value, work from a timestamp.
+ $from = MigrationBase::timestamp($from);
+ if ($to) {
+ $to = MigrationBase::timestamp($to);
+ }
+
+ // What does the destination field expect?
+ switch ($field_info['type']) {
+ case 'datestamp':
+ // Already done.
+ break;
+ case 'datetime':
+ // YYYY-MM-DD HH:MM:SS.
+ $from = format_date($from, 'custom', 'Y-m-d H:i:s', $timezone);
+ if ($to) {
+ $to = format_date($to, 'custom', 'Y-m-d H:i:s', $timezone);
+ }
+ break;
+ case 'date':
+ // ISO date: YYYY-MM-DDTHH:MM:SS.
+ $from = format_date($from, 'custom', 'Y-m-d\TH:i:s', $timezone);
+ if ($to) {
+ $to = format_date($to, 'custom', 'Y-m-d\TH:i:s', $timezone);
+ }
+ break;
+ default:
+ break;
+ }
+
+ // Handle repeats, coming in as RRULEs. Many field instances may be
+ // created.
+ if (function_exists('date_repeat_build_dates') && \
!empty($field_info['settings']['repeat']) && $rrule) { + include_once \
DRUPAL_ROOT . '/' . drupal_get_path('module', 'date_api') . '/date_api_ical.inc'; + \
$item = array('value' => $from, 'value2' => $to, 'timezone' => $timezone); + \
// Can be de-uglified when http://drupal.org/node/1159404 is committed. + \
$return[$language] = date_repeat_build_dates(NULL, date_ical_parse_rrule($field_info, \
$rrule), $field_info, $item); + }
+ else {
+ $return[$language][$delta]['value'] = $from;
+ if (!empty($to)) {
+ $return[$language][$delta]['value2'] = $to;
+ }
+ }
+ }
+ if (!isset($return)) {
+ $return = NULL;
+ }
+ return $return;
+ }
+
+ public function fields($migration = NULL) {
+ return array(
+ 'timezone' => t('Timezone'),
+ 'rrule' => t('Recurring event rule'),
+ 'to' => t('End date date'),
+ );
+ }
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.module index 4f6a013..6f4560b \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.module
@@ -1,10 +1,8 @@
<?php
-
/**
* @file
* Defines date/time field types.
*/
-
module_load_include('theme', 'date', 'date');
module_load_include('inc', 'date', 'date.field');
module_load_include('inc', 'date', 'date_elements');
@@ -78,6 +76,8 @@ function date_theme() {
'attributes' => array(),
'rdf_mapping' => NULL,
'add_rdf' => NULL,
+ 'microdata' => NULL,
+ 'add_microdata' => NULL,
),
),
'date_display_range' => $base + array(
@@ -95,6 +95,8 @@ function date_theme() {
'attributes_end' => array(),
'rdf_mapping' => NULL,
'add_rdf' => NULL,
+ 'microdata' => NULL,
+ 'add_microdata' => NULL,
)),
'date_display_combination' => $base + array(
'variables' => array(
@@ -110,6 +112,8 @@ function date_theme() {
'attributes' => array(),
'rdf_mapping' => NULL,
'add_rdf' => NULL,
+ 'microdata' => NULL,
+ 'add_microdata' => NULL,
),
),
'date_display_interval' => $base + array(
@@ -247,7 +251,7 @@ function date_formatter_process($formatter, $entity_type, \
$entity, $field, $inst elseif ($format == 'format_calendar_day') {
$dates[$processed]['calendar_day'] = date_format_calendar_day($date);
}
- elseif ($format == 'U') {
+ elseif ($format == 'U' || $format == 'r' || $format == 'c') {
$dates[$processed]['formatted'] = date_format_date($date, 'custom', \
$format);
$dates[$processed]['formatted_date'] = date_format_date($date, 'custom', \
$format); $dates[$processed]['formatted_time'] = '';
@@ -543,6 +547,8 @@ function date_entity_metadata_property_info_alter(&$info, \
$entity_type, $field, // The getter and setter callbacks for 'value' and 'value2'
// will not provide the field name as $name, we'll add it to $info.
'field_name' => $field['field_name'],
+ // Alert Microdata module that this value can be exposed in microdata.
+ 'microdata' => TRUE,
),
'value2' => array(
'type' => 'date',
@@ -552,6 +558,8 @@ function date_entity_metadata_property_info_alter(&$info, \
$entity_type, $field, // The getter and setter callbacks for 'value' and 'value2'
// will not provide the field name as $name, we'll add it to $info.
'field_name' => $field['field_name'],
+ // Alert Microdata module that this value can be exposed in microdata.
+ 'microdata' => TRUE,
),
'duration' => array(
'type' => 'duration',
@@ -566,6 +574,11 @@ function date_entity_metadata_property_info_alter(&$info, \
$entity_type, $field, );
unset($property['query callback']);
}
+ else {
+ // If this doesn't have a todate, it is handled as a date rather than a
+ // struct. Enable microdata on the field itself rather than the properties.
+ $property['microdata'] = TRUE;
+ }
}
/**
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.theme \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.theme index 70c6be4..cc88e87 \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date.theme
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date.theme
@@ -74,6 +74,8 @@ function theme_date_display_combination($variables) {
$attributes = $variables['attributes'];
$rdf_mapping = $variables['rdf_mapping'];
$add_rdf = $variables['add_rdf'];
+ $microdata = $variables['microdata'];
+ $add_microdata = $variables['add_microdata'];
$precision = date_granularity_precision($field['settings']['granularity']);
$output = '';
@@ -162,6 +164,8 @@ function theme_date_display_combination($variables) {
'attributes' => $attributes,
'rdf_mapping' => $rdf_mapping,
'add_rdf' => $add_rdf,
+ 'microdata' => $microdata,
+ 'add_microdata' => $add_microdata,
'dates' => $dates,
));
}
@@ -179,6 +183,8 @@ function theme_date_display_combination($variables) {
'attributes' => $attributes,
'rdf_mapping' => $rdf_mapping,
'add_rdf' => $add_rdf,
+ 'microdata' => $microdata,
+ 'add_microdata' => $add_microdata,
'dates' => $dates,
));
$replaced = str_replace($time1, $time, $date1);
@@ -200,6 +206,8 @@ function theme_date_display_combination($variables) {
'attributes' => $attributes,
'rdf_mapping' => $rdf_mapping,
'add_rdf' => $add_rdf,
+ 'microdata' => $microdata,
+ 'add_microdata' => $add_microdata,
'dates' => $dates,
));
}
@@ -211,7 +219,7 @@ function theme_date_display_combination($variables) {
* Template preprocess function for displaying a single date.
*/
function template_preprocess_date_display_single(&$variables) {
- if ($variables['add_rdf']) {
+ if ($variables['add_rdf'] || $variables['add_microdata']) {
// Pass along the rdf mapping for this field, if any. Add some default rdf
// attributes that will be used if not overridden by attributes passed in.
$rdf_mapping = $variables['rdf_mapping'];
@@ -222,6 +230,24 @@ function template_preprocess_date_display_single(&$variables) {
);
$variables['attributes'] = $variables['attributes'] + $base_attributes;
}
+
+ // Pass along microdata attributes, or set display to false if none are set.
+ if (!empty($variables['add_microdata'])) {
+ // Because the Entity API integration for Date has a variable data
+ // structure depending on whether there is an end value, the attributes
+ // could be attached to the field or to the value property.
+ if(!empty($variables['microdata']['#attributes']['itemprop'])) {
+ $variables['microdata']['value']['#attributes'] = \
$variables['microdata']['#attributes']; + }
+
+ // Add the machine readable time using the content attribute.
+ if(!empty($variables['microdata']['value']['#attributes'])) {
+ $variables['microdata']['value']['#attributes']['content'] = \
$variables['dates']['value']['formatted_iso']; + }
+ else {
+ $variables['add_microdata'] = FALSE;
+ }
+ }
}
/**
@@ -233,7 +259,13 @@ function theme_date_display_single($variables) {
$attributes = $variables['attributes'];
// Wrap the result with the attributes.
- return '<span class="date-display-single"' . drupal_attributes($attributes) . '>' \
. $date . $timezone . '</span>'; + $output = '<span class="date-display-single"' . \
drupal_attributes($attributes) . '>' . $date . $timezone . '</span>'; +
+ if ($variables['add_microdata']) {
+ $output .= '<meta' . \
drupal_attributes($variables['microdata']['value']['#attributes']) . '/>'; + }
+
+ return $output;
}
/**
@@ -247,7 +279,6 @@ function template_preprocess_date_display_range(&$variables) {
if ($variables['add_rdf']) {
// Pass along the rdf mapping for this field, if any. Add some default rdf
// attributes that will be used if not overridden by attributes passed in.
- $rdf_mapping = $variables['rdf_mapping'];
$dates = $variables['dates'];
$base_attributes = array(
'property' => array('dc:date'),
@@ -261,6 +292,17 @@ function template_preprocess_date_display_range(&$variables) {
$variables['attributes_end']['property'][$delta] = str_replace('start', 'end', \
$property); }
}
+
+ // Pass along microdata attributes, or set display to false if none are set.
+ if ($variables['add_microdata']) {
+ if (!empty($variables['microdata']['value']['#attributes'])) {
+ $variables['microdata']['value']['#attributes']['content'] = \
$variables['dates']['value']['formatted_iso']; + \
$variables['microdata']['value2']['#attributes']['content'] = \
$variables['dates']['value2']['formatted_iso']; + }
+ else {
+ $variables['add_microdata'] = FALSE;
+ }
+ }
}
/**
@@ -273,10 +315,20 @@ function theme_date_display_range($variables) {
$attributes_start = $variables['attributes_start'];
$attributes_end = $variables['attributes_end'];
+ $start_date = '<span class="date-display-start"' . \
drupal_attributes($attributes_start) . '>' . $date1 . '</span>'; + $end_date = \
'<span class="date-display-end"' . drupal_attributes($attributes_end) . '>' . $date2 \
. $timezone . '</span>'; +
+ // If microdata attributes for the start date property have been passed in,
+ // add the microdata in meta tags.
+ if (!empty($variables['add_microdata'])) {
+ $start_date .= '<meta' . \
drupal_attributes($variables['microdata']['value']['#attributes']) . '/>'; + \
$end_date .= '<meta' . \
drupal_attributes($variables['microdata']['value2']['#attributes']) . '/>'; + }
+
// Wrap the result with the attributes.
return t('!start-date to !end-date', array(
- '!start-date' => '<span class="date-display-start"' . \
drupal_attributes($attributes_start) . '>' . $date1 . '</span>',
- '!end-date' => '<span class="date-display-end"' . \
drupal_attributes($attributes_end) . '>' . $date2 . $timezone . '</span>', + \
'!start-date' => $start_date, + '!end-date' => $end_date,
));
}
@@ -326,6 +378,10 @@ function theme_date_combo($variables) {
'#attributes' => array(),
'#children' => $element['#children'],
);
+ // Add marker to required date fields.
+ if ($element['#required']) {
+ $fieldset['#title'] .= " " . theme('form_required_marker');
+ }
return theme('fieldset', array('element' => $fieldset));
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_admin.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_admin.inc index \
993aa09..0e32fc5 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_admin.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_admin.inc
@@ -370,11 +370,11 @@ function _date_field_widget_settings_form($field, $instance) {
);
if (in_array($widget['type'], array('date_select'))) {
$options = array('above' => t('Above'), 'within' => t('Within'), 'none' => \
t('None'));
- $description = t("The location of date part labels, like 'Year', 'Month', or \
'Day' . 'Above' displays the label as titles above each date part. 'Within' inserts \
the label as the first option in the select list and in blank textfields. 'None' \
doesn't label any of the date parts. Theme functions like 'date_part_label_year' and \
'date_part_label_month' control label text."); + $description = t("The location of \
date part labels, like 'Year', 'Month', or 'Day' . 'Above' displays the label as \
titles above each date part. 'Within' inserts the label as the first option in the \
select list and in blank textfields. 'None' doesn't visually label any of the date \
parts. Theme functions like 'date_part_label_year' and 'date_part_label_month' \
control label text."); }
else {
$options = array('above' => t('Above'), 'none' => t('None'));
- $description = t("The location of date part labels, like 'Year', 'Month', or \
'Day' . 'Above' displays the label as titles above each date part. 'None' doesn't \
label any of the date parts. Theme functions like 'date_part_label_year' and \
'date_part_label_month' control label text."); + $description = t("The location of \
date part labels, like 'Year', 'Month', or 'Day' . 'Above' displays the label as \
titles above each date part. 'None' doesn't visually label any of the date parts. \
Theme functions like 'date_part_label_year' and 'date_part_label_month' control label \
text."); }
$form['advanced']['label_position'] = array(
'#type' => 'radios',
@@ -453,6 +453,9 @@ function _date_field_settings_form($field, $instance, $has_data) \
{ $tz_handling = $settings['tz_handling'];
$description = t('Select the date attributes to collect and store.');
+ if ($has_data) {
+ $description .= ' ' . t('Changes to date attributes only effects new or updated \
content.'); + }
$options = date_granularity_names();
$checkbox_year = array(
'#type' => 'checkbox',
@@ -469,7 +472,6 @@ function _date_field_settings_form($field, $instance, $has_data) \
{ '#options' => $options,
'#attributes' => array('class' => array('container-inline')),
'#description' => $description,
- '#disabled' => $has_data,
'year' => $checkbox_year,
);
@@ -499,7 +501,6 @@ function _date_field_settings_form($field, $instance, $has_data) \
{ '#default_value' => $tz_handling,
'#options' => date_timezone_handling_options(),
'#description' => $description,
- '#disabled' => $has_data,
'#attached' => array(
'js' => array(drupal_get_path('module', 'date') . '/date_admin.js'),
),
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_all_day/date_all_day.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_all_day/date_all_day.info \
index 8f8bf48..14e1d86 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_all_day/date_all_day.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_all_day/date_all_day.info
@@ -5,9 +5,9 @@ dependencies[] = date
package = Date/Time
core = 7.x
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.info index \
ee1a384..19ac12c 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.info
@@ -9,9 +9,9 @@ stylesheets[all][] = date.css
files[] = date_api.module
files[] = date_api_sql.inc
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.module index \
d85a8a5..2ca0a33 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api.module
@@ -276,18 +276,17 @@ class DateObject extends DateTime {
$this->setGranularityFromTime($time, $tz);
}
}
- // If this tz was given as just an offset or the timezone
- // was invalid, we need to do some tweaking.
+
+ // If we haven't got a valid timezone name yet, we need to set one or
+ // we will get undefined index errors.
+ // This can happen if $time had an offset or no timezone.
if (!$this->getTimezone() || !preg_match('/[a-zA-Z]/', \
$this->getTimezone()->getName())) {
- // If the timezone name is an offset and the original
- // $tz has a name, use it. This happens if you pass in
- // a date string with an offset along with a specific timezone name.
- if (!preg_match('/[a-zA-Z]/', $this->getTimezone()->getName()) && \
preg_match('/[a-zA-Z]/', $tz->getName())) { + // If the original $tz has a name, \
use it. + if (preg_match('/[a-zA-Z]/', $tz->getName())) {
$this->setTimezone($tz);
}
- // If we get this far, we have no information about the timezone name,
- // but we will get undefined index errors without any name.
+ // We have no information about the timezone so must fallback to a default.
else {
$this->setTimezone(new DateTimeZone("UTC"));
$this->errors['timezone'] = t('No valid timezone name was provided.');
@@ -459,8 +458,8 @@ class DateObject extends DateTime {
$true = $this->hasGranularity() && (!$granularity || $flexible || \
$this->hasGranularity($granularity)); if (!$true && $granularity) {
foreach ((array) $granularity as $part) {
- if (!$this->hasGranularity($part)) {
- $this->errors[$part] = t("The @part is missing.", array('@part' => \
$part)); + if (!$this->hasGranularity($part) && in_array($part, \
array('second', 'minute', 'hour', 'day', 'month', 'year'))) { + \
$this->errors[$part] = t("The $part is missing."); }
}
}
@@ -574,7 +573,7 @@ class DateObject extends DateTime {
$regex2 = preg_replace($patterns, $repl2, $format_regexp, 1);
$regex2 = str_replace('A', '(AM|PM)', $regex2);
$regex2 = str_replace('a', '(am|pm)', $regex2);
- preg_match('`^' . $regex2 . '$`', $date, $values);
+ preg_match('`^' . $regex2 . '$`u', $date, $values);
array_shift($values);
// If we did not find all the values for the patterns in the format, abort.
if (count($letters) != count($values)) {
@@ -951,6 +950,11 @@ class DateObject extends DateTime {
if ($year_diff == 0) {
return intval($item2 - $item1);
}
+ elseif ($year_diff < 0) {
+ $item_diff = 0 - $item1;
+ $item_diff -= intval((abs($year_diff) - 1) * 12);
+ return $item_diff - (12 - $item2);
+ }
else {
$item_diff = 12 - $item1;
$item_diff += intval(($year_diff - 1) * 12);
@@ -965,6 +969,14 @@ class DateObject extends DateTime {
if ($year_diff == 0) {
return intval($item2 - $item1);
}
+ elseif ($year_diff < 0) {
+ $item_diff = 0 - $item1;
+ for ($i = 1; $i < abs($year_diff); $i++) {
+ date_modify($date1, '-1 year');
+ $item_diff -= date_days_in_year($date1);
+ }
+ return $item_diff - (date_days_in_year($date2) - $item2);
+ }
else {
$item_diff = date_days_in_year($date1) - $item1;
for ($i = 1; $i < $year_diff; $i++) {
@@ -978,9 +990,12 @@ class DateObject extends DateTime {
case 'weeks':
$week_diff = date_format($date2, 'W') - date_format($date1, 'W');
$year_diff = date_format($date2, 'o') - date_format($date1, 'o');
- for ($i = 1; $i <= $year_diff; $i++) {
- date_modify($date1, '+1 year');
- $week_diff += date_iso_weeks_in_year($date1);
+
+ $sign = ($year_diff < 0) ? -1 : 1;
+
+ for ($i = 1; $i <= abs($year_diff); $i++) {
+ date_modify($date1, (($sign > 0) ? '+': '-').'1 year');
+ $week_diff += (date_iso_weeks_in_year($date1) * $sign);
}
return $week_diff;
}
@@ -1705,13 +1720,21 @@ function date_format_interval($date, $granularity = 2, \
$display_ago = TRUE) {
* (optional) Optionally force time to a specific timezone, defaults to user
* timezone, if set, otherwise site timezone. Defaults to NULL.
*
+ * @param boolean $reset [optional]
+ * Static cache reset
+ *
* @return object
* The current time as a date object.
*/
-function date_now($timezone = NULL) {
- return new DateObject('now', $timezone);
-}
+function date_now($timezone = NULL, $reset = FALSE) {
+ $now = &drupal_static(__FUNCTION__);
+ if (!isset($now) || $reset) {
+ $now = new DateObject('now', $timezone);
+ }
+
+ return $now;
+}
/**
* Determines if a timezone string is valid.
*
@@ -2100,6 +2123,17 @@ function date_part_format($part, $format) {
* The format string with all other elements removed.
*/
function date_limit_format($format, $granularity) {
+ // Use the advanced drupal_static() pattern to improve performance.
+ static $drupal_static_fast;
+ if (!isset($drupal_static_fast)) {
+ $drupal_static_fast['formats'] = &drupal_static(__FUNCTION__);
+ }
+ $formats = &$drupal_static_fast['formats'];
+ $format_granularity_cid = $format .'|'. implode(',', $granularity);
+ if (isset($formats[$format_granularity_cid])) {
+ return $formats[$format_granularity_cid];
+ }
+
// If punctuation has been escaped, remove the escaping. Done using strtr()
// because it is easier than getting the escape character extracted using
// preg_replace().
@@ -2169,11 +2203,14 @@ function date_limit_format($format, $granularity) {
// After removing the non-desired parts of the format, test if the only things
// left are escaped, non-date, characters. If so, return nothing.
// Using S instead of w to pick up non-ASCII characters.
- $test = trim(preg_replace('(\\\\\S{1,3})', '', $format));
+ $test = trim(preg_replace('(\\\\\S{1,3})u', '', $format));
if (empty($test)) {
$format = '';
}
+ // Store the return value in the static array for performance.
+ $formats[$format_granularity_cid] = $format;
+
return $format;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_elements.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_elements.inc \
index 7da4e58..57e4161 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_elements.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_elements.inc
@@ -239,7 +239,8 @@ function date_timezone_element_process($element, &$form_state, \
$form) { $label = theme('date_part_label_timezone', array('part_type' => 'select', \
'element' => $element)); $element['timezone'] = array(
'#type' => 'select',
- '#title' => $element['#date_label_position'] == 'above' ? $label : '',
+ '#title' => $label,
+ '#title_display' => $element['#date_label_position'] == 'above' ? 'before' : \
'invisible', '#options' => date_timezone_names($element['#required']),
'#value' => $element['#value'],
'#weight' => $element['#weight'],
@@ -320,6 +321,8 @@ function date_text_element_process($element, &$form_state, $form) \
{ $element['date']['#weight'] = !empty($element['date']['#weight']) ? \
$element['date']['#weight'] : $element['#weight']; $element['date']['#attributes'] = \
array('class' => isset($element['#attributes']['class']) ? \
$element['#attributes']['class'] += array('date-date') : array('date-date')); $now = \
date_example_date(); + $element['date']['#title'] = t('Date');
+ $element['date']['#title_display'] = 'invisible';
$element['date']['#description'] = ' ' . t('Format: @date', array('@date' => \
date_format_date(date_example_date(), 'custom', $element['#date_format']))); \
$element['date']['#ajax'] = !empty($element['#ajax']) ? $element['#ajax'] : FALSE;
@@ -585,6 +588,8 @@ function date_parts_element($element, $date, $format) {
$sub_element[$field]['#type'] = 'textfield';
$sub_element[$field]['#theme'] = 'date_textfield_element';
$sub_element[$field]['#size'] = 7;
+ $sub_element[$field]['#title'] = $label;
+ $sub_element[$field]['#title_display'] = \
in_array($element['#date_label_position'], array('within', 'none')) ? 'invisible' : \
'before'; if ($element['#date_label_position'] == 'within') {
if (!empty($sub_element[$field]['#options']) && \
is_array($sub_element[$field]['#options'])) { $sub_element[$field]['#options'] = \
array( @@ -594,20 +599,16 @@ function date_parts_element($element, $date, $format) {
$sub_element[$field]['#default_value'] = '-' . $label;
}
}
- elseif ($element['#date_label_position'] != 'none') {
- $sub_element[$field]['#title'] = $label;
- }
}
else {
$sub_element[$field]['#type'] = 'select';
$sub_element[$field]['#theme'] = 'date_select_element';
+ $sub_element[$field]['#title'] = $label;
+ $sub_element[$field]['#title_display'] = \
in_array($element['#date_label_position'], array('within', 'none')) ? 'invisible' : \
'before'; if ($element['#date_label_position'] == 'within') {
$sub_element[$field]['#options'] = array(
'' => '-' . $label) + $sub_element[$field]['#options'];
}
- elseif ($element['#date_label_position'] != 'none') {
- $sub_element[$field]['#title'] = $label;
- }
}
}
@@ -621,9 +622,12 @@ function date_parts_element($element, $date, $format) {
}
if (($hours_format == 'g' || $hours_format == 'h') && date_has_time($granularity)) \
{ + $label = theme('date_part_label_ampm', array('part_type' => 'ampm', 'element' \
=> $element)); $sub_element['ampm'] = array(
'#type' => 'select',
'#theme' => 'date_select_element',
+ '#title' => $label,
+ '#title_display' => in_array($element['#date_label_position'], array('within', \
'none')) ? 'invisible' : 'before',
'#default_value' => is_object($date) ? (date_format($date, 'G') >= 12 ? 'pm' : \
'am') : '', '#options' => drupal_map_assoc(date_ampm($part_required)),
'#required' => $part_required,
@@ -631,10 +635,7 @@ function date_parts_element($element, $date, $format) {
'#attributes' => array('class' => array('date-ampm')),
);
if ($element['#date_label_position'] == 'within') {
- $sub_element['ampm']['#options'] = array('' => '-' . \
theme('date_part_label_ampm', array('part_type' => 'ampm', 'eleement' => $element))) \
+ $sub_element['ampm']['#options'];
- }
- elseif ($element['#date_label_position'] != 'none') {
- $sub_element['ampm']['#title'] = theme('date_part_label_ampm', \
array('part_type' => 'ampm', 'element' => $element)); + \
$sub_element['ampm']['#options'] = array('' => '-' . $label) + \
$sub_element['ampm']['#options']; }
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_sql.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_sql.inc index \
a2adc65..e02f050 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_sql.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_api/date_api_sql.inc
@@ -20,9 +20,8 @@
* Correct sql string for database type.
*/
function date_sql_concat($array) {
- switch (db_driver()) {
+ switch (Database::getConnection()->databaseType()) {
case 'mysql':
- case 'mysqli':
return "CONCAT(" . implode(",", $array) . ")";
case 'pgsql':
return implode(" || ", $array);
@@ -39,9 +38,8 @@ function date_sql_concat($array) {
* SQL statement to return the first non-NULL value in the list.
*/
function date_sql_coalesce($array) {
- switch (db_driver()) {
+ switch (Database::getConnection()->databaseType()) {
case 'mysql':
- case 'mysqli':
case 'pgsql':
return "COALESCE(" . implode(',', $array) . ")";
}
@@ -89,7 +87,7 @@ class date_sql_handler {
* The object constuctor.
*/
function __construct($date_type = DATE_DATETIME, $local_timezone = NULL, $offset = \
'+00:00') {
- $this->db_type = db_driver();
+ $this->db_type = Database::getConnection()->databaseType();
$this->date_type = $date_type;
$this->db_timezone = 'UTC';
$this->local_timezone = isset($local_timezone) ? $local_timezone : \
date_default_timezone(); @@ -105,7 +103,6 @@ class date_sql_handler {
$has_support = FALSE;
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
$test = db_query("SELECT CONVERT_TZ('2008-02-15 12:00:00', 'UTC', \
'US/Central')")->fetchField(); if ($test == '2008-02-15 06:00:00') {
$has_support = TRUE;
@@ -141,11 +138,10 @@ class date_sql_handler {
*/
function set_db_timezone($offset = '+00:00') {
static $already_set = FALSE;
- $type = db_driver();
+ $type = Database::getConnection()->databaseType();
if (!$already_set) {
switch ($type) {
case 'mysql':
- case 'mysqli':
db_query("SET @@session.time_zone = '$offset'");
break;
case 'pgsql':
@@ -199,7 +195,6 @@ class date_sql_handler {
}
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
switch ($this->date_type) {
case DATE_UNIX:
$field = "FROM_UNIXTIME($field)";
@@ -258,7 +253,6 @@ class date_sql_handler {
if (!empty($offset)) {
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
return "ADDTIME($field, SEC_TO_TIME($offset))";
case 'pgsql':
return "($field + INTERVAL '$offset SECONDS')";;
@@ -288,7 +282,6 @@ class date_sql_handler {
$granularity = strtoupper($granularity);
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
switch ($direction) {
case 'ADD':
return "DATE_ADD($field, INTERVAL $count $granularity)";
@@ -358,7 +351,6 @@ class date_sql_handler {
else {
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
return "CONVERT_TZ($field, $db_zone, $localzone)";
case 'pgsql':
// WITH TIME ZONE assumes the date is using the system
@@ -382,7 +374,6 @@ class date_sql_handler {
function sql_format($format, $field) {
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
$replace = array(
'Y' => '%Y',
'y' => '%y',
@@ -553,7 +544,6 @@ class date_sql_handler {
case 'WEEK':
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
// WEEK using arg 3 in MySQl should return the same value as
// Postgres EXTRACT.
return "WEEK($field, 3)";
@@ -563,7 +553,6 @@ class date_sql_handler {
case 'DOW':
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
// MySQL returns 1 for Sunday through 7 for Saturday, PHP date
// functions and Postgres use 0 for Sunday and 6 for Saturday.
return "INTEGER(DAYOFWEEK($field) - 1)";
@@ -573,7 +562,6 @@ class date_sql_handler {
case 'DOY':
switch ($this->db_type) {
case 'mysql':
- case 'mysqli':
return "DAYOFYEAR($field)";
case 'pgsql':
return "EXTRACT(DOY FROM($field))";
@@ -896,30 +884,30 @@ class date_sql_handler {
}
$formats = array('display', 'sql');
// Start with the site long date format and add seconds to it.
- $long = str_replace(':i', ':i:s', variable_get('date_format_long', 'l, F j, Y - \
H:i')); + $short = str_replace(':i', ':i:s', variable_get('date_format_short', 'l, \
F j, Y - H:i')); switch ($granularity) {
case 'year':
$formats['display'] = 'Y';
$formats['sql'] = 'Y';
break;
case 'month':
- $formats['display'] = date_limit_format($long, array('year', 'month'));
+ $formats['display'] = date_limit_format($short, array('year', 'month'));
$formats['sql'] = 'Y-m';
break;
case 'day':
- $formats['display'] = date_limit_format($long, array('year', 'month', \
'day')); + $formats['display'] = date_limit_format($short, array('year', \
'month', 'day')); $formats['sql'] = 'Y-m-d';
break;
case 'hour':
- $formats['display'] = date_limit_format($long, array('year', 'month', 'day', \
'hour')); + $formats['display'] = date_limit_format($short, array('year', \
'month', 'day', 'hour')); $formats['sql'] = 'Y-m-d\TH';
break;
case 'minute':
- $formats['display'] = date_limit_format($long, array('year', 'month', 'day', \
'hour', 'minute')); + $formats['display'] = date_limit_format($short, \
array('year', 'month', 'day', 'hour', 'minute')); $formats['sql'] = 'Y-m-d\TH:i';
break;
case 'second':
- $formats['display'] = date_limit_format($long, array('year', 'month', 'day', \
'hour', 'minute', 'second')); + $formats['display'] = \
date_limit_format($short, array('year', 'month', 'day', 'hour', 'minute', 'second')); \
$formats['sql'] = 'Y-m-d\TH:i:s'; break;
case 'week':
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/date_context.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/date_context.info \
index a69a599..5f4a042 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/date_context.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/date_context.info
@@ -8,9 +8,9 @@ dependencies[] = context
files[] = date_context.module
files[] = plugins/date_context_date_condition.inc
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc
index 733fb5a..573b035 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_context/plugins/date_context_date_condition.inc
@@ -41,7 +41,7 @@ class date_context_date_condition extends context_condition_node {
'#description' => t("The value the field should contain to meet the condition. \
This can either be an absolute date in ISO format (YYYY-MM-DDTHH:MM:SS) or a relative \
string like '12AM today'. Examples: 2011-12-31T00:00:00, now, now +1 day, 12AM today, \
Monday next week. <a href=\"@relative_format\">More examples of relative date formats \
in the PHP documentation</a>.", array('@relative_format' => \
'http://www.php.net/manual/en/datetime.formats.relative.php')),
'#default_value' => isset($defaults['value']) ? $defaults['value'] : '',
'#process' => array('ctools_dependent_process'),
- '#dependency' => \
array(':input[name="conditions[plugins][date_context_date_condition][options][operation]"]' \
=> array('<', '<=', '>', '>=', '=', '!=')), + '#dependency' => \
array('edit-conditions-plugins-date-context-date-condition-options-operation' => \
array('<', '<=', '>', '>=', '=', '!=')), );
return $form;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_elements.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_elements.inc index \
20620ed..4303d13 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_elements.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_elements.inc
@@ -77,7 +77,7 @@ function date_field_widget_form(&$form, &$form_state, $field, \
$instance, $langco // lose all but the first value by doing this, so store the \
original values in case we need to replace them later. if \
(!empty($field['settings']['repeat'])) { if ($delta == 0) {
- $form['#after_build'] = array('date_repeat_after_build');
+ $form['#after_build'][] = 'date_repeat_after_build';
$form_state['storage']['repeat_fields'][$field_name] = \
array_merge($form['#parents'], array($field_name));
$form_state['storage']['date_items'][$field_name][$langcode] = $items;
}
@@ -320,7 +320,7 @@ function date_combo_element_process($element, &$form_state, \
$form) { '#field' => $field,
'#instance' => $instance,
'#weight' => $instance['widget']['weight'],
- '#required' => ($instance['required'] && $delta == 0) ? 1 : 0,
+ '#required' => ($element['#required'] && $delta == 0) ? 1 : 0,
'#default_value' => isset($element['#default_value'][$from_field]) ? \
$element['#default_value'][$from_field] : '', '#delta' => $delta,
'#date_timezone' => $element['#date_timezone'],
@@ -331,7 +331,8 @@ function date_combo_element_process($element, &$form_state, \
$form) {
'#date_label_position' => $instance['widget']['settings']['label_position'],
);
- $description = !empty($instance['description']) ? t($instance['description']) : \
''; + $description = !empty($element['#description']) ? t($element['#description']) \
: ''; + unset($element['#description']);
// Give this element the right type, using a Date API
// or a Date Popup element type.
@@ -363,8 +364,8 @@ function date_combo_element_process($element, &$form_state, \
$form) { // is the 'Start' and which is the 'End' .
if (!empty($field['settings']['todate'])) {
- $element[$from_field]['#title'] = '';
$element[$to_field] = $element[$from_field];
+ $element[$from_field]['#title_display'] = 'none';
$element[$to_field]['#title'] = t('to:');
$element[$from_field]['#wrapper_attributes']['class'][] = 'start-date-wrapper';
$element[$to_field]['#wrapper_attributes']['class'][] = 'end-date-wrapper';
@@ -451,8 +452,8 @@ function date_combo_validate($element, &$form_state) {
return;
}
- $item = $form_values[$field_name][$langcode][$delta];
- $posted = $form_input[$field_name][$langcode][$delta];
+ $item = drupal_array_get_nested_value($form_state['values'], \
$element['#parents']); + $posted = \
drupal_array_get_nested_value($form_state['input'], $element['#parents']);
$field = field_widget_field($element, $form_state);
$instance = field_widget_instance($element, $form_state);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date.migrate.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date.migrate.inc \
deleted file mode 100644 index 637a626..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date.migrate.inc
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-
-/**
- * @file
- * Support for migration into Date fields.
- */
-
-class DateMigrateFieldHandler extends MigrateFieldHandler {
-
- /**
- * Declares the types of fields used.
- */
- public function __construct() {
- $this->registerTypes(array('date', 'datestamp', 'datetime'));
- }
-
- /**
- * Arguments for a date field migration.
- *
- * @param string $timezone
- * Timezone (such as UTC, America/New_York, etc.) to apply.
- * @param string $timezone_db
- * Timezone_db value for the field.
- * @param string $rrule
- * Rule string for a repeating date field.
- * @param string $language
- * Language of the text (defaults to destination language)
- *
- * @return array
- * An array of the defined variables in this scope.
- */
- static function arguments($timezone = 'UTC', $timezone_db = 'UTC', $rrule = NULL, \
$language = NULL) {
- return get_defined_vars();
- }
-
- /**
- * Converts incoming data into the proper field arrays for Date fields.
- *
- * @param object $entity
- * The destination entity which will hold the field arrays.
- * @param array $field_info
- * Metadata for the date field being populated.
- * @param array $instance
- * Metadata for this instance of the date field being populated.
- * @param array $values
- * Array of date values to be fielded.
- *
- * @return array|null
- * An array of date fields.
- */
- public function prepare($entity, array $field_info, array $instance, array \
$values) {
- if (isset($values['arguments'])) {
- $arguments = $values['arguments'];
- unset($values['arguments']);
- }
- else {
- $arguments = array();
- }
-
- if (isset($arguments['timezone'])) {
- $default_timezone = $arguments['timezone'];
- }
- else {
- $default_timezone = 'UTC';
- }
- if (isset($arguments['timezone_db'])) {
- $default_timezone_db = $arguments['timezone_db'];
- }
- else {
- $default_timezone_db = NULL;
- }
- if (isset($arguments['rrule'])) {
- $default_rrule = $arguments['rrule'];
- }
- else {
- $default_rrule = NULL;
- }
- $language = $this->getFieldLanguage($entity, $field_info, $arguments);
-
- // Setup the standard Field API array for saving.
- $delta = 0;
- foreach ($values as $from) {
- // Set defaults.
- $to = NULL;
- $timezone = $default_timezone;
- $timezone_db = $default_timezone_db;
- $rrule = $default_rrule;
-
- // Is the value a straight datetime value, or JSON containing a set of
- // properties?
- if (!empty($from) && $from{0} == '{') {
- $properties = drupal_json_decode($from);
- $from = $properties['from'];
- // Properties passed in with the date override any set via arguments.
- if (!empty($properties['to'])) {
- $to = $properties['to'];
- }
- if (!empty($properties['timezone'])) {
- $timezone = $properties['timezone'];
- }
- if (!empty($properties['timezone_db'])) {
- $timezone_db = $properties['timezone_db'];
- }
- if (!empty($properties['rrule'])) {
- $rrule = $properties['rrule'];
- }
- }
-
- // Missing data? Create an empty value and return;
- // Don't try to turn the empty value into a bogus
- // timestamp for 'now'.
- if (empty($from)) {
- $return[$language][$delta]['value'] = NULL;
- if (!empty($field_info['settings']['todate'])) {
- $return[$language][$delta]['value2'] = NULL;
- }
- return $return;
- }
-
- // If there is no 'to' date, just use the 'from' date.
- if (!empty($field_info['settings']['todate']) && empty($to)) {
- $to = $from;
- }
-
- // If we have a value, work from a timestamp.
- $from = MigrationBase::timestamp($from);
- if ($to) {
- $to = MigrationBase::timestamp($to);
- }
-
- // What does the destination field expect?
- switch ($field_info['type']) {
- case 'datestamp':
- // Already done.
- break;
- case 'datetime':
- // YYYY-MM-DD HH:MM:SS.
- $from = format_date($from, 'custom', 'Y-m-d H:i:s', $timezone);
- if ($to) {
- $to = format_date($to, 'custom', 'Y-m-d H:i:s', $timezone);
- }
- break;
- case 'date':
- // ISO date: YYYY-MM-DDTHH:MM:SS.
- $from = format_date($from, 'custom', 'Y-m-d\TH:i:s', $timezone);
- if ($to) {
- $to = format_date($to, 'custom', 'Y-m-d\TH:i:s', $timezone);
- }
- break;
- default:
- break;
- }
-
- // Handle repeats, coming in as RRULEs. Many field instances may be
- // created.
- if (function_exists('date_repeat_build_dates') && \
!empty($field_info['settings']['repeat']) && $rrule) {
- include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'date_api') . \
'/date_api_ical.inc';
- $item = array('value' => $from, 'value2' => $to, 'timezone' => $timezone);
- // Can be de-uglified when http://drupal.org/node/1159404 is committed.
- $return[$language] = date_repeat_build_dates(NULL, \
date_ical_parse_rrule($field_info, $rrule), $field_info, $item);
- }
- else {
- $return[$language][$delta]['value'] = $from;
- if (!empty($to)) {
- $return[$language][$delta]['value2'] = $to;
- }
- }
- $delta++;
- }
- if (!isset($return)) {
- $return = NULL;
- }
- return $return;
- }
-}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.info \
index c0d536f..7cd23a4 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.info
@@ -1,16 +1,12 @@
name = Date Migration
-description = Provides support for importing into date fields with the Migrate \
module. +description = Obsolete data migration module. Disable if no other modules \
depend on it. core = 7.x
package = Date/Time
+hidden = TRUE
-dependencies[] = migrate
-dependencies[] = date
-files[] = date.migrate.inc
-files[] = date_migrate.test
-
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.module \
index accdcf8..158791a 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.module
@@ -2,15 +2,5 @@
/**
* @file
- * Migration integration for Date Migrate.
+ * Obsolete migration integration for Date - now in Date itself.
*/
-
-/**
- * Implements hook_migrate_api().
- */
-function date_migrate_migrate_api() {
- $api = array(
- 'api' => 2,
- );
- return $api;
-}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.test \
deleted file mode 100644 index 400b2d2..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate.test
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/**
- * @file
- * Test for using date fields with Migrate module.
- */
-
-/**
- * Test date migration.
- */
-class DateMigrateExampleUnitTest extends DrupalWebTestCase {
-
- /**
- * Provides information about this test.
- */
- public static function getInfo() {
- return array(
- 'name' => 'Date2 migration',
- 'description' => 'Testing migration of date fields',
- 'group' => 'Migrate',
- );
- }
-
- /**
- * Declars the module dependencies for the test.
- */
- function setUp() {
- parent::setUp('migrate', 'features', 'date', 'date_repeat', 'date_repeat_field', \
'date_migrate_example');
- }
-
- /**
- * Verify that date fields are imported correctly. When no timezone is
- * explicitly provided with the source data, we want the displayed time on the
- * Drupal site to match that in the source data. To validate that, we make
- * sure we have set a consistent timezone at the PHP and Drupal levels, and
- * that the format used on the page is not locale-dependent (no day or month
- * names). Then, we can just look for the desired date/time strings in the
- * node page.
- */
- function testDateImport() {
- date_default_timezone_set('America/Los_Angeles');
- variable_set('date_default_timezone', 'America/Los_Angeles');
- variable_set('date_format_medium', 'Y-m-d H:i');
- $migration = Migration::getInstance('DateExample');
- $result = $migration->processImport();
- $this->assertEqual($result, Migration::RESULT_COMPLETED, t('Variety term import \
returned RESULT_COMPLETED'));
- $rawnodes = node_load_multiple(FALSE, array('type' => 'date_migrate_example'), \
TRUE);
- $this->assertEqual(count($rawnodes), 2, t('Two sample nodes created'));
- $node = reset($rawnodes);
- $this->drupalGet('/node/' . $node->nid);
- $this->assertText('2011-05-12 19:43', t('Simple date field found'));
- $this->assertText('2011-06-13 18:32 to 2011-07-23 10:32', t('Date range field \
found'));
- $this->assertText('2011-07-22 12:13', t('Datestamp field found'));
- $this->assertText('2011-08-01 00:00 to 2011-09-01 00:00', t('Datestamp range \
field found'));
- $this->assertText('2011-11-18 15:00', t('Datetime field with +9 timezone \
found'));
- $this->assertText('2011-10-30 14:43 to 2011-12-31 17:59', t('Datetime range \
field with -5 timezone found'));
- $this->assertText('2011-11-25 09:01', t('First date repeat instance found'));
- $this->assertText('2011-12-09 09:01', t('Second date repeat instance found'));
- $this->assertNoText('2011-12-23 09:01', t('Skipped date repeat instance not \
found'));
- $this->assertText('2012-05-11 09:01', t('Last date repeat instance found'));
- $node = next($rawnodes);
- $this->drupalGet('/node/' . $node->nid);
- $this->assertText('2012-06-21 15:32', t('First date value found'));
- $this->assertText('2012-12-02 11:08', t('Second date value found'));
- $this->assertText('2004-02-03 01:15', t('Start for first date range found'));
- $this->assertText('2005-03-04 22:11', t('End for first date range found'));
- $this->assertText('2014-09-01 17:21', t('Start for second date range found'));
- $this->assertText('2015-12-23 00:01', t('End for first second range found'));
- }
-}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info
index b54a3f7..e5bbc8a 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.info
@@ -2,7 +2,6 @@ core = "7.x"
dependencies[] = "date"
dependencies[] = "date_repeat"
dependencies[] = "date_repeat_field"
-dependencies[] = "date_migrate"
dependencies[] = "features"
dependencies[] = "migrate"
description = "Examples of migrating with the Date module"
@@ -21,9 +20,9 @@ package = "Features"
project = "date_migrate_example"
version = "7.x-2.0"
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.migrate.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.migrate.inc
index 491c27f..fcc2a22 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.migrate.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.migrate.inc
@@ -13,8 +13,8 @@ class DateExampleMigration extends XMLMigration {
/**
* Sets up the migration.
*/
- public function __construct() {
- parent::__construct();
+ public function __construct($arguments = array()) {
+ parent::__construct($arguments);
$this->description = t('Example migration into date fields');
$this->map = new MigrateSQLMap($this->machineName,
@@ -66,28 +66,34 @@ class DateExampleMigration extends XMLMigration {
// For date ranges, we add the "end" value in prepareRow() below.
$this->addFieldMapping('field_date_range', 'date_range_from');
+ $this->addFieldMapping('field_date_range:to', 'date_range_to');
// RRULEs on repeat fields are also done in prepareRow().
$this->addFieldMapping('field_date_repeat', 'date_repeat');
+ $this->addFieldMapping('field_date_repeat:rrule', 'date_repeat_rrule');
$this->addFieldMapping('field_datestamp', 'datestamp')
->xpath('datestamp');
$this->addFieldMapping('field_datestamp_range', 'datestamp_range_from');
+ $this->addFieldMapping('field_datestamp_range:to', 'datestamp_range_to');
// You can specify a timezone to be applied to all values going into the
// field (Tokyo is UTC+9, no DST)
- $arguments = DateMigrateFieldHandler::arguments('Asia/Tokyo');
$this->addFieldMapping('field_datetime', 'datetime')
- ->xpath('datetime')
- ->arguments($arguments);
+ ->xpath('datetime');
+ $this->addFieldMapping('field_datetime:timezone')
+ ->defaultValue('Asia/Tokyo');
// You can also get the timezone from the source data - it can be different
// for each instance of the field. Like To and RRULE values, it is added
// in prepareRow().
$this->addFieldMapping('field_datetime_range', 'datetime_range_from');
+ $this->addFieldMapping('field_datetime_range:to', 'datetime_range_to');
+ $this->addFieldMapping('field_datetime_range:timezone', \
'datetime_range_timezone');
// Unmapped destination fields.
- $this->addUnmigratedDestinations(array('is_new', 'status', 'promote', \
'revision', 'language', 'sticky', 'created', 'changed', 'revision_uid')); + \
$this->addUnmigratedDestinations(array('is_new', 'status', 'promote', + \
'revision', 'language', 'sticky', 'created', 'changed', 'revision_uid')); }
/**
@@ -101,30 +107,25 @@ class DateExampleMigration extends XMLMigration {
// The date range field can have multiple values.
$current_row->date_range_from = array();
foreach ($current_row->xml->date_range as $range) {
- $date_data = array(
- 'from' => (string) $range->from[0],
- 'to' => (string) $range->to[0],
- );
- $current_row->date_range_from[] = drupal_json_encode($date_data);
+ $current_row->date_range_from[] = (string)$range->from[0];
+ $current_row->date_range_to[] = (string)$range->to[0];
}
- $date_data = array(
- 'from' => (string) $current_row->xml->datestamp_range->from[0],
- 'to' => (string) $current_row->xml->datestamp_range->to[0],
- );
- $current_row->datestamp_range_from = drupal_json_encode($date_data);
-
- $date_data = array(
- 'from' => (string) $current_row->xml->datetime_range->from[0],
- 'to' => (string) $current_row->xml->datetime_range->to[0],
- 'timezone' => (string) $current_row->xml->datetime_range->timezone[0],
- );
- $current_row->datetime_range_from = drupal_json_encode($date_data);
-
- $date_data = array(
- 'from' => (string) $current_row->xml->date_repeat->date[0],
- 'rrule' => (string) $current_row->xml->date_repeat->rule[0],
- );
- $current_row->date_repeat = drupal_json_encode($date_data);
+ $current_row->datestamp_range_from + (string) \
$current_row->xml->datestamp_range->from[0]; + $current_row->datestamp_range_to + \
(string) $current_row->xml->datestamp_range->to[0]; +
+ $current_row->datetime_range_from + (string) \
$current_row->xml->datetime_range->from[0]; + $current_row->datetime_range_to + \
(string) $current_row->xml->datetime_range->to[0]; + \
$current_row->datetime_range_timezone + (string) \
$current_row->xml->datetime_range->timezone[0]; +
+ $current_row->date_repeat + (string) \
$current_row->xml->date_repeat->date[0]; + $current_row->date_repeat_rrule + \
(string) $current_row->xml->date_repeat->rule[0]; }
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.module
index 993bd11..2ed7a61 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.module
@@ -13,6 +13,9 @@ include_once 'date_migrate_example.features.inc';
function date_migrate_example_migrate_api() {
$api = array(
'api' => 2,
+ 'migrations' => array(
+ 'DateExample' => array('class_name' => 'DateExampleMigration')
+ ),
);
return $api;
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/README.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/README.txt index \
149810f..7a66628 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/README.txt
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/README.txt
@@ -18,7 +18,7 @@ Timepicker
===============================================================================
There are three ways to let users select time in the Date Popup widgets.
-You can choose between them by going to admin/config/content/date_popup.
+You can choose between them by going to admin/config/date/date_popup.
The options are:
@@ -99,10 +99,10 @@ Example:
$form['date'] = array(
'#type' => 'date_popup',
- '#default_value' => '2007-01-01 10:30:00,
+ '#default_value' => '2007-01-01 10:30:00',
'#date_type' => DATE_DATETIME,
'#date_timezone' => date_default_timezone(),
- '#date_format' => 'm/d/Y - H:i',
+ '#date_format' => 'm-d-Y H:i',
'#date_increment' => 1,
'#date_year_range' => '-3:+3',
);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.info index \
767aaca..cdaf48e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.info
@@ -7,9 +7,9 @@ configure = admin/config/date/date_popup
stylesheets[all][] = themes/datepicker.1.7.css
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.module index \
ca292ef..a2d0ebb 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_popup/date_popup.module
@@ -87,7 +87,7 @@ function date_popup_library() {
$path . '/jquery.timeentry.pack.js' => array(),
),
'css' => array(
- $path . '/themes/jquery.timeentry.css' => array('preprocess' => FALSE),
+ $path . '/themes/jquery.timeentry.css' => array(),
),
);
return $libraries;
@@ -352,7 +352,8 @@ function date_popup_process_date_part(&$element) {
$parents = array_merge($element['#parents'], array('date'));
$sub_element = array(
'#type' => 'textfield',
- '#title' => $element['#date_label_position'] == 'above' ? \
theme('date_part_label_date', array('part_type' => 'date', 'element' => $element)) : \
'', + '#title' => theme('date_part_label_date', array('part_type' => 'date', \
'element' => $element)), + '#title_display' => $element['#date_label_position'] == \
'above' ? 'before' : 'invisible', '#default_value' => $element['#value']['date'],
'#id' => $id,
'#input' => FALSE,
@@ -427,7 +428,8 @@ function date_popup_process_time_part(&$element) {
$parents = array_merge($element['#parents'], array('time'));
$sub_element = array(
'#type' => 'textfield',
- '#title' => $element['#date_label_position'] == 'above' ? \
theme('date_part_label_time', array('part_type' => 'time', 'element' => $element)) : \
'', + '#title' => theme('date_part_label_time', array('part_type' => 'time', \
'element' => $element)), + '#title_display' => $element['#date_label_position'] == \
'above' ? 'before' : 'invisible', '#default_value' => $element['#value']['time'],
'#id' => $id,
'#size' => 15,
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat.info index \
1d1720a..d42bec9 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat.info
@@ -7,9 +7,9 @@ php = 5.2
files[] = tests/date_repeat.test
files[] = tests/date_repeat_form.test
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat_form.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat_form.inc \
index 9cef000..db7a79b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat_form.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat/date_repeat_form.inc
@@ -941,7 +941,6 @@ function theme_date_repeat_current_additions($rows = array()) {
*/
function theme_date_repeat_rrule($vars) {
$element = $vars['element'];
- $class = $element['#date_repeat_collapsed'] ? array('date-no-float', \
'collapsible', 'collapsed') : array('date-no-float', 'collapsible'); $id = \
drupal_html_id('repeat-settings-fieldset'); $parents = $element['#parents'];
$selector = "{$parents[0]}[{$parents[1]}][{$parents[2]}][show_repeat_settings]";
@@ -949,11 +948,10 @@ function theme_date_repeat_rrule($vars) {
'#type' => 'item',
'#title' => t('Repeat settings'),
'#title_display' => 'invisible',
- '#attributes' => array('class' => $class),
'#markup' => $element['#children'],
'#states' => array(
- 'visible' => array(
- ":input[name=\"{$selector}\"]" => array('checked' => TRUE),
+ 'invisible' => array(
+ ":input[name=\"{$selector}\"]" => array('checked' => FALSE),
),
),
'#id' => $id,
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.info
index 803105c..90d556c 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.info
@@ -7,9 +7,9 @@ stylesheets[all][] = date_repeat_field.css
package = Date/Time
core = 7.x
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.module
index 675ed02..c04e13e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_repeat_field/date_repeat_field.module
@@ -55,7 +55,7 @@ function theme_date_repeat_display($vars) {
$output = '';
if (!empty($item['rrule'])) {
$output = date_repeat_rrule_description($item['rrule']);
- $output = '<div>' . $output . '</div>';
+ $output = '<div class="date-repeat-rule">' . $output . '</div>';
}
return $output;
}
@@ -346,15 +346,8 @@ function date_repeat_field_widget_validate($element, \
&$form_state) { // the repeating dates, wipe out the previous values, and populate \
the // field with the new values.
- // TODO
- // Is it right to not do anything unless there are changes? Will that
- // confuse anyone? Commenting that out for now...
$rrule = $item['rrule'];
- if (!empty($rrule)
- //&& ($rrule != $element['rrule']['#prev_rrule']
- //|| $item['value'] != $element['rrule']['#prev_value']
- //|| $item['value2'] != $element['rrule']['#prev_value2'])
- ) {
+ if (!empty($rrule)) {
// Avoid undefined index problems on dates that don't have all parts.
$possible_items = array('value', 'value2', 'timezone', 'offset', 'offset2');
@@ -514,9 +507,6 @@ function date_repeat_field_date_combo_process_alter(&$element, \
&$form_state, $co
'#date_increment' => $instance['widget']['settings']['increment'],
'#date_year_range' => $instance['widget']['settings']['year_range'],
'#date_label_position' => $instance['widget']['settings']['label_position'],
- '#prev_value' => isset($item['value']) ? $item['value'] : '',
- '#prev_value2' => isset($item['value2']) ? $item['value2'] : '',
- '#prev_rrule' => isset($item['rrule']) ? $item['rrule'] : '',
'#date_repeat_widget' => str_replace('_repeat', '', \
$instance['widget']['type']),
'#date_repeat_collapsed' => \
$instance['widget']['settings']['repeat_collapsed'], '#date_flexible' => 0,
@@ -626,6 +616,17 @@ function \
date_repeat_field_form_field_ui_field_edit_form_alter(&$form, &$form_st \
$form['field']['cardinality']['#disabled'] = TRUE;
$form['field']['cardinality']['#value'] = FIELD_CARDINALITY_UNLIMITED;
}
+ // Repeating dates need unlimited values, confirm that in element_validate.
+ $form['field']['#element_validate'] = array('date_repeat_field_set_cardinality');
+}
+
+/**
+ * Ensure the cardinality gets updated if the option to make a date repeating is \
checked. + */
+function date_repeat_field_set_cardinality($element, &$form_state) {
+ if (!empty($form_state['values']['field']['settings']['repeat'])) {
+ form_set_value($element['cardinality'], FIELD_CARDINALITY_UNLIMITED, \
$form_state); + }
}
/**
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_tools/date_tools.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_tools/date_tools.info index \
3f392a4..51b8691 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_tools/date_tools.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_tools/date_tools.info
@@ -6,9 +6,9 @@ core = 7.x
configure = admin/config/date/tools
files[] = tests/date_tools.test
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/date_views.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/date_views.info index \
ef7da6c..4abeb60 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/date_views.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/date_views.info
@@ -9,13 +9,12 @@ files[] = includes/date_views_argument_handler.inc
files[] = includes/date_views_argument_handler_simple.inc
files[] = includes/date_views_filter_handler.inc
files[] = includes/date_views_filter_handler_simple.inc
-files[] = includes/date_views.views_default.inc
files[] = includes/date_views.views.inc
files[] = includes/date_views_plugin_pager.inc
-; Information added by drupal.org packaging script on 2012-08-13
-version = "7.x-2.6"
+; Information added by Drupal.org packaging script on 2013-12-21
+version = "7.x-2.7"
core = "7.x"
project = "date"
-datestamp = "1344850024"
+datestamp = "1387659206"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_argument_handler_simple.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_argument_handler_simple.inc
index faff05a..2d3fb7c 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_argument_handler_simple.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_argument_handler_simple.inc
@@ -85,7 +85,7 @@ class date_views_argument_handler_simple extends \
views_handler_argument_date { $options = parent::option_definition();
$options['year_range'] = array('default' => '-3:+3');
$options['granularity'] = array('default' => 'month');
- $options['default_argument_type'] = array('default' => 'date');
+ $options['default_argument_type']['default'] = 'date';
$options['add_delta'] = array('default' => '');
$options['use_fromto'] = array('default' => '');
$options['title_format'] = array('default' => '');
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc
index 5eb5ebc..0cfc7fc 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler.inc
@@ -36,6 +36,10 @@ class date_views_filter_handler extends \
date_views_filter_handler_simple { $this->date_combine_conditions('op_simple');
}
+ function op_contains($field) {
+ $this->date_combine_conditions('op_contains');
+ }
+
/**
* Combines multiple date WHERE expressions into a single WHERE expression.
*
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler_simple.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler_simple.inc
index 8a46253..b84eac3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler_simple.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/date_views/includes/date_views_filter_handler_simple.inc
@@ -42,6 +42,17 @@ class date_views_filter_handler_simple extends \
views_handler_filter_date { return $options;
}
+ function operators() {
+ $operators = parent::operators();
+ $operators['contains'] = array(
+ 'title' => t('Contains'),
+ 'method' => 'op_contains',
+ 'short' => t('contains'),
+ 'values' => 1,
+ );
+ return $operators;
+ }
+
/**
* Helper function to find a default value.
*/
@@ -53,8 +64,8 @@ class date_views_filter_handler_simple extends \
views_handler_filter_date { // If this is a remembered value, use the value from the \
SESSION. if (!empty($this->options['expose']['remember'])) {
$display_id = ($this->view->display_handler->is_defaulted('filters')) ? \
'default' : $this->view->current_display;
- if (!empty($_SESSION['views'][$this->view->name][$display_id]['date_filter'][$prefix])) \
{
- return $_SESSION['views'][$this->view->name][$display_id]['date_filter'][$prefix];
+ if (!empty($_SESSION['views'][$this->view->name][$display_id][$this->options['expose']['identifier']][$prefix])) \
{ + return $_SESSION['views'][$this->view->name][$display_id][$this->options['expose']['identifier']][$prefix];
}
}
@@ -104,8 +115,12 @@ class date_views_filter_handler_simple extends \
views_handler_filter_date {
$element_input['value'] = $this->get_filter_value('value', \
!empty($element_input['value']) ? $element_input['value'] : '');
$element_input['min'] = $this->get_filter_value('min', \
!empty($element_input['min']) ? $element_input['min'] : '');
$element_input['max'] = $this->get_filter_value('max', \
!empty($element_input['max']) ? $element_input['max'] : '');
- unset($element_input['default_date']);
- unset($element_input['default_to_date']);
+ if (is_array($element_input) && isset($element_input['default_date'])) {
+ unset($element_input['default_date']);
+ }
+ if (is_array($element_input) && isset($element_input['default_to_date'])) {
+ unset($element_input['default_to_date']);
+ }
$input[$this->options['expose']['identifier']] = $element_input;
}
@@ -163,6 +178,29 @@ class date_views_filter_handler_simple extends \
views_handler_filter_date {
$this->query->add_where_expression($group, "$field $this->operator \
$placeholder", array($placeholder => $value)); }
+ function op_contains($field) {
+
+ // Add the delta field to the view so we can later find the value that matched \
our query. + list($table_name, $field_name) = explode('.', $field);
+ if (!empty($this->options['add_delta']) && (substr($field_name, -6) == '_value' \
|| substr($field_name, -7) == '_value2')) { + \
$this->query->add_field($table_name, 'delta'); + }
+
+ $value = $this->get_filter_value('value', $this->value['value']);
+ $comp_date = new DateObject($value, date_default_timezone(), $this->format);
+ $fields = date_views_fields($this->base_table);
+ $fields = $fields['name'];
+ $fromto = $fields[$field]['fromto'];
+ $field_min = $this->date_handler->sql_field($fromto[0], NULL, $comp_date);
+ $field_min = $this->date_handler->sql_format($this->format, $field_min);
+ $field_max = $this->date_handler->sql_field($fromto[1], NULL, $comp_date);
+ $field_max = $this->date_handler->sql_format($this->format, $field_max);
+ $placeholder_min = $this->placeholder();
+ $placeholder_max = $this->placeholder();
+ $group = !empty($this->options['date_group']) ? $this->options['date_group'] : \
$this->options['group']; + $this->query->add_where_expression($group, "$field_max \
>= $placeholder_min AND $field_min <= $placeholder_max", array($placeholder_min => \
> $value, $placeholder_max => $value));
+ }
+
/**
* Set the granularity of the date parts to use in the filter.
*/
@@ -316,7 +354,7 @@ class date_views_filter_handler_simple extends \
views_handler_filter_date { $type = 'date_text';
}
- $format = $this->date_handler->views_formats($this->options['granularity'], \
'sql'); + $format = \
$this->date_handler->views_formats($this->options['granularity'], \
'display');
$granularity = array_keys($this->date_handler->date_parts($this->options['granularity']));
$relative_value = ($prefix == 'max' ? $this->options['default_to_date'] : \
$this->options['default_date']);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/date/tests/date_migrate.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/date/tests/date_migrate.test new file \
mode 100644 index 0000000..cdde115
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/date/tests/date_migrate.test
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * @file
+ * Test for using date fields with Migrate module.
+ */
+
+/**
+ * Test date migration.
+ */
+class DateMigrateExampleUnitTest extends DrupalWebTestCase {
+
+ /**
+ * Provides information about this test.
+ */
+ public static function getInfo() {
+ return array(
+ 'name' => 'Date Migration',
+ 'description' => 'Test migration into date fields',
+ 'group' => 'Date',
+ );
+ }
+
+ /**
+ * Declars the module dependencies for the test.
+ */
+ function setUp() {
+ parent::setUp('migrate', 'features', 'date', 'date_repeat',
+ 'date_repeat_field', 'date_migrate_example');
+ // Make sure the migration is registered.
+ if (function_exists('migrate_static_registration')) {
+ // Migrate 2.6 and later
+ migrate_static_registration();
+ }
+ else {
+ // Migrate 2.5 and earlier
+ migrate_get_module_apis(TRUE);
+ }
+ }
+
+ /**
+ * Verify that date fields are imported correctly. When no timezone is
+ * explicitly provided with the source data, we want the displayed time on the
+ * Drupal site to match that in the source data. To validate that, we make
+ * sure we have set a consistent timezone at the PHP and Drupal levels, and
+ * that the format used on the page is not locale-dependent (no day or month
+ * names). Then, we can just look for the desired date/time strings in the
+ * node page.
+ */
+ function testDateImport() {
+ date_default_timezone_set('America/Los_Angeles');
+ variable_set('date_default_timezone', 'America/Los_Angeles');
+ variable_set('date_format_medium', 'Y-m-d H:i');
+ $migration = Migration::getInstance('DateExample');
+ $result = $migration->processImport();
+ $this->assertEqual($result, Migration::RESULT_COMPLETED, t('Variety term import \
returned RESULT_COMPLETED')); + $rawnodes = node_load_multiple(FALSE, array('type' \
=> 'date_migrate_example'), TRUE); + $this->assertEqual(count($rawnodes), 2, \
t('Two sample nodes created')); + $node = reset($rawnodes);
+ $this->drupalGet('/node/' . $node->nid);
+ $this->assertText('2011-05-12 19:43', t('Simple date field found'));
+ $this->assertText('2011-06-13 18:32 to 2011-07-23 10:32', t('Date range field \
found')); + $this->assertText('2011-07-22 12:13', t('Datestamp field found'));
+ $this->assertText('2011-08-01 00:00 to 2011-09-01 00:00', t('Datestamp range \
field found')); + $this->assertText('2011-11-18 15:00', t('Datetime field with +9 \
timezone found')); + $this->assertText('2011-10-30 14:43 to 2011-12-31 17:59', \
t('Datetime range field with -5 timezone found')); + $this->assertText('2011-11-25 \
09:01', t('First date repeat instance found')); + $this->assertText('2011-12-09 \
09:01', t('Second date repeat instance found')); + $this->assertNoText('2011-12-23 \
09:01', t('Skipped date repeat instance not found')); + \
$this->assertText('2012-05-11 09:01', t('Last date repeat instance found')); + \
$node = next($rawnodes); + $this->drupalGet('/node/' . $node->nid);
+ $this->assertText('2012-06-21 15:32', t('First date value found'));
+ $this->assertText('2012-12-02 11:08', t('Second date value found'));
+ $this->assertText('2004-02-03 01:15', t('Start for first date range found'));
+ $this->assertText('2005-03-04 22:11', t('End for first date range found'));
+ $this->assertText('2014-09-01 17:21', t('Start for second date range found'));
+ $this->assertText('2015-12-23 00:01', t('End for first second range found'));
+ }
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.info index 28c5770..c81b368 \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.info
@@ -4,15 +4,13 @@ dependencies[] = locale
dependencies[] = variable
package = Multilingual - Internationalization
core = 7.x
-
-files[] = i18n.install
files[] = i18n_object.inc
files[] = i18n.test
configure = admin/config/regional/i18n
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.test \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.test index 247af33..491d7ef \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.test
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n.test
@@ -144,12 +144,14 @@ class Drupali18nTestCase extends DrupalWebTestCase {
}
/**
- * Create a "Basic page" in the specified language.
- *
+ * Create a node of the specified type in the specified language.
+
+ * @param $type
+ * The node type.
* @param $title
- * Title of basic page in specified language.
+ * Title of node in specified language.
* @param $body
- * Body of basic page in specified language.
+ * Body of node in specified language.
* @param $langcode
* Language code.
*/
@@ -159,7 +161,9 @@ class Drupali18nTestCase extends DrupalWebTestCase {
$edit["body[$lang][0][value]"] = $body;
$edit['language'] = $langcode;
$this->drupalPost('node/add/' . $type, $edit, t('Save'));
- $this->assertRaw(t('Basic @type %title has been created.', array('@type' => \
$type, '%title' => $title)), t('Basic page created.')); + $info = \
node_type_load($type); + $message = t('@name %title has been created.', \
array('@name' => $info->name, '%title' => $title)); + $this->assertRaw($message);
// Check to make sure the node was created.
$node = $this->drupalGetNodeByTitle($title);
@@ -169,15 +173,14 @@ class Drupali18nTestCase extends DrupalWebTestCase {
}
/**
- * Create a translation for the specified basic page in the specified
- * language.
+ * Create a translation for the specified node in the specified language.
*
* @param $node
* The basic page to create translation for.
* @param $title
- * Title of basic page in specified language.
+ * Title of node in specified language.
* @param $body
- * Body of basic page in specified language.
+ * Body of node in specified language.
* @param $language
* Language code.
*/
@@ -196,8 +199,9 @@ class Drupali18nTestCase extends DrupalWebTestCase {
$edit["title"] = $title;
$edit[$body_key] = $body;
$this->drupalPost(NULL, $edit, t('Save'));
- $this->assertRaw(t('Basic page %title has been created.', array('%title' => \
$title)), t('Translation created.'));
-
+ $info = node_type_load($node->type);
+ $message = t('@name %title has been created.', array('@name' => $info->name, \
'%title' => $title)); + $this->assertRaw($message);
// Check to make sure that translation was successful.
$translation = $this->drupalGetNodeByTitle($title);
$this->assertTrue($translation, t('Node found in database.'));
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_block/i18n_block.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_block/i18n_block.info index \
52de33c..9b1c51e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_block/i18n_block.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_block/i18n_block.info
@@ -8,9 +8,9 @@ files[] = i18n_block.inc
files[] = i18n_block.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_contact/i18n_contact.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_contact/i18n_contact.info \
index 9ca0957..fa1351c 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_contact/i18n_contact.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_contact/i18n_contact.info
@@ -5,9 +5,9 @@ dependencies[] = i18n_string
package = Multilingual - Internationalization
core = 7.x
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.api.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.api.php new \
file mode 100644 index 0000000..3f5b01c
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.api.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * @file
+ * API documentation file for Field translation module.
+ *
+ * This module takes care of translating common field elements like title and
+ * description for all fields, plus some field specific values (default, options)
+ * for field types defined by Drupal core.
+ *
+ * Before implementing any of these hooks, consider whether you would be better
+ * off implementing Drupal core's hook_field_widget_form_alter().
+ *
+ * @see i18n_field_field_widget_form_alter()
+ */
+
+/**
+ * Provide information about callbacks for translating specific field types.
+ *
+ * This information can be retrieved using i18n_field_type_info().
+ * @return
+ * Array of values indexed by field type. Valid keys are:
+ * - 'translate_default', Callback for translating the default value for this \
field type. + * - 'translate_options', Callback for translating options for this \
field type. + *
+ * @see i18n_field_type_info()
+ * @see i18n_field_i18n_field_info()
+ *
+ * For examples of both callback types:
+ *
+ * @see i18n_field_translate_allowed_values()
+ * @see i18n_field_translate_default()
+ *
+ */
+function hook_i18n_field_info() {
+ $info['text'] = $info['text_long'] = $info['text_with_summary'] = array(
+ 'translate_default' => 'i18n_field_translate_default',
+ );
+ $info['list_text'] = $info['list_boolean'] = $info['list_integer'] = array(
+ 'translate_options' => 'i18n_field_translate_allowed_values',
+ );
+ return $info;
+}
+
+/**
+ * Alter information provided by hook_i18n_field_info().
+ *
+ * @see i18n_field_type_info()
+ */
+function hook_i18n_field_info_alter(&$info) {
+ // Unset the default callback for text fields.
+ unset($info['text']['translate_default']);
+}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.info index \
c3a40a3..ebd630e 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.info
@@ -6,9 +6,9 @@ package = Multilingual - Internationalization
core = 7.x
files[] = i18n_field.inc
files[] = i18n_field.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.module index \
f39a6a7..b682397 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_field/i18n_field.module
@@ -163,7 +163,6 @@ function i18n_field_field_formatter_view($entity_type, $entity, \
$field, $instanc return $element;
}
-
/**
* Implements hook_field_widget_form_alter().
*
@@ -176,8 +175,8 @@ function i18n_field_field_formatter_view($entity_type, $entity, \
$field, $instanc function i18n_field_field_widget_form_alter(&$element, \
&$form_state, $context) { global $language;
- // Skip the node type edit fields by checking for existing entity
- if (empty($element['#entity'])) {
+ // Don't translate if the widget is being shown on the field edit form.
+ if ($form_state['build_info']['form_id'] == 'field_ui_field_edit_form') {
return;
}
@@ -189,8 +188,38 @@ function i18n_field_field_widget_form_alter(&$element, \
&$form_state, $context) { $instance = $context['instance'];
$langcode = $context['langcode'];
+ // Get the element to alter. Account for inconsistencies in how the element
+ // is built for different field types.
+ if (isset($element[0]) && count($element) == 1) {
+ // Single-value file fields and image fields.
+ $alter_element = &$element[0];
+ }
+ elseif (isset($element['value'])) {
+ // Number fields. Single-value text fields.
+ $alter_element = &$element['value'];
+ }
+ elseif ($field['type'] == 'entityreference' && isset($element['target_id'])) {
+ // Entityreference fields using the entityreference_autocomplete widget.
+ $alter_element = &$element['target_id'];
+ }
+ else {
+ // All other fields.
+ $alter_element = &$element;
+ }
+
+ // If a subelement has the same title as the parent, translate it instead.
+ // Allows fields such as email and commerce_price to be translated.
+ foreach (element_get_visible_children($element) as $key) {
+ $single_value = ($field['cardinality'] == 1);
+ $has_title = (isset($element['#title']) && isset($element[$key]['#title']));
+ if ($single_value && $has_title && $element[$key]['#title'] == \
$element['#title']) { + $alter_element = &$element[$key];
+ break;
+ }
+ }
+
// The field language may affect some variables (default) but not others \
(description will be in current page language)
- $i18n_langcode = empty($element['#language']) || $element['#language'] == \
LANGUAGE_NONE ? $language->language : $element['#language']; + $i18n_langcode = \
empty($alter_element['#language']) || $alter_element['#language'] == LANGUAGE_NONE ? \
$language->language : $alter_element['#language'];
// Translate instance to current page language and set to form_state
// so it will be used for validation messages later.
@@ -200,37 +229,60 @@ function i18n_field_field_widget_form_alter(&$element, \
&$form_state, $context) { }
// Translate field title if set and it is the default one.
- // When cardinality is 1, $element['value'] is used instead.
if (!empty($instance_current['label']) && $instance_current['label'] != \
$instance['label']) {
- if (!empty($element['#title']) && $element['#title'] == $instance['label']) {
- $element['#title'] = $instance_current['label'];
- }
- if (isset($element['value']) && !empty($element['value']['#title']) && \
$element['value']['#title'] == $instance['label']) {
- $element['value']['#title'] = $instance_current['label'];
+ if (!empty($alter_element['#title']) && $alter_element['#title'] == \
check_plain($instance['label'])) { + $alter_element['#title'] = \
check_plain($instance_current['label']); }
}
// Translate field description if set and it is the default one.
- // When cardinality is 1, $element['value'] is used instead.
if (!empty($instance_current['description']) && $instance_current['description'] \
!= $instance['description']) {
- if (!empty($element['#description']) && $element['#description'] == \
$instance['description']) {
- $element['#description'] = $instance_current['description'];
- }
- if (isset($element['value']) && !empty($element['value']['#description']) && \
$element['value']['#description'] == $instance['description']) {
- $element['value']['#description'] = $instance_current['description'];
+ if (!empty($alter_element['#description'])) {
+ // Allow single-value file fields and image fields to have their
+ // descriptions translated. file_field_widget_form() passes the
+ // description through theme('file_upload_help'), so i18n_field
+ // must do the same.
+ $filefield = in_array($field['type'], array('file', 'image'));
+ $single_value = ($field['cardinality'] == 1);
+ $no_default = empty($alter_element['#default_value']['fid']);
+ if ($filefield && $single_value && $no_default) {
+ $help_variables = array(
+ 'description' => field_filter_xss($instance['description']),
+ 'upload_validators' => $alter_element['#upload_validators'],
+ );
+ $original_description = theme('file_upload_help', $help_variables);
+ if ($alter_element['#description'] == $original_description) {
+ $help_variables = array(
+ 'description' => field_filter_xss($instance_current['description']),
+ 'upload_validators' => $alter_element['#upload_validators'],
+ );
+ $alter_element['#description'] = theme('file_upload_help', \
$help_variables); + }
+ }
+ elseif ($alter_element['#description'] == \
field_filter_xss($instance['description'])) { + $alter_element['#description'] \
= field_filter_xss($instance_current['description']); + }
}
}
- // Translate list options
- if (!empty($element['#options']) && ($translate = \
i18n_field_type_info($field['type'], 'translate_options')) && \
!empty($field['settings']['allowed_values'])) {
- $element['#options'] = $translate($field, $i18n_langcode);
- if (isset($element['#properties']) && \
!empty($element['#properties']['empty_option'])) {
- $label = theme('options_none', array('instance' => $instance, 'option' => \
$element['#properties']['empty_option']));
- $element['#options'] = array('_none' => $label) + $element['#options'];
- // For some elements, change title to new translated option
- if (!empty($element['#title']) && $field['type'] == 'list_boolean' && \
!empty($element['#on_value'])) {
- $on_value = $element['#on_value'];
- $element['#title'] = $element['#options'][$on_value];
+ // Translate list options.
+ $has_options = (!empty($alter_element['#options']) || $field['type'] == \
'list_boolean'); + $has_allowed_values = \
!empty($field['settings']['allowed_values']); + $translate = \
i18n_field_type_info($field['type'], 'translate_options'); + if ($has_options && \
$has_allowed_values && $translate) { + $alter_element['#options'] = \
$translate($field, $i18n_langcode); + if (isset($alter_element['#properties']) && \
!empty($alter_element['#properties']['empty_option'])) { + $label = \
theme('options_none', array('instance' => $instance, 'option' => \
$alter_element['#properties']['empty_option'])); + $alter_element['#options'] = \
array('_none' => $label) + $alter_element['#options']; + }
+ // Translate list_boolean fields using the checkboxes widget.
+ if (!empty($alter_element['#title']) && $field['type'] == 'list_boolean' && \
!empty($alter_element['#on_value'])) { + $on_value = \
$alter_element['#on_value']; + $alter_element['#options'];
+ $alter_element['#title'] = $alter_element['#options'][$on_value];
+ // For using label instead of "On value".
+ if ($instance['widget']['settings']['display_label']) {
+ $alter_element['#title'] = $instance_current['label'];
}
}
}
@@ -242,11 +294,15 @@ function i18n_field_field_widget_form_alter(&$element, \
&$form_state, $context) { $delta = $context['delta'];
$items = $context['items'];
- // Translate default value if exists and the current value is the default
- if (isset($element['value']['#default_value']) && ($translate = \
i18n_field_type_info($field['type'], 'translate_default')) &&
- !empty($instance['default_value'][$delta]['value']) && \
!empty($items[$delta]['value']) &&
- $instance['default_value'][$delta]['value'] === $items[$delta]['value']) {
- $element['value']['#default_value'] = $translate($instance, \
$items[$delta]['value'], $i18n_langcode); + // Translate default value.
+ $has_default_value = (isset($alter_element['#default_value']) && \
!empty($instance['default_value'][$delta]['value'])); + $storage_has_value = \
!empty($items[$delta]['value']); + $translate = i18n_field_type_info($field['type'], \
'translate_default'); + if ($has_default_value && $storage_has_value && $translate) \
{ + // Compare the default value with the value currently in storage.
+ if ($instance['default_value'][$delta]['value'] === $items[$delta]['value']) {
+ $alter_element['#default_value'] = $translate($instance, \
$items[$delta]['value'], $i18n_langcode); + }
}
}
@@ -344,7 +400,7 @@ function i18n_field_translate_allowed_values($field, $langcode = \
NULL) { }
/**
- * Translate field default
+ * Translate field default.
*/
function i18n_field_translate_default($instance, $value, $langcode = NULL) {
return i18n_string_translate(array('field', $instance['field_name'], \
$instance['bundle'], 'default_value'), $value, array('langcode' => $langcode)); @@ \
-360,7 +416,17 @@ function i18n_field_translate_property($instance, $property, \
$langcode = NULL) { }
/**
- * Get i18n information for fields
+ * Get i18n information for translating fields.
+ *
+ * @param $type
+ * Optional field type.
+ * @param $property
+ * Optional property to get from field type.
+ *
+ * @return
+ * - The property for the field if $type and $property set.
+ * - Array of properties for the field type if only $type is set.
+ * - Array of translation information for all field types.
*/
function i18n_field_type_info($type = NULL, $property = NULL) {
$info = &drupal_static(__FUNCTION__);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_forum/i18n_forum.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_forum/i18n_forum.info index \
d645355..a007cc8 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_forum/i18n_forum.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_forum/i18n_forum.info
@@ -7,9 +7,9 @@ package = Multilingual - Internationalization
core = 7.x
files[] = i18n_forum.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.inc index \
570bf9e..a33d846 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.inc
@@ -69,6 +69,7 @@ class i18n_menu_link extends i18n_string_object_wrapper {
return I18N_MODE_NONE;
}
}
+
/**
* Access to object translation. This should check object properties and \
permissions
*/
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.info index \
0c65b83..a436da1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.info
@@ -10,9 +10,9 @@ core = 7.x
files[] = i18n_menu.inc
files[] = i18n_menu.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.module index \
df670e5..8f91fc5 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_menu/i18n_menu.module
@@ -343,6 +343,8 @@ function i18n_menu_variable_info_alter(&$variables, $options) {
// Make menu variables translatable
$variables['menu_main_links_source']['localize'] = TRUE;
$variables['menu_secondary_links_source']['localize'] = TRUE;
+ $variables['menu_parent_[node_type]']['localize'] = TRUE;
+ $variables['menu_options_[node_type]']['localize'] = TRUE;
}
/**
@@ -468,7 +470,8 @@ function i18n_menu_navigation_links($menu_name, $level = 0) {
* Get localized menu title
*/
function _i18n_menu_link_title($link, $langcode = NULL) {
- return i18n_string_translate(array('menu', 'item', $link['mlid'], 'title'), \
$link['link_title'], array('langcode' => $langcode, 'sanitize' => FALSE)); + $key = \
i18n_object_info('menu_link', 'key'); + return i18n_string_translate(array('menu', \
'item', $link[$key], 'title'), $link['link_title'], array('langcode' => $langcode, \
'sanitize' => FALSE)); }
/**
@@ -500,7 +503,8 @@ function _i18n_menu_link_localize(&$link, $langcode = NULL) {
*/
function _i18n_menu_link_description($link, $langcode = NULL) {
if (!empty($link['options']['attributes']['title'])) {
- return i18n_string_translate(array('menu', 'item', $link['mlid'], \
'description'), $link['options']['attributes']['title'], array('langcode' => \
$langcode)); + $key = i18n_object_info('menu_link', 'key');
+ return i18n_string_translate(array('menu', 'item', $link[$key], 'description'), \
$link['options']['attributes']['title'], array('langcode' => $langcode)); }
else {
return NULL;
@@ -710,6 +714,26 @@ function i18n_menu_form_menu_edit_item_alter(&$form, \
&$form_state) { }
/**
+ * Implements hook_form_FORM_ID_alter().
+ * FORM_ID = menu-overview-form.
+ * Add a "translate" link in operations column for each menu item.
+ */
+function i18n_menu_form_menu_overview_form_alter(&$form, &$form_state) {
+ foreach (element_children($form) as $element) {
+ if (substr($element, 0, 5) == 'mlid:') {
+ $mlid = $form[$element]['#item']['mlid'];
+ if (i18n_get_object('menu', $mlid)->get_translate_access()) {
+ $form[$element]['operations']['translate'] = array(
+ '#type' => 'link',
+ '#title' => t('translate'),
+ '#href' => "admin/structure/menu/item/{$mlid}/translate",
+ );
+ }
+ }
+ }
+}
+
+/**
* Normal path should be checked with menu item's language to avoid
* troubles when a node and it's translation has the same url alias.
*/
@@ -727,6 +751,9 @@ function i18n_menu_item_get_language($item) {
}
else {
$menu = menu_load($item['menu_name']);
+ if (!isset($menu['i18n_mode'])) {
+ return LANGUAGE_NONE;
+ }
switch ($menu['i18n_mode']) {
case I18N_MODE_LANGUAGE:
return $menu['language'];
@@ -859,6 +886,14 @@ function i18n_menu_link_load($path, $langcode) {
}
/**
+ * Implements hook_query_TAG_alter() for features_menu_links.
+ * Add needed fields to properly serialize localization information.
+ */
+function i18n_menu_query_features_menu_link_alter($query) {
+ $query->fields('menu_links', array('language', 'customized'));
+}
+
+/**
* Implements hook_init().
*/
function i18n_menu_init() {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.info index \
56670fa..fe6bc65 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.info
@@ -9,9 +9,9 @@ configure = admin/config/regional/i18n/node
files[]=i18n_node.test
files[]=i18n_node.variable.inc
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc \
index 34cbe4b..a8adc7a 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc
@@ -213,6 +213,7 @@ function i18n_node_select_translation_submit($form, &$form_state) \
{ ))
->condition('nid', $add)
->execute();
+ entity_get_controller('node')->resetCache($add);
if (count($new)) {
drupal_set_message(format_plural(count($new), 'Added a node to the translation \
set.', 'Added @count nodes to the translation set.')); }
@@ -224,6 +225,7 @@ function i18n_node_select_translation_submit($form, &$form_state) \
{ ))
->condition('nid', $remove)
->execute();
+ entity_get_controller('node')->resetCache($remove);
drupal_set_message(format_plural(count($remove), 'Removed a node from the \
translation set.', 'Removed @count nodes from the translation set.')); }
}
@@ -246,7 +248,7 @@ function i18n_node_autocomplete($type, $language, $string = '') {
*/
function i18n_node_nid2autocomplete($nid) {
if ($node = node_load($nid)) {
- return check_plain($node->title) . ' [nid:' . $nid . ']';
+ return $node->title . ' [nid:' . $nid . ']';
}
else {
return t('Not found');
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_path/i18n_path.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_path/i18n_path.info index \
33c0635..d5d919c 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_path/i18n_path.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_path/i18n_path.info
@@ -6,9 +6,9 @@ core = 7.x
files[] = i18n_path.inc
files[] = i18n_path.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info \
index 8149e51..d9e241f 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info
@@ -4,9 +4,9 @@ dependencies[] = i18n
package = Multilingual - Internationalization
core = 7.x
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_select/i18n_select.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_select/i18n_select.info index \
8d84ef4..f695ee1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_select/i18n_select.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_select/i18n_select.info
@@ -6,9 +6,9 @@ core = 7.x
configure = admin/config/regional/i18n/select
files[] = i18n_select.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.inc index \
65f4c1b..3136aad 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.inc
@@ -1188,6 +1188,10 @@ class i18n_string_object_wrapper extends i18n_object_wrapper {
* Translate access (localize strings)
*/
protected function localize_access() {
+ // We could check also whether the object has strings to translate:
+ // && $this->get_strings(array('empty' => TRUE))
+ // However it may be better to display the 'No available strings' message
+ // for the user to have a clue of what's going on. See \
i18n_string_translate_page_object()
return user_access('translate interface') && user_access('translate user-defined \
strings'); }
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.info index \
7da968d..10a08e1 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.info
@@ -10,9 +10,9 @@ files[] = i18n_string.inc
files[] = i18n_string.test
configure = admin/config/regional/i18n/strings
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc \
index 86e7432..28005d6 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc
@@ -12,7 +12,14 @@ include_once DRUPAL_ROOT . '/includes/locale.inc';
include_once drupal_get_path('module', 'locale') . '/locale.admin.inc';
/**
- * Generate translate page from object
+ * Generate translate page from object.
+ *
+ * @param string $object_type
+ * Obejct type as declared in hook_i18n_object_info().
+ * @param object $object_value
+ * Drupal object to translate.
+ * @param object $language
+ * Optional language object.
*/
function i18n_string_translate_page_object($object_type, $object_value, $language = \
NULL) { // For backwards compatibility, ensure parameter is a language object
@@ -22,6 +29,13 @@ function i18n_string_translate_page_object($object_type, \
$object_value, $languag $object = i18n_object($object_type, $object_value);
$strings = $object->get_strings(array('empty' => TRUE));
+ // If no localizable strings, print message and fail gracefully.
+ // Possibly this object comes from some other contrib module.
+ // See http://drupal.org/node/1889878
+ if (!$strings) {
+ return t('This object has no strings available for translation.');
+ }
+
if (empty($langcode)) {
drupal_set_title(t('Translate !name', array('!name' => \
i18n_object_info($object_type, 'title')))); return \
i18n_string_translate_page_overview($object, $strings); @@ -44,7 +58,6 @@ function \
i18n_string_translate_page_overview($object, $strings) {
* Provide a core translation module like overview page for this object.
*/
function i18n_string_translate_page_overview_form($form, &$form_state, $object, \
$strings) {
- //include_once DRUPAL_ROOT . '/includes/language.inc';
// Set the default item key, assume it's the first.
$item_title = reset($strings);
$header = array(
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.info index \
3d66753..1ad3ca9 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.info
@@ -10,9 +10,9 @@ files[] = i18n_sync.install
files[] = i18n_sync.module.inc
files[] = i18n_sync.node.inc
files[] = i18n_sync.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.node.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.node.inc index \
0480eb7..b18c6f0 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.node.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_sync/i18n_sync.node.inc
@@ -27,6 +27,7 @@
* Node operation (insert|update).
*/
function i18n_sync_node_translation($node, $translations, $field_names, $op) {
+ $total = count($translations);
$count = 0;
// Disable language selection and synchronization temporarily, enable it again \
later $i18n_select = i18n_select(FALSE);
@@ -34,10 +35,11 @@ function i18n_sync_node_translation($node, $translations, \
$field_names, $op) { foreach ($translations as $translation) {
// If translation is the same node, we cannot synchronize with itself
if ($node->nid == $translation->nid) {
+ $total--;
continue;
}
// Load full node, we need all data here.
- $translation = node_load($translation->nid, NULL, TRUE);
+ $translation = node_load($translation->nid);
$i18n_options = i18n_sync_node_options($node->type);
// Invoke callback for each field, the default is just copy over
foreach ($field_names as $field) {
@@ -53,6 +55,13 @@ function i18n_sync_node_translation($node, $translations, \
$field_names, $op) {
module_invoke_all('i18n_sync_translation', 'node', $translation, \
$translation->language, $node, $node->language, $field_names); \
node_save($translation); $count++;
+ // Flush each entity from the load cache after processing, to
+ // avoid exceeding PHP memory limits. It should be safe to keep
+ // at least one, however; so we retain the final translation in
+ // the cache after saving it.
+ if ($count < $total) {
+ entity_get_controller('node')->resetCache(array($translation->nid));
+ }
}
i18n_sync(TRUE);
i18n_select($i18n_select);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info \
index 0d26403..3e7297b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info
@@ -11,9 +11,9 @@ files[] = i18n_taxonomy.pages.inc
files[] = i18n_taxonomy.admin.inc
files[] = i18n_taxonomy.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module \
index d5c1793..0a051b2 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module
@@ -184,11 +184,11 @@ function i18n_taxonomy_field_formatter_info() {
}
/**
-- * Implements hook_field_formatter_prepare_view().
-- *
-- * This preloads all taxonomy terms for multiple loaded objects at once and
-- * unsets values for invalid terms that do not exist.
-- */
+ * Implements hook_field_formatter_prepare_view().
+ *
+ * This preloads all taxonomy terms for multiple loaded objects at once and
+ * unsets values for invalid terms that do not exist.
+ */
function i18n_taxonomy_field_formatter_prepare_view($entity_type, $entities, $field, \
$instances, $langcode, &$items, $displays) { return \
taxonomy_field_formatter_prepare_view($entity_type, $entities, $field, $instances, \
$langcode, $items, $displays); }
@@ -318,7 +318,7 @@ function i18n_taxonomy_field_storage_details_alter(&$details, \
&$field) {
/**
* Implements hook_field_attach_prepare_translation_alter().
-
+ *
* Prepare and synchronize translation for term reference fields.
*/
function i18n_taxonomy_field_attach_prepare_translation_alter(&$entity, $context) {
@@ -468,7 +468,8 @@ function i18n_taxonomy_theme() {
* Get localized term name unfiltered.
*/
function i18n_taxonomy_term_name($term, $langcode = NULL) {
- return i18n_taxonomy_vocabulary_mode($term->vid, I18N_MODE_LOCALIZE) ? \
i18n_string(array('taxonomy', 'term', $term->tid, 'name'), $term->name, \
array('langcode' => $langcode, 'sanitize' => FALSE)) : $term->name; + $key = \
i18n_object_info('taxonomy_term', 'key'); + return \
i18n_taxonomy_vocabulary_mode($term->vid, I18N_MODE_LOCALIZE) ? \
i18n_string(array('taxonomy', 'term', $term->{$key}, 'name'), $term->name, \
array('langcode' => $langcode, 'sanitize' => FALSE)) : $term->name; }
@@ -476,7 +477,8 @@ function i18n_taxonomy_term_name($term, $langcode = NULL) {
* Get localized term description unfiltered.
*/
function i18n_taxonomy_term_description($term, $langcode = NULL) {
- return i18n_taxonomy_vocabulary_mode($term->vid, I18N_MODE_LOCALIZE) ? \
i18n_string(array('taxonomy', 'term', $term->tid, 'description'), $term->description, \
array('langcode' => $langcode, 'sanitize' => FALSE)) : $term->description; + $key = \
i18n_object_info('taxonomy_term', 'key'); + return \
i18n_taxonomy_vocabulary_mode($term->vid, I18N_MODE_LOCALIZE) ? \
i18n_string(array('taxonomy', 'term', $term->{$key}, 'description'), \
$term->description, array('langcode' => $langcode, 'sanitize' => FALSE)) : \
$term->description; }
/**
@@ -1260,10 +1262,10 @@ function i18n_taxonomy_modules_enabled($modules) {
$modules = drupal_map_assoc($modules);
if (isset($modules['i18n_taxonomy'])) {
foreach (field_info_fields() as $fieldname => $field) {
- if ($field['type'] == 'taxonomy_term_reference') {
- $field['settings']['options_list_callback'] = \
'i18n_taxonomy_allowed_values';
- field_update_field($field);
- }
+ if ($field['type'] == 'taxonomy_term_reference') {
+ $field['settings']['options_list_callback'] = \
'i18n_taxonomy_allowed_values'; + field_update_field($field);
}
+ }
}
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_translation/i18n_translation.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_translation/i18n_translation.info
index b9b54e7..113bbe3 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_translation/i18n_translation.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_translation/i18n_translation.info
@@ -6,9 +6,9 @@ core = 7.x
files[] = i18n_translation.inc
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_user/i18n_user.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_user/i18n_user.info index \
e438321..45ec115 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_user/i18n_user.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_user/i18n_user.info
@@ -4,9 +4,9 @@ core = 7.x
package = Multilingual - Internationalization
dependencies[] = i18n_variable
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_variable/i18n_variable.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_variable/i18n_variable.info \
index 59a4674..4a57d30 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_variable/i18n_variable.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/i18n_variable/i18n_variable.info
@@ -10,9 +10,9 @@ configure = admin/config/regional/i18n/variable
files[] = i18n_variable.class.inc
files[] = i18n_variable.test
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/tests/i18n_test.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/tests/i18n_test.info index \
f764aa0..af9f978 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/i18n/tests/i18n_test.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/i18n/tests/i18n_test.info
@@ -7,9 +7,9 @@ package = Testing
core = 6.x
hidden = TRUE
-; Information added by drupal.org packaging script on 2013-01-13
-version = "7.x-1.8"
+; Information added by drupal.org packaging script on 2013-08-21
+version = "7.x-1.10"
core = "7.x"
project = "i18n"
-datestamp = "1358075001"
+datestamp = "1377069696"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/LICENSE.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/LICENSE.txt old mode 100644
new mode 100755
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.info index 6394ad4..e8699c8 \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.info
@@ -4,9 +4,9 @@ core = "7.x"
package = "Media"
configure = "admin/config/media/imce"
-; Information added by drupal.org packaging script on 2011-10-20
-version = "7.x-1.5"
+; Information added by Drupal.org packaging script on 2013-12-17
+version = "7.x-1.8"
core = "7.x"
project = "imce"
-datestamp = "1319104232"
+datestamp = "1387302359"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.install index \
8d3e420..688c6b5 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.install
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.install
@@ -11,13 +11,13 @@
function imce_install() {
module_load_include('inc', 'imce', 'inc/imce.core.profiles');
imce_install_profiles();
- drupal_set_message(st('!module has been installed.', array('!module' => \
l(st('IMCE'), 'admin/config/media/imce')))); }
/**
* Implements hook_uninstall().
*/
function imce_uninstall() {
+ db_delete('file_usage')->condition('module', 'imce')->execute();
variable_del('imce_profiles');
variable_del('imce_roles_profiles');
variable_del('imce_settings_textarea');
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.module index fe93a12..f3dc4bf \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/imce.module
@@ -15,6 +15,7 @@ function imce_menu() {
'title' => 'File browser',
'page callback' => 'imce',
'access callback' => 'imce_access',
+ 'access arguments' => array(FALSE, 1),
'file' => 'inc/imce.page.inc',
'type' => MENU_CALLBACK,
);
@@ -118,7 +119,7 @@ function imce_textarea($element) {
if (!isset($regexp)) {
$regexp = FALSE;
if (imce_access() && $regexp = str_replace(' ', '', \
variable_get('imce_settings_textarea', ''))) {
- $regexp = '@^' . str_replace(',', '|', implode('.*', array_map('preg_quote', \
explode('*', $regexp)))) . '$@'; + $regexp = '@^(' . str_replace(',', '|', \
implode('.*', array_map('preg_quote', explode('*', $regexp)))) . ')$@'; }
}
if ($regexp && preg_match($regexp, $element['#id'])) {
@@ -132,58 +133,39 @@ function imce_textarea($element) {
* Returns the configuration profile assigned to a user for a specific file scheme.
*/
function imce_user_profile($user, $scheme = NULL) {
- $profiles = variable_get('imce_profiles', array());
- $swrappers = file_get_stream_wrappers();
- $default_scheme = variable_get('file_default_scheme', 'public');
+ static $ups = array();
- //handle user#1 separately
- if ($user->uid == 1) {
- $scheme = empty($scheme) ? $default_scheme : $scheme;
- if (isset($profiles[1]) && isset($swrappers[$scheme])) {
- return $profiles[1] + array('scheme' => $scheme);
- }
- return FALSE;
+ // Set scheme
+ if (empty($scheme)) {
+ $scheme = variable_get('file_default_scheme', 'public');
}
- //handle regular users
- $roles_profiles = variable_get('imce_roles_profiles', array());
- //store assigned configuration
- $conf = array();
- foreach ($roles_profiles as $rid => $role) {
- if (isset($user->roles[$rid])) {
- $conf = $role;
- break;
- }
+ // Return from cache.
+ if (isset($ups[$scheme][$user->uid])) {
+ return $ups[$scheme][$user->uid];
}
+ $ups[$scheme][$user->uid] = FALSE;
- //no scheme-profile assignment
- if (empty($conf)) {
+ // Check scheme
+ $swrappers = file_get_stream_wrappers();
+ if (!isset($swrappers[$scheme])) {
return FALSE;
}
- //return the profile for the specified scheme
- if (!empty($scheme)) {
- $key = $scheme . '_pid';
- if (isset($conf[$key]) && isset($profiles[$conf[$key]]) && \
isset($swrappers[$scheme])) {
- return $profiles[$conf[$key]] + array('scheme' => $scheme);
- }
- return FALSE;
- }
+ $profiles = variable_get('imce_profiles', array());
+ $scinfo = array('scheme' => $scheme);
- //no scheme specified. check the default
- $scheme = $default_scheme;
- $key = $scheme . '_pid';
- if (isset($conf[$key]) && isset($profiles[$conf[$key]]) && \
isset($swrappers[$scheme])) {
- return $profiles[$conf[$key]] + array('scheme' => $scheme);
+ // Handle user#1 separately
+ if ($user->uid == 1) {
+ return $ups[$scheme][$user->uid] = isset($profiles[1]) ? $profiles[1] + $scinfo \
: FALSE; }
- //check if any of the schemes has a profile assigned.
- foreach ($conf as $key => $pid) {
- if (substr($key, -4) == '_pid' && isset($profiles[$pid])) {
- $scheme = substr($key, 0, -4);
- if (isset($swrappers[$scheme])) {
- return $profiles[$pid] + array('scheme' => $scheme);
- }
+ // Handle regular users.
+ $roles_profiles = variable_get('imce_roles_profiles', array());
+ $sckey = $scheme . '_pid';
+ foreach ($roles_profiles as $rid => $conf) {
+ if (isset($user->roles[$rid]) && isset($conf[$sckey]) && \
isset($profiles[$conf[$sckey]])) { + return $ups[$scheme][$user->uid] = \
$profiles[$conf[$sckey]] + $scinfo; }
}
@@ -194,28 +176,11 @@ function imce_user_profile($user, $scheme = NULL) {
* Checks if the user is assigned an imce profile.
* A more detailed assignment check is performed before imce loads.
*/
-function imce_access($user = FALSE) {
+function imce_access($user = FALSE, $scheme = NULL) {
if ($user === FALSE) {
global $user;
}
-
- if ($user->uid == 1) {
- return TRUE;
- }
-
- $roles_profiles = variable_get('imce_roles_profiles', array());
- foreach ($roles_profiles as $rid => $role) {
- if (isset($user->roles[$rid])) {
- foreach ($role as $key => $pid) {
- if (substr($key, -4) == '_pid' && $pid) {
- return TRUE;
- }
- }
- break;
- }
- }
-
- return FALSE;
+ return imce_user_profile($user, $scheme) ? TRUE : FALSE;
}
/**
@@ -225,7 +190,6 @@ function imce_user_page_access($account, $user = FALSE) {
if ($user === FALSE) {
global $user;
}
-
return ($user->uid == 1 || $account->uid == $user->uid) && ($profile = \
imce_user_profile($account)) && $profile['usertab']; }
@@ -233,5 +197,5 @@ function imce_user_page_access($account, $user = FALSE) {
* Check if the directory name is regular.
*/
function imce_reg_dir($dirname) {
- return $dirname == '.' || (is_string($dirname) && $dirname != '' && \
!preg_match('@(^\s)|(^/)|(^\./)|(\s$)|(/$)|(/\.$)|(\.\.)|(//)|(\\\\)|(/\./)@', \
$dirname)); + return $dirname == '.' || is_int($dirname) || (is_string($dirname) && \
$dirname != '' && !preg_match('@(^\s)|(^/)|(^\./)|(\s$)|(/$)|(/\.$)|(\.\.)|(//)|(\\\\)|(/\./)@', \
$dirname)); }
\ No newline at end of file
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.admin.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.admin.inc index \
4ff3077..d88cd28 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.admin.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.admin.inc
@@ -16,7 +16,8 @@ function imce_admin() {
$rows = array();
foreach ($profiles as $pid => $profile) {
- $rows[] = array($profile['name'],
+ $rows[] = array(
+ check_plain($profile['name']),
l(t('Edit'), 'admin/config/media/imce/profile/edit/' . $pid),
$pid == 1 ? '' : l(t('Delete'), 'admin/config/media/imce/profile/delete/' . \
$pid), );
@@ -116,7 +117,7 @@ function imce_admin_theme($variables) {
$swrappers = file_get_stream_wrappers(STREAM_WRAPPERS_VISIBLE);
foreach ($swrappers as $scheme => $info) {
$header[] = l($info['name'], 'imce/' . $scheme);
- $rows[0][] = $profile1['name'];
+ $rows[0][] = check_plain($profile1['name']);
$keys[] = $scheme . '_pid';
}
@@ -249,7 +250,7 @@ function imce_profile_form($form, &$form_state, $pid = 0) {
);
$form['dimensions'] = array(
'#type' => 'textfield',
- '#title' => t('Maximum image resolution'),
+ '#title' => t('Maximum image dimensions'),
'#default_value' => $profile['dimensions'],
'#description' => t('The maximum allowed image size (e.g. 640x480). Set to 0 for \
no restriction. If an <a href="!image-toolkit-link">image toolkit</a> is installed, \
files exceeding this value will be scaled down to fit.', array('!image-toolkit-link' \
=> url('admin/config/media/image-toolkit'))), '#field_suffix' => '<kbd>' . \
t('WIDTHxHEIGHT') . '</kbd>', @@ -482,7 +483,7 @@ function \
imce_thumbnails_theme($variables) {
*/
function imce_role_form($role, $weight = TRUE, $core = TRUE) {
$form['name'] = array(
- '#markup' => $role['name'],
+ '#markup' => check_plain($role['name']),
);
if ($weight) {
$form['weight'] = $core ? array(
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.page.inc \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.page.inc index \
27b27ad..bcb00b2 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.page.inc
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/inc/imce.page.inc
@@ -11,6 +11,7 @@
function imce($scheme = NULL) {
module_invoke('admin_menu', 'suppress');//suppress admin_menu
$jsop = isset($_GET['jsop']) ? $_GET['jsop'] : NULL;
+ drupal_add_http_header('Content-Type', 'text/html; charset=utf-8');
print imce_page($GLOBALS['user'], $scheme, $jsop);
exit();
}
@@ -258,7 +259,7 @@ function imce_fileop_form_validate($form, &$form_state) {
return form_error($form['filenames'], t('Please select a file.'));
}
- //filenames come seperated by colon
+ //filenames come separated by colon
$filenames = explode(':', $form_state['values']['filenames']);
$cnt = count($filenames);
//check the number of files.
@@ -359,7 +360,7 @@ function imce_resize_submit($form, &$form_state) {
//check dimensions
$width = (int) $form_state['values']['width'];
$height = (int) $form_state['values']['height'];
- list($maxw, $maxh) = explode('x', $imce['dimensions']);
+ list($maxw, $maxh) = $imce['dimensions'] ? explode('x', $imce['dimensions']) : \
array(0, 0); if ($width < 1 || $height < 1 || ($maxw && ($width > $maxw || $height > \
$maxh))) { drupal_set_message(t('Please specify dimensions within the allowed range \
that is from 1x1 to @dimensions.', array('@dimensions' => $imce['dimensions'] ? \
$imce['dimensions'] : t('unlimited'))), 'error'); return;
@@ -424,10 +425,6 @@ function imce_delete_filepath($uri) {
if (!file_delete($file, TRUE)) {
return FALSE;
}
- // Remove imce usage
- if ($is_imce) {
- file_usage_delete($file, 'imce');
- }
}
// Not in db. Probably loaded via ftp.
elseif (!file_unmanaged_delete($uri)) {
@@ -676,13 +673,25 @@ function imce_validate_quotas($file, &$imce, $add = 0) {
}
/**
- * Check if the file is an image and return info.
+ * Checks if the file is an image and returns info.
+ * There are two switchable versions that use image_get_info() and getimagesize()
*/
-function imce_image_info($file) {
- if (is_file($file) && ($dot = strrpos($file, '.')) && \
in_array(strtolower(substr($file, $dot+1)), array('jpg', 'jpeg', 'gif', 'png')) && \
($info = @getimagesize($file)) && in_array($info[2], array(IMAGETYPE_JPEG, \
IMAGETYPE_GIF, IMAGETYPE_PNG)) ) {
- return array('width' => $info[0], 'height' => $info[1], 'type' => $info[2], \
'mime' => $info['mime']); +if (variable_get('imce_image_get_info', 0)) {
+ function imce_image_info($file) {
+ $mimes = array('image/jpeg' => IMAGETYPE_JPEG, 'image/gif' => IMAGETYPE_GIF, \
'image/png' => IMAGETYPE_PNG); + if (is_file($file) && ($dot = strrpos($file, \
'.')) && in_array(strtolower(substr($file, $dot+1)), array('jpg', 'jpeg', 'gif', \
'png')) && ($info = @image_get_info($file)) && isset($mimes[$info['mime_type']]) ) { \
+ return array('width' => $info['width'], 'height' => $info['height'], 'type' => \
$mimes[$info['mime_type']], 'mime' => $info['mime_type']); + }
+ return FALSE;
+ }
+}
+else {
+ function imce_image_info($file) {
+ if (is_file($file) && ($dot = strrpos($file, '.')) && \
in_array(strtolower(substr($file, $dot+1)), array('jpg', 'jpeg', 'gif', 'png')) && \
($info = @getimagesize($file)) && in_array($info[2], array(IMAGETYPE_JPEG, \
IMAGETYPE_GIF, IMAGETYPE_PNG)) ) { + return array('width' => $info[0], 'height' \
=> $info[1], 'type' => $info[2], 'mime' => $info['mime']); + }
+ return FALSE;
}
- return FALSE;
}
/**
@@ -838,6 +847,7 @@ function imce_working_directory(&$imce) {
//or the whole list.
foreach ($imce['directories'] as $dirname => $info) {
+ $dirname = (string) $dirname;
if (imce_check_directory($dirname, $imce)) {
if ($sess) {
$_SESSION['imce_directory'] = rawurlencode($dirname);
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce.js index 2a2f9b4..2e97b4a \
100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce.js
@@ -1,4 +1,3 @@
-
(function($) {
//Global container.
window.imce = {tree: {}, findex: [], fids: {}, selected: {}, selcount: 0, ops: {}, \
cache: {}, urlId: {}, @@ -8,6 +7,7 @@ hooks: {load: [], list: [], navigate: [], \
cache: []}, //initiate imce.
initiate: function() {
imce.conf = Drupal.settings.imce || {};
+ imce.ie = (navigator.userAgent.match(/msie (\d+)/i) || ['', 0])[1] * 1;
if (imce.conf.error != false) return;
imce.FLW = imce.el('file-list-wrapper'), imce.SBW = imce.el('sub-browse-wrapper');
imce.NW = imce.el('navigation-wrapper'), imce.BW = imce.el('browse-wrapper');
@@ -79,7 +79,7 @@ dirCollapsible: function (branch) {
if (branch.ul) {
$(branch.ul).toggle();
$(branch.li).toggleClass('expanded');
- $.browser.msie && $('#navigation-header').css('top', imce.NW.scrollTop);
+ imce.ie && $('#navigation-header').css('top', imce.NW.scrollTop);
}
else if (branch.clkbl){
$(branch.a).click();
@@ -424,7 +424,7 @@ navCache: function (dir, newdir) {
//validate upload form
uploadValidate: function (data, form, options) {
- var path = data[0].value;
+ var path = $('#edit-imce').val();
if (!path) return false;
if (imce.conf.extensions != '*') {
var ext = path.substr(path.lastIndexOf('.') + 1);
@@ -432,7 +432,6 @@ uploadValidate: function (data, form, options) {
return imce.setMessage(Drupal.t('Only files with the following extensions are \
allowed: %files-allowed.', {'%files-allowed': imce.conf.extensions}), 'error'); }
}
- var sep = path.indexOf('/') == -1 ? '\\' : '/';
options.url = imce.ajaxURL('upload');//make url contain current dir.
imce.fopLoading('upload', true);
return true;
@@ -487,12 +486,12 @@ commonSubmit: function(fop) {
//settings for default file operations
fopSettings: function (fop) {
- return {url: imce.ajaxURL(fop), type: 'POST', dataType: 'json', success: \
imce.processResponse, complete: function (response) {imce.fopLoading(fop, false);}, \
data: imce.vars.opform +'&filenames='+ imce.serialNames() +'&jsop='+ fop + \
(imce.ops[fop].div ? '&'+ $('input, select, textarea', imce.ops[fop].div).serialize() \
: '')}; + return {url: imce.ajaxURL(fop), type: 'POST', dataType: 'json', success: \
imce.processResponse, complete: function (response) {imce.fopLoading(fop, false);}, \
data: imce.vars.opform +'&filenames='+ escape(imce.serialNames()) +'&jsop='+ fop + \
(imce.ops[fop].div ? '&'+ $('input, select, textarea', imce.ops[fop].div).serialize() \
: '')}; },
//toggle loading state
fopLoading: function(fop, state) {
- var el = imce.el('edit-'+ fop), func = state ? 'addClass' : 'removeClass'
+ var el = imce.el('edit-'+ fop), func = state ? 'addClass' : 'removeClass';
if (el) {
$(el)[func]('loading').attr('disabled', state);
}
@@ -789,7 +788,7 @@ updateUI: function() {
imce.opAdd({name: 'help', title: $('#help-box-title').remove().text(), content: \
$('#help-box').show()}); });
//add ie classes
- $.browser.msie && $('html').addClass('ie') && parseFloat($.browser.version) < 8 && \
$('html').addClass('ie-7'); + imce.ie && $('html').addClass('ie') && imce.ie < 8 && \
$('html').addClass('ie-7'); // enable box view for file list
imce.vars.boxW && imce.boxView();
//scrolling file list
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce_extras.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce_extras.js index \
349de2d..f5cff02 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce_extras.js
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/js/imce_extras.js
@@ -117,15 +117,10 @@ imce.firstSort = function() {
//sort file list according to column index.
imce.columnSort = function(cid, dsc) {
if (imce.findex.length < 2) return;
- if (cid == imce.vars.cid && dsc != imce.vars.dsc) {
- imce.findex.reverse();
- }
- else {
- var func = 'sort'+ (cid == 0 ? 'Str' : 'Num') + (dsc ? 'Dsc' : 'Asc');
- var prop = cid == 2 || cid == 3 ? 'innerHTML' : 'id';
- //sort rows
- imce.findex.sort(cid ? function(r1, r2) {return imce[func](r1.cells[cid][prop], \
r2.cells[cid][prop])} : function(r1, r2) {return imce[func](r1.id, \
r2.id)});
- }
+ var func = 'sort'+ (cid == 0 ? 'Str' : 'Num') + (dsc ? 'Dsc' : 'Asc');
+ var prop = cid == 2 || cid == 3 ? 'innerHTML' : 'id';
+ //sort rows
+ imce.findex.sort(cid ? function(r1, r2) {return imce[func](r1.cells[cid][prop], \
r2.cells[cid][prop])} : function(r1, r2) {return imce[func](r1.id, r2.id)}); \
//insert sorted rows for (var row, i=0; row = imce.findex[i]; i++) {
imce.tbody.appendChild(row);
@@ -197,7 +192,7 @@ imce.recallDimensions = function() {
//set row heights with respect to window height
imce.recallHeights = function(bwFixedHeight) {
//window & body dimensions
- var winHeight = $.browser.opera ? window.innerHeight : $(window).height();
+ var winHeight = window.opera ? window.innerHeight : $(window).height();
var bodyHeight = $(document.body).outerHeight(true);
var diff = winHeight - bodyHeight;
var bwHeight = $(imce.BW).height(), pwHeight = $(imce.PW).height();
@@ -264,12 +259,12 @@ imce.imagestyleURL = function (url, stylename) {
// replace table view with box view for file list
imce.boxView = function () {
var w = imce.vars.boxW, h = imce.vars.boxH;
- if (!w || !h || $.browser.msie && parseFloat($.browser.version) < 8) return;
+ if (!w || !h || imce.ie && imce.ie < 8) return;
var $body = $(document.body);
var toggle = function() {
$body.toggleClass('box-view');
// refresh dom. required by all except FF.
- !$.browser.mozilla && $('#file-list').appendTo(imce.FW).appendTo(imce.FLW);
+ $('#file-list').appendTo(imce.FW).appendTo(imce.FLW);
};
$body.append('<style type="text/css">.box-view #file-list td.name {width: ' + w + \
'px;height: ' + h + 'px;} .box-view #file-list td.name span {width: ' + w + \
'px;word-wrap: normal;text-overflow: ellipsis;}</style>'); \
imce.hooks.load.push(function() {
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/imce/tpl/imce-page.tpl.php \
b/kolab.org/www/drupal-7.18/sites/all/modules/imce/tpl/imce-page.tpl.php index \
197858a..cfe2185 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/imce/tpl/imce-page.tpl.php
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/imce/tpl/imce-page.tpl.php
@@ -4,6 +4,7 @@
<head>
<title><?php print t('File Browser'); ?></title>
+ <meta name="robots" content="noindex,nofollow" />
<?php if (isset($_GET['app'])): drupal_add_js(drupal_get_path('module', 'imce') \
.'/js/imce_set_app.js'); endif;?> <?php print drupal_get_html_head(); ?>
<?php print drupal_get_css(); ?>
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/CHANGELOG.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/CHANGELOG.txt deleted \
file mode 100644 index 5bdf490..0000000
--- a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/CHANGELOG.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Note: This file is out of date.
-
-jQuery Update 7.x-1.0, 2010-02-11
----------------------------------
-#1046720 by Rob Loach: Updated to jQuery 1.5 and jQuery UI 1.8.9
-#701496 by Rob Loach: Moved to hook_library_alter()
-#771062 by quiptime: Fixed module administration path
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/LICENSE.txt \
b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/LICENSE.txt index \
2c095c8..d159169 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/LICENSE.txt
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/LICENSE.txt
@@ -1,274 +1,339 @@
-GNU GENERAL PUBLIC LICENSE
-
- Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
-Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
-verbatim copies of this license document, but changing it is not allowed.
-
- Preamble
-
-The licenses for most software are designed to take away your freedom to
-share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software--to
-make sure the software is free for all its users. This General Public License
-applies to most of the Free Software Foundation's software and to any other
-program whose authors commit to using it. (Some other Free Software
-Foundation software is covered by the GNU Library General Public License
-instead.) You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, not price. Our
-General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service if
-you wish), that you receive source code or can get it if you want it, that you
-can change the software or use pieces of it in new free programs; and that
-you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights. These restrictions
-translate to certain responsibilities for you if you distribute copies of the
-software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for
-a fee, you must give the recipients all the rights that you have. You must make
-sure that they, too, receive or can get the source code. And you must show
-them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy, distribute
-and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If the
-software is modified by someone else and passed on, we want its recipients
-to know that what they have is not the original, so that any problems
-introduced by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We
-wish to avoid the danger that redistributors of a free program will individually
-obtain patent licenses, in effect making the program proprietary. To prevent
-this, we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification
-follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
- MODIFICATION
-
-0. This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the terms
-of this General Public License. The "Program", below, refers to any such
-program or work, and a "work based on the Program" means either the
-Program or any derivative work under copyright law: that is to say, a work
-containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language. (Hereinafter, translation
-is included without limitation in the term "modification".) Each licensee is
-addressed as "you".
-
-Activities other than copying, distribution and modification are not covered
-by this License; they are outside its scope. The act of running the Program is
-not restricted, and the output from the Program is covered only if its contents
-constitute a work based on the Program (independent of having been made
-by running the Program). Whether that is true depends on what the Program
-does.
-
-1. You may copy and distribute verbatim copies of the Program's source
-code as you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this License
-and to the absence of any warranty; and give any other recipients of the
-Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it,
-thus forming a work based on the Program, and copy and distribute such
-modifications or work under the terms of Section 1 above, provided that you
-also meet all of these conditions:
-
-a) You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-b) You must cause any work that you distribute or publish, that in whole or in
-part contains or is derived from the Program or any part thereof, to be
-licensed as a whole at no charge to all third parties under the terms of this
-License.
-
-c) If the modified program normally reads commands interactively when run,
-you must cause it, when started running for such interactive use in the most
-ordinary way, to print or display an announcement including an appropriate
-copyright notice and a notice that there is no warranty (or else, saying that
-you provide a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this License.
-(Exception: if the Program itself is interactive but does not normally print such
-an announcement, your work based on the Program is not required to print
-an announcement.)
-
-These requirements apply to the modified work as a whole. If identifiable
-sections of that work are not derived from the Program, and can be
-reasonably considered independent and separate works in themselves, then
-this License, and its terms, do not apply to those sections when you distribute
-them as separate works. But when you distribute the same sections as part
-of a whole which is a work based on the Program, the distribution of the
-whole must be on the terms of this License, whose permissions for other
-licensees extend to the entire whole, and thus to each and every part
-regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your rights to
-work written entirely by you; rather, the intent is to exercise the right to
-control the distribution of derivative or collective works based on the
-Program.
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of a
-storage or distribution medium does not bring the other work under the scope
-of this License.
-
-3. You may copy and distribute the Program (or a work based on it, under
-Section 2) in object code or executable form under the terms of Sections 1
-and 2 above provided that you also do one of the following:
-
-a) Accompany it with the complete corresponding machine-readable source
-code, which must be distributed under the terms of Sections 1 and 2 above
-on a medium customarily used for software interchange; or,
-
-b) Accompany it with a written offer, valid for at least three years, to give
-any third party, for a charge no more than your cost of physically performing
-source distribution, a complete machine-readable copy of the corresponding
-source code, to be distributed under the terms of Sections 1 and 2 above on
-a medium customarily used for software interchange; or,
-
-c) Accompany it with the information you received as to the offer to distribute
-corresponding source code. (This alternative is allowed only for
-noncommercial distribution and only if you received the program in object
-code or executable form with such an offer, in accord with Subsection b
-above.)
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source code
-means all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation and
-installation of the executable. However, as a special exception, the source
-code distributed need not include anything that is normally distributed (in
-either source or binary form) with the major components (compiler, kernel,
-and so on) of the operating system on which the executable runs, unless that
-component itself accompanies the executable.
-
-If distribution of executable or object code is made by offering access to
-copy from a designated place, then offering equivalent access to copy the
-source code from the same place counts as distribution of the source code,
-even though third parties are not compelled to copy the source along with the
-object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as
-expressly provided under this License. Any attempt otherwise to copy,
-modify, sublicense or distribute the Program is void, and will automatically
-terminate your rights under this License. However, parties who have received
-copies, or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it.
-However, nothing else grants you permission to modify or distribute the
-Program or its derivative works. These actions are prohibited by law if you
-do not accept this License. Therefore, by modifying or distributing the
-Program (or any work based on the Program), you indicate your acceptance
-of this License to do so, and all its terms and conditions for copying,
-distributing or modifying the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the original
-licensor to copy, distribute or modify the Program subject to these terms and
-conditions. You may not impose any further restrictions on the recipients'
-exercise of the rights granted herein. You are not responsible for enforcing
-compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues), conditions
-are imposed on you (whether by court order, agreement or otherwise) that
-contradict the conditions of this License, they do not excuse you from the
-conditions of this License. If you cannot distribute so as to satisfy
-simultaneously your obligations under this License and any other pertinent
-obligations, then as a consequence you may not distribute the Program at all.
-For example, if a patent license would not permit royalty-free redistribution
-of the Program by all those who receive copies directly or indirectly through
-you, then the only way you could satisfy both it and this License would be to
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply and
-the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or
-other property right claims or to contest validity of any such claims; this
-section has the sole purpose of protecting the integrity of the free software
-distribution system, which is implemented by public license practices. Many
-people have made generous contributions to the wide range of software
-distributed through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing to
-distribute software through any other system and a licensee cannot impose
-that choice.
-
-This section is intended to make thoroughly clear what is believed to be a
-consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain
-countries either by patents or by copyrighted interfaces, the original copyright
-holder who places the Program under this License may add an explicit
-geographical distribution limitation excluding those countries, so that
-distribution is permitted only in or among countries not thus excluded. In such
-case, this License incorporates the limitation as if written in the body of this
-License.
-
-9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will be
-similar in spirit to the present version, but may differ in detail to address new
-problems or concerns.
-
-Each version is given a distinguishing version number. If the Program specifies
-a version number of this License which applies to it and "any later version",
-you have the option of following the terms and conditions either of that
-version or of any later version published by the Free Software Foundation. If
-the Program does not specify a version number of this License, you may
-choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs
-whose distribution conditions are different, write to the author to ask for
-permission. For software which is copyrighted by the Free Software
-Foundation, write to the Free Software Foundation; we sometimes make
-exceptions for this. Our decision will be guided by the two goals of
-preserving the free status of all derivatives of our free software and of
-promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
-THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
-PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
-STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
-WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
-AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
-ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
-LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
-SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OR INABILITY TO USE THE
-PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
-OR DATA BEING RENDERED INACCURATE OR LOSSES
-SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
-PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN
-IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.info \
b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.info index \
2028a9b..c5e8b7b 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.info
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.info
@@ -1,15 +1,15 @@
name = jQuery Update
-description = Updates jQuery to jQuery 1.5.2 and jQuery UI 1.8.11.
+description = Update jQuery and jQuery UI to a more recent version.
package = User interface
core = 7.x
files[] = jquery_update.module
files[] = jquery_update.install
-configure = admin/config/development/performance
+configure = admin/config/development/jquery_update
-; Information added by drupal.org packaging script on 2011-04-04
-version = "7.x-2.2"
+; Information added by drupal.org packaging script on 2013-02-09
+version = "7.x-2.3"
core = "7.x"
project = "jquery_update"
-datestamp = "1301920269"
+datestamp = "1360375905"
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.install \
b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.install \
index 8eee7bf..a4e9168 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.install
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.install
@@ -30,15 +30,18 @@ function jquery_update_requirements($phase) {
*/
function jquery_update_uninstall() {
variable_del('jquery_update_compression_type');
+ variable_del('jquery_update_jquery_version');
}
/**
- * The packed version of jQuery is no longer distributed. If that is the chosen
- * version update to minified.
+ * Update from Drupal 6.
*/
function jquery_update_update_7000() {
if (variable_get('jquery_update_compression_type', 'min') == 'pack') {
variable_set('jquery_update_compression_type', 'min');
}
variable_del('jquery_update_replace');
+
+ // Restore the default version of jQuery.
+ variable_del('jquery_update_jquery_version');
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.module \
b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.module \
index 89d706c..520e076 100644
--- a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.module
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/jquery_update.module
@@ -2,10 +2,23 @@
/**
* @file
- * Updates Drupal to use the latest versions of jQuery and jQuery UI.
+ * Updates Drupal to use the latest version of jQuery.
*/
/**
+ * Implements hook_help().
+ */
+function jquery_update_help($path, $arg) {
+ switch ($path) {
+ // Help for another path in the block module
+ case 'admin/config/development/jquery_update':
+ return '<p>' . t('Configure how <a href="@jquery">jQuery</a> behaves on the \
site. Select which jQuery version, the compression level and whether or not to use a \
CDN.', array( + '@jquery' => 'http://jquery.com',
+ )) . '</p>';
+ }
+}
+
+/**
* Implements hook_library().
*/
function jquery_update_library() {
@@ -48,9 +61,9 @@ function jquery_update_library() {
}
/**
- * Implements hook_library_alter().
+ * Implementation of hook_library_alter().
*/
-function jquery_update_library_alter(&$libraries, $module) {
+function jquery_update_library_alter(&$javascript, $module) {
// We are updating just the system module. For all other cases we return.
if ($module != 'system') {
@@ -63,28 +76,59 @@ function jquery_update_library_alter(&$libraries, $module) {
$min = variable_get('jquery_update_compression_type', 'min') == 'none' ? '' : \
'.min'; $cdn = variable_get('jquery_update_jquery_cdn', 'none');
- // Replace jQuery.
- jquery_update_jquery_replace($libraries, $cdn, $path, $min);
- $libraries['jquery']['version'] = '1.5.2';
+ // Replace jQuery with the latest version.
+ $version = variable_get('jquery_update_jquery_version', '1.5');
+ jquery_update_jquery_replace($javascript, $cdn, $path, $min, $version);
// Replace jQuery UI with CDN or local files. If from a CDN include all of jQuery \
UI.
- jquery_update_jqueryui_replace($libraries, $cdn, $path, $min);
+ jquery_update_jqueryui_replace($javascript, $cdn, $path, $min);
// Replace the jQuery Cookie plugin.
- $libraries['jquery.cookie']['js']['misc/jquery.cookie.js']['data'] = $path . \
'/replace/ui/external/jquery.cookie.js'; + \
$javascript['cookie']['js']['misc/jquery.cookie.js']['data'] = $path . \
'/replace/ui/external/jquery.cookie.js'; // Noting the version based on git commit \
as no version number is available.
- $libraries['jquery.cookie']['version'] = '67fb34f6a866c40d0570';
+ $javascript['cookie']['version'] = '67fb34f6a866c40d0570';
// Replace jQuery Form plugin.
- $libraries['jquery.form']['js']['misc/jquery.form.js']['data'] = $path . \
'/replace/misc/jquery.form.js';
- $libraries['jquery.form']['version'] = '2.67';
+ $javascript['jquery.form']['js']['misc/jquery.form.js']['data'] = $path . \
'/replace/misc/jquery.form' . $min . '.js'; + $javascript['jquery.form']['version'] \
= '2.69'; +
+ // Replace files for jQuery 1.7 and up
+ if (version_compare($version, '1.7', '>=')) {
+ $javascript['drupal.states']['js']['misc/states.js']['data'] = $path . \
'/replace/misc/1.7/states.js'; + }
+}
+
+/**
+ * Implements hook_menu().
+ */
+function jquery_update_menu() {
+ $items['admin/config/development/jquery_update'] = array(
+ 'title' => 'jQuery update',
+ 'description' => 'Configure settings related to the jQuery upgrade, the library \
path and compression.', + 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('jquery_update_settings_form'),
+ 'access arguments' => array('administer site configuration'),
+ );
+
+ return $items;
}
/**
- * Implements hook_form_FORM_ID_alter().
+ * Implementation of hook_form_FORM_ID().
*/
-function jquery_update_form_system_performance_settings_alter(&$form, &$form_state, \
$form_id) {
- $form['bandwidth_optimization']['jquery_update_compression_type'] = array(
+function jquery_update_settings_form() {
+ $form['jquery_update_jquery_version'] = array(
+ '#type' => 'select',
+ '#title' => t('jQuery Version'),
+ '#options' => array(
+ '1.5' => '1.5',
+ '1.7' => '1.7',
+ '1.8' => '1.8',
+ ),
+ '#default_value' => variable_get('jquery_update_jquery_version', '1.5'),
+ '#description' => t('Select which jQuery version branch to use.'),
+ );
+ $form['jquery_update_compression_type'] = array(
'#type' => 'radios',
'#title' => t('jQuery compression level'),
'#options' => array(
@@ -93,44 +137,71 @@ function \
jquery_update_form_system_performance_settings_alter(&$form, &$form_sta ),
'#default_value' => variable_get('jquery_update_compression_type', 'min'),
);
- $form['bandwidth_optimization']['jquery_update_jquery_cdn'] = array(
- '#type' => 'radios',
+ $form['jquery_update_jquery_cdn'] = array(
+ '#type' => 'select',
'#title' => t('jQuery and jQuery UI CDN'),
'#options' => array(
'none' => t('None'),
'google' => t('Google'),
'microsoft' => t('Microsoft'),
+ 'jquery' => t('jQuery'),
),
'#default_value' => variable_get('jquery_update_jquery_cdn', 'none'),
'#description' => t('Use jQuery and jQuery UI from a CDN. If the CDN is not \
available the local version of jQuery and jQuery UI will be used.'), );
+
+ return system_settings_form($form);
}
/**
* Update jQuery to the CDN or local path.
*
- * @param array $libraries
+ * @param array $javascript
* The library definition array as seen in hook_library_alter().
* @param string $cdn
* The name of the CDN option to use. Possible options are:
* - none
* - google
* - microsoft
+ * @param string $version
+ * The version of jQuery to use.
*/
-function jquery_update_jquery_replace(&$libraries, $cdn, $path, $min) {
+function jquery_update_jquery_replace(&$javascript, $cdn, $path, $min, $version) {
+ // Make sure to use the latest version in given branch.
+ $trueversion = NULL;
+ switch ($version) {
+ case '1.5':
+ $trueversion = '1.5.2';
+ break;
+ case '1.7':
+ $trueversion = '1.7.1';
+ break;
+ case '1.8':
+ $trueversion = '1.8.2';
+ break;
+ }
+ $javascript['jquery']['version'] = $trueversion;
+
+ // Check for CDN support.
switch($cdn) {
case 'google':
- $libraries['jquery']['js']['misc/jquery.js']['data'] = \
'https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery' . $min . \
'.js';
- $libraries['jquery']['js']['misc/jquery.js']['type'] = 'external';
- jquery_update_jquery_backup($libraries, $path, $min);
+ $javascript['jquery']['js']['misc/jquery.js']['data'] = \
'https://ajax.googleapis.com/ajax/libs/jquery/'. $trueversion . '/jquery' . $min . \
'.js'; + $javascript['jquery']['js']['misc/jquery.js']['type'] = 'external';
+ jquery_update_jquery_backup($javascript, $path, $min, $version);
break;
case 'microsoft':
- $libraries['jquery']['js']['misc/jquery.js']['data'] = \
'http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2' . $min . '.js';
- $libraries['jquery']['js']['misc/jquery.js']['type'] = 'external';
- jquery_update_jquery_backup($libraries, $path, $min);
+ $javascript['jquery']['js']['misc/jquery.js']['data'] = \
'http://ajax.aspnetcdn.com/ajax/jQuery/jquery-'. $trueversion . $min . '.js'; + \
$javascript['jquery']['js']['misc/jquery.js']['type'] = 'external'; + \
jquery_update_jquery_backup($javascript, $path, $min, $version); + break;
+ case 'jquery':
+ $javascript['jquery']['js']['misc/jquery.js']['data'] = \
'http://code.jquery.com/jquery-'. $trueversion . $min . '.js'; + \
$javascript['jquery']['js']['misc/jquery.js']['type'] = 'external'; + \
jquery_update_jquery_backup($javascript, $path, $min, $version); break;
case 'none':
- $libraries['jquery']['js']['misc/jquery.js']['data'] = $path . \
'/replace/jquery/jquery' . $min . '.js'; + default:
+ $javascript['jquery']['js']['misc/jquery.js']['data'] = $path . \
'/replace/jquery/'. $version . '/jquery' . $min . '.js'; break;
}
}
@@ -138,16 +209,18 @@ function jquery_update_jquery_replace(&$libraries, $cdn, $path, \
$min) { /**
* Add the local fallback in case jQuery from the CDN is unavailable.
*
- * @param array $libraries
+ * @param array $javascript
* The $libraries array as seen in hook_library_alter()
* @param string $path
* The path to the module where replacements can be found.
* @param string $min
* The '.min' to include in the file name if we are requesting a minified version.
+ * @param string $version
+ * The verison of jQuery to use.
*/
-function jquery_update_jquery_backup(&$libraries, $path, $min) {
- $libraries['jquery']['js'][] = array(
- 'data' => 'window.jQuery || document.write("<script src=\'' . base_path() . \
$path . '/replace/jquery/jquery' . $min . '.js\'>\x3C/script>")', +function \
jquery_update_jquery_backup(&$javascript, $path, $min, $version) { + \
$javascript['jquery']['js'][] = array( + 'data' => 'window.jQuery || \
document.write("<script src=\'' . base_path() . $path . '/replace/jquery/'. $version \
. '/jquery' . $min . '.js\'>\x3C/script>")', 'type' => 'inline',
'group' => JS_LIBRARY,
'weight' => -19.999999999,
@@ -157,7 +230,7 @@ function jquery_update_jquery_backup(&$libraries, $path, $min) {
/**
* Update jQuery UI to the CDN or local path.
*
- * @param array $libraries
+ * @param array $javascript
* The library definition array as seen in hook_library_alter().
* @param string $cdn
* The name of the CDN option to use. Possible options are:
@@ -165,7 +238,7 @@ function jquery_update_jquery_backup(&$libraries, $path, $min) {
* - google
* - microsoft
*/
-function jquery_update_jqueryui_replace(&$libraries, $cdn, $path, $min) {
+function jquery_update_jqueryui_replace(&$javascript, $cdn, $path, $min) {
// Replace all CSS files.
$names = drupal_map_assoc(array(
'ui.accordion', 'ui.autocomplete', 'ui.button', 'ui.datepicker',
@@ -175,10 +248,10 @@ function jquery_update_jqueryui_replace(&$libraries, $cdn, \
$path, $min) { $names['ui'] = 'ui.core';
$csspath = $path . '/replace/ui/themes/base/' . (($min == '.min') ? 'minified/' : \
''); foreach ($names as $name => $file) {
- $libraries[$name]['css']["misc/ui/jquery.$file.css"]['data'] = $csspath . \
'jquery.' . $file . $min . '.css'; + \
$javascript[$name]['css']["misc/ui/jquery.$file.css"]['data'] = $csspath . 'jquery.' \
. $file . $min . '.css'; }
// Make sure ui.theme is replaced as well.
- $libraries['ui']['css']['misc/ui/jquery.ui.theme.css']['data'] = $csspath . \
'jquery.ui.theme' . $min . '.css'; + \
$javascript['ui']['css']['misc/ui/jquery.ui.theme.css']['data'] = $csspath . \
'jquery.ui.theme' . $min . '.css';
// Replace jQuery UI's JavaScript, beginning by defining the mapping.
$names = drupal_map_assoc(array(
@@ -196,16 +269,16 @@ function jquery_update_jqueryui_replace(&$libraries, $cdn, \
$path, $min) { switch($cdn) {
case 'google':
$cdn = 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui' . \
$min . '.js';
- jquery_update_jqueryui_cdn($cdn, $libraries, $path, $min, $names);
- jquery_update_jqueryui_backup($libraries, $path, $min);
+ jquery_update_jqueryui_cdn($cdn, $javascript, $path, $min, $names);
+ jquery_update_jqueryui_backup($javascript, $path, $min);
break;
case 'microsoft':
$cdn = 'http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.11/jquery-ui' . $min . \
'.js';
- jquery_update_jqueryui_cdn($cdn, $libraries, $path, $min, $names);
- jquery_update_jqueryui_backup($libraries, $path, $min);
+ jquery_update_jqueryui_cdn($cdn, $javascript, $path, $min, $names);
+ jquery_update_jqueryui_backup($javascript, $path, $min);
break;
case 'none':
- jquery_update_jqueryui_local($libraries, $path, $min, $names);
+ jquery_update_jqueryui_local($javascript, $path, $min, $names);
break;
}
}
@@ -213,16 +286,16 @@ function jquery_update_jqueryui_replace(&$libraries, $cdn, \
$path, $min) { /**
* Add the local fallback in case jQuery UI from the CDN is unavailable.
*
- * @param array $libraries
+ * @param array $javascript
* The $libraries array as seen in hook_library_alter()
* @param string $path
* The path to the module where replacements can be found.
* @param string $min
* The '.min' to include in the file name if we are requesting a minified version.
*/
-function jquery_update_jqueryui_backup(&$libraries, $path, $min) {
+function jquery_update_jqueryui_backup(&$javascript, $path, $min) {
$js_path = ($min == '.min') ? '/replace/ui/ui/minified/jquery-ui.min.js' : \
'/replace/ui/ui/jquery-ui.js';
- $libraries['ui']['js'][] = array(
+ $javascript['ui']['js'][] = array(
'data' => 'window.jQuery.ui || document.write("<script src=\'' . base_path() . \
$path . $js_path . '\'>\x3C/script>")', 'type' => 'inline',
'group' => JS_LIBRARY,
@@ -233,7 +306,7 @@ function jquery_update_jqueryui_backup(&$libraries, $path, $min) \
{ /**
* Handle when jQuery UI is updated to the cdn version.
*
- * @param array $libraries
+ * @param array $javascript
* The $libraries array as seen in hook_library_alter()
* @param string $path
* The path to the module where replacements can be found.
@@ -242,19 +315,19 @@ function jquery_update_jqueryui_backup(&$libraries, $path, \
$min) {
* @param array $names
* An array mapping jquery ui parts to their file names.
*/
-function jquery_update_jqueryui_cdn($cdn, &$libraries, $path, $min, $names) {
+function jquery_update_jqueryui_cdn($cdn, &$javascript, $path, $min, $names) {
// Construct the jQuery UI path and replace the JavaScript.
$jspath = $path . '/replace/ui/ui/' . ($min == '.min' ? 'minified/' : '');
foreach ($names as $name => $file) {
$corefile = 'misc/ui/jquery.' . $file . '.min.js';
// Remove the core files.
- unset($libraries[$name]['js'][$corefile]);
- $libraries[$name]['version'] = '1.8.11';
+ unset($javascript[$name]['js'][$corefile]);
+ $javascript[$name]['version'] = '1.8.11';
}
// UI is used by all of UI. Add the js cdn here.
- $libraries['ui']['js'][$cdn] = array(
+ $javascript['ui']['js'][$cdn] = array(
'data' => $cdn,
'type' => 'external',
'group' => JS_LIBRARY,
@@ -265,7 +338,7 @@ function jquery_update_jqueryui_cdn($cdn, &$libraries, $path, \
$min, $names) { /**
* Handle when jQuery UI is updated to the local version.
*
- * @param array $libraries
+ * @param array $javascript
* The $libraries array as seen in hook_library_alter()
* @param string $path
* The path to the module where replacements can be found.
@@ -274,13 +347,13 @@ function jquery_update_jqueryui_cdn($cdn, &$libraries, $path, \
$min, $names) {
* @param array $names
* An array mapping jquery ui parts to their file names.
*/
-function jquery_update_jqueryui_local(&$libraries, $path, $min, $names) {
+function jquery_update_jqueryui_local(&$javascript, $path, $min, $names) {
// Construct the jQuery UI path and replace the JavaScript.
$jspath = $path . '/replace/ui/ui/' . ($min == '.min' ? 'minified/' : '');
foreach ($names as $name => $file) {
$corefile = 'misc/ui/jquery.' . $file . '.min.js';
- $libraries[$name]['js'][$corefile]['data'] = $jspath . 'jquery.' . $file . $min \
. '.js';
- $libraries[$name]['version'] = '1.8.11';
+ $javascript[$name]['js'][$corefile]['data'] = $jspath . 'jquery.' . $file . $min \
. '.js'; + $javascript[$name]['version'] = '1.8.11';
}
}
diff --git a/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.5/jquery.js \
b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.5/jquery.js
new file mode 100644
index 0000000..78fcfa4
--- /dev/null
+++ b/kolab.org/www/drupal-7.18/sites/all/modules/jquery_update/replace/jquery/1.5/jquery.js
@@ -0,0 +1,8316 @@
+/*!
+ * jQuery JavaScript Library v1.5.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Wed Feb 23 13:55:29 2011 -0500
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // Promise methods
+ promiseMethods = "then done fail isResolved isRejected promise".split( " " ),
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? jQuery.clone(ret.fragment) : \
ret.fragment).childNodes; + }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.5.1",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = this.constructor();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // Add the callback
+ readyList.done( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = \
jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // A third-party is pushing the ready event forwards
+ if ( wait === true ) {
+ jQuery.readyWait--;
+ }
+
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket \
#5443). + if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj \
) ) { + return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test(data.replace(rvalidescape, "@")
+ .replace(rvalidtokens, "]")
+ .replace(rvalidbraces, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ // Cross-browser xml parsing
+ // (xml & tmp used internally)
+ parseXML: function( data , xml , tmp ) {
+
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+
+ tmp = xml.documentElement;
+
+ if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.head || document.getElementsByTagName( "head" )[0] || \
document.documentElement, + script = document.createElement( "script" );
+
+ if ( jQuery.support.scriptEval() ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) \
{} + }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type(array);
+
+ if ( array.length == null || type === "string" || type === "function" || type === \
"regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it can be \
removed + if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can be optionally by executed if its a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : \
value, pass ); + }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Create a simple deferred (one callbacks list)
+ _Deferred: function() {
+ var // callbacks list
+ callbacks = [],
+ // stored [ context , args ]
+ fired,
+ // to avoid firing when already doing so
+ firing,
+ // flag to know if the deferred has been cancelled
+ cancelled,
+ // the deferred itself
+ deferred = {
+
+ // done( f1, f2, ...)
+ done: function() {
+ if ( !cancelled ) {
+ var args = arguments,
+ i,
+ length,
+ elem,
+ type,
+ _fired;
+ if ( fired ) {
+ _fired = fired;
+ fired = 0;
+ }
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ deferred.done.apply( deferred, elem );
+ } else if ( type === "function" ) {
+ callbacks.push( elem );
+ }
+ }
+ if ( _fired ) {
+ deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
+ }
+ }
+ return this;
+ },
+
+ // resolve with given context and args
+ resolveWith: function( context, args ) {
+ if ( !cancelled && !fired && !firing ) {
+ firing = 1;
+ try {
+ while( callbacks[ 0 ] ) {
+ callbacks.shift().apply( context, args );
+ }
+ }
+ // We have to add a catch block for
+ // IE prior to 8 or else the finally
+ // block will never get executed
+ catch (e) {
+ throw e;
+ }
+ finally {
+ fired = [ context, args ];
+ firing = 0;
+ }
+ }
+ return this;
+ },
+
+ // resolve with this as context and given arguments
+ resolve: function() {
+ deferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : \
this, arguments ); + return this;
+ },
+
+ // Has this deferred been resolved?
+ isResolved: function() {
+ return !!( firing || fired );
+ },
+
+ // Cancel
+ cancel: function() {
+ cancelled = 1;
+ callbacks = [];
+ return this;
+ }
+ };
+
+ return deferred;
+ },
+
+ // Full fledged deferred (two callbacks list)
+ Deferred: function( func ) {
+ var deferred = jQuery._Deferred(),
+ failDeferred = jQuery._Deferred(),
+ promise;
+ // Add errorDeferred methods, then and promise
+ jQuery.extend( deferred, {
+ then: function( doneCallbacks, failCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks );
+ return this;
+ },
+ fail: failDeferred.done,
+ rejectWith: failDeferred.resolveWith,
+ reject: failDeferred.resolve,
+ isRejected: failDeferred.isResolved,
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ if ( promise ) {
+ return promise;
+ }
+ promise = obj = {};
+ }
+ var i = promiseMethods.length;
+ while( i-- ) {
+ obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
+ }
+ return obj;
+ }
+ } );
+ // Make sure only one callback list will be used
+ deferred.done( failDeferred.cancel ).fail( deferred.cancel );
+ // Unexpose cancel
+ delete deferred.cancel;
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( object ) {
+ var lastIndex = arguments.length,
+ deferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?
+ object :
+ jQuery.Deferred(),
+ promise = deferred.promise();
+
+ if ( lastIndex > 1 ) {
+ var array = slice.call( arguments, 0 ),
+ count = lastIndex,
+ iCallback = function( index ) {
+ return function( value ) {
+ array[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ deferred.resolveWith( promise, array );
+ }
+ };
+ };
+ while( ( lastIndex-- ) ) {
+ object = array[ lastIndex ];
+ if ( object && jQuery.isFunction( object.promise ) ) {
+ object.promise().then( iCallback(lastIndex), deferred.reject );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( promise, array );
+ }
+ } else if ( deferred !== object ) {
+ deferred.resolve( object );
+ }
+ return promise;
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ sub: function() {
+ function jQuerySubclass( selector, context ) {
+ return new jQuerySubclass.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySubclass, this );
+ jQuerySubclass.superclass = this;
+ jQuerySubclass.fn = jQuerySubclass.prototype = this();
+ jQuerySubclass.fn.constructor = jQuerySubclass;
+ jQuerySubclass.subclass = this.subclass;
+ jQuerySubclass.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) \
) { + context = jQuerySubclass(context);
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );
+ };
+ jQuerySubclass.fn.init.prototype = jQuerySubclass.fn;
+ var rootjQuerySubclass = jQuerySubclass(document);
+ return jQuerySubclass;
+ },
+
+ browser: {}
+});
+
+// Create readyList deferred
+readyList = jQuery._Deferred();
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), \
function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket \
#5443). + if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+// Expose jQuery to the global object
+return jQuery;
+
+})();
+
+
+(function() {
+
+ jQuery.support = {};
+
+ var div = document.createElement("div");
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a' \
style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; +
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0],
+ select = document.createElement("select"),
+ opt = select.appendChild( document.createElement("option") ),
+ input = div.getElementsByTagName("input")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: input.value === "on",
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Will be defined later
+ deleteExpando: true,
+ optDisabled: false,
+ checkClone: false,
+ noCloneEvent: true,
+ noCloneChecked: true,
+ boxModel: null,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableHiddenOffsets: true
+ };
+
+ input.checked = true;
+ jQuery.support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as diabled)
+ select.disabled = true;
+ jQuery.support.optDisabled = !opt.disabled;
+
+ var _scriptEval = null;
+ jQuery.support.scriptEval = function() {
+ if ( _scriptEval === null ) {
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ id = "script" + jQuery.now();
+
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ _scriptEval = true;
+ delete window[ id ];
+ } else {
+ _scriptEval = false;
+ }
+
+ root.removeChild( script );
+ // release memory in IE
+ root = script = id = null;
+ }
+
+ return _scriptEval;
+ };
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = \
fragment.cloneNode(true).cloneNode(true).lastChild.checked; +
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div"),
+ body = document.getElementsByTagName("body")[0];
+
+ // Frameset documents with no body should not run this code
+ if ( !body ) {
+ return;
+ }
+
+ div.style.width = div.style.paddingLeft = "1px";
+ body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
+ }
+
+ div.innerHTML = "<table><tr><td \
style='padding:0;border:0;display:none'></td><td>t</td></tr></table>"; + var tds = \
div.getElementsByTagName("td"); +
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;
+
+ tds[0].style.display = "";
+ tds[1].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && \
tds[0].offsetHeight === 0; + div.innerHTML = "";
+
+ body.removeChild( div ).style.display = "none";
+ div = tds = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( !el.attachEvent ) {
+ return true;
+ }
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ div = all = a = null;
+})();
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando \
]; +
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === \
undefined ) { + return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ } else {
+ id = jQuery.expando;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
+ } else {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // Internal jQuery data is stored in a separate object inside the object's data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data
+ if ( pvt ) {
+ if ( !thisCache[ internalKey ] ) {
+ thisCache[ internalKey ] = {};
+ }
+
+ thisCache = thisCache[ internalKey ];
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ name ] = data;
+ }
+
+ // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
+ // not attempt to inspect the internal events object using jQuery.data, as this
+ // internal data object is undocumented and subject to change.
+ if ( name === "events" && !thisCache[name] ) {
+ return thisCache[ internalKey ] && thisCache[ internalKey ].events;
+ }
+
+ return getByName ? thisCache[ name ] : thisCache;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+
+ // See jQuery.data for more information
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+ var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
+
+ if ( thisCache ) {
+ delete thisCache[ name ];
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !isEmptyDataObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( pvt ) {
+ delete cache[ id ][ internalKey ];
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
+
+ var internalCache = cache[ id ][ internalKey ];
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ if ( jQuery.support.deleteExpando || cache != window ) {
+ delete cache[ id ];
+ } else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the entire user cache at once because it's faster than
+ // iterating through each key, but we need to continue to persist internal
+ // data if it existed
+ if ( internalCache ) {
+ cache[ id ] = {};
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+
+ cache[ id ][ internalKey ] = internalCache;
+
+ // Otherwise, we need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ } else if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ } else {
+ elem[ jQuery.expando ] = null;
+ }
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ data = jQuery.data( this[0] );
+
+ if ( this[0].nodeType === 1 ) {
+ var attr = this[0].attributes, name;
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = name.substr( 5 );
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ data = elem.getAttribute( "data-" + key );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
+// property to be considered empty objects; this property always exists in
+// order to make sure JSON.stringify does not expose internal metadata
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
+ }
+
+ type = (type || "fx") + "queue";
+ var q = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery._data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue", true );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function( i ) {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspaces = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /^(?:href|src|style)$/,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rradiocheck = /^(?:radio|checkbox)$/i;
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ",
+ setClass = elem.className;
+
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspaces );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, \
"__className__" ) || ""; + }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > \
-1 ) { + return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ if ( !arguments.length ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; \
i++ ) { + var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : \
option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || \
!jQuery.nodeName( option.parentNode, "optgroup" )) ) { +
+ // Get the specific value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ }
+
+ // Handle the case where in Webkit "" is returned instead of "on" if a value \
isn't specified + if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) \
{ + return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
+
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction(value);
+
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray(val) ) {
+ val = jQuery.map(val, function (value) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
+ }
+
+ } else {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) \
{ + return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
+
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ if ( elem.nodeType === 1 ) {
+ // These attributes require special treatment
+ var special = rspecialurl.test( name );
+
+ // Safari mis-reports the default selected property of an option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+
+ // If applicable, access the attribute via the DOM 0 way
+ // 'in' checks fail in Blackberry 4.7 #6931
+ if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
+ if ( set ) {
+ // We can't allow the type property to be changed (since it causes problems in \
IE) + if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
+
+ if ( value === null ) {
+ if ( elem.nodeType === 1 ) {
+ elem.removeAttribute( name );
+ }
+
+ } else {
+ elem[ name ] = value;
+ }
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+ return elem.getAttributeNode( name ).nodeValue;
+ }
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been \
explicitly set + // \
http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name === "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && \
elem.href ? + 0 :
+ undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
+
+ if ( set ) {
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+ }
+
+ // Ensure that missing attributes return undefined
+ // Blackberry 4.7 returns "" from getAttribute #6938
+ if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name \
)) ) { + return undefined;
+ }
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
+ // Some attributes require a special call on IE
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+ // Handle everything which isn't a DOM element node
+ if ( set ) {
+ elem[ name ] = value;
+ }
+ return elem[ name ];
+ }
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspace = / /g,
+ rescape = /[^\w\s.|`]/g,
+ fcleanup = function( nm ) {
+ return nm.replace(rescape, "\\$&");
+ };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)
+ // Minor release fix for bug #8018
+ try {
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
+ }
+ }
+ catch ( e ) {}
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ } else if ( !handler ) {
+ // Fixes bug #7229. Fix recommended by jdalton
+ return;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery._data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ var events = elemData.events,
+ eventHandle = elemData.handle;
+
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) \
=== false ) { + // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, \
handleObj, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+ events = elemData && elemData.events;
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + \
"(\\.|$)"); + }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) \
{ + jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem, undefined, true );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( jQuery.event.global[ type ] ) {
+ // XXX This code smells terrible. event.js should not be directly
+ // inspecting the data cache
+ jQuery.each( jQuery.cache, function() {
+ // internalKey variable is just used to make it easier to find
+ // and potentially change this stuff later; currently it just
+ // points to jQuery.expando
+ var internalKey = jQuery.expando,
+ internalCache = this[ internalKey ];
+ if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
+ jQuery.event.trigger( event, data, internalCache.handle.elem );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery._data( elem, "handle" );
+
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+
+ // Trigger an inline bound script
+ try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) \
{ + event.result = false;
+ event.preventDefault();
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see \
#3533 + } catch (inlineError) {}
+
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
+
+ } else if ( !event.isDefaultPrevented() ) {
+ var old,
+ target = event.target,
+ targetType = type.replace( rnamespaces, "" ),
+ isClick = jQuery.nodeName( target, "a" ) && targetType === "click",
+ special = jQuery.event.special[ targetType ] || {};
+
+ if ( (!special._default || special._default.call( elem, event ) === false) &&
+ !isClick && !(target && target.nodeName && \
jQuery.noData[target.nodeName.toLowerCase()]) ) { +
+ try {
+ if ( target[ targetType ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + targetType ];
+
+ if ( old ) {
+ target[ "on" + targetType ] = null;
+ }
+
+ jQuery.event.triggered = true;
+ target[ targetType ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, \
see #3533 + } catch (triggerError) {}
+
+ if ( old ) {
+ target[ "on" + targetType ] = old;
+ }
+
+ jQuery.event.triggered = false;
+ }
+ }
+ },
+
+ handle: function( event ) {
+ var all, handlers, namespaces, namespace_re, events,
+ namespace_sort = [],
+ args = jQuery.makeArray( arguments );
+
+ event = args[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+ if ( !all ) {
+ namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+ namespace_sort = namespaces.slice(0).sort();
+ namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + \
"(\\.|$)"); + }
+
+ event.namespace = event.namespace || namespace_sort.join(".");
+
+ events = jQuery._data(this, "events");
+
+ handlers = (events || {})[ event.type ];
+
+ if ( events && handlers ) {
+ // Clone the handlers to prevent manipulation
+ handlers = handlers.slice(0);
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX \
clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode \
layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode \
relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta \
which".split(" "), +
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ // Fixes #1925 where srcElement might not be defined either
+ event.target = event.srcElement || document;
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : \
event.fromElement; + }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement,
+ body = document.body;
+
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft \
|| 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = \
event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && \
doc.clientTop || body && body.clientTop || 0); + }
+
+ // Add which for key events
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 \
? 2 : 0 ) )); + }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: \
handleObj.handler.guid}) ); + },
+
+ remove: function( handleObj ) {
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector \
), handleObj ); + }
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language \
Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+
+ // Chrome does something similar, the parentNode property
+ // can be accessed but is null.
+ if ( parent !== document && !parent.parentNode ) {
+ return;
+ }
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, \
orig ); + },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement \
); + }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( this.nodeName && this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem \
).closest("form").length ) { + trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem \
).closest("form").length && e.keyCode === 13 ) { + trigger( "submit", this, \
arguments ); + }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery._data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery._data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ e.liveFired = undefined;
+ jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ beforedeactivate: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === \
"select" ) { + testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event \
delegation + keydown: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery._data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return rformElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ // Don't pass args or remember liveFired; they apply to the donor event.
+ var event = jQuery.extend( {}, args[ 0 ] );
+ event.type = type;
+ event.originalEvent = {};
+ event.liveFired = undefined;
+ jQuery.event.handle.call( elem, event );
+ if ( event.isDefaultPrevented() ) {
+ args[ 0 ].preventDefault();
+ }
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ this.addEventListener( orig, handler, true );
+ },
+ teardown: function() {
+ this.removeEventListener( orig, handler, true );
+ }
+ };
+
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.handle.call( this, e );
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : fn;
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ \
) { + var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( type === "focus" || type === "blur" ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: \
fn, preType: preType } ); + }
+
+ } else {
+ // unbind live handler
+ context.unbind( "live." + liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ };
+});
+
+function liveHandler( event ) {
+ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, \
namespace, ret, + elems = [],
+ selectors = [],
+ events = jQuery._data( this, "events" );
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled \
elements in IE (#6911) + if ( event.liveFired === this || !events || !events.live || \
event.target.disabled || event.button && event.type === "click" ) { + return;
+ }
+
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + \
event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); + }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( \
handleObj.namespace )) && !close.elem.disabled ) { + elem = close.elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) \
{ + event.type = handleObj.preType;
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, \
"`").replace(rspace, "&"); +}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick \
" + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error").split(" "), function( i, name \
) { +
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ \
>+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] \
=== "+") && context.parentNode ? context.parentNode : context, contextXML ); +
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && \
Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var match,
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace( rBackslash, "" );
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var found, item,
+ filter = Expr.filter[ type ],
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, \
isXMLFilter ); +
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !rNonWord.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic