From aea462dc39162f03e3205f78e2834cc16013f59e Mon Sep 17 00:00:00 2001 From: Eric Rasmussen <eric@unl.edu> Date: Mon, 19 Dec 2011 16:28:16 +0000 Subject: [PATCH] [gh-269] Merging test into staging -c1326 -c1355 git-svn-id: file:///tmp/wdn_thm_drupal/branches/drupal-7.x/staging@1356 20a16fea-79d4-4915-8869-1ea9d5ebf173 --- sites/all/modules/views/LICENSE.txt | 601 +- sites/all/modules/views/README.txt | 10 +- .../modules/views/css/ie/views-admin.ie7.css | 8 +- .../all/modules/views/css/views-admin-rtl.css | 4 - .../views/css/views-admin.advanced_help.css | 2 +- .../views/css/views-admin.bartik-rtl.css | 9 +- .../modules/views/css/views-admin.bartik.css | 36 +- sites/all/modules/views/css/views-admin.css | 41 +- .../views/css/views-admin.ctools-rtl.css | 82 + .../modules/views/css/views-admin.ctools.css | 63 +- .../views/css/views-admin.garland-rtl.css | 10 +- .../modules/views/css/views-admin.garland.css | 32 +- .../views/css/views-admin.seven-rtl.css | 14 + .../modules/views/css/views-admin.seven.css | 40 +- .../views/css/views-admin.theme-rtl.css | 4 - .../modules/views/css/views-admin.theme.css | 97 +- .../all/modules/views/css/views-list-rtl.css | 27 - sites/all/modules/views/css/views-list.css | 79 - sites/all/modules/views/css/views-rtl.css | 1 - sites/all/modules/views/css/views-tabs.css | 5 - sites/all/modules/views/docs/docs.php | 713 --- sites/all/modules/views/docs/views.api.php | 91 +- .../modules/views/documentation-standards.txt | 1 - sites/all/modules/views/drush/views.drush.inc | 485 +- .../views/drush/views_revert.drush.inc | 154 - .../views/handlers/views_handler_area.inc | 10 +- .../handlers/views_handler_area_text.inc | 85 +- .../handlers/views_handler_area_view.inc | 31 +- .../views/handlers/views_handler_argument.inc | 40 +- .../handlers/views_handler_argument_date.inc | 25 + .../views_handler_argument_many_to_one.inc | 13 +- .../views_handler_argument_numeric.inc | 2 +- .../views_handler_argument_string.inc | 31 +- .../views/handlers/views_handler_field.inc | 244 +- .../handlers/views_handler_field_boolean.inc | 9 +- .../handlers/views_handler_field_custom.inc | 7 +- .../handlers/views_handler_field_date.inc | 6 +- .../handlers/views_handler_field_entity.inc | 82 + .../views_handler_field_group_by_numeric.inc | 43 - .../handlers/views_handler_field_markup.inc | 14 +- .../handlers/views_handler_field_math.inc | 9 +- .../handlers/views_handler_field_numeric.inc | 15 +- .../views_handler_field_prerender_list.inc | 25 +- .../views_handler_field_serialized.inc | 2 +- .../views/handlers/views_handler_filter.inc | 34 +- .../views_handler_filter_boolean_operator.inc | 4 + .../handlers/views_handler_filter_date.inc | 2 +- .../views_handler_filter_equality.inc | 2 +- .../views_handler_filter_group_by_numeric.inc | 10 +- .../views_handler_filter_in_operator.inc | 68 +- .../views_handler_filter_many_to_one.inc | 8 +- .../handlers/views_handler_filter_numeric.inc | 16 + .../handlers/views_handler_filter_string.inc | 22 +- .../handlers/views_handler_relationship.inc | 33 +- ...ews_handler_relationship_groupwise_max.inc | 382 ++ .../views/handlers/views_handler_sort.inc | 4 +- sites/all/modules/views/help/about.html | 4 +- .../modules/views/help/advanced-settings.html | 2 +- .../views/help/alter-exposed-filter.html | 31 + .../modules/views/help/api-default-views.html | 6 +- sites/all/modules/views/help/api-example.html | 2 +- sites/all/modules/views/help/api-forms.html | 80 + .../modules/views/help/api-handler-area.html | 45 + .../all/modules/views/help/api-handlers.html | 2 +- sites/all/modules/views/help/api-tables.html | 16 +- .../all/modules/views/help/api-upgrading.html | 38 +- sites/all/modules/views/help/argument.html | 121 +- .../modules/views/help/basic-settings.html | 10 +- .../views/help/display-attachment.html | 2 +- .../all/modules/views/help/display-block.html | 1 + .../modules/views/help/display-default.html | 1 - .../all/modules/views/help/display-feed.html | 2 +- .../all/modules/views/help/display-page.html | 1 - sites/all/modules/views/help/display.html | 6 +- sites/all/modules/views/help/drush.html | 13 + .../views/help/example-bulk-export.html | 44 - .../help/example-filter-by-current-user.html | 46 + .../modules/views/help/example-user-feed.html | 2 +- sites/all/modules/views/help/field.html | 20 +- sites/all/modules/views/help/filter.html | 4 +- .../modules/views/help/get-total-rows.html | 16 + .../modules/views/help/getting-started.html | 1 - .../help/images/views3-semanticviews.png | Bin 0 -> 5611 bytes sites/all/modules/views/help/misc-notes.html | 12 + sites/all/modules/views/help/new.html | 20 +- sites/all/modules/views/help/other-help.html | 19 +- sites/all/modules/views/help/overrides.html | 1 - sites/all/modules/views/help/path.html | 2 +- .../help/relationship-representative.html | 14 + .../all/modules/views/help/relationship.html | 2 + sites/all/modules/views/help/reports.html | 3 + ...elect-multple-nids-contextual-filters.html | 28 + .../modules/views/help/semantic-views.html | 18 + sites/all/modules/views/help/sort.html | 4 + .../modules/views/help/style-comment-rss.html | 2 +- sites/all/modules/views/help/style-grid.html | 2 +- .../modules/views/help/style-grouping.html | 7 + sites/all/modules/views/help/style-jump.html | 1 - sites/all/modules/views/help/style-list.html | 2 +- .../modules/views/help/style-node-rss.html | 2 +- sites/all/modules/views/help/style-node.html | 2 +- sites/all/modules/views/help/style-row.html | 9 +- .../modules/views/help/style-settings.html | 2 +- .../views/help/style-summary-unformatted.html | 2 +- .../all/modules/views/help/style-summary.html | 2 +- sites/all/modules/views/help/style-table.html | 2 +- sites/all/modules/views/help/style.html | 5 +- .../views/help/taxonomy-page-override.html | 41 + sites/all/modules/views/help/theme-css.html | 1 - sites/all/modules/views/help/top-pager.html | 18 + sites/all/modules/views/help/ui-crashes.html | 25 + sites/all/modules/views/help/updating.html | 4 +- sites/all/modules/views/help/upgrading.html | 4 +- sites/all/modules/views/help/view-add.html | 2 +- .../all/modules/views/help/view-settings.html | 6 +- sites/all/modules/views/help/views.help.ini | 98 +- sites/all/modules/views/images/sprites.png | Bin 58287 -> 1777 bytes sites/all/modules/views/includes/admin.inc | 1312 +++-- sites/all/modules/views/includes/ajax.inc | 72 +- sites/all/modules/views/includes/analyze.inc | 15 +- sites/all/modules/views/includes/base.inc | 40 +- sites/all/modules/views/includes/cache.inc | 22 + sites/all/modules/views/includes/convert.inc | 551 -- sites/all/modules/views/includes/handlers.inc | 341 +- sites/all/modules/views/includes/plugins.inc | 46 +- sites/all/modules/views/includes/tabs.inc | 196 - sites/all/modules/views/includes/view.inc | 294 +- sites/all/modules/views/js/ajax.js | 43 +- sites/all/modules/views/js/ajax_view.js | 174 +- sites/all/modules/views/js/base.js | 6 +- sites/all/modules/views/js/tabs.js | 438 -- sites/all/modules/views/js/views-admin.js | 67 +- .../views/modules/aggregator.views.inc | 2 +- ...ws_handler_field_aggregator_title_link.inc | 2 +- .../views_plugin_row_aggregator_rss.inc | 7 +- .../views/modules/book.views_convert.inc | 79 - .../modules/views/modules/comment.views.inc | 117 +- .../views/modules/comment.views_convert.inc | 130 - .../views/modules/comment.views_default.inc | 366 +- ...iews_handler_argument_comment_user_uid.inc | 11 +- .../comment/views_handler_field_comment.inc | 21 +- .../views_handler_field_comment_depth.inc | 1 - .../views_handler_field_comment_link.inc | 19 +- ...ews_handler_field_comment_link_approve.inc | 33 + ...iews_handler_field_comment_link_delete.inc | 2 +- .../views_handler_field_comment_link_edit.inc | 3 +- .../views_handler_field_comment_node_link.inc | 1 - .../views_handler_field_comment_username.inc | 1 + .../views_handler_filter_comment_user_uid.inc | 10 +- .../views_handler_sort_ncs_last_updated.inc | 1 - .../comment/views_plugin_row_comment_rss.inc | 84 +- .../comment/views_plugin_row_comment_view.inc | 60 +- .../modules/views/modules/contact.views.inc | 1 - .../views_handler_field_contact_link.inc | 1 - .../all/modules/views/modules/field.views.inc | 163 +- .../field/views_handler_field_field.inc | 326 +- ...ws_handler_relationship_entity_reverse.inc | 78 + .../all/modules/views/modules/file.views.inc | 81 + .../modules/views/modules/filter.views.inc | 4 +- .../all/modules/views/modules/image.views.inc | 80 + .../views_handler_argument_locale_group.inc | 1 - ...views_handler_argument_locale_language.inc | 3 +- .../views_handler_filter_locale_group.inc | 1 - .../views_handler_filter_locale_language.inc | 2 +- .../all/modules/views/modules/node.views.inc | 112 +- .../views/modules/node.views_convert.inc | 181 - .../views/modules/node.views_default.inc | 611 +-- .../views/modules/node.views_template.inc | 132 + .../views_handler_argument_dates_various.inc | 10 + .../views_handler_argument_node_language.inc | 3 +- .../node/views_handler_argument_node_nid.inc | 1 - ...ews_handler_argument_node_uid_revision.inc | 4 +- .../node/views_handler_argument_node_vid.inc | 1 - .../modules/node/views_handler_field_node.inc | 5 +- .../node/views_handler_field_node_link.inc | 32 +- .../views_handler_field_node_link_delete.inc | 17 +- .../views_handler_field_node_link_edit.inc | 17 +- ...andler_field_node_revision_link_delete.inc | 2 + .../node/views_handler_filter_node_type.inc | 1 + ...views_handler_filter_node_uid_revision.inc | 2 +- .../views_plugin_argument_default_node.inc | 1 - .../views_plugin_argument_validate_node.inc | 9 +- .../node/views_plugin_row_node_rss.inc | 68 +- .../node/views_plugin_row_node_view.inc | 8 + .../views/modules/profile.views_convert.inc | 39 - .../views_handler_field_profile_date.inc | 2 +- .../modules/views/modules/search.views.inc | 5 + .../views/modules/search.views_convert.inc | 22 - .../views/modules/search.views_default.inc | 229 +- .../search/views_handler_argument_search.inc | 27 +- .../search/views_handler_filter_search.inc | 46 +- .../views_handler_sort_search_score.inc | 17 +- .../views/modules/statistics.views.inc | 21 + .../modules/statistics.views_convert.inc | 51 - .../modules/statistics.views_default.inc | 492 +- .../views_handler_field_accesslog_path.inc | 2 +- .../modules/views/modules/system.views.inc | 39 +- .../views_handler_argument_file_fid.inc | 23 +- .../system/views_handler_field_file.inc | 2 +- .../views_handler_field_file_filemime.inc | 4 +- .../views_handler_filter_file_status.inc | 1 - .../modules/views/modules/taxonomy.views.inc | 233 +- .../views/modules/taxonomy.views_convert.inc | 94 - .../views/modules/taxonomy.views_default.inc | 250 +- .../views_handler_argument_taxonomy.inc | 11 +- ...s_handler_argument_term_node_tid_depth.inc | 5 +- ..._argument_term_node_tid_depth_modifier.inc | 1 - ...ndler_argument_vocabulary_machine_name.inc | 19 + .../views_handler_argument_vocabulary_vid.inc | 4 +- .../taxonomy/views_handler_field_taxonomy.inc | 12 + .../views_handler_field_term_link_edit.inc | 1 - .../views_handler_field_term_node_tid.inc | 18 +- .../views_handler_filter_term_node_tid.inc | 40 +- ...ews_handler_filter_term_node_tid_depth.inc | 2 +- ...s_plugin_argument_default_taxonomy_tid.inc | 32 +- ...plugin_argument_validate_taxonomy_term.inc | 40 +- .../views_handler_argument_node_tnid.inc | 3 +- .../views_handler_field_node_language.inc | 2 +- ...iews_handler_field_node_link_translate.inc | 11 +- .../views_handler_filter_node_language.inc | 2 +- .../views_handler_filter_node_tnid.inc | 4 +- .../views_handler_filter_node_tnid_child.inc | 3 +- .../modules/views/modules/upload.views.inc | 141 - .../views/modules/upload.views_convert.inc | 107 - ...views_handler_field_upload_description.inc | 74 - .../upload/views_handler_field_upload_fid.inc | 87 - .../views_handler_filter_upload_fid.inc | 17 - .../all/modules/views/modules/user.views.inc | 106 +- .../views/modules/user.views_convert.inc | 60 - .../user/views_handler_argument_user_uid.inc | 1 - ...views_handler_argument_users_roles_rid.inc | 1 - .../views_handler_field_user_link_cancel.inc | 1 - .../views_handler_field_user_link_delete.inc | 24 - .../user/views_handler_field_user_mail.inc | 2 +- .../user/views_handler_field_user_name.inc | 21 +- .../views_handler_field_user_permissions.inc | 60 + .../user/views_handler_field_user_picture.inc | 85 +- .../user/views_handler_field_user_roles.inc | 2 +- .../user/views_handler_filter_user_name.inc | 2 +- .../views_handler_filter_user_permissions.inc | 27 + ...s_plugin_argument_default_current_user.inc | 1 - .../views_plugin_argument_default_user.inc | 7 +- .../views_plugin_argument_validate_user.inc | 18 +- .../all/modules/views/modules/views.views.inc | 2 + .../plugins/export_ui/views_ui.class.php | 68 +- .../views/plugins/export_ui/views_ui.inc | 1 - .../plugins/views_plugin_access_perm.inc | 13 +- .../plugins/views_plugin_access_role.inc | 1 + .../plugins/views_plugin_argument_default.inc | 3 +- .../views_plugin_argument_default_fixed.inc | 3 +- .../views_plugin_argument_default_php.inc | 3 +- .../views_plugin_argument_default_raw.inc | 36 + .../views_plugin_argument_validate.inc | 11 +- ...views_plugin_argument_validate_numeric.inc | 1 - .../views_plugin_argument_validate_php.inc | 4 +- .../views/plugins/views_plugin_cache.inc | 49 +- .../views/plugins/views_plugin_cache_time.inc | 1 + .../views/plugins/views_plugin_display.inc | 515 +- .../plugins/views_plugin_display_block.inc | 31 +- .../plugins/views_plugin_display_default.inc | 2 +- .../plugins/views_plugin_display_extender.inc | 54 + .../plugins/views_plugin_display_feed.inc | 1 + .../plugins/views_plugin_display_page.inc | 52 +- .../plugins/views_plugin_exposed_form.inc | 85 +- ...ews_plugin_exposed_form_input_required.inc | 9 +- .../plugins/views_plugin_localization.inc | 16 +- .../views_plugin_localization_core.inc | 8 +- .../views/plugins/views_plugin_pager.inc | 3 + .../views/plugins/views_plugin_pager_full.inc | 37 +- .../views/plugins/views_plugin_pager_mini.inc | 2 +- .../views/plugins/views_plugin_pager_none.inc | 9 + .../views/plugins/views_plugin_pager_some.inc | 6 +- .../views/plugins/views_plugin_query.inc | 12 +- .../plugins/views_plugin_query_default.inc | 242 +- .../views/plugins/views_plugin_row.inc | 2 +- .../views/plugins/views_plugin_row_fields.inc | 17 +- .../views/plugins/views_plugin_style.inc | 129 +- .../views/plugins/views_plugin_style_grid.inc | 5 +- .../plugins/views_plugin_style_jump_menu.inc | 27 +- .../views/plugins/views_plugin_style_list.inc | 1 - .../views/plugins/views_plugin_style_rss.inc | 11 +- .../plugins/views_plugin_style_summary.inc | 7 +- .../views_plugin_style_summary_jump_menu.inc | 25 +- ...views_plugin_style_summary_unformatted.inc | 1 - .../plugins/views_plugin_style_table.inc | 24 +- .../views/plugins/views_wizard/users.inc | 1 - .../views_ui_base_views_wizard.class.php | 64 +- ...ews_handler_argument_comment_user_uid.test | 101 + ...views_handler_filter_comment_user_uid.test | 35 + .../handlers/views_handler_argument_null.test | 2 +- .../handlers/views_handler_field_boolean.test | 12 +- .../handlers/views_handler_field_counter.test | 2 +- .../handlers/views_handler_field_custom.test | 2 +- .../handlers/views_handler_field_math.test | 2 +- .../handlers/views_handler_field_xss.test | 2 +- .../handlers/views_handler_filter_date.test | 11 +- .../views_handler_filter_equality.test | 2 +- .../views_handler_filter_numeric.test | 2 +- .../handlers/views_handler_filter_string.test | 7 +- .../tests/handlers/views_handler_sort.test | 6 +- .../handlers/views_handler_sort_date.test | 8 +- .../handlers/views_handler_sort_random.test | 6 +- .../tests/styles/views_plugin_style.test | 106 + .../styles/views_plugin_style_jump_menu.test | 135 + .../views_test_plugin_access_test_dynamic.inc | 2 +- .../views_test_plugin_access_test_static.inc | 2 +- .../modules/views/tests/user/views_user.test | 137 + .../user/views_user_argument_default.test | 3 +- .../user/views_user_argument_validate.test | 2 +- .../all/modules/views/tests/views_access.test | 8 +- .../modules/views/tests/views_analyze.test | 15 +- .../views/tests/views_argument_default.test | 22 +- .../views/tests/views_argument_validator.test | 8 +- .../all/modules/views/tests/views_basic.test | 6 +- .../all/modules/views/tests/views_cache.test | 11 +- .../views/tests/views_exposed_form.test | 9 +- .../modules/views/tests/views_glossary.test | 4 +- .../modules/views/tests/views_groupby.test | 94 +- .../modules/views/tests/views_handlers.test | 56 +- .../all/modules/views/tests/views_module.test | 8 +- .../all/modules/views/tests/views_pager.test | 32 +- .../tests/views_plugin_localization_test.inc | 2 +- .../all/modules/views/tests/views_query.test | 4 +- sites/all/modules/views/tests/views_test.info | 6 +- .../all/modules/views/tests/views_test.module | 2 +- .../views/tests/views_test.views_default.inc | 15 +- .../views/tests/views_translatable.test | 51 +- sites/all/modules/views/tests/views_ui.test | 36 +- .../modules/views/tests/views_upgrade.test | 21 +- sites/all/modules/views/tests/views_view.test | 42 +- sites/all/modules/views/theme/theme.inc | 224 +- .../views/theme/views-exposed-form.tpl.php | 14 +- .../modules/views/theme/views-more.tpl.php | 4 +- .../views/theme/views-ui-edit-tab.tpl.php | 105 - .../views/theme/views-ui-list-views.tpl.php | 42 - .../views/theme/views-view-field.tpl.php | 2 +- .../theme/views-view-row-comment.tpl.php | 2 +- .../views/theme/views-view-row-node.tpl.php | 20 - .../views/theme/views-view-rss.tpl.php | 2 +- .../views/theme/views-view-table.tpl.php | 12 +- .../modules/views/theme/views-view.tpl.php | 7 +- sites/all/modules/views/translations/de.po | 4439 --------------- sites/all/modules/views/translations/eo.po | 4100 -------------- sites/all/modules/views/translations/fr.po | 3951 ------------- sites/all/modules/views/translations/it.po | 4233 -------------- sites/all/modules/views/translations/pl.po | 3994 -------------- sites/all/modules/views/translations/uk.po | 4863 ----------------- .../all/modules/views/translations/views.pot | 4268 --------------- sites/all/modules/views/views.drush.inc | 14 - sites/all/modules/views/views.info | 27 +- sites/all/modules/views/views.install | 177 +- sites/all/modules/views/views.module | 560 +- sites/all/modules/views/views.tokens.inc | 94 + sites/all/modules/views/views2.doxy | 1252 ----- .../views/views_export/views_export.css | 12 - .../views/views_export/views_export.info | 13 - .../views/views_export/views_export.module | 279 +- sites/all/modules/views/views_ui.info | 6 +- sites/all/modules/views/views_ui.module | 158 +- 359 files changed, 10335 insertions(+), 39115 deletions(-) create mode 100644 sites/all/modules/views/css/views-admin.ctools-rtl.css delete mode 100644 sites/all/modules/views/css/views-list-rtl.css delete mode 100644 sites/all/modules/views/css/views-list.css delete mode 100644 sites/all/modules/views/css/views-tabs.css delete mode 100644 sites/all/modules/views/docs/docs.php delete mode 100644 sites/all/modules/views/drush/views_revert.drush.inc create mode 100644 sites/all/modules/views/handlers/views_handler_field_entity.inc delete mode 100644 sites/all/modules/views/handlers/views_handler_field_group_by_numeric.inc create mode 100644 sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc create mode 100644 sites/all/modules/views/help/alter-exposed-filter.html create mode 100644 sites/all/modules/views/help/api-forms.html create mode 100644 sites/all/modules/views/help/api-handler-area.html create mode 100644 sites/all/modules/views/help/drush.html delete mode 100644 sites/all/modules/views/help/example-bulk-export.html create mode 100644 sites/all/modules/views/help/example-filter-by-current-user.html create mode 100644 sites/all/modules/views/help/get-total-rows.html create mode 100644 sites/all/modules/views/help/images/views3-semanticviews.png create mode 100644 sites/all/modules/views/help/misc-notes.html create mode 100644 sites/all/modules/views/help/relationship-representative.html create mode 100644 sites/all/modules/views/help/reports.html create mode 100644 sites/all/modules/views/help/select-multple-nids-contextual-filters.html create mode 100644 sites/all/modules/views/help/semantic-views.html create mode 100644 sites/all/modules/views/help/style-grouping.html create mode 100644 sites/all/modules/views/help/taxonomy-page-override.html create mode 100644 sites/all/modules/views/help/top-pager.html create mode 100644 sites/all/modules/views/help/ui-crashes.html delete mode 100644 sites/all/modules/views/includes/convert.inc delete mode 100644 sites/all/modules/views/includes/tabs.inc delete mode 100644 sites/all/modules/views/js/tabs.js delete mode 100644 sites/all/modules/views/modules/book.views_convert.inc delete mode 100644 sites/all/modules/views/modules/comment.views_convert.inc create mode 100644 sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc create mode 100644 sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc create mode 100644 sites/all/modules/views/modules/file.views.inc create mode 100644 sites/all/modules/views/modules/image.views.inc delete mode 100644 sites/all/modules/views/modules/node.views_convert.inc create mode 100644 sites/all/modules/views/modules/node.views_template.inc delete mode 100644 sites/all/modules/views/modules/profile.views_convert.inc delete mode 100644 sites/all/modules/views/modules/search.views_convert.inc delete mode 100644 sites/all/modules/views/modules/statistics.views_convert.inc delete mode 100644 sites/all/modules/views/modules/taxonomy.views_convert.inc create mode 100644 sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc delete mode 100644 sites/all/modules/views/modules/upload.views.inc delete mode 100644 sites/all/modules/views/modules/upload.views_convert.inc delete mode 100644 sites/all/modules/views/modules/upload/views_handler_field_upload_description.inc delete mode 100644 sites/all/modules/views/modules/upload/views_handler_field_upload_fid.inc delete mode 100644 sites/all/modules/views/modules/upload/views_handler_filter_upload_fid.inc delete mode 100644 sites/all/modules/views/modules/user.views_convert.inc delete mode 100644 sites/all/modules/views/modules/user/views_handler_field_user_link_delete.inc create mode 100644 sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc create mode 100644 sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc create mode 100644 sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc create mode 100644 sites/all/modules/views/plugins/views_plugin_display_extender.inc create mode 100644 sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test create mode 100644 sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test create mode 100644 sites/all/modules/views/tests/styles/views_plugin_style.test create mode 100644 sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test create mode 100644 sites/all/modules/views/tests/user/views_user.test delete mode 100644 sites/all/modules/views/theme/views-ui-edit-tab.tpl.php delete mode 100644 sites/all/modules/views/theme/views-ui-list-views.tpl.php delete mode 100644 sites/all/modules/views/theme/views-view-row-node.tpl.php delete mode 100644 sites/all/modules/views/translations/de.po delete mode 100644 sites/all/modules/views/translations/eo.po delete mode 100644 sites/all/modules/views/translations/fr.po delete mode 100644 sites/all/modules/views/translations/it.po delete mode 100644 sites/all/modules/views/translations/pl.po delete mode 100644 sites/all/modules/views/translations/uk.po delete mode 100644 sites/all/modules/views/translations/views.pot delete mode 100644 sites/all/modules/views/views.drush.inc create mode 100644 sites/all/modules/views/views.tokens.inc delete mode 100644 sites/all/modules/views/views2.doxy delete mode 100644 sites/all/modules/views/views_export/views_export.css delete mode 100644 sites/all/modules/views/views_export/views_export.info diff --git a/sites/all/modules/views/LICENSE.txt b/sites/all/modules/views/LICENSE.txt index 2c095c8d3..d159169d1 100644 --- a/sites/all/modules/views/LICENSE.txt +++ b/sites/all/modules/views/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/sites/all/modules/views/README.txt b/sites/all/modules/views/README.txt index af47ce0bd..21278fc22 100644 --- a/sites/all/modules/views/README.txt +++ b/sites/all/modules/views/README.txt @@ -1,5 +1,5 @@ -Welcome to Views 2. Please see the advanced help for more information. +Welcome to Views 3. Please see the advanced help for more information. If you're having trouble installing this module, please ensure that your tar program is not flattening the directory tree, truncating filenames @@ -8,20 +8,14 @@ or losing files. Installing Views: Place the entirety of this directory in sites/all/modules/views +You must also install the CTools module (http://www.drupal.org/project/ctools) to use Views. Navigate to administer >> build >> modules. Enable Views and Views UI. -If upgrading from Drupal 5 and Views 1, your views need to be -converted manually. See administer >> build >> modules >> views >> tools >> convert. - If you're new to Views, try the Simple Views module which can create some often used Views for you, this might save you some time. Recommended modules for use with Views: - CCK Voting API Views Bonus Pack Views Bulk Operations - -Experimental modules: - Views OR \ No newline at end of file diff --git a/sites/all/modules/views/css/ie/views-admin.ie7.css b/sites/all/modules/views/css/ie/views-admin.ie7.css index 346d6a1f4..9a8852a3b 100644 --- a/sites/all/modules/views/css/ie/views-admin.ie7.css +++ b/sites/all/modules/views/css/ie/views-admin.ie7.css @@ -7,7 +7,7 @@ } /** - * The column width for the bucket containers in the query details section + * The column width for the bucket containers in the query details section * is not being calculated to 32% correctly. Give IE7 a slightly smaller * width so that the three columns line up next to each other */ @@ -73,8 +73,8 @@ /** * IE7 is interpreting a top margin of 18px from somewhere. remove it - */ - + */ + .page-admin-structure-views #content .views-display-setting { margin-top: 0; } @@ -88,4 +88,4 @@ .page-admin-structure-views #content .form-type-checkbox + .form-wrapper { margin-left: 27px !important; zoom: 1; -} \ No newline at end of file +} diff --git a/sites/all/modules/views/css/views-admin-rtl.css b/sites/all/modules/views/css/views-admin-rtl.css index cb3edaa5a..6d1e03a00 100644 --- a/sites/all/modules/views/css/views-admin-rtl.css +++ b/sites/all/modules/views/css/views-admin-rtl.css @@ -25,10 +25,6 @@ float: left; } -.views-displays { - float: right; -} - /* @end */ /* @group Attachment details tabs diff --git a/sites/all/modules/views/css/views-admin.advanced_help.css b/sites/all/modules/views/css/views-admin.advanced_help.css index 9e804d4ed..71d9cb168 100644 --- a/sites/all/modules/views/css/views-admin.advanced_help.css +++ b/sites/all/modules/views/css/views-admin.advanced_help.css @@ -4,7 +4,7 @@ */ /** - * Adjust the advanced help icons + * Adjust the advanced help icons */ .views-ui-display-tab-bucket .advanced-help-link { padding: 0; diff --git a/sites/all/modules/views/css/views-admin.bartik-rtl.css b/sites/all/modules/views/css/views-admin.bartik-rtl.css index 0402f26be..abf2a3085 100644 --- a/sites/all/modules/views/css/views-admin.bartik-rtl.css +++ b/sites/all/modules/views/css/views-admin.bartik-rtl.css @@ -2,4 +2,11 @@ * The .bartik.css file is intended to contain styles that override declarations * in the Bartik theme. */ - \ No newline at end of file + + /* @group Lists */ + +.views-display-top .secondary .action-list { + padding-right: 0; +} + +/* @end */ diff --git a/sites/all/modules/views/css/views-admin.bartik.css b/sites/all/modules/views/css/views-admin.bartik.css index 9986830be..1d22dddcf 100644 --- a/sites/all/modules/views/css/views-admin.bartik.css +++ b/sites/all/modules/views/css/views-admin.bartik.css @@ -2,13 +2,21 @@ * The .bartik.css file is intended to contain styles that override declarations * in the Bartik theme. */ - + +/* @group Lists */ + +.views-display-top .secondary .action-list { + padding-left: 0; /* LTR */ +} + +/* @end */ + /* @group Attachment details tabs * * The tabs that switch between sections */ -.views-displays .region-content .secondary, +.views-displays .region-content .secondary, .views-displays .region-content .secondary { padding-bottom: 0; padding-left: 0; @@ -24,7 +32,7 @@ border-radius: 5px; } -.views-displays .secondary > li.open a { +.views-displays .secondary > li.open a { -moz-border-radius: 5px 5px 0 0; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0; @@ -47,7 +55,7 @@ * * The contents of the popup dialog on the views edit form. */ - + .views-filterable-options .even .form-type-checkbox { background-color: #F9F9F9; } @@ -65,7 +73,7 @@ /* @group Buttons */ -.ctools-button { +.ctools-button-processed { background-image: -moz-linear-gradient( -90deg, @@ -96,7 +104,7 @@ padding-top: 1px; } -.ctools-button:hover { +.ctools-button-processed:hover { background-image: -moz-linear-gradient( -90deg, @@ -122,7 +130,8 @@ #f1f1f1 100%); } -.ctools-button li { +.ctools-button-processed li a, +.views-ui-display-tab-actions .ctools-button-processed input { padding-left: 9px; padding-right: 9px; } @@ -131,7 +140,7 @@ padding-bottom: 0; } -.ctools-dropbutton.open:hover { +.ctools-dropbutton-processed.open:hover { background-image: -moz-linear-gradient( -90deg, @@ -157,7 +166,7 @@ #f9f9f9 100%); } -.ctools-dropbutton.open { +.ctools-dropbutton-processed.open { -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.25); -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.25); box-shadow: 1px 1px 2px rgba(0,0,0,0.25); @@ -167,15 +176,16 @@ top: 0.6667em; } -.ctools-dropbutton.open .ctools-twisty { +.ctools-dropbutton-processed.open .ctools-twisty { top: 0.3333em; } -.ctools-dropbutton li { +.ctools-dropbutton-processed li a, +.views-ui-display-tab-actions .ctools-dropbutton-processed input { padding-right: 7px; } -.views-ui-display-tab-actions .ctools-button input.form-submit { +.views-ui-display-tab-actions .ctools-button-processed input.form-submit { margin-right: 0; margin-top: 0; } @@ -211,4 +221,4 @@ /* @end */ -/* @end */ \ No newline at end of file +/* @end */ diff --git a/sites/all/modules/views/css/views-admin.css b/sites/all/modules/views/css/views-admin.css index 064d63576..7ce708820 100644 --- a/sites/all/modules/views/css/views-admin.css +++ b/sites/all/modules/views/css/views-admin.css @@ -90,6 +90,11 @@ width: 70%; } +.views-group-box .form-item { + margin-left: 3px; + margin-right: 3px; +} + /* @end */ /* @group Attachment details @@ -98,13 +103,12 @@ * to add a new section */ -.form-actions { +.form-edit .form-actions { float: right; /* LTR */ } .views-displays { clear: both; - float:left; /* LTR */ } /* @end */ @@ -113,7 +117,6 @@ * * The tabs that switch between sections */ - .views-displays .secondary { border-bottom: 0 none; margin: 0; @@ -143,6 +146,12 @@ opacity: 0.25; } +.views-display-disabled > fieldset > legend, +.views-display-disabled .fieldset-wrapper > .views-ui-display-tab-bucket > *, +.views-display-disabled .views-display-columns { + opacity: 0.5; +} + .views-display-tab .fieldset-wrapper > .views-ui-display-tab-bucket .actions { opacity: 1.0; } @@ -303,31 +312,7 @@ div.form-item-options-value-all { /* @end */ -/* @group Clearfix - * - * @see http://perishablepress.com/press/2009/12/06/new-clearfix-hack - */ - /* Reset the formatting context for all modern browsers */ -.views-display-tab .fieldset-wrapper:after, -ul.secondary:after { - clear: both; - content: " x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x "; - display: block; - font-size: xx-large; - height: 0 !important; - line-height: 0; - overflow: hidden; - visibility: hidden; -} - -/* Reset the formatting context for IE */ -.views-display-tab .fieldset-wrapper, -ul.secondary { - zoom: 1; -} - -/* @end */ /* @group Javascript dependent styling */ @@ -348,6 +333,7 @@ html.js span.js-only { /* @group AJAX throbber */ /* Base Page */ +#views-ui-list-page .ajax-progress-throbber, .views-admin .ajax-progress-throbber { /* Can't do center:50% middle: 50%, so approximate it for a typical window size. */ left: 49%; @@ -355,6 +341,7 @@ html.js span.js-only { top: 48.5%; z-index: 1000; } +#views-ui-list-page .ajax-progress-throbber .message, .views-admin .ajax-progress-throbber .message { display: none; } diff --git a/sites/all/modules/views/css/views-admin.ctools-rtl.css b/sites/all/modules/views/css/views-admin.ctools-rtl.css new file mode 100644 index 000000000..338b2fb72 --- /dev/null +++ b/sites/all/modules/views/css/views-admin.ctools-rtl.css @@ -0,0 +1,82 @@ +/* @group Buttons */ + +.ctools-dropbutton .ctools-content { + border-left: 1px solid #e8e8e8; +} + +.ctools-content ul.actions { + padding-left: auto; + padding-right: 0; +} + +.ctools-dropbutton .ctools-link { + border-right: 1px solid #ffffff; +} + +.ctools-dropbutton li { + padding-left: 9px; + padding-left: auto; +} + +.views-display-top .ctools-button { + left: 12px; + right: auto; +} + +.views-ui-display-tab-bucket .ctools-button { + left: 5px; + right: auto; +} + +/* @end */ + +/* @group Collapsible */ + +.ctools-toggle { + float: right; + margin-left: 2px; + margin-right: 0; +} + +.ctools-toggle.ctools-toggle-collapsed { + border-left: 0; + border-right: 4px solid; + border-left-color: transparent; + border-width: 5px 5px 5px 0; + margin-left: 5px; + margin-right: 2px; +} + +.ctools-export-ui-row label { + float: right; +} + +.views-display-column > .ctools-toggle { + margin-left: 3px; + margin-right: 6px; +} +.views-display-column > .ctools-toggle.ctools-toggle-collapsed { + margin-left: 5px; + margin-right: 9px; +} + +/* @end */ + +/* @group Dependent */ + +.dependent-options { + margin-left: 0; + margin-right: 18px; +} + +/* @end */ + +/* @group Export */ + +/* Override for filter button on the views list screen */ +#ctools-export-ui-list-form .form-submit { + margin-left: 0em; + margin-right: auto; +} + +/* @end */ diff --git a/sites/all/modules/views/css/views-admin.ctools.css b/sites/all/modules/views/css/views-admin.ctools.css index 5aca45fff..52c89522a 100644 --- a/sites/all/modules/views/css/views-admin.ctools.css +++ b/sites/all/modules/views/css/views-admin.ctools.css @@ -1,6 +1,6 @@ /* @group Buttons */ -.ctools-button { +.ctools-button-processed { background-color: #ffffff; border-color: #cccccc; font-size: 11px; @@ -8,29 +8,33 @@ padding-top: 2px; } -.ctools-button, -.ctools-button input { +.ctools-button-processed, +.ctools-button-processed input { text-transform: lowercase; } -.ctools-button:hover { +.ctools-button-processed:hover { border-color: #b8b8b8; } -.ctools-button:active { +.ctools-button-processed:active { border-color: #a0a0a0; } -.ctools-button .ctools-content { +.ctools-button-processed .ctools-content { padding-bottom: 0; padding-top: 0; } -.ctools-dropbutton .ctools-content { +.ctools-dropbutton-processed { + position: absolute; +} + +.ctools-dropbutton-processed .ctools-content { border-right: 1px solid #e8e8e8; } -.ctools-dropbutton .ctools-content ul { +.ctools-dropbutton-processed .ctools-content ul { margin: 0; padding: 0; } @@ -41,32 +45,33 @@ padding-left: 0; } -.ctools-button .ctools-content a { +.ctools-button-processed .ctools-content a { background-image: none; border: medium none; } -.ctools-dropbutton.open:hover { +.ctools-dropbutton-processed.open:hover { border-color: #D0D0D0; } -.ctools-dropbutton.open { +.ctools-dropbutton-processed.open { z-index: 100; } -.ctools-dropbutton .ctools-link { +.ctools-dropbutton-processed .ctools-link { border-left: 1px solid #ffffff; } -.ctools-dropbutton.open .ctools-content { +.ctools-dropbutton-processed.open .ctools-content { padding-bottom: 4px; } -.ctools-dropbutton li { +.ctools-dropbutton-processed li a, +.ctools-dropbutton-processed li input { padding-right: 9px; } -.ctools-dropbutton.open li + li { +.ctools-dropbutton-processed.open li + li { border-top: 1px solid #efefef; margin-top: 4px; padding-bottom: 0; @@ -77,32 +82,38 @@ outline: medium none; } -.views-display-top .ctools-button { +.ctools-no-js .ctools-content ul { + margin-bottom: 0; + margin-top: 0; + padding-left: 0; +} + +.views-display-top .ctools-button-processed { font-size: 12px; position: absolute; right: 12px; top: 7px; } -.views-ui-display-tab-bucket .ctools-button { +.views-ui-display-tab-bucket .ctools-button-processed { position: absolute; -} - -.views-ui-display-tab-bucket .ctools-button { right: 5px; top: 4px; } -.views-ui-display-tab-actions .ctools-button input { +.views-ui-display-tab-actions .ctools-button-processed li a, +.views-ui-display-tab-actions .ctools-button-processed input { background: none; border: medium; font-family: inherit; font-size: 12px; - padding: 0; + padding-bottom: 0; + padding-left: 12px; + padding-top: 0; margin-bottom: 0; } -.views-ui-display-tab-actions .ctools-button input:hover { +.views-ui-display-tab-actions .ctools-button-processed input:hover { background: none; } @@ -184,6 +195,11 @@ border-top: medium none; } +h2.ctools-collapsible-handle { + display: inline; + clear: both; +} + /* @end */ /* @group Dependent */ @@ -219,4 +235,3 @@ } /* @end */ - diff --git a/sites/all/modules/views/css/views-admin.garland-rtl.css b/sites/all/modules/views/css/views-admin.garland-rtl.css index b0fcc7a44..9a8de6dcc 100644 --- a/sites/all/modules/views/css/views-admin.garland-rtl.css +++ b/sites/all/modules/views/css/views-admin.garland-rtl.css @@ -2,4 +2,12 @@ * The .garland.css file is intended to contain styles that override declarations * in the Garland theme. */ - \ No newline at end of file + + /* @group Lists */ + +.views-displays .secondary .action-list { + left: auto; + right: 1px; +} + + /* @end */ diff --git a/sites/all/modules/views/css/views-admin.garland.css b/sites/all/modules/views/css/views-admin.garland.css index fd4edf61e..cd9010a53 100644 --- a/sites/all/modules/views/css/views-admin.garland.css +++ b/sites/all/modules/views/css/views-admin.garland.css @@ -2,13 +2,13 @@ * The .garland.css file is intended to contain styles that override declarations * in the Garland theme. */ - + /* @group Attachment details tabs * * The tabs that switch between sections */ -.views-displays .region-content .secondary, +.views-displays .region-content .secondary, .views-displays .region-content .secondary { padding-bottom: 0; padding-left: 0; @@ -82,7 +82,7 @@ .views-filterable-options .form-type-checkbox { margin: 0; } - + .views-filterable-options .even .form-type-checkbox { background-color: #F9F9F9; } @@ -100,7 +100,7 @@ /* @group Buttons */ -.ctools-button { +.ctools-button-processed { background-image: -moz-linear-gradient( -90deg, @@ -131,7 +131,7 @@ padding-top: 1px; } -.ctools-button:hover { +.ctools-button-processed:hover { background-image: -moz-linear-gradient( -90deg, @@ -157,17 +157,21 @@ #f1f1f1 100%); } -.ctools-button ol li, -.ctools-button ul li { +.ctools-button-processed ol li, +.ctools-button-processed ul li { margin: 0; padding-bottom: 0; } +.views-ui-display-tab-actions .ctools-button-processed input { + margin-right: 0; +} + .ctools-content ul.actions { padding-bottom: 0; } -.ctools-dropbutton.open:hover { +.ctools-dropbutton-processed.open:hover { background-image: -moz-linear-gradient( -90deg, @@ -193,7 +197,7 @@ #f9f9f9 100%); } -.ctools-dropbutton.open { +.ctools-dropbutton-processed.open { -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.25); -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.25); box-shadow: 1px 1px 2px rgba(0,0,0,0.25); @@ -203,7 +207,7 @@ top: 0.6667em; } -.ctools-dropbutton.open .ctools-twisty { +.ctools-dropbutton-processed.open .ctools-twisty { top: 0.3333em; } @@ -212,9 +216,9 @@ /* @group Dependent */ .dependent-options, -.form-checkboxes.dependent-options, -.form-radios.dependent-options, -.form-checkboxes .form-item.dependent-options, +.form-checkboxes.dependent-options, +.form-radios.dependent-options, +.form-checkboxes .form-item.dependent-options, .form-radios .form-item.dependent-options { margin-left: 25px; } @@ -256,4 +260,4 @@ /* @end */ -/* @end */ \ No newline at end of file +/* @end */ diff --git a/sites/all/modules/views/css/views-admin.seven-rtl.css b/sites/all/modules/views/css/views-admin.seven-rtl.css index e01f83019..abdd5aa2d 100644 --- a/sites/all/modules/views/css/views-admin.seven-rtl.css +++ b/sites/all/modules/views/css/views-admin.seven-rtl.css @@ -27,3 +27,17 @@ } /* @end */ + +/* @group Attachment details tabs */ + +.views-display-top ul.secondary { + float: right; +} + +.views-displays .secondary .action-list li:first-child { + -moz-border-radius: 7px 0 0 0; + -webkit-border-radius: 7px 0 0 0; + border-radius: 7px 0 0 0; +} + +/* @end */ diff --git a/sites/all/modules/views/css/views-admin.seven.css b/sites/all/modules/views/css/views-admin.seven.css index de912661d..6ebdbf1fd 100644 --- a/sites/all/modules/views/css/views-admin.seven.css +++ b/sites/all/modules/views/css/views-admin.seven.css @@ -60,10 +60,15 @@ fieldset.fieldset-no-legend { padding-top: 2.5em; } -.views-admin .form-item label.option { +.views-admin .form-item label.option, +#views-ui-preview-form .form-item label.option { font-size: 1em; } +#views-ui-preview-form .form-submit { + margin-top: 3px; +} + .views-admin input.form-submit, .views-ui-dialog input.form-submit, .views-admin a.button, @@ -161,10 +166,17 @@ fieldset.fieldset-no-legend { clear: none; } -.views-displays ul.secondary li a { +.views-displays ul.secondary li a, +.views-displays ul.secondary li.active a, +.views-displays ul.secondary li.active a.active { padding: 2px 7px 3px; } +.views-displays ul.secondary li.active a, +.views-displays ul.secondary li.active a.active { + border: 1px solid transparent; +} + .views-admin .links li { padding-right: 0; /* LTR */ } @@ -180,24 +192,30 @@ fieldset.fieldset-no-legend { .views-display-top ul.secondary { background-color: transparent; + float: left +} + +.views-display-top .secondary .action-list li { + float: none; + margin: 0; } /* @end */ /* @group Buttons */ -.ctools-button ul { +.ctools-button-processed ul { margin: 0; } /* Override for input elements that are themed like ctools-buttons */ -.ctools-button input.form-submit:hover { +.ctools-button-processed input.form-submit:hover { background-image: none; color: #0074BD; text-shadow: none; } -.ctools-button input.form-submit:active { +.ctools-button-processed input.form-submit:active { background: none; border: medium none; color: #0074BD; @@ -235,7 +253,7 @@ table th { .views-displays .secondary > li:first-child { padding-left: 0; } - + .views-admin .icon.add { background-position: center 3px; } @@ -408,7 +426,7 @@ table th { /* @group Buttons */ -.ctools-button { +.ctools-button-processed { background-image: -moz-linear-gradient( -90deg, @@ -437,7 +455,7 @@ table th { border-radius: 11px 11px 11px 11px; } -.ctools-button:hover { +.ctools-button-processed:hover { background-image: -moz-linear-gradient( -90deg, @@ -463,7 +481,7 @@ table th { #f1f1f1 100%); } -.ctools-dropbutton.open:hover { +.ctools-dropbutton-processed.open:hover { background-image: -moz-linear-gradient( -90deg, @@ -489,7 +507,7 @@ table th { #f9f9f9 100%); } -.ctools-dropbutton.open { +.ctools-dropbutton-processed.open { -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.25); -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.25); box-shadow: 1px 1px 2px rgba(0,0,0,0.25); @@ -523,7 +541,7 @@ table th { color: #008BCB; } -.views-ui-display-tab-actions .ctools-button input { +.views-ui-display-tab-actions .ctools-button-processed input { color: #0074BD; } diff --git a/sites/all/modules/views/css/views-admin.theme-rtl.css b/sites/all/modules/views/css/views-admin.theme-rtl.css index d1478b5d1..f966432f4 100644 --- a/sites/all/modules/views/css/views-admin.theme-rtl.css +++ b/sites/all/modules/views/css/views-admin.theme-rtl.css @@ -156,10 +156,6 @@ div.form-item-displays-live-preview { padding-right: 25px; } -.views-ui-display-tab-bucket.overridden .views-display-setting { - margin-right: 15px; -} - /* @end */ /* @group Attachment bucket rows diff --git a/sites/all/modules/views/css/views-admin.theme.css b/sites/all/modules/views/css/views-admin.theme.css index 78c318c70..df45cdf0c 100644 --- a/sites/all/modules/views/css/views-admin.theme.css +++ b/sites/all/modules/views/css/views-admin.theme.css @@ -24,8 +24,7 @@ } .box-margin { - margin-left: 12px; - margin-right: 12px; + margin: 12px 12px 0 12px; } /* @end */ @@ -205,9 +204,9 @@ input.form-radio { margin-left: 16px; /* LTR */ } -/* Hide 'remove' checkboxes. This might be scoped too widely. */ -[class*="form-type-checkbox"][class*="remove"] { - display: none; +/* Hide 'remove' checkboxes. */ +.views-remove-checkbox { + display: none; } /* sizes the labels of checkboxes and radio button to the height of the text */ @@ -407,23 +406,29 @@ td.group-title { .views-displays { border: 1px solid #CCC; - margin-bottom: 36px; padding-bottom: 36px; } .views-display-top { background-color: #F9F9F9; border-bottom: 1px solid #CCCCCC; - margin-bottom: 14px; - padding: 8px 8px 6px; /* LTR */ + padding: 8px 8px 8px; /* LTR */ position: relative; } -.views-display-top .secondary > li + li { - margin-left: 6px; +.views-display-top .secondary { + margin-right: 18em; +} + +.views-display-top .secondary > li { + margin-right: 6px; padding-left: 0; } +.views-display-top .secondary > li:last-child { + margin-right: 0; +} + #views-display-extra-actions li { padding: 3px 9px; } @@ -499,11 +504,6 @@ td.group-title { /* @group Attachment details */ -#edit-display-settings { - border-bottom: 3px solid #CCC; - padding-bottom: 12px; -} - #edit-display-settings-title { font-size: 14px; line-height: 1.5; @@ -540,33 +540,30 @@ td.group-title { * The auto-preview checkbox line. */ -#edit-display-preview-controls { - margin-top: 36px; -} - -#edit-display-preview-controls > div, -#edit-display-preview-controls > input { +#views-ui-preview-form > div > div, +#views-ui-preview-form > div > input { float: left; } -#edit-display-preview-controls > .form-type-checkbox { +#views-ui-preview-form .form-type-checkbox { margin-top: 2px; + margin-left: 2px; } -#edit-display-preview-controls > .form-type-textfield { +#views-ui-preview-form .form-type-textfield { margin-top: 5px; } -#edit-display-preview-controls .arguments-preview { +#views-ui-preview-form .arguments-preview { font-size: 1em; } -#edit-display-preview-controls .arguments-preview, -#edit-display-preview-controls .form-type-textfield { +#views-ui-preview-form .arguments-preview, +#views-ui-preview-form .form-type-textfield { margin-left: 14px; } -#edit-display-preview-controls .form-type-textfield label { +#views-ui-preview-form .form-type-textfield label { display: inline-block; float: left; font-weight: normal; @@ -574,7 +571,7 @@ td.group-title { margin-right: 0.75em; } -#edit-display-preview-controls .form-type-textfield .description { +#views-ui-preview-form .form-type-textfield .description { white-space: nowrap; } @@ -606,8 +603,13 @@ td.group-title { margin: 0; } -.views-ui-display-tab-bucket .links.actions { - margin-top: 2px; +.views-ui-display-tab-bucket .horizontal.actions { + margin-right: 6px; +} + +.views-ui-display-tab-bucket .actions.horizontal li + li { + margin-left: 3px; + padding-left: 3px; } .views-ui-display-tab-bucket.access { @@ -627,27 +629,16 @@ td.group-title { /* @group Attachment bucket overridden * - * Applies a broken link icon to overridden buckets. + * Applies a overriden(italics) font style to overridden buckets. * The better way to implement this would be to add the overridden class * to the bucket header when the bucket is overridden and style it as a * generic icon classed element. For the moment, we'll style the bucket - * header specifically with the broken link icon. + * header specifically with the overriden font style. */ .views-ui-display-tab-setting.overridden, .views-ui-display-tab-bucket.overridden > h3 { - background-attachment: scroll; - background-image: url("../images/sprites.png"); - background-position: left -172px; /* LTR */ - background-repeat: no-repeat; - overflow: hidden; - padding-left: 21px; - zoom: 1; - margin-left: 4px; -} - -.views-ui-display-tab-bucket.overridden .views-display-setting { - margin-left: 15px; /* LTR */ + font-style: italic; } /* @end */ @@ -926,13 +917,25 @@ td.group-title { /* @group Live preview elements */ -/** - * Create a horizontal rule above the live preview area. - */ +#views-preview-wrapper { + border: 1px solid #CCC; + border-top: 2px solid #CCC; + padding-bottom: 12px; + padding-top: 12px; +} + +#views-ui-preview-form { + margin: 12px; +} + #views-live-preview { margin: 0 12px; } +#views-live-preview .views-query-info { + overflow: auto; +} + /* Intentionally targeting h1 */ #views-live-preview h1.section-title { color: #818181; diff --git a/sites/all/modules/views/css/views-list-rtl.css b/sites/all/modules/views/css/views-list-rtl.css deleted file mode 100644 index 1b62fc3fb..000000000 --- a/sites/all/modules/views/css/views-list-rtl.css +++ /dev/null @@ -1,27 +0,0 @@ - -table.views-entry { - clear: right; /* RTL */ -} - -table.views-entry td.view-ops { - text-align: left; /* RTL */ -} - -#views-ui-list-views-form .form-item { - padding-left: 1em; /* RTL */ - float: right; /* RTL */ -} - -#edit-order-wrapper { - clear: right; /* RTL */ -} - -#edit-views-apply, -#edit-views-reset { - float: right; /* RTL */ -} - -.views-entry .advanced-help-link { - padding-left: 3px; /* RTL */ -} - diff --git a/sites/all/modules/views/css/views-list.css b/sites/all/modules/views/css/views-list.css deleted file mode 100644 index 73f0aa07c..000000000 --- a/sites/all/modules/views/css/views-list.css +++ /dev/null @@ -1,79 +0,0 @@ - -table.views-entry { - margin: 3px 0; - border: 1px solid #ddd; - background-color: white; - color: #494949; /* matches garland */ - clear: left; /* LTR */ - width: 100%; -} - -table.views-entry tbody { - border: none; -} - -table.views-entry td.view-ops { - width: 45%; - text-align: right; /* LTR */ - background-color: #eee; -} - -table.views-entry td.view-name { - background-color: #eee; -} - -table.views-entry .description { - vertical-align: top; -} - -body form#views-ui-list-views-form { - margin: 0 0 1.5em 0; -} - -#views-ui-list-views-form .form-item { - padding-right: 1em; /* LTR */ - float: left; /* LTR */ - margin-top: 0; - margin-bottom: 0; -} - -#edit-order-wrapper { - clear: left; /* LTR */ -} - -#edit-views-apply, -#edit-views-reset { - margin-top: 1.65em; - float: left; /* LTR */ -} - -.views-entry .advanced-help-link { - position: relative; - top: 2px; - padding-right: 3px; /* LTR */ -} - -table.view-disabled { - color: #999; -} - -table.views-entry td { - line-height: 1.4; - padding-bottom: 10px; -} -table.view-disabled td { - line-height: 1.4; - padding-bottom: 10px; - background: none; -} -table.view-enabled td.view-name, -table.view-enabled td.view-ops, -table.view-disabled td.view-name, -table.view-disabled td.view-ops { - line-height: 1.6; - padding-bottom: 0.3em; -} -table.view-enabled td.view-name, -table.view-enabled td.view-ops { - background: #E4F0F8; -} diff --git a/sites/all/modules/views/css/views-rtl.css b/sites/all/modules/views/css/views-rtl.css index fef2bd9f8..f804639f8 100644 --- a/sites/all/modules/views/css/views-rtl.css +++ b/sites/all/modules/views/css/views-rtl.css @@ -3,4 +3,3 @@ float: right; /* RTL */ padding: .5em 1em 0 0; /* RTL */ } - diff --git a/sites/all/modules/views/css/views-tabs.css b/sites/all/modules/views/css/views-tabs.css deleted file mode 100644 index 34ed6feed..000000000 --- a/sites/all/modules/views/css/views-tabs.css +++ /dev/null @@ -1,5 +0,0 @@ -/* $Id */ - -.ui-tabs-hide { - display: none; -} diff --git a/sites/all/modules/views/docs/docs.php b/sites/all/modules/views/docs/docs.php deleted file mode 100644 index 141368b53..000000000 --- a/sites/all/modules/views/docs/docs.php +++ /dev/null @@ -1,713 +0,0 @@ -<?php -// $Id: docs.php,v 1.16.4.10 2010/12/18 08:02:37 dereine Exp $ -/** - * @file - * This file contains no working PHP code; it exists to provide additional documentation - * for doxygen as well as to document hooks in the standard Drupal manner. - */ - -/** - * @mainpage Views 2 API Manual - * - * Much of this information is actually stored in the advanced help; please - * check the API topic. This help will primarily be aimed at documenting - * classes and function calls. - * - * An online version of the advanced help API documentation is available from: - * @link http://views-help.doc.logrus.com/help/views/api @endlink - * - * Topics: - * - @ref view_lifetime - * - @ref views_hooks - * - @ref views_handlers - * - @ref views_plugins - * - @ref views_templates - */ - -/** - * @page view_lifetime The life of a view - * - * This page explains the basic cycle of a view and what processes happen. - */ - -/** - * @page views_handlers About Views' handlers - * - * This page explains what views handlers are, how they're written, and what - * the basic conventions are. - * - * - @ref views_field_handlers - * - @ref views_sort_handlers - * - @ref views_filter_handlers - * - @ref views_argument_handlers - * - @ref views_relationship_handlers - */ - -/** - * @page views_plugins About Views' plugins - * - * This page explains what views plugins are, how they're written, and what - * the basic conventions are. - * - * - @ref views_display_plugins - * - @ref views_style_plugins - * - @ref views_row_plugins - */ - -/** - * @defgroup views_hooks Views' hooks - * @{ - * Hooks that can be implemented by other modules in order to implement the - * Views API. - */ - -/** - * Describe table structure to Views. - * - * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. - * - * The full documentation for this hook is in the advanced help. - * @link http://views-help.doc.logrus.com/help/views/api-tables @endlink - */ -function hook_views_data() { - // This example describes how to write hook_views_data() for the following - // table: - // - // CREATE TABLE example_table ( - // nid INT(11) NOT NULL COMMENT 'Primary key; refers to {node}.nid.', - // plain_text_field VARCHAR(32) COMMENT 'Just a plain text field.', - // numeric_field INT(11) COMMENT 'Just a numeric field.', - // boolean_field INT(1) COMMENT 'Just an on/off field.', - // timestamp_field INT(8) COMMENT 'Just a timestamp field.', - // PRIMARY KEY(nid) - // ); - - // The 'group' index will be used as a prefix in the UI for any of this - // table's fields, sort criteria, etc. so it's easy to tell where they came - // from. - $data['example_table']['table']['group'] = t('Example table'); - - // Define this as a base table. In reality this is not very useful for - // this table, as it isn't really a distinct object of its own, but - // it makes a good example. - $data['example_table']['table']['base'] = array( - 'field' => 'nid', - 'title' => t('Example table'), - 'help' => t("Example table contains example content and can be related to nodes."), - 'weight' => -10, - ); - - // This table references the {node} table. - // This creates an 'implicit' relationship to the node table, so that when 'Node' - // is the base table, the fields are automatically available. - $data['example_table']['table']['join'] = array( - // Index this array by the table name to which this table refers. - // 'left_field' is the primary key in the referenced table. - // 'field' is the foreign key in this table. - 'node' => array( - 'left_field' => 'nid', - 'field' => 'nid', - ), - ); - - // Next, describe each of the individual fields in this table to Views. For - // each field, you may define what field, sort, argument, and/or filter - // handlers it supports. This will determine where in the Views interface you - // may use the field. - - // Node ID field. - $data['example_table']['nid'] = array( - 'title' => t('Example content'), - 'help' => t('Some example content that references a node.'), - // Because this is a foreign key to the {node} table. This allows us to - // have, when the view is configured with this relationship, all the fields - // for the related node available. - 'relationship' => array( - 'base' => 'node', - 'field' => 'nid', - 'handler' => 'views_handler_relationship', - 'label' => t('Example node'), - ), - ); - - // Example plain text field. - $data['example_table']['plain_text_field'] = array( - 'title' => t('Plain text field'), - 'help' => t('Just a plain text field.'), - 'field' => array( - 'handler' => 'views_handler_field', - 'click sortable' => TRUE, - ), - 'sort' => array( - 'handler' => 'views_handler_sort', - ), - 'filter' => array( - 'handler' => 'views_handler_filter_string', - ), - 'argument' => array( - 'handler' => 'views_handler_argument_string', - ), - ); - - // Example numeric text field. - $data['example_table']['numeric_field'] = array( - 'title' => t('Numeric field'), - 'help' => t('Just a numeric field.'), - 'field' => array( - 'handler' => 'views_handler_field_numeric', - 'click sortable' => TRUE, - ), - 'filter' => array( - 'handler' => 'views_handler_filter_numeric', - ), - 'sort' => array( - 'handler' => 'views_handler_sort', - ), - ); - - // Example boolean field. - $data['example_table']['boolean_field'] = array( - 'title' => t('Boolean field'), - 'help' => t('Just an on/off field.'), - 'field' => array( - 'handler' => 'views_handler_field_boolean', - 'click sortable' => TRUE, - ), - 'filter' => array( - 'handler' => 'views_handler_filter_boolean_operator', - 'label' => t('Published'), - 'type' => 'yes-no', - // use boolean_field = 1 instead of boolean_field <> 0 in WHERE statment - 'use equal' => TRUE, - ), - 'sort' => array( - 'handler' => 'views_handler_sort', - ), - ); - - // Example timestamp field. - $data['example_table']['timestamp_field'] = array( - 'title' => t('Timestamp field'), - 'help' => t('Just a timestamp field.'), - 'field' => array( - 'handler' => 'views_handler_field_date', - 'click sortable' => TRUE, - ), - 'sort' => array( - 'handler' => 'views_handler_sort_date', - ), - 'filter' => array( - 'handler' => 'views_handler_filter_date', - ), - ); - - return $data; -} - -/** - * Alter table structure. - * - * You can add/edit/remove to existing tables defined by hook_views_data(). - * - * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. - * - * The full documentation for this hook is in the advanced help. - * @link http://views-help.doc.logrus.com/help/views/api-tables @endlink - */ -function hook_views_data_alter(&$data) { - // This example alters the title of the node: nid field for the admin. - $data['node']['nid']['title'] = t('Node-Nid'); - - // This example adds a example field to the users table - $data['users']['example_field'] = array( - 'title' => t('Example field'), - 'help' => t('Some examüple content that references a user'), - 'handler' => 'hook_handlers_field_example_field', - ); - - // This example changes the handler of the node title field. - // In this handler you could do stuff, like preview of the node, when clicking the node title. - - $data['node']['title']['handler'] = 'modulename_handlers_field_node_title'; -} - - -/** - * The full documentation for this hook is now in the advanced help. - * - * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. - * - * This is a stub list as a reminder that this needs to be doc'd and is not used - * in views anywhere so might not be remembered when this is formally documented: - * - style: 'even empty' - */ -function hook_views_plugins() { - // example code here -} - -/** - * Alter existing plugins data, defined by modules. - */ -function hook_views_plugins_alter(&$plugins) { - // Add apachesolr to the base of the node row plugin. - $plugins['row']['node']['base'][] = 'apachesolr'; -} - -/** - * Register View API information. This is required for your module to have - * its include files loaded; for example, when implementing - * hook_views_default_views(). - * - * @return - * An array with the following possible keys: - * - api: (required) The version of the Views API the module implements. - * - path: (optional) If includes are stored somewhere other than within - * the root module directory or a subdirectory called includes, specify - * its path here. - * - template path: (optional) A path where the module has stored it's views template files. - * When you have specificed this key views automatically uses the template files for the views. - * You can use the same naming conventions like for normal views template files. - */ -function hook_views_api() { - return array( - 'api' => 2, - 'path' => drupal_get_path('module', 'example') . '/includes/views', - ); -} - -/** - * This hook allows modules to provide their own views which can either be used - * as-is or as a "starter" for users to build from. - * - * This hook should be placed in MODULENAME.views_default.inc and it will be - * auto-loaded. This must either be in the same directory as the .module file - * or in a subdirectory named 'includes'. - * - * The $view->disabled boolean flag indicates whether the View should be - * enabled or disabled by default. - * - * @return - * An associative array containing the structures of views, as generated from - * the Export tab, keyed by the view name. A best practice is to go through - * and add t() to all title and label strings, with the exception of menu - * strings. - */ -function hook_views_default_views() { - // Begin copy and paste of output from the Export tab of a view. - $view = new view; - $view->name = 'frontpage'; - $view->description = t('Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page.'); - $view->tag = t('default'); - $view->base_table = 'node'; - $view->api_version = 2; - $view->disabled = FALSE; // Edit this to true to make a default view disabled initially - $view->display = array(); - $display = new views_display; - $display->id = 'default'; - $display->display_title = t('Defaults'); - $display->display_plugin = 'default'; - $display->position = '1'; - $display->display_options = array ( - 'style_plugin' => 'default', - 'style_options' => - array ( - ), - 'row_plugin' => 'node', - 'row_options' => - array ( - 'teaser' => 1, - 'links' => 1, - ), - 'relationships' => - array ( - ), - 'fields' => - array ( - ), - 'sorts' => - array ( - 'sticky' => - array ( - 'id' => 'sticky', - 'table' => 'node', - 'field' => 'sticky', - 'order' => 'ASC', - ), - 'created' => - array ( - 'id' => 'created', - 'table' => 'node', - 'field' => 'created', - 'order' => 'ASC', - 'relationship' => 'none', - 'granularity' => 'second', - ), - ), - 'arguments' => - array ( - ), - 'filters' => - array ( - 'promote' => - array ( - 'id' => 'promote', - 'table' => 'node', - 'field' => 'promote', - 'operator' => '=', - 'value' => '1', - 'group' => 0, - 'exposed' => false, - 'expose' => - array ( - 'operator' => false, - 'label' => '', - ), - ), - 'status' => - array ( - 'id' => 'status', - 'table' => 'node', - 'field' => 'status', - 'operator' => '=', - 'value' => '1', - 'group' => 0, - 'exposed' => false, - 'expose' => - array ( - 'operator' => false, - 'label' => '', - ), - ), - ), - 'items_per_page' => 10, - 'use_pager' => '1', - 'pager_element' => 0, - 'title' => '', - 'header' => '', - 'header_format' => '1', - 'footer' => '', - 'footer_format' => '1', - 'empty' => '', - 'empty_format' => '1', - ); - $view->display['default'] = $display; - $display = new views_display; - $display->id = 'page'; - $display->display_title = t('Page'); - $display->display_plugin = 'page'; - $display->position = '2'; - $display->display_options = array ( - 'defaults' => - array ( - 'access' => true, - 'title' => true, - 'header' => true, - 'header_format' => true, - 'header_empty' => true, - 'footer' => true, - 'footer_format' => true, - 'footer_empty' => true, - 'empty' => true, - 'empty_format' => true, - 'items_per_page' => true, - 'offset' => true, - 'use_pager' => true, - 'pager_element' => true, - 'link_display' => true, - 'php_arg_code' => true, - 'exposed_options' => true, - 'style_plugin' => true, - 'style_options' => true, - 'row_plugin' => true, - 'row_options' => true, - 'relationships' => true, - 'fields' => true, - 'sorts' => true, - 'arguments' => true, - 'filters' => true, - 'use_ajax' => true, - 'distinct' => true, - ), - 'relationships' => - array ( - ), - 'fields' => - array ( - ), - 'sorts' => - array ( - ), - 'arguments' => - array ( - ), - 'filters' => - array ( - ), - 'path' => 'frontpage', - ); - $view->display['page'] = $display; - $display = new views_display; - $display->id = 'feed'; - $display->display_title = t('Feed'); - $display->display_plugin = 'feed'; - $display->position = '3'; - $display->display_options = array ( - 'defaults' => - array ( - 'access' => true, - 'title' => false, - 'header' => true, - 'header_format' => true, - 'header_empty' => true, - 'footer' => true, - 'footer_format' => true, - 'footer_empty' => true, - 'empty' => true, - 'empty_format' => true, - 'use_ajax' => true, - 'items_per_page' => true, - 'offset' => true, - 'use_pager' => true, - 'pager_element' => true, - 'use_more' => true, - 'distinct' => true, - 'link_display' => true, - 'php_arg_code' => true, - 'exposed_options' => true, - 'style_plugin' => false, - 'style_options' => false, - 'row_plugin' => false, - 'row_options' => false, - 'relationships' => true, - 'fields' => true, - 'sorts' => true, - 'arguments' => true, - 'filters' => true, - ), - 'relationships' => - array ( - ), - 'fields' => - array ( - ), - 'sorts' => - array ( - ), - 'arguments' => - array ( - ), - 'filters' => - array ( - ), - 'displays' => - array ( - 'default' => 'default', - 'page' => 'page', - ), - 'style_plugin' => 'rss', - 'style_options' => - array ( - 'description' => '', - ), - 'row_plugin' => 'node_rss', - 'row_options' => - array ( - 'item_length' => 'default', - ), - 'path' => 'rss.xml', - 'title' => t('Front page feed'), - ); - $view->display['feed'] = $display; - // End copy and paste of Export tab output. - - // Add view to list of views to provide. - $views[$view->name] = $view; - - // ...Repeat all of the above for each view the module should provide. - - // At the end, return array of default views. - return $views; -} - -/** - * This hook is called right before all default views are cached to the - * database. It takes a keyed array of views by reference. - */ -function hook_views_default_views_alter(&$views) { - if (isset($views['taxonomy_term'])) { - $views['taxonomy_term']->set_display('default'); - $views['taxonomy_term']->display_handler->set_option('title', 'Categories'); - } -} - -/** - * Stub hook documentation - * - * This hook should be placed in MODULENAME.views_convert.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. - */ -function hook_views_convert() { - // example code here -} - -/** - * Stub hook documentation - */ -function hook_views_query_substitutions() { - // example code here -} - -/** - * This hook is called at the very beginning of views processing, - * before anything is done. - * - * Adding output to the view can be accomplished by placing text on - * $view->attachment_before and $view->attachment_after. - */ -function hook_views_pre_view(&$view, &$display_id, &$args) { - // example code here -} - -/** - * This hook is called right before the build process, but after displays - * are attached and the display performs its pre_execute phase. - * - * Adding output to the view can be accomplished by placing text on - * $view->attachment_before and $view->attachment_after. - */ -function hook_views_pre_build(&$view) { - // example code here -} - -/** - * This hook is called right after the build process. The query is - * now fully built, but it has not yet been run through db_rewrite_sql. - * - * Adding output to the view can be accomplished by placing text on - * $view->attachment_before and $view->attachment_after. - */ -function hook_views_post_build(&$view) { - // example code here -} - -/** - * This hook is called right before the execute process. The query is - * now fully built, but it has not yet been run through db_rewrite_sql. - * - * Adding output to the view can be accomplished by placing text on - * $view->attachment_before and $view->attachment_after. - */ -function hook_views_pre_execute(&$view) { - // example code here -} - -/** - * This hook is called right after the execute process. The query has - * been executed, but the pre_render() phase has not yet happened for - * handlers. - * - * Adding output to the view can be accomplished by placing text on - * $view->attachment_before and $view->attachment_after. Altering the - * content can be achieved by editing the items of $view->result. - */ -function hook_views_post_execute(&$view) { - // example code here -} - -/** - * This hook is called right before the render process. The query has - * been executed, and the pre_render() phase has already happened for - * handlers, so all data should be available. - * - * Adding output to the view can be accomplished by placing text on - * $view->attachment_before and $view->attachment_after. Altering the - * content can be achieved by editing the items of $view->result. - * - * This hook can be utilized by themes. - */ -function hook_views_pre_render(&$view) { - // example code here -} - -/** - * Post process any rendered data. - * - * This can be valuable to be able to cache a view and still have some level of - * dynamic output. In an ideal world, the actual output will include HTML - * comment based tokens, and then the post process can replace those tokens. - * - * Example usage. If it is known that the view is a node view and that the - * primary field will be a nid, you can do something like this: - * - * <!--post-FIELD-NID--> - * - * And then in the post render, create an array with the text that should - * go there: - * - * strtr($output, array('<!--post-FIELD-1-->', 'output for FIELD of nid 1'); - * - * All of the cached result data will be available in $view->result, as well, - * so all ids used in the query should be discoverable. - * - * This hook can be utilized by themes. - */ -function hook_views_post_render(&$view, &$output, &$cache) { - -} - -/** - * Stub hook documentation - * - * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. - * - */ -function hook_views_query_alter(&$view, &$query) { - // example code here -} - -/** - * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. - * - * Alter the links that appear over a view. They are in a format suitable for - * theme('links'). - * - * Warning: $view is not a reference in PHP4 and cannot be modified here. But it IS - * a reference in PHP5, and can be modified. Please be careful with it. - * - * @see theme_links - */ -function hook_views_admin_links_alter(&$links, $view) { - // example code here -} - -/** - * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. - * - * Alter the rows that appear with a view, which includes path and query information. - * The rows are suitable for theme('table'). - * - * Warning: $view is not a reference in PHP4 and cannot be modified here. But it IS - * a reference in PHP5, and can be modified. Please be careful with it. - * - * @see theme_table - */ -function hook_views_preview_info_alter(&$rows, $view) { - // example code here -} - -/** - * @} - */ diff --git a/sites/all/modules/views/docs/views.api.php b/sites/all/modules/views/docs/views.api.php index 1485148c0..5dae945b1 100644 --- a/sites/all/modules/views/docs/views.api.php +++ b/sites/all/modules/views/docs/views.api.php @@ -64,8 +64,9 @@ * Describe table structure to Views. * * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. + * MODULENAME.views.inc must be in the directory specified by the 'path' key + * returned by MODULENAME_views_api(), or the same directory as the .module + * file, if 'path' is unspecified. * * The full documentation for this hook is in the advanced help. * @link http://views-help.doc.logrus.com/help/views/api-tables @endlink @@ -211,8 +212,9 @@ function hook_views_data() { * You can add/edit/remove to existing tables defined by hook_views_data(). * * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. + * MODULENAME.views.inc must be in the directory specified by the 'path' key + * returned by MODULENAME_views_api(), or the same directory as the .module + * file, if 'path' is unspecified. * * The full documentation for this hook is in the advanced help. * @link http://views-help.doc.logrus.com/help/views/api-tables @endlink @@ -239,8 +241,9 @@ function hook_views_data_alter(&$data) { * The full documentation for this hook is now in the advanced help. * * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. + * MODULENAME.views.inc must be in the directory specified by the 'path' key + * returned by MODULENAME_views_api(), or the same directory as the .module + * file, if 'path' is unspecified. * * This is a stub list as a reminder that this needs to be doc'd and is not used * in views anywhere so might not be remembered when this is formally documented: @@ -267,8 +270,7 @@ function hook_views_plugins_alter(&$plugins) { * An array with the following possible keys: * - api: (required) The version of the Views API the module implements. * - path: (optional) If includes are stored somewhere other than within - * the root module directory or a subdirectory called includes, specify - * its path here. + * the root module directory, specify its path here. * - template path: (optional) A path where the module has stored it's views template files. * When you have specificed this key views automatically uses the template files for the views. * You can use the same naming conventions like for normal views template files. @@ -277,6 +279,7 @@ function hook_views_api() { return array( 'api' => 2, 'path' => drupal_get_path('module', 'example') . '/includes/views', + 'template path' => drupal_get_path('module', 'example') . 'themes', ); } @@ -285,8 +288,9 @@ function hook_views_api() { * as-is or as a "starter" for users to build from. * * This hook should be placed in MODULENAME.views_default.inc and it will be - * auto-loaded. This must either be in the same directory as the .module file - * or in a subdirectory named 'includes'. + * auto-loaded. MODULENAME.views_default.inc must be in the directory specified + * by the 'path' key returned by MODULENAME_views_api(), or the same directory + * as the .module file, if 'path' is unspecified. * * The $view->disabled boolean flag indicates whether the View should be * enabled or disabled by default. @@ -535,8 +539,21 @@ function hook_views_default_views() { } /** + * Alter default views defined by other modules. + * * This hook is called right before all default views are cached to the * database. It takes a keyed array of views by reference. + * + * Example usage to add a field to a view: + * @code + * $handler =& $view->display['DISPLAY_ID']->handler; + * // Add the user name field to the view. + * $handler->display->display_options['fields']['name']['id'] = 'name'; + * $handler->display->display_options['fields']['name']['table'] = 'users'; + * $handler->display->display_options['fields']['name']['field'] = 'name'; + * $handler->display->display_options['fields']['name']['label'] = 'Author'; + * $handler->display->display_options['fields']['name']['link_to_user'] = 1; + * @endcode */ function hook_views_default_views_alter(&$views) { if (isset($views['taxonomy_term'])) { @@ -546,19 +563,34 @@ function hook_views_default_views_alter(&$views) { /** * Stub hook documentation - * - * This hook should be placed in MODULENAME.views_convert.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. */ -function hook_views_convert() { +function hook_views_query_substitutions() { // example code here } /** - * Stub hook documentation + * This hook is called to get a list of placeholders and their substitutions, + * used when preprocessing a View with form elements. */ -function hook_views_query_substitutions() { +function hook_views_form_substitutions() { + return array( + '<!--views-form-example-substitutions-->' => 'Example Substitution', + ); +} + +/** + * Views form (View with form elements) validate handler. + * Called for all steps ($form_state['step']) of the multistep form. + */ +function hook_views_form_validate($form, &$form_state) { + // example code here +} + +/** + * Views form (View with form elements) submit handler. + * Called for all steps ($form_state['step']) of the multistep form. + */ +function hook_views_form_submit($form, &$form_state) { // example code here } @@ -664,8 +696,9 @@ function hook_views_post_render(&$view, &$output, &$cache) { * Stub hook documentation * * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. + * MODULENAME.views.inc must be in the directory specified by the 'path' key + * returned by MODULENAME_views_api(), or the same directory as the .module + * file, if 'path' is unspecified. * */ function hook_views_query_alter(&$view, &$query) { @@ -674,8 +707,9 @@ function hook_views_query_alter(&$view, &$query) { /** * This hook should be placed in MODULENAME.views.inc and it will be auto-loaded. - * This must either be in the same directory as the .module file or in a subdirectory - * named 'includes'. + * MODULENAME.views.inc must be in the directory specified by the 'path' key + * returned by MODULENAME_views_api(), or the same directory as the .module + * file, if 'path' is unspecified. * * Alter the rows that appear with a view preview, which include query and * performance statistics. $rows is an associative array with two keys: @@ -693,6 +727,21 @@ function hook_views_preview_info_alter(&$rows, $view) { // example code here } +/** + * This hooks allows to alter the links at the top of the view edit form. + * Some modules might want to add links there. + * + * @param $links + * The links which will be displayed at the top of the view edit form. + * @param view $view + * The full view object which is currently changed. + * @param $display_id + * The current display id which is edited. For example that's 'default' or 'page_1'. + */ +function hook_views_ui_display_top_links_alter(&$links, $view, $display_id) { + // example code here +} + /** * @} */ diff --git a/sites/all/modules/views/documentation-standards.txt b/sites/all/modules/views/documentation-standards.txt index ea6113571..6a9c5921d 100644 --- a/sites/all/modules/views/documentation-standards.txt +++ b/sites/all/modules/views/documentation-standards.txt @@ -3,4 +3,3 @@ - If the text is not bolded (ex: links to click, options to check), it got /italicized/. - If it's user-entered text it got 'single quotes'. - diff --git a/sites/all/modules/views/drush/views.drush.inc b/sites/all/modules/views/drush/views.drush.inc index 4a4c7a335..569cf6dcb 100644 --- a/sites/all/modules/views/drush/views.drush.inc +++ b/sites/all/modules/views/drush/views.drush.inc @@ -1,13 +1,494 @@ <?php - /** * @file * Drush integration of views. + * + * * drush cache-clear views - Clears the views specific caches. + * * views-revert - Drush command to revert views overridden in the system. + */ + +/** + * Implement hook_drush_help(). + */ +function views_drush_help($section) { + switch ($section) { + case 'drush:views-revert': + $help = dt('Reverts views in the drupal installation that have been overriden. '); + $help .= dt('If no view names are specified, you will be presented with a list of overridden views to choose from. '); + $help .= dt('To revert all views, do not specify any view names, and choose the option "All" from the options presented.'); + return $help; + case 'drush:views-list': + return dt('Show a list of available views with information about them.'); + case 'drush:views-enable': + return dt('Enable the specified views. Follow the command with a space delimited list of view names'); + case 'drush:views-disable': + return dt('Disable the specified views. Follow the command with a space delimited list of view names'); + } +} + +/** + * Implement hook_drush_command(). + */ +function views_drush_command() { + $items = array(); + + $items['views-revert'] = array( + 'callback' => 'views_revert_views', + 'drupal dependencies' => array('views'), + 'description' => 'Revert overridden views to their default state. Make sure to backup first.', + 'arguments' => array( + 'views' => 'A space delimited list of view names.', + ), + 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, + 'aliases' => array('vr'), + 'examples' => array( + 'drush vr archive' => 'Reverts the "archive" view.', + 'drush rln archive frontpage' => 'Reverts the "archive" and "frontpage" view.', + 'drush vr' => 'Will present you with a list of overridden views to choose from, and an option to revert all overridden views.', + ), + ); + $items['views-dev'] = array( + 'callback' => 'views_development_settings', + 'drupal dependencies' => array('views'), + 'description' => 'Setup the views settings to a more developer oriented value..', + 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, + 'aliases' => array('vd'), + ); + + $items['views-list'] = array( + 'drupal dependencies' => array('views'), + 'description' => 'Get a list of all views in the system.', + 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, + 'aliases' => array('vl'), + 'options' => array( + 'name' => 'String contained in view\'s name by which filter the results.', + 'tags' => 'A comma-separated list of views tags by which to filter the results.', + 'status' => 'Status of the views by which to filter the results. Choices: enabled, disabled.', + 'type' => 'Type of the views by which to filter the results. Choices: normal, default or overridden.', + ), + 'examples' => array( + 'drush vl' => 'Show a list of all available views.', + 'drush vl --name=blog' => 'Show a list of views which names contain "blog".', + 'drush vl --tags=tag1,tag2' => 'Show a list of views tagged with "tag1" or "tag2".', + 'drush vl --status=enabled' => 'Show a list of enabled views.', + 'drush vl --type=overridden' => 'Show a list of overridden views.', + ), + ); + $items['views-analyze'] = array( + 'drupal dependencies' => array('views', 'views_ui'), + 'description' => 'Get a list of all Views analyze warnings', + 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, + 'aliases' => array('va'), + ); + $items['views-enable'] = array( + 'drupal dependencies' => array('views'), + 'description' => 'Enable the specified views.', + 'arguments' => array( + 'views' => 'A space delimited list of view names.', + ), + 'aliases' => array('ven'), + 'examples' => array( + 'drush ven frontpage taxonomy_term' => 'Enable the frontpage and taxonomy_term views.', + ), + ); + $items['views-disable'] = array( + 'drupal dependencies' => array('views'), + 'description' => 'Disable the specified views.', + 'arguments' => array( + 'views' => 'A space delimited list of view names.', + ), + 'aliases' => array('vdis'), + 'examples' => array( + 'drush vdis frontpage taxonomy_term' => 'Disable the frontpage and taxonomy_term views.', + ), + ); + + return $items; +} + +/** + * Callback function for views-revert command. + */ +function views_revert_views() { + $views = views_get_all_views(); + $i = 0; + // The provided views names specified in the command. + $viewnames = _convert_csv_to_array(func_get_args()); + + // Find all overridden views. + foreach ($views as $view) { + if ($view->disabled) { + continue; + } + if ($view->type == dt('Overridden')) { + $overridden[$view->name] = $view->name; + } + } + + // Return early if there are no overridden views in the system. + if (empty($overridden)) { + return drush_set_error(dt('There are no overridden views in the system.')); + } + + // If the user specified in the command the views to be overridden. + if (!empty($viewnames)) { + foreach ($viewnames as $key => $viewname) { + $is_overridden = key_exists($viewname, $overridden); + // Check if the provided view name is in the system + if ($viewname && !key_exists($viewname, $views)) { + drush_set_error(dt("'@viewname' view is not present in the system.", array('@viewname' => $viewname))); + } + // Check if the provided view is overridden. + elseif (!$is_overridden) { + drush_set_error(dt("The view specified '@viewname' is not overridden.", array('@viewname' => $viewname))); + } + // If the view is overriden, revert it. + elseif ($is_overridden){ + views_revert_view($views[$viewname]); + $i++; + } + // We should never get here but well... + else { + drush_set_error(dt("The view specified '@viewname' is not provided in code, and thus cannot be reverted.", array('@viewname' => $viewname))); + } + } + } + + // The user did not specify any views in the command, prompt the user + else { + // list of choices for the user + $overridden['all'] = dt('Revert all overridden views'); // add a choice at the end + $choice = drush_choice($overridden, 'Enter a number to choose which view to revert.', '!key'); // prompt the user + + if ($choice !== FALSE) { + // revert all views option + if ($choice == 'all') { + $i = views_revert_allviews($views); + } + // else the user specified a single view + else { + views_revert_view($views[$choice]); + $i++; + } + } + + } + + // final results output + if ($i == 0) { + drush_log(dt('No views were reverted.'), 'ok'); + } + else { + drush_log(dt('Reverted a total of @count views.', array('@count' => $i)), 'ok'); + } +} + +/** + * Reverts all views + * @param $views + * All views in the system as provided by views_get_all_views(). + */ +function views_revert_allviews($views) { + $i = 0; + foreach ($views as $view) { + if ($view->disabled) { + continue; + } + + if ($view->type == t('Overridden')) { + views_revert_view($view); + $i++; + } + } + return $i; +} + +/** + * Revert a specified view + * @param $view + * The view object to be reverted + * + * Checks on wether or not the view is overridden is handled in views_revert_views_revert() + * We perform a check here anyway in case someone somehow calls this function on their own... + */ +function views_revert_view($view) { + // check anyway just in case + if ($view->type == t('Overridden')) { + // Revert the view. + $view->delete(); + // Clear its cache. + ctools_include('object-cache'); + ctools_object_cache_clear('view', $view->name); + // Give feedback. + $message = dt("Reverted the view '@viewname'", array('@viewname' => $view->name)); + drush_log($message, 'success'); + // Reverted one more view. + } + else { + drush_set_error(dt("The view '@viewname' is not overridden.", array('@viewname' => $view->name))); + } +} + +/** + * Change the settings to a more developer oriented value. + */ +function views_development_settings() { + variable_set('views_ui_show_listing_filters', TRUE); + variable_set('views_ui_show_master_display', TRUE); + variable_set('views_ui_show_advanced_column', TRUE); + variable_set('views_ui_always_live_preview_button', TRUE); + variable_set('views_ui_show_preview_information', TRUE); + variable_set('views_ui_show_sql_query', TRUE); + variable_set('views_ui_show_performance_statistics', TRUE); + variable_set('views_show_additional_queries', TRUE); + variable_set('views_devel_output', TRUE); + variable_set('views_devel_region', 'message'); + $message = dt("Setup the new views settings."); + drush_log($message, 'success'); +} + + +/** + * Callback function for views-list command. */ +function drush_views_list() { + // Initialize stuf + $rows = array(); + $disabled_views = array(); + $enabled_views = array(); + $overridden = 0; + $indb = 0; + $incode = 0; + $disabled = 0; + $total = 0; + + $views = views_get_all_views(); + + // get the --name option + // TODO : take into account the case off a comma-separated list of names + $name = drush_get_option_list('name'); + $with_name = !empty($name) ? TRUE : FALSE; + + // get the --tags option + $tags = drush_get_option_list('tags'); + $with_tags = !empty($tags) ? TRUE : FALSE; + + // get the --status option + // store user input appart to reuse it after + $status_opt = drush_get_option_list('status'); + // use the same logic than $view->disabled + if (in_array('disabled', $status_opt)) { + $status = TRUE; + $with_status = TRUE; + } + elseif (in_array('enabled', $status_opt)) { + $status = FALSE; + $with_status = TRUE; + } + else { + $status = NULL; + // wrong or empty --status option + $with_status = FALSE; + } + + // get the --type option + $type = drush_get_option_list('type'); + // use the same logic than $view->type + $with_type = FALSE; + if (in_array('normal', $type) || in_array('default', $type)|| in_array('overridden', $type)) { + $with_type = TRUE; + } + + // set the table headers + $header = array( + dt('Machine name'), + dt('Description'), + dt('Type'), + dt('Status'), + dt('Tag'), + ); + + // setup a row for each view + foreach($views as $id => $view){ + // if options were specified, check that first + // mismatch push the loop to the next view + if ($with_tags && !in_array($view->tag, $tags)) { + continue; + } + if ($with_status && !$view->disabled == $status) { + continue; + } + if ($with_type && strtolower($view->type) !== $type[0]) { + continue; + } + if ($with_name && !stristr($view->name, $name[0])) { + continue; + } + + $row = array(); + // each row entry should be in the same order as the header + $row[] = $view->name; + $row[] = $view->description; + $row[] = $view->type; + $row[] = $view->disabled ? dt('Disabled') : dt('Enabled'); + $row[] = $view->tag; + + // place the row in the appropiate array, + // so we can have disabled views at the bottom + if($view->disabled) { + $disabled_views[] = $row; + } + else{ + $enabled_views[] = $row; + } + unset($row); + + // gather some statistics + switch($view->type) { + case dt('Normal'): + $indb++; + break; + + case dt('Overridden'): + $overridden++; + break; + + case dt('Default'): + $incode++; + break; + } + $total++; + } + + $disabled = count($disabled_views); + + // sort alphabeticaly + asort($disabled_views); + asort($enabled_views); + + // if options were used + $summary = ""; + if ($with_name || $with_tags || $with_status || $with_type) { + $summary = "Views"; + + if ($with_name) { + $summary .= " named $name[0]"; + } + + if ($with_tags) { + $tags = implode(" or ", $tags); + $summary .= " tagged $tags"; + } + + if ($with_status) { + $status_opt = implode("", $status_opt); + $summary .= " which status is '$status_opt'"; + } + + if ($with_type) { + $type = ucfirst($type[0]); + $summary .= " of type '$type'"; + } + } + + if (!empty($summary)) { + drush_print($summary . "\n"); + } + + // print all rows as a table + if ($total > 0) { + $rows = array_merge($enabled_views, $disabled_views); + // put the headers as first row + array_unshift($rows, $header); + + drush_print_table($rows, TRUE); + } + + // print the statistics messages + drush_print(dt("A total of @total views were found in this Drupal installation:", array('@total' => $total))); + drush_print(dt(" @indb views reside only in the database", array('@indb' => $indb ))); + drush_print(dt(" @over views are overridden", array('@over' => $overridden))); + drush_print(dt(" @incode views are in their default state", array('@incode' => $incode))); + drush_print(dt(" @dis views are disabled\n", array('@dis' => $disabled))); +} + +function drush_views_analyze() { + views_include('analyze'); + $messages_count = 0; + $total = 0; + + foreach (views_get_all_views() as $view_name => $view) { + $total++; + if ($messages = views_analyze_view($view)) { + drush_print($view_name); + foreach ($messages as $message) { + $messages_count++; + drush_print($message['type'] .': '. $message['message'], 2); + } + } + } + drush_log(dt('A total of @total views were analyzed and @messages problems were found.', array('@total' => $total, '@messages' => $messages_count)), 'ok'); +} + +/** + * Enables views + */ +function drush_views_enable() { + $viewnames = _convert_csv_to_array(func_get_args()); + // Return early if no view names were specified. + if (empty($viewnames)) { + return drush_set_error(dt('Please specify a space delimited list of view names to enable')); + } + _views_drush_changestatus($viewnames, FALSE); +} + +/** + * Disables views + */ +function drush_views_disable() { + $viewnames = _convert_csv_to_array(func_get_args()); + // Return early if no view names were specified. + if (empty($viewnames)) { + return drush_set_error(dt('Please specify a space delimited list of view names to disable')); + } + _views_drush_changestatus($viewnames, TRUE); +} + +/* +* Helper function to enable / disable views + * @param $viewnames: array of viewnames to process + * @param $status: TRUE to disable or FALSE to enable the view + */ +function _views_drush_changestatus($viewnames = array(), $status = NULL) { + if ($status !== NULL && !empty($viewnames)) { + $changed = FALSE; + $processed = $status ? dt('disabled') : dt('enabled'); + $views_status = variable_get('views_defaults', array()); + + foreach ($viewnames as $key => $viewname) { + if ($views_status[$viewname] !== $status) { + $views_status[$viewname] = $status; + $changed = TRUE; + drush_log(dt("The view '!name' has been !processed", array('!name' => $viewname, '!processed' => $processed)), 'success'); + } + else { + drush_set_error(dt("The view '!name' is already !processed", array('!name' => $viewname, '!processed' => $processed))); + } + } + // If we made changes to views status, save them and clear caches + if ($changed) { + variable_set('views_defaults', $views_status); + views_invalidate_cache(); + drush_log(dt("Views cache was cleared"), 'ok'); + menu_rebuild(); + drush_log(dt("Menu cache was cleared"), 'ok'); + } + } +} /** * Adds a cache clear option for views. */ function views_drush_cache_clear(&$types) { $types['views'] = 'views_invalidate_cache'; -} \ No newline at end of file +} diff --git a/sites/all/modules/views/drush/views_revert.drush.inc b/sites/all/modules/views/drush/views_revert.drush.inc deleted file mode 100644 index b72fcc03f..000000000 --- a/sites/all/modules/views/drush/views_revert.drush.inc +++ /dev/null @@ -1,154 +0,0 @@ -<?php -/** - * @file - * views-revert - Drush command to revert views overridden in the system. - */ - -/** - * Implement hook_drush_help(). - */ -function views_revert_drush_help($section) { - switch ($section) { - case 'drush:revert-views': - return dt('Reverts all views in the drupal installation that have been overriden. Careful, use with care.'); - } -} - -/** - * Implement hook_drush_command(). - */ -function views_revert_drush_command() { - $items = array(); - - $items['views-revert'] = array( - 'callback' => 'views_revert_views', - 'drupal dependencies' => array('views'), - 'description' => dt('Revert overridden views to their default state. Make sure to backup first.'), - 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, - 'aliases' => array('vr'), - ); - - return $items; -} - -/** - * Callback function for views-revert command. - */ -function views_revert_views() { - $views = views_get_all_views(); - $i = 0; - // The provided view names specified in the command. - $viewnames = _convert_csv_to_array(func_get_args()); - - // Find all overridden views. - foreach ($views as $view) { - if ($view->disabled) { - continue; - } - if ($view->type == dt('Overridden')) { - $overridden[$view->name] = $view->name; - } - } - - // Return early if there are no views overridden in the system. - if (empty($overridden)) { - return drush_set_error(dt('There are no overridden views in the system.')); - } - - // If the user specified in the command the views to be overridden. - if (!empty($viewnames)) { - foreach ($viewnames as $key => $viewname) { - $is_overridden = key_exists($viewname, $overridden); - // Check if the provided view name is in the system - if ($viewname && !key_exists($viewname, $views)) { - drush_set_error(dt("'@viewname' view is not present in the system.", array('@viewname' => $viewname))); - } - // Check if the provided view is overridden. - elseif (!$is_overridden) { - drush_set_error(dt("The view specified '@viewname' is not overridden.", array('@viewname' => $viewname))); - } - // If the view is overriden, revert it. - elseif ($is_overridden){ - views_revert_view($views[$viewname]); - $i++; - } - // We should never get here but well... - else { - drush_set_error(dt("The view specified '@viewname' is not provided in code, and thus cannot be reverted.", array('@viewname' => $viewname))); - } - } - } - - // The user did not specify any views in the command, prompt the user - else { - // list of choices for the user - $overridden['all'] = dt('Revert all overridden views'); // add a choice at the end - $choice = drush_choice($overridden, 'Enter a number to choose which view to revert.', '!key'); // prompt the user - - if ($choice !== FALSE) { - // revert all views option - if ($choice == 'all') { - $i = views_revert_allviews($views); - } - // else the user specified a single view - else { - views_revert_view($views[$choice]); - $i++; - } - } - - } - - // final results output - if ($i == 0) { - drush_log(dt('No views were reverted.'), 'ok'); - } - else { - drush_log(dt('Reverted a total of @count views.', array('@count' => $i)), 'ok'); - } -} - -/** - * Reverts all views - * @param $views - * All views in the system as provided by views_get_all_views(). - */ -function views_revert_allviews($views) { - $i = 0; - foreach ($views as $view) { - if ($view->disabled) { - continue; - } - - if ($view->type == t('Overridden')) { - views_revert_view($view); - $i++; - } - } - return $i; -} - -/** - * Revert a specified view - * @param $view - * The view object to be reverted - * - * Checks on wether or not the view is overridden is handled in views_revert_views_revert() - * We perform a check here anyway in case someone somehow calls this function on their own... - */ -function views_revert_view($view) { - // check anyway just in case - if ($view->type == t('Overridden')) { - // Revert the view. - $view->delete(); - // Clear its cache. - views_object_cache_clear('view', $view->name); - // Give feedback. - $message = dt("Reverted the view '@viewname'", array('@viewname' => $view->name)); - drush_log($message, 'success'); - // Reverted one more view. - } - else { - drush_set_error(dt("The view '@viewname' is not overridden.", array('@viewname' => $view->name))); - } -} diff --git a/sites/all/modules/views/handlers/views_handler_area.inc b/sites/all/modules/views/handlers/views_handler_area.inc index fd82f4690..d0a9e0c84 100644 --- a/sites/all/modules/views/handlers/views_handler_area.inc +++ b/sites/all/modules/views/handlers/views_handler_area.inc @@ -5,7 +5,7 @@ */ /** - * @defgroup views_area_handlers Views' relationship handlers + * @defgroup views_area_handlers Views' area handlers * @{ * Handlers to tell Views what can display in header, footer * and empty text in a view. @@ -58,7 +58,6 @@ class views_handler_area extends views_handler { '#type' => 'checkbox', '#title' => t('Display even if view has no result'), '#default_value' => isset($this->options['empty']) ? $this->options['empty'] : 0, - '#description' => t('If checked this area will be rended, even if the views has no results.'), ); } } @@ -74,6 +73,13 @@ class views_handler_area extends views_handler { function render($empty = FALSE) { return ''; } + + /** + * Area handlers shouldn't have groupby. + */ + function use_group_by() { + return FALSE; + } } /** diff --git a/sites/all/modules/views/handlers/views_handler_area_text.inc b/sites/all/modules/views/handlers/views_handler_area_text.inc index b76c69de1..425d0a901 100644 --- a/sites/all/modules/views/handlers/views_handler_area_text.inc +++ b/sites/all/modules/views/handlers/views_handler_area_text.inc @@ -1,11 +1,21 @@ <?php +/** +* @file +* Views area text handler. +*/ + +/** + * @ingroup views_area_handlers Views' area handlers +*/ + class views_handler_area_text extends views_handler_area { function option_definition() { $options = parent::option_definition(); - $options['content'] = array('default' => '', 'translatable' => TRUE); - $options['format'] = array('default' => filter_default_format()); + $options['content'] = array('default' => '', 'translatable' => TRUE, 'format_key' => 'format'); + $options['format'] = array('default' => NULL); + $options['tokenize'] = array('default' => FALSE); return $options; } @@ -16,9 +26,59 @@ class views_handler_area_text extends views_handler_area { '#type' => 'text_format', '#default_value' => $this->options['content'], '#rows' => 6, - '#format' => $this->options['format'], + '#format' => isset($this->options['format']) ? $this->options['format'] : filter_default_format(), '#wysiwyg' => FALSE, ); + + + $form['tokenize'] = array( + '#type' => 'checkbox', + '#title' => t('Use replacement tokens from the first row'), + '#default_value' => $this->options['tokenize'], + ); + + // Get a list of the available fields and arguments for token replacement. + $options = array(); + foreach ($this->view->display_handler->get_handlers('field') as $field => $handler) { + $options[t('Fields')]["[$field]"] = $handler->ui_name(); + } + + $count = 0; // This lets us prepare the key as we want it printed. + foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) { + $options[t('Arguments')]['%' . ++$count] = t('@argument title', array('@argument' => $handler->ui_name())); + $options[t('Arguments')]['!' . $count] = t('@argument input', array('@argument' => $handler->ui_name())); + } + + if (!empty($options)) { + $output = '<p>' . t('The following tokens are available. If you would like to have the characters %5B and %5D please use the html entity codes \'%5B\' or \'%5D\' or they will get replaced with empty space.)' . '</p>'); + foreach (array_keys($options) as $type) { + if (!empty($options[$type])) { + $items = array(); + foreach ($options[$type] as $key => $value) { + $items[] = $key . ' == ' . $value; + } + $output .= theme('item_list', + array( + 'items' => $items, + 'type' => $type + )); + } + } + + $form['token_help'] = array( + '#type' => 'fieldset', + '#title' => t('Replacement patterns'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#value' => $output, + '#id' => 'edit-options-token-help', + '#dependency' => array( + 'edit-options-tokenize' => array(1), + ), + '#prefix' => '<div>', + '#suffix' => '</div>', + ); + } } function options_submit(&$form, &$form_state) { @@ -28,8 +88,9 @@ class views_handler_area_text extends views_handler_area { } function render($empty = FALSE) { + $format = isset($this->options['format']) ? $this->options['format'] : filter_default_format(); if (!$empty || !empty($this->options['empty'])) { - return $this->render_textarea($this->options['content'], $this->options['format']); + return $this->render_textarea($this->options['content'], $format); } return ''; } @@ -38,22 +99,12 @@ class views_handler_area_text extends views_handler_area { * Render a text area, using the proper format. */ function render_textarea($value, $format) { - static $formats = array(); - - if (!array_key_exists($format, $formats)) { - if ($filter = filter_format_load($format)) { - $formats[$format] = $filter->name; - } - } - - if (!isset($formats[$format])) { - return; - } - if ($value) { + if ($this->options['tokenize']) { + $value = $this->view->style_plugin->tokenize_value($value, 0); + } return check_markup($value, $format, '', FALSE); } } } - diff --git a/sites/all/modules/views/handlers/views_handler_area_view.inc b/sites/all/modules/views/handlers/views_handler_area_view.inc index 51cc600ee..7e79ee081 100644 --- a/sites/all/modules/views/handlers/views_handler_area_view.inc +++ b/sites/all/modules/views/handlers/views_handler_area_view.inc @@ -20,22 +20,17 @@ class views_handler_area_view extends views_handler_area { */ function options_form(&$form, &$form_state) { parent::options_form($form, $form_state); - $views = views_get_all_views(); - foreach ($views as $view->name => $view) { - // Exclude the current view - if ($view->name != $this->view->name) { - foreach ($view->display as $display_id => $display) { - $options[$view->name . ':' . $display->id] = t('View: @view Display: @display', array('@view' => $view->name, '@display' => $display->id)); - } - } - } + $view_display = $this->view->name . ':' . $this->view->current_display; + + $options = array('' => t('-Select-')); + $options += views_get_views_as_options(FALSE, 'all', $view_display); $form['view_to_insert'] = array( '#type' => 'select', '#title' => t('View to insert'), '#default_value' => $this->options['view_to_insert'], '#description' => t('The view to insert into this area.'), - '#options' => $options + '#options' => $options, ); $form['inherit_arguments'] = array( @@ -51,29 +46,29 @@ class views_handler_area_view extends views_handler_area { */ function render($empty = FALSE) { if (!empty($this->options['view_to_insert'])) { - list($view_name, $view_display) = explode(':', $this->options['view_to_insert']); + list($view_name, $display_id) = explode(':', $this->options['view_to_insert']); $view = views_get_view($view_name); - if (empty($view)) { + if (empty($view) || !$view->access($display_id)) { return; } - $view->set_display($view_display); + $view->set_display($display_id); // Avoid recursion $view->parent_views += $this->view->parent_views; - $view->parent_views[] = "$view_name:$view_display"; + $view->parent_views[] = "$view_name:$display_id"; // Check if the view is part of the parent views of this view - $search = "$view_name:$view_display"; + $search = "$view_name:$display_id"; if (in_array($search, $this->view->parent_views)) { - drupal_set_message(t("Recursion detected in view @view display @display.", array('@view' => $view_name, '@display' => $view_display)), 'error'); + drupal_set_message(t("Recursion detected in view @view display @display.", array('@view' => $view_name, '@display' => $display_id)), 'error'); } else { if (!empty($this->options['inherit_arguments']) && !empty($this->view->args)) { - return $view->preview($view_display, $this->view->args); + return $view->preview($display_id, $this->view->args); } else { - return $view->preview($view_display); + return $view->preview($display_id); } } } diff --git a/sites/all/modules/views/handlers/views_handler_argument.inc b/sites/all/modules/views/handlers/views_handler_argument.inc index 56ee4cc2b..e58954298 100644 --- a/sites/all/modules/views/handlers/views_handler_argument.inc +++ b/sites/all/modules/views/handlers/views_handler_argument.inc @@ -31,6 +31,8 @@ */ class views_handler_argument extends views_handler { var $name_field = NULL; + var $validator = NULL; + /** * Constructor */ @@ -190,11 +192,19 @@ class views_handler_argument extends views_handler { function options_form(&$form, &$form_state) { parent::options_form($form, $form_state); + $argument_text = $this->view->display_handler->get_argument_text(); + $form['#pre_render'][] = 'views_ui_pre_render_move_argument_options'; + $form['description'] = array( + '#markup' => $argument_text['description'], + '#theme_wrappers' => array('container'), + '#attributes' => array('class' => array('description')), + ); + $form['no_argument'] = array( '#type' => 'fieldset', - '#title' => t('When the filter value is <em>NOT</em> in the URL'), + '#title' => $argument_text['filter value not present'], ); // Everything in the fieldset is floated, so the last element needs to // clear those floats. @@ -256,7 +266,7 @@ class views_handler_argument extends views_handler { $form['argument_present'] = array( '#type' => 'fieldset', - '#title' => t('When the filter value <em>IS</em> in the URL or a default is provided'), + '#title' => $argument_text['filter value present'], ); $form['title_enable'] = array( '#type' => 'checkbox', @@ -714,6 +724,20 @@ class views_handler_argument extends views_handler { } } + /** + * Process the summary arguments for display. + * + * For example, the validation plugin may want to alter an argument for use in + * the URL. + */ + function process_summary_arguments(&$args) { + if ($this->options['validate']['type'] != 'none') { + if (isset($this->validator) || $this->validator = $this->get_plugin('argument validator')) { + $this->validator->process_summary_arguments($args); + } + } + } + /** * Default action: summary. * @@ -972,7 +996,7 @@ class views_handler_argument extends views_handler { /** * Get the value of this argument. */ - function get_value($values, $field = NULL) { + function get_value() { // If we already processed this argument, we're done. if (isset($this->argument)) { return $this->argument; @@ -1022,7 +1046,7 @@ class views_handler_argument extends views_handler { $plugin = views_get_plugin('style', $name); if ($plugin) { - $plugin->init($this->view, $this->display, $options); + $plugin->init($this->view, $this->view->display_handler->display, $options); // Write which plugin to use. $output .= $indent . $prefix . "['summary']['$option'] = '$name';\n"; @@ -1115,7 +1139,13 @@ class views_handler_argument extends views_handler { $plugin = views_get_plugin($type, $name); if ($plugin) { - $plugin->init($this->view, $this, $options); + // Style plugins expects different parameters as argument related plugins. + if ($type == 'style') { + $plugin->init($this->view, $this->view->display_handler->display, $options); + } + else { + $plugin->init($this->view, $this, $options); + } return $plugin; } } diff --git a/sites/all/modules/views/handlers/views_handler_argument_date.inc b/sites/all/modules/views/handlers/views_handler_argument_date.inc index fa6dc8b9f..7ed4b03b0 100644 --- a/sites/all/modules/views/handlers/views_handler_argument_date.inc +++ b/sites/all/modules/views/handlers/views_handler_argument_date.inc @@ -63,6 +63,31 @@ class views_handler_argument_date extends views_handler_argument_formula { return parent::get_default_argument($raw); } + /** + * The date handler provides some default argument types, which aren't argument default plugins, + * so addapt the export mechanism. + */ + function export_plugin($indent, $prefix, $storage, $option, $definition, $parents) { + + // Only use a special behaviour for the special argument types, else just + // use the default behaviour. + if ($option == 'default_argument_type') { + $type = 'argument default'; + $option_name = 'default_argument_options'; + + $plugin = $this->get_plugin($type); + $name = $this->options[$option]; + if (in_array($name, array('date', 'node_created', 'node_changed'))) { + + // Write which plugin to use. + $output = $indent . $prefix . "['$option'] = '$name';\n"; + return $output; + } + } + return parent::export_plugin($indent, $prefix, $storage, $option, $definition, $parents); + } + + function get_sort_name() { return t('Date', array(), array('context' => 'Sort order')); } diff --git a/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc b/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc index c07bbb84a..1f5229e0a 100644 --- a/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc +++ b/sites/all/modules/views/handlers/views_handler_argument_many_to_one.inc @@ -32,7 +32,14 @@ class views_handler_argument_many_to_one extends views_handler_argument { $options['add_table'] = array('default' => FALSE); $options['require_value'] = array('default' => FALSE); - views_many_to_one_helper::option_definition($options); + if (isset($this->helper)) { + $this->helper->option_definition($options); + } + else { + $helper = new views_many_to_one_helper($this); + $helper->option_definition($options); + } + return $options; } @@ -43,7 +50,7 @@ class views_handler_argument_many_to_one extends views_handler_argument { if (!empty($this->definition['numeric'])) { $form['break_phrase'] = array( '#type' => 'checkbox', - '#title' => t('Allow multiple values.'), + '#title' => t('Allow multiple values'), '#description' => t('If selected, users can enter multiple values in the form of 1+2+3 (for OR) or 1,2,3 (for AND).'), '#default_value' => !empty($this->options['break_phrase']), '#fieldset' => 'more', @@ -52,7 +59,7 @@ class views_handler_argument_many_to_one extends views_handler_argument { $form['add_table'] = array( '#type' => 'checkbox', - '#title' => t('Allow multiple filter values to work together.'), + '#title' => t('Allow multiple filter values to work together'), '#description' => t('If selected, multiple instances of this filter can work together, as though multiple values were supplied to the same filter. This setting is not compatible with the "Reduce duplicates" setting.'), '#default_value' => !empty($this->options['add_table']), '#fieldset' => 'more', diff --git a/sites/all/modules/views/handlers/views_handler_argument_numeric.inc b/sites/all/modules/views/handlers/views_handler_argument_numeric.inc index ba7ba4bab..d8f813c78 100644 --- a/sites/all/modules/views/handlers/views_handler_argument_numeric.inc +++ b/sites/all/modules/views/handlers/views_handler_argument_numeric.inc @@ -26,7 +26,7 @@ class views_handler_argument_numeric extends views_handler_argument { // allow + for or, , for and $form['break_phrase'] = array( '#type' => 'checkbox', - '#title' => t('Allow multiple values.'), + '#title' => t('Allow multiple values'), '#description' => t('If selected, users can enter multiple values in the form of 1+2+3 (for OR) or 1,2,3 (for AND).'), '#default_value' => !empty($this->options['break_phrase']), '#fieldset' => 'more', diff --git a/sites/all/modules/views/handlers/views_handler_argument_string.inc b/sites/all/modules/views/handlers/views_handler_argument_string.inc index a45ae4e39..45bdbab7b 100644 --- a/sites/all/modules/views/handlers/views_handler_argument_string.inc +++ b/sites/all/modules/views/handlers/views_handler_argument_string.inc @@ -96,7 +96,7 @@ class views_handler_argument_string extends views_handler_argument { if (!empty($this->definition['many to one'])) { $form['add_table'] = array( '#type' => 'checkbox', - '#title' => t('Allow multiple filter values to work together.'), + '#title' => t('Allow multiple filter values to work together'), '#description' => t('If selected, multiple instances of this filter can work together, as though multiple values were supplied to the same filter. This setting is not compatible with the "Reduce duplicates" setting.'), '#default_value' => !empty($this->options['add_table']), '#fieldset' => 'more', @@ -113,7 +113,7 @@ class views_handler_argument_string extends views_handler_argument { // allow + for or, , for and $form['break_phrase'] = array( '#type' => 'checkbox', - '#title' => t('Allow multiple values.'), + '#title' => t('Allow multiple values'), '#description' => t('If selected, users can enter multiple values in the form of 1+2+3 (for OR) or 1,2,3 (for AND).'), '#default_value' => !empty($this->options['break_phrase']), '#fieldset' => 'more', @@ -238,39 +238,18 @@ class views_handler_argument_string extends views_handler_argument { return $value; } - function case_transform($string, $option) { - global $multibyte; - - switch ($this->options[$option]) { - default: - return $string; - case 'upper': - return drupal_strtoupper($string); - case 'lower': - return drupal_strtolower($string); - case 'ucfirst': - return drupal_strtoupper(drupal_substr($string, 0, 1)) . drupal_substr($string, 1); - case 'ucwords': - if ($multibyte == UNICODE_MULTIBYTE) { - return mb_convert_case($string, MB_CASE_TITLE); - } else { - return ucwords($string); - } - } - } - function get_sort_name() { return t('Alphabetical', array(), array('context' => 'Sort order')); } function title() { - $this->argument = $this->case_transform($this->argument, 'case'); + $this->argument = $this->case_transform($this->argument, $this->options['case']); if (!empty($this->options['transform_dash'])) { $this->argument = strtr($this->argument, '-', ' '); } if (!empty($this->options['break_phrase'])) { - views_break_phrase($this->argument, $this); + views_break_phrase_string($this->argument, $this); } else { $this->value = array($this->argument); @@ -296,7 +275,7 @@ class views_handler_argument_string extends views_handler_argument { } function summary_name($data) { - return $this->case_transform(parent::summary_name($data), 'case'); + return $this->case_transform(parent::summary_name($data), $this->options['case']); } } diff --git a/sites/all/modules/views/handlers/views_handler_field.inc b/sites/all/modules/views/handlers/views_handler_field.inc index bae45fc9a..7fa9d3ecf 100644 --- a/sites/all/modules/views/handlers/views_handler_field.inc +++ b/sites/all/modules/views/handlers/views_handler_field.inc @@ -21,6 +21,13 @@ class views_handler_field extends views_handler { var $field_alias = 'unknown'; var $aliases = array(); + /** + * @var array + * Stores additional fields which get's added to the query. + * The generated aliases are stored in $aliases. + */ + var $additional_fields = array(); + /** * Construct a new field handler. */ @@ -49,10 +56,6 @@ class views_handler_field extends views_handler { function init(&$view, &$options) { parent::init($view, $options); - - $this->options += array( - 'exclude' => FALSE, - ); } /** @@ -61,7 +64,8 @@ class views_handler_field extends views_handler { function query() { $this->ensure_my_table(); // Add the field. - $this->field_alias = $this->query->add_field($this->table_alias, $this->real_field); + $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); + $this->field_alias = $this->query->add_field($this->table_alias, $this->real_field, NULL, $params); $this->add_additional_fields(); } @@ -84,6 +88,14 @@ class views_handler_field extends views_handler { } $fields = $this->additional_fields; } + + $group_params = array(); + if ($this->options['group_type'] != 'group') { + $group_params = array( + 'function' => $this->options['group_type'], + ); + } + if (!empty($fields) && is_array($fields)) { foreach ($fields as $identifier => $info) { if (is_array($info)) { @@ -105,10 +117,11 @@ class views_handler_field extends views_handler { $params = $info['params']; } + $params += $group_params; $this->aliases[$identifier] = $this->query->add_field($table_alias, $info['field'], NULL, $params); } else { - $this->aliases[$info] = $this->query->add_field($this->table_alias, $info); + $this->aliases[$info] = $this->query->add_field($this->table_alias, $info, NULL, $group_params); } } } @@ -121,7 +134,8 @@ class views_handler_field extends views_handler { if (isset($this->field_alias)) { // Since fields should always have themselves already added, just // add a sort on the field. - $this->query->add_orderby(NULL, NULL, $order, $this->field_alias); + $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); + $this->query->add_orderby(NULL, NULL, $order, $this->field_alias, $params); } } @@ -145,7 +159,7 @@ class views_handler_field extends views_handler { /** * Return an HTML element based upon the field's element type. */ - function element_type($none_supported = FALSE, $default_empty = FALSE) { + function element_type($none_supported = FALSE, $default_empty = FALSE, $inline = FALSE) { if ($none_supported) { if ($this->options['element_type'] === '0') { return ''; @@ -159,6 +173,10 @@ class views_handler_field extends views_handler { return ''; } + if ($inline) { + return 'span'; + } + if (isset($this->definition['element type'])) { return $this->definition['element type']; } @@ -219,17 +237,17 @@ class views_handler_field extends views_handler { $elements = variable_get('views_field_rewrite_elements', array( '' => t('- Use default -'), '0' => t('- None -'), - 'div' => t('DIV'), - 'span' => t('SPAN'), - 'h1' => t('H1'), - 'h2' => t('H2'), - 'h3' => t('H3'), - 'h4' => t('H4'), - 'h5' => t('H5'), - 'h6' => t('H6'), - 'p' => t('P'), - 'strong' => t('STRONG'), - 'em' => t('EM'), + 'div' => 'DIV', + 'span' => 'SPAN', + 'h1' => 'H1', + 'h2' => 'H2', + 'h3' => 'H3', + 'h4' => 'H4', + 'h5' => 'H5', + 'h6' => 'H6', + 'p' => 'P', + 'strong' => 'STRONG', + 'em' => 'EM', )); } @@ -239,9 +257,13 @@ class views_handler_field extends views_handler { /** * Return the class of the field. */ - function element_classes() { - $classes = $this->tokenize_value($this->options['element_class']); - return drupal_clean_css_identifier($classes); + function element_classes($row_index = NULL) { + $classes = explode(' ', $this->options['element_class']); + foreach ($classes as &$class) { + $class = $this->tokenize_value($class, $row_index); + $class = views_clean_css_identifier($class); + } + return implode(' ', $classes); } /** @@ -250,23 +272,33 @@ class views_handler_field extends views_handler { * This function actually figures out which field was last and uses its * tokens so they will all be available. */ - function tokenize_value($value) { + function tokenize_value($value, $row_index = NULL) { if (strpos($value, '[') !== FALSE || strpos($value, '!') !== FALSE || strpos($value, '%') !== FALSE) { $fake_item = array( 'alter_text' => TRUE, 'text' => $value, ); - // Get tokens from the last field. - $last_field = end($this->view->field); - if (isset($last_field->last_tokens)) { - $tokens = $last_field->last_tokens; + // Use isset() because empty() will trigger on 0 and 0 is + // the first row. + if (isset($row_index) && isset($this->view->style_plugin->render_tokens[$row_index])) { + $tokens = $this->view->style_plugin->render_tokens[$row_index]; } else { - $tokens = $last_field->get_render_tokens($fake_item); + // Get tokens from the last field. + $last_field = end($this->view->field); + if (isset($last_field->last_tokens)) { + $tokens = $last_field->last_tokens; + } + else { + $tokens = $last_field->get_render_tokens($fake_item); + } } $value = strip_tags($this->render_altered($fake_item, $tokens)); + if (!empty($this->options['alter']['trim_whitespace'])) { + $value = trim($value); + } } return $value; @@ -275,21 +307,42 @@ class views_handler_field extends views_handler { /** * Return the class of the field's label. */ - function element_label_classes() { - return drupal_clean_css_identifier($this->options['element_label_class']); + function element_label_classes($row_index = NULL) { + $classes = explode(' ', $this->options['element_label_class']); + foreach ($classes as &$class) { + $class = $this->tokenize_value($class, $row_index); + $class = views_clean_css_identifier($class); + } + return implode(' ', $classes); } /** * Return the class of the field's wrapper. */ - function element_wrapper_classes() { + function element_wrapper_classes($row_index = NULL) { $classes = explode(' ', $this->options['element_wrapper_class']); - foreach ($classes as $key => $class) { - $classes[$key] = drupal_clean_css_identifier($class); + foreach ($classes as &$class) { + $class = $this->tokenize_value($class, $row_index); + $class = views_clean_css_identifier($class); } return implode(' ', $classes); } + /** + * Get the value that's supposed to be rendered. + * + * @param $values + * An object containing all retrieved values. + * @param $field + * Optional name of the field where the value is stored. + */ + function get_value($values, $field = NULL) { + $alias = isset($field) ? $this->aliases[$field] : $this->field_alias; + if (isset($values->{$alias})) { + return $values->{$alias}; + } + } + function option_definition() { $options = parent::option_definition(); @@ -304,18 +357,20 @@ class views_handler_field extends views_handler { 'absolute' => array('default' => '', 'translatable' => FALSE), 'external' => array('default' => '', 'translatable' => FALSE), 'replace_spaces' => array('default' => '', 'translatable' => FALSE), + 'path_case' => array('default' => 'none', 'translatable' => FALSE), + 'trim_whitespace' => array('default' => FALSE), 'alt' => array('default' => '', 'translatable' => TRUE), 'rel' => array('default' => ''), 'link_class' => array('default' => ''), 'prefix' => array('default' => '', 'translatable' => TRUE), 'suffix' => array('default' => '', 'translatable' => TRUE), 'target' => array('default' => '', 'translatable' => TRUE), - 'trim' => array('default' => FALSE), 'nl2br' => array('default' => FALSE), 'max_length' => array('default' => ''), 'word_boundary' => array('default' => TRUE), 'ellipsis' => array('default' => TRUE), 'strip_tags' => array('default' => FALSE), + 'trim' => array('default' => FALSE), 'preserve_tags' => array('default' => ''), 'html' => array('default' => FALSE), ), @@ -335,6 +390,7 @@ class views_handler_field extends views_handler { $options['empty'] = array('default' => '', 'translatable' => TRUE); $options['hide_empty'] = array('default' => FALSE); $options['empty_zero'] = array('default' => FALSE); + $options['hide_alter_empty'] = array('default' => TRUE); return $options; } @@ -358,6 +414,11 @@ class views_handler_field extends views_handler { $options[$class] = ''; } } + + if (empty($options['custom_label'])) { + $options['label'] = ''; + $options['element_label_colon'] = FALSE; + } } /** @@ -412,7 +473,7 @@ class views_handler_field extends views_handler { $form['element_type_enable'] = array( '#type' => 'checkbox', - '#title' => t('Wrap field in HTML'), + '#title' => t('Customize field HTML'), '#default_value' => !empty($this->options['element_type']) || (string) $this->options['element_type'] == '0' || !empty($this->options['element_class']) || (string) $this->options['element_class'] == '0', '#fieldset' => 'style_settings', ); @@ -439,18 +500,20 @@ class views_handler_field extends views_handler { ); $form['element_class'] = array( '#title' => t('CSS class'), - '#description' => t('Provide a CSS class to...'), + '#description' => t('You may use token substitutions from the rewriting section in this class.'), '#type' => 'textfield', '#default_value' => $this->options['element_class'], '#dependency' => array( 'edit-options-element-class-enable' => array(1), + 'edit-options-element-type-enable' => array(1), ), + '#dependency_count' => 2, '#fieldset' => 'style_settings', ); $form['element_label_type_enable'] = array( '#type' => 'checkbox', - '#title' => t('Wrap label in HTML'), + '#title' => t('Customize label HTML'), '#default_value' => !empty($this->options['element_label_type']) || (string) $this->options['element_label_type'] == '0' || !empty($this->options['element_label_class']) || (string) $this->options['element_label_class'] == '0', '#fieldset' => 'style_settings', ); @@ -476,18 +539,20 @@ class views_handler_field extends views_handler { ); $form['element_label_class'] = array( '#title' => t('CSS class'), - '#description' => t('Provide a CSS class to...'), + '#description' => t('You may use token substitutions from the rewriting section in this class.'), '#type' => 'textfield', '#default_value' => $this->options['element_label_class'], '#dependency' => array( 'edit-options-element-label-class-enable' => array(1), + 'edit-options-element-label-type-enable' => array(1), ), + '#dependency_count' => 2, '#fieldset' => 'style_settings', ); $form['element_wrapper_type_enable'] = array( '#type' => 'checkbox', - '#title' => t('Wrap field and label in HTML'), + '#title' => t('Customize field and label wrapper HTML'), '#default_value' => !empty($this->options['element_wrapper_type']) || (string) $this->options['element_wrapper_type'] == '0' || !empty($this->options['element_wrapper_class']) || (string) $this->options['element_wrapper_class'] == '0', '#fieldset' => 'style_settings', ); @@ -496,7 +561,7 @@ class views_handler_field extends views_handler { '#options' => $this->get_elements(FALSE), '#type' => 'select', '#default_value' => $this->options['element_wrapper_type'], - '#description' => t('Choose the HTML element to wrap around this field and label, e.g. H1, H2, etc.'), + '#description' => t('Choose the HTML element to wrap around this field and label, e.g. H1, H2, etc. This may not be used if the field and label are not rendered together, such as with a table.'), '#dependency' => array( 'edit-options-element-wrapper-type-enable' => array(1), ), @@ -514,12 +579,14 @@ class views_handler_field extends views_handler { ); $form['element_wrapper_class'] = array( '#title' => t('CSS class'), - '#description' => t('Provide a CSS class to...'), + '#description' => t('You may use token substitutions from the rewriting section in this class.'), '#type' => 'textfield', '#default_value' => $this->options['element_wrapper_class'], '#dependency' => array( 'edit-options-element-wrapper-class-enable' => array(1), + 'edit-options-element-wrapper-type-enable' => array(1), ), + '#dependency_count' => 2, '#fieldset' => 'style_settings', ); @@ -599,7 +666,22 @@ class views_handler_field extends views_handler { 'edit-options-alter-make-link' => array(1), ), ); - + $form['alter']['path_case'] = array( + '#type' => 'select', + '#title' => t('Transform the case'), + '#description' => t('When printing url paths, how to transform the case of the filter value.'), + '#dependency' => array( + 'edit-options-alter-make-link' => array(1), + ), + '#options' => array( + 'none' => t('No transform'), + 'upper' => t('Upper case'), + 'lower' => t('Lower case'), + 'ucfirst' => t('Capitalize first letter'), + 'ucwords' => t('Capitalize each word'), + ), + '#default_value' => $this->options['alter']['path_case'], + ); $form['alter']['link_class'] = array( '#title' => t('Link class'), '#type' => 'textfield', @@ -610,10 +692,10 @@ class views_handler_field extends views_handler { ), ); $form['alter']['alt'] = array( - '#title' => t('Alt text'), + '#title' => t('Title text'), '#type' => 'textfield', '#default_value' => $this->options['alter']['alt'], - '#description' => t('Text to place as "alt" text which most browsers display as a tooltip when hovering over the link.'), + '#description' => t('Text to place as "title" text which most browsers display as a tooltip when hovering over the link.'), '#dependency' => array( 'edit-options-alter-make-link' => array(1), ), @@ -698,9 +780,11 @@ If you would like to have the characters %5B and %5D please use the html entity // the parent in situations like this, so we need a second div to // make this work. $form['alter']['help'] = array( - '#type' => 'hidden', - '#id' => 'views-tokens-help', - '#prefix' => '<div><fieldset id="views-tokens-help"><legend>' . t('Replacement patterns') . '</legend>' . $output . '</fieldset></div>', + '#type' => 'fieldset', + '#title' => t('Replacement patterns'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#value' => $output, '#dependency' => array( 'edit-options-alter-make-link' => array(1), 'edit-options-alter-alter-text' => array(1), @@ -760,6 +844,12 @@ If you would like to have the characters %5B and %5D please use the html entity '#description' => t('If checked, all HTML tags will be stripped.'), '#default_value' => $this->options['alter']['strip_tags'], ); + $form['alter']['trim_whitespace'] = array( + '#type' => 'checkbox', + '#title' => t('Remove whitespace'), + '#description' => t('If checked, all whitespaces at the beginning and the end of the output will be removed.'), + '#default_value' => $this->options['alter']['trim_whitespace'], + ); $form['alter']['preserve_tags'] = array( '#type' => 'textfield', '#title' => t('Preserve certain tags'), @@ -787,10 +877,10 @@ If you would like to have the characters %5B and %5D please use the html entity ); $form['empty'] = array( - '#type' => 'textfield', + '#type' => 'textarea', '#title' => t('No results text'), '#default_value' => $this->options['empty'], - '#description' => t('Provide text to display if this field returns no results.'), + '#description' => t('Provide text to display if this field returns no results. You may include HTML. You may enter data from this view as per the "Replacement patterns" in the "Rewrite Results" section below.'), '#fieldset' => 'empty_field_behavior', ); @@ -806,7 +896,15 @@ If you would like to have the characters %5B and %5D please use the html entity '#type' => 'checkbox', '#title' => t('Hide if empty'), '#default_value' => $this->options['hide_empty'], - '#description' => t('Enable to hide this field if it is empty. Note that the field label may still be displayed. Check style or row style settings to hide labels for empty fields.'), + '#description' => t('Enable to hide this field if it is empty. Note that the field label or rewritten output may still be displayed. To hide labels, check the style or row style settings for empty fields. To hide rewritten content, check the "Hide rewriting if empty" checkbox.'), + '#fieldset' => 'empty_field_behavior', + ); + + $form['hide_alter_empty'] = array( + '#type' => 'checkbox', + '#title' => t('Hide rewriting if empty'), + '#default_value' => $this->options['hide_alter_empty'], + '#description' => t('Do not display rewritten content if this field is empty.'), '#fieldset' => 'empty_field_behavior', ); } @@ -851,7 +949,11 @@ If you would like to have the characters %5B and %5D please use the html entity $raw_items = $this->get_items($values); } else { - $this->last_render = $value = $this->render($values); + $value = $this->render($values); + if (is_array($value)) { + $value = drupal_render($value); + } + $this->last_render = $value; $this->original_value = $value; } @@ -860,7 +962,11 @@ If you would like to have the characters %5B and %5D please use the html entity if (method_exists($this, 'render_item')) { $items = array(); foreach ($raw_items as $count => $item) { - $this->last_render = $this->render_item($count, $item); + $value = $this->render_item($count, $item); + if (is_array($value)) { + $value = drupal_render($value); + } + $this->last_render = $value; $this->original_value = $this->last_render; $alter = $item + $this->options['alter']; @@ -873,6 +979,9 @@ If you would like to have the characters %5B and %5D please use the html entity $value = $this->render_text($this->options['alter']); } + if (is_array($value)) { + $value = drupal_render($value); + } // This happens here so that render_as_link can get the unaltered value of // this field as a token rather than the altered value. $this->last_render = $value; @@ -897,14 +1006,17 @@ If you would like to have the characters %5B and %5D please use the html entity * each item to be handled individually. */ function render_text($alter) { - $value = trim($this->last_render); + $value = $this->last_render; + if (!empty($this->options['alter']['trim_whitespace'])) { + $value = trim($value); + } if (!empty($alter['alter_text']) && $alter['text'] !== '') { $tokens = $this->get_render_tokens($alter); $value = $this->render_altered($alter, $tokens); } - if ($this->options['hide_empty'] && empty($value) && ($value !== 0 || $this->options['empty_zero'])) { + if ((($this->options['hide_empty'] && empty($value)) || ($this->options['hide_alter_empty'] && empty($this->original_value))) && ($value !== 0 || $this->options['empty_zero'])) { return ''; } @@ -974,12 +1086,16 @@ If you would like to have the characters %5B and %5D please use the html entity // sanitize it ourselves. $path = $alter['path']; - // html_entity_decode removes <front>, so check whether its different to front. + // strip_tags() removes <front>, so check whether its different to front. if ($path != '<front>') { // Use strip tags as there should never be HTML in the path. // However, we need to preserve special characters like " that // were removed by check_plain(). - $path = strip_tags(html_entity_decode(strtr($path, $tokens))); + $path = strip_tags(decode_entities(strtr($path, $tokens))); + + if (!empty($alter['path_case']) && $alter['path_case'] != 'none') { + $path = $this->case_transform($path, $this->options['alter']['path_case']); + } if (!empty($alter['replace_spaces'])) { $path = str_replace(' ', '-', $path); @@ -997,7 +1113,7 @@ If you would like to have the characters %5B and %5D please use the html entity // If the path is empty do not build a link around the given text and return // it as is. // http://www.example.com URLs will not have a $url['path'], so check host as well. - if (empty($url['path']) && empty($url['host'])) { + if (empty($url['path']) && empty($url['host']) && empty($url['fragment'])) { return $text; } @@ -1029,7 +1145,7 @@ If you would like to have the characters %5B and %5D please use the html entity $alt = strtr($alter['alt'], $tokens); // Set the title attribute of the link only if it improves accessibility if ($alt && $alt != $text) { - $options['attributes']['title'] = html_entity_decode($alt, ENT_QUOTES); + $options['attributes']['title'] = decode_entities($alt); } $class = strtr($alter['link_class'], $tokens); @@ -1115,7 +1231,7 @@ If you would like to have the characters %5B and %5D please use the html entity // Use strip tags as there should never be HTML in the path. // However, we need to preserve special characters like " that // were removed by check_plain(). - $tokens['!' . $count] = isset($this->view->args[$count - 1]) ? strip_tags(html_entity_decode($this->view->args[$count - 1])) : ''; + $tokens['!' . $count] = isset($this->view->args[$count - 1]) ? strip_tags(decode_entities($this->view->args[$count - 1])) : ''; } // Now add replacements for our fields. @@ -1126,7 +1242,9 @@ If you would like to have the characters %5B and %5D please use the html entity else { $tokens["[$field]"] = ''; } - $this->add_self_tokens($tokens, $item); + if (!empty($item)) { + $this->add_self_tokens($tokens, $item); + } // We only use fields up to (and including) this one. if ($field == $this->options['id']) { @@ -1134,6 +1252,8 @@ If you would like to have the characters %5B and %5D please use the html entity } } + // Store the tokens for the row so we can reference them later if necessary. + $this->view->style_plugin->render_tokens[$this->view->row_index] = $tokens; $this->last_tokens = $tokens; return $tokens; } @@ -1196,6 +1316,10 @@ If you would like to have the characters %5B and %5D please use the html entity return $themes; } + + function ui_name($short = FALSE) { + return $this->get_field(parent::ui_name($short)); + } } /** diff --git a/sites/all/modules/views/handlers/views_handler_field_boolean.inc b/sites/all/modules/views/handlers/views_handler_field_boolean.inc index aec5243be..5b50af1af 100644 --- a/sites/all/modules/views/handlers/views_handler_field_boolean.inc +++ b/sites/all/modules/views/handlers/views_handler_field_boolean.inc @@ -3,14 +3,14 @@ /** * A handler to provide proper displays for booleans. * - * Allows for display of true/false, yes/no, on/off. + * Allows for display of true/false, yes/no, on/off, enabled/disabled. * * Definition terms: - * - output formats: An array where the first entry is displayed on boolean false - * and the second is displayed on boolean true. An example for sticky is: + * - output formats: An array where the first entry is displayed on boolean true + * and the second is displayed on boolean false. An example for sticky is: * @code * 'output formats' => array( - * 'sticky' => array('', t('Sticky')), + * 'sticky' => array(t('Sticky'), ''), * ), * @endcode * @@ -32,6 +32,7 @@ class views_handler_field_boolean extends views_handler_field { 'yes-no' => array(t('Yes'), t('No')), 'true-false' => array(t('True'), t('False')), 'on-off' => array(t('On'), t('Off')), + 'enabled-disabled' => array(t('Enabled'), t('Disabled')), ); $output_formats = isset($this->definition['output formats']) ? $this->definition['output formats'] : array(); $this->formats = array_merge($default_formats, $output_formats); diff --git a/sites/all/modules/views/handlers/views_handler_field_custom.inc b/sites/all/modules/views/handlers/views_handler_field_custom.inc index 93925f4af..92b5d7cc9 100644 --- a/sites/all/modules/views/handlers/views_handler_field_custom.inc +++ b/sites/all/modules/views/handlers/views_handler_field_custom.inc @@ -15,6 +15,7 @@ class views_handler_field_custom extends views_handler_field { // Override the alter text option to always alter the text. $options['alter']['contains']['alter_text'] = array('default' => TRUE); + $options['hide_alter_empty'] = array('default' => FALSE); return $options; } @@ -31,8 +32,8 @@ class views_handler_field_custom extends views_handler_field { } function render($values) { - // Nothing to render. - return ''; + // Return the text, so the code never thinks the value is empty. + return $this->options['alter']['text']; } } @@ -46,4 +47,4 @@ function views_handler_field_custom_pre_render_move_text($form) { unset($form['alter']['help']); return $form; -} \ No newline at end of file +} diff --git a/sites/all/modules/views/handlers/views_handler_field_date.inc b/sites/all/modules/views/handlers/views_handler_field_date.inc index 30e52e627..b122b667c 100644 --- a/sites/all/modules/views/handlers/views_handler_field_date.inc +++ b/sites/all/modules/views/handlers/views_handler_field_date.inc @@ -40,9 +40,9 @@ class views_handler_field_date extends views_handler_field { $form['custom_date_format'] = array( '#type' => 'textfield', '#title' => t('Custom date format'), - '#description' => t('If "Custom", see <a href="http://us.php.net/manual/en/function.date.php" target="_blank">the PHP docs</a> for date formats. If "Time ago" this is the the number of different units to display, which defaults to two.'), + '#description' => t('If "Custom", see <a href="http://us.php.net/manual/en/function.date.php" target="_blank">the PHP docs</a> for date formats. Otherwise, enter the number of different time units to display, which defaults to 2.'), '#default_value' => isset($this->options['custom_date_format']) ? $this->options['custom_date_format'] : '', - '#dependency' => array('edit-options-date-format' => array('custom', 'raw time ago', 'time ago', 'raw time span', 'time span', 'raw time span', 'inverse time span', 'time span')), + '#dependency' => array('edit-options-date-format' => array('custom', 'raw time ago', 'time ago', 'raw time hence', 'time hence', 'raw time span', 'time span', 'raw time span', 'inverse time span', 'time span')), ); parent::options_form($form, $form_state); @@ -51,7 +51,7 @@ class views_handler_field_date extends views_handler_field { function render($values) { $value = $this->get_value($values); $format = $this->options['date_format']; - if (in_array($format, array('custom', 'raw time ago', 'time ago', 'raw time span', 'time span', 'raw time span', 'inverse time span', 'time span'))) { + if (in_array($format, array('custom', 'raw time ago', 'time ago', 'raw time hence', 'time hence', 'raw time span', 'time span', 'raw time span', 'inverse time span', 'time span'))) { $custom_format = $this->options['custom_date_format']; } diff --git a/sites/all/modules/views/handlers/views_handler_field_entity.inc b/sites/all/modules/views/handlers/views_handler_field_entity.inc new file mode 100644 index 000000000..259a45fc3 --- /dev/null +++ b/sites/all/modules/views/handlers/views_handler_field_entity.inc @@ -0,0 +1,82 @@ +<?php +/** + * A handler to display data from entity objects. + * + * Fields based upon this handler work with all query-backends if the tables + * used by the query backend have an 'entity type' specified. In order to + * make fields based upon this handler automatically available to all compatible + * query backends, the views field can be defined in the table + * @code views_entity_{ENTITY_TYPE} @endcode. + * + * @ingroup views_field_handlers + */ +class views_handler_field_entity extends views_handler_field { + + /** + * Stores the entity type which is loaded by this field. + */ + public $entity_type; + + /** + * Stores all entites which are in the result. + */ + public $entities; + + /** + * The base field of the entity type assosiated with this field. + */ + public $base_field; + + /** + * Initialize the entity type. + */ + public function init(&$view, &$options) { + parent::init($view, $options); + + // Initialize the entity-type used. + $table_data = views_fetch_data($this->table); + $this->entity_type = $table_data['table']['entity type']; + } + + /** + * Overriden to add the field for the entity id. + */ + function query() { + $this->table_alias = $base_table = $this->view->base_table; + $this->base_field = $this->view->base_field; + + if (!empty($this->relationship)) { + foreach ($this->view->relationship as $relationship) { + if ($relationship->alias == $this->relationship) { + $base_table = $relationship->definition['base']; + $this->table_alias = $relationship->alias; + + $table_data = views_fetch_data($base_table); + $this->base_field = empty($relationship->definition['base field']) ? $table_data['table']['base']['field'] : $relationship->definition['base field']; + } + } + } + + // Add the field if the query back-end implements an add_field() method, + // just like the default back-end. + if (method_exists($this->query, 'add_field')) { + $this->field_alias = $this->query->add_field($this->table_alias, $this->base_field, ''); + } + } + + /** + * Load the entities for all rows that are about to be displayed. + */ + function pre_render(&$values) { + if (!empty($values)) { + list($this->entity_type, $this->entities) = $this->query->get_result_entities($values, !empty($this->relationship) ? $this->relationship : NULL, $this->field_alias); + } + } + + /** + * Overridden to return the entity object. + */ + function get_value($values, $field = NULL) { + return isset($this->entities[$this->view->row_index]) ? $this->entities[$this->view->row_index] : FALSE; + } +} diff --git a/sites/all/modules/views/handlers/views_handler_field_group_by_numeric.inc b/sites/all/modules/views/handlers/views_handler_field_group_by_numeric.inc deleted file mode 100644 index 5f3309544..000000000 --- a/sites/all/modules/views/handlers/views_handler_field_group_by_numeric.inc +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/** - * Handler for GROUP BY on simple numeric fields. - */ -class views_handler_field_group_by_numeric extends views_handler_field_numeric { - function init(&$view, &$options) { - parent::init($view, $options); - - // Initialize the original handler. - $this->handler = views_get_handler($options['table'], $options['field'], 'field'); - $this->handler->init($view, $options); - } - - /** - * Called to add the field to a query. - */ - function query() { - $this->ensure_my_table(); - // Add the field, taking care of any aggregation that may affect it. - $params = array( - 'function' => $this->options['group_type'], - ); - - $this->field_alias = $this->query->add_field($this->table_alias, $this->real_field, NULL, $params); - $this->add_additional_fields(); - } - - /** - * Called to determine what to tell the clicksorter. - */ - function click_sort($order) { - $params = array( - 'function' => $this->options['group_type'], - ); - - $this->query->add_orderby($this->table, $this->field, $order, $this->field_alias, $params); - } - - function ui_name($short = FALSE) { - return $this->get_field(parent::ui_name($short)); - } -} diff --git a/sites/all/modules/views/handlers/views_handler_field_markup.inc b/sites/all/modules/views/handlers/views_handler_field_markup.inc index 791f24f77..10444d5ab 100644 --- a/sites/all/modules/views/handlers/views_handler_field_markup.inc +++ b/sites/all/modules/views/handlers/views_handler_field_markup.inc @@ -28,15 +28,23 @@ class views_handler_field_markup extends views_handler_field { function render($values) { $value = $this->get_value($values); - $format = $this->get_value($values, 'format'); - $format = is_numeric($this->format) ? $this->format : $format; + if (is_array($this->format)) { + $format = $this->get_value($values, 'format'); + } + else { + $format = $this->format; + } if ($value) { $value = str_replace('<!--break-->', '', $value); return check_markup($value, $format, ''); } } - function element_type($none_supported = FALSE, $default_empty = FALSE) { + function element_type($none_supported = FALSE, $default_empty = FALSE, $inline = FALSE) { + if ($inline) { + return 'span'; + } + if (isset($this->definition['element type'])) { return $this->definition['element type']; } diff --git a/sites/all/modules/views/handlers/views_handler_field_math.inc b/sites/all/modules/views/handlers/views_handler_field_math.inc index ffb044aa9..9df998772 100644 --- a/sites/all/modules/views/handlers/views_handler_field_math.inc +++ b/sites/all/modules/views/handlers/views_handler_field_math.inc @@ -31,13 +31,13 @@ class views_handler_field_math extends views_handler_field_numeric { // Then move the existing help: $form['expression_help'] = $form['alter']['help']; unset($form['expression_help']['#dependency']); - unset($form['expression_help']['#process']); unset($form['alter']['help']); } function render($values) { ctools_include('math-expr'); - $value = strtr($this->options['expression'], $this->get_render_tokens(array())); + $tokens = array_map('floatval', $this->get_render_tokens(array())); + $value = strtr($this->options['expression'], $tokens); $expressions = explode(';', $value); $math = new ctools_math_expr; foreach ($expressions as $expression) { @@ -66,6 +66,11 @@ class views_handler_field_math extends views_handler_field_numeric { return ''; } + // Should we format as a plural. + if (!empty($this->options['format_plural']) && ($value != 0 || !$this->options['empty_zero'])) { + $value = format_plural($value, $this->options['format_plural_singular'], $this->options['format_plural_plural']); + } + return $this->sanitize_value($this->options['prefix'] . $value . $this->options['suffix']); } diff --git a/sites/all/modules/views/handlers/views_handler_field_numeric.inc b/sites/all/modules/views/handlers/views_handler_field_numeric.inc index 5a990003e..5f7f45031 100644 --- a/sites/all/modules/views/handlers/views_handler_field_numeric.inc +++ b/sites/all/modules/views/handlers/views_handler_field_numeric.inc @@ -50,8 +50,15 @@ class views_handler_field_numeric extends views_handler_field { ); } $form['separator'] = array( - '#type' => 'textfield', - '#title' => t('Thousands separator'), + '#type' => 'select', + '#title' => t('Thousands marker'), + '#options' => array( + '' => t('- None -'), + ',' => t('Comma'), + ' ' => t('Space'), + '.' => t('Decimal'), + '\'' => t('Apostrophe'), + ), '#default_value' => $this->options['separator'], '#description' => t('What single character to use as the thousands separator.'), '#size' => 2, @@ -117,6 +124,8 @@ class views_handler_field_numeric extends views_handler_field { $value = format_plural($value, $this->options['format_plural_singular'], $this->options['format_plural_plural']); } - return $this->sanitize_value($this->options['prefix'] . $value . $this->options['suffix']); + return $this->sanitize_value($this->options['prefix'], 'xss') + . $this->sanitize_value($value) + . $this->sanitize_value($this->options['suffix'], 'xss'); } } diff --git a/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc b/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc index 9cc719c5e..98ac30ffa 100644 --- a/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc +++ b/sites/all/modules/views/handlers/views_handler_field_prerender_list.inc @@ -98,7 +98,8 @@ class views_handler_field_prerender_list extends views_handler_field { * should also be in this array. */ function get_items($values) { - $field = $this->get_value($values); + // Only the parent get_value returns a single field. + $field = parent::get_value($values); if (!empty($this->items[$field])) { return $this->items[$field]; } @@ -106,6 +107,28 @@ class views_handler_field_prerender_list extends views_handler_field { return array(); } + /** + * Get the value that's supposed to be rendered. + * + * @param $values + * An object containing all retrieved values. + * @param $field + * Optional name of the field where the value is stored. + * @param $raw + * Use the raw data and not the data defined in pre_render + */ + function get_value($values, $field = NULL, $raw = FALSE) { + if ($raw) { + return parent::get_value($values, $field); + } + $item = $this->get_items($values); + $item = (array) $item; + if (isset($field) && isset($item[$field])) { + return $item[$field]; + } + return $item; + } + /** * Determine if advanced rendering is allowed. * diff --git a/sites/all/modules/views/handlers/views_handler_field_serialized.inc b/sites/all/modules/views/handlers/views_handler_field_serialized.inc index e5daa6ede..d53c1477d 100644 --- a/sites/all/modules/views/handlers/views_handler_field_serialized.inc +++ b/sites/all/modules/views/handlers/views_handler_field_serialized.inc @@ -52,4 +52,4 @@ class views_handler_field_serialized extends views_handler_field { return $value; } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/handlers/views_handler_filter.inc b/sites/all/modules/views/handlers/views_handler_filter.inc index 1a1190ddd..541e5df3d 100644 --- a/sites/all/modules/views/handlers/views_handler_filter.inc +++ b/sites/all/modules/views/handlers/views_handler_filter.inc @@ -47,12 +47,6 @@ class views_handler_filter extends views_handler { $this->options['expose']['operator_id'] = $options['expose']['operator_id'] = $options['expose']['operator']; } - // Compatibility: Set use_operator to true if the old way of using - // the operator is set and use_operator is NULL (was never set). - if (!empty($options['exposed']) && !empty($options['expose']['operator_id']) && !isset($options['expose']['use_operator'])) { - $this->options['expose']['use_operator'] = TRUE; - } - // If there are relationships in the view, allow empty should be true // so that we can do IS NULL checks on items. Not all filters respect // allow empty, but string and numeric do and that covers enough. @@ -107,8 +101,14 @@ class views_handler_filter extends views_handler { if ($this->can_expose()) { $this->show_expose_button($form, $form_state); } + $form['clear_markup_start'] = array( + '#markup' => '<div class="clearfix">', + ); $this->show_operator_form($form, $form_state); $this->show_value_form($form, $form_state); + $form['clear_markup_end'] = array( + '#markup' => '</div>', + ); if ($this->can_expose()) { $this->show_expose_form($form, $form_state); } @@ -142,7 +142,7 @@ class views_handler_filter extends views_handler { */ function show_operator_form(&$form, &$form_state) { $this->operator_form($form, $form_state); - $form['operator']['#prefix'] = '<div class="views-left-30">'; + $form['operator']['#prefix'] = '<div class="views-group-box views-left-30">'; $form['operator']['#suffix'] = '</div>'; } @@ -187,7 +187,7 @@ class views_handler_filter extends views_handler { function show_value_form(&$form, &$form_state) { $this->value_form($form, $form_state); if (empty($this->no_operator)) { - $form['value']['#prefix'] = '<div class="views-right-70">' . (isset($form['value']['#prefix']) ? $form['value']['#prefix'] : ''); + $form['value']['#prefix'] = '<div class="views-group-box views-right-70">' . (isset($form['value']['#prefix']) ? $form['value']['#prefix'] : ''); $form['value']['#suffix'] = (isset($form['value']['#suffix']) ? $form['value']['#suffix'] : '') . '</div>'; } } @@ -229,7 +229,7 @@ class views_handler_filter extends views_handler { '#attributes' => array('class' => array('js-only')), ); $form['expose_button']['checkbox']['checkbox'] = array( - '#title' => t('Expose this filter to visitors, to allow them to change it.'), + '#title' => t('Expose this filter to visitors, to allow them to change it'), '#type' => 'checkbox', ); @@ -276,6 +276,12 @@ class views_handler_filter extends views_handler { '#default_value' => $this->options['expose']['required'], ); } + else { + $form['expose']['required'] = array( + '#type' => 'value', + '#value' => TRUE, + ); + } $form['expose']['label'] = array( '#type' => 'textfield', '#default_value' => $this->options['expose']['label'], @@ -285,9 +291,9 @@ class views_handler_filter extends views_handler { if (!empty($form['operator']['#type'])) { // Increase the width of the left (operator) column. - $form['operator']['#prefix'] = '<div class="views-left-40">'; + $form['operator']['#prefix'] = '<div class="views-group-box views-left-40">'; $form['operator']['#suffix'] = '</div>'; - $form['value']['#prefix'] = '<div class="views-right-60">'; + $form['value']['#prefix'] = '<div class="views-group-box views-right-60">'; $form['value']['#suffix'] = '</div>'; $form['expose']['use_operator'] = array( @@ -365,7 +371,7 @@ class views_handler_filter extends views_handler { 'use_operator' => FALSE, 'operator' => $this->options['id'] . '_op', 'identifier' => $this->options['id'], - 'label' => $this->ui_name(), + 'label' => $this->definition['title'], 'remember' => FALSE, 'multiple' => FALSE, 'required' => FALSE, @@ -454,6 +460,10 @@ class views_handler_filter extends views_handler { $form['#options'] = array('All' => $any_label) + $form['#options']; $form['#default_value'] = 'All'; } + + if (!empty($this->options['expose']['required'])) { + $form['#required'] = TRUE; + } } /** diff --git a/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc b/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc index 6c2266c18..5f8013e27 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc @@ -8,6 +8,7 @@ * - true-false: True/false (this is the default) * - yes-no: Yes/No * - on-off: On/Off + * - enabled-disabled: Enabled/Disabled * - accept null: Treat a NULL value as false. */ class views_handler_filter_boolean_operator extends views_handler_filter { @@ -53,6 +54,9 @@ class views_handler_filter_boolean_operator extends views_handler_filter { if ($this->definition['type'] == 'on-off') { $this->value_options = array(1 => t('On'), 0 => t('Off')); } + if ($this->definition['type'] == 'enabled-disabled') { + $this->value_options = array(1 => t('Enabled'), 0 => t('Disabled')); + } } // Provide a fallback if the above didn't set anything. diff --git a/sites/all/modules/views/handlers/views_handler_filter_date.inc b/sites/all/modules/views/handlers/views_handler_filter_date.inc index 0f390a318..e95bc6230 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_date.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_date.inc @@ -34,7 +34,7 @@ class views_handler_filter_date extends views_handler_filter_numeric { function options_validate(&$form, &$form_state) { parent::options_validate($form, $form_state); - if (!empty($form_state['values']['options']['expose']['required'])) { + if (!empty($this->options['exposed']) && empty($form_state['values']['options']['expose']['required'])) { // Who cares what the value is if it's exposed and non-required. return; } diff --git a/sites/all/modules/views/handlers/views_handler_filter_equality.inc b/sites/all/modules/views/handlers/views_handler_filter_equality.inc index d0a9f0702..a212eb6be 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_equality.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_equality.inc @@ -34,4 +34,4 @@ class views_handler_filter_equality extends views_handler_filter { } } } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc b/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc index 4b56075a2..60e5bced8 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_group_by_numeric.inc @@ -14,14 +14,13 @@ class views_handler_filter_group_by_numeric extends views_handler_filter_numeric } } function op_between($field) { - $placeholder = $this->placeholder(); + $placeholder_min = $this->placeholder(); + $placeholder_max = $this->placeholder(); if ($this->operator == 'between') { - $this->query->add_having_expression($this->options['group'], "$field >= $placeholder", array($placeholder => $this->value['min'])); - $this->query->add_having_expression($this->options['group'], "$field <= $placeholder", array($placeholder => $this->value['max'])); + $this->query->add_having_expression($this->options['group'], "$field >= $placeholder_min", array($placeholder_min => $this->value['min'])); + $this->query->add_having_expression($this->options['group'], "$field <= $placeholder_max", array($placeholder_max => $this->value['max'])); } else { - $placeholder_min = $placeholder; - $placeholder_max = $this->placeholder(); $this->query->add_having_expression($this->options['group'], "$field <= $placeholder_min OR $field >= $placeholder_max", array($placeholder_min => $this->value['min'], $placeholder_max => $this->value['max'])); } } @@ -48,4 +47,3 @@ class views_handler_filter_group_by_numeric extends views_handler_filter_numeric function can_group() { return FALSE; } } - diff --git a/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc b/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc index 9be0c91c4..0426a7c3a 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_in_operator.inc @@ -3,7 +3,6 @@ * Simple filter to handle matching of multiple options selectable via checkboxes * * Definition items: - * - numeric: If set to true, this item will use numeric operators instead of string. * - options callback: The function to call in order to generate the value options. If omitted, the options 'Yes' and 'No' will be used. * - options arguments: An array of arguments to pass to the options callback. * @@ -11,6 +10,12 @@ class views_handler_filter_in_operator extends views_handler_filter { var $value_form_type = 'checkboxes'; + /** + * @var array + * Stores all operations which are available on the form. + */ + var $value_options = NULL; + function construct() { parent::construct(); $this->value_title = t('Options'); @@ -24,6 +29,9 @@ class views_handler_filter_in_operator extends views_handler_filter { * * This can use a guard to be used to reduce database hits as much as * possible. + * + * @return + * Return the stored values in $this->value_options if someone expects it. */ function get_value_options() { if (isset($this->value_options)) { @@ -41,6 +49,8 @@ class views_handler_filter_in_operator extends views_handler_filter { else { $this->value_options = array(t('Yes'), t('No')); } + + return $this->value_options; } function expose_options() { @@ -305,18 +315,25 @@ class views_handler_filter_in_operator extends views_handler_filter { $keys = $this->value; $value = array_shift($keys); - $values = check_plain($this->value_options[$value]); + if (isset($this->value_options[$value])) { + $values = check_plain($this->value_options[$value]); + } + else { + $values = ''; + } } else { foreach ($this->value as $value) { if ($values !== '') { $values .= ', '; } - if (strlen($values) > 8) { + if (drupal_strlen($values) > 8) { $values .= '...'; break; } - $values .= check_plain($this->value_options[$value]); + if (isset($this->value_options[$value])) { + $values .= check_plain($this->value_options[$value]); + } } } } @@ -353,4 +370,47 @@ class views_handler_filter_in_operator extends views_handler_filter { $this->query->add_where($this->options['group'], "$this->table_alias.$this->real_field", NULL, $operator); } + + function validate() { + $this->get_value_options(); + $errors = array(); + + // If the operator is an operator which doesn't require a value, there is + // no need for additional validation. + if (in_array($this->operator, $this->operator_values(0))) { + return array(); + } + + if (!in_array($this->operator, $this->operator_values(1))) { + $errors[] = t('The operator is invalid on filter: @filter.', array('@filter' => $this->ui_name(TRUE))); + } + if (is_array($this->value)) { + if (!isset($this->value_options)) { + // Don't validate if there are none value options provided, for example for special handlers. + return $errors; + } + if ($this->options['exposed'] && !$this->options['expose']['required'] && empty($this->value)) { + // Don't validate if the field is exposed and no default value is provided. + return $errors; + } + + // Some filter_in_operator usage uses optgroups forms, so flatten it. + $flat_options = form_options_flatten($this->value_options, TRUE); + + // Remove every element which is not known. + foreach ($this->value as $value) { + if (!isset($flat_options[$value])) { + unset($this->value[$value]); + } + } + // Choose different kind of ouput for 0, a single and multiple values. + if (count($this->value) == 0) { + $errors[] = t('No valid values found on filter: @filter.', array('@filter' => $this->ui_name(TRUE))); + } + } + elseif (!empty($this->value) && ($this->operator == 'in' || $this->operator == 'not in')) { + $errors[] = t('The value @value is not an array for @operator on filter: @filter', array('@value' => views_var_export($this->value), '@operator' => $this->operator, '@filter' => $this->ui_name(TRUE))); + } + return $errors; + } } diff --git a/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc b/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc index 9fa4ef76a..58fb0d0b0 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_many_to_one.inc @@ -20,7 +20,13 @@ class views_handler_filter_many_to_one extends views_handler_filter_in_operator $options['operator']['default'] = 'or'; $options['value']['default'] = array(); - views_many_to_one_helper::option_definition($options); + if (isset($this->helper)) { + $this->helper->option_definition($options); + } + else { + $helper = new views_many_to_one_helper($this); + $helper->option_definition($options); + } return $options; } diff --git a/sites/all/modules/views/handlers/views_handler_filter_numeric.inc b/sites/all/modules/views/handlers/views_handler_filter_numeric.inc index e28116c1b..767654b86 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_numeric.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_numeric.inc @@ -89,6 +89,18 @@ class views_handler_filter_numeric extends views_handler_filter { ); } + // Add regexp support for MySQL. + if (Database::getConnection()->databaseType() == 'mysql') { + $operators += array( + 'regular_expression' => array( + 'title' => t('Regular expression'), + 'short' => t('regex'), + 'method' => 'op_regex', + 'values' => 1, + ), + ); + } + return $operators; } @@ -238,6 +250,10 @@ class views_handler_filter_numeric extends views_handler_filter { $this->query->add_where($this->options['group'], $field, NULL, $operator); } + function op_regex($field) { + $this->query->add_where($this->options['group'], $field, $this->value, 'RLIKE'); + } + function admin_summary() { if (!empty($this->options['exposed'])) { return t('exposed'); diff --git a/sites/all/modules/views/handlers/views_handler_filter_string.inc b/sites/all/modules/views/handlers/views_handler_filter_string.inc index 9ff8ebe27..d3bc60da5 100644 --- a/sites/all/modules/views/handlers/views_handler_filter_string.inc +++ b/sites/all/modules/views/handlers/views_handler_filter_string.inc @@ -7,12 +7,11 @@ class views_handler_filter_string extends views_handler_filter { // exposed filter options var $always_multiple = TRUE; - var $always_required = TRUE; - function option_defintion() { - $options = parent::option_defintion(); + function option_definition() { + $options = parent::option_definition(); - $options['expose']['contains']['required'] = array('default' => TRUE); + $options['expose']['contains']['required'] = array('default' => FALSE); return $options; } @@ -114,6 +113,17 @@ class views_handler_filter_string extends views_handler_filter { ), ); } + // Add regexp support for MySQL. + if (Database::getConnection()->databaseType() == 'mysql') { + $operators += array( + 'regular_expression' => array( + 'title' => t('Regular expression'), + 'short' => t('regex'), + 'method' => 'op_regex', + 'values' => 1, + ), + ); + } return $operators; } @@ -295,6 +305,10 @@ class views_handler_filter_string extends views_handler_filter { $this->query->add_where_expression($this->options['group'], "LENGTH($field) > $placeholder", array($placeholder => $this->value)); } + function op_regex($field) { + $this->query->add_where($this->options['group'], $field, $this->value, 'RLIKE'); + } + function op_empty($field) { if ($this->operator == 'empty') { $operator = "IS NULL"; diff --git a/sites/all/modules/views/handlers/views_handler_relationship.inc b/sites/all/modules/views/handlers/views_handler_relationship.inc index 9af993816..afeaba82d 100644 --- a/sites/all/modules/views/handlers/views_handler_relationship.inc +++ b/sites/all/modules/views/handlers/views_handler_relationship.inc @@ -43,7 +43,9 @@ class views_handler_relationship extends views_handler { $this->table = $this->definition['relationship table']; } if (isset($this->definition['relationship field'])) { - $this->field = $this->definition['relationship field']; + // Set both real_field and field so custom handler + // can rely on the old field value. + $this->real_field = $this->field = $this->definition['relationship field']; } } @@ -60,7 +62,15 @@ class views_handler_relationship extends views_handler { function option_definition() { $options = parent::option_definition(); - $label = !empty($this->definition['label']) ? $this->definition['label'] : $this->definition['field']; + + // Relationships definitions should define a default label, but if they aren't get another default value. + if (!empty($this->definition['label'])) { + $label = $this->definition['label']; + } + else { + $label = !empty($this->definition['field']) ? $this->definition['field'] : $this->definition['base field']; + } + $options['label'] = array('default' => $label, 'translatable' => TRUE); $options['required'] = array('default' => FALSE); @@ -77,7 +87,8 @@ class views_handler_relationship extends views_handler { '#type' => 'textfield', '#title' => t('Identifier'), '#default_value' => isset($this->options['label']) ? $this->options['label'] : '', - '#description' => t('Edit the administrative label displayed when referencing this relationship form filters, etc.'), + '#description' => t('Edit the administrative label displayed when referencing this relationship from filters, etc.'), + '#required' => TRUE, ); $form['required'] = array( @@ -102,7 +113,7 @@ class views_handler_relationship extends views_handler { $def['table'] = $this->definition['base']; $def['field'] = $base_field; $def['left_table'] = $this->table_alias; - $def['left_field'] = $this->field; + $def['left_field'] = $this->real_field; if (!empty($this->options['required'])) { $def['type'] = 'INNER'; } @@ -115,6 +126,7 @@ class views_handler_relationship extends views_handler { } $join->definition = $def; + $join->options = $this->options; $join->construct(); $join->adjusted = TRUE; @@ -122,6 +134,19 @@ class views_handler_relationship extends views_handler { $alias = $def['table'] . '_' . $this->table; $this->alias = $this->query->add_relationship($alias, $join, $this->definition['base'], $this->relationship); + + // Add access tags if the base table provide it. + if (empty($this->query->options['disable_sql_rewrite']) && isset($table_data['table']['base']['access query tag'])) { + $access_tag = $table_data['table']['base']['access query tag']; + $this->query->add_tag($access_tag); + } + } + + /** + * You can't groupby a relationship. + */ + function use_group_by() { + return FALSE; } } diff --git a/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc b/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc new file mode 100644 index 000000000..cdfd0bdc6 --- /dev/null +++ b/sites/all/modules/views/handlers/views_handler_relationship_groupwise_max.inc @@ -0,0 +1,382 @@ +<?php +// $Id$ +/* + * @file + * Relationship for groupwise maximum handler. + */ + +/** + * Relationship handler that allows a groupwise maximum of the linked in table. + * For a definition, see: + * http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html + * In lay terms, instead of joining to get all matching records in the linked + * table, we get only one record, a 'representative record' picked according + * to a given criteria. + * + * Example: + * Suppose we have a term view that gives us the terms: Horse, Cat, Aardvark. + * We wish to show for each term the most recent node of that term. + * What we want is some kind of relationship from term to node. + * But a regular relationship will give us all the nodes for each term, + * giving the view multiple rows per term. What we want is just one + * representative node per term, the node that is the 'best' in some way: + * eg, the most recent, the most commented on, the first in alphabetical order. + * + * This handler gives us that kind of relationship from term to node. + * The method of choosing the 'best' implemented with a sort + * that the user selects in the relationship settings. + * + * So if we want our term view to show the most commented node for each term, + * add the relationship and in its options, pick the 'Comment count' sort. + * + * Relationship definition + * - 'outer field': The outer field to substitute into the correlated subquery. + * This must be the full field name, not the alias. + * Eg: 'term_data.tid'. + * - 'argument table', + * 'argument field': These options define a views argument that the subquery + * must add to itself to filter by the main view. + * Example: the main view shows terms, this handler is being used to get to + * the nodes base table. Your argument must be 'term_node', 'tid', as this + * is the argument that should be added to a node view to filter on terms. + * + * A note on performance: + * This relationship uses a correlated subquery, which is expensive. + * Subsequent versions of this handler could also implement the alternative way + * of doing this, with a join -- though this looks like it could be pretty messy + * to implement. This is also an expensive method, so providing both methods and + * allowing the user to choose which one works fastest for their data might be + * the best way. + * If your use of this relationship handler is likely to result in large + * data sets, you might want to consider storing statistics in a separate table, + * in the same way as node_comment_statistics. + */ +class views_handler_relationship_groupwise_max extends views_handler_relationship { + + /** + * Defines default values for options. + */ + function option_definition() { + $options = parent::option_definition(); + + $options['subquery_sort'] = array('default' => NULL); + // Descending more useful. + $options['subquery_order'] = array('default' => 'DESC'); + $options['subquery_regenerate'] = array('default' => FALSE); + $options['subquery_view'] = array('default' => FALSE); + $options['subquery_namespace'] = array('default' => FALSE); + + return $options; + } + + /** + * Extends the relationship's basic options, allowing the user to pick + * a sort and an order for it. + */ + function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + + // Get the sorts that apply to our base. + $sorts = views_fetch_fields($this->definition['base'], 'sort'); + foreach ($sorts as $sort_id => $sort) { + $sort_options[$sort_id] = "$sort[group]: $sort[title]"; + } + $base_table_data = views_fetch_data($this->definition['base']); + + $form['subquery_sort'] = array( + '#type' => 'select', + '#title' => t('Representative sort criteria'), + // Provide the base field as sane default sort option. + '#default_value' => !empty($this->options['subquery_sort']) ? $this->options['subquery_sort'] : $this->definition['base'] . '.' . $base_table_data['table']['base']['field'], + '#options' => $sort_options, + '#description' => theme('advanced_help_topic', array('module' => 'views', 'topic' => 'relationship-representative')) . + t("The sort criteria is applied to the data brought in by the relationship to determine how a representative item is obtained for each row. For example, to show the most recent node for each user, pick 'Content: Updated date'."), + ); + + $form['subquery_order'] = array( + '#type' => 'radios', + '#title' => t('Representative sort order'), + '#description' => t("The ordering to use for the sort criteria selected above."), + '#options' => array('ASC' => t('Ascending'), 'DESC' => t('Descending')), + '#default_value' => $this->options['subquery_order'], + ); + + $form['subquery_namespace'] = array( + '#type' => 'textfield', + '#title' => t('Subquery namespace'), + '#description' => t('Advanced. Enter a namespace for the subquery used by this relationship.'), + '#default_value' => $this->options['subquery_namespace'], + ); + + + // WIP: This stuff doens't work yet: namespacing issues. + // A list of suitable views to pick one as the subview. + $views = array('' => '<none>'); + $all_views = views_get_all_views(); + foreach ($all_views as $view) { + // Only get views that are suitable: + // - base must the base that our relationship joins towards + // - must have fields. + if ($view->base_table == $this->definition['base'] && !empty($view->display['default']->display_options['fields'])) { + // TODO: check the field is the correct sort? + // or let users hang themselves at this stage and check later? + if ($view->type == 'Default') { + $views[t('Default Views')][$view->name] = $view->name; + } + else { + $views[t('Existing Views')][$view->name] = $view->name; + } + } + } + + $form['subquery_view'] = array( + '#type' => 'select', + '#title' => t('Representative view'), + '#default_value' => $this->options['subquery_view'], + '#options' => $views, + '#description' => t('Advanced. Use another view to generate the relationship subquery. This allows you to use filtering and more than one sort. If you pick a view here, the sort options above are ignored. Your view must have the ID of its base as its only field, and should have some kind of sorting.'), + ); + + $form['subquery_regenerate'] = array( + '#type' => 'checkbox', + '#title' => t('Generate subquery each time view is run.'), + '#default_value' => $this->options['subquery_regenerate'], + '#description' => t('Will re-generate the subquery for this relationship every time the view is run, instead of only when these options are saved. Use for testing if you are making changes elsewhere. WARNING: seriously impairs performance.'), + ); + } + + /** + * Perform any necessary changes to the form values prior to storage. + * There is no need for this function to actually store the data. + * + * Generate the subquery string when the user submits the options, and store + * it. This saves the expense of generating it when the view is run. + */ + function options_submit(&$form, &$form_state) { + // Get the new user options from the form values. + $new_options = $form_state['values']['options']; + $subquery = $this->left_query($new_options); + // Add the subquery string to the options we're about to store. + $this->options['subquery_string'] = $subquery; + } + + /** + * Helper function to create a pseudo view. + * + * We use this to obtain our subquery SQL. + */ + function get_temporary_view() { + views_include('view'); + $view = new view(); + $view->vid = 'new'; // @todo: what's this? + $view->base_table = $this->definition['base']; + $view->add_display('default'); + return $view; + } + + /** + * Generate a subquery given the user options, as set in the options. + * These are passed in rather than picked up from the object because we + * generate the subquery when the options are saved, rather than when the view + * is run. This saves considerable time. + * + * @param $options + * An array of options: + * - subquery_sort: the id of a views sort. + * - subquery_order: either ASC or DESC. + * @return + * The subquery SQL string, ready for use in the main query. + */ + function left_query($options) { + // Either load another view, or create one on the fly. + if ($options['subquery_view']) { + // We don't use views_get_view because we want our own class of view. + views_include('view'); + $temp_view = view::load($options['subquery_view']); + + // Remove all fields from default display + unset($temp_view->display['default']->display_options['fields']); + } + else { + // Create a new view object on the fly, which we use to generate a query + // object and then get the SQL we need for the subquery. + $temp_view = $this->get_temporary_view(); + + // Add the sort from the options to the default display. + // This is broken, in that the sort order field also gets added as a + // select field. See http://drupal.org/node/844910. + // We work around this further down. + $sort = $options['subquery_sort']; + list($sort_table, $sort_field) = explode('.', $sort); + $sort_options = array('order' => $options['subquery_order']); + $temp_view->add_item('default', 'sort', $sort_table, $sort_field, $sort_options); + } + + // Get the namespace string. + $temp_view->namespace = (!empty($options['subquery_namespace'])) ? '_'. $options['subquery_namespace'] : '_INNER'; + $this->subquery_namespace = (!empty($options['subquery_namespace'])) ? '_'. $options['subquery_namespace'] : 'INNER'; + + // The value we add here does nothing, but doing this adds the right tables + // and puts in a WHERE clause with a placeholder we can grab later. + $temp_view->args[] = '**CORRELATED**'; + + // Add the base table ID field. + $views_data = views_fetch_data($this->definition['base']); + $base_field = $views_data['table']['base']['field']; + $temp_view->add_item('default', 'field', $this->definition['base'], $this->definition['field']); + + // Add the correct argument for our relationship's base + // ie the 'how to get back to base' argument. + // The relationship definition tells us which one to use. + $temp_view->add_item( + 'default', + 'argument', + $this->definition['argument table'], // eg 'term_node', + $this->definition['argument field'] // eg 'tid' + ); + + // Build the view. The creates the query object and produces the query + // string but does not run any queries. + $temp_view->build(); + + // Now take the SelectQuery object the View has built and massage it + // somewhat so we can get the SQL query from it. + $subquery = $temp_view->build_info['query']; + + // Workaround until http://drupal.org/node/844910 is fixed: + // Remove all fields from the SELECT except the base id. + $fields =& $subquery->getFields(); + foreach (array_keys($fields) as $field_name) { + // The base id for this subquery is stored in our definition. + if ($field_name != $this->definition['field']) { + unset($fields[$field_name]); + } + } + + // Make every alias in the subquery safe within the outer query by + // appending a namespace to it, '_inner' by default. + $tables =& $subquery->getTables(); + foreach (array_keys($tables) as $table_name) { + $tables[$table_name]['alias'] .= $this->subquery_namespace; + // Namespace the join on every table. + if (isset($tables[$table_name]['condition'])) { + $tables[$table_name]['condition'] = $this->condition_namespace($tables[$table_name]['condition']); + } + } + // Namespace fields. + foreach (array_keys($fields) as $field_name) { + $fields[$field_name]['table'] .= $this->subquery_namespace; + $fields[$field_name]['alias'] .= $this->subquery_namespace; + } + // Namespace conditions. + $where =& $subquery->conditions(); + $this->alter_subquery_condition($subquery, $where); + // Not sure why, but our sort order clause doesn't have a table. + // TODO: the call to add_item() above to add the sort handler is probably + // wrong -- needs attention from someone who understands it. + // In the meantime, this works, but with a leap of faith... + $orders =& $subquery->getOrderBy(); + foreach ($orders as $order_key => $order) { + // But if we're using a whole view, we don't know what we have! + if ($options['subquery_view']) { + list($sort_table, $sort_field) = explode('.', $order_key); + } + $orders[$sort_table . $this->subquery_namespace . '.' . $sort_field] = $order; + unset($orders[$order_key]); + } + + // The query we get doesn't include the LIMIT, so add it here. + $subquery->range(0, 1); + + // Extract the SQL the temporary view built. + $subquery_sql = $subquery->__toString(); + + // Replace the placeholder with the outer, correlated field. + // Eg, change the placeholder ':users_uid' into the outer field 'users.uid'. + // We have to work directly with the SQL, because putting a name of a field + // into a SelectQuery that it does not recognize (because it's outer) just + // makes it treat it as a string. + $outer_placeholder = ':' . str_replace('.', '_', $this->definition['outer field']); + $subquery_sql = str_replace($outer_placeholder, $this->definition['outer field'], $subquery_sql); + + return $subquery_sql; + } + + /** + * Recursive helper to add a namespace to conditions. + * + * Similar to _views_query_tag_alter_condition(). + * + * (Though why is the condition we get in a simple query 3 levels deep???) + */ + function alter_subquery_condition(QueryAlterableInterface $query, &$conditions) { + foreach ($conditions as $condition_id => &$condition) { + // Skip the #conjunction element. + if (is_numeric($condition_id)) { + if (is_string($condition['field'])) { + $condition['field'] = $this->condition_namespace($condition['field']); + } + elseif (is_object($condition['field'])) { + $sub_conditions =& $condition['field']->conditions(); + $this->alter_subquery_condition($query, $sub_conditions); + } + } + } + } + + /** + * Helper function to namespace query pieces. + * + * Turns 'foo.bar' into 'foo_NAMESPACE.bar'. + */ + function condition_namespace($string) { + return str_replace('.', $this->subquery_namespace . '.', $string); + } + + /** + * Called to implement a relationship in a query. + * This is mostly a copy of our parent's query() except for this bit with + * the join class. + */ + function query() { + // Figure out what base table this relationship brings to the party. + $table_data = views_fetch_data($this->definition['base']); + $base_field = empty($this->definition['base field']) ? $table_data['table']['base']['field'] : $this->definition['base field']; + + $this->ensure_my_table(); + + $def = $this->definition; + $def['table'] = $this->definition['base']; + $def['field'] = $base_field; + $def['left_table'] = $this->table_alias; + $def['left_field'] = $this->field; + if (!empty($this->options['required'])) { + $def['type'] = 'INNER'; + } + + if ($this->options['subquery_regenerate']) { + // For testing only, regenerate the subquery each time. + $def['left_query'] = $this->left_query($this->options); + } + else { + // Get the stored subquery SQL string. + $def['left_query'] = $this->options['subquery_string']; + } + + if (!empty($def['join_handler']) && class_exists($def['join_handler'])) { + $join = new $def['join_handler']; + } + else { + $join = new views_join_subquery(); + } + + $join->definition = $def; + $join->construct(); + $join->adjusted = TRUE; + + // use a short alias for this: + $alias = $def['table'] . '_' . $this->table; + + $this->alias = $this->query->add_relationship($alias, $join, $this->definition['base'], $this->relationship); + } +} diff --git a/sites/all/modules/views/handlers/views_handler_sort.inc b/sites/all/modules/views/handlers/views_handler_sort.inc index e609ababb..f767b9939 100644 --- a/sites/all/modules/views/handlers/views_handler_sort.inc +++ b/sites/all/modules/views/handlers/views_handler_sort.inc @@ -91,7 +91,7 @@ class views_handler_sort extends views_handler { '#attributes' => array('class' => array('js-only')), ); $form['expose_button']['checkbox']['checkbox'] = array( - '#title' => t('Expose this sort to visitors, to allow them to change it.'), + '#title' => t('Expose this sort to visitors, to allow them to change it'), '#type' => 'checkbox', ); @@ -197,7 +197,7 @@ class views_handler_sort extends views_handler { function expose_options() { $this->options['expose'] = array( 'order' => $this->options['order'], - 'label' => $this->ui_name(), + 'label' => $this->definition['title'], ); } } diff --git a/sites/all/modules/views/help/about.html b/sites/all/modules/views/help/about.html index f4dd92321..df0ad848d 100644 --- a/sites/all/modules/views/help/about.html +++ b/sites/all/modules/views/help/about.html @@ -18,7 +18,7 @@ The "building block" design of the views system provides power and flexibility, <li><a href="topic:views/header">Header</a>, which allow you to add by default one or more text area above the views output. </li> <li><a href="topic:views/footer">Footer</a>, which allow you to add by default one or more text area beneath the views output. </li> - + <li>The <a href="topic:views/footer">Emtpy Text</a> content will be displayed, when you choose in the Arguments Section "Action to take if argument is not present" the option "Display empty text".</li> @@ -58,5 +58,3 @@ Parallels between the components in the Views interface and an sql query: <td>sort</td> </tr> </table> - - diff --git a/sites/all/modules/views/help/advanced-settings.html b/sites/all/modules/views/help/advanced-settings.html index f5fa53c56..23d05d43f 100644 --- a/sites/all/modules/views/help/advanced-settings.html +++ b/sites/all/modules/views/help/advanced-settings.html @@ -3,6 +3,6 @@ If set, this view will use an AJAX mechanism for paging, table sorting and expos <strong>Distinct: No</strong> This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution. <strong>Use grouping: No</strong> -All fields that are selected for grouping will be collapsed to one record per distinct value. Other fields which are selected for aggregation will have the function run on them. For example, you can group nodes on title and count the number of nids in order to get a list of duplicate titles. +All fields that are selected for grouping will be collapsed to one record per distinct value. Other fields which are selected for aggregation will have the function run on them. For example, you can group nodes on title and count the number of nids in order to get a list of duplicate titles. <strong>Caching: None</strong> You can choose a "Time-based" Caching if you want. With it you get the option to choose the length of time raw query results should be cached and "The length of time rendered HTML output should be cached." diff --git a/sites/all/modules/views/help/alter-exposed-filter.html b/sites/all/modules/views/help/alter-exposed-filter.html new file mode 100644 index 000000000..454994f71 --- /dev/null +++ b/sites/all/modules/views/help/alter-exposed-filter.html @@ -0,0 +1,31 @@ +Modifying default values of a views exposed form is tricky, because FAPI was not designed to work with GET forms. One consequence is that it often can't tell if textfields (there are others) were submitted or not. + +As a consequence, it *always* thinks the value was submitted, even if it was not. To fix that, Views modifies $form_state['input'][$identifier] with the default value if $form_state['input'][$identifier] was not set. In order to modify the default value in an alter, you need to do this: + +<pre> +<?php +if (empty($form_state['view']->exposed_input[$identifier])) . + { $form_state['input'][$identifier] = $default_value; } +?> +</pre> + +where $identifier is the particular filter for which you want to change the default value, and $default_value is the new default value you want to set. + +If you use a hook_form_FORM_ID_alter or hook_form_alter, you can modify exposed filters on the fly based on information that is external to Views. For example, I modified the exposed filter of a form to set a taxonomy term ID based on the user's GeoIP. + +To do this, I used the following function, where geoip_redirect_get_tid() loads the relevant term id based on the user's current ip_address(): + +<pre> +<?php +function MODULENAME_form_views_exposed_form_alter(&$form, $form_state) { + if(strpos($form['#id'], 'volunteer-directory') !== FALSE) { + $city_tid = geoip_redirect_get_tid(); + if(is_numeric($city_tid) && $city_tid != 7660) { + if (empty($form_state['view']->exposed_input['tid'])) { + $form_state['input']['tid'] = $city_tid; + } + } + } +} +?> +</pre> diff --git a/sites/all/modules/views/help/api-default-views.html b/sites/all/modules/views/help/api-default-views.html index e07b77fa1..f676ed86f 100644 --- a/sites/all/modules/views/help/api-default-views.html +++ b/sites/all/modules/views/help/api-default-views.html @@ -62,9 +62,10 @@ There are a small number of gotchas in doing this that you must be aware of. <li>The 'arguments' change based upon which of the 3 types you're overriding. There's the 'display', the 'style' and the 'row' style. The above code is assuming the display, which is usually just <em>views_view</em>. Here are the possibilities: -<pre>display: array('view' => NULL), +<pre>display: array('view_array' => array(), 'view' => NULL), style: array('view' => NULL, 'options' => NULL, 'rows' => NULL, 'title' => NULL), -row style: array('view' => NULL, 'options' => NULL, 'row' => NULL), +row: array('view' => NULL, 'options' => NULL, 'row' => NULL, 'field_alias' => NULL), +field: array('view' => NULL, 'field' => NULL, 'row' => NULL), </pre> Be sure to use the right arguments line or the theme system will not properly translate. @@ -100,4 +101,3 @@ Be sure to use the right arguments line or the theme system will not properly tr If you leave the path blank the template file will be searched for in "./" which is the Drupal install base path. </li> </ol> - diff --git a/sites/all/modules/views/help/api-example.html b/sites/all/modules/views/help/api-example.html index 04a65b99e..682fe87f0 100644 --- a/sites/all/modules/views/help/api-example.html +++ b/sites/all/modules/views/help/api-example.html @@ -84,7 +84,7 @@ function node_example_views_data() { ), ); - // Color + // Color $data['node_example']['color'] = array( 'title' => t('Color'), 'help' => t('Color of item.'), diff --git a/sites/all/modules/views/help/api-forms.html b/sites/all/modules/views/help/api-forms.html new file mode 100644 index 000000000..749c56538 --- /dev/null +++ b/sites/all/modules/views/help/api-forms.html @@ -0,0 +1,80 @@ +Views allows handlers to output form elements, wrapping them automatically in a form, and handling validation / submission. +The form is multistep by default, allowing other modules to add additional steps, such as confirmation screens. + +<h2>Implementation</h2> +A views handler outputs a special placeholder in render(), while the real form with matching structure gets added in views_form(). +When the View is being preprocessed for the theme file, all placeholders get replaced with the rendered form elements. + +The views handler can also implement views_form_validate() and views_form_submit(). +<pre> + function render($values) { + return '<!--form-item-' . $this->options['id'] . '--' . $this->view->row_index . '-->'; + } + + function views_form(&$form, &$form_state) { + // The view is empty, abort. + if (empty($this->view->result)) { + return; + } + + $field_name = $this->options['id']; + $form[$field_name] = array( + '#tree' => TRUE, + ); + // At this point, the query has already been run, so we can access the results + foreach ($this->view->result as $row_id => $row) { + $form[$field_name][$row_id] = array( + '#type' => 'textfield', + '#title' => t('Your name'), + '#default_value' => '', + ); + } + } + + // Optional validate function. + function views_form_validate($form, &$form_state) { + $field_name = $this->options['id']; + foreach ($form_state['values'][$field_name] as $row_id => $value) { + if ($value == 'Drupal') { + form_set_error($field_name . '][' . $row_id, "You can't be named Drupal. That's my name."); + } + } + } + + // Optional submit function. + function views_form_submit($form, &$form_state) { + // Do something here + } +</pre> + +The form is multistep by default, with one step: 'views_form_views_form'. +A "form_example" module could add a confirmation step by setting: +<pre> + $form_state['step'] = 'form_example_confirmation'; +</pre> +in form_example_views_form_submit(). +Then, views_form would call form_example_confirmation($form, $form_state, $view, $output) to get that step. + +<b>Important:</b> You can fetch the Views object in form_alter and validate / submit hooks from the form state: +<pre> + $view = $form_state['build_info']['args'][0]; +</pre> + +<h2>Relevant Views functions</h2> +<ul> +<li>template_preprocess_views_view()</li> +<li>views_form()</li> +<li>views_form_validate()</li> +<li>views_form_submit()</li> +<li>views_form_views_form()</li> +<li>views_form_views_form_validate()</li> +<li>views_form_views_form_submit()</li> +<li>theme_views_form_views_form()</li> +</ul> + +<h2>Hooks</h2> +<ul> +<li>hook_views_form_substitutions()</li> +<li>hook_views_form_validate($form, &$form_state)</li> +<li>hook_views_form_submit($form, &$form_state)</li> +</ul> diff --git a/sites/all/modules/views/help/api-handler-area.html b/sites/all/modules/views/help/api-handler-area.html new file mode 100644 index 000000000..ad8ec5636 --- /dev/null +++ b/sites/all/modules/views/help/api-handler-area.html @@ -0,0 +1,45 @@ +In Views areas (header, footer, empty-text) are pluggable, this means you can write your own php logic to place whatever you want. + +<h3>Requirements</h3> +You should have read <a href="topic:views/api">API</a> and <a href="topic:views/api-tables">Tables API</a> to get a basic knowledge +how to extend views. + +<h3>Create your own area handler</h3> + +The first step is to tell views: Hey i want to add a new area handler. +Therefore you have to implement hook_views_data and add a new one. For example: + +<pre> +function yourmodule_views_data() { + $data['views']['collapsible_area'] = array( + 'title' => t('Collabsible Text area'), + 'help' => t('Provide collabsible markup text for the area.'), + 'area' => array( + 'handler' => 'yourmodule_handler_collapsible_area_text', + ), + ); +} +</pre> + +The second step is to write this handler. Therefore create a file called yourmodule_handler_collapsible_area_text.inc and +add it to the .info file of your module. + +Then add content to your area file like this: +<pre> +class yourmodule_handler_collapsible_area_text extends views_handler_area_text { + function render($empty = FALSE) { + // Here you just return a string of your content you want. + if ($render = parent::render($empty)) { + $element = array( + '#type' => 'fieldset', + '#title' => t('Title'), + '#value' => $render, + ); + $output = theme('fieldset', $element); + return $output; + } + } +} +</pre> + +As on every handler you can add options so you can configure the behavior. If the area isn't shown yet in the views interface, please clear the cache :) diff --git a/sites/all/modules/views/help/api-handlers.html b/sites/all/modules/views/help/api-handlers.html index c463d899a..eda52ae6c 100644 --- a/sites/all/modules/views/help/api-handlers.html +++ b/sites/all/modules/views/help/api-handlers.html @@ -21,7 +21,7 @@ For the query flow: Fields, being the only handlers concerned with output, also have an extended piece of the flow: <dl> -<dt>handler->pre_render()</dt> +<dt>handler->pre_render(&$values)</dt> <dd>Called prior to the actual rendering, this allows handlers to query for extra data; the entire resultset is available here, and this is where items that have "multiple values" per record can do their extra query for all of the records available. There are several examples of this at work in the code.</dd> <dt>handler->render()</dt> <dd>This does the actual work of rendering the field.</dd> diff --git a/sites/all/modules/views/help/api-tables.html b/sites/all/modules/views/help/api-tables.html index b101f18c7..47af4ab26 100644 --- a/sites/all/modules/views/help/api-tables.html +++ b/sites/all/modules/views/help/api-tables.html @@ -50,7 +50,9 @@ In general, having 'title' and 'help' at the table level doesn't make a lot of s $data['foo']['table']['group'] = t('Foo'); </pre> -<h3>Base table</h3> +The other items in the 'table' section are described in the following sections. + +<h3>'base': Base table</h3> If your table is a base table -- meaning it can be the primary, central table for a View to use, you can declare it to be a base table. This primarily provides UI information so that it can be selected. For example: <pre> @@ -63,7 +65,7 @@ For example: ); </pre> -The following tags are available in the +The following items are available in the base section: <dl> <dt>field</dt> <dd>The primary key field for this table. For Views to treat any table as a base table, it <b>must</b> have a primary field. For node this is the 'nid', for users this is the 'uid', etc. <strong>Without a single primary key field (i.e. not a composite key), Views will not be able to utilize the table as a base table.</strong> If your table does not have a primary key field, it is not too difficult to just add a serial field to it, usually.</dd> @@ -92,7 +94,7 @@ Then when you are describing the external database in your base table you would </dd> </dl> -<h3>Linking your table to existing base tables</h3> +<h3>'join': Linking your table to existing base tables</h3> For Views to use your table, it has to either be a base table, or know how to link to an existing base table. Or sometimes both. Views uses this information to create a path to the base table; when the table is added to the query, Views will walk along this path, adding all tables required into the query. <div class="help-box" style="text-align:center"> @@ -138,8 +140,10 @@ Quite a few more fields are available in this definition: <dt>extra</dt> <dd>Either a string that's directly added, or an array of items. Each item is, itself, an array: <dl> + <dt>table</dt> + <dd>table should not be set in most cases, as it would be filled with the right table alias. Set it to NULL if you want to use a formular in "field"</dd> <dt>field</dt> - <dd>Field or formula</dd> + <dd>Field or formula, therein "%alias" can be used to reference the right table.</dd> <dt>operator</dt> <dd>Similar to filters, this is the operator, such as >, <, =, etc. Defaults to = or IN.</dd> <dt>value</dt> @@ -237,7 +241,7 @@ For more information about what handlers need/use what data, visit <a href="http If you need to rename some tables/fields you can create some references in the views data to be able to continue to work. Therefore you create the whole table structure of the current views data. -If you have to rename a single table you need to specify +If you have to rename a single table you need to specify <pre> $data['oldtable']['moved to'] = 'newtable'; </pre> @@ -249,4 +253,4 @@ $data['oldtable']['oldfield']['field']['moved to'] = array('newtable', 'newfield or <pre> $data['oldtable']['oldfield']['moved to'] = array('newtable', 'newfield'); -</pre> \ No newline at end of file +</pre> diff --git a/sites/all/modules/views/help/api-upgrading.html b/sites/all/modules/views/help/api-upgrading.html index 59f90926a..158f80916 100644 --- a/sites/all/modules/views/help/api-upgrading.html +++ b/sites/all/modules/views/help/api-upgrading.html @@ -185,4 +185,40 @@ return $this->sanitize_value($value, 'xss'); <h3>Changed views_get_page_view</h3> -In contrast to 6.x views_get_page_view now does stores the current view, not the current page display. \ No newline at end of file +In contrast to 6.x views_get_page_view now does stores the current view, not the current page display. + +<h3>Removed views-view-row-node</h3> +Due to changes in comment.module there is no extra views-view-row-node template needed to display the comments. If you do some custom stuff there you should now be able to do everything in your node.tpl.php. + +<h3>Entity type Key on Base tables</h3> +During the development of the drupal7 version of views the entity type associated with a table got added to $data['name']['table']['base']['entity type']. It should be moved to $data['name']['table']['entity type']. + +<h3>Changed views_plugin_style::render_grouping()</h3> +The parameters as well as the structure of the methods return have changed. +The method now accepts a third optional parameter called "$group_rendered". +This parameter defines whether to use the rendered or the raw field value for grouping. +Intention for adding the parameter was that the grouping could have been acted +unexpected if the rendered field contained unique values e.g. by using drupal_html_id(). +<dl> +<dt>New return structure</dt> +<dd> +{grouping value} is the value affected by the new parameter. +<pre> + array ( + {grouping value} => array( + 'group' => {rendered_value of the grouping field}, + 'rows' => array({group rows}), + ), + ); +</pre> +</dd> +<dt>Old return structure</dt> +<dd> +<strong>If the new parameter isn't explicitly set or its value is NULL the structure of the return will be the same as in D6!</strong> +<pre> + array ( + {rendered_value of the grouping field} => array({group rows}), + ); +</pre> +</dd> +</dl> diff --git a/sites/all/modules/views/help/argument.html b/sites/all/modules/views/help/argument.html index c4bdf2b50..da67e353d 100644 --- a/sites/all/modules/views/help/argument.html +++ b/sites/all/modules/views/help/argument.html @@ -1,57 +1,106 @@ -Arguments are input. While they often come from the URL, <strong>they don't always</strong> so please don't be shocked when they don't. Each display type may have its own source for arguments. Block displays have no source of arguments at all; they cannot pull arguments from the URL, and often require use of the default argument PHP code in order to get arguments. The argument default plugins can be used to get arguments into a block view. See "Provide default", below. +Contextual Filters (known in previous versions of Views as "Arguments") are input. While they often come from the URL, they don't always. Don't be shocked when they don't. Each display type may have its own source for contextual filters. Block displays have no source of contextual filters at all; they cannot pull contextual filters from the URL, and often require use of PHP code as a default contextual filter. Various default values can be applied against contextual filters to use filters in a block view. See "Provide default value," under "When the filter value is NOT in the URL" below. -In general, arguments are used to filter the view, and in that sense they have a very close relationship to filters, but that isn't necessarily true for every argument. Arguments can be used for any purpose, really; the extent of what the argument does is up to the developer of the argument, but the arguments that come with Views are almost entirely filters. +In general, contextual filters are used to filter the view, and in that sense they have a very close relationship to filters. However, this isn't necessarily true for every contextual filter. Contextual filters can be used for any purpose, really; the extent of what the contextual filter does is up to the developer of the contextual filter. -A typical use of an argument might be to reduce a view to a single node, a single user, or nodes with a given taxonomy term. +A typical use of an contextual filter might be to reduce a view to a single node, a single user, or nodes with a given taxonomy term. -<h3>Action to take if argument is not present</h3> -<dl> -<dt>Ignore</dt> -<dd>The argument is removed from the view as though it weren't there and all results will be displayed.</dd> +<h3>When the filter value is NOT in the URL</h3> -<dt>Hide view / Page not found</dt> -<dd>The view will remove itself entirely if the argument is not present; for a block this means it simply won't appear. For page views the View will return a 404 and present a "Page not found" error. </dd> +<dl> +<dt>Display all results for the specified field</dt> +<dd>If this option is selected, the contextual filter is removed from the view as though it weren't there and all results will be displayed.</dd> +<dt>Provide default value</dt> +<dd>If no contextual filter is given, a default contextual filter can be selected. You may choose from a number of different default filter options. See "Default contextual filters" below.</dd> +<dt>Hide view</dt> +<dd>The view will remove itself entirely if the contextual filter is not present; for a block this means it simply won't appear. For page views the view will return a 404 and present a "Page not found" error. </dd> +<dt>Display a summary</dt> +<dd>The view will attempt to display a summary of contextual filters available, based upon the view, and provide links to the view with those contextual filters. Summaries have their own style handlers as well as options. The default summary style simply displays a list of contextual filters with a count of entries found per contextual filter. This special mode is a very powerful part of Views.</dd> +<dt>Display contents of "No results found"</dt> +<dd>If this option is selected, the value specified under "No results behavior" on the main view page will be displayed when there is no filter value in the URL.</dd> +</dl> -<dt>Display empty text</dt> -<dd>The value of the <a href=topic:views/empty-text>empty text</a> will be displayed.</dd> +An exception value can be set under the "Exceptions" menu. If this exception value is received, any filter value specified under "When the filter value is NOT in the URL" will be ignored. This is a literal value: if you enter the word "everything" here, the exception will apply only if the value "everything" is received. -<dt>Summary</dt> -<dd>The view will attempt to display a summary of arguments available, based upon the view, and provide links to the view with those arguments. Summaries have their own style handlers as well as options. The default summary style simply displays a list of arguments with a count of entries found per argument. This special mode is a very powerful part of Views.</dd> +<h3>Default contextual filters</h3> -<dt>Provide default</dt> -<dd>If no argument is given, a default argument can be selected. The method of choosing the default argument is selectable and pluggable.</dd> -</dl> +The Default contextual filter selection is available <strong>only if the action to take is "Provide default value"</strong> under "When the filter value is NOT in the URL." When that option is selected, a new fieldset will appear that will allow you to choose default contextual filters. Views provides the following default selectors by default (but other modules may add more): -<h3>Wildcards</h3> -All arguments have a 'wildcard', which is an argument that means to use all values. In practice, it is the same as 'Ignore' above, where the argument is simply removed and the view is created without the argument. The wildcard title is used in titles and breadcrumb trails. -<h3>Default arguments</h3> -Default argument selection is available <strong>only if the action to take is "Provide default"</strong>. When that is selected, a new fieldset will appear letting you choose what the default argument will be. Views provides the following default selectors by default (but other modules may add more): <dl> -<dt>Fixed entry </dt> -<dd>You may directly enter what the argument will be. This is not a variable, it will always be the same argument. </dd> -<dt>Node ID from URL</dt> -<dd>This will attempt to find a Node ID from the URL, and is primarily useful for the Node: ID argument (though other arguments that use Node IDs, such as the CCK Node Reference argument, will find it useful too). For example, when visiting the path 'node/1' or 'node/1/edit' it will know that the '1' in that path is a node ID and use it.</dd> +<dt>Content ID from URL</dt> +<dd>This will attempt to find a Node ID from the URL, and is primarily useful for the Node: ID contextual filter (though other contextual filters that use Node IDs, such as the CCK Node Reference contextual filter, will find it useful, too). For example, when visiting the path "node/1" or "node/1/edit" it will know that the "1" in that path is a node ID and use it.</dd> +<dt>Fixed value</dt> +<dd>You may directly enter what the contextual filter will be. This is not a variable, it will always be the same contextual filter. </dd> +<dt>PHP Code</dt> +<dd>Arbitrary php code inserted here will run whenever a contextual filter is not present in the URL.</dd> +<dt>Taxonomy term ID from URL</dt> +<dd>This default filter will attempt to return a taxonomy term from the current path. Selecting this option gives you the choice to also load default filters from terms.</dd> <dt>User ID from URL</dt> -<dd>Like Node ID from URL, this will attempt to find a user ID from the path. It also includes an option to look for a node and use the node author as the user ID.</dd> +<dd>Like Node ID and Taxonomy term ID from URL, this will attempt to find a user ID from the path. It also includes an option to look for a node and use the node author as the user ID.</dd> <dt>User ID from logged in user</dt> -<dd>You can use this to easily default a menu item to the logged in user. For example, if you created the path 'blogs' and gave it a User: ID argument with this default, 'blogs' would go to the user's own blogs, and blogs/1 would go to User ID 1's blogs.</dd> +<dd>If a user is currently logged in and accessing this view, their user ID will be returned as the contextual filter.</dd> +<dt>Current date</dt> +<dd>This option simply returns today's date.</dd> +<dt>Current node's creation time</dt> +<dd>Select this to return a node's creation time as a contextual filter.</dd> +<dt>Current node's update time</dt> +<dd>Not surprisingly, this filter returns the current node's update time</dd> +</dl> + +Please bear in mind that the selection of a default contextual filter happens only if a contextual filter is not provided. If you are using a display that has no contextual filter source, such as a block, the contextual filter value selected here will always be used. However, if using a display that reads contextual filters from the URL, the options selected here will only be applied if the URL did not contain an contextual filter. + +The "Skip default argument for view URL" option gives you the choice of ignoring the default argument totally. This is useful for certain applications, like the creation of feeds. + +<h3>When the filter value IS in the URL or a default is provided</h3> + +<dl> +<dt>Override title</dt> +<dd>Selecting this option will allow you to replace the default view title with a piece of arbitrary text. Argument substitutions in the form of %1, %2, etc. may be used here.</dd> +<dt>Override breadcrumb</dt> +<dd>This option will allow you to overwrite the view name in breadcrumbs. The same substitution values as in "Override title" may be used.</dd> +<dt>Specify validation criteria</dt> +<dd>Contextual filters can have validators, which are pluggable systems used to ensure that contextual filters fit within certain parameters. When a validator is chosen, it may provide some specific settings, including the action to take if an contextual filter is presented, but it fails to validate. These actions are generally the same as the default actions above, excluding the ability to provide another default filter. See "Contextual filter validation" below for a detailed description.</dd> </dl> -Please bear in mind that the selection of default argument happens only if an argument is not provided. If using a display that has no argument source, such as a block, this will always be used. However, if using a display that reads arguments from the URL, this will happen only if the URL did not contain an argument. -<h3>Argument validation</h3> -Arguments can also have validators, which are pluggable systems used to ensure that arguments fit within certain parameters. When a validator is chosen, it may provide some settings for the validator, including the action to take if an argument is presented, but it fails to validate. These actions are generally the same as the default actions above, excluding the ability to provide another default. +<h3>Contextual filter validation</h3> -If a view provides a menu option, such as a tab, if the argument does not validate the tab will not appear. +Note: If a view provides a menu option, such as a tab, the tab will not appear if the contextual filter does not validate. This sytem can have other validators plugged in; by default, Views provides: + <dl> <dt>Basic validation</dt> -<dd>Ensures that the argument is present. A PHP NULL value (from eg. PHP default argument code) will invalidate.</dd> -<dt>Node</dt> -<dd>Ensure that the argument is a valid Node ID. You may select which types of node the validator will accept.</dd> -<dt>Taxonomy term</dt> -<dd>Ensure that the argument is a valid taxonomy term. This includes options to limit to specific vocabularies and can transform the argument to the right type depending upon the actual argument. Set the Argument Type option to the actual type of data that the argument being used is expecting.</dd> +<dd>This validator ensures that the contextual filter is present. A PHP NULL value (from eg. PHP default contextual filter code) will invalidate.</dd> +<dt>Content</dt> +<dd>This validator ensures that the contextual filter is a valid Node ID. You may select which node types the validator will accept.</dd> +<dt>Numeric</dt> +<dd>This validator ensures that the contextual filter is a valid number.</dd> <dt>PHP Code</dt> -<dd>You may enter arbitrary PHP code, similar to the php block visibility code, to determine if the argument is valid or not.</dd> +<dd>You may enter arbitrary PHP code here, similar to the "PHP code" option under "Provide default value" in "When the filter value is NOT in the URL" above, to determine if the contextual filter is valid or not.</dd> +<dt>Taxonomy term</dt> +<dd>Ensures that the contextual filter is a valid taxonomy term. This includes options to limit to specific vocabularies and can transform the contextual filter to the right type depending upon the actual contextual filter. Set the contextual filter value type option to the actual type of data that the contextual filter being used is expecting.</dd> +<dt>User</dt> +<dd>Ensures that the contextual filter refers to a valid user. If you select this validator, additional options are available to accept numeric user IDs, usernames or both, as well as to consider a user's role when filtering the view.</dd> +</dl> + +If you select the "Specify validation criteria" option to select a specific validator, you will have the option to select an action to take if the filter value does not validate. +<dl> +<dt>Display all results for the specified field</dt> +<dd>Selecting this option will return all values if the filter value does not validate, similar to "Display all results for the specified field" under "When the filter value is not in the URL" above.</dd> +<dt>Hide View</dt> +<dd>Similar to "Hide view" under "When the filter value is NOT in the URL" above, if this option is selected and the selector does not validate, the view will hide itself. If the view is a block, nothing will appear. If it is a page, it will throw a 404 and present a "Page not found" error.</dd> +<dt>Return Summary</dt> +<dd>If you select this option and the filter does not validate, a summary of all values that are valid will be returned, as in the option of the same name under "When the filter value is NOT in the URL above."</dd> +<dt>Display contents of "No results found"</dt> +<dd>If this option is selected and the selector does not validate, the value specified under "No results behavior" on the main view page will be displayed.</dd> </dl> + +<h3>Adminstrative title</h3> + +Located under the "More" group at the bottom of the "Contextual filters" menu, this option allows you to specify a custom name for the contextual filter. This may be particularly useful if you use the same contextual filter twice and you'd like to distinguish between the two filters. + +<h3>Grouping of contextual filters</h3> + +Even though contextual filters do not appear in the "<em>and/or</em>" user interface for sorting and grouping regular filters, contextual filters are always added to the <em>first</em> group of filters. Thus the order of the groups can cause the contextual filter to have entirely different effects on the results of a view that has contextual filters. Even though differences might not be apparent through the user interface. + +Multiple contextual filters are therefore always in the same "and/or" group of filters, and can not be placed in different groups. There is <a href="http://drupal.org/node/357082">an effort to add this feature</a>. diff --git a/sites/all/modules/views/help/basic-settings.html b/sites/all/modules/views/help/basic-settings.html index a063ff07a..be2cadc1e 100644 --- a/sites/all/modules/views/help/basic-settings.html +++ b/sites/all/modules/views/help/basic-settings.html @@ -1,4 +1,4 @@ -You choose the <strong>name</strong> of the current display. +You choose the <strong>name</strong> of the current display. This <strong>title</strong> will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc. When you use have many items to display, you have the choice to display them in different variants. @@ -8,11 +8,11 @@ When you use have many items to display, you have the choice to display them in <dt>Display all items</dt> <dd>All items will display, but you can choose an offset. The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed.</dd> <dt>Paged output, full pager</dt> -<dd>A Pager can be used to display items, with the possibility to select the next page and also the first and last page. When you have many items the query is very <i>expensive</i>. To avoid this, you can choose the mini pager. +<dd>A Pager can be used to display items, with the possibility to select the next page and also the first and last page. When you have many items the query is very <i>expensive</i>. To avoid this, you can choose the mini pager. You can also choose the number of items per page. If you enter 0, then there is no limit. Pagers also will respect an offset, if present. If multiple pagers are present on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add commas to your URLs, so avoid this if possible. Unless you're experiencing problems with pagers related to this view, you should leave this at 0. Enter the total number of pages to limit the number of values. When you leave the field empty all pages will show. -The <strong>Exposed options</strong> allow users to define their values in a exposed form when view is displayed. -You can choose "Expose items per page". With this option the user can determine how many items per page show in a view. Options for which label should display and what numberic options are also available. -Furthermore, you can choose "Expose Offset". When checked, users can determine how many items should be skipped at the beginning. You can define a label. +The <strong>Exposed options</strong> allow users to define their values in a exposed form when view is displayed. +You can choose "Expose items per page". With this option the user can determine how many items per page show in a view. Options for which label should display and what numberic options are also available. +Furthermore, you can choose "Expose Offset". When checked, users can determine how many items should be skipped at the beginning. You can define a label. </dd> <dt>Paged output, mini pager</dt> <dd>The pager optiona are the same as for the "Paged output, full pager" but you have no possibility to jump to the last or first items. </dd> diff --git a/sites/all/modules/views/help/display-attachment.html b/sites/all/modules/views/help/display-attachment.html index 9963b25e1..3dbdf88fa 100644 --- a/sites/all/modules/views/help/display-attachment.html +++ b/sites/all/modules/views/help/display-attachment.html @@ -1 +1 @@ -Attachment displays are 'attached' to another display in the same view. When the display is visited, the attached display will also be rendered and may be placed before, after or both before and after the original display. Attachment displays are often useful for displaying an argument summary view along with a page display that accepts arguments. This can be used to provide a kind of glossary. \ No newline at end of file +Attachment displays are 'attached' to another display in the same view. When the display is visited, the attached display will also be rendered and may be placed before, after or both before and after the original display. Attachment displays are often useful for displaying an argument summary view along with a page display that accepts arguments. This can be used to provide a kind of glossary. diff --git a/sites/all/modules/views/help/display-block.html b/sites/all/modules/views/help/display-block.html index 158cad073..9ac6d315a 100644 --- a/sites/all/modules/views/help/display-block.html +++ b/sites/all/modules/views/help/display-block.html @@ -7,4 +7,5 @@ Blocks <strong>do not</strong> accept arguments from any source; the only way to <li>Change the "Action to take if argument is not present" to "Provide default argument". This will bring up a new box called "Provide default argument options".</li> <li>The most common default argument type used for blocks is Node from URL, where it attempts to determine if the URL refers to a node, for example if visiting 'node/1' or 'node/1/edit'. User ID from URL is also very common.</li> <li>If you change the default argument type to 'PHP Code' (note: You must have permission to use PHP code on your site) you can enter PHP to define the argument needed. Simply return the argument.</li> +<li>If you are using a <strong>more link</strong> with a block, you must have a page display for that more link to attach to. The more link will not print if there is no place (no display) for it to link to.</li> </ul> diff --git a/sites/all/modules/views/help/display-default.html b/sites/all/modules/views/help/display-default.html index 309690aae..b619981d5 100644 --- a/sites/all/modules/views/help/display-default.html +++ b/sites/all/modules/views/help/display-default.html @@ -1,4 +1,3 @@ The default display is primarily a display to store settings, and isn't actually used anywhere within the Views system. It is possible for external programs to use the default display, but if they do they will (hopefully) tell you which display they will be working with. The default display is also a convenient display to use to embed into your site using PHP snippets; this is useful, for example, in node content, but this is something that should generally only be done by administrators. In general, you probably want to add either a <a href="topic:views/display-page">page display</a> or a <a href="topic:views/display-block">block display</a>. - diff --git a/sites/all/modules/views/help/display-feed.html b/sites/all/modules/views/help/display-feed.html index a5c0a6551..beddd0085 100644 --- a/sites/all/modules/views/help/display-feed.html +++ b/sites/all/modules/views/help/display-feed.html @@ -1 +1 @@ -A feed display allows you to attach an RSS feed to a view. \ No newline at end of file +A feed display allows you to attach an RSS feed to a view. diff --git a/sites/all/modules/views/help/display-page.html b/sites/all/modules/views/help/display-page.html index e54b3b97f..9ab849956 100644 --- a/sites/all/modules/views/help/display-page.html +++ b/sites/all/modules/views/help/display-page.html @@ -5,4 +5,3 @@ Page displays take their arguments from the URL. You can embed arguments into th Please remember that using a % placeholder makes the argument required. If you wish to have an optional argument, simply omit the % from the path. I.e. using "page/%" as the path requires an argument and visiting 'http://www.example.com/page' will not trigger the view. If you intend to embed a view manually into another view, it is recommended that the page display not be used for embedding. Select a different display type to embed. - diff --git a/sites/all/modules/views/help/display.html b/sites/all/modules/views/help/display.html index 5eca6fd9a..48b2475c9 100644 --- a/sites/all/modules/views/help/display.html +++ b/sites/all/modules/views/help/display.html @@ -1,5 +1,7 @@ Displays tell Views where the output should go. By adding a display to a View, you can have your view appear as a page, or as a block, or even as an attachment to a different display on the view. +Displays tell Views where the output should go. By adding a display to a View, you can have your view appear as a page, or as a block, or even as an attachment to a different display on the view. You must create at least one display in order to place a View on your site. + Each display can have its own settings, but when created, a display will take all of its <em>basic settings</em> from the <strong>default display</strong> which all Views must have. For most settings, there is an <a href="topic:views/overrides">override</a> button that will override that single setting for the current display. Overridden settings will have a mark in the summary for that display. All 'default display settings' are shown in the other displays in '<i>italic</i>'. When you override a setting, then it is shown 'normal'. Please keep in mind that when you are editing a setting on a display that is not overridden, then by default you are editing that for all displays. @@ -7,5 +9,5 @@ Please keep in mind that when you are editing a setting on a display that is not Overriding <strong>fields</strong>, <strong>arguments</strong>, <strong>sorts</strong>, <strong>filters</strong> and <strong>relationships</strong>, can only be done by overriding the entire group or none of them. To do this, click on the header for the filters or the rearrange button. Once you override, the display will then have its own copies of the fields/filters/etc and changes to the defaults will not be reflected on your display. With the <strong>Reorder</strong> button you can organize the order of your displays. -With the <strong>Analysis</strong> button the system checks the view and may give you suggestions if something is wrong. -You can <strong>clone a display</strong> by using the link in the header of the display. \ No newline at end of file +With the <strong>Analysis</strong> button the system checks the view and may give you suggestions if something is wrong. +You can <strong>clone a display</strong> by using the link in the header of the display. diff --git a/sites/all/modules/views/help/drush.html b/sites/all/modules/views/help/drush.html new file mode 100644 index 000000000..689ff3391 --- /dev/null +++ b/sites/all/modules/views/help/drush.html @@ -0,0 +1,13 @@ +There are some Drush commands available for Views, initially added in <a href="http://drupal.org/node/1079178">Drush command to revert views</a>: + +<ul> +<li>views-dev (vd) - Setup the views settings to a more developer oriented value</li> +<li>views-revert (vr) - Revert overridden views to their default state. Make backups first!</li> +</ul> + +Examples: +drush views-revert +[prompts the user with a list of overridden views to choose from, or to revert all] + +drush views-revert archive myview2 +[reverts the two specified views] diff --git a/sites/all/modules/views/help/example-bulk-export.html b/sites/all/modules/views/help/example-bulk-export.html deleted file mode 100644 index 33ce28e9e..000000000 --- a/sites/all/modules/views/help/example-bulk-export.html +++ /dev/null @@ -1,44 +0,0 @@ -This documentation focuses on the bulk export and version control functionality of the Views module. The following steps document how to export multiple views at once and create a module from the exported code that will allow you to revert any subsequent changes to your views. - -Assumptions: -- You have views you want to bulk export; we'll call them <em>myView1</em> and <em>myView2</em> -- You know how to install and enable a module - - -<ol> -<li><h3>Modules you will need</h3> -<p>Install <a href="http://drupal.org/project/views" target="_blank">Views</a> and <a href="base_url:admin/build/modules" target="_blank">enable</a> the following modules: Views, Views exporter, Views UI</p> -</li> -<li><h3>Evaluate the Current State of Things</h3> -<p>Navigate to the <a href="base_url:admin/build/views" target="_blank">Views Administration page</a>. You should have <em>Edit | Export | Clone | Delete</em> options next to <em>myView1</em> and <em>myView2</em>. Once we're done, "Delete" will become "Revert"!</p> -</li> -<li><h3>Bulk Export Your Views</h3> - <ol> - <li>Click <strong>Tools</strong> > <strong>Bulk Export</strong> to navigate to the <a href="base_url:admin/build/views/tools/exports" target="_blank">Bulk Export page</a> to export <em>myView1</em> and <em>myView2</em>.</li> - <li>Check the boxes to the left of <em>myView1</em> and <em>myView2</em></li> - <li>Choose a module name: my_views</li> - <li>Click Export</li> - </ol> -</li> -<li><h3>Create a Module from the Exported Views</h3> -<p>The results of the export should now be in front of you. Specifically, the results page should be composed of three code-containing regions. This code and the following steps are all you need to create a module that will allow you to revert your views to the state they were in when you exported them. - <ol> - <li>Create a directory called <em>my_views</em> within your sites/all/modules directory.</li> - <li>Create the following files, paste in the appropriate code, and place them into the <em>my_views</em> directory:</li> - <ul> - <li>my_views.info</li> - <li>my_views.module (add a <?php tag at the beginning of this file!)</li> - <li>my_views.views_default.inc (add a <?php tag at the beginning of this file!)</li> - </ul> - </ol> -</li> -<li><h3>Clear the cache</h3> -<p>Just to be safe. Navigate to the <a href="base_url:admin/settings/performance" target="_blank">Performance Administration page</a> and <strong>Clear cached data</strong>.</p> -</li> -<li><h3>Enable the Module Containing Exported Views</h3> -<p>Navigate to the <a href="base_url:admin/build/modules" target="_blank">Modules Administration page</a> and enable <em>my_views Export Module</em>. <strong>Save</strong>.</p> -</li> -<li><h3>Verify Presence of Reversion Option for Exported Views</h3> -<p>Navigate to the <a href="base_url:admin/build/views" target="_blank">Views Administration page</a>. The right of <em>myView1</em> and <em>myView2</em> should now read <em>Edit | Export | Clone | Revert</em>. Congratulations, you now have version control in place for your exported views!</p> -</li> -</ol> diff --git a/sites/all/modules/views/help/example-filter-by-current-user.html b/sites/all/modules/views/help/example-filter-by-current-user.html new file mode 100644 index 000000000..b7fdd05d0 --- /dev/null +++ b/sites/all/modules/views/help/example-filter-by-current-user.html @@ -0,0 +1,46 @@ +<p>In this example you will create a page that displays a list of the content authored by the current logged-in user. This will demonstrate using Views <em>filters</em> and <em>relationships</em> to dynamically filter the view's contents at display time.</p> + +<p>For this example, we are assuming you have a content type "Blog Post".</p> + +<h3>Creating the View</h3> +<p>The first step is creating a view for our content list page. Because the page will show the titles of content, this view is considered a "Content" type. Go to <a target="_blank" href="base_url:admin/structure/views/add">add new view</a>, enter the following properties, and click <strong>Next</strong>:</p> + +<dl> + <dt>View name</dt> + <dd>content_by_current_user</dd> + <dt>Description</dt> + <dd>List of content authored by the current user.</dd> +</dl> + +<p>Choose <strong>Show</strong> <em>Content</em> <strong>of type</strong> <em>Blog Post</em>. You can choose any way you wish to sort the content.</p> + +<h3>Creating the page</h3> +<p>Tick the box next to <strong>Create a page</strong>. Enter a page title and a path. For our purposes here, the default settings for the rest of this page are sufficient.</p> + +<p>Click on <strong>Continue & edit</strong>.</p> + +<h3>Creating the relationship</h3> +<p>In order to have access to the author of the content, it is important to create a relationship between the current content type, and users.</p> + +<p>Under <strong>Advanced</strong> in the right culumn, select <strong>add</strong> next to <strong>Relationships</strong>.</p> +<p>Select <em>Content: Author</em> and click on <strong>Add and configure relationships</strong>. Leave the settings as they are and click on <strong>Apply (all displays)</strong>.</p> + +<p>You now have access to the user data related to the content you are viewing.</p> + +<h3>Filtering the view</h3> +<p>Now you need to filter the view to display only content authored by the current user. This data is now available for the content because you have created the relationship in the step above.</p> + +<p>Next to <strong>Filter criteria</strong> click on <strong>add</strong> to add a new filter to your view.</p> + +<p>Filter the list of fields by selecting <em>User</em> next to <strong>Filter</strong> at the top. You now have more fields than before due to the relationship you created.</p> + +<p>Select <em>User: Current</em> from the list and click on <strong>Add and configure filter criteria</strong>.</p> + +<p>Since this field is only visible due to the relationship you created, <em>author</em> will already be selected under <strong>Relationship</strong>. This shows that the relationship you created is being used for the filter field.</p> +<p>Select <em>Yes</em> under <strong>Is the logged in user</strong>, and click on <strong>Apply (all displays)</strong>.</p> + +<p>If you have authored content of the type <em>Blog Post</em>, you should now see a list of those posts under the preview section at the bottom.</p> + +<h3>Saving & testing the view</h3> +<p>Click on <strong>Save</strong> to save the view.</p> +<p>You can test the view by going to the path you entered in the first part of this example.</p> diff --git a/sites/all/modules/views/help/example-user-feed.html b/sites/all/modules/views/help/example-user-feed.html index 6a28d8f14..64b2b42ac 100644 --- a/sites/all/modules/views/help/example-user-feed.html +++ b/sites/all/modules/views/help/example-user-feed.html @@ -70,4 +70,4 @@ <li>You can use this path for aggregating on another site. You can also attach the RSS feed to another display of view to make the feed link appear on that display.</li> </ol> </li> -</ol> \ No newline at end of file +</ol> diff --git a/sites/all/modules/views/help/field.html b/sites/all/modules/views/help/field.html index 65aa3f654..e9d9e609c 100644 --- a/sites/all/modules/views/help/field.html +++ b/sites/all/modules/views/help/field.html @@ -1,11 +1,27 @@ Fields are the individual pieces of data being displayed. Adding the fields <em>Node: Title</em>, <em>Node: Type</em>, and <em>Node: Post date</em> to a node view, for example, includes the title, content type and creation date in the displayed results). Fields may not appear on every display, because not all style plugins actually use <a href="topic:views/style-fields">fields</a>. For example, the '<a href="topic:views/style-node">node</a>' <a href="topic:views/style-row">row plugin</a> simply displays the node through Drupal's normal mechanisms, and fields are not involved. -For the most part, the field settings should be self explanatory. Fields will appear in the order that they are arranged in, and they will usually appear with the label they are given. +For the most part, the field settings should be self explanatory. Fields will appear in the order that they are arranged in, and they will usually appear with the label they are given. If you add new cck fields you will find them under the Group "Content". Search for the field name. With new modules the list of groups will grow. Modules can add new items with the <em>hook_views_data()</em> hook. If you do not find a field, consider whether or not you need a <a href="topic:views/relationship">Relationship</a>. -+You can override the entire field section - see <a href="topic:views/overrides">here</a> for more information. +You can override the entire field section - see <a href="topic:views/overrides">here</a> for more information. +When a field is added, the "Configure field" modal opens. It has a dropdown at the top that lets you choose what display this field configuration is valid for (ie, this display, or all displays.) + +You start by configuring three checkboxes: +<ul> +<li>Create a label: when checked, this opens a textbox that can be filled out to label the field. </li> +<li>Exclude from display: Loads the field, but hides it from general view. This is useful for grouping fields by hiding the group from the user's view.</li> +<li>Link this field to the original piece of content: overrides any default link set up.</li> +</ul> + +Style settings give you several options for wrapping an HTML element around a field; title, for example, can be wrapped in an H1-H6, a SPAN, DIV, etc. It can also be given a particular identifying CSS class of its own here. You can do the same with the label or do them both at the same time. This is part of the Semantic Views integration. Alternately, you can leave the default Views classes to identify the field and content. + +If you have No Results, you can customize that in this modal also. You have the options to count 0 as empty, or to hide the entire field if it's empty. + +Next up is the Rewrite results: all the options you need to rewrite the output of the field with tokens, custom text, a link, etc. If your field is output as a link using the <strong>Output this field as a link</strong> option, you can include the "Alt" text for a link hover in a Title attribute. This is important for accessibility. + +The last section is the administrative title, which just gives you a place to give the field a special name on the admin screen in case you have more than one copy. diff --git a/sites/all/modules/views/help/filter.html b/sites/all/modules/views/help/filter.html index 704ef2f6e..752617f3a 100644 --- a/sites/all/modules/views/help/filter.html +++ b/sites/all/modules/views/help/filter.html @@ -11,8 +11,10 @@ Some very commonly used filters: The above list is only a tiny fraction of the filters available in Views, referenced here to give an idea of the kinds of tasks filters can accomplish. When you do not find a filter type, you may need to choose a <a href="topic:views/relationship">Relationship</a> before the expected filter will show, or to install a new module that contains the requested filter. -When you click the Rearrange Icon you can first rearrange your filters, easily delete filters and select an operator: "AND" or "Or". By default the "AND" operator is selcted. At the lower right of the window is the new button "Add new group"r. When you click on it, you can drag and drop an individual filter to the new group "Group 1". For this new group and the default group you can select the "Group operator": "And" or "Or". To remove a group, remove all filters and click the "Remove group 1" button. +When you click the Rearrange Icon you can first rearrange your filters, easily delete filters and select an operator: "AND" or "Or". By default the "AND" operator is selcted. At the lower right of the window is the new button "Add new group". When you click on it, you can drag and drop an individual filter to the new group "Group 1". For this new group and the default group you can select the "Group operator": "And" or "Or". To remove a group, remove all filters and click the "Remove group 1" button. When you want that the user to select their own filter, you can expose the filter. A selection box will show for the user and they will be able to select one item. After that the view will reload and only the selected item will be displayed. You can also choose to expose the selection to a block, see <a href="topic:views/exposed-form">here</a>. +Taxonomy filters have been significantly altered in Views 7.x-3.x. D7 significantly re-organized taxonomy, there was a lot of duplicate taxonomy related fields and filters. Some of them were removed to try and reduce confusion between them. Implicit relationships to taxonomy have been removed, in favor of explicit relationships. If the filters you can find don't do what you need, try adding either the related taxonomy terms relationship, or a relationship on the specific taxonomy field. That will give you the term specific filters. + You can override the complete filter section - see <a href="topic:views/overrides">here</a> for more information. diff --git a/sites/all/modules/views/help/get-total-rows.html b/sites/all/modules/views/help/get-total-rows.html new file mode 100644 index 000000000..623b35fe7 --- /dev/null +++ b/sites/all/modules/views/help/get-total-rows.html @@ -0,0 +1,16 @@ +The flag $view->get_total_rows is used to force the query of the view to calculate the total number of results of the set. + +This parameter is TRUE by default in views that get all the results (no limit) or those which have a pager, so you always have the $view->total_rows variable populated in those cases. +But when you have a view that gets only a given number of results and no pager, the count query is not executed by default so you have to force it, i.e. in the hook_views_pre_execute so you have $view->total_rows populated for later use. + +This code will help you do that. + +<pre> +<?php +function my_module_views_pre_execute(&$view) { + if ($view->name == 'my_view' && $view->current_display == 'my_display') { + $view->get_total_rows = TRUE; + } +} +?> +</pre> diff --git a/sites/all/modules/views/help/getting-started.html b/sites/all/modules/views/help/getting-started.html index bb5ac2cbc..e05af40b9 100644 --- a/sites/all/modules/views/help/getting-started.html +++ b/sites/all/modules/views/help/getting-started.html @@ -21,4 +21,3 @@ Notes: 6) Don't forget permissions. Views installs with two default permissions. Users with access all views permissions will have access to all views. Users with administer views permissions will be able to edit and change views. If you are trying to restrict access based on role, make sure that the role does not have access all views checked. It helps to have something particular in mind that you want to accomplish when using Views. Here are a couple of ideas and a brief sketch of how to accomplish what you want. - diff --git a/sites/all/modules/views/help/images/views3-semanticviews.png b/sites/all/modules/views/help/images/views3-semanticviews.png new file mode 100644 index 0000000000000000000000000000000000000000..e01163a794a1ae8caa70bba4e7674a20beea2612 GIT binary patch literal 5611 zcmbVQ2T)U6w?6a^0s>M5y@-e)C@58=h#*K2k!}pa4G`%NY9K+->rY3ecjX48g%XN_ z5KthBbfktRTuLAWkdOc&@Z$a7d-K1Ud;d4@otZsn&9~Osd(ZyXIcI$<?yjW?AGZWI z004ZZw~g)r0Mk5UuyQgp5Tu*G9plF3f7>w#0Qft94yJTPen|$%0W-C@#ervIJ*gqE zs=4a=Cv?jJW)KYX^a}*a(7m@A5HE}Y89{>F0-^pesGlz&%ym|lfph=FZ~FO%2SPnO zVL+uouQmha{}T;_Jo*`W1_t$k0N1DjTnrD_PmhhCJ1q23AOryUAO8&J`Ezn;kel}- zMra_=)Lx&$fH{A{_KyO6p}rnKyX5k72FCHv=Ys>?Ai(Z%?D~I&-SqSEf%w7zN^b_1 zfwBJ#yAOqVLx8uWVR-;J*=TBHa6c?>V@CJ$uj5g;?I2Q=UCe#c*T2+op9_#R)ZgoH zdGPLT)kme|v4ooR$1?X$#S}N4=X}EA<ns@~he8F$eK8VG{1>~QSud?Qx+QifzkHl< zQkj?kH_*m3{N8ka1!iTVAP9V{wnMK`+L_k!qxN6NY6UId2x_=u%mn;V)+h}CXNbg( zSPthDCg6mBNt(8v-dw~f01&$)1)Mp_#0MA(4*px?n<K)SJ~lwZFOwAeMRVWN%tGz$ zd(qM#6erSb&Zz(9Fw;@XwpoXRHWA57oA#CYoo#@=ldnF9%{4)15dT^ef>ip@uvx$P z#hcott68#RAITX^(Q?U39i|!zye`%Qto8f^l36vBb=P*8yH3z;qKAo3B-&wsm5h@? zdLQo{tXCs{e37T86stKwN`o?&<CKNmPF3nmy{nfiW-=$6>tnaOC8?Wpo4#1el$T88 zR!5a{6OsAO^JK<msVboJn!n{W+pvogzkUB;m^uWMgq<&{C~pqmS*Fvd;HceEIF$s# zB4(=3oQ0iBJUjAp`KzSoPsh=qmf-cV(n7?+M;;Y#)ibq+@3p@3xL7|KA+9x}*QX{| zI|s?>Pdn6d+*Z(C+}?q+0Z8@Nm?+98ws}@UMTMerI2*tmAbl0!yrs_)eV6qw4co0} zbd}jKz0!$K1GADkr-1fMZe}Ni-Gr1j{LEnU+P7ekZ7>ySYpW8qX~M%R1XvDb$t62z z+l%m=2QKF>+~zCU`Kq`7xXCB(EOR^bBG0OWwj!$8l&l)d8f|l5v<#$;T=bZO4Zm-x zz~0Chcpp8MV;njqpxFx6lFYvph3Vi)lq+YvbxhtU&7u~+U+7a-Sl`l}&9)uqs$g&S zss?p9N>EMrW#Sdt$GdLQGarkNvNW4UF>s3uEb<jZrDWf+=^4t1<GQ|nsOk8zr^j7l z2za=_I)se~-)KgNV*}&~G0!%xOo-%vXOqo6$9B1TSR4i#->q)j{fbD)?;jEFDe$U@ z;-~0!yD!iwzUgPwZK=-5BFPqc!bv)^0wkv+?G*Y#{ovv0=tv0DOrbS3*YDUVoN)c? z$v`974)KULQ7z_#8k5bE+Qhf~^Q`HY0>~>m_O`7?+VUBv-M?Giz5_q|kg3wW*HH>& z?ooolN_{`ciN19*>Eej?SGJ%kqflJZILmxmdS4NaF4vSl6tyr>NZc=d!Ir>=S8y#| z`3Jl3Qf!Ob(7efuP7VL*cb-ZBXV=^j)8CQ$Z}|Qj7bNq81P;qdoF9EntiVkL=U=i> zR%w|=L77}cy;xx}uRe6j0c3{-2j_!dR)Il$7<;~{m+sQzNiF-2{22ieiJ(y(47&A2 zC@;WXr4c)pF{*8AcT!u>@qRb>2c=jYiv~#pu4B0dxRN|A5t@UHZc2Yy`cdaF7UU!b z#7lJx;b2+@T5{%Gt^j87rXg@*?XvqIVIO*+rVoGit66sEMEshzqIz~KplQI^(B%^x zO@Daz^1jRKPB_T9r(q`zNGSyX|8gJ+)dt9ed4W5j0n<m{4^<kanWKFwx6hsxRFhEg zYgcfKV*#Ez?Y3xI?jYM*_}ewTj$fOFa&MK<tJ4nV^sZu$ixG#O)UH<))8h1dK3+ME zP>a!YD8BsK2KpNEczpbbqEhI*Fwdf?gpYI_HYKzv?oyH8kVhT|+d<=PVZ-XiiYRlp zDaw0Lh11AIRF0iS(!qi$O;12Zco6uO!!)z>?eWZ)p^e=|lNQ_n$Sb!I3LCkA`i36u z&H@$RuSma_bg#u&0R`)O$qAs;^9*R=K7L#Xm7^zXl=TF8AC1u2Yb89cs5EHrqI@$H zYyNB1eH1?;ld0Emfp^Mu?dHI$@1d1ME56LGtYoyrr*O8^cI3v4L2;tp)Z2JrF90@n zC-%+eb7$B&#r0Xf`YNas#K|pjzo|uL&1~K5c&@noT9x%Oj!LRGlZ5b&cmQy(Lif-Z zikc_J>;A~9%<TK(w1e;YIw=KNE9izKJ1QyaZQ8*AJk$x5esAU&s9EB5()(H+$ht1s z1BV=pht6*J9@3DJjG$^6<OF@sY7Plsdct(V_p5k)_}F7vM@OV#J=6l<=!0+Dk1cha zhSX1$Vunhznnk36V$%n)Bq<!(aRZ#qILl=M7Gs8`E$c)*K^}GB2f*+M`~{3xY#*Sh zWjJ1xaz20bD81}TIW&D3d<3WUg{I$|JI)L}s<%N-mF3&%RE1PM=35B>?wT!wg{I~p z*7vPTNL}ttHgv)OE%VmSSnlR^)wQW?JF^X^2D~^bZP|z)Fe~F5h_!r>u{9_>Ikagh zHW&=ak*AFpOkFk09lL-suSjDgN;&0ih)lbukjJ1&2^{hm-w2f~u4ugWSkJ^aQN3zX z0hOj&1$8dAfY)(wN8elk3rT1DR)ddnF~^9#&-Kl<mO<)0S4)o9_=3hH+<NaI8z}a? z%&E`~rB&C1Z%6iKQA-Cq;P*#|JtmUv2F|prEhC3Afbo2yGH~K?k{mxek{gg!k{*08 zED3Z!`kCav6fx;vV3znR!%3w`g+jbku}ez))oh=HOGtHDq-VTAG-+$f%SENeQr&MT z$E|!)+DH+OJWp-nXpye$e-#p<$VTq!>ROsTpRz#Ar?f0i+sz7x<YO5&EAs-qGmA zdA^+p-(I!4XBOfst8*k_WZja3Y*7oY`gkb(;-1Qf4*SL4q>ju0c)!ks-w?X*!Vr8b z|9NYGKRCwrhjV|p^L&$(*V%~%wI43~9jdi2{<xkgggZB6U9&y^$dnl9db`7wAj&S8 z4MMytEqvmf1g>ZN?l3j@CO=#wHFRGiUVVA)+Js*XTDCTHCgte3BSTo$YVIF1{gp3I zS#90Lg#^`9JERZ0scM!_boa_TRBpdnF<s`o^E}P-;*49(vqO(S=x&Fo@#dZaey`=b zd>hk;un=E#-P~0+n#H$<uPS8jLeDX*;&$@6(w+y+i<^4fu>xihm(}<Y3l9a7F>e`J zlt;K^9(i8Ad_{`S9f#uITR1&~c@6(e^XN_kfA-1b5pGR6m6eAYIHIcWWMb+M?P9F3 zc^5}?L@w+!m=X87oZR@P_E%kI!Pm0|!u=nHn-fo;Y{2XfpdAaI?~odvDp1~8KD&N^ z^FWE$=MNEZst&5}u3)l)>?^5<g6<Lz!u>N8*i8!bYI-krxVie}EoDt4?P1)olP>!X zOvkTfuD>_~3fu}G&fPZP;#YX*|404&2V?%myT89}KJM%nM;?4JCMh=bJbxOUloA`5 zc*88{^laS5)`fwE=<%W_Zr7F;agOf!Uj1z^imK7*{(*reX?CE!EA)SSg#WtcXxIY_ zwS_Ix^IQe=;C_S`K>H)dMXOdlEF9Bft!q2J>j)b6@bCx*+1t`XkN1YSKLOF7>Sl#Z zl=3U$A))}MgMySW;eqY0w%bpKv3}`Dw)j<mwW^jq-*UxB->a%cvO7zpJ9}B+yvLnp z11=hyeq}JTc6xtpbmNYfSw`Q>*dv!icdiG(j+1QB2tkV1Q=TaFeZs=YEog#d(voO1 zOBy10`Cmr4f>@iZ@(Nfqnb%oi7xNpGon!g?D`}GbAViMN5*&ruMMGNNVCB@kv1J|K zujq1E4oWaFHi2->Qc$Oxdw=;5I(?hCn%K2oH2*Mls6EaZ%C2j#O><Qc_0q}+h!qiL z*&5f6|M+cl3Y=tGJpgE$t>?Mh=k?PA4Ll-}t!hVI4$qv=dGe~Rn>S(_9Eh*Ya%c_i znQ$gTR!L~1TtpYlB*Yxo_$w)S?pomq=DUil<TO8no@~PmUsKixjD=(_y4zVbU2Y8k zaL=&|EWm3{PvAs+H2eS2;BM<9bxCfnoXq{P8w^B0oE%R=AgJ!4ZpRHY(o!=nYF7<t z*Km)M&FJq~4`Knj6_URhX)}tT&J#@YSJT;G+WFZAEbWQLtgx&3!c0}v^8)WC-dPGa zs7jI(w49q|f^Rn;G-eL6)#TI(a4{(1@uW#q9_>1en0=)^1^1~0{F=AeNcjwSS1J7` zW1%tOC(Yj+EsW8xy|-Om7^6UHHdGOdmfdVT9Jo!gr(cr>zd9Rm%Z!D=ypt6umNIhv z#bPZd$q%QT?vt4!V)@OiDYf8-n8j1tOcVGike6H+ZCSdb#HH$LA**?Fz+2Cw7m@9v zqGgdD!Z)8LGEgLDvC<29J|r}<)^Rab=ko%4ba;9}mvvr$KYXVnNb;MjsRn(gdsi#r zI$&uw`A^2gXFQVVUkZ@Sjx`Q7`M*#S4BTV;w_FQtEoGd0=L5O7`J^ghq6>apy4`W2 zcH~m2LybOhRxrsUB*zBg{}!cJ{`xeNf8-us@Bc&FPqNGB@x+H8wh@-K3g8G1U^P8T zhP)E$7otG{k8M8u13oQg%mPHZWoWt*q&}2u04{k8w=I4TvK_s{D+pNH5Uz3A5PEqf z0QalE6crQlI6Yf6!rQz4EaHa@x6qCuYAb8aC|&->$<1mNP}D0EQOyX5j8MslmgpcQ zxa>}~wJtqptXM?_UN;VyUw7!g`JVDQTG&Q(kO1Rnuiv>NeYhlWG({c%LaJV?GRzzy ztsOuPyYuzAL>qA~_ORbH!cZF%ptwf@>MuPnsW*0dGJUp}7%YR0MXX8G7cR$1rQE71 zERXU+?7KWF1tY^yHeWj);U03um^t6U@+jnRQcb!MPnc>_|D^YUS2aqlZJt*bLm$3k z<v0}5Xr4Xc-k6~_rC`F+{wCgIFrg&Kb@GvD95lEjPH}3d?Ki&0?ge)LL9>B{3zi-$ zN&fv`xOlpH$ODpUaKYivhOX;+fV;hVtTZ)qI>Z=XYD`vx9D7%})Vk>0BF;+=xx9(= z4~-EKCS>@Yn{iqggpfdO9ZM${B(t8iH8=maCPvaY{#QNxH=0=_a%MF_V|GA+vW1~` z^Rok6sJhMAqb`%V4PQ?>8Gq2?RY|sIXcoAhlS?Y#AK$GM&^fFXX6pyEYj(YmFki_; z{uuSe3*BUm9=R_%SPQeGeHBqwyA5dGLWw0+m6soM53~_}4+^zkP>mo|6tQofw(e?c zT5YaCi9ypNt?dDmV$GuUW;?T}jZ$#a$bRVDe$|+^dMruVyV>b&@QekvTnX_0SG_jO z_A2~*KRvyMhL7_C;l)Nnlxt?jZD)ha+%j?ez5*c<(=X9%^PTDajCs+>-6}A}nFvz` z*<OYdlCo`ypVxWFOF`XZ<GVJR>KCz5Sbx_$Z$yDKHW<=)#;=X;wS)@tj=*!w8S-!v zL{^4(R|&1O8MY?gF=qdTo(#={o&1XOe$$oy;h|Sq!3SQacjBv1dn4f<7N5j}YIviC zHI|i<l}pq{939tz4!DQjGue?hDv}*tse%naUR|9yi~tVQDf}2*A=MxMyp=3Cy?Q^z z*7}75c|2ULg;RZDATpm4bmJ^JVVmnL05;H1*%SSpY^1t}&}-yOwUJxFxyZ(ivEzF; z(VnS5`~O|eC2%mxuv-f_0^b2uH2B2@;@qfDb{kLe^ZM8GZ%cSb(K?I88E;khwvr}r z;<=Z69>Hn_layfO%d2nQ2gSt1GXK05*R-9LRaEj%5S*mP+syZ|dKhBE3~0_}xmbO> zt7y};`?=q1chn0^?&8C&%u`<;_q6%K9@1+uNPF8qOjE<6NIlf*ElNrc5A$&&NMo#J z1nS=>xswA0~u5TdNx~czB86)X{1wFuXY=Qx)_yRv>i>ySK}BfbZYRlcp=jz)xOJ zjN_0y-fuL-JYL<u{0>VfImF57*2smZ?P%p8j`mnSmj#BQ(dgcnzH@D-4~HfT!tHAu z-nbHHhnuzN8T?8i<Eyf2wbY3XBQFBTGUXi7t;S(!NIB~0cY!X$zLJ!1C~YxELTcho zi<WQRzAgVyx7zAN-WBY#A?k9Cd_=a|GlzW#9%wCvgOMINApa!K_ax&1tI{-Z)nsq1 z<5d|ejcXr=D>!8BTKR)>q?#P{Ip%&(lb$2z>a6(Cgj6}CrY8+*mn2&9^FC>!srQ5s z8t#!tm0G+eM>ZNrE#J7gm_C{9K8~80B)xM=x}BKo1ETTX@CB(nqk-MXANViOaEix{ zA$EsBi()TTEiT_x<=5FKaWj1^b$h%AKPH3D3d!(H$k9D9dJiO&HmBjW$ET+J&P_bS z>Sl=%m?l(l;`nuhSl|uNcES?bSEi6mN(@tq33h`RkM|)p*}rm7uk1jI>nCA6wV~F8 z<Y5cBcoc`I*LzP5di=h?G`X}QRqQD8U~O&f@Gx@y5nvTZza*q{S*o^JTR_5rlaOd} zIhIi~WEuQzC+TlG3x8b#2A8BoY|VF!eFA`Y^;g{2uK)nE!vX-jK9Z@Gxxw-_^raJ{ PrwN$evNS>)y2Shk1dNin literal 0 HcmV?d00001 diff --git a/sites/all/modules/views/help/misc-notes.html b/sites/all/modules/views/help/misc-notes.html new file mode 100644 index 000000000..a9d318f55 --- /dev/null +++ b/sites/all/modules/views/help/misc-notes.html @@ -0,0 +1,12 @@ +<!-- $Id: $ --> +<h3>Image Assist & ImageField Assist</h3> +Under certain conditions these modules can block access to the header input section of the admin. +They need to be disabled on certain views paths. To do this go to +Image assist ->Access settings +check "NOT on specific paths": +and enter + +Drupal 7.x has different paths +admin/structure/views/ajax/display/* +admin/structure/views/ajax/* +For futher reference please see <a href="http://drupal.org/node/415990">this issue for more information</a> diff --git a/sites/all/modules/views/help/new.html b/sites/all/modules/views/help/new.html index f33bb8ff5..0951f3384 100644 --- a/sites/all/modules/views/help/new.html +++ b/sites/all/modules/views/help/new.html @@ -1,4 +1,22 @@ -Views 2 is the newest major release of Views and it is specifically coded for Drupal 6. Views 2 retains all of the core functionality of Views 1, together with a completely revamped user interface and a large set of new features which greatly expand upon the original feature-set of Views 1. This document is a side-by-side comparison of Views 1 versus Views 2 from a user's perspective, detailing the UI changes, some new ways to perform old tasks, the cool new features of Views 2 and how these features can be used to address some of the shortcomings of Views 1. +Views 3 is the newest major release of Views and is coded for Drupal 6. Views 3 retains all of the core functionality of previous releases, together with a completely revamped user interface and a large set of new features. + + +Major new features (these need help files): +<ol> +<li>Views Or has been incorporated.</li> +<li><a href="topic:views/semantic-views">Semantic views</a> have been incorporated.</li> +<li>The Jump Menu style has been added.</li> +<li>The Panel Fields style has been added.</li> +<li>Pluggable back ends</li> +<li>Pluggable text areas, pagers, and forms</li> +<li>Translation plugin</li> +<li>Exposed sorts</li> +<li>Reliance on CTools</li> +</ol> + +Everything below this point is subject to change based on the new Views wizard and UI in 7.x. + +<p>Note: Only UID 1 or users with the "Use PHP code" permission from the phpfilter module will be able to import views.</p> <h2>Admin interface</h2> The first thing that pops out after you install Views 2 is the radically different admin interface: diff --git a/sites/all/modules/views/help/other-help.html b/sites/all/modules/views/help/other-help.html index 65d93e2b6..a2100f398 100644 --- a/sites/all/modules/views/help/other-help.html +++ b/sites/all/modules/views/help/other-help.html @@ -1,10 +1,9 @@ -There are many tutorials, podcasts, and a few books on Views that you can turn to for further help. - -Books: -<a href="http://www.drupal-building-blocks.com">Drupal Building Blocks</a> is the Views' author book; check <a href="http://www.drupal.org/books">the Drupal.org books page</a> for a fairly comprehensive list. - -Videos: -See <a href="topic:views/demo-video">this page.</a> - -Google. Many Drupal shops put together helpful tutorials and publish them to Drupal Planet, not to mention the countless users of Views who do it for the community. - +There are many tutorials, podcasts, and a few books on Views that you can turn to for further help. + +Books: +<a href="http://www.drupal-building-blocks.com">Drupal Building Blocks</a> is the Views' author book; check <a href="http://www.drupal.org/books">the Drupal.org books page</a> for a fairly comprehensive list. + +Videos: +See <a href="topic:views/demo-video">this page.</a> + +Google. Many Drupal shops put together helpful tutorials and publish them to Drupal Planet, not to mention the countless users of Views who do it for the community. diff --git a/sites/all/modules/views/help/overrides.html b/sites/all/modules/views/help/overrides.html index 586f375bc..08fb356bf 100644 --- a/sites/all/modules/views/help/overrides.html +++ b/sites/all/modules/views/help/overrides.html @@ -4,4 +4,3 @@ If an item is <strong>using defaults</strong> then it is using values from the < If that is not what you intend, you must click the <strong>override</strong> button. Once overridden, that display now has its own version of the value; modifying it will not modify it for other displays. You can override in the settings of the non-default display when you are clicking on the header of the section or on the rearrange button. For <a href="topic:views/relationship">relationships</a>, <a href="topic:views/argument">arguments</a>, <a href="topic:views/field">fields</a>, <a href="topic:views/sort">sort criterias</a>, and <a href="topic:views/filter">filters</a>, each of these must be overridden as a group! In other words, you cannot override a single filter, but instead must override all filters. A message will appear on the item to let you know what its status is, but you can only change the status by clicking on the header or the rearrange button for that item. - diff --git a/sites/all/modules/views/help/path.html b/sites/all/modules/views/help/path.html index 142534cba..eb44de791 100644 --- a/sites/all/modules/views/help/path.html +++ b/sites/all/modules/views/help/path.html @@ -4,4 +4,4 @@ You may also use placeholders in your path to represent arguments that come in t <em>Note:</em> Views 1 used <strong>$arg</strong> for this kind of thing. $arg is no longer allowed as part of the path. You must use % instead. -If multiple displays <strong>within the same view</strong> have the same path, the user will get the first display they have access to. This means you can create successfuly less restricted displays in order to give administrators and privileged users different content at the same path. \ No newline at end of file +If multiple displays <strong>within the same view</strong> have the same path, the user will get the first display they have access to. This means you can create successfuly less restricted displays in order to give administrators and privileged users different content at the same path. diff --git a/sites/all/modules/views/help/relationship-representative.html b/sites/all/modules/views/help/relationship-representative.html new file mode 100644 index 000000000..cf7feb5b7 --- /dev/null +++ b/sites/all/modules/views/help/relationship-representative.html @@ -0,0 +1,14 @@ +A representative relationship obtains just one object from the linked in objects. + +This is best explained with an example. Suppose you have a term view that shows you the terms in your vocabulary: Horse, Cat, Aardvark. +In addition to the term names, you want to show the title of the most recent node in that term. This would give you a view that shows: Horse - latest horse node title, Cat - latest cat node title, Aardvark - latest aardvark node title. +Each of these is the title of the <em>representative node</em> for that term, chosen by creation time. + +Any sort criterion can be used to choose the representative node. You might instead want to show the node with the most comments for each term, the first node in alphabetical order, or if you have a voting module installed, the most popular node. + +The options for a representative relationship let you choose a sort criterion and a sort order. This determines how the representative object is chosen: the first object returned by the sort is shown. For example, choose 'Node: title' and 'Ascending' to get the first node by title as the representative; or 'Node: comment count' and 'Descending' to get the node with the most comments. + +<h2>Performance</h2> +These relationships require a correlated subquery. This can be slow to run on large amounts of data, as the subquery must be run for every row of the main query. + +For more on this topic, see the <a href="http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html">MySQL tutorial on group-wise maximum queries</a>. diff --git a/sites/all/modules/views/help/relationship.html b/sites/all/modules/views/help/relationship.html index 47a659d1e..2e3c09ca0 100644 --- a/sites/all/modules/views/help/relationship.html +++ b/sites/all/modules/views/help/relationship.html @@ -12,4 +12,6 @@ When you add the "User: name" field, you will be presented with a select box. Ei Another example of relationships involves the <strong>Files</strong> table. In Drupal, files are related to users, but files are not necessarily related to nodes. However, the upload.module allows some files to be attached to nodes. The only way for Views to deal with this discrepancy is with relationships. When creating a 'node' view, it's possible to add an uploaded files relationship to get file data for nodes that were attached with the upload module. It is also possible to go the other way; from a files view you may add a relationship via the Upload table to view information about the node. +Drupal 7 made significant changes to Taxonomy. Because of this, many taxonomy functions Views can perform are now part of relationships. If you can't find the filter you need, add either the related taxonomy terms relationship, or a relationship on the specific taxonomy field. + You can override the complete relationship section - see <a href="topic:views/overrides">overrides</a> for more information. diff --git a/sites/all/modules/views/help/reports.html b/sites/all/modules/views/help/reports.html new file mode 100644 index 000000000..2a585fab2 --- /dev/null +++ b/sites/all/modules/views/help/reports.html @@ -0,0 +1,3 @@ +Visit <a href="admin/reports/views-fields">admin/reports/views-fields</a> to see an overview of fields usage across all the views. + +It's useful to check for unused or misused fields. diff --git a/sites/all/modules/views/help/select-multple-nids-contextual-filters.html b/sites/all/modules/views/help/select-multple-nids-contextual-filters.html new file mode 100644 index 000000000..433d751ce --- /dev/null +++ b/sites/all/modules/views/help/select-multple-nids-contextual-filters.html @@ -0,0 +1,28 @@ +We assume that you have a properly configured view at this point. You should have a page or block display with fields/node to be displayed in it. + +<ol> +<li>In the views administration screen add a new 'contextual filter' using 'add'. You will see a configuration screen appear as a modal.</li> + +<li>In the 'Filter' jump menu that you now see select 'Content'. A list will appear below the jump menu.</li> + +<li>In the list look for 'Content: Nid', and check it. </li> + +<li>Press the 'Add and configure contextual filters' button. You will now get the configuration screen for 'Content: Nid'.</li> + +<li>Under 'When the filter value is NOT in the URL' select 'Provide default argument', and leave it set at 'Fixed value'.</li> + +<li>In the field 'Fixed value' add the Nids of the nodes separated by a '+' that you want to show by default.</li> + +<li>In 'When the filter value IS in the URL or a default is provided' choose 'Specify validation criteria'. Now select the content types you want, or leave blank for all nodes.</li> + +<li>Check the 'Validate user has access to the node'. This will check if a user has permission to view nodes, that are going to be displayed</li> + +<li>For the 'Filter value format' select 'Node IDs separated by , or +'.</li> + +<li>Select the MORE link.</li> + +<li>Check 'Allow Multiple Terms per Argument' and press 'Apply (all displays +)' (or choose a particular display in the dropdown at the top and Apply (this display)). </li> +</ol> + +Preview should now show nodes, that you selected as "default argument". You can now pass arguments to your view, to select custom node IDs. If you provide no argument, default will be used. Save the view when ready. diff --git a/sites/all/modules/views/help/semantic-views.html b/sites/all/modules/views/help/semantic-views.html new file mode 100644 index 000000000..ef645c6d1 --- /dev/null +++ b/sites/all/modules/views/help/semantic-views.html @@ -0,0 +1,18 @@ +The <a href="http://drupal.org/project/semanticviews">Semantic Views</a> module has been mostly incorporated into Views 3.x. Semantic Views is still around for people who need it, though. For some details on how the original module is different from the Views implementation, please see <a href="http://drupal.org/node/1013876">this issue</a>. + +Semantic views help you insert markup of your own from the Views UI, so that you can fairly easily override the default markup without having to restyle via templates. + +As a usage example, + +In a view with a field: +<ol> +<li>Configure the field. (Click on the field.)</li> + +<li>In the modal that opens, scroll down to <strong>Style Settings</strong>.</li> + +<li>Choose one or more of the three <i>Customize</i> options. This will reveal a dropdown menu where you can choose from one or more HTML tags to use on that field and allow you to add a CSS class specific to that field should you desire.</li> + +<li>Decide if you want to keep the Views default classes. Unchecking this box means your markup is *it*.</li> +</ol> + +<a href="path:images/views3-semanticviews.png"><img src="path:images/views3-semanticviews.png" /> diff --git a/sites/all/modules/views/help/sort.html b/sites/all/modules/views/help/sort.html index 9a5640fc1..322537ed3 100644 --- a/sites/all/modules/views/help/sort.html +++ b/sites/all/modules/views/help/sort.html @@ -1,5 +1,7 @@ Sort criteria determine what order the records are retrieved from the database and displayed in; generally, all you need to do is pick a field and choose ascending (1, 2, 3, 4) or descending (4, 3, 2, 1) and it will be done. If you have multiple sort criteria, the second (and later) items only come into play if the first item is the same. +In Views 3.x, sorts may be exposed just as filters are. Note that if only one item is exposed for sorting, the dropdown menu created by the exposed sort will only have one item in it. Some users may find this odd. + Different data types sort just a little bit differently from others: <dl> <dt>Number fields</dt> @@ -22,3 +24,5 @@ This is because these fields sort purely by characters, and not numeric value. i <dt>Date fields</dt> <dd>Date fields often can have a 'granularity', which is a way of making similar dates actually be the same date. Take two dates that are close to each other: <strong>May 1, 2007 5:30 am</strong> and <strong>May 1, 2007 9:45am</strong>. Without granularity, the two dates are compared and the first date comes before the second date. However, if the granularity is set to 'day' it only looks at the parts of the date up to the day: <strong>May 1, 2007</strong> and <strong>May 1, 2007</strong>. At that point, they are the same, and the sort would move on to the next sort criterion.</dd> </dl> + +You can override the complete sort criteria section - see <a href="topic:views/overrides">here</a> for more information. diff --git a/sites/all/modules/views/help/style-comment-rss.html b/sites/all/modules/views/help/style-comment-rss.html index c047ee726..5ce1dcd0d 100644 --- a/sites/all/modules/views/help/style-comment-rss.html +++ b/sites/all/modules/views/help/style-comment-rss.html @@ -1 +1 @@ -This row style is only available to RSS styles. It produces XML necessary for an RSS feed for the comment. \ No newline at end of file +This row style is only available to RSS styles. It produces XML necessary for an RSS feed for the comment. diff --git a/sites/all/modules/views/help/style-grid.html b/sites/all/modules/views/help/style-grid.html index cc2e098ca..463e2bdc0 100644 --- a/sites/all/modules/views/help/style-grid.html +++ b/sites/all/modules/views/help/style-grid.html @@ -7,7 +7,7 @@ The <strong>grid</strong> style will display each row of your view within a grid <tr><td>row 13</td><td>row 14</td><td>row 15</td><td>row 16</td></tr> </table> -The above uses the <strong>horizontal</strong> alignment, where rows are added into the grid from left to right. +The above uses the <strong>horizontal</strong> alignment, where rows are added into the grid from left to right. With a <strong>vertical</strong> alignment, rows will be placed from top to bottom, like this (your <strong>row</strong> results will appear as columns): <table width="100%"> diff --git a/sites/all/modules/views/help/style-grouping.html b/sites/all/modules/views/help/style-grouping.html new file mode 100644 index 000000000..8b0c9a7a4 --- /dev/null +++ b/sites/all/modules/views/help/style-grouping.html @@ -0,0 +1,7 @@ +Many styles can be <strong>grouped</strong>. For styles that can, there will be a 'grouping field' option; pick one of the fields to group by. This grouping field will be displayed as a header, and all rows will be displayed beneath it. + +If the style is not <strong>grouped</strong> then the corresponding style output template will by invoked once when displaying the view. If the style is grouped, then the style output template will be invoked once per group. The text if the grouping filed is passed to the template in the <strong>$title</strong> variable. + +Views is very naive about <strong>grouping</strong>, and it can only group on one field. It doesn't understand anything about which object (node, comment, etc.) the field belongs to, and doesn't make any smart grouping choices based on the parent object of the grouping field. The grouping field does not modify the views SQL query - grouping is handed after records are retrieved from the database. + +The devel_themer module is known to break grouping. If grouping is not working, please check and make sure the devel modules are disabled. diff --git a/sites/all/modules/views/help/style-jump.html b/sites/all/modules/views/help/style-jump.html index 7f7a13e00..a579b8b5c 100644 --- a/sites/all/modules/views/help/style-jump.html +++ b/sites/all/modules/views/help/style-jump.html @@ -1,4 +1,3 @@ -<!-- $Id$ --> The <strong>jump menu</strong> style will display each row of your view within a jump menu. This style requires that your view's <a href="topic:views/style-row">row style</a> is set to <a href="topic:views/style-fields">fields</a>. To properly configure a jump menu, you must select one field that will represent the path to utilize. In most cases, you will need to rewrite the output of this field. You should set that field to exclude from display. All other displayed fields will be part of the menu. Please note that all HTML will be stripped from this output as select boxes cannot show HTML. diff --git a/sites/all/modules/views/help/style-list.html b/sites/all/modules/views/help/style-list.html index 71fcfa43c..86355a51a 100644 --- a/sites/all/modules/views/help/style-list.html +++ b/sites/all/modules/views/help/style-list.html @@ -17,4 +17,4 @@ You may select whether or not the list is <em>ordered</em> which just means whet The list style also uses a <em>row style</em> which means that it doesn't care what the actual output for each row of the view is. -If you need information about using CSS to style list views, you may find this <a href="http://www.alistapart.com/stories/taminglists/">A list apart guide to styling lists</a> useful. \ No newline at end of file +If you need information about using CSS to style list views, you may find this <a href="http://www.alistapart.com/stories/taminglists/">A list apart guide to styling lists</a> useful. diff --git a/sites/all/modules/views/help/style-node-rss.html b/sites/all/modules/views/help/style-node-rss.html index 9cce41439..7a97bdd56 100644 --- a/sites/all/modules/views/help/style-node-rss.html +++ b/sites/all/modules/views/help/style-node-rss.html @@ -1 +1 @@ -This row style is only available to RSS styles. It produces XML necessary for an RSS feed for the node record. \ No newline at end of file +This row style is only available to RSS styles. It produces XML necessary for an RSS feed for the node record. diff --git a/sites/all/modules/views/help/style-node.html b/sites/all/modules/views/help/style-node.html index 91b24eb73..928980f20 100644 --- a/sites/all/modules/views/help/style-node.html +++ b/sites/all/modules/views/help/style-node.html @@ -5,7 +5,7 @@ Because the output is run through the standard node template mechanism (typicall Views does add an extra 'suggestion' to the list of possible node templates: <strong>node--view--VIEWNAME.tpl.php</strong> -- you may use this to theme a node specifically for the view. This can be handy for creating very small teasers and the like. You may opt to display the full node body or the node teaser, and you may add the node links (such as the 'comment' links that appear after a node) or not. - + Because of this behavior, <strong>the node row style does not utilize fields</strong> and the Fields section will not be displayed. <strong>Please note that this row style performs a node_load() for every row, and as such can produce a lot of extra queries.</strong> Sometimes this is necessary, but it can have a negative impact on your site's performance! diff --git a/sites/all/modules/views/help/style-row.html b/sites/all/modules/views/help/style-row.html index fce38d5ff..a8406d358 100644 --- a/sites/all/modules/views/help/style-row.html +++ b/sites/all/modules/views/help/style-row.html @@ -1,8 +1,11 @@ -A row style is an individual style to display only an individual record within a view. You can choose between <a href="topic:views/style-node">node</a> or <a href="topic:views/style-fields">fields</a>. For example, a node type view would display one node per row; a user type view would display one user per row. +A row style is an individual style to display only an individual record within a view. You can choose between <a href="topic:views/style-node">node</a> or <a href="topic:views/style-fields">fields</a>. For example, a node type view would display one node per row; a user type view would display one user per row. -When you choose <strong>fields</strong>, you must have entries in the <a href="topic:views/field">Fields</a> section to produce an output. To set some options for fields, read <a href="topic:views/style-fields">here</a>. +When you choose <strong>fields</strong>, you must have entries in the <a href="topic:views/field">Fields</a> section to produce an output. To set some options for fields, read <a href="topic:views/style-fields">here</a>. Some row styles use <em>fields</em> which means you may select from the available fields to display. Others row styles do not - they are able to use the base type and create a display. Usually, row styles that do not use fields produce less efficient (slower) views, so bear this in mind when contemplating the performance of your site. -+When you choose <strong>node</strong> the complete node will display through Drupal's standard <em>node_view()</em> function. You can choose some <a href="topic:views/style-node">options</a>. +When you choose <strong>node</strong> the complete node will display through Drupal's standard <em>node_view()</em> function. You can choose some <a href="topic:views/style-node">options</a>. +When styling views, it's important to realize that the unformatted styles will take the majority of styling from more specific templates. In an unformatted style, the row style will provide theming. For instance, in a view that uses fields as its primary data, the views-view-fields.tpl.php will provide the theming. + +Mustardseed created a videocast on row theming that can be viewed <a href="http://mustardseedmedia.com/podcast/episode30">here</a>. diff --git a/sites/all/modules/views/help/style-settings.html b/sites/all/modules/views/help/style-settings.html index a39c3acd6..63133d811 100644 --- a/sites/all/modules/views/help/style-settings.html +++ b/sites/all/modules/views/help/style-settings.html @@ -1,3 +1,3 @@ -Views includes many options for theming or styling. +Views includes many options for theming or styling. TODO: add more here. diff --git a/sites/all/modules/views/help/style-summary-unformatted.html b/sites/all/modules/views/help/style-summary-unformatted.html index 258acf528..bd14f249d 100644 --- a/sites/all/modules/views/help/style-summary-unformatted.html +++ b/sites/all/modules/views/help/style-summary-unformatted.html @@ -1,3 +1,3 @@ The <strong>unformatted summary</strong> style is only available for <em>summary</em> styles, which are when an argument has been set to provide a summary if it was not provided with a value. This summary provides the possible candidates for the argument one after another with no special formatting. If <em>inline</em> is selected, the summary items will be enclosed within <span> tags. Otherwise the items will be in <div> tags. -You can also elect to display the number of matching records for the argument, plus change the number of items per page for the summary. This is often useful because summary views are often quite small, but other views quite space intensive. It is very common to have far more records available in the summary view than in the more normal view. \ No newline at end of file +You can also elect to display the number of matching records for the argument, plus change the number of items per page for the summary. This is often useful because summary views are often quite small, but other views quite space intensive. It is very common to have far more records available in the summary view than in the more normal view. diff --git a/sites/all/modules/views/help/style-summary.html b/sites/all/modules/views/help/style-summary.html index f5b01ecf6..0c3845fae 100644 --- a/sites/all/modules/views/help/style-summary.html +++ b/sites/all/modules/views/help/style-summary.html @@ -1,3 +1,3 @@ The <strong>list summary</strong> style is only available for <em>summary</em> styles, which are when an argument has been set to provide a summary if it was not provided with a value. This summary provides a list of possible candidates for the argument in a standard HTML list. Like the normal list style, you may set this list to be ordered or not. -You can also elect to display the number of matching records for the argument, plus change the number of items per page for the summary. This is often useful because summary views are often quite small, but other views quite space intensive. It is very common to have far more records available in the summary view than in the more normal view. \ No newline at end of file +You can also elect to display the number of matching records for the argument, plus change the number of items per page for the summary. This is often useful because summary views are often quite small, but other views quite space intensive. It is very common to have far more records available in the summary view than in the more normal view. diff --git a/sites/all/modules/views/help/style-table.html b/sites/all/modules/views/help/style-table.html index b8ade8a35..9fc8175e6 100644 --- a/sites/all/modules/views/help/style-table.html +++ b/sites/all/modules/views/help/style-table.html @@ -10,4 +10,4 @@ When setting the table options, each field in the view will be presented with so <dd> If checked, the header for the column will be clickable, and the user may re-sort the table by clicking on this to sort by that field. At this time Views does not support click-sorting to sort by multiple columns at the same time.</dd> <dt> <strong>Default sort</strong> </dt> <dd> You may select a column which will be sorted by default when the table is first viewed. This column will be highlighted to the user. You may also select whether the default sort is ascending or descending.</dd> -</dl> \ No newline at end of file +</dl> diff --git a/sites/all/modules/views/help/style.html b/sites/all/modules/views/help/style.html index 01dffed3b..d32a2edad 100644 --- a/sites/all/modules/views/help/style.html +++ b/sites/all/modules/views/help/style.html @@ -8,7 +8,8 @@ By default, the style is <em>unformatted</em>, which means that there is very li Some styles use a separate <a href="topic:views/style-row">row style</a> to determine how each row of the View looks. This is useful for mixing and matching styles to more readily produce exactly the kind of output you need. -Many styles can be <strong>grouped</strong>. For styles that can, there will be a 'grouping field' option; pick one of the fields to group by. This grouping field will be displayed as a header, and all rows will be displayed beneath it. -With the Theme Developer module enabled, the field grouping in Views does not work. Disable the Theme Developer module before grouping by fields. +Many styles can be <strong>grouped</strong>. For styles that can, there will be a 'grouping field' option; pick one of the fields to group by. Please see <a href="topic:views/style-grouping">Grouping in styles</a> for more information. Each style is its own entity. + +If you want your fields to be templatable, you need to use values that are acceptable in function names. That's actually more strict, since that basically limits you to alphanumeric and _. Even though Views may be able to query datastores that use special characters, naming is still important for use in templates. diff --git a/sites/all/modules/views/help/taxonomy-page-override.html b/sites/all/modules/views/help/taxonomy-page-override.html new file mode 100644 index 000000000..f67623477 --- /dev/null +++ b/sites/all/modules/views/help/taxonomy-page-override.html @@ -0,0 +1,41 @@ +NOTE: This page has not been updated for 7.x-3.x +Views 2 provides a way to override the taxonomy pages of any term. The view is included by default but is disabled. This page covers three minor aspects that some users could use to control the aspect of their taxonomy pages. + +<h3>Background</h3> +The Taxonomy module provides a way to organize content through the site. It also presents a page with nodes that belong to some term. The style can't be changed easily and taxonomy only displays node teasers. + +<h3>Force All</h3> +When using vocabularies with multiple term levels, a top level won't include the nodes that belongs to the levels inside. Let's clarify this with an example, let's assume the site have this vocabulary: + +<code> +Vocab + - Term 1 + -- Term 2 + -- Term 3 + - Term 4 + -- Term 5 + -- Term 6 +</code> + +If you go to taxonomy/term/1, then you see all nodes in Term 1 listed, but not nodes in Term 2 and Term 3. If you want to see all nodes in Term 1, Term 2 and Term 3 in a single page, you have to go to + +<code> +taxonomy/term/1/all +</code> + +Views 2 allows you to show all terms inside another term. + +<h3>Step 1. Enabling taxonomy_term</h3> +The first step we need to do is to enable the "taxonomy term" view that views provides for us. After we've done that we need to edit it. + +<h3>Step 2. Changing minor aspects</h3> +On the Display: Page, we can change the Style to any of the styles that views provides for us, it could be a table or a list. If we do this it's necessary to add some fields to the view. + +The most important thing we're going to change it's the argument <strong>Taxonomy: Term ID: (with depth)</strong>. At the bottom of the screen, you'll have 2 options, the first one to change it's the <strong>depth</strong>, if we want to do what the <a href="http://drupal.org/project/taxonomy_forceall" target="_blank">Taxonomy Force All</a> modules does, you'll have to set it up for at least 1. + +The next thing you have to do it's check the <strong>Set the breadcrumb for the term parents</strong> option. This will allow your view to show the breadcrumb with all the term levels in your taxonomy. + +Save the changes and try. Next you could do whatever you want, like adding fields, theming, exposing filters, sorting or adding feeds. + +<h3>Theme every vocabulary/term independently</h3> +Using <a href="http://drupal.org/project/tvi">TVI: Taxonomy Views Integrator</a> it's possible to theme every vocabulary or term with it's own view. All you have to do is clone the view in Step 1 and set it as the TVI active view in the vocab or term edit pages. diff --git a/sites/all/modules/views/help/theme-css.html b/sites/all/modules/views/help/theme-css.html index bfab97d2e..a23d9e556 100644 --- a/sites/all/modules/views/help/theme-css.html +++ b/sites/all/modules/views/help/theme-css.html @@ -74,4 +74,3 @@ Exactly how this appears is going to depend upon the style you're using. For exa font-size: 60%; /* Make the text in the body field small */ } </pre> - diff --git a/sites/all/modules/views/help/top-pager.html b/sites/all/modules/views/help/top-pager.html new file mode 100644 index 000000000..68247af12 --- /dev/null +++ b/sites/all/modules/views/help/top-pager.html @@ -0,0 +1,18 @@ +Copy the views-view.tpl.php from the /views/theme directory to themes/yourtheme/theme directory. Find the following code... + + +<pre> + <?php if ($attachment_before): ?> + <div class="attachment-before"> + <?php print $attachment_before; ?> + </div> + <?php endif; ?> +</pre> + +Insert the following code after it (this is copied directly from the same code at the bottom of the tpl): + +<pre> + <?php if ($pager): ?> + <?php print $pager; ?> + <?php endif; ?> + </pre> diff --git a/sites/all/modules/views/help/ui-crashes.html b/sites/all/modules/views/help/ui-crashes.html new file mode 100644 index 000000000..4e8a3893a --- /dev/null +++ b/sites/all/modules/views/help/ui-crashes.html @@ -0,0 +1,25 @@ +<h2>Troubleshooting UI crashes</h2> + +There are a number of reasons why the Views UI may crash; the most common state or result of a crash is either a white screen (everyone's favorite WSOD), or a screen of what looks like garbage text. This is generally a javascript crash of some fashion. + +To get the most timely and accurate help in the issue queue, please try to gather this information: + +Check your javascript console. In Firefox, you can hit ctrl-shift-j or use firebug. Copy this information into the issue, or attach it as a text file. Really - this is the single biggest thing you can do to help figure out where the crash is coming from. + + +<h3>JSON prepends data with jQuery, causing editing and preview problems.</h3> +This section originally stems from <a href="http://drupal.org/node/346662">this issue.</a> + +Some modules may add PHP improperly, disrupting normal jQuery operation. Errors may look like + +<code> +<? session_module_name("files"); ?>{ "default": "default" } +</code> + +This can also be a server configuration issue. In one case, this was solved by commenting out + +auto_prepend_file = c:\wamp\www\php.ini.prepend + +in the php.ini. + +Another page to look at is the drupal.org page on <a href="http://drupal.org/node/158043">White screens</a> diff --git a/sites/all/modules/views/help/updating.html b/sites/all/modules/views/help/updating.html index 096c917c2..34a1d253f 100644 --- a/sites/all/modules/views/help/updating.html +++ b/sites/all/modules/views/help/updating.html @@ -1,6 +1,6 @@ Views 1 views stored in the database may not convert properly to Views 2. In order to aid with the conversion, a tool is available. In the main Views page, choose Tools -> Convert. Any views you choose will attempt to convert. - -Note that converted Views may not match perfectly! Adjustments may be necessary to retain the integrity of your previous views. + +Note that converted Views may not match perfectly! Adjustments may be necessary to retain the integrity of your previous views. Views 1 views may also be exported before upgrade, and then imported through the standard Import tab. Those views will attempt to convert during import. Exporting your views before upgrade has the added benefit of ensuring a backup. diff --git a/sites/all/modules/views/help/upgrading.html b/sites/all/modules/views/help/upgrading.html index 83314b104..b31b8f931 100644 --- a/sites/all/modules/views/help/upgrading.html +++ b/sites/all/modules/views/help/upgrading.html @@ -4,5 +4,5 @@ If you have theme files for node-view-$viewname of comment-view-$viewname you ha to convert them to node--view--$viewname or comment--view--$viewname. <h4>Updating table templates</h4> -The class variable was renamed to $classes. Additional if you want to add -classes, you should add it to $classes_array and drupal will automatically convert it to the $classes string. \ No newline at end of file +The class variable was renamed to $classes. Additional if you want to add +classes, you should add it to $classes_array and drupal will automatically convert it to the $classes string. diff --git a/sites/all/modules/views/help/view-add.html b/sites/all/modules/views/help/view-add.html index 46a1a9893..233d8854a 100644 --- a/sites/all/modules/views/help/view-add.html +++ b/sites/all/modules/views/help/view-add.html @@ -1,4 +1,4 @@ -When you want to create a new view you can enter the following information about it. +When you want to create a new view you can enter the following information about it. First, you must enter a <strong>view name</strong>. This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If you are overriding a module provided view, the name must not be changed or a new view will be created instead of overriding. You can enter a <strong>description of the view</strong>. This description will appear on the Views administrative UI to tell you what the view is about. You can enter a <strong>view tag</strong>. It will be used help sort views on the administrative page. diff --git a/sites/all/modules/views/help/view-settings.html b/sites/all/modules/views/help/view-settings.html index 39902b295..906656e19 100644 --- a/sites/all/modules/views/help/view-settings.html +++ b/sites/all/modules/views/help/view-settings.html @@ -1,5 +1,5 @@ -With the Description and Tag you can set the "View description" and the "View tag". The tag help you to organize your views. Only one tag may be entered for a given view. Note that this tag can also be used in themeing, so do not use words already reserved by Drupal for use, such as "Page". +With the Description and Tag you can set the "View description" and the "View tag". The tag help you to organize your views. Only one tag may be entered for a given view. Note that this tag can also be used in themeing, so do not use words already reserved by Drupal for use, such as "Page". -You can <strong>clone</strong> a view. When you click on the clone link on the upper right, all the options in the current view will copy to a new view, which can be given a new name and edited further. +You can <strong>clone</strong> a view. When you click on the clone link on the upper right, all the options in the current view will copy to a new view, which can be given a new name and edited further. -You can <strong>export</strong> a view. You can the copy and paste the code from a view into a module or something else. It is a array with all options for that view. +You can <strong>export</strong> a view. You can the copy and paste the code from a view into a module or something else. It is a array with all options for that view. diff --git a/sites/all/modules/views/help/views.help.ini b/sites/all/modules/views/help/views.help.ini index 0115c2fe9..e0a1d770a 100644 --- a/sites/all/modules/views/help/views.help.ini +++ b/sites/all/modules/views/help/views.help.ini @@ -10,7 +10,7 @@ title = "Getting started" weight = -40 [new] -title = "What's new in Views 2" +title = "What's new in Views 3" weight = -30 [example-users-by-role] @@ -84,12 +84,12 @@ parent = display [style-settings] title = "Style settings" -weight = 30 +weight = 30 [style] title = "Output styles (View styles)" parent = style-settings -weight = -20 +weight = -20 [style-grid] title = "Grid (output style)" @@ -116,9 +116,14 @@ title = "RSS output style" parent = style weight = 50 +[style-grouping] +title = "Grouping in styles" +parent = style +weight = -7 + [style-row] title = "Row styles" -weight = -10 +weight = -10 parent = style-settings [style-jump] @@ -156,7 +161,7 @@ parent = performance [analyze-theme] title = "Theme information" parent = style-settings -weight = 30 +weight = 30 [using-theme] title = "Using Views templates" @@ -166,7 +171,11 @@ weight = 40 [theme-css] title = "Using CSS with Views" parent = style-settings -weight = 20 +weight = 20 + +[semantic-views] +title = "Semantic Views" +parent = style-settings [menu] title = "Menu options (page display)" @@ -182,11 +191,11 @@ weight = 45 [header] title = "Header" -weight = 50 +weight = 50 [footer] title = "Footer" -weight = 60 +weight = 60 [empty-text] title = "Empty Text" @@ -194,15 +203,15 @@ weight = 70 [field] title = "Fields" -weight = 80 +weight = 80 [relationship] title = "Relationships" -weight = 90 +weight = 90 [argument] -title = "Arguments" -weight = 100 +title = "Arguments/Contextual Filters" +weight = 100 [style-summary-unformatted] title = "Summary Style: Unformatted (output style)" @@ -214,7 +223,7 @@ parent = argument [sort] title = "Sort criteria" -weight = 110 +weight = 110 [filter] title = "Filters" @@ -235,6 +244,13 @@ title = "Upgrading your Views from Drupal 6 to Drupal 7" title = "Updating your views from Views 2 to Views 3" weight = 160 +[misc-notes] +title = "Known Issues and Workarounds" + +[reports] +title = "Reports" + + ; API related [api] title = "Views' API" @@ -255,11 +271,21 @@ title = "How Views handlers work" weight = -50 parent = api +[api-handler-area] +title = "How to write an area handler" +weight = -40 +parent = api + [api-plugins] title = "How Views plugins work" weight = -40 parent = api +[api-forms] +title = "Outputting form elements from handlers" +weight = -30 +parent = api + [api-upgrading] title = "Upgrading to Drupal 7 (API)" parent = api @@ -269,6 +295,31 @@ title = "Integrating the Node Example module" parent = api weight = 100 +[alter-exposed-filter] +title = "Altering the default value of an exposed filter" +parent = api +weight = 101 + +[get-total-rows] +title = "How to get a total number of rows for a View with a filter and no pager"] +parent = "api" +weight = 102 + +[drush] +title = "Drush commands for Views" +parent = api +weight = 103 + +;Troubleshooting +[troubleshooting] +title = "Troubleshooting tips and gotchas" +weight = 110 + +[ui-crashes] +parent = troubleshooting +title = "UI crashes and whitescreens" +weight = 115 + ;Other places to get help [other-help] title = "Other places to get help" @@ -278,3 +329,24 @@ weight = 200 title = "Video demos for Views" weight = 210 parent = other-help + +;More examples +[top-pager] +title = "Adding a pager to the top and bottom of a view" +weight = 215 + +[select-multple-nids-contextual-filters] +title = "Selecting multiple nids with contextual filters (arguments)" +weight = 216 + +[taxonomy-page-override] +title = "Overriding the default taxonomy pages with the Taxonomy term view" +weight = 217 + +[only-link-title-for-published-nodes] +title = "A Views field template that creates title links only for published nodes" +weight = 218 + +[example-filter-by-current-user] +title = "Example to filter content by the current logged-in user" +weight = 219 diff --git a/sites/all/modules/views/images/sprites.png b/sites/all/modules/views/images/sprites.png index b7df250a03204f3ced9e686279324ad2c0ade68c..9fcb940227cf489b93a7339e71b5455cea6a2571 100644 GIT binary patch delta 1761 zcmV<71|IpZ#{=;VkR^X-K}|sb0I$e51&Zka000?uMObuGZ)S9NVRB^vL1b@YWgtmy zVP|DhWnpA_ami&o000JqNkl<Zc-rime@s(X6vyv-uNASjVuC{?n^Q)~6m&W;n#i1J z4a+h^hC192hKrJACW8sZ>2x}>O`$5pKQwdxNM^DOf5dI^4>EtPqRwc>G<3u1O2iEV zLJFc31V;Pr&V7CAqrSdZnbWzPn|yig{qcF{oO@sIxh))}lmr)!<L<sLJ}UR%2`Njz z(-1t4Cpv|7=O}dJ{F?oAK@togoG57aF{sjuoK)l~BY-s=p$3sqA6Nu#LIojWz-wKL zD1%7d{ES6NKX-rko~(l7!gP(w)tmu%aC-v}WBpRZxI2*xnjpPdBOe~2ypJcM0Kih) z;Af5a41}^ci{u~98V_+|apARRP1Uu*6rMbwf*=GT2togU5Zgg+OR;M+t>;wsvwz>B z!EOejc9C#s++#TXoLqv;|3p#8g*E+y3Hk$b4flQoAqam#2zq3@2;o*asbD`=bvqB> zS30X$U8wzE{U{0pq!*%e7<Nb}Yr@$HAE>4q=5XOz<mZb5If!)rw8JiDC+vnyB3Bf? zMa=x->ZKg@e@WSEUX-i@2ba;Z^qp#BLI+#uH%b5o@(EH}K{?TQf3s$HmcZa`;G%Ty z=iq=G*rb2yHd1_~Bz%xS*Ah7AQ?LlEsHB8easi)V1h+Qq??#BoTfr?i9MgXx8|P+A zb;U=Yg};-)Kx_CGm8I8%St*3)=iSY`=sY6Q6jC;~9`}9(AqYVT`p<#bXK<C`eU;Xs zIh<3r<MwVB>V$pg$f=@28oCs!jR^%}TB-tB8mfQ4R*Z~c)@iy{qTyPJ+L&;HT`6B* z8%(eh<h#2RbuPIs;eLbtJSax-K1Qx1_v0Eqv<N~Ff)Mn;Km$L()rzAg7eqlhT4O^T z{C-kyH!sN7SqeC>nM6p(bVm*QiFiAx8q@+h02&GE04)H;f?fo@ON&zcp+SK=E>dia ztaN{ZEQ<Gwh&^?`a%`wzd*o{qh#iin%hx8kzD?V;O+V+tWhUrV*@A^|=R=Cvu=;%< zFX&s)DR6JM+Hrl4;&m6u71Uk}>H$T8a%JsSb8U&-a03(xnjF+VS+2h!_gkVD?Ah@5 zm>iQr(67>$2ZU?_#even<>Sh+h7iGiLcV{pLEos%TD1Nn5?DubL2rQO$m_=<U)lRN zK{n`T(0@dfE7wu8OMXOl1+RSlN5r10{8x$-L03YGr&0WF1VIQw5P}{$XuwXO_M69w z6$QES4*d3(Efrq{ZycHy6%@R$nI8dMKR<#_VdqDiH<xSYM*!2!kHF1`kRKHmesF(J zegt<uq=?Nu`4PDHIORv+f^L2UE<dFFNM1*}`4RNf&ySQV7hdlIQFaYp`MUWL_^+8C zRa9)n{0Kn^LJ)!;VSc2{jb1Ko5QYvDcHZjpZKNV;dCofQ&y5RXqipNk(^4mzPrK@G z?LEAD{5z_j*}+NHOP^iNn-CxQah-qr)_g%AIek6i7pcj^YcKxMbNIWJ@may2^&vs5 z*w(vWw~jM?ddb~2(QGm9HAL{E4ir2+D>z%b2b7kUW=cv*dM_?6ZdGh-?8t_OhQ?-( z*SlxO)}-ajmyeE$iaI?W%C&3PI+~iAHq_PCZ994LWcPp=O_?%fh{a-AmzaN;XwS~h zCf(iLBtAa=sp{(LE3AFQh!Oj8a&qDf1_NnsZXS8=+_|#G#>P=or%qjS{`~pB42m5$ z10Z=eo2?^1KmV-P>zy}d%org#Ik`g0ak{$F91aJA_|0bX51E;n6Ip+->_=$+o>$D; zOt@==)9G9V9cRM8;b2)LxVwLYwP$5zMP_7VL_+-pXrJWqcs^(S*|-6&_4oH*0eWwA zbhNp>z5NW&^PQ!orACv<B;BXHygU)yt%dr2Xg@9pf|>Pa;|73yK3_GM-D0&`KLSfc zh=sAWwUxNtZmAvIs2w|YEQyJUF+$&zt5>g1WBu8<0U*EM@9ymETnvA%9fH`5iin8l zWh=j}t!)`=Z}D_r@_OsyV5W?HeSHxC@qmSk**M*Gl(G8Ki5{=dbG^0qt?@~g3-zv> zYkoVJ`nB3R3i+(f&cASQbj*<H?Jd1)4ZN`7ch}7Y2}zbRYv$R!upinPd9K}0j*FaM zbLx6p-Tst|@yVuK(eGKme6hA;j%lcI#xt*+5imbO5P}edAk2?2Kf?S7^CQfU5QHEE zAqYVTLJ)!wgdhYV2tf!!5P}edAOs-@L5~ddw*UhGYI9L&s#Icj00000NkvXXu0mjf DL#bBf literal 58287 zcmd?vV{m2B+bH;?W81dvq+{E*Z95%zY}@JBwr#6pJ154Z|Mk9g>(11@A7<vmRL!n^ z&VJUawV%CepS4lz{C+FQiNir-LjwT;!AVMpD1C2{fq;N%A;G_+>9Kvj?+vK4kfaLa z_u>O-68>F=a*)t;1_FZlZU}=6Jiq1l{#}XdBC6q{Y;We`Zs=qRBxqu9WJ)Mz>166| z?_}*vD6Gs1UcZnB1Ox%(;H0MRk#(u%YlC8n>3_XmcrMiua}_j4Iqo8D-~)>32&Mdz zmd=E{7a*{x8O<t&oZcHs7{R1yDIRbWRuWz-A=Iy~FhD?V#ux}X0KL|axY|D(Pp93^ zv<k7IvvKdaVcn*?V|{HGR?*l4Skv9{-r2eL-hS%x&h6MX{aVvwMNzE<;&|WnzY1vE zqHmcvbZVeqg}G?gaqHNyb?<|C{A;ZL*9fC^6XwG1z=`BJR|HueUWpdvOwW3Zk<Sc6 ze-<_Ci5NneR@3XYq{z*M*1r{MNQiBmLNJ@%?U@!)(NETfT8XHuI0djkYZjjux)M_c ziUQ{0BiOBY7O$@(5T8AG!9o<sdLT#=Lq7EMK4wpQSsbswFFvY>%ty!$Q7}*;N_*w) zfAOb&AS#qHQH@VUwS+qTPxubweyWV>pnck{bP4qy$K*4aGTNYM8nPyaF_GV!jE!qT zhshi{N!>`2uwI&rnp)$alnpDvA!?@|WO5|kCaI}cq^RcmtvC4Kb&)C>Q~|AEzY5wI zaGC+>E70E%31v?={?!@}0-UZUwfxjS&hR2H6+a@erBw&kV|7)Ws<SGM$J7jQR99T) zcy@cev{j$@hF-hPZ}~0}HcN$T&oz(dgT}A(n9|izB+NC&XTnuca<P+}^ndiVB*lWW z`H9SR&kDnlS*@zBqQUI`$}pxiiUmV~gQn3DwJJCR3J*KgS^r^(MwH=4rUH6)<A>x# zZ?C8vEMuyapNss~mw_yyQj%-LI#m6-N-x+*24)&#ULB>5Wm_lW`N>Uh_IpW5g)|e0 zG`t=ZN?G;iC-7f859?m+-pT&!h_1fzEg-ifU(olhD0P>7$u^&<Lt12T5KC8r^Iys; z17dp_Y1B5z-~mjG;83qzV5AL5Dj^Ci&Gf%mv-=1V7#@LF>40~CCO|To-h05Q?_C#_ ziM-}=0&%L~$P>HOGDxjRyuyjHwxJLU%DJe<>wu7Begy$51gUa`>CwFW$b+0qW&+0( z?gXMHQU)T|t&vV_2NDfZGL`w0bD-yN87tu01s4TI6Kg|ljkKH)tG<$mg5O;r(5$Q* zdri;-QUP)f$^(@GzYG(4J>}f12mU57JrHi(`N7ACa{Y#_qUj;D%4THf)oR-Tdu;6A zpXb(LTdN8C2wrN!M#+g+t)Lq_5gP;u`T%wNwN-zka8jGFF+qeniEo<~G8SyuJ%QJW z5Nb~vBDt+o{mz#w0zF+|kZTLx0nQF#!;yw&Llx{V#|dO)Xy&M0fqNZah?QkN(YFn% z9U6E)F=%`H)Y2=Jr&knLR+@mBl{&z0HpG`r4f9enl7(S|^hb;ID7$2_y^Lya?hJ6S zQZigBO0D_#mEroe;t#V~y=8)Df|Q9=5>t8k!Qpj}l#az(PQuuBqR77?E~7d&tivRE z-E6b2Vi+`KSnK|HvG!DGgMfxcaI2|*(9Cd)D={&XN6gQk7&2<YaN-FU5uYnKnsCp; z6nxiol{U_9|G63p`hrCXd2F7?nUp&=45U$*2g|>voRvEkxC%ro$aKd7sqf^64ue(H zA3k?*q*?hc!~M*H`{)m3e9Nwa&Mi!OXg*7TtfwC%a))Q~@?V!B=|GkNDTF~FlHS>K z+nRNZnyASxn?Tx0*Xxq)+oaCNvFsFrx&>>QkICpYbrx^i?y$bFx!-n%HhWH!amw5v z?%dhQWFp!OXaXPd8m8&c&`@Y#U?4)3+Ie$UR@TGv@^Ul0y#LoO$Qum1%_`%P4ZD8Q z)sD$}dTy?Mo7<%pD<@~Tle2Sfbwx!-5JGWrF&+a0LyJ|D*5ce;yx-wCnz^>N_R;&x zy}M4A7l1&A;wMmEEo%4$85vm@4u{m!&i3{vkBwj7+pZ_LAwBqY`}+F2tyrPsZEtU{ zi9%V}EW+P?Q&ZE|`FSPYq?zD-=b!j9E3JHX7<-U3ICywnAbO!J%*;`|yu7Iv8CTAn zxKTvUoPp~d?)H4a+dzkf4)0lFg-m;|t-7G;E9X@~-6xY16K|-fFZuRq)z$Qio13_t z@Vc{%zOODx+1XP9TOsb(+q%K$`))`ke7QAkH8u8l!Jc00jh5-$*>;%j!tU-*UOt@* zEFKL#J!9*Oi-S>7Q6~YTAW|#4ZoAdUnT?pm8}>N_XHQ;Nu5dlPg}p9a#kYMi{PJk{ zhv2jY-6y}hP4)rG$_*4<vkP4B=_$)T&K0+Pe~w{fraP1USBKUS$09DG!*aaTdI~=K zyY@;@VC)a3*;n8Bb}n(?x+Y+$WagY}^ohHRlL%il6KEw<NTm~asZ5Ms(#gqGoo{vn z+%e9@v+wVezP6jVM|A2NJQa6o_lJg4!o;U-a&L3uWW@X)8SJ5B`TPGQt$aT-C2XyQ z#9p_@Kfhzp@6Z3Eg{p`p9|%Yq*4A1@`TP0mtL?ramO{^sHxh6EJ5i4p;l7}$gyNnN z1<d^iuY3We)Y(ZtIhFR~fX6RFL+d?ht>$Ep#%KBI7o_9c_vU-2$8A?ZVA?pKp-3Cy zCL6>uA>HnEz|wXHbno2E)I^2&*7l1ktKT9ocTfHB<yDN+$>+!O`?wtTGND`H?b@!K zlW9zD?ZAGJnv*Hm{zs6X(_z|CYsZFkHTGlc1`lu8^AWyD{OnGvvxkT0(nYU7&&EfK z`tZtdZ+Nu1*g|+z%WxY~EJ94|-&fw&PweXJ0RW7#g$;HX;@diAbVpSpuvxpWjHkVD zcD5p;T{HZ2&8Fi$BsG5^2wU;mMzKg2dvpHUMrp$l5zo6!ShjIapIzp3hp*Iz-MnUp zbeOSQ-O8`V+txMnc;6K7o)Ks+qnEmYKKA81Ol#8^Z3=X?Qdc8m_9~Pxc-vNsfj%<` z2!ws)RUejLvMV0Oonh9(#wM^ek#T@q64Ihlh*r|!j&q6F<W}d2SXWt>%ENK_h-tP% zidaQ7C@mJTCr+`AfEh5tx!|uI5G@8yHGStwCD_vZAb{H6TisBEp_xGn2bSkFEFWB+ z$l03=<4H5fHCUolq66mOO~;!1B!E>71pgke4yWPN2|(^d2o3hy3HFUpw<oBxE9_a* z>1dT(FcZEA&580-PzQLN(?DS!Q2fg>?6B9Tw{H{pmp9bzrU$%(=y1(2%svQ&i!jo- z`psMPtr>M1Izdy4a>gUw!V-eE^LQ;lCY1CRm^fXeSiBl9X?PyWCbZZXj>ee7SAZiF zww=&yG#b4~A#I^V+FP!k24bxf=mT%~l&fSM=)en>&^j)$Dp=TrIcm=m1Z~Ku*#?P- znv*D#SdLUh8puki`9L7sJ;05~O#tKppu*J9KQz8(M6q-@x~7g>IKqh0xlph$`ddTp zG_53cw+hSWqG^BOoE7WsDFda*Uwsb{=<<q53LZBhxd1<vDe*!eHOD(LQEyCV#MN&< zxFk9bz%oG^nZ#-@KAwJoAVanAMgl=D%{Y^A3xD4M&S0P+N^d1In--bODw9tFRdT|C zNN`CQ+7G`01hWSo3@;+zg2bD8{eGUSg1x=0bW{Y>%V06fKp~w@zQuE#0<{+l5cZz~ zatBuTW;IGXq=-IEn<^wcmz;Ynp&qT%^^KAStTte|zz#UAY8K8fQi9FMG0)mcoH&5L z2soeqY}Q<6B|$Ni+YwLyWdorjO;lJ!sufcuJYjC}0!x<*XDSx(Y#etG$~?`q^#RSf zow6=v^3FUUj?9QE97<en0UdGVs_23hAv4&>=!G;emlIfM?!+N5`T;~Fo&b|GLpI|c z*=wSX$|!hRNuK13c}kct%%CdfNL5Z-%6mSP0L~(}7!-0(Aj`-a3Kpm9T4LxtV{>aW zXW%FJp6aSj#Z(N@wH)aHvZ=b9b@j(6se7qlk$7YqNaf~q;I(AWqz1B-FKXYJQJzmN zD=TEbk;u^t1beIljXSjTRs*xc8QaoFiV=&IJZRWtHVqcLfs_@Yk$6zu_)nyK%K6k% zO}7jQNi5L;Q*fuX;v=7CO)5*}N@jb1uVNrprokPi41N%m5u+$<iA2R)%iLzsVG5s9 zv{)Lwz{fgk%yUh=qoNpEMFF?QcG;v+P&wNj4FXr!UhmRcfFK&<VQv*0Dvwx+af>{B z3C8B!L*OcPB%W3DL9+-<xYxoYW&NaGhJr~`P`pW9rT9-RYPZ9DWRg1tAr)E+&oAvt zocNO_`l6~uvD|_5MpiCm!0TdSa0az!LZBkpPkZyl_mxOpXNI=8<V<XJMj0}V@IvTi zb=*o69p=A?Tk%I+XKE*QnZ>%I_jYmu)@JB3a?_2dC2<Z-@dEOgDQZye;Cf_mkwK;q zlaEBw=9#eU$b38IDY22_P88FFH~E1?UQrGW;;|2l;nt=L$Kev^1~kA_UiBrkQ-eq# zOGkObZqq&N2Ykfrjx)84f-YE<z$0u1y~DsD>_@%Bg4=o{1iH5*EWMgZ??kvV+4L=v z9lE=F7qac=F1kcnE;PS(uu=l~j|&n{<aOQYZjxJduAQ+S^9Ye1U0hBiBv??JBo;_x zfD-fE)BmQ1JjDb*;k~Fhu#9gozs71TqG!@oTB!Wk`7WdyN6|JA?>t(R>M*r-Ys2XP zXC+GzKml9Km_=Lz_)NO-3UR;Kj}CT}7Es+U$rSBkfx;H>Oioso=4t|1W>D~3_J7)q z_Azyw272bV!_MlZDzos5=T(VFkM;MT0wvY#t`xOu4aXvS!^h3&NRL-1&RqKDn7yga z0@nv(Po8t8i5%s+j0RxZ4J^4ke3HBiiQ>@>q(|aL4%yUsE&O0YS$Kz+xntPP#ca2d z%H|R_lg^L8Qgx?QQDB^qXDSXTaEy58;A+V``pv}aMhj7%R{eA^9ORr;o7&*ZNncZ< zzHXbcz{m9=3OgDOj3q;PrUOuM&ol*61@4>y_L0G!3TKc_fIUKI9rv_%dV4I=)t&wo zBproTta$dbh*{TKQz^1YheaM^eN>&u&qY4Ta>JxSQchyRSjTQ|6yC*Y99IBFM57Xm z%V=wb2BCJl#Kpy0jI};;*pCgf0`m}R1wXO!F-?R_fY#VfZw0srLs2`7uwh)4MuNWi z&|Lz$`@#wC`>strlFA9z#g4q06td6+FFfIl73zmRQ1&CZTMfQR3QqeqTf72EDUD1f zGm;1okGp>E{C-y(pOwhLCf=mIZSMr!)-JQi&y8uqdS$RBQ3GysE%InyZHz91qz_r| zB5c5q@q-)F@dMl61vHe`@YNMeoViq-OJ=CMmpy}#TLi*xxD|a~eW*Q$TOTE~eG1a+ zE!Oz#gfSYVs}I@fT5FWUHJI-nHC~f=c{H;;op^cDdHdD~QQ7*H0LWMb`q1U};b_U1 zdXjSTNZH38&CT$aZyB0==l0Rc#zlK@g4sEEZY7S45Lgju-rFQ=CHrbFV$Onj>IJN> z)s6w0Zi4iYKnG?<Ls3(Mbi8qaMVO2m1UZIieHu&-7#CQX-h#+S4yr?b%FZ4kx0rRz zrEN6x%v=(aWmaWGA{e5G=zav{F?$0@G=oR()SRkAd*U9b+h6>0t{z!&8J@l*?*|D1 zv#FFe4W2#?5<Dy|nvjc}MFYKAa!VJUDDvj*W5fGnUFX{InjccyL$?+7(5MlAX)EmY z%ckEF|J>7_;E!`Xk?{f)UDE}7ggkub3O^3UxrK|CN<wauZwHUejjC>-qDyEnV93$Z z>Or1Ct9wYoRw_s2F_;3n?%-E(Lw7GEg>B@g$`@d;yM@3V?LWC*pi}9CP<W{Dst`j3 z-RfxOrm<fE1DoJG8uGumeHpKZB~#m4(F<Se(p!Z<aPTuzKCI@w^tGn#N0U5(d+)_b zOC~P%*au}ZOF=G4oK7GV5nC!Mdr>9n7VNze#s1QQ5>P^Z%E@KP-l?bz$KeK{;kzYs zwl~P0wyi+Ss?jq+#iJ10S+Ex^kQ1~M`h_2+!mE?l{k9QQo1?#{32X4$o$18DpNmkJ z>CoSq-veQ0d=2MN4lI|WxKR94A6R9YSZQ$FNafTd>m*4Ax46qk9M-YCE1}chA)dX% z-RaCcEptX^T24D!os{3rZ%5EfU$cIe366Z0g3om@oh(}f<vPMtW!YH}!%Y{pyESJP z(1^v+hy{PCo3Q8BA}ZOgi{3H=Z|;HFqDm8^8s75=OxLWFyqLDopZ4;{q=CB6P=5J@ zXpti297&iy`Z|d$w<RIcxceBSw0rd#%tNG7uki^V_-2HM_8#Q9Yo$-UwsDO{P39Gc zMlmIP?^?gFl>*aTkDtJLnpOn$vuO!V9m>CCFUzOny8PqC@7(EuTvReTy=Dh@*<NnT zUiI}7__~Fj5JlK}&i?M_iZ_A@!RdTfiUf;(tXQRZVY_(6!wDW2vLhXkE7nrAWRmL- zBzJByyY3uk&6zgWnJE@@O@vO8k7J>~$vBa(tfgf0I+40`6<71rx*2C`NSC>i1gtWx zk@`CPbgg{)?w*w$o$W10r&aJ&@pX6j<-y(@gMfv=^Lv2W_v>ZhRh6e#g={!18GeEK z{CO$Z%JF$s06<OQNiBK1ea725wMY3#eUC$xt8L~@Jax~-EaK&r*~AxX*;lie!T!G6 zX5Q#byKOLIl!IGmR57)OTc3ZZGIy^%_s_#ZDC?C&Wi3R}J-8=!BFE@L+RLlW=&Oy! z)7sC5b>sCKu8g#$|2`(td6nXp_C4lCwoA73*|U3*TiI~7-0#eqW8`IL$r7WdBFyNh zUvmZ39)c4NMqRq$vV5N|V(&i5jjg2^v2@acja&6B=5j}qQ&|9}m0OQk+|{NuIgEui zAg^BF{xsk-)y9O4qHHi~k?w9ixd4EALGuM+bkjgte6(v9tJ~k>Ye4DNdYV&3a*blQ zIbZi#jWl8R;g33LZzqeU81}S_xoVMC>lB665)||Ek^(EZ{!lhbp(X4#sH{^(K%t_I zmS~xrna!cKiWH@t3t)u~H49_(l%F+cwuG*Eg$@l`T)PFaXnUGnuQ_|ECY-2Ax1~~O z8SI7w*FXo#Uzlfi8;jz7Z2h?5n3{)`gn`yVM>z5?+npwc1P*Qye%I-9LQ*1@2`V>{ zgy@`wn=Pzpq32(?tY50E8K*TCtO(+mjf9}&p$R4~g%v$lb^Q_&)6&?*q7%r8B6+pJ zmU}(@R_7{_rfBu_9t20NdWJ8Wi1x+Fm}zdPXo|OtzfNpS(t4b!Ct>I<bQN~SB<@IC z*I#AQM+ZSQBF-lc8|<n_Fdw8$+qRbyOa}l}S(KdhO+ki;$0`j1!>@I`^**-3Vq*@7 z2oy}Z@@UITc>OUc%g$DcGb!q32XYmvT%L4^Gwnd_G_HyIFQJ(4f5s~`Uw_->)Gm#7 zMxU0TH5XEWTlj?nD=Pn@T?_``-Ni5YZuwMq*5dD(Mf4U?r<{3|*~<Q<q~P3{iG>1_ z=&Xy6wDF)$=+3dfX)aRKg0^!2VC=qc*|yNvxNVHLAB7L@2C%agMixPR>CfYs4sNpT z>D)-!%o1F?d8MjXW$V6Qn=2W)M+f6?idAz0IT~i>&AgoZYxBesE~RFP3t*^Ub!E0a zh3m1o88klgep%^Y!9@VzU;-^yhhuMeLTR31YT!<N8Gv=H1)?PT3X|ZTcLFhg;+RWq zNo-g?L?etkcMkGnnvoykksTU)@j)ROSoZW{n=0+7D@DS|VAueSd1HsBc9>&0feobT z;S0o0^vA2cz?`|{Zd=@E$ync#HLbYpXnTeww(aA0Io?*?N*liVK%H)2Yrmt(AzdOP zael;mk;JNcrB>!AY>zehfLPrpxD?EZFleMF?NCz1S{NVke9j*@&zD488N~{i9&i_P z`>ojS>jQlSOUpHjBAmRu?z9Sqk{EJ2et~b=Q};0?;HJD4naRu$DGKq0btDZ)S67~# z)of;We7}5>!k449^CV{+*KQmVJpZ6#S}($vP06-@D-wB-NbwKK!NmNU665N5LSID3 ztGB1X%$MwXj2V`XCB4?&efFWuQ8=VxfF@)2KMw6=;jg}@`htsl20Pm+(Zh^C^XT*5 z2Oal-s-MvFe}p!<gNuHKX)R&ipeo`wLkPQ5x}vV^D8Hefa{&wO9>98~itZ{^7<L}0 z=4wAWDRyquc6OPXV-r`OE$9fqP6;!vHap44Po0|eo0?@4UV+v9m5)Z({-3((S-JnJ z3(U8d#>384uUKm{J3ee^P;YRanr7osH!$~!B_LG&SCTeA{;9rrq4O{1cKe)8TOI0K zSeSMW@-=BWy2xlqomz97T4OU`$)e-ZCK=1UoaU)8JHhFl1x$Bj<nz0R$`#*p!+vmG zbyje_k~_F`-B%x-WE56d%;nDfYhnLGc!lTMDzqA_9a`9*?_byr1*?1AS%LN4TV~h~ z&&$q=wHNYQ=kGnujx(|=YVVKh{)L&n)Blc<ZS6)s@Smu`9^Cw2uIXwnp2G|DBB2-c zSLN=cbVs+>{AlxZl?u~y$Y(lM9Z2C(1`SAU`P98mSTU}v*2FgNWj<>*I&V6MaeBKL zoW({_=9RSh1j!f|AYgm4dWr)}77`j&Q+W+%AGMbYlc|}iEPA=+!14Of_3#fQ=?xHi z+q2HZ75N_aV0#W?SU$iOk|#OMvgo}fzn(1XPK>K{LDN&-vIxJe?1SHUDY&15RNosm zZnPfA<gN14EjOF^3a+m611_%Z;jr7(+z_rW!{I_X?1yX#0!O*(1xX+S3ttdEV2W#~ z+}*}7&ER6Kk_Sk7GI%v^)mfzSd|m>nGV)OqlnA&4Erq)T{_juV92}w7Tj;o~CATK< zFIZb!AuOn+0LK9q%JaZy;I#t|PJfE?Fz3~;(F8li4UXF{nd+7($`N;cfsF>6rzR#^ z%fqd})l*o(LRWaIwp34c7hgWI*qH^Wsaeig4#L(rz0nkq9&l1!;W2vPQy?fwBBv>U zk5o=*xmE5wsqkr$DgIhV;+X7UmD-g}LOGBL+%WDKrW0EI%Da=g*zvvd2b(s*1izuG zS|U}(Oe%|fJ58KW*QN>C4SrMt(Fw+NId3L3v&>_+lKRi%G?*|#68r~#DOrhS@VjNi zS2p`!pb7eMD{*t7HwaDr4rI=T&Bf9gFVu!#=9B=TbugXj=-fMFQ#;-v;3T9i;Aj>0 zpx}V6WUK{D{$L%Mc~hC~*wrw6z#8>y2{!WD9MA0LOO%s8$Y@WB4vQt%P}}CjW)r>U z8W4<9?Z!qM*$>V2kmuloUzQl?geR6_6<y17f2{4*ygj6OT?Lm{Sf&SN{=T;{QC{3$ z@G`V+nq0q<FlqUzVJDb$(P+;5lKH+Uu@mAmd4PQ#-?vCL`>CAZq%XfdRNqxG(3h71 z7No~o^rrYXUhQGDzBUmFVj1egBN0b;$}4t2;Gi3%-o+wC(&w+tX47aXu4m>*m>E|` z^Z-p0`)SLJ-nrF&Piz)4441#qBiG2b#t7pX2HKG>-e*@!YcRh+xk+D5woxVwxi|-C z%|7wRUpBfO@7>cM&EFotiWyk;_sX&-8z!@N5{?Vo%^VP}JR~iPTZkwqyuLPHU4rn0 zjuX~fF)eW<EuHPM8c)|Vlj$>fpx!u!xlTRoN4)WXTxu42I=Oi^`w(3C48t6~rXGK~ zq4`Hq+zp}?iXM3~90Ed)ywz(Dgq(F#U3NmApAPP~Rb2b6t$R`y{kCvQKhT@nmIJKe zTK|1LA6fRg&(k1Itlk_(_^t}i3+db`j2yJZSd<E<-5VCFp_sY}&yF)+R^nC#?*J^y z54Wjxrj}o7?S*yyijyrW*C42*6M2x>la|~TgTgc|rygGDM$vL3u&BB=$!!BKvkbji zj?#altj8M($rE02o|8B7WmG$*v!WRLSGtogw|JnD*dc$|xACj|%xxTF3$`77QP(lg zD5S7C1IZMV6G<_J6;D;GRm~nPOwMuQ2~Sx-Y0&P8(0fs;wu0V>%oRQ(v6?vG+hX4D z3v3NGBT|1g4MB5DWL4JnUitObGK{}?&b#(-+$h&VW!;Q<-AZ){ay$&^zgVtteMUJ& zu(HY*)rrf&n){4=a*77<Sj?f<IXm90%%3Ba?F1v7yz*WN#)1tR^AYYX{7kx8l1>#f z5Yh@3ee?af{uJ~^r-%YaDcVRJZRj<Tx`=@_v74;aP0gS9=G~t)eOub^9r^Te;2Pga zy2+A*{k(Wp0VW|hn)|2E@2NO-g8Xra!Va7ijFN)SG8H5tAoxKxvr#GwPMrvBs7kLJ z)Ca~=V{L7F##^}u=;xhU>D9D<FB7w#8S64boVxjgkC)$;=W=`Bz0LYK;Kn9(26|OE zGEEc7J?zn(>0`L$9R%C3m86d(N7MzyXr1V^m>wV^G&(}Fw`NJF|4I2KH$9@^w-o>A zySrs7zG2&Kd>QDL)RQv9XI7(@8jv=OvhLBk5T)sJQ64NASyQ(hpK5<jJ)DaV@LsD} zsb_RZ&5`~3*)2~~#8t!8=VRo*(|*HX2YB_`!znwq_IeE-vKiNnxMwzUBX_dDkzuX4 zoH!o5{tcMN{z)Q#qV4tSkF-3|`0iSHeyH&@qkQGhaXD6;)pMM-eCD948TDm5&&08i z)^=zsl3+Zqw*~yNW|Tk`X7)EtyY0D0e1_!rR!`Ylj0FF1x+mLyPuY^DEo*_wOdf9h zA02z&ny!0Z{-az54S?2{Z4j?(+7=Q0HgB!GtLOc1e$%uqp04K><QJ5uNx$jY@hzrv zF5$(hKUX$0H4IDg*!8LnuaX1u$CfvQ6u#%afqN5yrQ{E^wA*3+GB5kMJ!fds^0B`w z_;0&>$a8$IYLE6ZBKdjg>AzSvsB_9`_x5Ul4pWPk5DbGON|zU{?=^Oys&*LV#V0@B z^XpOKc>8RB*jGP6UD-&d+FS30c!l4QR}tY7^@qAS+0U;MihVF1(%VqrN<Ul+CuoLF zfYpJ<G*4MSzQ!%PV6$?BE}rwfqz%Z_AXr2*Og?abN>g51slAOiekmt~TwA10L2Ro% zHa<W+U*2u^Zq;_oQ>5x5U7|Fv_P?l8{m2*+XB|(E<<3hsToS)r(8CN{j=k}BixF>r zvti?FJGIphDJ_uFFK;KTF0a*e(fvTJw!xLRev&;egqx3GNXxDtW(r<WYe=-L@2WUS zytW)!Z|hrT_nNJD{)7RzFJ3O{y>M^2wjS_V3dpls_%;ikH$L~sI~R+u&r!dc)HhX} z#CHULguBfYfYU$jN0dJB6gBh|&b{>;TtA9TTqO)AuNO#GnY4WZ=`di&^Crfb##VTd zv<pAjh<Moq4X2Fl^cgr;aRg&--qvSOyjSFvEgwtIhZqf6_qszw$9m0%h<AM+E>Qs% z38MVNtVfR3mq%d>@-L%f<)&|dOA8YzJUDF#g#Uoh^ONk?49la&z&1O-HdSu*Ad9^z z+{w?Tw2)dp^9A-GwL`rl+k1*e-net_kf4UL{$V;Kp^trjQ~LA+?~yTTHFsG00riFU z@ne60q^#*YM408a@^+WX+a0!Bd7t8>IM?FAPKe<%xsx+9;BfBw2CDJX;ce_t_5QdE znDx5RJ3LId+sFZu?bV>xJxCxYEbKU3Bz7M6vbPVr1>VbJm1{7+HgfIqJ!-BaOgvQ` zLfreVe@!wo2g4Y`OX))VGY=D&z<qkUrvH|Y=fPWkrsjw9CVv3z8${K8g%~od5#nXy z5mU5dlUcQ4toFy{1kKr;IK<`mKV+3^`?n(dwA-z4h+{|sJ?Uo2mU%<i7IOA~MLhSr z?9T73V#g-&6Vto!v$*(hb8GkEQ4>k|KKk(JFt5DnsBLNhEMn<qKl~k<5kxPV@C^ko zuizyPpNm!oxpN+xZ)Z0*`W}+JI^<nBEdXWfv6KTriRk#l`=yj8`_t?aUWv)}^E<6m z)3{;GmhPm*wzKnhEZ7D$zlrIKs7rJTEyevljeNLSL|a?~Rjr=Ni7vO;@w~*3)!DNE zb@7+<OYK{i^{u`U=h<`L^Cve%i?MAQL&#U*;0CV-gW8(=tE1fyA56S_L2_}A_<uL} zwhhw>dat|ST{hHa9SD2L0zD24F=?o1u?~$fjW<!ESTItuizg(D_CHD|ghb|ct~4R` zVqepyriqBwxq?{;ih%PDKKP@UAT1q0VDD^#1+&PQz&+6o<CG4J;+{e<4>W@XbKn@m zS+>pMBVz?q82bsYaf}en^MeGBgwW8;;h^ujF@vID7{ePz`v{d^F%Qy11egEifwP6J zcZo=HMEXu=5O<i4X`*WbTOSM*WRn{!Sc3bVqYo%3s*qpv2O0yC%woLUR3fD)9PD1y zAL1DwoFL9fU)Xvxc5tkfUc&Rh1p4@JT3BSVS83}|JO;&r>0~lkrqShLOj0Qy##<d3 z*!s@zWH?4~09*qJ>6uYiqjodu4%CD6Fu?*5JO*vnUP2}q#?kg*OcNXnjj=Z)*!m_A z*m_@da7}JCndaCGjN&FWvS31Kaa=g@VqZeHdQfOfT<Ee&X^<eBsvyBEPbTnm=3YW; zvFKDK0U;u3LIKkpRFm%&M+Ww;8!@PJW{^<&hAF(^SBT)Y_<(-N1LG*N1)(JAPgrQF z9IBa3aB#9|4pUG3kFktsMoKDU7PaZT_4*yE@+1uCdNUAM=9ti|&Y6C~eQ-<@sPC?+ z)56wYE@mqc{|+5WH#LrH1I1L@W`ii1T!>+k(6NDK#y|<8?HeW(#|1MTq^gwv+it02 z5lST;tzs7NXH77|AdmTtvX^j!uRrggoRG<dQNpv1X|z2JbDm4?lAljAk`v(%@dVCn zt_YRFex3{FrxXrqcgd-QtvBxYT>%m}8GK-19`hI3_ZgCJXOc~?iX6Wny+i)J`rSnv z*l}Nhhx(mU`SNt;xB3@JuAtwd%e2bpzrqBmfVqVpgF*y}cMT<!|B%2RDB~G-uk(p9 zj{C+%C&fuzCQ}X*DkIZL>72;NLz(_$JWZx67}GeC^iM#egO$<^FhEUL*i!%(3SnDZ z`!OO`wpq$d099X!CF>E<SvCnF18PL?U7Vl7*n2dFTuBs~6v9%Ex`&whj%BQ11t&O; zESpuI6YsS{Iog>0iJF9pMT#bhC(d{(QRxedY^{__8umSK9^=QU-ctV1Nk1`;Cc(in z&*XD+B(#pU$03uR3&oA0BcYA5!}7vf;;2-CYT<Yw>tfGSbwsO>ifPgl7{q-Dptxor z3v+XS52z@{QI=O_t57$>G|2C}u|r!BdJx#UajE~LOc+Wda|=({g#i2U<0Cvz<H;<@ zxe+Lpw#NYeI`+}CeRfZ-zNg1U-2#f+N!;27U+=(<R~mWXK0VK+v77%n+Zg80i#R5a zD7OpzdqLbsxv^!_umOC{Xr3;TPFwfVu#$sYls~(MvD1%l;%Q@kxi1%52T#HT3-&HW z$AKf}wo=}1B7kdmDxOvp1oJA}@lIcGEX@6VlBYZ9Phsl_cqkr?3xgwg2ODEAM$axL zJlfisn6cVxdjciL>=6&nfe5Yr>?5k=h6U0N+tM~!b#0UP>&6)R8u$(0M*1$tuc84z z7lh~JBd9N?Z7veX5%Cd)_c_PNJ6!k27|Y8>5ITQ3d{%282NAq^E>05&nO6+PGItBS z4Hh>dR*Nd{)N3wx%S-s&uC-8WzAFFqxNf*(KEh6r5nC-LxIBzmb0>#UZuxT`t$P2G z*|iXy#5D82Ty2LAAU6ufcNvO%dMzXj7p{^I6RrKYM^Ft0PGst<ac%vfTI#F4AQdbf zpT1VO13mZ;0@7FZ3N=gia~c=gtk{eA>nJUiEf$ce<otTdwE`10U=`@Js<mf+ddB<> z>O1?!tU+W?_ppJrT!H~yf}rs-MB(w58J{v@XAe(@uC9GV*FF;roIX<+xCc*S2i1Wl zMl%nVhLb)MFyz{LK%1}TvV^MRpXmCUoE&;V&^PyoXuzOx7xyHB!Q*vO1;QLe&u`|J zLnf?tZaf;7a=A;NMX^oS_`<{!1jFo@8ooLXuX93lH&E53f_vHQ)Kqvn-cH$cjKtX8 zFr|o>UfRuQpa!<CZVh!EYpZVT&DqhmLb5!vh`)mHEx)F=iJ(<WLC$E4>>{27U$x;- zzA?iX)@r88y@3VK{=ObewGA8X#GRnNFEkf>ZUXz}rk@mUvYGK(-1LJ@?jcHsb_~|{ zWWetWo0RMZ(^mt{^@e&DBAyXTjh{T;6Yjm(Xz7{-cKOGeYMdl27#Wak`_8t1Z9@zP z?uF7b$DA5kfI<<$Gw3-+?IDncZhMi)D0w+ih1O0V9oCNL=!JSr*S1?-rG&DLe4J!F zsoGG9xmY-~Q#0{L(>*maIwKsi($mYwF1QT@`L;k#qD&DA3O}(hO-dx)GR)a~=lPlG zF#C>DPFG#b8dw^TxTA05P3OxASZ5pjO-$#t)*9K1;4bK9I2=t+Mw=n$#Rl9uf#itl zn$Uv%fCQpCc!0E9mW;h|U&}ZW1T8h;StuO^@_C_1(3Dz6F^^FCuAuT8yGH1jA9|!- z2|Nn_iY@TpfIzat4iSImjz?g9K9wX?>i(|(prc$suA!#S`$};B-EoK}D`obZs~YxR zzJQYfa4wh?`3k_C9(zYYoECju=`T0))vxUy)8I!fBA6!pSSN3lObnbR2QpLu+Xw^} zC;l)tU@<JA>DZIf*0GGFF@@5HHx<7tA1L=jr_zo&(#u~-?NOIwicziBQFpH3s#;}E zs@h|W492C?<WY5+Jv*W%XK_v&pD<;fMY_wPv?yz>A1q<DX7Xdhs>_H{kQFOJH&#ew zqA(N4lEgyPULL;{p9tbU^f3LoikM&z;fbF$W?FKj*FhRK?k$Kjdi%H12`58)%5o@W zR}d}i#bdTILHJiJvF)nP&(*SoUojBJBD-eyf18$uoVqPHVE??9n43(#_3!gt8>|OG zfGkvH)M)N`hH{37?cdGN(O%_8k?}V4a$qg6z<ATuv)x8DBIbTE>OKxM<6MYS5<fE; zh=&n~GH2#$8(h~Cz=eH5ZZUZa1#UrBjqwpNT{XJpRsFYkGIHMh4|l>m>M1gWGvdHD z=eK@%&J%4~7e95&^W4&n`wZp1dX&4L(RV?-Ea5gquo$<Sj})4Y*62>KCDb2u6=a~= zpOFebZEKU|vCY^}Foz(oH9H3~PdS=Hva7JfS5(gE(v?~)lqHpAm*>a~ySQP&bBpl= zw<)l9vy8E6hRQX|q%8HEq<=KPcHMJKEC-+Bo9Nmx4#BN^U)?ppvG$B=VjihNfvH&F zu4Bqv{w*BV96~KxVcQTC6y^wJ)1BU1Li1>Z`An5*O>E-(4heONRFmBn`k?Wfr{!H^ zMPx*)`n~8xN7?TVQ#C%1&DbT@xDoDIXSQ%3;~}CS<F4*6us^w!0Vf<@Wy_D)Yi1ux zKXSfbnSCRZfA?24gF{zvjoF1q%^=(UgP3Bxvr8-0y*Vj@#+C-M!&js9u7l}S`flh) z5Z&S4?P?KZrW06Z71#pV@g!&t6xM@Ue<V5f<`tbwgDk*L{CWupY7>^1Xt=g2I1JO* zdm+4BQ=wezNZ6JETi7c^r@gIjjMWNvTg^}otukjO{f&S)MoP`=B<M{QSq!qyZg{FO zFup2FFdI!2L?4djR0u|edenG2pObhoF38Rx;2-8V{&-pj)P@f-ihW>0vx}GxTj;Sa zAX=A3r!5i=EjL;cjsmrW9FUPj$E9$Lm#4da8uA~%G!W7%`ab{@$!6cXT%;Tcg%MY= zafV)Ki`h-xN{oEXg2}~>wOrh%?r#k5CRdq`551!zOL4owFNKIJF1-{yYorMzKay&C zC4+mE{{>%KJ!iUg6-<tk*+gbBCpME?q>%bS)fNpR$vw8`DDvzjgd^x=Z1wy3*C=zB z$oq*}=(F2$YuOKmDJ+&LDCFbu=a^QrKn{}L{2q&dj(`eYY^KS(#9^1oBgHsCk%hN1 z+QDiy-*B<l#TqPks3F%yrJ|)(QlL2n)(JbQ3&z2MHwizw;uQNthM5WR<mnqFOWb9E zHI+$HlE_4z>wol8{$WG@BqX9gY{I6(Fjq;3KJdtflJ@T?eY0nYAE8F03Z!VVf^(hp z5%j|Gzthmg7>qdAl^q^ruD~JN2nY`(ociwD4qoh#(k>!?kW*$a1=q{h$o-Di{}Z*R zq@*e5y&OpfXO>k40dvfsVPF9ZL)dX9GjNo%wzpQ$_a6Ana9*usB!%Erg|Q3XT2aZh zr8-3ETOnF58pHcoJ2n!Y*hQT6`Vco!LqI1t-S4;_$Jv$dZd5bP^fP*-e>HnSVqZCM zERX5G^%7aWXC4|+H@32_PrZ(PwI9F~8_N@x=vy!8M%F*Q?C&pB{V(a#>1E^f30;3L z8@6FP5WqUIhYo<@mDUkVttRSP+o_m71g>m-ppNh4HT0{Z0XT@-V4Ppun$j&wX2fpC zK;PfPGQ39Mpia0delx`aSkXQMOEhIo7A2z6jWK~X1rRPSJyiWu#Ym)tV4M=YvGa>= zIa=aD3u9i*s&HmkMk^z$+{^b&Qb;!Wr(|E*kDL}3tIzYH>b6v!(Q(;m8q5-8+CfFI za~k+%D0(c1@GFV?_kM$&p|t<|cxe~MYgXIWA3!=IE6xfpB^;4cNhQtVI4ID>RaTdM zUjx?`8!o%aLMwx)3vS)(2!~ng*c%YdRqGhnvT`e~{yqxpfKKKQ387p%VXL&+KB1G< zCF!1BO%t4GM|Q(ApmcMr<AVHAeqIgMjhuS!OFw{*O4^?j1CIw~8CrmDnK6iDfc!v@ z@?L+l9e-0_quy0wZ=W>lKUmPbYGWu`i2R%~=iiBIY?6-l(k#w%7|{pVvib}Cw^HO) z0#d-6UD>DRiRk_k^YFQaiQ+3IqomcE;kT1FC}-9cp>R)ij2~E*XU<J4-m#-Fe9W3G z#w5&=X~1K9R>lk04_h)VDRgwX5rf>&bX0YpF@K2aFFtQNst!56mM71QOLakrQD`g1 zntcQ0bpLrG5TjOE`)s~ab%U-V1fb6BuF*P;N%RU1Iz$$xsZx7MLt%B<au)MZ8!8p1 z!n2qVXlSz+suENMR=M~u@?-SHpG+kqF^7a`3xJ$Wk6t~K?xf2BM^Cn{dAo+J$FWle zBLOkkQ3D~x<3FYC8?+#0(0_g5{~FI*i1}D1bcIoL<S9;jCvLP*T%I|><LVeyQbsEs z6D6N&O(bZM9%gv9&x&<J-xhio$ZU{j$~p;Y;qN;|in-+_Djxx95%wERjUt_Q>v;wM z*ozCbSqkEHSsyF<G=?bUTOZR*nnp;efsL@7@7v)CyTaGGLDN;MwFI5&=z4^eZcJ0H zSM8(Jxw=jC<A&5d^M5&456s@_gy!cCG5!I{uSpiJQW{9{JD#%&Mm2+4I5LtD4~wyR zc=dTsfslp7)h121tLAJM%-kR^&()p0TW7nyBvk`(e=KNgRCS6xlBf;Fc-yTdkm-RJ z)9D!|!24w=pXR6A7e9Hb2(MhnP#aAi1wZ#Ilc_r7LA9>Bbb2K?-;O14`*S~yn_FgI zz`izkvjhE37B7G1r>IFvINP0>RY^G8eU^JC=HOz+Cqyr19m7v~G<kcyt<wIeejC1_ zCpAM1^wlt}+re{NzpkljX-dmxyPL80K2j9{sUPh#G6PmYA5gnozHVdFv&D~aYI9_5 zCh(1s`CQUkJRPW9<PmP8Chi7KilmWke>LNj1J2lF7q2COF|1zb;0uf!k5;#rDerM* zu@Z;J{%~pn397JGhdbG^@XS63KCR*Ef|c@6$r(UIAh64e{%_DyZEEa%B>%nk^?mKj zeKnWHp*nDJ)!y?G2N<-dL&{PMgUa!T<dP@43&LU6TSCrjS^H$3K2c})$()~)X*SWk z)q>FTxQEd_OP$(tu-HO!Bv>M}%o?zd&`y%S=HBgsD6BzECkT6(A*c5|;)b&G*+XDx zO<W(m_Y_oBE4?N-g_{z$77=XFg^_weHrvB_SQ}h-UCs~JSA*^7M0#gOIx&DTi(?2l z`%iYdx1}OLcVpHI1mr1T+}_-4vU12aJd<4>VqN@T7NLO9PF?dCRf1N@&I5ULuO=j) z0^)mi7H8%`d07+@7dXw&3u;Ff^UQhY8ic$m9V2973X#oO8;Md`J{Q4v#0dtxY8fMx zwZO^(-6M5)b3lKtCqwNwyJ~y`(9!V~=?A8ODrd{B7OI$nX-|-A_Dx$VA6R7`BuHVG z4fu+{yH^dww+6e%a`(7;9GhgNFKUk~X~yYN3H$nQ^4aL>ZM9<9C%@8GP-;YT(M7#T z@C|6~S(ol5iYoW?Xwl`0`gk-|*|kbNv!ERxZ1~Dw&OB+S7IIKYSxx$U9M$?cpZQhH z+aq}NxV{_{%>Msc4F&mDa`9IbugJqx&#Y*ZENd5j<0htNo>T7B#oKF%OND5jY-A4o z8M4ab1eu{LNv3{znU*pdy;<fg4SNiu#901pBz}D|x~tP6;|V21+m?&T^h7Ra7W0S0 zp#N{HA%C;{fd3cS(2Kh8L!l>Ue;yc7FN0tTSs{+@hifdFn2?j+JSCl0N*d{p5HcB* zFElmnQZ3qwIM=>6#t{JY#7v+EP1Rs;V_{i%L>QEaImy6#wz8p~gW!4KtDIN@Mc>l0 z`M3x<d9RX=K7FpMGw*PoI`ssgI)xUe+Wt_aFTM&7Hi)w{1B`h&_A>s^8i!db6y*Jn zD*ggM#ZY&P=)%I1w-g;<<7p~()u@%6xWfEW36s~M#PO1BAKq8<r!%8C_v8plJ9=^> z%}&dZC&MV<$Q%=q4Q*6NR%3^VKyzzl>UbRHoXD;OQs$3Qc}&>)GH8rb;QhyYnnJ)J z4o=%>XesgO`3t!Hw~#9S3$E^uG`+Ls_C4L+QdMakBY_KVq0G`Qk#X}y)}<&`85w<W z&lP`b*ST@3tJmb_cH5IH`D=>}*~<dQa}P))#5REMxaQOL@@Jrmz7sq!uTI;O-O)CQ z*VO8-xxJ_N3P)2`%4H5($Pz;w{{Cys>c0$~>_zTfpbk~QOypp(O6-6AVT^8UvZ!21 zYzyZ&_y|XCk-rSm(v#eil44KSirj}`avotS70Cg<WKFA`E`8v!ou!5zZQgD~>WmSm zL%<JZw78ZbJ$Z6Zr?%`fW0mOoir%tMUCHj8={#3+8|XXOJ*Xu!sd3%qbwm0)sB`d0 zzZM9}Iqo!y-N&%0PqTF<IP%yTBnhymPD1RHlEfRS?(zH$@3<_L_ULKcF}&ZYNEWE3 zZaeI7zJ5GY=s49M^5vPI`|l59#suyTe&9Itl!J~)IB8rZMlkV)i9o&JUMaydv=tOo z^f<X+P2=;%a2BbZT&Y;)4A`amZ^9ITius8c+o^3(kQIp6zvDa%_CDLQkH2)a<Tal} z`SSEZ%APg3v-)|FdR{}5?dN-NCzp0oCau0_<J?WZw@#P7a|rBVl=)|R8H!l#gI!0X zQ0|kB(t88eXyV2=SoawIW{lgE#(k#oVvb9<RWM$a^tXx3p{;rbHQXy>d&}oX9sg57 zT`r++|FJh_C&;kA<_Y<59shJr>hzr5KTPz^Qu;>biYbV!;M)HuAavvC0?bB>FrxDh z5;0`ve`Mra|06u0!u}&z?GT=ksUCF?jWu%yxek?F9Y+_Y&ds{c|8YX<vwzU0zgwD} z6tlSGSpVDW)!ED<n$$mq=ejZ@+a8GLpW$))TwLQyo<9G^J}uwa=OpvLK#_GQ{lIMQ z{<r%nwErRguVu_PfQpFSzhCuKZ@8B=IQBZ${f}X~b@chaYNCIxi0jSF!R;SI`qoPo z7EAwUhQw`p@;~Shlgs~(4qaZ!9bIX@RW3DNH1$$-v~t-gETE6+7)wc$bIk*Tb|#PJ z#Fb7(RjMTO))DucC(p<&zh^y}JJzGCq_8cDUBqgv<2zU?A7^*6zp|xrJYe;9-i}?f zxH%y!S4JM$uE(mQOtlzqWmt4gJR2{HRBf(Sv&|X#b*J7@F*XK1vSGHvkY%A1<gyDN zyH5SrFYt&)o05NB>SG04>h!>ouD4m_Ru>D|t#Z-KlV18MvT2pRUQ(k6-s@=45`arW zvw<ixw&(%3U|=0Q2|9QQwdOOrvOk`6cARF)zH{h4nqnG3EU6!Z`weu2yEZ3DemyaB zRn6!hI?@s5zYsJ9gM(ts&oG3jeyHYzLRkAR6@~suOz||i#=$;iumm-AVrgcSk@#yv zg^fw{U;_J9_{d3IwLm5-D1qcvst}57#JPN(hRuawY7cojLL=a$wy}i$&eGTfWlE|7 zGVC#vR|#XpyIA5Ebnjm8$4UMrp5hX@-u?T_+^Ne{gp2F-$9hh3K~1!wB*6+@cy=`r z(wkY)0lvf?B5Tx>N`DEn&=5v(^Y7gqfz5oA=N9Ktu=*gFTPRIj^twne-!nN465!Ox za1F>8bI30RVOVuy3{l%@=27i%h)|-BE3Dk#IejnA#tLQ8=GUHmO`jLK{=w|tDED`9 zN4xH1((N@x4Ep2XgCy`Zf4_V_)y9@%p{r^vtK_e#cV71rBDDCsl6=mW-W#gEn)3iN zaJP<U#MvE?zuvRkUwLQq7%K+t8zqvcF73dh$DHoa3-RNB_3@FH*XZJpG={Fdxd1w9 z1dY8c5gIin=}+arfBRr9*PH#8qW$=%oL&)Ir|sU8R^E<t7Vr!VO?H4!y=4esfoW(8 zv5bBi+01vwZsH}h7)v;NZzne5UR8&RxVgZyy7LuoDoW`~cUU?l{Wo-KEA(M@NG$wv z8cG?CGwCPur6H%`Ag(b^YhYCvE{HNu==|9@%%%1F=jq(Im9A(GS$3B<&e<J}XGpCX z0qM1j7Z?ZX49568<AhD}s}D#u;f!8_3PUKESOQoU&d87UM>DSMMjUK=`zUAZj{lhr z$+P~?Y)B+_k@&tdb-EK~>Zv+y1U=)t9rH53PTuwf%7*j7vzvmd&nYe$gXB_}>hdu< z@sas*M(PY^`>Da4YEhHop4R!e#Y9s*SN6IOkAbSH(ahPY;K{#6`n6jrcRg)_zS)w# zvGw9zV!I`O*ZRU}mrgTQH_P@^w%1R%Y33OJRC6Ynju&M+`d;Q_UE7<?sz&58xvUGh z;z?@r2l>D;x_Clt&!JnhN2p_>w_*#?vHn~S9|X^S<w@^XnWE_6G!w3_mZ-woTA^#1 zQ-?;%!1T8c%F$~RzVw+=pIFOD_x$+`b&1Mc&W|j_o9~+G;yYWEBe3DqbzjsyR3Y#s z-F7!xD?fAGxACoqJVujg$oucQCA}oq$6XCNiKdAFNK2khrMjw(mpD<))m`VkAKJzU zXMh~q4ri_G%_KJMD0(|7-OV<~F2)Xk72c=FeN%?k<T^&tifH5bo8DF93%pjNsE#)7 zd(*=!$Qj2jRI6XC_pCAS)Z#x<RGHxLwo;6g7U#cOpbLh7N#CnmRrUgwM9i$V50kTf zM+OiTQ}!=Tsu`a-pbum$HUBKX+1}d%^JKU$B6VroEZ{doGA6)U&Ch0y`ei%LPbk^D zL>@~DEbbvx&q%5}NX9N<@i0P@5d2Mkx=DQ~us|keq=dG69>EBcl0&Xxu0J7gN%l?6 zZ1-Re*02&BW<0F^qTJS?6M_->hr(g?rt+y}9vS*{+Y0yuMC~p>&j+*;=ChGycGj1@ z)CfUGXm|NQJ)_Up)>k}!3SVZMdVjL-P`C<ukLypE6Evt-JbB49aA~2mVx+90U$g~F zZWPold-Crrt4{WLEnb_}=t;jdS#anH<$xcBz+0lSlRwbcJvr+>W3+hr^4`KN-m~%g z{~xTq2UHZzx;6@;AQBZ3kfeeENdl6?fG8kQB#9)IBsu3WAcBb~$svk}AUWqG2tyu% zFytW*VPFUY!^HmQJLl~EoqN~0Yu&T=KdaYtt?sJouBSrx`_@xWcfFEXSJ@6SzvmLy zC_8->GI_G@vyA;6=){zhWQGz|CUu-24t`En=sot1B_M^c9hoPnry~_Uy25phdpCOl znc?6}r=j^nnH&AT+7NQxy=(STkKy>FSG1v;F*Id0TDFd`+e?;;-?+H_swZQCZ>Ek& z==-P2QQi-Wz1xo4PDZfAFNl{d+mn42vAlNy<v;snmXXF4!`;&K=1*hcw&jk|10$C8 zwsUXWt<mwj6j~2VBp{FPTWfziG)(1<MAm$A6!-mhkZzOkb+ps7Z(#m$whN5u3>inB zrqits6)cYn-4o;4pH>j;bfO{F{E2nE4#B*@%@luWe+qFB{IPnUH>d)%Utf)sRq6Cd z$I|ZUBi1Fqsq98ioev><hU+L@0}sB}keleGIfNC>HX68yG2>oPXgzzMmCCebe$<7q zhgudS$Y@D5zfimbpORH?uD=R8whQrio*SBcv~~Q`?b!+*54D&%GMJca|JaVtG1Y`M z-GoP(<{a6arUXAMDRS}%%P!v#Z315%6=phAm+9mG01)n*1%Kx)`v$&c(ejb6NoP9Y z^*c%D`d6@;!11r@X#<L{o)eFSk4NRb_8opaN`Bt&9gv#ur*vaiIZqmlc^SLOJXUjY ztBUEW<1K`N<A1PvFmmM^LeY2c6d&V0`{q5XvbjaV*r<Jg?pM&^YQM*QwJsspkCD7T zp_7$4T9U~7=qCjJ&D?W9<$}e^2dWF8(eRaim$Z!xMXz0x4L3giC2jaLjfz&T=_%~P zr9n#^^)`m%y!~F?HQwO4BRKbL3i+WhIhlCAx%T?^oK|=J7u`=+N6f8M+GWx^Mirj& z;ea)=V;KI4QMFz>t5tC3%B_i(b7ch!RvDP)5>qajJ`@}G)npG5yPp8Zae(c&%h&7b zH56`D=q{EG8rXD6u1}W>LXWV&tj3>BADt$10_dNdfYz)HSL=pmP?Kxb-4xlrLx<<_ zfl<`zr$C=+dvwyZoV2l*WcY{Yq&nlP3s%WmOXXv4DbrJQl|K|xgs)SDM#etmqpYl8 zJ$zWP=CcLo8%tKy*`-^3XKC>LFlYAzV1fNz9n!_=^+~ne;}+8K61s-<x#A9F^hKzP z^JuVMVCxO54kdl5xx%1$y&fTp4#2U<=S_P~-bRLsJw$lMv_lZWmlS_W^E$3W4JCCh z8lVbtfPGzR4oZmc=)!>$4PHLAz%e|IWI8yV%LisIbVauk#2HqWYMD*6i*E!pmjHP^ zWbx{@M+cDRjg2vz^}x1>#Xjx68m{rGJC8d9ikKRq+oD-4eTM<B{mz=Hh6}d!$&5G5 zG=|!o39)`HX!d)W&-Yz95+Np=sG@VcYd_@P=u#xra9TKV%@>Y&o@sQoO7i)mv;_`v zi@`r;zCP*-xdrWO{HHl`wR|i^*@NrH@cEV4K5W-Wm462}YG$x>n8ZHGe2lmGzKgdp z($w^ul9fJrjw=CqhQ+l#uG2#SAD^d<7&--kbWznWJj{mMOSD75>vCm;+hh$BS;s+9 zJV6+T1yX|wi&I-{rxZ=RILzxB81>s{io+|41D}_MS8O9sttU-d&GrZ11U%brdKS9- zD)(N9(b2wikQ^AMx3t_kKPh5avtJ19Qggau-D43gC8D(FiWRTOP<)3pd;ID@Nl~{W zJG@#1f`X&`89@1Cy<uG59*N#@Q&SUYj+_zQF}G~S@~`vZM?5SoZVH(AkqTG2om?C9 z)qkuvGw^DYQb6@zRe4KUbtkyPpuHQ>P~BUVM2d&o1}pG|w6<Y44~xTEyCp#ph>+~H zf%ywpna?)XMxDkgG1}gYzL_7&Xd4^y#%rUiy2e-jgKsO~YySQYeolEum1xLcGb1nf zQ1PATM$~<(lvd!K1nqSu_XxF|I10N-u=g752IJF@mj6NbQTlYRuZEh|t9MSs`#_@a zk_P8mm^$N%i0{2V%c5^9rD|%69JYyGlo(g!IqkIhqm*jy^-+jF?`!hn)Y9~mB*nU} z!Ok#NE3rjUOkuS&))$GpM-qK0f91jXBGC(TTj%S_%{Lzu#(xG~DkzFn%Q7@sgLv4o zI#wm9O%3&4TfIu*Q#~2Kc_}HH!f*mR4Ogz-)c(^{{q{QT%q(Zr!w)RCaz1@fOXHwq zrp{QML&NB_#nq&*3)i(zf1`ACPb;Np)&3JLr=SBht$8|Ylq(IBaF9)`TD^aST0Mn^ zqyzofe`0v_t#+#TEvwzu`~2miT9)7XX{y)b)TvYboL(fB`B7M5;uJ0qg|IYSbnx_o z)*U<gvqeM6Zz!8<)CURz6b2cE_C>Ek>m^fpuaEHhbTEaF*8B{U;D@*G)YST=)**A9 zUw`9%h`=Z`uo?>I$lkSgfXmq8MDb?o;R6bdEJCe!EHN2t&S^JK6(#aALha;Zv|4?3 zvyryoSfyMIg$0#Pr9RNI(U}r7D?$5#g5<`lSBW>LIoICje~p!kKBl*njbj+TXa6&4 zfbog6qSi%5V+a0ooOW}XoGD7|f-%grLgF&C<{WJ53ecY<=xvvaNHr6?AR2t~opa7S zDa_qAPElR(`@BEh64cGD?{|Iut@eb~c%$QY7e#?U_J>f7pCKgsq4kZ67MyljacWI0 z@2yW1NkY;_4mL6%A;)`FeHr%7%KP{3+*H-<3$MJVMd5=vY5V<-3@x@DGMj^**Jxs? zPP%mIXWOM7N;~=X=mP^uNHQ;$?p9m%qx)QgN?Qii-=fuiGO)(pVAJLqP%WyAQLtE= zKA%c3-Vjhrlg_6%Na9GvMSM^lvah)R=MwF-lKC6y--*?p8fg!BRz8Dl8MVu<Yngxh zU^FH56wQ4OQa_RV=JSoH@8616&)?$xP?w<gN^d)PEs@f2RG!M)Bc9gTZ}HJWsw34l z<c*OUmpIHhp1!fOIxjhM<J*~;n7nt_-J*(9Rb6NdzUind*f%77{C#I|ox)h-fBjA0 zh%$*lM`=(L(w_!cdw7)jEZg!a@q$>u=&MTA5ELc>vPCtODZRMIQ>~uBJg0~n{ie=R z`sw0#*JY-V*DhaHJN(Gu;p@v)P<?~xyr`H(YXTJuc;{ut`S=!8ZNdzx3@&K9U#Z@^ zBrz?r+O~MzS`n4KlGnrhPPzJOK(J=u+@3y*UjOQC<L++0>|Jcay=0Qg+?V+qW}F#= z9b-w>wbCjsMzb{n#o!K|nP1s~axQL08@p0{ot*sqP3dO){LhViwWfc)qLT`Uu;reJ z>fedmdJ!2Gb0tT5@Bf<_HRn5}(A=uviXCgl^pcX931iAjW)%J|G!PkkjfbCC{Xi2c zI^Z)uqxhqsgSnO{@1|MTOQ-qgdUlk$f9H2_-n-@u+V*QN;rmq5p-Hr4=kffoTcUKp zdB-`-M~ivX;x|qItF?7u@Yhj~7w<pVJXdr;VchyIFUw314Ci7izf6ej=#jmvZpn`2 zPP`FRv6ScG=ewk!S&B&T-yBu=+P)zFFrib-q4`M48ln95)k!mN(8~%PNi8@_{K?vJ zO|nc|$`{^Ezu(LuTvg|4=2u6!7$g5lyxsgtbEgPQRXrB*fpMrKv(*Sc0TvIAnpF=! z)!jbV&e1lBp#8}XeKcUe8Szx`sN=`)H+(iauA)`Nzo$s8z2UuA=`edyzq|=SNkrCY z_1merT=H{Dj+GDZAnmkA1m>i}AU+o-{qTgt=4R6*?A$v1Zu^D{`ys)_`<;PgRX4Ks zo<n;oeR7$u>N^Z9qjM^SB-(x_G6BtV9Nyk~BZBI4Sh(Q(Cl#h+{LS>oE<kD9m)PE6 zce;{=t(w_fOx4MPt(G0GdzyBx6zrX5NqU`k26r|*Ffp(&&e^1p?qYe(xf9LqfaS~I ztULzm-%v5ujkwGB%W}_+^w!r@=@mH@(%<kL73j{JQGA%U?W@Wb^GEN%?L4^T<r}7T zNqHKhRA)X$H^<O<mtU!6G4|#vMa>4+p&Ld|zh}-FJPw?272zI-<m}djKJXcopkYHj zOv)av_Nmw9k9`_q>VL})DaZ85(a{6P%vpUyO6QL#MrrVZqus^>wmgT>MA}7DP8lWf zlqQIXYzV`P^Dn<{c}EfbSq*tucnsf+N2y;=$#!Qki{;zBfw4&2jk72e{3FzR8=8{- zS?Bs^DW4j@rme^<NP0nk$$2OQ0?8OEr@68=p&T*t?Btrlc5bAoV}{*IkVAJ3RP)C< zf$4ck-pmnKe+QWdg%T>&x(dfpv|<-{%ptX=GG$CoG$DgWdX~lt)uL}|$0~WnBaF0M z-OlClQ?ah@F?UY69ebWlmfpT+@u!-{;nPaQ1Eb3tcfY$Q@ebd9v%vPiDI~$FbPJq{ z0qtx2iu(axqGNUC{P>6nN@bTKqV;Z?w_LI(SUmZ0Q^mqq6}XAK6fh{9kur42$C7I! z_o0{dHatp><9J6RD;anDTGl5_MYPc{zWqg5a#i>pEl`#ke!cXIuh=bGMlR}@=SJOE zo5`*X+R8Jfb5m5;jp$;}(LiDb5+a9b>8)ni&1V1NTnQ;AX?^q*G*Aq^0C{whmfvJH z&9IJ6HA=Tl6^2jFJL?PA4;g=@Fs|l#b_JJ=`_)R0O1=yYy}XM^?^o5t_<Z}CcRFw> zbG)G^aL(?no8&hcE;Wl-h+c2s7iupFdsPuj;RSwCmhF_i)Poo5TJ5}RL7unLAsHdN zpLy=0&xr~^qiP1+Ub{;dvRlN^nec3^s?}&SpKDL3ed%-XB43+UfiH_KI&(Ox#891D zV&(1YjH_3fb~Q|Fn%!tk!nUL&H^NX}{9*SBdiy(lOEz3arl84k?^EqZ4o=6YpX>_M z2ZH!G_RcoC@tmOtf2DKr^myaI5+NPN(ut}Tv7U-K;2hu@9c&7OKn_cvhA`h6;6~R` zmhy&_g%J~CUstMazFR%w|1lUoeN6--aQPyUvogOs;Ra+FCVFpeIw7VT{8sD=@qPN1 zs<eLa{k9y;>(#zffJWZ+jL#d5CNGMxRy##&i=vBVr9a60<{m3*7_rYr71e1tQ1Y^b z*7>Z*Yu7H5<Xa9kfcs!~ln<nTXvD!T`>M!Qm2U>To^gD~QdW<CNSwzS(-({-oN+!h z&0jr{oQ<lj6>W?7N*Cq1$@If7sNtZ1TGKPd!;YKQ^#%Wlop`;yO27XF`RPkAt7P~{ zpW4;S)kLm^pI>B#F%A3kGc!4wschX*#v$AiCtCCb!w;^%wQehXbQ+6_&na2#N${L} z$$9%BM1k}BIh$ran;+^`^N%RnoNSbm7~@AMs$t>08vmAL*ncIasD(}bqVG~=JvS<P zz2Li`PURVw%C{+rH$<)#oL>p5j%3>Ib$MTk?p7RfTViPuD)^)MTUpWmXO7eC>~V&U zbW3FYBndtSUL6Pl-n;n%blL!H`Ufaj)*o(f6bd^OZ;Y(ZUX^Na<^#Xb^iPpWD=(B} z@$d=2grgRL@q<c#D{m$b(7#a<aVdAcm(!zaw((R{XUKoUBlwqy>A(G>!1D*DGvUPp z^-_EPn683E{j=tZ8{b>zjOzjo=9#aJl%`qiCCqe6pVW8q%RM-#<O(+0vMbrWdX~?U z@6vq%&*>No`XAO$lRAf%Ca|Ks&EkX@WfqoRBq=y-iHW~`&`5io^cl@Lq(22R7p+nr zxjgk&QgK0C#?IP(_c8z391mT&2ar|-UM^gz{)xjbx#qZfkR<#v<aI$U-Y~dBv6(M` z`S1kz;Naq+uoHrB`l|5dV-s!7hnW4_Z2?_l^5%wy2ctX3?o5n~MF$55lP~Ty`cAB- zqf%hV!Pkxu9Wmvtoi-_QEZdb&_I=BqMV@k{GP1HJw~`H|q@-pR7p?nk=*~oX{50P7 zR8dqER^A#^ZVS-dE6*6-$Q~IPDYKKrRaaFVyjyTLb8~YeYYE<HIwX+1)0);wjEs!N z(?f#M@$*bhhy!aI8^mr>Qj*nfHdAV9YRuM_Q}@csx3!puH(tK)dDSx;syA40n{>S$ zu>IvC38`1+gGG&vjhXrR`5{V*i&G|@O~lf54v%Ilvh2m0FyF<om_^<uVd<-JgLQRv zbKTwDHs8jIK0;TWU0rqke0{abo12@NVY8OrTaRt_w%QcE(`}56?WV|cpjp@Yin6k@ zklo!~LdKPbIZ@o<u|<G?UCq$V^c>83&SJ~zYeDBT{I59BV(eKy;&$1jtqrN;qhR#g z4uSA3Yi~e9(89U7p0)mdo3PXrtU^BIY0fKn)?&-@Ydy>TR?usD$3d8kNMBIl^%Su` zi*4Vh<z=0mf-}MR0q(Yde_QSEe{9u6?(j3A4t=4}!@^)ngx<e<LfP&AF~R@xAf+da zS20mtW28~ja6B5lrlxkKlVdBR7Hw!^o9X9n4VK)@r7TtqINEbvw!u42<ifAqhvkE1 zNYww!3;nm~n<8?7fy~dnu0Et_BnJJnL}0m|{}$<A4pK^#@xg899_u+Pt*ei(3kk-3 zPrUqD<LP^l%&D!CtJX}F-Dw6Lqi^C$)u8%~I)rdR%2REjzy3&YEEY@N*>Ta1MnqNf zrRx$dZP^%^<Sw|&t{)xw0C+s!Cw$Pakk4dF)TA986eK@wyMw7H!vF*VL0sFfG#Hc* zI1yk=07OMaC4833huST_TsYSMmtXW`(kc5$n|X%ckX%hIzQ#|VYaI05?1{>NgtpK3 zk7iD$0FszQvhmZ|f5Z=bfHl4s_s$x^<#)ZeS;=tJNj0;ASLHy4ADQzV+PV%LiCFx| zHO?~U)@m_sr(BM?J`)E}n*DzK`>?<tSg5W*m|Etw*723B6HQ`{Des_cYkHD3HcTbi zX*{R7S`^81x=GG;+5k|BVL7_mr<JH@ySJdm15dD0B;!Sa3Jju%*AXb+*XHM+!nrbE z<Fj8Q-9{^aoH_+X4}bC4LgL&bcB@{V?4U9+ZK1N9aqKvi3=#;Mh%rgKIjC5IzLfB- zjF=#P;C51%qYoC}Tzwp0H-mLJGMtJc28Z+=C{5T6ZOLreLELeQn-#MIKtZ)(J58D! zAtVGVy(>uSB%E~``w_Tt8E{nU6+FB#Y~6lSd7D`AA2pR@ls=0b_C?!^<EBz}uBBJL z4C5Ydcfn)-*wmc_)qzUo|77&L4hP4L17U6g9Y>l7qK?b;(oD>e%bh{_ZB62;L`z4? z;%0CfT%^pf<JO+*u#@RV$4652JVC%_O6f4`q)V!4B*#q<Yc21{lpZ2~t1_VGR_mO? zAY|u*U&67&R0h8JX*5=0s!dne%?yg+N;I?1=PUdjd=vXPy=|{RGB<xO-PI$X413O9 z?*M9dxqo8TIu8}y6ev9^qX(Iaqtb1yfrjhY>#QMMenWKwwI)Aij;_u$0BmYmW27WN z(_Te0j11}lxWFgmME{knHm>+nDWLxuTex!@J}W)s%xSQ3Ax5piz#4WqP&uZ;hOGhl zWCtY-gqGLugAtlSxlev5iAzjLgiEH4<-lWdpNe;J%AO`raZj|f`nX}i{65|ZhhG33 z_{PzlW5NPZBbi%bONKS^Dq_Mv`-vVO2!%y;ydPAmH#wDPapbIDBPk$X_Ij?oLe@%$ zWS>f5?<Ax~fn5%+yWMsh$eHN_@+EVR#QMT5ri8*Y5hKm762_iAn%AvB!bvj}p=Zyo zwC&WFf1;Yc6J(KxW3rquEK(!r_};84;*%~n8|Ww}wFz6N^V+FRRk<D0@n0SCKYFE= zp5n#->%Sz$HU4+$@y@b8tZq@>zl{DKgiJpC%OlT!OGp`nrk0(eUR;hbr1QE+=f%q5 z#rjvEsx^|K;m390BRw)wJ=1`&qvtwe^jYxn|7+tP^Ws6aqYaSqgLMJej%EX_hZWq1 z2kMjY0}4ZNl0>k7+Wf8zRx4RU?=gbg-}$1eZBxT)Uiy~}6O`+~ld>J;xILTtoe)#` zo!s@{>@Y&_Oh>cz1ZmKx9c=@^kwM|JAUFyLv!4szgQMr_N%$cwvV+u7f#-u`OR%ct zlL3URN0Yg{aF>7H8Xo)q|K00U6?6et+Nf;&^DlMzxxeB4H1gk2`j>+gc;OPv5!V=1 z#}*O!{n^Eww7R}~qq42hKl=*>A3F4Y_R4CI=<(NQDFO0>uV~|0NFg)+;V1%HbaT0) ziLAT{gIg8loFfVCpaGVD`8KFJ2haHjh*oqKWK&f3sU!X_<`=zxJ=4EaQi?fkq1~-| znRY4I{4v6p!;g-=_S=&;+@t>TQ`;N(`5P2^?^*qu-_zQS&#VS4<@fvY(S~n)=3?|O z$$;hV++$J%Px<MoRqH#{6z(2bY;?G;gPX(lLRxv0fttRPoAd8VDo2QL9GUe>-WHq? zC?8DLTX5L0;LpZ#A9d)O=MM$3-&(!_Hk(oT3{J|ZS#&8sws|=(e`MuIxYhbjGep&J z)`jTE>3_)Y5JHiPv)u?RRziB53;|v)WLeT(T)I7s4CdNH0qcVqasXg}BX!8_lMwSP zSr&xBi8jQi=VWgH>jRp`2I7*5bJBkQdTn%4Bd}tMH&X9)QgoP^;eXdfZs6aD{_7!1 zU1Y~4@dz<S^S)>Ey2kwbgB&Z}%0r$$>#c1Sc#Gp>RTzx?tisvZvBin?()rP-ob>cx zFYa+N(nkGbw*(^Mk9XFQuv~EHiUPJ6x#Ck$N@ahF{RJ3q;Xab3LIE;qeWK9dKTb=A z;ttmlFtPS9!igffQr7+~hM=kOhftf7nqzR>aYkm0Tz+D6Y>4+y{gDjcMc}fnj1NoK z&RSh<vo07ccie3aQSo#}mIUvh_}5(!eoeI=A$%DuLFbCe6+!mL@q}Cun2ZhC6dfm> z9;{;90%Mws#2FqcwDE08JtXJcI(*;S#9?1zt;GR94%+_eBp_~}$%_dl#=(jKD5Aoq zgB-qhL4n|-XFql*pqB!ZGS3xI#!3=e7!7mg&SydqqmUmT(6JVlKFW`-W*^DbhCNdG zuF28&bIW+|^ee+`^#Cv2n7`OjH1{A3PR0+hmlDCI4pYDuIJ-4+h`jAlWMmqE;t4hl z8xvcJ5+7A53XfDW_4aR8RT;Pr!m^uWlW>W!K?E0omf&dYA#W<-1&;UD3dpIXFy58U z`e|jdhQ&2X5yN9jF^03B9vtQAL&WwQ#DsT~nyl@?c7Kp<L|qSI3(FqSlR{pX7W5jE z-H93a9eNmlCv1U~ur0IawLlVV7pMURkIJNNJ(&18?8MQBK7oP`b&2a-!?NYqSEWz} zHiluNxzv8g=xq-!1WyJZWXl4toKwK!>r&A7iEygd2_*HRuip+6r#bF@XV*OHEs5*5 zfvV%*0qE)?qC)yl%vLk+Kbnbx95#IcJbdW!OS$o_u$<`8{ji?7oG#n--v!TLc3zPo zuT03>GwiujUSATrevXuHHm<m#ub1@JmpI-XDL&*ku?%h?THtCm)z+t!*{lnNz5Nb| zA$2>trt6bLGCk6y03-yMs+5f<AH|Fa;rY%X0~4b|vuMn>O2;F6*;^d>oWPjXEX$rC zr+I7J4HNvtp~v#XUFD1U44pMyN7s)A$iH`uuTWO*nitU2fxI0K9m&7|Uj`e&EGyk- zYM{-OXT}}(=lE`}=?wqgGn~NsWo2MUqi>!BE~bH%d<LfrTjX6WS<=9S_XM5ODzVf} z5C4xF9x)hymmm9@1tXoaP}dR9m2+ZDS9sFFzU{GeH6@@T)X0IOoG|}uA~yvroIAB8 zRMRk`$i-2M8q%O%zfx1Hs1V3R*qQE!VpoL3-y0Z>Fa%ZanBbHDx_imR5qp{eAya#) z+X3Y%$RtNiM@YOfTAN&M{m;I6;dlFcT-F=EYc5|*M2dCTeCBw`NWSSL=?Hf|^Nn&5 zEG_cYvw#pr@VOQK(vE<sTMPJO2!Ttg+z_4;d8%K!Z)ooi=ciAwqARNCZD>BJaJ1E` zzz^mix%QmevaugS_R=v!YCoiMwlI&uM{+UH*ENR$hXZy)<9_gf!9Gl5lnKvc?3x+U zD<x`Qu551-j(nW2LYFO^o`0aaj!I$igkX3KdvceL`ZR6H&(n*E*@u?B#Y5Zp_}1Ut zCcSK>C`5L{S*xLOocO82F0eTOld?l9_LnF)K9KKwnjP1NL5FIZg{P+P!2`HTBujP_ z4;_M))SwATh>wmal+6|x>3R`|FC63u8YRWU#>qK7D>aA871=d!O(2uUyg^dRIoG&> zR11uZ%`Ty77Lc+sA=wP>q0l^-V!&n53aHosTLJLu|IB;Q8Hk7%Rf$>7^$p!R6;5}O zCYQ{+0}(mPB_p|x&CiF;LzRvt^n-dzLm$bKUGV=|5^N>txO@r-7I(><hpVh9WxxRC zxRInV{oLX87S70#Xj~387g1&1Z`~}Y%&v5xw7g>6E|}*Zo#*c6yd}s?u2VDr^B|m` zpBlDu#=M2VH#Dj6hBOX)$nIEjV%zSh^oe2UL{hlAF=B6Kk_6n|F{@**l4;BFa-Yr( z$)WS!^h4eVXjB?EcEOB@LHID1U%kJlw!5!$8!QpflPV^tgfDF2w(kUtLHP&5<vTe+ zC+Lt?LtK|gf{1mtmj<u+vmS!KT(j8JPe-<8xK!9~U*pOdgC{sJDuFTF{pRXx6S_sp zx~f9t=^YzFw2ynJS(vfotw3vvEtxE$u}g}shvL{PyT{5JnGZ`ab;7G38I*nv00P2c z;;SYBat}tHzP5o4px4GiTco6}v$&;sTT;Y6W8Jn9cS3r`vOTjQ?f&-j>t_N+w=4*y z_`r%CX3ZjW-4MPb9$^I_sz8p4$0A5~#CRLctVe)cvsHP`I6ReH0Ykh3V}ZWCRS+I( zV7k?+jB9*8V{<gp3-A*11v>ogiJ;|8|E3Xr8?#;@yC$B!__)J+(OfrTXVyb8o)uS_ zJ0elzSS{~qYMrWC7p?-au%X0n)Hi4_!t!$EvP=ErS=b8hL~hQa4I4i<v|Ft5q1)lp zo%H_pU<1p`F4l5XQz;2WH2zA|JI`MQH&;~8(OFW*FJHcDfbuMeuQ>PWO1ryY_?7*z z(spL3$7XP<6z9R%7bZ8IRff%yRezJ-5wewai&L$BGt1(7qZzN-NsB-&HZXoCrDW?& z(uOl)!1wntiig3AA+AP&F24izNO_bg_~ukJ!V4#)ZhJ6kPF?q?XKeSo7o@g)An2(k zNi<K`kMRzRjwK7>b?K9di?<8r?^;jiRd-ldpehc$W|iG8DF=n>937te_mtQZKg?N@ zzIgY2%)U=umkZ@rj?X*@G23p$FG!3N2xqeul@}V;4+D8-ci21$iXN&e_{@~PFI%+6 zmVe?&!hGsg$+XIM(UAU<&@UaD``Ww)jp_sIG-g(~H1@!F39%Xoy6!8Byv?KB(W;*- zOl>4nk{6UreGDF074jdygDhJ8I*=3wLv>hauAe=?@dgxS<?cb7&+yJ+RzpNrqC7Bd zJo84pcJNf2!5s7mJZgY^D!KlLSJBD%R&Kyu#7F@CT>~Upf%Xq=b0HM!2rsKoHX<A3 zt<w1np%$GJ7PgzwH=oB@gxd^O*lkUfH+(;+7S7I^I>0my1z61hvj0`dr!8N1IIUpw zE_^e)k7NB3+lB25b*)M+p+~0Pps797tP_xxdy2}MPxER(SyWs8sEVp9Q;JI1E0~}+ z4c9!bBnay7NpK@;-zzI13ZCqluCi0-_~qs+)k3c+-6|n=Y)k2s1hJ|AY~&Q@z}-*F z=kbOLIVsnX?}~?x#9Jp?4H`D-k7i4F#cMX5k1GgJ>23;HPhDnE(kMPYI*J?lWlGNV zu9j?bpILPE0H))n3!$M^ZuK6S^=EFcc)dcE?S7m1G`Q!T{lXrM+O~J70@xEaWiH&K zD{>9~oa>{uXj9!<!dbb;G9D;fHHB)(zq@A=7PnXSwEX4~mvCEShk7|%DY0YD21(yA zn;ZVvl4N)S53h0o6KR8f!USv@0A~-n@P|Pr>nxq+*2Vao7t%m}j%RE$-TD=ROVi#v zk2;XTcb>_?a#FuKl)0{HFJPvh4qQ&m9o$g?P3ZW;))mz1$wy(26dL+QY)agDghR&2 zen7V}s^X|)d*1tNO(xcBIJteO#!5v67_=J;;}mW?CBoLPhU&IPAFnJO-#Y<XB#7j{ zUQzd=T}cfe?IRj6<+yl9h3Im4^FjT`?3@>7aIA>bpusArq%DcsD!u)jr99zD<SBeF zeAuEg-^BnpPcXwdp)_sT!+V8R&-4BkRmx!w_|YmxN|5pz3QJ{K%>m!`FZSCH5Hzj& zT<U%`dCY(L@J_XNb#oWcSS}rpmi*cF-bm4`@zVg{5^Dp~8H1%9mB~F2r(5`y{TjFV z2sZhZKmGP6`RxD@SVwU@P~k9;d%yXdQW`2$wVq|pw&pjit(^T`A<h)P6tvRIPS;{f z8N^iQ(&CNy0*2)t(D9@mdX;zY0ak>34&{U`Nji*c!h;EW8PhQP6KvD_oU)R`r=&X# z(_7tx%Zv1;WQ6^|$#Y|#yq&lA7YO|5mtebZW%iPEi=Rot?g!>4unq9(gX8q(gfqFu zUT@2dh+sHC(?VuOq--f=cB4<hWfr$!%0#dO5N{D017KN>u|Ac-dry!;T$-Efn=`+P z!$O|JqerAlY9Q{iJ<enfPlDM|$4G#~y6*|P@li(r42Q6Qw!synu+de(3s=xTM$Lab z<o>cJ_OZ(sL&jzZn519fY(VKrTMcv^;dJqZhwe$xTNOW#pWO&2ORo<ooukk&;5?dY zoP{8p({JSOCqJx--97k;s_3xoY8N<}*-~i`fjN8ZmmLO#98bpJ`B>jgaW7QA(<Pk6 zDVMmJZEhd-N&4A*KZz>^<fbdq*0*w<J#s)Tv)t7#;Kjj*_)`R;D(?jB)*3@11<?Ib z!E`gD1j@gL{hS-T0zYneq)>`7n9DOzR02u?pKM}Kdgfl<pRi2o+01sA4`Jc>*uARB z&^o=(G3eWJT<XRg<np{y58)yUvmE@Jp_ACQ(-;%T+D|mv5OPfNzI}pi+p|Q1%Wfk- z`(_!NH^KriABTd)9v&4a7tNc6PV|R+Dcj_=Qw0^b>$S`uAZKQ%hoRWCiZy703z^!t z5dF$XS#pCAS}<M(3#!$hwFxt**t3V@QZ|y><`PbpNc+CJOIb!Txn3{Sf!!fz9tTpb zRGPrx)_f(!2$+;$0Je6ub}PtM*o<W42hy?Sja{?Bp+&3pqtXE~(Lk|X^0sO_YE?Dd zSCe~$sL)(OEJlW`FZe|ckhf*2-6TG-Z$b>M5Kqjq`Aw1Bk_4mj`1N2bSV3^^xDS6e zDXD)BE;ZU?<&V6Qv{yX85Ew9?gIQ3RO;?!>`bequyaSf^g3jMSz9u+|yWzii&VNq) z>xS*$DgSae82sgKpj$FlejE_|DLCrFbHh8ob^>W!j#aJmcdmE||K<pcPOSH3J0FXP zO1L#)&Pe<Mf)p#1HV2cOyCivtGxwR!^=J52llzG9?D|inqv=)qeWJL)T*Lll_imXZ z#0J6VS#&*O^RL5m!F@y6_7F670}QElfE?Wt>GC7HSBKpKZqzxpVJ&yS-K_x|ErTak zr;Oq!5#M~_r@8lb*FnQ4?j2RoA<u0kBwBw62y!GhkeqSp>%YlhHojeoui^QB`5F|C zNQgxiOLK~^p@ZUU;BNvlzX0|MPj#@s-^Ko4hO!RmKJzJ_<`r)~qoTS{_qU&+BK&`u z)BhO#Km81Ia*P^A|BvYlE%(Gs$}9|nR=;@#?_8i%&gAyH@8>Ulqe{f%d^lrX{&Nd_ z+ztlFb7*J+Kfv2^+ax|DeR&4AzufK7@t4tFjGb+FB$>$<Gj<aqTVX3F`)TB+miqWf zkK5pKO*5ttm2l$p)TB0f4{!zJF<Wqi2cn%sJX{|H<G-D7)Kwe`-4!2M=R_vylPt?; zVO6spxMcrq3#aEclT|Na+9TOyaRnThOvJ%ujtv0OrWD3RdC6BGq%pbgG6YU`<-oX% z+yphS&7N83K0&S7NFJV6Y_7p1)*gWC7?XVJ*s<noQ0XO=c7+%fssUSN3DitKP)aty z1)v!>gVwCUC8F2hv-KjRp=bSwV5&_*YK~v`sE-~_0RGv;YDY!O2K%Km=+yi()W7-q z+=t`XbsM+ePK>})zZJ4iEx*<9vn)6MLK{bdkh%Gy5DVUI!wMcGl3rcvHhV2NMxuW^ z<G-*Be8dSwBx_c}3xOjKakTm20-n!u+of6NxIFOf;O4F~9c;r<D|<ifq`f5#dz4Lt zO&=tL#suYH{n~$vwWSh)81m5-OERYBC9L~LyxuKRz}8$h$C}HQKsGE9F9;g3!qMm< zJ-)|UCXo8tMdrkJ5wiv9hYkEIhI6U|h;SKxACOSkhY^vcYuv8wC}b9fVcPN8H35|W zIiw-7mL>Vbv4MA%5&Iwqa^-LjH3P98K=@&bRwK&+8o$?VOYLr;_^=SG*io_YzOYe$ z8!Vu$xD$x<7;@A;*}<4weO|2D0jt(;(TJf+gdocvUSRb!Vn;G4456Y5B|OXR96@|J zye&$kTASzx?zEXDfnX>2%<8JvPne!L4kUhYix%@?j=s64nbV)#o6-T>Su@BQfMA}I zv*5UHvOmf~2V|iZRsa$u1)S`z*ZpxDn@l2wDQWiEuIs!_?T`q2-&*Lmeh|2!8@%{~ zkI#hMeUI_4?TM`gDwC+B(&1>Sd=kNB+reKSc2J|&{)wTD9o$Xqc64-{*d{Jb(Qh(C z-y-KbF`^HwcaB_a96>{eUn?{~S@|_3*MQUoxc|M-(CPS5?rE?xv{0+#N$=jABhm-e zuqqCH%|D%V@R$keOPUYofQKX<BJu9lg<+BP=;s@!EX_d=b9T~?V5o*8>CN|B0P<Ns zxBxKo-^Uab8t`%p?cN|%+1?xB8T2<_N}ldvU<8oQ57D9FOHDR6#bM_}MlfJc%ZS1L zrl65Z${F#|{w+oEz!;9H<q@A_qRkd<gFFb}EqO9DUm?BFV!3P4wi*<=ICF-x8+rUY zPA>ZoY~eK5k!p?5F*s1A8?pxa4_xjsA~|iAT%_7NkufT@pI1-M<Z{o=_i~&DuU#$a zKRsg;l}&_loDwaK$g2#YO65YptI)`Vo<6d*?qIwYykds_#w=&r9$nkn3-(wfbr* z;-bGxS?P3}K=~2{40}T2o)Azgr6gqyr<>!hZ|ZW{FST>U*@A!FYH-#O&dgf(0N=1b z#4Cxd4&=PZ{IzX;M=E&e5O%WZcOm!J57#+inHD_4zjiNE2@(Tm?XGyo)b1i{1&F&& z*m7IEAQ{Y_;6~lU+TawawYMc`h9u1a#7=w_Z3g^zuy5kUMr(h>nxqgIq-f^W>wPSp zP2}}hvpwOj$t6DyMuG6{UlNiG_OQW$*w~P!Thq|%glPMwU@`JfVhbsoIKlC!=f+qC z#eM^0n3@(Oh?l31)_xsmI>Le75aICznugC{IG-yaK#7{99HzO@hMLvrElRY;3-KRk zN7kc)AM<*yX?CO%87fwFP*kN;StB9CAv665`#v-SAwx42oFpN+1)VFafO%CELY(~E z95~XGRXW5vCdmt7rRBprhgs#}IWJNFsIkfn3%}ZqOyPamQzL(`(rz?rW2)>VXe1hW zfwv8`_$CRQ5XM=bx1M$N84ek++f$!3>puiStXCp_?qeVB1Ca^1=X1&XqF&-@AVkf9 za>usP#lfNQ`q<2O0wl!DMj0@((V|j6F{9xE#LnIDBA*6VQhS$m7;bvd%lH2F{vmSu zey^<1ec0SWk!QEiV?%*j2&~G|DEb0kC^{|siFhYugu4n+k!du(TeyI4QLX5zTSpw{ z>a3yV`8W57Q(rs!8<W8*EDE{qzofR<kr!+%0Gqqu9XH=fTQ^j<y2_f@cfg2T8>gFm z$_hQNR1HF2QgZ*6FjnDy9q3X~#v&J#4qIiQU`5<2v;^Zr#BP%3|M|EISqdDCg;@50 z7e6i#wmo?Rk@cW^@K3EA0)TW5V(Bz^13H!fiL&jm`cYGz7szal-*$a>*!ne<WfXdc z4eo%e0u;jebAJp@%;Z~ByMA?I>2XI&UzM+@`N@%E28D$;SSntg1NoEP<I{IrPLQ8v z?1#Jy5M!i{Ba>G~;r_Tna=vvF)`ZbO*5J-osG=~=2)3n(A>I!KO*`!J*8-#1`nw>g zcYHe5EF2~Y^XSnhr_JOJP(}kIvOE9}w~K#Sg8YI!+?#qg-;Z#+to2Fe1m)KG46pze zw8_z=#PAUxvDHhnG(lNoK%!gJ{h4}$`CT-7=mS2W%#N6Ih&>fYp3cyHA^&<MO`hxT z=nEn*oT5$s+2#LhO#IK0@m{Og?<ZH%!&%PqlkZNANT_OBuH<&C&Fc*8FR~)Mb)ErV z>U<=@D^+(81&7Gyc<mij!<A;al=#@&Dl4C#sjj58GLIOR5)4UKU*#{&dST+T4+8=} zFrZ#xg_1jV_8M&lbV5@TlKe+Ft}V_>Amb<XT4h*W&fDkOi%LQ>(RgWGu6+6tFG$Ba z{!#Py@DK8buqs1zRk?XNT%$=YZ3ldjMIW>tuBf1_t(1<QLy+@CQNC0M&A&ef>8mYr zL$@4T$m-;Hddp>kK56CIfX;ThkI?NcYaPJRGJFLo8I~!t8}_HBqhT2>)WkRMZe`Fy z@LuG#<{rY<IKK;zxzVr}!tc4!w1ShA4~URS;h7X4730Yb7WLm%APAG7K>ks+UdW<Z zIv**4pl#k%@f=$=uwD1<#m$CTrrq)HuJQ@dt(TCgyE*j`p2-TBfC0=TSa|c72>?>u zBeCIp;*s-q8R2~X2TS@5neQHEBW3T3nIlWMh5Z#Kg6tJBr*eZ~Kf<?wh0y4RYT@pr z#b|x9JUD-8p))Ks<UwzafG=&u))#o-UgGLxnNPyA{tlOlSff&Y)7?y>_$0E$Pg~hz zn^BY0v9I)LvPJhckY9bITY9L#vi8ubT4vt4)FB&k=&1W;=WKAcc!ltEn?*=G1i{<v zy}zK2(JMEHd;JJs-n3}p2}ub0)S6#@I2?49-u7Hyuv$mqBBlkCw5T|-7l3|SQWXJ} zPcLN)?)M2c>qsGJm1iBHj!fUZ43q+>zP`a<D}(2EQLG66zh7W0|8G$br>fk#{+hJ( zNqg}|w^RH6pBL)S74AT82z=#KH~spOLYG&(omL%TPv5?hyocI&j9vhzdyhaH`~ofr zP4)bA9)aFN1z8h{+t)Vz^oMbY+k1(4KQok(52RV8x9%><AagT_#NOQDH(guuCGzKv zZRn>zp~zxP`v>#s6Z6WVERtE3F27s3j9V7YMSsUd9vJMSM0*w5qH?s#{2psFq$=Bb zPMeH=I-zgHzuF9(G`CXE!D^ZG6o)#MC-K1A;_3+a;U40~(L0ZZO+aAd8o7zax>L!m zqNXq6CFs*4%>LgYHv&W|&vE8cMU6Dd)Fidt-!)J-{y*9T|I34a*>QRlJC2if>F0sq z!j|YZ)7{sP^3Em{n2N*wKKTm&7T>2=C(fPk!k8-wN<khiWdo9o>X1zxA@yhJ2kS=x zvr;A1;Uh#@lZ6lMqorcs!p=7=-#|$MR%z%i+f7WQgO%e3zxC~P;Tc)CBzceSyIJc# zna2z`S*Q6O<#kKoN?LN3cuhFJbyr*XXi9KA=q*kV5i|wgB@=RSieY<4SVSyfFHMH} zw-Gb%TLG}{xMSdTDGEq1O-B-PM}SpQ=TDW<Qhd0_Q4a~Bd!lK(OXmMy!tl@N5jL$f zZ(U7n?F{4hDR_(ijd$PhKO_Ac0Sewz78DBd<#U}Y89`0b!i}}g7O`IuZy(0kJ?J(| zp73@*pL<)Hq#XT<dFOV)@7(9mtQwDI`RMBdfMEL(OW2U3DjAt5wrlKz{t=9=2;$vo zxV~{b7Geh_>L6L<k1X~`mk)zB`35__$^|E&AmA;6<k4i!J(V>1d+i8KbP}%{9voZ8 zG6XKH>hGY;UB0}VEe`mcW&=L_Ux0susW%;XM$5lt%#JPg7ZufAj=zEXLjjWN-^lns z(WU?wCfta+Gj;M=OXSjr-#3!91g~&W_5w-I1TS%Yh@*TDI!*)vHY8;2<>YMP{s4d8 zKlj;EF$sawSBjxq#EdtPVKO;Xvo%Sgy>N{e@AA9Pcv|(GbD=^+hj$;n;$4coz)D?z zfqOJZ@K?Y>@=Vp+UkAgXKEwlc531D61vTMGFRA)=R|EFTOM%&{%XhZ!?Z0fQ5C&oC zFMXXi7Wr-yM^hmi+2~`LJ+}z^V*S8XLWrn-@hEkig+=&}%iNtkjUfFSa>r?QPt=EO z<gfINs~FJUyX9JPzcJyln=pBA$2~D%Z%&gV!MmsOG!C*vtz=jn<wegjc9~wdBE33V zD>;l2pI83NKCgin?3K_|9v=S2LP#uM+BWKgjK~zev8VIb8#m@0-m`uNUr*6R@}8Eb z6C@>ZZWeJ+E3u(b|F^=WoMgSO%yXVX_3YQ!Pkv{K@=WqcdUoDsdFQ9&_2Nu>?XXS5 z((Fbj|D<>$gdjt_&#M$p70pn~Co5~T%^e9{)?b)>U<hBH+CADSEK2dyTf&AU#1o|Z zZi+qlq2K?Jfzw5Slinp$zq8dXQhu6+h&*$*&@a-YCseX1X6B~i82VylW(jYjmB#W* z_-7#)L-Er`H?_=c@98<x^s2O+3W@tVy-s%cay&^t*7z(&Wnh4(=+fY$!JflaA@;OC zN-QE<GABOwdzL%FQ_`8iORx4p-@j?|?=PKLaw~Be@aWw%5V#||CbOhactx2$yLg*4 z@rlk{Eg#zzrNvZVaz0V_tB*|P2#sFUv+X|I1KVfWx1e9N+t_^1+P8=eoLnLn!RV#L zIGye9q`*Lblt9^{5?g|v*#^|gR3vcV<*S!s8Gu<5J-?Nbwr^KngQ;U?#*5I$B1&tG zsbNbRN6d!KR-+y_EuOp_BT>JXA#pytWZp5Xw9HWqVl6WFcuf_dk;6f}CnLKYS;jA; zt#Od9X|W%DF2JAisUTU92+x{oK>UR`T6euA=#K?9x1n<bE-Iko&3@fkXEaL<yK=+= z%k0g7sORsUf;Ef-X(L%NZv`(#R=7Mlk;{D4kmz=JO7E;@06F*r$1g^d<nXA3lRw9- z&o52KBsJ4+J&?!Ot<c9XOnpBiXHr(8!^5oJ?O*HsYKKLaVRId+-g*Wd5ma$5j{(US zr}*8C!<pfU*q?LP(oa{>4_yw}yS4+!c_zT4uC53v%zV+Wl%&+pa)CQ0ozdC@#3r9h z3Hg^k<XFC~InTV=pBpc%NE=3X)~Ae9gLReH@D88O<FY;Mk7o;+Z+nX_G)XWF;>p4~ z3HYK-yJxZdR*Krc^W)LB=idhkW*0sjgEuU)u;zSYd-lQ!&UXz}v@^!4>N=D_@OH0s z6O1hCwT8=&yhR5;(1hiDHB@Hrb$4K0b9wu4`=r!f@q$tj>GaCW38IQf-O9I|Oy^#- z%e#9IaxFaX9Ips=@KQCugMLk#I~npM-Dh+k<QnvPk@BoJ8Ap%zht-{Ia?Xea9&5SB z65>3(bG6$eVA7=rzm@>4B_6+@9}c#6-lZonI4l)jVcdnoU!piuV?J0s=ipLMQG)8J zYUj%zogtkmT@jq{vSO#sqY6{jioU|=a(0v~)jPo1yjp?Vs&4k}Fichkzo8bPm+ghp z)*)I*sBNSV({Gi;)o)U#_2|WU8H*odj;TfIj8AprrsIl>a2Lx!91V9E<8B2kh{>u8 zgg*#5|Hi6f;sSgn-Q<tinQBH^$hZX9*(LmqeTuDSONaNBK`4%YboJr1822S*%%D!~ z{NB#_9@Pc21!$GtB^tuL^@v28Rl@G(TI;<LOWN7PKyczwxj)Pcq5u3FgNne}UZ$wG zu}cpgrPD(Sgi_x$-wK*m3-etEJs@l|n4{e8beTQ&T#oFoI*d4AXbf$WOc&lHEm=x7 zoLt*o6iRfRmur~vb>%$A^Go%)*n_r+d^G3TRQrSIPjOLCjS!f~-Y7Q}yDyI;x5%z! z%;9Z)rk62xzrSfpHQkJhX%#3D0&TX!1kX|X@be((X>6pG*{XNVd7uxT3W&Pg@X~xD zI%<E3d;{rF_UnAt^3AEAqOfEsKH2TjwV^(_KYH>Iu1MHNu8$(zrJHLucik1W-u%M% zKDzRtw<?Br%GR|b{B&fm3duB>Z4nhO?(;I&vGFlG$D{L->mtE4;}WwRzLDGtpIvl& zCy*n*X!C}5dHNvdS=RGEX$o!d{0X@vJK(WD*yC<jboza>VShO_MAiHF$rlyYUYD+b zSQmI(dme*8Ba6#34u_zmOH+@a*o;24pTiHj<h%UzSS#li?>|v)vN=29`Z=-J(JY~S z`rU$l>g7p+G#huwJ5BU=Pa01Kk>}BTmjDyLOqsr9Y`5u;%!$gz^?Q$Wl4S3OHjp^2 zDnhb}veFusTYu_X@WF=D>|cYgFTa7((fhG$MX2lnM?d^LGpc7#j*VyXTRfzm2)#e8 zwOF#Alv$mcJz9NnO*F&q)}`gU%JnyYcMdq1e^%<S{v0*k@WMtWy9m)2`kJ?KXy=^N zbe>AYTghu&PnucrUI1K{jvW?X!$6v3CW`3$v^%$GK$IWUeI&kMDB6vzNmVaAJUQzW zZ}M4)`sr3;f~sy0f_A+8?I+*^@0kW@q1!7ZNj43w<fmSh)jZuz8f|>*tEbp!Jk3sV zYw^{`25zOAYNQ3$2F!SvLjB#V?SpK7jK3YuO)K!K4wO9Af{4)^&Y(Y5%5)vHR&~q7 zJ14GF7us%U8h9FrGO^;zDALg!<0Sn209YrxUwdQDq;mvyMWI<68r7ctk<{<6<QN>k z8oPP+;MxIjUP9xpmm5S>F`4P{VccaZStbz8BHxMu>W;ZL(~O-x^a8A3gLZ&}X&pj8 zjvp%k(!6`7wbEGm2Y<apL7{Vbn*}PIy{uFsd8v&RQotwfhp6Z0KQ%o%80amh9{2Lv zM@`Fmaz}z1qxxbObxLUyu{}4L`w9gk6<JnVL3|{`Qg6;UnHtY0G_o&RUqWIUx2%=l z(!C}1KSkEtaKs!#YJ}YK-$GS7A4&=Eb>%a*+T3PBJ|=hZ_Lupw41ZGpH6Z#l&YjhM zwc>3}HSCDr$0xOOPZu_%)K@0XR=33cR47!}*M{<$?ZaP6e#c>tE<EfDcI`S4ysR~G zky#k6f1cNdT@uydLuX4pS0Q@nt(9ad_LZxq;63IlF!E<A;dVq4Iu;UrCyZgqgT8uK z!D_R#a89OB<F#u*RZOdD?09f*h)nYn8wiMzx}NFL4)^#1=jiL2ZzqVR{HSjKZyP!# zjN*g`TQ~H^$<?nFJK+Zhcn;**(W*R;jvXP#r)S)*bqkhCcZgg|c@z~$yaOs$V5@iR zG})<(=Fn)pp99(Myhgvdbmja}9iplG5k+!`_Ig^47l_q$?F(Jvv0C{t^ZVQ@<`k!) zkAmA%zT!KYbU@{EM9{3J*IVI$dl!ZDg9#_dWxx047}1_vsf7ufoj1Ojv(hWyejGy@ z;f<2pZ`kAvX@R)C=hhVuf7_J671ec}oB$;NVyh3(<xA6JLu$%JIj6|hDs#vnV`%VM z%)Wxd2X29`Qn1JCCdp^ck*Cns$DtBa(@s)sYIj0$h5oD#5<N6*1yfA=IuY+PbUTMj zuFi_(?o8}}#=U2(y1gD4eYF<wxN=AqbB(xpHu%iSO5`V|ir-lC@zrpr_iHIpPs*v@ zd$IEE_}!Ad^Y$DM&P4ISnY_=g*Mc>60^#wrHId&w>1ARE4;e&4pExj@9#4Heae0$; zJ5#?I^J*wXJWueEeri+k1uYsixYHuRkU{y4pD4e$@rI$=L;2+VqH)Jbl-ch7(oOT{ z=yJ=5+}W3Z3cjyOCmNJFdl#_`jvf3w^}8XzI`v>W*fVOVbjshgpv+a7A&NDDkG;Rq z9JL7z%4MH#m-eM0MgJJT$N+bH6crhqBTOvjMeA`_wSQ76((Q18Du43!X1pIqgF|f> z5-*E8l2|exb$VYScZNTS;r!wL0Aca9+|tp4JtVK>-Dk(E`K#u0H2zO>&2DqYyt@#h zVPEMcfnKDJ4PiL*f7(0Cpg6jAU1I@)1qqVikl^m_K|-*B1b26526qeY!5xx7kl?Pt zVekp=7F-9P!~4CT?6ZIDQ~cOf=Lb_=U2A&o^{if3-!t7^J<nPTz*ZE*53ni0SW@1v zG;iXz?m^eavzJ|?Y}x4k(OGs27vZP-G&t9@uD`^%oh7$lN={YUW*n3A$r1%VjI?xo z*wEvG5kDfN{9X%o7F{707;_kV)i)2@Ce3Xk;L4QuDvO~uz#{Y}G|aZf0VuA*a%fY0 z<UUe%TA!%H`}u!}OxJ>(OMO97luzm?d<GrL{kVpVk)HwXhTbg*R;QT{;U0eQF{IPo zC|{(MuyWg`8#6oUJtxm^YdF)XJC)dY<{dBYDhmbV7UbX{k08KJneRfs9K2Q_KS2K~ z#2bpC6j3M8w?Ci_wdHZ$ce{vQ=oRFQ-mDSsyFCDs?i2$f?Z~!o%3+t+F)2s|1)L7@ z_ah2<1+|5NUrRhsS>RmI%cyb@PwiaNUW?)_??#ze9#<F*N%B;k3ReugdtUV_hwKO0 z6jm^kUm@{WnNlCx&x~`n28(;Q(7}g0jCesZ;l{&rg->q_@h+h01K-1(Zj0gC*E_i~ zWr;9J`JC2gCXwa$qWt<njr-yxX95Epn6o&h?JVC);UNpzY>GnWnY-(Om#MU2MFR)J zJo!7JZ#%kVhS;a4>ukLba`mjr?Dof7CRFd(FeE+TBYO8gXoPUyW%PXvya-Yd)O)si zuZQoWVO-G??FVlN|9aaEQAYNeE7i&tCi~}8Yek6somzk>Q`pRwQ=ss{d~}G0H;<$Q zwmQ#T6I`tH65&^!1I}byPcBMbe%MOW56Jv`F1wwVzwx-=PdEnw1LpNGzDs38Exx`8 zh&qe(xCm&f&0o6XgC#AKDDNifrg&r$9-TI_*AjyYSA7WKZfoB2Q5(0u^#`}&mDL$b zdzzf45HBntk~X&3lS0G9fWO$nRh*T}*BWrs^zn!MM<_&5Io%~Vx??@PT4B$)tBUJG zy$3}=o{n^eZ9nJ60t|CSpZP_P-m4_MJt-ct=_tM6ItwUx7+KX;T@DiBC$nE(B)R>1 z{A`aM_YZD7>Kv{$L}mIelGF0N1@SynFU;?H?K=Fmd}A6Q4En44C=b88v+tr$3Etqk zZ!37<XH!Uw5anr<Hg;CMB5>xc*06j2vNli4FS;ERt^;s!OM@TR(|W(ZV5ma}KS0)} zm8$$MIc67jK*9bwZ885@u0`}RG;_}#nGLE67yE&-&mC)61yT9MP!{$+H9%~ll7_3? zFq<D6ftI5mKC3%oxmFIp^j$BXM*pRp(^NMa*H^q`2KTHxBXY2B#9;HpYgX!TOi;zb z*t}p52jGF{_Xzm&)mPIiO1$9xJd4AGsV^U+PxVlXt&z?!o6-s&W++>4&0#7G%jO^o zy@k+&B~hRPbThGnDI_YKA}#k^EA-cI!>%Tccn%09_~7q!a$b^G!8z2Nr}giZm<s)A z+*jRcz>W?0y*JA^VdZ?(?GPDMkGk|$h~|}xC#Ps+K5D6#A~L-LFOE^_B!ch3+K%X? zVS(kk6kd(G4XSTE0eo)DQJ6+bHbT4BtcalNWhQ-rwLKy|wfaimuxgrJnK7URbe8C; z-R`X6#$Hg$&mE4VU;4U~O@4>yyo2a7PVH1G@2p4`oSH)}cW6ZYOm%_HYtBN|TdLog ze?A<vglWY73Es*q(O%)Uy~w@9!f0$$ffJ^3^}dMfaR7f|07V&HOocZdtfj0`TPiSC zU5PbmQN}*MuLGC)SS^ohCN7lX6UF6LkG~-k<^G(MV~gza$2ClsBJ^#vSTuAYSOAO5 zf^ROc{!4C?i|ZaCXS?7v+DM#I0lPS>Q$!n5Yw9yJ;vO6@fPuUH;gmMGXE{$}MUA9M z#v#!7MhlhB@Q2B!*pdjX2U^xk<RHig?9%e8(m4de-O$=^Ej(JWW9@ui2E;u)3seXj zks9#qOZt8<Jf6{FV;)E|e}guS#oUNiTx;kdoS=&fh_a*Rp$PsSvS5`b%K9Whdyax} z>!xIfOa2OsB&~W9(A<x4j@(o5r{ZvEQN>f(+JZN=ols$;yd9{aa^-NV<90ZlFrvf? zt7Z9hF?-yAb{3_`SvM>z4>;<#`7EDImF`IT;v|tQTu*%-smj8?nH}hIMYfiMZXt$( zP+U63d1Q)9&U3Hml^jo4+wm<zPSE`z=2Vm%k<UdNIZ%6tG7kN^u;vXD`AFG^A9be5 zR58yyiZ<TLEry8yv7R3y!~v|^P;$Cn^DWQ%yW=hGisI>KssGw(p$`-{k{mzZIaj)( zbn<8mGR!OBR;?Vin@-8E3d5o9d?|Ft#pxb1&qMVcKW7|p_h;;EDNxcsKm}=|jYgzi zJEoZ$O#)7KxVL4=(=FF@`5DAosSBdkZ{tW8^HCP@Xt>5A<^@L6LLwh_Ba@g*Ma@ND z*HplVIZp@F>Q_m(<l(Hp83sR4MZGl9cgG+<^v$+r;yOT=8A`qzGm;Wv>HxFYTjNsQ zNePB{@g{4t;FHuyO-t?*if3fwtW$?u_HORjz;4UK!P&WT)1{*XC#b8Zi{w&mjxD;3 zi$tdHo+q6o>z6Py=cEP}q0d$re<Mk++TQZhyKF1`aEANEv69^fXBS&Cc1bb;mUx*Z znZTbLjcTqKg|mKo2fKNla4y@2#3w;uZSiNT<b6jpwN?SM!SyG9`{GoEK|>0DCn6le zH*k0dQ;jbXwV0bNPOU9Y$kE6}B@^D%J-^XQK6dGjfwu9R(8ci)C@%!-&eo>oLx9@2 zdGJ6Rq8+ecO{7WEq+JRm<jj6VzGOSf<O)Ofb<tuFoz!)CaQQ=@>~7_TC=?FYZuRNl zuKb&^ULC#8h$lKY;-=@pm1Vs+AJQCV53Q%DQ~_*8T9Y%`4Nl)^$hQ1I9tc0eiVGYV z6n!ZIBT6$dOF)9(qT#9Xy}fPGd*_S)KG`+`_vQB;m&HEMLdlex^p+vXQUqgzmV+6# zfnYZ>Zqlw!kkESIsSdv;Lfrz)c;yB%y6(+B%f>?msivHcInCbX|6^h!K%0zl!!AqJ zAtb9<i$J4`-pviZh~cT_@1-P=+h-S~itQ)6JkSJ*gCX+FDemXKwq6##<Y^ctB$#<r zx<_CLY;Ly!^<x8zp>>J5kr9xCt2C<U?n_|16>|fH3fA|bPB<l#Waeq4=?($K&o7^w z$P}jx7Anl#7anh1LUZMwf4Y<ru2R4BrG$6l*+~bE$#R}n5;YOrj5|;rlS1Yq2r=Lr zas%?I&3PC=h5Y14WkHA5p0crJLh7+!FHraAB?wfOqLjAUUMPG*!nq3el(#s~))N|% z_QelZ$0QY6uldj((t9TWeB)JNuj!Y;tfDJ~H&8M>OSwY1k=1Z>Bn>8W6vOuBG|L5C zz9nt?5@nCy{SYiVe-zoNT<ZMf`2GdsprY5F=CI~%YBbNC6>*9aBKsISzBSk7wI!`a z|EpWGKpla3)3U{8D8;-_gED{G#yI=_QdCS8+68$C4R17`O0J=U>3Q$*VaWDH7&isK zy>pSmtb5Ayb9p4@u{qbz1+E1AoAW3VCLmtf&`+tY)4yqo^j~}}&!m(*$+v+gGXH=@ z0b}C|uk@{RSA`-JdVAeF&OD^7jUMg6&s+}~l{pK*n>Et1j@|~eW09^kSBX*H>%MIW zocExH2zS3PaPBqWOz~BxF!d0MQkIiBc_En)P<F%iRcxDUzxSpM9dT-r?1sA@f!n+$ z2?R5a-dAgrIh()v`09+h956{NDcK|HVgl+VISaY`U=Z2k&sTiDyJKSRthOrpLV?Gd z2?IetGcAFFJXt5edZrX<@iNQCWhBU^+&L#gz?O;wvc_F!1aGRNi>h;iF_=ET?g=tn z`e5G>p)%oXqYRYijoRCJ2y{>w4yR|xG)1m|Z(~F^+0Gs+dfc`fh`fJ_1?Eg34O)oQ z<IS795IDjP9$XCU>e6d;buI;`IZ8C}F?2+2TlmR<BFQT>?;m<+%Z(7I;Ir?kN^aiH zZ?_!>&`2hg^wz#Ai6G3jKv5cTkxWlvr&j0OMqx<15fE&l(I*O(c{w*1P)(B|>lMB* zy4<nN9q=J8945roA9#48WAv=(=7CfQPKuPMu9<@8Cmx0X)peoJ^qD!+)F?Kl9Lkd4 znBvugzgwHPE`rx{FCyjZQL}9eGHf$DdX}QPoFXz?9#UN;6Mht=-8OTCqoI;ReWzEb z1G^k(-&9M-4z`I=j(f6Y5q=87DbiH`_Pf*G^as<o&$QnoWN91Qpaxq`ckCmpv)lNA z)M>*H{sgEdzh1z`(`<}c@{QM$ARV>n_DTl*tdl(z!{nLM^srPXw+RBO;B{c&kgRwI zxI4ZebYA|kS4C-1Qbq3LPMycBM6`fD75Dw3E>|v3BMBO7J3WZ=(zp2@<@oE6JNVdt z>^$4+@RotiUM$a_Sa&WVT#wE``325^<9<nJpj+(^Q?okw9kAO0ZJLs}u!P?YS!Ccs zfW!KsWWsxDwC1na7}Hr<F~u;)q)qNhOu$&z0b!%xu0QY-&3-UF#^kra89Olt`@^WM zpSlY}o}8s_wF2nZSVX<oH6e>#nsM91W(<bvhvWL8G_+{%t=a4f!}H3e>OtEvH@@hJ zI;^q@^F#eo7%Q%bBaSb$l67VyWf(V-YBbP&_p}PtL_BD5c&}7K{T*@AgBqe+8~P*n z5vb)?0W2r1k_k;HpQh){dsQHPrC&F89){}CL0`q*GpMf<HJP6yWOuJh+;CNx<LRm4 z)6&r8>$=o)2>uRK*(G?_x`j!DdKek{gPp+42@jBl*dcFubG$YB23w|pU<7aCXmTMV zGiI(Ael&@QEVBH_f|J(2y{z*xu`U6*_aQa)C46NX8JVEqw2ySoh5P|0@2GX!%j6+f zAykKp8k2$OjqNZ-$*;bz(h5*hF`@t~FXEsI9t}M)TW!3=^mcILeyHCzkuD}FY~CSa z$&eDe58Jea3g8aK!Q`SA_v7u!D<$@X#C4)0({y-ZOpdniq>Gjv$(O;o{lO~X+N(9} zLe^go78JWg7GWu>Z@qQ{Mn;nko#EA7du&WQ&f|^J#J$DqcQ^M5vWBbg+1Kuf+1kZD z$@}H65(d5yzno}ncCi{mIq4lWA^0FC?3DE!=S7|}!2I;4_f-F3>SI7v{to7^tX*sy z(UR5J#4LKsifQeVaOuuXRQu^Ibf6^-g0)_v<R>~8F^5}qjtS^btW!^mage`kiVVQ+ zC(>|uq$v)Pq|r6#*<^Ty|MwjpnU1P&P|~>4D3#!86AoUTq2DDY8LDx_{lYp;(g?+7 z49#piaioZI`Ec`CO3H|_*S*|yPC;5rsdyljIBYEf5!6B-nH+IbGDYU|wJVsF=Gi=N z%6O}t;I*CTL<5y_T{&pnn;^6<=`{g1DeJQ0`UMf(qPoDsXPW91NNdQ90Ei0X&yT{f zKy1N~Zot;d{piF7LJa>h<Ms65vDEX*<9YnM+dIN{HnuXI#fHK$=!6!iCj^~eC1mtB zU4yG2ns!=yB|oG!ohi;f?$l7>dngdo3<?Y`$k^4xgI)I@re4<we;wG*tzq|)B&{R& z0wG;+(YtoC<gJF1Xp0XA&DFwhl7o5_X(ubIJRG7t(qO)@baZ#|fu40jhDvqp=Qz1l zc;SBE#<AsM$8o+ukrMb>8;V^6jOfq(wW@501a>i;SDLXJDENM&a<{j?KTi|!fmv4j zXZXjCo_>)NinY$%$Lg%b44Wxf)5}wZfYP)hwo!ggJ7f9%kdY#+Um<8;qYHs!3{RnY zm)}q&Yd0MtuAjc5BVB>6b=5NS>h1UtaYTIgxacB`%b*6Sv=o>LA=CGq;msu>!EL~% zI$K~X(cDKqE)z>I^Zrs;+Yj6NrTosS+_rDlP2f<akBl^|4e4-v(MhqjTpKuamg%v~ za8dc0n*=q&STxUyJR7z_lvtW*mdRUFlOigwKlWNVbBvaW!dZ*XUJcVL?oU^O4)fbT z+llcv7D4fQ?tvYbzfK2qo*T=v5<VX+)|8oSnthnvFba3fgT|N&gQ1s>X=%)N9#-eR z|1R5+F3la~i}rc*PZCFi4Z|E>jqc`!Wgl!<$9+L7psa9|b+g~oBHkkSc!;XV{Icsc zjxZ4Q%flT_&dpRx*ykY8>xmuMP;Hzmt|F<0=e#-Li_>dS7su~eVYd5B8+opI+EC5T z(^-2L7;-M-ncqvw5(~50Efx;ly@dwRP@1F+p!f<Pth!aYtGji#wiV~2>5qUCl(%=8 zCg4FE1mY^oOaF-3d&m0}1!tNqo>Yx=AOSPY2pNIqerqr%UEz;Z8UDCZPh*Jx&~$0< z!}(xyK`=k>#}0|x;?cFAoj+B|2rB%(Q4MJWJyMHMAf$D8{y5ZB|A@U7pY%4vVS5|8 z<qa)iXFpqzrjA?E)Clx<z%Ouo`C2z+-Z}c=`i@Dv^DP4nNiK4wSRkoXv)O6ac!PN8 zOsbi4B1X#~)7QX7k+yqIO)$x15+SPKmH@TIyAP$1Ol^38l1an>j-Jd;nt0UUH?t)l zP0G8$(e-y5e~6Az?Fj3z&TiSteSR&omWX35ocN<9%Wv311K=yMMf6|`>Y90uAyhT+ zxOj!DLPV%zA=00Jj_fiRqcpS#yavqygS-lcvw%NR-rkv70L&{keqY0H&TpEu@o!b% z4kdjb>~hQEY<I(yGEa@N*b)&Dg`IHjgj-~5N?FI6ORmu&4m4nQ27aGRiaLX+_QThO zlul-NZDZnasC3-&bA6*bZV^?Id6}fb$rX%gwrgx$RjX|8fT-rDX&9KSPM0r2-U}1^ z;j*T|6=rbsL8fRX%OMFhqCaTO@Ng~dSA`9kPJuRmfbk6n&*|z%EME)-9y6xK&nL}; zaJ1=!1vtUTS(2mE$6S||LQ+sWq@Rbm)R&;!l+h|oSr6{5))(5}(SGWG19#MI6IZLa zWOUeuyD1Jz>JJ?o<b;B@$8J}BFcpkYF`eNEATO2Qfto^ke}@XLwnL58I|w5g>~s*m zOpB(%Vjyj9fdWdX=armdX07Cbo#Oy7O^@l^$@wWM{$a1}vt(`CnG8vkpwK_uW`uON z7z)$t(=&>eh;7lD8l#}muXu%<Q^LhuXztyzL`rc&>sf4GX)#;ABzT->g+th=L)x$l ziRS{oChT!kS~E&-80A4w%b|GTL+39W@9XdVCe4e&`Y@jPELmy;JZM9Rn$u8vWbm`7 z%iZEqyk|uUMb&*A$jhC<IiguG>#9X@C`7)?=~qqnuMumpWVs_R5k1h6bG_)D&eV|s zlN9mx`uR{i{I|%8hv)X?C_9<zh=eh7xBYtgc-xm-Ky*K;iB~lWC}ArEml|gJd_r%% z$l&n!^!HN39dMOT*+YWY4uaJ0+ih%@0>31DHWTH_x@&F{XgL}3f03Y{Kbh!8aT7y& zqp&P!oh9HfJnj3F9BY*%N`Lxl#o6k2v?EaWjdW<fHwi2czsbD>69TzmG9sd#+OALx z9k~~tv~ReWKAU7?LOcK33u|mz^-1ngh#(8>zCqJW0#t_=a;@?(QpO~Di}|>QT2&ak zWJ*q6FP|&3{L-Ym1HmBCF*z*|j~Y>4T(%x{4e9y(R(oQ^NaB{d@(4~3tO)<ler%|| z6$EA29mafL0r`JqD)Y?A)7h3U@GuaH)KWg~zP>yOYH31>$OQhNV&$q@oQ`?8Rc$?x zY*jJPe&(rEm4MV}+-Fy=n}k@)nB+O<`D3ejacTrz5r@*BGs$15Y_a##e!!kPXorbX z5^Xcp=qF3gA5<H&X~;&$B`sFac!v%JBzpwBzqV`c%7i`ATvwk4WM(BeTjHE6ylOn& zSFG4y)u2l^#te*}ShYV_z>zwNa~^n=XIMvlOU>qKjM>rGe)P7+RZ3k_0v@kW%TIh~ zSc|8L>37W54d@P?PU~%GWzFv`px;>g%4b<4WD7MTj;nj2H_#pi<M!rFR6A>ERiZu= z5}R~XG74>@_LO3jz!plST<yJ8Wo<TxA$G+WT=FOWV9`U-&5r5HPVJH0A7T_q-QzqA zWK4Q?$KA85TY&7C85-2>P-I1m=2XsK(=093S4!_AfU&lX*O;BcFJn8umjL33FT7$F zbw*BhGL)fmcl%i7?_ekhc<}<EWb5I%Uw2>zA;pk*whj&9bwdIgOf-tR8)eV#`P@F+ ztf^^KOLc;YkA1x3M(vMsN;t~ipUQf&^dhbHHM@OrEM?uzsBx3E!m{p7uXw9ftC<xL zTF_P=PMK$X?)k>GBRHu`#g2GEUh~wbi`-OK9HVjQp*A(P)G2o#!^Z}&n)dEYZ$}D7 zK81|*84)VPz6>lF{_+fJB|c=#i`=S3j<&8Vg3i@qZghdxjemE1?);oX9pH>FZ;rUn zvxvI6g-Pqo=SWWMajd4Mod`(R26n>@)5}Gq@LzI+3Zv)Mt?p(qsS_#f6d65~<GW`Q z@m8OA$YYzY{_I#(dl$)s(h1*j)w?TNRp_~+2k`wWwNNNrjRYuk)$`~oGcJ!Wt{Orq zq>;jEMhd63<mI|l#UFg%Lb8+?vri*ixcTuLvCMK4i8jtnz>2XGYS(a)|7W4=_=sFG zNShDYeK?o*Y%o#QzC~Weh+z5ciH(D})=~A_c#TOd0zsED711EPN+^^RE9=xf_0XD~ zv8T$Fr;}8><lE5nb_m9b)Oo5gS6ffU?CIzNgGo@51U04iBFt2z*V)k4BDVqdM~2f_ zZ;Na*h0m4$w7DjUc(p!kDFFO&$2~MuLeLDIN;B3{cv`9$U3g%XB%p&UZvQh)Zgl)2 z#H&^EE@7OrsT-PRuKU~P_C8(R+zQ!3RZin0Rze&VyEwNrnXeNUG6dK2c4dB7d_85y z#wr_FuXZ%DlDy!;BSd=0s@Rc35v6leaDG|>D0Jz)!TMt8h0$aAb!b>5T#Y47-TonU z6%?5SE^pRs-t6<-s;h&uWkPxX)6?ACyWh=+{*Uep!m&+fN>SkDHdG@$+<$ZX3z<xc zbVZ>JC2w@d$Bbz&NxKySv%{)j0TwY^$G2r2+o6e-4_7x60AxZ}Q52Ts7=iL_Ly6ty z>Bga<7w@QLNCM4i-8D+2Hejxys_KpFslA`2=p(;yutUabUWI?E2{SZTFI`rSuKMX1 z)v{Fr?u!SbBMuWdCz6Z$cGf0|ZJ1Nhf8YPU_03slTJ2=@%ySX`Pl*|)IW*iJVeB4E zs)r2}(A#aMf=gQPY#{n>LS2PVL<tUYS@!<MWY^=aE-mkd8q*o1k%-Hc9Oxx<6D7fj zl(Svd$rolR9K$SFjasGgoSVc(m=$F6=QJ9al)M2YwX4$Iqd<GL%&0my(ahvIl?7MM zI-0op2`=}hiBU)h^Y;*HL0P*!1zGm$;@0+LsHvjEm7Wspo}hW=Dq6`6-4Rerk&g$I zg_q{MS@2&Hw!e!JyfyH#jt77dfs#w${hx`hokeS}taGj2eZlj(33mj4i=KRm6d?bJ z35>oBW_b9b-h-@H=Dk&7K^-3(cJPohSQX}O7ZJNVSNw%D(F>+39PU~NHifr7$D)#r z=z*>!2nJ)Igp0HCppxPVu_Nu+lM%Vp)=5nXT>`c5MXOn{D5)`9u<J2-$7lU42rDgq z%F}Z|Vpwz6gt&~(S(<t$IKuz;D*x3Q7MMeotSV(gTxUB$Qzv7|UAXt_k&G3zb!eye zd@8R~;Xv&5YNX3#Ky8p4qLgpzZ6KD%2;<M0AqlMRMxDCs(%a^)snTHR%r4L1oOLSC zhx_`0qFKO_zSEsurj6G}ad0`d5Dr>i!=P8uPs)IL!A9H;zEpkodGj6T#i*+u$?Q;A z+d2ih$e&LV;Xa#8wGCyjat6QX!)VM>*Qcx;j#<@bCZh&`hHzI(6wPTBvKY9W{c|_> zt?+UNU;0j5e_!D@o!7Jf87}C*sYC4pLt(xfjQUpt>a8b9<zD~)7xDdIC<|$?Qi1eE zP&haaY)dr_7Y&6E0><{XEQTibMy4zvTZe!A+fzss<X~uQZR$c{WNL0{CrowN)J8>N zX(CLe&aJ?v;2>#gVJYk3WUA_+sAlY8ZOm^%B`Sg@1QK`%U~B4PNCC37v2zvx2~+(e zuE0b2ug$Df6#tO8SPN5$|J5LchJrGMq`i|V1s4kk3kS0?8xJQ1Hzx}xH#;vUHxmU1 z8yg=h8!syd2QxdL02`M82M@(RUsNJ!4<#Wd6EgvTl=MFve0V2JW#QuDAi&BB1Oi!r zoGkWE=B(`e{QRtJ9Djv*P%t~Y+qoEmnC+aY{|@r6I8vt0#!i+FE|&Io6o17vG_rSf z5vHR0tD%3t{@F8IhkrL@=loB44;)!Rh7PRkENra*j{Hzj=z)rWq?4(ki@lSYy}gad z-+h<1bTS3nJ6StZNUCxPvHo|_e_H)deN!nz7gG@qHg+~<b`EAX9<>K5T<ikuJX-&y z{@<eiR$al~#L~?DU)9-}*&c}U{#BiwOMspKpVj}1=%3YvSpNd?U%>o>`d@weZ`=Q0 zz)Xz)&C9{n$>tx2#l)D^)W+1-)Xv5Eff@V%&CJADz|7vs*3d=7($>)2l-0q`T!{5Q z8~?}s`+Kh+Z1Lbp)_<GwU%USAL;1f__z(C0mGFNDeQM-UaG!8J;d&H-M~R=@^@QtD z1Rf=Ra@P~CM-h0G_{m*QxE@8|QQ{|eJ>hy3fk%m--1UU(Q3M_(esb3nu167gl=#VA zPq-dM;8EfycRk^H6oE&HpWO9?>rn(AC4O?(6Rt-Qc$E0bT~D|kMc`55CwD#JdK7_2 ziJ#o{gzHfR9wmNq*AuQs5qOmN$z4yl9!20$;wN`K;d&H-M~R=@^@QtD1Rf=Ra@P~C zM-h0G_<wX4+JDkKOzj?WJAe;K9DNd7-{Ig;5agu9)gFfYPPesDg}mzZ-O?+zOcQvH z8%Z<PlV($?6;FUI{*G!F^!z>dk9WbJ4rWbvs--7lLx3HI`;9y$wMpH-!Y|vaYey}U zipB_&6z-IN5CLYtPjM*crFKN35%<w>6%<rr8XmWplY1GH+z3R+8kD$1n~-LwYyq>k zGMo>uvePwW>H8HV!b+B!uzm}3ZR;jj_SH<B(DBP5NLWz}Y2M&JgO@d=V)C9AVUfA6 zjjiT-4xlIyYh*GR2r5IwrR+cu8>(<T6H9R8#iRG5cRWu6_+h*AjO5BSY1LzEERSP% zA{Fe1bRprVbNgJEO#)sg+ledf)_`Br69UXVbkK@cDTbxq!_V$jZ4%Aa6!8C`eg>fU zYY8~R;<$rvlsgp0-6p`gnK_4UrzIqEKqr_ZiVt*}Sj8;(ZD$PK1kYhGOojbBv;wh* z1x6f;jj-VBka8e;IZ}-^S{u4JRvYSuKMNzxp3#Ejk_An@g)cy*ctdepD_6d!*&+<- zIj+a@Vt8ht>31LlmyDzkFe#E*B_n~l{rb{Bc2gdJI?7ZbmLp8*32ELVdIujPmdzku zHEw>Jh=p5F@gB_;h<qgpjvEJ}t4bPBa!vT;QUE8;51gG*o;N(lEHI-Cu2G_b7V;y! zNzeFzhEaO~7iJ9jytb#Y^(<$%os{BGEDUAyK;<wk0rgX!<!*7w8z<q4_(fOR%s^$& zHU#=u1p3h^<QdN!TmzErK4!u<{3MJivh=-G(K+DtM8S;cyx@!by|W1ZUz;v`wJo0o zGoYj`^lp4^R>WylGJpXF`VD1&UhK8nx~n)owQHwH(LVaaY`ne;r#4$IlN4WG-CE%+ z&aVSJWdpAR?j;Q6=%*IT|3Zo8awq<5iNqXWP!ZUk^M>uWNV=_m;F5mT60TR*$l-9n zRz!@AQV=#a(WL(p9AZ1_5i;A0dQ=;P@Ba1(qKR|K>A~VVj3O9&gN@5b%5fikh<s0X zXKI6yJts%<{Rr!ONAlh7f@dT>SL{jK8J5N80z;2@+md#$iM+5um|=)F{?Luu4Npo~ z{r&rCC=y%7gb0!j@^{&iIxK^7Rg0K8%r&uB4nW151-HBUg+s@!(K4(Ht7VEE_8GKW z(t30d{MTpG%l0CPw%W4S-u)xi{-W`s)~C*xC+5s8(bMoT2-b4t*=U0L=t9WVxI`H{ zL2JzMEl!Amo_pFRN<|}jSHJ9We4Q`a0L>{0l912M#Hu@gdoyPjE3Fcb?{2t@&5N`E zxP165@U9JP$H+kC)k+Tj9)r=Pu0#GR#D3)3Vr!&z<~+{u^7Eg3g9;e(cK#1--*NG1 z5j5l*&g(ulFZX{)SmQ-FFdk-2e~EFiMB!~xo}c&EXTQ!>E(W+UmdLt}<hqVb&&JLM zSii>vblhv6tN6lL3S(Z%`adjoLUdJlCf51(=NaSnt?zuV08}-ST9Hha^&3lqWZ%oI zym@}+xmVtFtt6!AdEb0%JTwpF0PpF<xh|E9>@-)k?xi}ckKZ*a-Xsl9+oz}7kqX?G z58A^lJ@0zv&Ar93#jJtrf|zwFuoI~_mA`dWPQI6@X&;3gmOv%$?J3Rtw6wGah>3}P z)wH#5Ok7>hn^lVyGsB~L*2<gfOB_!(hwDCm{OGNruC5L|m~V&}vpBnQ;A_5ln1HYU zm2tJp&UiWl14Gt1NXVxgBF~Xp(As*>h=_<-49~#GsBdj=U+&tV(`{7gE)z|%Bka66 z6ks}-EbM)@Jq9xo0}SxQ^iIso&U!cwCNq=wt{tCqb8~yBs;Y{LQN>w2M?&Z}VxQP| zgPC@PU`7a&DVcM<zJt4THoFeSE_sMAFPS@<U{~k)kt(i!YWF<3rn<TrwZd_&=Vxtg z?N2Ex$KtvDR%;iRGe}ZWQlUiHM^1_Kv@`+IC~4X)aP}b?G4YM;M0I#pR#yDUi4)uy z<YAU_ngq$TB88}^DAIA)g};==MMa8WxI(};e+?#{@zK#E&T@!#gHBoe=@u9-Tng?8 zBqSL@z-+YA8T|H}n$^`zmAU#uhvU>3xY-a*(#%YZj8@~6>CQeWC=3UTkB`fVH94$w z;=xhp_v0Od>Ul`8Qgj-e3b_a(qG%HOWj;(qzSNbmRmub%Itg)K&s_B%PIG@E5#+zU znt*|-u3jkaeqC;<^%$(=wbuqs2pdx;hypFIPhlkYUK0>vMh{{hulb$HC7kM?&Y;5- zd)6l3qdTxxXF02=-jdp)Vd^GrZzxL{b6bPS2Bh^)W$}egqR8LB*^LJjg)xaD2!E~q g-ts@J-xtFW9I_^0GDlp@e<ei9y;GDblQ0PQKZe?=*#H0l diff --git a/sites/all/modules/views/includes/admin.inc b/sites/all/modules/views/includes/admin.inc index 71d2b5545..6ae420ebc 100644 --- a/sites/all/modules/views/includes/admin.inc +++ b/sites/all/modules/views/includes/admin.inc @@ -31,9 +31,26 @@ function views_ui_get_admin_css() { $themes = list_themes(); $theme_key = $GLOBALS['theme']; while ($theme_key) { - $list[$module_path . "/css/views-admin.$theme_key.css"] = array( - 'group' => CSS_THEME, - ); + // Try to find the admin css file for non-core themes. + if (!in_array($theme_key, array('garland', 'seven', 'bartik'))) { + $theme_path = drupal_get_path('theme', $theme_key); + // First search in the css directory, then in the root folder of the theme. + if (file_exists($theme_path . "/css/views-admin.$theme_key.css")) { + $list[$theme_path . "/css/views-admin.$theme_key.css"] = array( + 'group' => CSS_THEME, + ); + } + else if (file_exists($theme_path . "/views-admin.$theme_key.css")) { + $list[$theme_path . "/views-admin.$theme_key.css"] = array( + 'group' => CSS_THEME, + ); + } + } + else { + $list[$module_path . "/css/views-admin.$theme_key.css"] = array( + 'group' => CSS_THEME, + ); + } $theme_key = isset($themes[$theme_key]->base_theme) ? $themes[$theme_key]->base_theme : ''; } // Views contains style overrides for the following modules @@ -81,23 +98,6 @@ function views_ui_check_advanced_help() { } } -/** - * #pre_render callback for the live preview element. - * - * Delaying the preview generation until the rendering phase ensures that time - * isn't wasted generating a preview if it won't be displayed (for example, if - * after processing the Edit form, a redirect is issued). - */ -function views_ui_pre_render_preview($element) { - $preview = views_ui_preview($element['#view'], $element['#display_id'], $element['#preview_args']); - // @todo HTML does not support a FORM inside a FORM. Remove this hack after - // fixing Views UI to display the preview outside of the edit form, so that - // we don't have to mess with the exposed widget form in this way. - $preview = preg_replace('@</?form.*?>@', '', $preview); - $element['#markup'] = $preview; - return $element; -} - /** * Returns the results of the live preview. */ @@ -121,7 +121,7 @@ function views_ui_preview($view, $display_id, $args = array()) { $show_stats = variable_get('views_ui_show_sql_query_where', 'above'); } - $combined = ($show_query === $show_stats); + $combined = $show_query && $show_stats; $rows = array('query' => array(), 'statistics' => array()); $output = ''; @@ -130,27 +130,29 @@ function views_ui_preview($view, $display_id, $args = array()) { if ($errors === TRUE) { $view->ajax = TRUE; $view->live_preview = TRUE; + $view->views_ui_context = TRUE; // AJAX happens via $_POST but everything expects exposed data to // be in GET. Copy stuff but remove ajax-framework specific keys. - $exposed_input = $_POST; - foreach (array('view_name', 'view_display_id', 'view_args', 'view_path', 'view_dom_id', 'pager_element', 'view_base_path', 'ajax_html_ids', 'ajax_page_state') as $key) { + // If we're clicking on links in a preview, though, we could actually + // still have some in $_GET, so we use $_REQUEST to ensure we get it all. + $exposed_input = $_REQUEST; + foreach (array('view_name', 'view_display_id', 'view_args', 'view_path', 'view_dom_id', 'pager_element', 'view_base_path', 'ajax_html_ids', 'ajax_page_state', 'form_id', 'form_build_id', 'form_token') as $key) { if (isset($exposed_input[$key])) { unset($exposed_input[$key]); } } - // @todo Remove this hack after fixing Views UI to display the preview - // outside of the edit form, so that the edit form doesn't conflict with - // the exposed widget form. - $exposed_input['form_id'] = 'views_exposed_form'; - unset($exposed_input['form_build_id'], $exposed_input['form_token']); $view->set_exposed_input($exposed_input); - // Store the current view URL for later use: - $view->set_display($display_id); + + if (!$view->set_display($display_id)) { + return t('Invalid display id @display', array('@display' => $display_id)); + } + $view->set_arguments($args); + // Store the current view URL for later use: if ($view->display_handler->get_option('path')) { $path = $view->get_url(); } @@ -159,6 +161,7 @@ function views_ui_preview($view, $display_id, $args = array()) { $view->override_path = 'admin/structure/views/nojs/preview/' . $view->name . '/' . $display_id; // Also override $_GET['q'] so we get the pager. + $original_path = current_path(); $_GET['q'] = $view->override_path; if ($args) { $_GET['q'] .= '/' . implode('/', $args); @@ -169,14 +172,13 @@ function views_ui_preview($view, $display_id, $args = array()) { // @todo We'll want to add contextual links specific to editing the View, so // the suppression may need to be moved deeper into the Preview pipeline. views_ui_contextual_links_suppress_push(); - try { - $preview = $view->preview($display_id, $args); - } - catch (Exception $e) { - drupal_set_message($e->getMessage(), 'error'); - } + $preview = $view->preview($display_id, $args); views_ui_contextual_links_suppress_pop(); + // Reset variables. + unset($view->override_path); + $_GET['q'] = $original_path; + // Prepare the query information and statistics to show either above or // below the view preview. if ($show_info || $show_query || $show_stats) { @@ -188,9 +190,9 @@ function views_ui_preview($view, $display_id, $args = array()) { $quoted = array(); if (get_class($view->query) == 'views_plugin_query_default') { - $arguments = $query->getArguments(); + $quoted = $query->getArguments(); $connection = Database::getConnection(); - foreach ($query->arguments() as $key => $val) { + foreach ($quoted as $key => $val) { if (is_array($val)) { $quoted[$key] = implode(', ', array_map(array($connection, 'quote'), $val)); } @@ -282,13 +284,6 @@ function views_ui_preview($view, $display_id, $args = array()) { return $output; } -/** - * AJAX callback that returns the preview section of the edit form. - */ -function views_ui_preview_callback($form, $form_state) { - return $form['displays']['preview']; -} - /** * Page callback to add a new view. */ @@ -358,8 +353,8 @@ function views_ui_add_form($form, &$form_state) { // selected. $wizard_plugins = views_ui_get_wizards(); $options = array(); - foreach ($wizard_plugins as $key => $w) { - $options[$key] = $w['title']; + foreach ($wizard_plugins as $key => $wizard) { + $options[$key] = $wizard['title']; } $form['displays']['show']['wizard_key'] = array( '#type' => 'select', @@ -401,6 +396,22 @@ function views_ui_add_form($form, &$form_state) { return $form; } +/** + * Helper form element validator: integer. + * + * @see _element_validate_integer_positive + * + * The problem with this is that the function is private so it's not guaranteed + * that it might not be renamed/changed. In the future field.module or something else + * should provide a public validate function. + */ +function views_element_validate_integer($element, &$form_state) { + $value = $element['#value']; + if ($value !== '' && (!is_numeric($value) || intval($value) != $value)) { + form_error($element, t('%name must be a positive integer.', array('%name' => $element['#title']))); + } +} + /** * Gets the current value of a #select element, from within a form constructor function. * @@ -680,10 +691,10 @@ function views_ui_nojs_submit($form, &$form_state) { * Validate the add view form. */ function views_ui_wizard_form_validate($form, &$form_state) { - $w = views_ui_get_wizard($form_state['values']['show']['wizard_key']); - $form_state['wizard'] = $w; - $get_instance = $w['get_instance']; - $form_state['wizard_instance'] = $get_instance($w); + $wizard = views_ui_get_wizard($form_state['values']['show']['wizard_key']); + $form_state['wizard'] = $wizard; + $get_instance = $wizard['get_instance']; + $form_state['wizard_instance'] = $get_instance($wizard); $errors = $form_state['wizard_instance']->validate($form, $form_state); foreach ($errors as $name => $message) { form_set_error($name, $message); @@ -832,7 +843,8 @@ function views_ui_break_lock_confirm($form, &$form_state, $view) { $form = array(); if (empty($view->locked)) { - return t('There is no lock on view %view to break.', array('%name' => $view->name)); + $form['#markup'] = t('There is no lock on view %view to break.', array('%name' => $view->name)); + return $form; } $cancel = 'admin/structure/views/view/' . $view->name . '/edit'; @@ -859,21 +871,6 @@ function views_ui_break_lock_confirm_submit(&$form, &$form_state) { drupal_set_message(t('The lock has been broken and you may now edit this view.')); } -/** - * Page callback for the Edit View page. - */ -function views_ui_edit_page($view, $display_id = NULL) { - $display_id = views_ui_edit_page_display($view, $display_id); - if (!in_array($display_id, array(MENU_ACCESS_DENIED, MENU_NOT_FOUND))) { - $build = drupal_get_form('views_ui_edit_form', $view, $display_id); - } - else { - $build = $display_id; - } - - return $build; -} - /** * Helper function to return the used display_id for the edit page * @@ -881,7 +878,7 @@ function views_ui_edit_page($view, $display_id = NULL) { */ function views_ui_edit_page_display($view, $display_id) { // Determine the displays available for editing. - if ($tabs = views_ui_edit_page_display_tabs($view)) { + if ($tabs = views_ui_edit_page_display_tabs($view, $display_id)) { // If a display isn't specified, use the first one. if (empty($display_id)) { foreach ($tabs as $id => $tab) { @@ -909,6 +906,50 @@ function views_ui_edit_page_display($view, $display_id) { return $display_id; } +/** + * Page callback for the Edit View page. + */ +function views_ui_edit_page($view, $display_id = NULL) { + $display_id = views_ui_edit_page_display($view, $display_id); + if (!in_array($display_id, array(MENU_ACCESS_DENIED, MENU_NOT_FOUND))) { + $build = array(); + $build['edit_form'] = drupal_get_form('views_ui_edit_form', $view, $display_id); + $build['preview'] = views_ui_build_preview($view, $display_id, FALSE); + } + else { + $build = $display_id; + } + + return $build; +} + +function views_ui_build_preview($view, $display_id, $render = TRUE) { + if (isset($_POST['ajax_html_ids'])) { + unset($_POST['ajax_html_ids']); + } + + $build = array( + '#theme_wrappers' => array('container'), + '#attributes' => array('id' => 'views-preview-wrapper', 'class' => 'views-admin clearfix'), + ); + + $form_state = array('build_info' => array('args' => array($view, $display_id))); + $build['controls'] = drupal_build_form('views_ui_preview_form', $form_state); + + $args = array(); + if (!empty($form_state['values']['view_args'])) { + $args = explode('/', $form_state['values']['view_args']); + } + + $build['preview'] = array( + '#theme_wrappers' => array('container'), + '#attributes' => array('id' => 'views-live-preview'), + '#markup' => $render ? views_ui_preview($view->clone_view(), $display_id, $args) : '', + ); + + return $build; +} + /** * Form builder callback for editing a View. * @@ -930,6 +971,15 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { // form_load_include(). $form_state['no_cache'] = TRUE; + if ($display_id) { + if (!$view->set_display($display_id)) { + $form['#markup'] = t('Invalid display id @display', array('@display' => $display_id)); + return $form; + } + + $view->fix_missing_relationships(); + } + ctools_include('dependent'); $form['#attached']['js'][] = ctools_attach_js('dependent'); $form['#attached']['js'][] = ctools_attach_js('collapsible-div'); @@ -969,6 +1019,8 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { $form['#prefix'] = $form['#prefix'] . '<div class="views-edit-view views-admin clearfix">'; $form['#suffix'] = '</div>' . $form['#suffix']; + $form['#attributes']['class'] = array('form-edit'); + if (isset($view->locked) && is_object($view->locked)) { $form['locked'] = array( '#theme_wrappers' => array('container'), @@ -1029,11 +1081,148 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { '#suffix' => '</div>', ); - $form['displays']['top']['#theme_wrappers'] = array('views_container'); - $form['displays']['top']['#attributes']['class'] = array('views-display-top'); + $form['displays']['top'] = views_ui_render_display_top($view, $display_id); + + // The rest requires a display to be selected. + if ($display_id) { + $form_state['display_id'] = $display_id; + + // The part of the page where editing will take place. + // This element is the ctools collapsible-div container for the display edit elements. + $form['displays']['settings'] = array( + '#theme_wrappers' => array('container'), + '#attributes' => array( + 'class' => array( + 'views-display-settings', + 'box-margin', + 'ctools-collapsible-container', + ), + ), + '#id' => 'edit-display-settings', + ); + $display_title = views_ui_get_display_label($view, $display_id, FALSE); + // Add a handle for the ctools collapsible-div. The handle is the title of the display + $form['displays']['settings']['tab_title']['#markup'] = '<h2 id="edit-display-settings-title" class="ctools-collapsible-handle">' . t('@display_title details', array('@display_title' => ucwords($display_title))) . '</h2>'; + // Add a text that the display is disabled. + if (!empty($view->display[$display_id]->handler)) { + $enabled = $view->display[$display_id]->handler->get_option('enabled'); + if (empty($enabled)) { + $form['displays']['settings']['disabled']['#markup'] = t('This display is disabled.'); + } + } + // The ctools collapsible-div content + $form['displays']['settings']['settings_content']= array( + '#theme_wrappers' => array('container'), + '#id' => 'edit-display-settings-content', + '#attributes' => array( + 'class' => array( + 'ctools-collapsible-content', + ), + ), + ); + // Add the edit display content + $form['displays']['settings']['settings_content']['tab_content'] = views_ui_get_display_tab($view, $display_id); + $form['displays']['settings']['settings_content']['tab_content']['#theme_wrappers'] = array('container'); + $form['displays']['settings']['settings_content']['tab_content']['#attributes'] = array('class' => array('views-display-tab')); + $form['displays']['settings']['settings_content']['tab_content']['#id'] = 'views-tab-' . $display_id; + // Mark deleted displays as such. + if (!empty($view->display[$display_id]->deleted)) { + $form['displays']['settings']['settings_content']['tab_content']['#attributes']['class'][] = 'views-display-deleted'; + } + // Mark disabled displays as such. + if (empty($enabled)) { + $form['displays']['settings']['settings_content']['tab_content']['#attributes']['class'][] = 'views-display-disabled'; + } + + // The content of the popup dialog. + $form['ajax-area'] = array( + '#theme_wrappers' => array('container'), + '#id' => 'views-ajax-popup', + ); + $form['ajax-area']['ajax-title'] = array( + '#markup' => '<h2 id="views-ajax-title"></h2>', + ); + $form['ajax-area']['ajax-body'] = array( + '#theme_wrappers' => array('container'), + '#id' => 'views-ajax-body', + '#markup' => views_ui_get_default_ajax_message(), + ); + } + + // If relationships had to be fixed, we want to get that into the cache + // so that edits work properly, and to try to get the user to save it + // so that it's not using weird fixed up relationships. + if (!empty($view->relationships_changed) && empty($_POST)) { + drupal_set_message(t('This view has been automatically updated to fix missing relationships. While this View should continue to work, you should verify that the automatic updates are correct and save this view.')); + views_ui_cache_set($view); + } + return $form; +} + +/** + * Provide the preview formulas and the preview output, too. + */ +function views_ui_preview_form($form, &$form_state, $view, $display_id = 'default') { + $form_state['no_cache'] = TRUE; + $form_state['view'] = $view; + + $form['#attributes'] = array('class' => array('clearfix',)); + + // Add a checkbox controlling whether or not this display auto-previews. + $form['live_preview'] = array( + '#type' => 'checkbox', + '#id' => 'edit-displays-live-preview', + '#title' => t('Auto preview'), + '#default_value' => variable_get('views_ui_always_live_preview', TRUE), + ); + + // Add the arguments textfield + $form['view_args'] = array( + '#type' => 'textfield', + '#title' => t('Preview with contextual filters:'), + '#description' => t('Separate contextual filter values with a "/". For example, %example.', array('%example' => '40/12/10')), + '#id' => 'preview-args', +// '#attributes' => array('class' => array('ctools-auto-submit')), + ); + + // Add the preview button + $form['button'] = array( + '#type' => 'submit', + '#value' => t('Update preview'), + '#attributes' => array('class' => array('arguments-preview', 'ctools-auto-submit-click')), + '#pre_render' => array('ctools_dependent_pre_render'), + '#prefix' => '<div id="preview-submit-wrapper">', + '#suffix' => '</div>', + '#id' => 'preview-submit', + '#submit' => array('views_ui_edit_form_submit_preview'), + '#ajax' => array( + 'path' => 'admin/structure/views/view/' . $view->name . '/preview/' . $display_id . '/ajax', + 'wrapper' => 'views-preview-wrapper', + 'event' => 'click', + 'progress' => array('type' => 'throbber'), + 'method' => 'replace', + ), + // Make ENTER in arguments textfield (and other controls) submit the form + // as this button, not the Save button. + // @todo This only works for JS users. To make this work for nojs users, + // we may need to split Preview into a separate form. + '#process' => array_merge(array('views_ui_default_button'), element_info_property('submit', '#process', array())), + ); + $form['#action'] = url('admin/structure/views/view/' . $view->name .'/preview/' . $display_id); + + return $form; +} + +/** + * Render the top of the display so it can be updated during ajax operations. + */ +function views_ui_render_display_top($view, $display_id) { + $element['#theme_wrappers'] = array('views_container'); + $element['#attributes']['class'] = array('views-display-top', 'clearfix'); + $element['#attributes']['id'] = array('views-display-top'); // Extra actions for the display - $form['displays']['top']['extra_actions'] = array( + $element['extra_actions'] = array( '#theme' => 'links__ctools_dropbutton', '#attributes' => array( 'id' => 'views-display-extra-actions', @@ -1049,7 +1238,8 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { ), 'analyze' => array( 'title' => t('analyze view'), - 'href' => "admin/structure/views/view/$view->name/analyze", + 'href' => "admin/structure/views/nojs/analyze/$view->name/$display_id", + 'attributes' => array('class' => array('views-ajax-link')), ), 'clone' => array( 'title' => t('clone view'), @@ -1059,18 +1249,27 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { 'title' => t('export view'), 'href' => "admin/structure/views/view/$view->name/export", ), + 'reorder' => array( + 'title' => t('reorder displays'), + 'href' => "admin/structure/views/nojs/reorder-displays/$view->name/$display_id", + 'attributes' => array('class' => array('views-ajax-link')), + ), ), ); + + // Let other modules add additional links here. + drupal_alter('views_ui_display_top_links', $element['extra_actions']['#links'], $view, $display_id); + if (isset($view->type) && $view->type != t('Default')) { if ($view->type == t('Overridden')) { - $form['displays']['top']['extra_actions']['#links']['revert'] = array( + $element['extra_actions']['#links']['revert'] = array( 'title' => t('revert view'), 'href' => "admin/structure/views/view/$view->name/revert", 'query' => array('destination' => "admin/structure/views/view/$view->name"), ); } else { - $form['displays']['top']['extra_actions']['#links']['delete'] = array( + $element['extra_actions']['#links']['delete'] = array( 'title' => t('delete view'), 'href' => "admin/structure/views/view/$view->name/delete", ); @@ -1078,18 +1277,18 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { } // Determine the displays available for editing. - if ($tabs = views_ui_edit_page_display_tabs($view)) { + if ($tabs = views_ui_edit_page_display_tabs($view, $display_id)) { if ($display_id) { $tabs[$display_id]['#active'] = TRUE; } - $tabs['#prefix'] = '<h2 class="element-invisible">' . t('Secondary tabs') . '</h2><ul class="tabs secondary">'; + $tabs['#prefix'] = '<h2 class="element-invisible">' . t('Secondary tabs') . '</h2><ul id = "views-display-menu-tabs" class="tabs secondary">'; $tabs['#suffix'] = '</ul>'; - $form['displays']['top']['tabs'] = $tabs; + $element['tabs'] = $tabs; } // Buttons for adding a new display. - foreach (views_fetch_plugin_names('display') as $type => $label) { - $form['displays']['top']['add_display'][$type] = array( + foreach (views_fetch_plugin_names('display', NULL, array($view->base_table)) as $type => $label) { + $element['add_display'][$type] = array( '#type' => 'submit', '#value' => t('Add !display', array('!display' => $label)), '#limit_validation_errors' => array(), @@ -1102,148 +1301,7 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { ); } - // The rest requires a display to be selected. - if ($display_id) { - $form_state['display_id'] = $display_id; - - // The part of the page where editing will take place. - $view->set_display($display_id); - // This element is the ctools collapsible-div container for the display edit elements. - $form['displays']['settings'] = array( - '#theme_wrappers' => array('container'), - '#attributes' => array( - 'class' => array( - 'views-display-settings', - 'box-margin', - 'ctools-collapsible-container', - ), - ), - '#id' => 'edit-display-settings', - ); - $display_title = views_ui_get_display_label($view, $display_id, FALSE); - // Add a handle for the ctools collapsible-div. The handle is the title of the display - $form['displays']['settings']['tab_title']['#markup'] = '<h2 id="edit-display-settings-title" class="ctools-collapsible-handle">' . t('@display_title details', array('@display_title' => ucwords($display_title))) . '</h2>'; - // The ctools collapsible-div content - $form['displays']['settings']['settings_content']= array( - '#theme_wrappers' => array('container'), - '#id' => 'edit-display-settings-content', - '#attributes' => array( - 'class' => array( - 'ctools-collapsible-content', - ), - ), - ); - // Add the edit display content - $form['displays']['settings']['settings_content']['tab_content'] = views_ui_get_display_tab($view, $display_id); - $form['displays']['settings']['settings_content']['tab_content']['#theme_wrappers'] = array('container'); - $form['displays']['settings']['settings_content']['tab_content']['#attributes'] = array('class' => array('views-display-tab')); - $form['displays']['settings']['settings_content']['tab_content']['#id'] = 'views-tab-' . $display_id; - // Mark deleted displays as such. - if (!empty($view->display[$display_id]->deleted)) { - $form['displays']['settings']['settings_content']['tab_content']['#attributes']['class'][] = 'views-display-deleted'; - } - - // Add preview controls - $form['displays']['settings']['settings_content']['preview_controls'] = array( - '#theme_wrappers' => array('container'), - '#attributes' => array( - 'class' => array( - 'clearfix', - ), - ), - '#id' => 'edit-display-preview-controls', - ); - - // Add a checkbox controlling whether or not this display auto-previews. - $form['displays']['settings']['settings_content']['preview_controls']['live_preview'] = array( - '#type' => 'checkbox', - '#id' => 'edit-displays-live-preview', - '#title' => t('Auto preview'), - '#default_value' => variable_get('views_ui_always_live_preview', TRUE), - ); - - // Add the arguments textfield - $form['displays']['settings']['settings_content']['preview_controls']['view_args'] = array( - '#type' => 'textfield', - '#title' => t('Preview with contextual filters:'), - '#description' => t('Separate contextual filter values with a "/". For example, %example.', array('%example' => '40/12/10')), - '#id' => 'preview-args', - ); - - // Add the preview button - $form['displays']['settings']['settings_content']['preview_controls']['button'] = array( - '#type' => 'submit', - '#value' => t('Preview'), - '#attributes' => array('class' => array('arguments-preview')), - '#pre_render' => array('ctools_dependent_pre_render'), - '#prefix' => '<div id="preview-submit-wrapper">', - '#suffix' => '</div>', - '#id' => 'preview-submit', - '#submit' => array('views_ui_edit_form_submit_preview'), - '#ajax' => array( - 'path' => 'admin/structure/views/view/' . $view->name . '/edit/' . $display_id . '/ajax', - 'callback' => 'views_ui_preview_callback', - 'wrapper' => 'views-live-preview', - ), - // Make ENTER in arguments textfield (and other controls) submit the form - // as this button, not the Save button. - // @todo This only works for JS users. To make this work for nojs users, - // we may need to split Preview into a separate form. - '#process' => array_merge(array('views_ui_default_button'), element_info_property('submit', '#process', array())), - ); - - // Hide the button on the autopreview checkbox, but only based on a setting. - if (!variable_get('views_ui_always_live_preview_button', FALSE)) { - $form['displays']['settings']['settings_content']['preview_controls']['button']['#dependency'] = array( - 'edit-displays-live-preview' => array(0), - ); - } - - // The live preview. - // @todo: Figure out whether $view->preview and $view->editing might be enough already. - $view->views_ui_context = TRUE; - - $form['displays']['preview'] = array( - '#theme_wrappers' => array('container'), - '#id' => 'views-live-preview', - ); - - $form['displays']['preview']['preview'] = array(); - if (variable_get('views_ui_always_live_preview', TRUE) || !empty($form_state['show_preview']) || !empty($form_state['values']['displays']['settings']['settings_content']['preview_controls']['live_preview'])) { - $preview_args = isset($form_state['values']['displays']['settings']['settings_content']['preview_controls']['view_args']) ? $form_state['values']['displays']['settings']['settings_content']['preview_controls']['view_args'] : ''; - $preview_args = ($preview_args !== '') ? explode('/', $preview_args) : array(); - $form['displays']['preview']['preview'] += array( - '#type' => 'markup', - '#pre_render' => array_merge(array('views_ui_pre_render_preview'), element_info_property('markup', '#pre_render', array())), - '#view' => $view, - '#display_id' => $display_id, - '#preview_args' => $preview_args, - ); - } - - // The content of the popup dialog. - $form['ajax-area'] = array( - '#theme_wrappers' => array('container'), - '#id' => 'views-ajax-popup', - ); - $form['ajax-area']['ajax-title'] = array( - '#markup' => '<h2 id="views-ajax-title"></h2>', - ); - $form['ajax-area']['ajax-body'] = array( - '#theme_wrappers' => array('container'), - '#id' => 'views-ajax-body', - '#markup' => views_ui_get_default_ajax_message(), - ); - - // WYSIWYG does not yet work on AJAX returned content unless the editor - // libraries are loaded on the base page (http://drupal.org/node/356480). - // @todo Remove this when that issue is resolved. - if (module_exists('wysiwyg')) { - $form['dummy_text_format'] = array('#type' => 'text_format', '#prefix' => '<div style="display:none">', '#suffix' => '</div>'); - } - } - - return $form; + return $element; } function views_ui_get_default_ajax_message() { @@ -1278,6 +1336,10 @@ function views_ui_edit_form_submit_duplicate_display($form, &$form_state) { $new_display_id = $view->add_display($display->display_plugin); $view->display[$new_display_id] = clone $display; $view->display[$new_display_id]->id = $new_display_id; + + // By setting the current display the changed marker will appear on the new + // display. + $view->current_display = $new_display_id; views_ui_cache_set($view); // Redirect to the new display's edit page. @@ -1315,6 +1377,35 @@ function views_ui_edit_form_submit_undo_delete_display($form, &$form_state) { $form_state['redirect'] = 'admin/structure/views/view/' . $form_state['view']->name . '/edit/' . $id; } +/** + * Submit handler to enable a disabled display. + */ +function views_ui_edit_form_submit_enable_display($form, &$form_state) { + $id = $form_state['display_id']; + // set_option doesn't work because this would might affect upper displays + $form_state['view']->display[$id]->handler->set_option('enabled', TRUE); + + // Store in cache + views_ui_cache_set($form_state['view']); + + // Redirect to the top-level edit page. + $form_state['redirect'] = 'admin/structure/views/view/' . $form_state['view']->name . '/edit/' . $id; +} + +/** + * Submit handler to disable display. + */ +function views_ui_edit_form_submit_disable_display($form, &$form_state) { + $id = $form_state['display_id']; + $form_state['view']->display[$id]->handler->set_option('enabled', FALSE); + + // Store in cache + views_ui_cache_set($form_state['view']); + + // Redirect to the top-level edit page. + $form_state['redirect'] = 'admin/structure/views/view/' . $form_state['view']->name . '/edit/' . $id; +} + /** * Submit handler when Preview button is clicked. */ @@ -1359,8 +1450,13 @@ function views_ui_edit_form_submit_delay_destination($form, &$form_state) { * these tabs as secondary local tasks, or it can be called from elsewhere if * having them as secondary local tasks isn't desired. The caller is responsible * for setting the active tab's #active property to TRUE. + * + * @param $view + * The view which will be edited. + * @param $display_id + * The display_id which is edited on the current request. */ -function views_ui_edit_page_display_tabs($view) { +function views_ui_edit_page_display_tabs($view, $display_id = NULL) { $tabs = array(); // Create a tab for each display. @@ -1376,10 +1472,13 @@ function views_ui_edit_page_display_tabs($view) { if (!empty($display->deleted)) { $tabs[$id]['#link']['localized_options']['attributes']['class'][] = 'views-display-deleted-link'; } + if (empty($display->options['enabled'])) { + $tabs[$id]['#link']['localized_options']['attributes']['class'][] = 'views-display-disabled-link'; + } } - // If the default display isn't supposed to be shown, don't display its tab. - if (!views_ui_show_default_display($view)) { + // If the default display isn't supposed to be shown, don't display its tab, unless it's the only display. + if ((!views_ui_show_default_display($view) && $display_id != 'default') && count($tabs) > 1) { $tabs['default']['#access'] = FALSE; } @@ -1405,13 +1504,12 @@ function views_ui_show_default_display($view) { function views_ui_get_display_tab($view, $display_id) { $build = array(); $display = $view->display[$display_id]; - $plugin = $display->handler->definition; // If the plugin doesn't exist, display an error message instead of an edit // page. - if (empty($plugin)) { + if (empty($display->handler)) { $title = isset($display->display_title) ? $display->display_title : t('Invalid'); // @TODO: Improved UX for the case where a plugin is missing. - $build['#markup'] = t("Error: Display @display refers to a plugin named '@plugin', but that plugin is missing.", array('@display' => $display->id, '@plugin' => $display->display_plugin)); + $build['#markup'] = t("Error: Display @display refers to a plugin named '@plugin', but that plugin is not available.", array('@display' => $display->id, '@plugin' => $display->display_plugin)); } // Build the content of the edit page. else { @@ -1439,10 +1537,6 @@ function views_ui_get_display_tab_details($view, $display) { '#attributes' => array('id' => 'edit-display-settings-details',), ); - $build['top']['#theme_wrappers'] = array('container'); - $build['top']['#attributes']['id'] = 'edit-display-settings-top'; - $build['top']['#attributes']['class'] = array('views-ui-display-tab-actions', 'views-ui-display-tab-bucket', 'clearfix'); - $plugin = views_fetch_plugin_data('display', $view->display[$display->id]->display_plugin); // The following is for display purposes only. We need to determine if there is more than one button and wrap // the buttons in a .ctools-dropbutton class if more than one is present. Otherwise, we'll just wrap the @@ -1451,9 +1545,11 @@ function views_ui_get_display_tab_details($view, $display) { $isDeletable = empty($plugin['no remove']); // The master display cannot be cloned. $isDefault = $display->id == 'default'; + // @todo: Figure out why get_option doesn't work here. + $isEnabled = $display->handler->get_option('enabled'); if (!$isDisplayDeleted && $isDeletable && !$isDefault) { - $prefix = '<div class="ctools-button ctools-dropbutton"><div class="ctools-link"><a href="#" class="ctools-twisty ctools-text">open</a></div><div class="ctools-content"><ul class="horizontal right actions">'; + $prefix = '<div class="ctools-no-js ctools-button ctools-dropbutton"><div class="ctools-link"><a href="#" class="ctools-twisty ctools-text">open</a></div><div class="ctools-content"><ul class="horizontal right actions">'; $suffix = '</ul></div></div>'; $itemElement = 'li'; } @@ -1463,52 +1559,92 @@ function views_ui_get_display_tab_details($view, $display) { $itemElement = 'li'; } - // The Delete, Duplicate and Undo Delete buttons. - $build['top']['actions'] = array( - '#prefix' => $prefix, - '#suffix' => $suffix, - ); + if ($display->id != 'default') { + $build['top']['#theme_wrappers'] = array('container'); + $build['top']['#attributes']['id'] = 'edit-display-settings-top'; + $build['top']['#attributes']['class'] = array('views-ui-display-tab-actions', 'views-ui-display-tab-bucket', 'clearfix'); - if (!$isDisplayDeleted) { - if (!$isDefault) { - $build['top']['actions']['duplicate'] = array( - '#type' => 'submit', - '#value' => t('clone') . " " . $display_title, - '#limit_validation_errors' => array(), - '#submit' => array('views_ui_edit_form_submit_duplicate_display', 'views_ui_edit_form_submit_delay_destination'), - '#prefix' => '<' . $itemElement . ' class="duplicate">', - "#suffix" => '</' . $itemElement . '>', - ); + // The Delete, Duplicate and Undo Delete buttons. + $build['top']['actions'] = array( + '#prefix' => $prefix, + '#suffix' => $suffix, + ); + + if (!$isDisplayDeleted) { + if (!$isEnabled) { + $build['top']['actions']['enable'] = array( + '#type' => 'submit', + '#value' => t('enable @display_title', array('@display_title' => $display_title)), + '#limit_validation_errors' => array(), + '#submit' => array('views_ui_edit_form_submit_enable_display', 'views_ui_edit_form_submit_delay_destination'), + '#prefix' => '<' . $itemElement . ' class="enable">', + "#suffix" => '</' . $itemElement . '>', + ); + } + // Add a link to view the page. + elseif ($display->handler->has_path()) { + $path = $display->handler->get_path(); + if (strpos($path, '%') === FALSE) { + $build['top']['actions']['path'] = array( + '#type' => 'link', + '#title' => t('view @display', array('@display' => $display->display_title)), + '#options' => array('alt' => array(t("Go to the real page for this display"))), + '#href' => $path, + '#prefix' => '<' . $itemElement . ' class="view">', + "#suffix" => '</' . $itemElement . '>', + ); + } + } + if (!$isDefault) { + $build['top']['actions']['duplicate'] = array( + '#type' => 'submit', + '#value' => t('clone @display_title', array('@display_title' => $display_title)), + '#limit_validation_errors' => array(), + '#submit' => array('views_ui_edit_form_submit_duplicate_display', 'views_ui_edit_form_submit_delay_destination'), + '#prefix' => '<' . $itemElement . ' class="duplicate">', + "#suffix" => '</' . $itemElement . '>', + ); + } + if ($isDeletable) { + $build['top']['actions']['delete'] = array( + '#type' => 'submit', + '#value' => t('delete @display_title', array('@display_title' => $display_title)), + '#limit_validation_errors' => array(), + '#submit' => array('views_ui_edit_form_submit_delete_display', 'views_ui_edit_form_submit_delay_destination'), + '#prefix' => '<' . $itemElement . ' class="delete">', + "#suffix" => '</' . $itemElement . '>', + ); + } + if ($isEnabled) { + $build['top']['actions']['disable'] = array( + '#type' => 'submit', + '#value' => t('disable @display_title', array('@display_title' => $display_title)), + '#limit_validation_errors' => array(), + '#submit' => array('views_ui_edit_form_submit_disable_display', 'views_ui_edit_form_submit_delay_destination'), + '#prefix' => '<' . $itemElement . ' class="disable">', + "#suffix" => '</' . $itemElement . '>', + ); + } } - if ($isDeletable) { - $build['top']['actions']['delete'] = array( + else { + $build['top']['actions']['undo_delete'] = array( '#type' => 'submit', - '#value' => t('delete') . " " . $display_title, + '#value' => t('undo delete of @display_title', array('@display_title' => $display_title)), '#limit_validation_errors' => array(), - '#submit' => array('views_ui_edit_form_submit_delete_display', 'views_ui_edit_form_submit_delay_destination'), - '#prefix' => '<' . $itemElement . ' class="delete">', + '#submit' => array('views_ui_edit_form_submit_undo_delete_display', 'views_ui_edit_form_submit_delay_destination'), + '#prefix' => '<' . $itemElement . ' class="undo-delete">', "#suffix" => '</' . $itemElement . '>', ); } - } - else { - $build['top']['actions']['undo_delete'] = array( - '#type' => 'submit', - '#value' => t('undo delete of') . " " . $display_title, - '#limit_validation_errors' => array(), - '#submit' => array('views_ui_edit_form_submit_undo_delete_display', 'views_ui_edit_form_submit_delay_destination'), - '#prefix' => '<' . $itemElement . ' class="undo-delete">', - "#suffix" => '</' . $itemElement . '>', + + // The area above the three columns. + $build['top']['display_title'] = array( + '#theme' => 'views_ui_display_tab_setting', + '#description' => t('Display name'), + '#link' => $display->handler->option_link(check_plain($display_title), 'display_title'), ); } - // The area above the three columns. - $build['top']['display_title'] = array( - '#theme' => 'views_ui_display_tab_setting', - '#description' => t('Display name'), - '#link' => $display->handler->option_link(check_plain($display->display_title), 'display_title'), - ); - $build['columns'] = array(); $build['columns']['#theme_wrappers'] = array('container'); $build['columns']['#attributes'] = array('id' => 'edit-display-settings-main', 'class' => array('clearfix', 'views-display-columns'),); @@ -1536,7 +1672,7 @@ function views_ui_get_display_tab_details($view, $display) { if (!variable_get('views_ui_show_advanced_column', FALSE)) { $build['columns']['third']['#attributes']['class'][] = 'ctools-collapsed'; } - $build['columns']['third']['advanced'] = array('#markup' => '<h3 class="ctools-collapsible-handle">' . t('Advanced') . '</h3>',); + $build['columns']['third']['advanced'] = array('#markup' => '<h3 class="ctools-collapsible-handle"><a href="">' . t('Advanced') . '</a></h3>',); $build['columns']['third']['collapse']['#theme_wrappers'] = array('container'); $build['columns']['third']['collapse']['#attributes'] = array('class' => array('ctools-collapsible-content',),); @@ -1583,12 +1719,7 @@ function views_ui_get_display_tab_details($view, $display) { } } - // Fetch the style plugin info so we know whether to list fields or not. - $style_plugin = $display->handler->get_plugin(); - $uses_fields = $style_plugin && $style_plugin->uses_fields(); - if ($uses_fields) { - $build['columns']['first']['fields'] = views_ui_edit_form_get_bucket('field', $view, $display); - } + $build['columns']['first']['fields'] = views_ui_edit_form_get_bucket('field', $view, $display); $build['columns']['first']['filters'] = views_ui_edit_form_get_bucket('filter', $view, $display); $build['columns']['first']['sorts'] = views_ui_edit_form_get_bucket('sort', $view, $display); $build['columns']['second']['header'] = views_ui_edit_form_get_bucket('header', $view, $display); @@ -1647,7 +1778,7 @@ function template_preprocess_views_ui_display_tab_setting(&$variables) { // Put the main link to the left side array_unshift($variables['settings_links'], $variables['link']); - $variables['settings_links'] = implode('<span class="views-ajax-link"> | </span>', $variables['settings_links']); + $variables['settings_links'] = implode('<span class="label"> | </span>', $variables['settings_links']); // Add classes associated with this display tab to the overall list. $variables['classes_array'] = array_merge($variables['classes_array'], $variables['class']); @@ -1850,17 +1981,10 @@ function views_ui_import_validate($form, &$form_state) { } if (empty($view->api_version) || $view->api_version < 2) { - // Check for some value that would only exist on a Views 1 view. - if (isset($view->url) || isset($view->page) || isset($view->block)) { - views_include('convert'); - $view = views1_import($view); - drupal_set_message(t('You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2.'), 'warning'); - } - else { - form_error($form['view'], t('That view is not compatible with this version of Views.')); - } + form_error($form['view'], t('That view is not compatible with this version of Views. + If you have a view from views1 you have to go to a drupal6 installation and import it there.')); } - elseif ($view->api_version > views_api_version()) { + elseif (version_compare($view->api_version, views_api_version(), '>')) { form_error($form['view'], t('That view is created for the version @import_version of views, but you only have @api_version', array( '@import_version' => $view->api_version, '@api_version' => views_api_version()))); @@ -1880,6 +2004,9 @@ function views_ui_import_validate($form, &$form_state) { form_set_error('', t('A view by that name already exists; please choose a different name')); } + // Make sure base table gets set properly if it got moved. + $view->update(); + $view->init_display(); $broken = FALSE; @@ -1973,8 +2100,27 @@ function views_ui_edit_view_form_submit($form, &$form_state) { } } + // Direct the user to the right url, if the path of the display has changed. + if (!empty($_GET['destination'])) { + $destination = $_GET['destination']; + // Find out the first display which has a changed path and redirect to this url. + $old_view = views_get_view($form_state['view']->name); + foreach ($old_view->display as $id => $display) { + // Only check for displays with a path. + if (!isset($display->display_options['path'])) { + continue; + } + $old_path = $display->display_options['path']; + if (($display->display_plugin == 'page') && ($old_path == $destination) && ($old_path != $form_state['view']->display[$id]->display_options['path'])) { + $destination = $form_state['view']->display[$id]->display_options['path']; + unset($_GET['destination']); + } + } + $form_state['redirect'] = $destination; + } + $form_state['view']->save(); - drupal_set_message(t('The view %name has been saved.', array('%name' => $form_state['view']->name))); + drupal_set_message(t('The view %name has been saved.', array('%name' => $form_state['view']->get_human_name()))); // Make sure menu items get rebuilt as neces menu_rebuild(); @@ -2027,18 +2173,33 @@ function views_ui_edit_form_get_bucket($type, $view, $display) { ); } + $build['#name'] = $build['#title'] = $types[$type]['title']; + // Different types now have different rearrange forms, so we use this switch // to get the right one. switch ($type) { case 'filter': $rearrange_url = "admin/structure/views/nojs/rearrange-$type/$view->name/$display->id/$type"; - $rearrange_text = t('And/Or'); + $rearrange_text = t('And/Or, Rearrange'); // TODO: Add another class to have another symbol for filter rearrange. $class = 'icon compact rearrange'; break; + case 'field': + // Fetch the style plugin info so we know whether to list fields or not. + $style_plugin = $display->handler->get_plugin(); + $uses_fields = $style_plugin && $style_plugin->uses_fields(); + if (!$uses_fields) { + $build['fields'][] = array( + '#markup' => t('The selected style or row format does not utilize fields.'), + '#theme_wrappers' => array('views_container'), + '#attributes' => array('class' => array('views-display-setting')), + ); + return $build; + } + default: $rearrange_url = "admin/structure/views/nojs/rearrange/$view->name/$display->id/$type"; - $rearrange_text = t('Sort'); + $rearrange_text = t('Rearrange'); $class = 'icon compact rearrange'; } @@ -2051,7 +2212,7 @@ function views_ui_edit_form_get_bucket($type, $view, $display) { 'attributes'=> array('class' => array('icon compact add', 'views-ajax-link'), 'title' => t('Add'), 'id' => 'views-add-' . $type), 'html' => TRUE, ); - if ($count_handlers > 1) { + if ($count_handlers > 0) { $actions['rearrange'] = array( 'title' => $rearrange_text, 'href' => $rearrange_url, @@ -2059,14 +2220,6 @@ function views_ui_edit_form_get_bucket($type, $view, $display) { 'html' => TRUE, ); } - if ($count_handlers > 0) { - $actions['delete'] = array( - 'title' => t('Delete'), - 'href' => "admin/structure/views/nojs/delete-item/$view->name/$display->id/$type", - 'attributes' => array('class' => array('icon compact delete', 'views-ajax-link'), 'title' => t('delete'), 'id' => 'views-delete-' . $type), - 'html' => TRUE, - ); - } // Render the array of links $build['#actions'] = theme('links__ctools_dropbutton', @@ -2088,8 +2241,6 @@ function views_ui_edit_form_get_bucket($type, $view, $display) { } } - $build['#name'] = $build['#title'] = $types[$type]['title']; - // If there's an options form for the bucket, link to it. if (!empty($types[$type]['options'])) { $build['#title'] = l($build['#title'], "admin/structure/views/nojs/config-type/$view->name/$display->id/$type", array('attributes' => array('class' => array('views-ajax-link'), 'id' => 'views-title-' . $type))); @@ -2152,12 +2303,12 @@ function views_ui_edit_form_get_bucket($type, $view, $display) { $build['fields'][$id]['#changed'] = TRUE; } - if ($display->handler->use_group_by()) { - $build['fields'][$id]['#settings_links'][] = l('<span>' . t('Group settings') . '</span>', "admin/structure/views/nojs/config-item-group/$view->name/$display->id/$type/$id", array('attributes' => array('class' => 'views-button-configure views-ajax-link', 'title' => t('Group settings')), 'html' => true)); + if ($display->handler->use_group_by() && $handler->use_group_by()) { + $build['fields'][$id]['#settings_links'][] = l('<span class="label">' . t('Aggregation settings') . '</span>', "admin/structure/views/nojs/config-item-group/$view->name/$display->id/$type/$id", array('attributes' => array('class' => 'views-button-configure views-ajax-link', 'title' => t('Aggregation settings')), 'html' => true)); } if ($handler->has_extra_options()) { - $build['fields'][$id]['#settings_links'][] = l('<span>' . t('Settings') . '</span>', "admin/structure/views/nojs/config-item-extra/$view->name/$display->id/$type/$id", array('attributes' => array('class' => array('views-button-configure', 'views-ajax-link'), 'title' => t('Settings')), 'html' => true)); + $build['fields'][$id]['#settings_links'][] = l('<span class="label">' . t('Settings') . '</span>', "admin/structure/views/nojs/config-item-extra/$view->name/$display->id/$type/$id", array('attributes' => array('class' => array('views-button-configure', 'views-ajax-link'), 'title' => t('Settings')), 'html' => true)); } if ($grouping) { @@ -2207,9 +2358,15 @@ function views_ui_regenerate_tab(&$view, &$output, $display_id) { return; } + // Regenerate the main display area. $build = views_ui_get_display_tab($view, $display_id); views_ui_add_microweights($build); $output[] = ajax_command_html('#views-tab-' . $display_id, drupal_render($build)); + + // Regenerate the top area so changes to display names and order will appear. + $build = views_ui_render_display_top($view, $display_id); + views_ui_add_microweights($build); + $output[] = ajax_command_replace('#views-display-top', drupal_render($build)); } /** @@ -2321,14 +2478,6 @@ function views_ui_standard_form_buttons(&$form, &$form_state, $form_id, $name = if (isset($form['#url'])) { $form_state['url'] = $form['#url']; } - if (isset($form['#js'])) { - if (!empty($form_state['js settings']) && is_array($form_state['js settings'])) { - $form_state['js settings'] = array_merge($form_state['js settings'], $form['#js']); - } - else { - $form_state['js settings'] = $form['#js']; - } - } if (isset($form['#section'])) { $form_state['#section'] = $form['#section']; } @@ -2352,22 +2501,7 @@ function views_ui_standard_submit($form, &$form_state) { // Determine whether the values the user entered are intended to apply to // the current display or the default display. - // Make sure the dropdown exists in the first place. - if (isset($form_state['values']['override']['dropdown'])) { - $was_defaulted = (bool) ($form['override']['dropdown']['#default_value'] === 'defaults'); - $is_defaulted = (bool) ($form_state['values']['override']['dropdown'] === 'default'); - - if ($was_defaulted !== $is_defaulted && isset($form['#section'])) { - // We're changing which display these values apply to. - // Update the #section so it knows what to mark changed. - $form['#section'] = str_replace('default-', $form_state['display_id'] . '-', $form['#section']); - } - } - else { - // The user didn't get the dropdown for overriding the default display. - $was_defaulted = FALSE; - $is_defaulted = FALSE; - } + list($was_defaulted, $is_defaulted, $revert) = views_ui_standard_override_values($form, $form_state); // Mark the changed section of the view as changed. // TODO: Document why we are doing this, and see if we still need it. @@ -2377,23 +2511,26 @@ function views_ui_standard_submit($form, &$form_state) { // Based on the user's choice in the display dropdown, determine which display // these changes apply to. - if ($was_defaulted === $is_defaulted) { + if ($revert) { + // If it's revert just change the override and return. + $display = &$form_state['view']->display[$form_state['display_id']]; + $display->handler->options_override($form, $form_state); + + // Don't execute the normal submit handling but still store the changed view into cache. + views_ui_cache_set($form_state['view']); + return; + } + elseif ($was_defaulted === $is_defaulted) { // We're not changing which display these form values apply to. // Run the regular submit handler for this form. - $submit_handler = $form['#form_id'] . '_submit'; - if (function_exists($submit_handler)) { - $submit_handler($form, $form_state); - } } elseif ($was_defaulted && !$is_defaulted) { // We were using the default display's values, but we're now overriding // the default display and saving values specific to this display. - // TODO: Document why the regular form submit handler isn't necessary in - // this case. $display = &$form_state['view']->display[$form_state['display_id']]; + // options_override toggles the override of this section. $display->handler->options_override($form, $form_state); $display->handler->options_submit($form, $form_state); - views_ui_cache_set($form_state['view']); } elseif (!$was_defaulted && $is_defaulted) { // We used to have an override for this display, but the user now wants @@ -2401,17 +2538,43 @@ function views_ui_standard_submit($form, &$form_state) { // Overwrite the default display with the current form values, and make // the current display use the new default values. $display = &$form_state['view']->display[$form_state['display_id']]; + // options_override toggles the override of this section. $display->handler->options_override($form, $form_state); $display->handler->options_submit($form, $form_state); + } - // TODO: This is copy/paste code. Refactor. - $submit_handler = $form['#form_id'] . '_submit'; - if (function_exists($submit_handler)) { - $submit_handler($form, $form_state); - } + $submit_handler = $form['#form_id'] . '_submit'; + if (function_exists($submit_handler)) { + $submit_handler($form, $form_state); + } +} - views_ui_cache_set($form_state['view']); +/** + * Return the was_defaulted, is_defaulted and revert state of a form. + */ +function views_ui_standard_override_values($form, $form_state) { + // Make sure the dropdown exists in the first place. + if (isset($form_state['values']['override']['dropdown'])) { + // #default_value is used to determine whether it was the default value or not. + // So the available options are: $display, 'default' and 'default_revert', not 'defaults'. + $was_defaulted = ($form['override']['dropdown']['#default_value'] === 'defaults'); + $is_defaulted = ($form_state['values']['override']['dropdown'] === 'default'); + $revert = ($form_state['values']['override']['dropdown'] === 'default_revert'); + + if ($was_defaulted !== $is_defaulted && isset($form['#section'])) { + // We're changing which display these values apply to. + // Update the #section so it knows what to mark changed. + $form['#section'] = str_replace('default-', $form_state['display_id'] . '-', $form['#section']); + } } + else { + // The user didn't get the dropdown for overriding the default display. + $was_defaulted = FALSE; + $is_defaulted = FALSE; + $revert = FALSE; + } + + return array($was_defaulted, $is_defaulted, $revert); } /** @@ -2451,6 +2614,7 @@ function views_ui_standard_display_dropdown(&$form, &$form_state, $section) { // Determine whether any other displays have overrides for this section. $section_overrides = FALSE; + $section_defaulted = $current_display->handler->is_defaulted($section); foreach ($displays as $id => $display) { if ($id === 'default' || $id === $display_id) { continue; @@ -2462,6 +2626,10 @@ function views_ui_standard_display_dropdown(&$form, &$form_state, $section) { $display_dropdown['default'] = ($section_overrides ? t('All displays (except overridden)') : t('All displays')); $display_dropdown[$display_id] = t('This @display_type (override)', array('@display_type' => $current_display->display_plugin)); + // Only display the revert option if we are in a overridden section. + if (!$section_defaulted) { + $display_dropdown['default_revert'] = t('Revert to default'); + } $form['override'] = array( '#prefix' => '<div class="views-override clearfix container-inline">', @@ -2537,14 +2705,14 @@ function views_ui_ajax_forms($key = NULL) { 'form_id' => 'views_ui_rearrange_form', 'args' => array('type'), ), - 'delete-item' => array( - 'form_id' => 'views_ui_item_delete_form', - 'args' => array('type'), - ), 'rearrange-filter' => array( 'form_id' => 'views_ui_rearrange_filter_form', 'args' => array('type'), ), + 'reorder-displays' => array( + 'form_id' => 'views_ui_reorder_displays_form', + 'args' => array(), + ), 'add-item' => array( 'form_id' => 'views_ui_add_item_form', 'args' => array('type'), @@ -2569,6 +2737,10 @@ function views_ui_ajax_forms($key = NULL) { 'form_id' => 'views_ui_edit_details_form', 'args' => array(), ), + 'analyze' => array( + 'form_id' => 'views_ui_analyze_view_form', + 'args' => array(), + ), ); if ($key) { @@ -2686,7 +2858,7 @@ function views_ui_ajax_form($js, $key, $view, $display_id = '') { $form = views_ui_ajax_forms($key); if (empty($form)) { - return drupal_not_found(); + return MENU_NOT_FOUND; } views_include('ajax'); @@ -2777,38 +2949,6 @@ function views_ui_remove_display_form_restore($form, &$form_state) { views_ui_cache_set($form_state['view']); } -/** - * Page callback to display analysis information on a view. - */ -function views_ui_analyze_view($js, $view) { - $form_state = array( - 'view' => &$view, - ); - - return drupal_build_form('views_ui_analyze_view_form', $form_state); -} - -/** - * This form doesn't particularly do much; it's really just providing a link - * but a button seems like it would be nicer here. - * - * It has no submit or anything, as we will never actually submit this form - * where the form is placed. - */ -function views_ui_analyze_view_button($form, &$form_state, $view) { - $form['#action'] = url("admin/structure/views/nojs/analyze/$view->name"); - $form['#attributes'] = array('class' => array('views-ajax-form')); - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Analyze'), - '#ajax' => array( - 'path' => "admin/structure/views/ajax/analyze/$view->name", - ), - ); - - return $form; -} - /** * Form constructor callback to display analysis information on a view */ @@ -2845,6 +2985,7 @@ function views_ui_analyze_view_form_submit($form, &$form_state) { */ function views_ui_reorder_displays_form($form, &$form_state) { $view = &$form_state['view']; + $display_id = $form_state['display_id']; $form['view'] = array('#type' => 'value', '#value' => $view); @@ -2895,7 +3036,7 @@ function views_ui_reorder_displays_form($form, &$form_state) { 'limit' => 0, ); - $form['#action'] = url('admin/structure/views/nojs/reorder-displays/' . $view->name); + $form['#action'] = url('admin/structure/views/nojs/reorder-displays/' . $view->name . '/' . $display_id); views_ui_standard_form_buttons($form, $form_state, 'views_ui_reorder_displays_form'); @@ -3014,27 +3155,6 @@ function theme_views_ui_reorder_displays_form($vars) { return $output; } -/** - * This form doesn't particularly do much; it's really just providing a link - * but a button seems like it would be nicer here. - * - * It has no submit or anything, as we will never actually submit this form - * where the form is placed. - */ -function views_ui_reorder_displays_button($form, &$form_state, $view) { - $form['#action'] = url("admin/structure/views/nojs/reorder-displays/$view->name"); - $form['#attributes'] = array('class' => array('views-ajax-form')); - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Reorder'), - '#ajax' => array( - 'path' => "admin/structure/views/ajax/reorder-displays/$view->name", - ), - ); - - return $form; -} - /** * Form builder to edit details of a view. */ @@ -3057,7 +3177,7 @@ function views_ui_edit_details_form($form, &$form_state) { $form['details']['tag'] = array( '#type' => 'textfield', '#title' => t('View tag'), - '#description' => t('Enter an optional tag for this view; it is used only to help sort views on the administrative page.'), + '#description' => t('Optionally, enter a comma delimited list of tags for this view to use in filtering and sorting views on the administrative page.'), '#default_value' => $view->tag, '#autocomplete_path' => 'admin/views/ajax/autocomplete/tag', ); @@ -3133,7 +3253,7 @@ function views_ui_edit_display_form($form, &$form_state) { */ function views_ui_edit_display_form_validate($form, &$form_state) { $display = &$form_state['view']->display[$form_state['display_id']]; - $display->handler->options_validate($form, $form_state); + $display->handler->options_validate($form['options'], $form_state); if (form_get_errors()) { $form_state['rerender'] = TRUE; @@ -3784,150 +3904,6 @@ function views_ui_rearrange_filter_form_submit($form, &$form_state) { views_ui_cache_set($form_state['view']); } -/** - * Form to delete multiple items at once. - * - * @todo: All this relationship stuff is there three times. This should be abstracted out. - */ -function views_ui_item_delete_form($form, &$form_state) { - $view = &$form_state['view']; - $display_id = $form_state['display_id']; - $type = $form_state['type']; - - $types = views_object_types(); - if (!$view->set_display($display_id)) { - views_ajax_error(t('Invalid display id @display', array('@display' => $display_id))); - } - $display = &$view->display[$display_id]; - $form['#title'] = t('Delete @type', array('@type' => $types[$type]['ltitle'])); - $form['#section'] = $display_id . 'delete-item'; - - if ($display->handler->defaultable_sections($types[$type]['plural'])) { - $form_state['section'] = $types[$type]['plural']; - views_ui_standard_display_dropdown($form, $form_state, $form_state['section']); - } - - $count = 0; - - // Get relationship labels - $relationships = array(); - foreach ($display->handler->get_handlers('relationship') as $id => $handler) { - $relationships[$id] = $handler->label(); - $handlers = $display->handler->get_option('relationships'); - if ($handlers) { - foreach ($handlers as $id => $info) { - $handler = $display->handler->get_handler('relationship', $id); - $relationships[$id] = $handler->label(); - } - } - } - - // Filters can now be grouped so we do a little bit extra: - $groups = array(); - $grouping = FALSE; - if ($type == 'filter') { - $group_info = $view->display_handler->get_option('filter_groups'); - if (!empty($group_info['groups']) && count($group_info['groups']) > 1) { - $grouping = TRUE; - $groups = array(0 => array()); - } - } - - foreach ($display->handler->get_option($types[$type]['plural']) as $id => $field) { - $form['fields'][$id] = array('#tree' => TRUE); - $handler = $display->handler->get_handler($type, $id); - if ($handler) { - $name = $handler->ui_name() . ' ' . $handler->admin_summary(); - if (!empty($field['relationship']) && !empty($relationships[$field['relationship']])) { - $name = '(' . $relationships[$field['relationship']] . ') ' . $name; - } - - $form['fields'][$id]['name'] = array( - '#markup' => $name, - ); - } - else { - $form['fields'][$id]['name'] = array('#markup' => t('Broken field @id', array('@id' => $id))); - } - $form['fields'][$id]['removed'] = array( - '#type' => 'checkbox', - '#id' => 'views-removed-' . $id, - '#attributes' => array('class' => array('views-remove-checkbox')), - '#default_value' => 0, - ); - } - - $name = NULL; - if (isset($form_state['update_name'])) { - $name = $form_state['update_name']; - } - - views_ui_standard_form_buttons($form, $form_state, 'views_ui_item_delete_form'); - return $form; -} - -/** - * Submit handler for delete form - */ -function views_ui_item_delete_form_submit($form, &$form_state) { - $types = views_object_types(); - $display = &$form_state['view']->display[$form_state['display_id']]; - - $old_fields = $display->handler->get_option($types[$form_state['type']]['plural']); - $new_fields = $order = array(); - - // Make an array with the weights - foreach ($form_state['values'] as $field => $info) { - // add each value that is a field, but only if - // it has had its 'removed' checkbox checked. - if (isset($form['fields'][$field]) && empty($info['removed'])) { - $order[$field] = $field; - } - } - - // Sort the array - asort($order); - - // Create a new list of fields in the new order. - foreach (array_keys($order) as $field) { - $new_fields[$field] = $old_fields[$field]; - } - $display->handler->set_option($types[$form_state['type']]['plural'], $new_fields); - - // Store in cache - views_ui_cache_set($form_state['view']); -} - -/** - * Turn the rearrange form into a proper table - */ -function theme_views_ui_item_delete_form($variables) { - $form = $variables['form']; - - $rows = array(); - foreach (element_children($form['fields']) as $id) { - if (isset($form['fields'][$id]['name'])) { - $row = array(); - $row[] = drupal_render($form['fields'][$id]['name']); - $row[] = drupal_render($form['fields'][$id]['removed']) . l('<span>' . t('Remove') . '</span>', 'javascript:void()', array('attributes' => array('id' => 'views-remove-link-' . $id, 'class' => array('views-hidden', 'views-button-remove', 'views-remove-link'), 'alt' => t('Remove this item'), 'title' => t('Remove this item')), 'html' => TRUE)); - $rows[] = array('data' => $row, 'class' => array('draggable'), 'id' => 'views-row-' . $id); - } - } - if (empty($rows)) { - $rows[] = array(array('data' => t('No fields available.'), 'colspan' => '2')); - } - - $header = array('', t('Remove')); - $output = drupal_render($form['override']); - $output .= '<div class="scroll">'; - $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'arrange'))); - $output .= '</div>'; - $output .= drupal_render_children($form); - - return $output; -} - - /** * Form to add_item items in the views UI. */ @@ -3952,6 +3928,7 @@ function views_ui_add_item_form($form, &$form_state) { $types = views_object_types(); $ltitle = $types[$type]['ltitle']; + $section = $types[$type]['plural']; if (!empty($types[$type]['type'])) { $type = $types[$type]['type']; @@ -3960,6 +3937,10 @@ function views_ui_add_item_form($form, &$form_state) { $form['#title'] = t('Add @type', array('@type' => $ltitle)); $form['#section'] = $display_id . 'add-item'; + + // Add the display override dropdown. + views_ui_standard_display_dropdown($form, $form_state, $section); + // Figure out all the base tables allowed based upon what the relationships provide. $base_tables = $view->get_base_tables(); $options = views_fetch_fields(array_keys($base_tables), $type, $display->handler->use_group_by()); @@ -3997,6 +3978,22 @@ function views_ui_add_item_form($form, &$form_state) { $group = preg_replace('/[^a-z0-9]/', '-', strtolower($option['group'])); $groups[$group] = $option['group']; $grouped_options[$group][$key] = $option; + if (!empty($option['aliases']) && is_array($option['aliases'])) { + foreach ($option['aliases'] as $id => $alias) { + if (empty($alias['base']) || !empty($base_tables[$alias['base']])) { + $copy = $option; + $copy['group'] = $alias['group']; + $copy['title'] = $alias['title']; + if (isset($alias['help'])) { + $copy['help'] = $alias['help']; + } + + $group = preg_replace('/[^a-z0-9]/', '-', strtolower($copy['group'])); + $groups[$group] = $copy['group']; + $grouped_options[$group][$key . '$' . $id] = $copy; + } + } + } } foreach ($grouped_options as $group => $group_options) { @@ -4021,7 +4018,7 @@ function views_ui_add_item_form($form, &$form_state) { } else { $form['options']['markup'] = array( - '#markup' => '<div class="form-item">' . t('There are no @types available to add.', array('@types' => $types[$type]['ltitle'])) . '</div>', + '#markup' => '<div class="form-item">' . t('There are no @types available to add.', array('@types' => $ltitle)) . '</div>', ); } // Add a div to show the selected items @@ -4033,7 +4030,11 @@ function views_ui_add_item_form($form, &$form_state) { '#attributes' => array('class' => array('container-inline', 'views-add-form-selected')), ); ctools_include('dependent'); - views_ui_standard_form_buttons($form, $form_state, 'views_ui_add_item_form', t('Add and configure @types', array('@types' => $types[$type]['ltitle']))); + views_ui_standard_form_buttons($form, $form_state, 'views_ui_add_item_form', t('Add and configure @types', array('@types' => $ltitle))); + + // Remove the default submit function. + $form['buttons']['submit']['#submit'] = array_diff($form['buttons']['submit']['#submit'], array('views_ui_standard_submit')); + $form['buttons']['submit']['#submit'][] = 'views_ui_add_item_form_submit'; return $form; } @@ -4044,20 +4045,49 @@ function views_ui_add_item_form($form, &$form_state) { function views_ui_add_item_form_submit($form, &$form_state) { $type = $form_state['type']; $types = views_object_types(); + $section = $types[$type]['plural']; + + // Handle the override select. + list($was_defaulted, $is_defaulted) = views_ui_standard_override_values($form, $form_state); + if ($was_defaulted && !$is_defaulted) { + // We were using the default display's values, but we're now overriding + // the default display and saving values specific to this display. + $display = &$form_state['view']->display[$form_state['display_id']]; + // set_override toggles the override of this section. + $display->handler->set_override($section); + } + elseif (!$was_defaulted && $is_defaulted) { + // We used to have an override for this display, but the user now wants + // to go back to the default display. + // Overwrite the default display with the current form values, and make + // the current display use the new default values. + $display = &$form_state['view']->display[$form_state['display_id']]; + // options_override toggles the override of this section. + $display->handler->set_override($section); + } if (!empty($form_state['values']['name']) && is_array($form_state['values']['name'])) { // Loop through each of the items that were checked and add them to the view. foreach (array_keys(array_filter($form_state['values']['name'])) as $field) { list($table, $field) = explode('.', $field, 2); + + if ($cut = strpos($field, '$')) { + $field = substr($field, 0, $cut); + } $id = $form_state['view']->add_item($form_state['display_id'], $type, $table, $field); // check to see if we have group by settings - if ($form_state['view']->display_handler->use_group_by()) { + $key = $type; + // Footer,header and empty text have a different internal handler type(area). + if (isset($types[$type]['type'])) { + $key = $types[$type]['type']; + } + $handler = views_get_handler($table, $field, $key); + if ($form_state['view']->display_handler->use_group_by() && $handler->use_group_by()) { views_ui_add_form_to_stack('config-item-group', $form_state['view'], $form_state['display_id'], array($type, $id)); } // check to see if this type has settings, if so add the settings form first - $handler = views_get_handler($table, $field, $type); if ($handler && $handler->has_extra_options()) { views_ui_add_form_to_stack('config-item-extra', $form_state['view'], $form_state['display_id'], array($type, $id)); } @@ -4195,9 +4225,11 @@ function views_ui_config_item_form($form, &$form_state) { } views_ui_standard_form_buttons($form, $form_state, 'views_ui_config_item_form', $name, t('Remove'), 'remove'); - // Don't execute validations for the remove button. - $form['buttons']['remove']['#limit_validation_errors'] = array(); + // Only validate the override values, because this values are required for + // the override selection. + $form['buttons']['remove']['#limit_validation_errors'] = array(array('override')); } + return $form; } @@ -4227,9 +4259,20 @@ function views_ui_config_item_form_submit_temporary($form, &$form_state) { $type = $types[$type]['type']; } + $override = NULL; + if ($form_state['view']->display_handler->use_group_by() && !empty($item['group_type'])) { + if (empty($form_state['view']->query)) { + $form_state['view']->init_query(); + } + $aggregate = $form_state['view']->query->get_aggregation_info(); + if (!empty($aggregate[$item['group_type']]['handler'][$type])) { + $override = $aggregate[$item['group_type']]['handler'][$type]; + } + } + // Create a new handler and unpack the options from the form onto it. We // can use that for storage. - $handler = views_get_handler($item['table'], $item['field'], $type); + $handler = views_get_handler($item['table'], $item['field'], $type, $override); $handler->init($form_state['view'], $item); @@ -4244,6 +4287,11 @@ function views_ui_config_item_form_submit_temporary($form, &$form_state) { // Store the item back on the view $form_state['view']->temporary_options[$type][$form_state['id']] = $handler->options; + // @todo: Figure out whether views_ui_ajax_form is perhaps the better place to fix the issue. + // views_ui_ajax_form() drops the current form from the stack, even if it's an #ajax. + // So add the item back to the top of the stack. + views_ui_add_form_to_stack($form_state['form_key'], $form_state['view'], $form_state['display_id'], array($type, $item['id']), TRUE); + $form_state['rerender'] = TRUE; $form_state['rebuild'] = TRUE; // Write to cache @@ -4264,9 +4312,20 @@ function views_ui_config_item_form_submit($form, &$form_state) { $type = $types[$type]['type']; } + $override = NULL; + if ($form_state['view']->display_handler->use_group_by() && !empty($item['group_type'])) { + if (empty($form_state['view']->query)) { + $form_state['view']->init_query(); + } + $aggregate = $form_state['view']->query->get_aggregation_info(); + if (!empty($aggregate[$item['group_type']]['handler'][$type])) { + $override = $aggregate[$item['group_type']]['handler'][$type]; + } + } + // Create a new handler and unpack the options from the form onto it. We // can use that for storage. - $handler = views_get_handler($item['table'], $item['field'], $type); + $handler = views_get_handler($item['table'], $item['field'], $type, $override); $handler->init($form_state['view'], $item); @@ -4359,6 +4418,12 @@ function views_ui_config_item_group_form_submit($form, &$form_state) { */ function views_ui_config_item_form_remove($form, &$form_state) { // Store the item back on the view + list($was_defaulted, $is_defaulted) = views_ui_standard_override_values($form, $form_state); + // If the display selection was changed toggle the override value. + if ($was_defaulted != $is_defaulted) { + $display =& $form_state['view']->display[$form_state['display_id']]; + $display->handler->options_override($form, $form_state); + } $form_state['view']->set_item($form_state['display_id'], $form_state['type'], $form_state['id'], NULL); // Write to cache @@ -4550,6 +4615,13 @@ function views_ui_admin_settings_basic() { $form = array(); $form['#attached']['css'] = views_ui_get_admin_css(); + $options = array(); + foreach (list_themes() as $name => $theme) { + if ($theme->status) { + $options[$name] = $theme->info['name']; + } + } + // This is not currently a fieldset but we may want it to be later, // so this will make it easier to change if we do. $form['basic'] = array(); @@ -4579,6 +4651,14 @@ function views_ui_admin_settings_basic() { '#default_value' => variable_get('views_ui_show_advanced_column', FALSE), ); + $form['basic']['views_ui_custom_theme'] = array( + '#type' => 'select', + '#title' => t('Custom admin theme for the Views UI'), + '#options' => array('_default' => t('- Use default -')) + $options, + '#default_value' => variable_get('views_ui_custom_theme', '_default'), + '#description' => t('In some cases you might want to select a different admin theme for the Views UI.') + ); + $form['basic']['views_exposed_filter_any_label'] = array( '#type' => 'select', '#title' => t('Label for "Any" value on non-required single-select exposed filters'), @@ -4596,11 +4676,12 @@ function views_ui_admin_settings_basic() { '#title' => t('Automatically update preview on changes'), '#default_value' => variable_get('views_ui_always_live_preview', TRUE), ); - $form['live_preview']['views_ui_always_live_preview_button'] = array( - '#type' => 'checkbox', - '#title' => t('Always show the preview button, even the automatically update is checked.'), - '#default_value' => variable_get('views_ui_always_live_preview_button', FALSE), - ); + +// $form['live_preview']['views_ui_always_live_preview_button'] = array( +// '#type' => 'checkbox', +// '#title' => t('Always show the preview button, even when the automatically update option is checked'), +// '#default_value' => variable_get('views_ui_always_live_preview_button', FALSE), +// ); $form['live_preview']['views_ui_show_preview_information'] = array( '#type' => 'checkbox', @@ -4693,8 +4774,8 @@ function views_ui_admin_settings_advanced() { $form['debug']['views_devel_output'] = array( '#type' => 'checkbox', - '#title' => t('Enable views performance statistics via the Devel module'), - '#description' => t("Check this to enable some Views query and performance statistics <em>if Devel is installed</em>."), + '#title' => t('Enable views performance statistics/debug messages via the Devel module'), + '#description' => t("Check this to enable some Views query and performance statistics/debug messages <em>if Devel is installed</em>."), '#default_value' => variable_get('views_devel_output', FALSE), ); @@ -4706,22 +4787,41 @@ function views_ui_admin_settings_advanced() { $form['locale']['views_localization_plugin'] = array( '#type' => 'radios', '#title' => t('Translation method'), - '#options' => views_fetch_plugin_names('localization', NULL, array(), TRUE), - '#default_value' => variable_get('views_localization_plugin', 'core'), + '#options' => views_fetch_plugin_names('localization', NULL, array()), + '#default_value' => views_get_localization_plugin(), '#description' => t('Select a translation method to use for Views data like header, footer, and empty text.'), ); $regions = system_region_list(variable_get('theme_default', 'garland')); $regions['watchdog'] = t('Watchdog'); + if (module_exists('devel')) { + $regions['message'] = t('Devel message(dpm)'); + $regions['drupal_debug'] = t('Devel logging (tmp://drupal_debug.txt)'); + } $form['debug']['views_devel_region'] = array( '#type' => 'select', - '#title' => t('Page region to output performance statistics'), + '#title' => t('Page region to output performance statistics/debug messages'), '#default_value' => variable_get('views_devel_region', 'footer'), '#options' => $regions, '#dependency' => array('edit-views-devel-output' => array(1)), ); + $options = views_fetch_plugin_names('display_extender'); + if (!empty($options)) { + $form['extenders'] = array( + '#type' => 'fieldset', + ); + ; + $form['extenders']['views_display_extenders'] = array( + '#title' => t('Display extenders'), + '#default_value' => views_get_enabled_display_extenders(), + '#options' => $options, + '#type' => 'checkboxes', + '#description' => t('Select extensions of the views interface.') + ); + } + return system_settings_form($form); } @@ -4828,12 +4928,16 @@ function views_fetch_base_tables() { } function _views_sort_types($a, $b) { - if ($a['group'] != $b['group']) { - return $a['group'] < $b['group'] ? -1 : 1; + $a_group = drupal_strtolower($a['group']); + $b_group = drupal_strtolower($b['group']); + if ($a_group != $b_group) { + return $a_group < $b_group ? -1 : 1; } - if ($a['title'] != $b['title']) { - return $a['title'] < $b['title'] ? -1 : 1; + $a_title = drupal_strtolower($a['title']); + $b_title = drupal_strtolower($b['title']); + if ($a_title != $b_title) { + return $a_title < $b_title ? -1 : 1; } return 0; @@ -4894,7 +4998,7 @@ function views_fetch_fields($base, $type, $grouping = FALSE) { if (isset($info[$key]['moved to'])) { continue; } - foreach (array('title', 'group', 'help', 'base') as $string) { + foreach (array('title', 'group', 'help', 'base', 'aliases') as $string) { // First, try the lowest possible level if (!empty($info[$key][$string])) { $strings[$field][$key][$string] = $info[$key][$string]; @@ -4908,7 +5012,7 @@ function views_fetch_fields($base, $type, $grouping = FALSE) { $strings[$field][$key][$string] = $table_data['table'][$string]; } else { - if ($string != 'base') { + if ($string != 'base' && $string != 'base') { $strings[$field][$key][$string] = t("Error: missing @component", array('@component' => $string)); } } @@ -4976,6 +5080,10 @@ function theme_views_ui_style_plugin_table($variables) { 'data' => t('Default sort'), 'align' => 'center', ), + array( + 'data' => t('Hide empty column'), + 'align' => 'center', + ), ); $rows = array(); foreach (element_children($form['columns']) as $id) { @@ -5003,11 +5111,15 @@ function theme_views_ui_style_plugin_table($variables) { $row[] = ''; $row[] = ''; } + $row[] = array( + 'data' => drupal_render($form['info'][$id]['empty_column']), + 'align' => 'center', + ); $rows[] = $row; } // Add the special 'None' row. - $rows[] = array(t('None'), '', '', '', '', '', array('align' => 'center', 'data' => drupal_render($form['default'][-1]))); + $rows[] = array(t('None'), '', '', '', '', '', array('align' => 'center', 'data' => drupal_render($form['default'][-1])), ''); $output .= theme('table', array('header' => $header, 'rows' => $rows)); $output .= drupal_render_children($form); @@ -5020,7 +5132,8 @@ function theme_views_ui_style_plugin_table($variables) { * @todo Remove this function once editing the display title is possible. */ function views_ui_get_display_label($view, $display_id, $check_changed = TRUE) { - $title = $display_id == 'default' ? t('Master') : check_plain($view->display[$display_id]->display_title); + $title = $display_id == 'default' ? t('Master') : $view->display[$display_id]->display_title; + $title = views_ui_truncate($title, 25); if ($check_changed && !empty($view->changed_display[$display_id])) { $changed = '*'; @@ -5089,3 +5202,58 @@ function views_ui_default_button($element, &$form_state, $form) { $element['#attached']['js'][] = array('type' => 'setting', 'data' => $setting); return $element; } + +/** + * List all instances of fields on any views. + * + * Therefore it builds up a table of each field which is used in any view. + * + * @see field_ui_fields_list + */ +function views_ui_field_list() { + $views = views_get_all_views(); + + // Fetch all fieldapi fields which are used in views + // Therefore search in all views, displays and handler-types. + $fields = array(); + foreach ($views as $view) { + foreach ($view->display as $display_id => $display) { + if ($view->set_display($display_id)) { + foreach (views_object_types() as $type => $info) { + foreach ($view->get_items($type, $display_id) as $item) { + $data = views_fetch_data($item['table']); + if (isset($data[$item['field']]) && isset($data[$item['field']][$type]) + && $data = $data[$item['field']][$type]) { + // The final check that we have a fieldapi field now. + if (isset($data['field_name'])) { + $fields[$data['field_name']][$view->name] = $view->name; + } + } + } + } + } + } + } + + $header = array(t('Field name'), t('Used in')); + $rows = array(); + foreach ($fields as $field_name => $views) { + + $rows[$field_name]['data'][0] = check_plain($field_name); + foreach ($views as $view) { + $rows[$field_name]['data'][1][] = l($view, "admin/structure/views/view/$view"); + } + $rows[$field_name]['data'][1] = implode(', ', $rows[$field_name]['data'][1]); + } + + // Sort rows by field name. + ksort($rows); + $output = array( + '#theme' => 'table', + '#header' => $header, + '#rows' => $rows, + '#empty' => t('No fields have been used in views yet.'), + ); + + return $output; +} diff --git a/sites/all/modules/views/includes/ajax.inc b/sites/all/modules/views/includes/ajax.inc index 96cdc8dc2..4e2ad3898 100644 --- a/sites/all/modules/views/includes/ajax.inc +++ b/sites/all/modules/views/includes/ajax.inc @@ -18,7 +18,7 @@ function views_ajax() { $display_id = $_REQUEST['view_display_id']; $args = isset($_REQUEST['view_args']) && $_REQUEST['view_args'] !== '' ? explode('/', $_REQUEST['view_args']) : array(); $path = isset($_REQUEST['view_path']) ? $_REQUEST['view_path'] : NULL; - $dom_id = isset($_REQUEST['view_dom_id']) ? intval($_REQUEST['view_dom_id']) : NULL; + $dom_id = isset($_REQUEST['view_dom_id']) ? preg_replace('/[^a-zA-Z0-9_-]+/', '-', $_REQUEST['view_dom_id']) : NULL; $pager_element = isset($_REQUEST['pager_element']) ? intval($_REQUEST['pager_element']) : NULL; $commands = array(); @@ -50,23 +50,27 @@ function views_ajax() { // such as tablesorts, exposed filters and paging assume $_GET. $_GET += $_POST; + // Overwrite the destination. + // @see drupal_get_destination() + $origin_destination = $path; + $query = drupal_http_build_query($_REQUEST); + if ($query != '') { + $origin_destination .= '?' . $query; + } + $destination = &drupal_static('drupal_get_destination'); + $destination = array('destination' => $origin_destination); + // Override the display's pager_element with the one actually used. if (isset($pager_element)) { + $commands[] = views_ajax_command_scroll_top('.view-dom-id-' . $dom_id); $view->display[$display_id]->handler->set_option('pager_element', $pager_element); } // Reuse the same DOM id so it matches that in Drupal.settings. $view->dom_id = $dom_id; - $errors = $view->validate(); - if ($errors === TRUE) { - $commands[] = ajax_command_replace('.view-dom-id-' . $dom_id, $view->preview($display_id, $args)); - } - else { - foreach ($errors as $error) { - drupal_set_message($error, 'error'); - } - } + $commands[] = ajax_command_replace('.view-dom-id-' . $dom_id, $view->preview($display_id, $args)); } + drupal_alter('views_ajax_data', $commands, $view); return array('#type' => 'ajax', '#commands' => $commands); } } @@ -148,6 +152,20 @@ function views_ajax_command_add_tab($id, $title, $body) { return $command; } +/** + * Scroll to top of the current view. + * + * @return + * An array suitable for use with the ajax_render() function. + */ +function views_ajax_command_scroll_top($selector) { + $command = array( + 'command' => 'viewsScrollTop', + 'selector' => $selector, + ); + return $command; +} + /** * Shows Save and Cancel buttons. * @@ -246,9 +264,6 @@ function views_ajax_form_wrapper($form_id, &$form_state) { $url = empty($form_state['url']) ? url($_GET['q'], array('absolute' => TRUE)) : $form_state['url']; $commands[] = views_ajax_command_set_form($display, $title, $url); - if (!empty($form_state['js settings'])) { - $commands[] = ajax_command_settings($form_state['js settings']); - } if (!empty($form_state['#section'])) { $commands[] = views_ajax_command_hilite('.' . drupal_clean_css_identifier($form_state['#section'])); @@ -270,10 +285,10 @@ function views_ajax_form_wrapper($form_id, &$form_state) { * Page callback for views user autocomplete */ function views_ajax_autocomplete_user($string = '') { - // The user enters a comma-separated list of tags. We only autocomplete the last tag. + // The user enters a comma-separated list of user name. We only autocomplete the last name. $array = drupal_explode_tags($string); - // Fetch last tag + // Fetch last name $last_string = trim(array_pop($array)); $matches = array(); if ($last_string != '') { @@ -282,19 +297,21 @@ function views_ajax_autocomplete_user($string = '') { if (strpos('anonymous', strtolower($last_string)) !== FALSE) { $matches[$prefix . 'Anonymous'] = 'Anonymous'; } - $result = db_query_range("SELECT name FROM {users} WHERE name = :string", - 0, 1, - array( - ':string' => $last_string - )); + + $result = db_select('users', 'u') + ->fields('u', array('uid', 'name')) + ->condition('u.name', db_like($last_string) . '%', 'LIKE') + ->range(0, 10) + ->execute() + ->fetchAllKeyed(); foreach ($result as $account) { - $n = $account->name; + $n = $account; // Commas and quotes in terms are special cases, so encode 'em. - if (strpos($account->name, ',') !== FALSE || strpos($account->name, '"') !== FALSE) { - $n = '"' . str_replace('"', '""', $account->name) . '"'; + if (strpos($account, ',') !== FALSE || strpos($account, '"') !== FALSE) { + $n = '"' . str_replace('"', '""', $account) . '"'; } - $matches[$prefix . $n] = check_plain($account->name); + $matches[$prefix . $n] = check_plain($account); } } @@ -337,7 +354,7 @@ function views_ajax_autocomplete_taxonomy($vid, $tags_typed = '') { ->execute() ->fetchAllKeyed(); - $prefix = count($tags_typed) ? implode(', ', $tags_typed) . ', ' : ''; + $prefix = count($tags_typed) ? drupal_implode_tags($tags_typed) . ', ' : ''; $term_matches = array(); foreach ($tags_return as $tid => $name) { @@ -346,9 +363,8 @@ function views_ajax_autocomplete_taxonomy($vid, $tags_typed = '') { if (strpos($name, ',') !== FALSE || strpos($name, '"') !== FALSE) { $n = '"' . str_replace('"', '""', $name) . '"'; } - else { - $term_matches[$prefix . $n] = check_plain($name); - } + // Add term name to list of matches. + $term_matches[$prefix . $n] = check_plain($name); } } diff --git a/sites/all/modules/views/includes/analyze.inc b/sites/all/modules/views/includes/analyze.inc index 725aed91f..df7b74342 100644 --- a/sites/all/modules/views/includes/analyze.inc +++ b/sites/all/modules/views/includes/analyze.inc @@ -102,7 +102,20 @@ function views_ui_views_analyze($view) { if (count($view->display) < 2) { $ret[] = views_ui_analysis(t('This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display.'), 'warning'); } + // You can give a page display the same path as an alias existing in the + // system, so the alias will not work anymore. Report this to the user, + // because he probably wanted something else. + foreach ($view->display as $id => $display) { + if (empty($display->handler)) { + continue; + } + if ($display->handler->has_path() && $path = $display->handler->get_option('path')) { + $normal_path = drupal_get_normal_path($path); + if ($path != $normal_path) { + $ret[] = views_ui_analysis(t('You have configured display %display with a path which is an path alias as well. This might lead to unwanted effects so better use an internal path.', array('%display' => $display->display_title)), 'warning'); + } + } + } return $ret; } - diff --git a/sites/all/modules/views/includes/base.inc b/sites/all/modules/views/includes/base.inc index d53fd8655..b5d09a41f 100644 --- a/sites/all/modules/views/includes/base.inc +++ b/sites/all/modules/views/includes/base.inc @@ -13,14 +13,21 @@ class views_object { * Except for displays, options for the object will be held here. */ var $options = array(); - + /** * The top object of a view. - * + * * @var view */ var $view = NULL; + /** + * Handler's definition + * + * @var array + */ + var $definition; + /** * Information about options for all kinds of purposes will be held here. * @code @@ -128,11 +135,7 @@ class views_object { continue; } - $this->unpack_options($storage[$key], $value, isset($definition[$key]['contains']) ? $definition[$key]['contains'] : array(), $all, FALSE); - } - elseif (!empty($definition[$key]['translatable']) && !empty($value)) { - $storage[$key] = t($value); - $this->unpack_options($storage[$key], array(), isset($definition[$key]['contains']) ? $definition[$key]['contains'] : array(), $all, FALSE, array_merge($localization_keys, array($key))); + $this->unpack_options($storage[$key], $value, isset($definition[$key]['contains']) ? $definition[$key]['contains'] : array(), $all, FALSE, array_merge($localization_keys, array($key))); } // Don't localize strings during editing. When editing, we need to work with // the original data, not the translated version. @@ -142,10 +145,14 @@ class views_object { // sent for translation. // The $keys array is built from the view name, any localization keys // sent in, and the name of the property being processed. + $format = NULL; + if (isset($definition[$key]['format_key']) && isset($options[$definition[$key]['format_key']])) { + $format = $options[$definition[$key]['format_key']]; + } $translation_data = array( - 'value' => $value, - 'format' => isset($options[$key . '_format']) ? $options[$key . '_format'] : NULL, - 'keys' => array_merge(array($this->view->name), $localization_keys, array($key)), + 'value' => $value, + 'format' => $format, + 'keys' => array_merge(array($this->view->name), $localization_keys, array($key)), ); $storage[$key] = $this->view->localization_plugin->translate($translation_data); } @@ -258,7 +265,7 @@ class views_object { * This function run's through all suboptions recursive. * * @param $translatable - * Stores all availible translatable items. + * Stores all available translatable items. * @param $storage * @param $option * @param $definition @@ -303,10 +310,14 @@ class views_object { } else if (!empty($definition[$key]['translatable']) && !empty($value)) { // Build source data and add to the array + $format = NULL; + if (isset($definition['format_key']) && isset($options[$definition['format_key']])) { + $format = $options[$definition['format_key']]; + } $translatable[] = array( 'value' => $value, 'keys' => $translation_keys, - 'format' => isset($options[$key . '_format']) ? $options[$key . '_format'] : NULL, + 'format' => $format, ); } } @@ -314,9 +325,14 @@ class views_object { else if (!empty($definition['translatable']) && !empty($options)) { $value = $options; // Build source data and add to the array + $format = NULL; + if (isset($definition['format_key']) && isset($storage[$definition['format_key']])) { + $format = $options[$definition['format_key']]; + } $translatable[] = array( 'value' => $value, 'keys' => isset($translation_keys) ? $translation_keys : $parents, + 'format' => $format, ); } } diff --git a/sites/all/modules/views/includes/cache.inc b/sites/all/modules/views/includes/cache.inc index aad87845a..b2fe7d841 100644 --- a/sites/all/modules/views/includes/cache.inc +++ b/sites/all/modules/views/includes/cache.inc @@ -32,6 +32,7 @@ function _views_fetch_data($table = NULL, $move = TRUE, $reset = FALSE) { $function = $module . '_views_data_alter'; $function($cache); } + _views_data_process_entity_types($cache); views_cache_set('views_data', $cache, TRUE); } @@ -62,6 +63,27 @@ function _views_fetch_data($table = NULL, $move = TRUE, $reset = FALSE) { return array(); } +/** + * Links tables having an 'entity type' specified to the respective generic entity-type tables. + */ +function _views_data_process_entity_types(&$data) { + foreach ($data as $table_name => $table_info) { + // Add in a join from the entity-table if an entity-type is given. + if (!empty($table_info['table']['entity type'])) { + $entity_table = 'views_entity_' . $table_info['table']['entity type']; + + $data[$entity_table]['table']['join'][$table_name] = array( + 'left_table' => $table_name, + ); + $data[$entity_table]['table']['entity type'] = $table_info['table']['entity type']; + // Copy over the default table group if we have none yet. + if (!empty($table_info['table']['group']) && empty($data[$entity_table]['table']['group'])) { + $data[$entity_table]['table']['group'] = $table_info['table']['group']; + } + } + } +} + /** * Fetch the plugin data from cache. */ diff --git a/sites/all/modules/views/includes/convert.inc b/sites/all/modules/views/includes/convert.inc deleted file mode 100644 index 4ad145f8c..000000000 --- a/sites/all/modules/views/includes/convert.inc +++ /dev/null @@ -1,551 +0,0 @@ -<?php -/** - * @file convert.inc - * - * Contains forms and routines to convert older views to newer views. - */ - -/** - * Page callback for the tools - Views 1 convert page - */ -function views_ui_admin_convert() { - if (!db_table_exists('view_view')) { - return t('There are no Views 1 views stored in the database to convert.'); - } - $items = array(); - $sorts = array(); - - $header = array( - array('data' => t('View name'), 'field' => 'name', 'sort' => 'asc'), - array('data' => t('Description')), - array('data' => t('Operations')), - ); - $current_views = views_get_all_views(); - - $result = db_query("SELECT v.* FROM {view_view} v"); - foreach ($result as $view) { - $ops = array(); - if (!isset($current_views[$view->name])) { - $ops[] = l(t('Convert'), "admin/structure/views1/convert/$view->name"); - } - else { - $ops[] = t('Converted'); - } - $ops[] = l(t('Delete'), "admin/structure/views1/delete/$view->name"); - - $item = array(); - $item[] = check_plain($view->name); - $item[] = check_plain($view->description); - $item[] = implode(' | ', $ops); - $items[] = $item; - - $ts = tablesort_init($header); - switch ($ts['sql']) { - case 'name': - default: - $sorts[] = $item[0]; - break; - case 'title': - $sorts[] = $item[1]; - break; - } - } - - if (!empty($ts)) { - if (strtolower($ts['sort']) == 'desc') { - arsort($sorts); - } - else { - asort($sorts); - } - } - - $i = array(); - foreach ($sorts as $id => $title) { - $i[] = $items[$id]; - } - $output = t('The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name.'); - $output .= theme('table', array('header' => $header, 'rows' => $i)); - - $output .= drupal_get_form('views_ui_convert_cleanup_form'); - return $output; -} - -/** - * Provide form to clean up Views 1 tables. - */ -function views_ui_convert_cleanup_form() { - $form['verify'] = array( - '#type' => 'checkbox', - '#title' => t('Remove all Views 1 tables'), - '#description' => t('Check this box and then click clean up to drop all Views 1 tables. Warning: this operation will not be reversible! Do this only if you are sure you no longer need this data.'), - '#required' => TRUE, - ); - - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Clean up'), - ); - - return $form; -} - -function views_ui_convert_cleanup_form_submit($form, $form_state) { - if (empty($form_state['values']['verify'])) { - drupal_set_message('Please check the box to verify you want to destroy your Views 1 table data.'); - return; - } - - $ret = array(); - if (db_table_exists('view_view')) { - db_drop_table($ret, 'view_view'); - } - if (db_table_exists('view_sort')) { - db_drop_table($ret, 'view_sort'); - } - if (db_table_exists('view_argument')) { - db_drop_table($ret, 'view_argument'); - } - if (db_table_exists('view_tablefield')) { - db_drop_table($ret, 'view_tablefield'); - } - if (db_table_exists('view_filter')) { - db_drop_table($ret, 'view_filter'); - } - if (db_table_exists('view_exposed_filter')) { - db_drop_table($ret, 'view_exposed_filter'); - } - - drupal_set_message(t('All Views 1 tables have been removed.')); -} - -/** - * Page callback for the tools - Views 1 convert page - */ -function views_ui_convert1($name) { - $old = views1_load($name); - if (!$old) { - return t('Unable to find view.'); - } - - $view = views1_import($old); - - if ($view) { - views_ui_cache_set($view); - drupal_goto('admin/structure/views/edit/' . $view->name); - } - else { - return t('Unable to convert view.'); - } -} - -/** - * Page to delete a Views 1 view. - */ -function views_ui_delete1_confirm($form, &$form_state, $vid) { - $form_state['vid'] = $vid; - $form = array(); - - $cancel = 'admin/structure/views/tools/convert'; - if (!empty($_REQUEST['cancel'])) { - $cancel = $_REQUEST['cancel']; - } - return confirm_form($form, - t('Are you sure you want to delete the view %name?', array('%name' => $view->name)), - $cancel, - t('This action cannot be undone.'), - t('Delete'), - t('Cancel')); -} - -/** - * Submit handler to delete a view. - */ -function views_ui_delete1_confirm_submit(&$form, &$form_state) { - views1_delete($form_state['vid']); - drupal_set_message(t('The view has been deleted')); - $form_state['redirect'] = 'admin/structure/views/tools/convert'; -} - -/** - * Convert a Views 1 view to a Views 2 view. - */ -function views1_import($imported) { - $view = views_new_view(); - - $view->name = $imported->name; - $view->description = $imported->description; - - if (!empty($imported->page) && !empty($imported->url)) { - $page_display = $view->add_display('page'); - } - if (!empty($imported->block)) { - $block_display = $view->add_display('block'); - } - $view->init_display(); - - $handler = &$view->display['default']->handler; - $handler->set_option('title', $imported->page_title); - $handler->set_option('header', $imported->page_header); - $handler->set_option('header_format', $imported->page_header_format); - $handler->set_option('footer', $imported->page_footer); - $handler->set_option('footer_format', $imported->page_footer_format); - $handler->set_option('empty', $imported->page_empty); - $handler->set_option('empty_format', $imported->page_empty_format); - - $handler->set_option('use_pager', $imported->use_pager); - $handler->set_option('items_per_page', $imported->nodes_per_page); - $handler->set_option('pager_element', 0); - $handler->set_option('offset', 0); - - $access = array('type' => 'none', 'role' => array(), 'perm' => ''); - if ($imported->access) { - $access['type'] = 'role'; - $access['role'] = drupal_map_assoc($imported->access); - } - - $handler->set_option('access', $access); - if (!empty($imported->page) && !empty($imported->url)) { - $handler = &$view->display[$page_display]->handler; - $url = str_replace('$arg', '%', $imported->url); - $handler->set_option('path', $url); - if ($imported->menu) { - $menu = array('type' => 'normal'); - if ($imported->menu_tab) { - $menu['type'] = 'tab'; - } - if ($imported->menu_tab_default) { - $menu['type'] = 'default tab'; - } - $menu['title'] = $imported->menu_title ? $imported->menu_title : $imported->page_title; - $handler->set_option('menu', $menu); - - if ($menu['type'] == 'default tab') { - $tab_options = array('type' => 'none'); - switch ($imported->menu_tab_default_parent_type) { - case 'tab': - case 'normal': - $tab_options['type'] = $imported->menu_tab_default_parent_type; - break; - } - } - $tab_options['title'] = $imported->menu_parent_title; - $tab_options['weight'] = $imported->menu_parent_tab_weight; - $handler->set_option('tab_options', $tab_options); - } - } - - views1_convert_style($view, $handler, $imported->page_type); - - if (!empty($imported->block)) { - $handler = &$view->display[$block_display]->handler; - - if (!empty($imported->block_title)) { - if (!empty($imported->page)) { - $handler->set_override('title'); - } - $handler->set_option('title', $imported->block_title); - } - - if (!empty($imported->page)) { - $handler->set_override('use_pager'); - } - $handler->set_option('use_pager', FALSE); - - if ($imported->nodes_per_block != $imported->nodes_per_page) { - $handler->set_option('items_per_page', $imported->nodes_per_block); - $handler->set_option('offset', 0); - } - - if (empty($imported->block_use_page_header)) { - if (!empty($imported->page)) { - $handler->set_override('header'); - } - if (!empty($imported->block_header)) { - $handler->set_option('header', $imported->block_header); - $handler->set_option('header_format', $imported->block_header_format); - } - } - if (empty($imported->block_use_page_footer)) { - if (!empty($imported->page)) { - $handler->set_override('footer'); - } - if (!empty($imported->block_footer)) { - $handler->set_option('footer', $imported->block_footer); - $handler->set_option('footer_format', $imported->block_footer_format); - } - } - if (empty($imported->block_use_page_empty)) { - if (!empty($imported->page)) { - $handler->set_override('empty'); - } - if (!empty($imported->block_empty)) { - $handler->set_option('empty', $imported->block_empty); - $handler->set_option('empty_format', $imported->block_empty_format); - } - } - - $handler->set_option('use_more', $imported->block_more); - - if (!empty($imported->page)) { - $handler->set_override('style_plugin'); - } - views1_convert_style($view, $handler, $imported->block_type); - } - - // For each of the fields, arguments, filters, and sorts in the old view, - // check if a handler for this item exists in Views 2 and add it, - // then see if any other modules want to adapt it using hook_views_convert(). - - foreach ($imported->field as $field) { - $id = $view->add_item('default', 'field', $field['tablename'], $field['field'], array('label' => $field['label'])); - if ($view->display_handler->get_option('style_plugin') == 'table') { - $options = $view->display_handler->get_option('style_options'); - if (!empty($field['sortable'])) { - $options['info'][$id]['sortable'] = TRUE; - if (!empty($field['defaultsort'])) { - $options['default'] = $id; - } - } - $view->display_handler->set_option('style_options', $options); - } - foreach (module_implements('views_convert') as $module) { - module_invoke($module, 'views_convert', 'default', 'field', $view, $field, $id); - } - } - foreach ($imported->sort as $field) { - $id = $view->add_item('default', 'sort', $field['tablename'], $field['field'], array('order' => $field['sortorder'])); - foreach (module_implements('views_convert') as $module) { - module_invoke($module, 'views_convert', 'default', 'sort', $view, $field, $id); - } - } - $actions = array('ignore', 'not found', 'ignore', 'summary asc', 'summary asc', 'summary desc', 'summary asc', 'empty'); - foreach ($imported->argument as $id => $field) { - if (!empty($imported->view_args_php)) { - $field['argoptions']['default_action'] = 'default'; - $field['argoptions']['default_argument_type'] = 'php'; - $field['argoptions']['default_argument_php'] = '$args = eval(\''. str_replace("'", "\\'", $imported->view_args_php) .'\');'."\n"; - $field['argoptions']['default_argument_php'] .= 'if (isset($args['. $field['position'] .'])) {'."\n"; - $field['argoptions']['default_argument_php'] .= ' return $args['. $field['position'] .'];'."\n"; - $field['argoptions']['default_argument_php'] .= '}'; - $field['argoptions']['validate_fail'] = $actions[$field['argdefault']]; - } - else { - $field['argoptions']['default_action'] = $actions[$field['argdefault']]; - } - if (!empty($field['title'])) { - $field['argoptions']['title'] = $field['title']; - } - if (!empty($field['wildcard'])) { - $field['argoptions']['wildcard'] = $field['wildcard']; - } - if (!empty($field['wildcard_substitution'])) { - $field['argoptions']['wildcard_substitution'] = $field['wildcard_substitution']; - } - // Arguments didn't used to be identified by table.name so we just have to - // leave that out. - foreach (module_implements('views_convert') as $module) { - module_invoke($module, 'views_convert', 'default', 'argument', $view, $field, NULL); - } - } - foreach ($imported->filter as $field) { - $options = $field['value'] == '' ? array() : array('value' => $field['value']); - $id = $view->add_item('default', 'filter', $field['tablename'], $field['field'], $options); - foreach (module_implements('views_convert') as $module) { - module_invoke($module, 'views_convert', 'default', 'filter', $view, $field, $id); - } - } - // Exposed filters now get added to the filter array, not as a separate array. - $count = 0; - foreach ($imported->exposed_filter as $field) { - list(, $id) = explode('.', $field['field'], 2); - $item = $view->get_item('default', 'filter', $id); - if (views_get_handler($item['table'], $item['field'], 'filter')) { - $item['exposed'] = TRUE; - - // Use the count to emulate the old, hardcoded filter naming. - $item['expose']['identifier'] = 'filter' . $count; - $item['expose']['label'] = $field['label']; - $item['expose']['operator_id'] = $field['operator'] ? 'op' . $count : ''; - $item['expose']['optional'] = $field['optional']; - $item['expose']['single'] = $field['single']; - $view->set_item('default', 'filter', $id, $item); - } - $count++; - foreach (module_implements('views_convert') as $module) { - module_invoke($module, 'views_convert', 'default', 'exposed_filter', $view, $field, $id); - } - } - - return $view; -} - -function views1_convert_style(&$view, &$handler, $type) { - switch ($type) { - case 'list': - $handler->set_option('style_plugin', 'list'); - $handler->set_option('style_options', array('type' => 'ul')); - $handler->set_option('row_plugin', 'fields'); - break; - case 'node': - $handler->set_option('row_plugin', 'node'); - $handler->set_option('row_options', array('teaser' => FALSE, 'links' => TRUE)); - break; - case 'teaser': - $handler->set_option('row_plugin', 'node'); - $handler->set_option('row_options', array('teaser' => TRUE, 'links' => TRUE)); - break; - case 'table': - $options = array(); - $options['columns'] = array(); - $options['default'] = ''; - $options['info'] = array(); - $options['override'] = FALSE; - $options['order'] = 'asc'; - - $handler->set_option('style_plugin', 'table'); - $handler->set_option('style_options', $options); - break; - default: - // Ask around if anybody else knows. - foreach (module_implements('views_convert') as $module) { - module_invoke($module, 'views_convert', $handler->display->id, 'style', $view, $type); - } - } -} -/** - * Load a version 1 view from the database. - * - */ -function views1_load($arg) { - static $cache = array(); - $which = is_numeric($arg) ? 'vid' : 'name'; - if (isset($cache[$which][$arg])) { - return $cache[$which][$arg]; - } - - $where = (is_numeric($arg) ? "v.vid = %d" : "v.name = '%s'"); - $view = db_fetch_object(db_query("SELECT v.* FROM {view_view} v WHERE $where", $arg)); - - if (!$view->name) { - return NULL; - } - - $view->access = ($view->access ? explode(', ', $view->access) : array()); - - // load the sorting criteria too. - $result = db_query("SELECT * FROM {view_sort} vs WHERE vid = $view->vid ORDER BY position ASC"); - - $view->sort = array(); - while ($sort = db_fetch_array($result)) { - if (substr($sort['field'], 0, 2) == 'n.') { - $sort['field'] = 'node' . substr($sort['field'], 1); - } - $sort['id'] = $sort['field']; - $bits = explode('.', $sort['field']); - $sort['tablename'] = $bits[0]; - $sort['field'] = $bits[1]; - $view->sort[$sort['position']] = $sort; - } - - $result = db_query("SELECT * FROM {view_argument} WHERE vid = $view->vid ORDER BY position ASC"); - - $view->argument = array(); - while ($arg = db_fetch_array($result)) { - $arg['id'] = $arg['type']; - $view->argument[$arg['position']] = $arg; - } - - $result = db_query("SELECT * FROM {view_tablefield} WHERE vid = $view->vid ORDER BY position ASC"); - - $view->field = array(); - while ($arg = db_fetch_array($result)) { - if ($arg['tablename'] == 'n') { - $arg['tablename'] = 'node'; - } - $arg['id'] = $arg['fullname'] = "$arg[tablename].$arg[field]"; - $arg['queryname'] = "$arg[tablename]_$arg[field]"; - $view->field[] = $arg; - } - - $result = db_query("SELECT * FROM {view_filter} WHERE vid = $view->vid ORDER BY position ASC"); - - // TODO - Is it safe to ignore this $filters variable? This function depends - // on lots of additional code needed to call hook_implements and construct - // all the views tables, so using it will add a lot of code to this file. - //$filters = _views_get_filters(); - $view->filter = array(); - while ($filter = db_fetch_array($result)) { - if (substr($filter['field'], 0, 2) == 'n.') { - $filter['field'] = 'node' . substr($filter['field'], 1); - } - - if ($filter['operator'] == 'AND' || - $filter['operator'] == 'OR' || - $filter['operator'] == 'NOR') { - // TODO - need another way to identify this type of filter - // without being able to call hook_implements(). - //|| $filters[$filter['field']]['value-type'] == 'array' ) { - if ($filter['value'] !== NULL && $filter['value'] !== '') { - $filter['value'] = explode(',', $filter['value']); - } - else { - $filter['value'] = array(); - } - } - $filter['id'] = $filter['field']; - $bits = explode('.', $filter['field']); - $filter['tablename'] = $bits[0]; - $filter['field'] = $bits[1]; - $view->filter[$filter['position']] = $filter; - } - - $result = db_query("SELECT * FROM {view_exposed_filter} WHERE vid = $view->vid ORDER BY position ASC"); - - $view->exposed_filter = array(); - while ($arg = db_fetch_array($result)) { - $arg['id'] = $arg['field']; - $view->exposed_filter[] = $arg; - } - - $cache['vid'][$view->vid] = $view; - $cache['name'][$view->name] = $view; - - return $view; -} - -/** - * Delete a version 1 view from the database. - * - */ -function views1_delete($arg) { - static $cache = array(); - $where = (is_numeric($arg) ? "v.vid = %d" : "v.name = '%s'"); - $view = db_fetch_object(db_query("SELECT v.* FROM {view_view} v WHERE $where", $arg)); - - if (!$view->name) { - return NULL; - } - - - - db_delete('view_sort') - ->condition('vid', $view->vid) - ->execute(); - db_delete('view_argument') - ->condition('vid', $view->vid) - ->execute(); - db_delete('view_tablefield') - ->condition('vid', $view->vid) - ->execute(); - db_delete('view_filter') - ->condition('vid', $view->vid) - ->execute(); - db_delete('view_exposed_filter') - ->condition('vid', $view->vid) - ->execute(); - db_delete('view_view') - ->condition('vid', $view->vid) - ->execute(); -} - diff --git a/sites/all/modules/views/includes/handlers.inc b/sites/all/modules/views/includes/handlers.inc index 3c5633ccc..35484f959 100644 --- a/sites/all/modules/views/includes/handlers.inc +++ b/sites/all/modules/views/includes/handlers.inc @@ -101,7 +101,7 @@ function views_get_table_join($table, $base_table) { } // DEBUG -- identify missing handlers - vpr("Missing join: $table $base_table"); + vpr("Missing join: @table @base_table", array('@table' => $table, '@base_table' => $base_table)); } /** @@ -145,6 +145,16 @@ class views_handler extends views_object { */ var $query = NULL; + /** + * The type of the handler, for example filter/footer/field. + */ + var $handler_type = NULL; + + /** + * The alias of the table of this handler which is used in the query. + */ + public $table_alias; + /** * init the handler with necessary data. * @param $view @@ -182,7 +192,7 @@ class views_handler extends views_object { $display_id, $this->handler_type, $options['table'], - $options['field'] + $options['id'] ); $this->unpack_options($this->options, $options); @@ -254,6 +264,7 @@ class views_handler extends views_object { // If grouping, check to see if the aggregation method needs to modify the field. if ($this->view->display_handler->use_group_by()) { + $this->view->init_query(); $info = $this->query->get_aggregation_info(); if (!empty($info[$this->options['group_type']]['method']) && function_exists($info[$this->options['group_type']]['method'])) { return $info[$this->options['group_type']]['method']($this->options['group_type'], $field); @@ -263,21 +274,6 @@ class views_handler extends views_object { return $field; } - /** - * Get the value that's supposed to be rendered. - * - * @param $values - * An object containing all retrieved values. - * @param $field - * Optional name of the field where the value is stored. - */ - function get_value($values, $field = NULL) { - $alias = isset($field) ? $this->aliases[$field] : $this->field_alias; - if (isset($values->{$alias})) { - return $values->{$alias}; - } - } - /** * Sanitize the value for output. * @@ -301,6 +297,43 @@ class views_handler extends views_object { return $value; } + /** + * Transform a string by a certain method. + * + * @param $string + * The input you want to transform. + * @param $option + * How do you want to transform it, possible values: + * - upper: Uppercase the string. + * - lower: lowercase the string. + * - ucfirst: Make the first char uppercase. + * - ucwords: Make each word in the string uppercase. + * + * @return string + * The transformed string. + */ + function case_transform($string, $option) { + global $multibyte; + + switch ($option) { + default: + return $string; + case 'upper': + return drupal_strtoupper($string); + case 'lower': + return drupal_strtolower($string); + case 'ucfirst': + return drupal_strtoupper(drupal_substr($string, 0, 1)) . drupal_substr($string, 1); + case 'ucwords': + if ($multibyte == UNICODE_MULTIBYTE) { + return mb_convert_case($string, MB_CASE_TITLE); + } + else { + return ucwords($string); + } + } + } + /** * Validate the options form. */ @@ -333,6 +366,8 @@ class views_handler extends views_object { '#collapsed' => TRUE, '#weight' => 150, ); + // Allow to alter the default values brought into the form. + drupal_alter('views_handler_options', $this->options, $view); } /** @@ -342,7 +377,13 @@ class views_handler extends views_object { function options_submit(&$form, &$form_state) { } /** - * Provide a form for groupby settings. + * Provides the handler some groupby. + */ + function use_group_by() { + return TRUE; + } + /** + * Provide a form for aggregation settings. */ function groupby_form(&$form, &$form_state) { $view = &$form_state['view']; @@ -352,10 +393,11 @@ class views_handler extends views_object { $id = $form_state['id']; $form['#title'] = check_plain($view->display[$display_id]->display_title) . ': '; - $form['#title'] .= t('Configure group settings for @type %item', array('@type' => $types[$type]['lstitle'], '%item' => $this->ui_name())); + $form['#title'] .= t('Configure aggregation settings for @type %item', array('@type' => $types[$type]['lstitle'], '%item' => $this->ui_name())); $form['#section'] = $display_id . '-' . $type . '-' . $id; + $view->init_query(); $info = $view->query->get_aggregation_info(); foreach ($info as $id => $aggregate) { $group_types[$id] = $aggregate['title']; @@ -363,9 +405,9 @@ class views_handler extends views_object { $form['group_type'] = array( '#type' => 'select', - '#title' => t('Group type'), + '#title' => t('Aggregation type'), '#default_value' => $this->options['group_type'], - '#description' => t('Select the grouping function to use on this field.'), + '#description' => t('Select the aggregation function to use on this field.'), '#options' => $group_types, ); } @@ -506,6 +548,15 @@ class views_handler extends views_object { */ function pre_query() { } + /** + * Run after the view is executed, before the result is cached. + * + * This gives all the handlers some time to modify values. This is primarily + * used so that handlers that pull up secondary data can put it in the + * $values so that the raw data can be utilized externally. + */ + function post_execute(&$values) { } + /** * Provides a unique placeholders for handlers. */ @@ -549,7 +600,10 @@ class views_handler extends views_object { */ function ensure_my_table() { if (!isset($this->table_alias)) { - if (!method_exists($this->query, 'ensure_table')) { vpr_trace(); exit; } + if (!method_exists($this->query, 'ensure_table')) { + vpr(t('Ensure my table called but query has no ensure_table method.')); + return; + } $this->table_alias = $this->query->ensure_table($this->table, $this->relationship); } return $this->table_alias; @@ -659,6 +713,7 @@ class views_many_to_one_helper { '#title' => t('Reduce duplicates'), '#description' => t('This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution. Shouldn\'t be set on single-value fields, as it may cause values to disappear from display, if used on an incompatible field.'), '#default_value' => !empty($this->handler->options['reduce_duplicates']), + '#weight' => 4, ); } @@ -686,7 +741,7 @@ class views_many_to_one_helper { */ function add_table($join = NULL, $alias = NULL) { // This is used for lookups in the many_to_one table. - $field = $this->handler->table . '.' . $this->handler->field; + $field = $this->handler->relationship . '_' . $this->handler->table . '.' . $this->handler->field; if (empty($join)) { $join = $this->get_join(); @@ -739,7 +794,7 @@ class views_many_to_one_helper { * it will cooperate with other arguments if possible. */ function summary_join() { - $field = $this->handler->table . '.' . $this->handler->field; + $field = $this->handler->relationship . '_' . $this->handler->table . '.' . $this->handler->field; $join = $this->get_join(); // shortcuts @@ -777,14 +832,17 @@ class views_many_to_one_helper { */ function ensure_my_table() { if (!isset($this->handler->table_alias)) { - // For 'or' if we're not reducing duplicates, we get the absolute simplest: - $field = $this->handler->table . '.' . $this->handler->field; + // Case 1: Operator is an 'or' and we're not reducing duplicates. + // We hence get the absolute simplest: + $field = $this->handler->relationship . '_' . $this->handler->table . '.' . $this->handler->field; if ($this->handler->operator == 'or' && empty($this->handler->options['reduce_duplicates'])) { if (empty($this->handler->options['add_table']) && empty($this->handler->view->many_to_one_tables[$field])) { // query optimization, INNER joins are slightly faster, so use them // when we know we can. $join = $this->get_join(); - $join->type = 'INNER'; + if (isset($join)) { + $join->type = 'INNER'; + } $this->handler->table_alias = $this->handler->query->ensure_table($this->handler->table, $this->handler->relationship, $join); $this->handler->view->many_to_one_tables[$field] = $this->handler->value; } @@ -810,8 +868,9 @@ class views_many_to_one_helper { return $this->handler->table_alias; } + // Case 2: it's an 'and' or an 'or'. + // We do one join per selected value. if ($this->handler->operator != 'not') { - // If it's an and or an or, we do one join per selected value. // Clone the join for each table: $this->handler->table_aliases = array(); foreach ($this->handler->value as $value) { @@ -843,9 +902,10 @@ class views_many_to_one_helper { } } } + // Case 3: it's a 'not'. + // We just do one join. We'll add a where clause during + // the query phase to ensure that $table.$field IS NULL. else { - // For not, we just do one join. We'll add a where clause during - // the query phase to ensure that $table.$field IS NULL. $join = $this->get_join(); $join->type = 'LEFT'; $join->extra = array(); @@ -886,11 +946,9 @@ class views_many_to_one_helper { if (empty($options['group'])) { $options['group'] = 0; } - else { - $value = $this->handler->value; - $operator = 'IN'; - } + // add_condition determines whether a single expression is enough(FALSE) or the + // conditions should be added via an db_or()/db_and() (TRUE). $add_condition = TRUE; if ($operator == 'not') { $value = NULL; @@ -898,12 +956,11 @@ class views_many_to_one_helper { $add_condition = FALSE; } elseif ($operator == 'or' && empty($options['reduce_duplicates'])) { - if (count($this->handler->value) > 1) { - $value = $this->handler->value; + if (count($value) > 1) { $operator = 'IN'; } else { - $value = is_array($this->handler->value) ? array_pop($this->handler->value) : $this->handler->value; + $value = is_array($value) ? array_pop($value) : $value; $operator = '='; } $add_condition = FALSE; @@ -942,17 +999,20 @@ class views_many_to_one_helper { } /* - * Break x,y,z and x+y+z into an array. Numeric only. + * Break x,y,z and x+y+z into an array. Works for strings. * * @param $str * The string to parse. - * @param $handler - * The handler object to use as a base. + * @param $object + * The object to use as a base. If not specified one will + * be created. * - * @return $handler - * The new handler object. + * @return $object + * An object containing + * - operator: Either 'and' or 'or' + * - value: An array of numeric values. */ -function views_break_phrase_string($str, &$handler) { +function views_break_phrase_string($str, &$handler = NULL) { if (!$handler) { $handler = new stdClass(); } @@ -975,7 +1035,7 @@ function views_break_phrase_string($str, &$handler) { $handler->operator = 'or'; $handler->value = preg_split('/[+ ]/', $str); } - else if (preg_match('/^(\w+,)*\w+$/', $str)) { + else if (preg_match('/^((\w|\s)+,)*(\w|\s)+$/', $str)) { $handler->operator = 'and'; $handler->value = explode(',', $str); } @@ -998,14 +1058,14 @@ function views_break_phrase_string($str, &$handler) { * * @param $str * The string to parse. - * @param $filter - * The filter object to use as a base. If not specified one will + * @param $handler + * The handler object to use as a base. If not specified one will * be created. * - * @return $filter - * The new filter object. + * @return $handler + * The new handler object. */ -function views_break_phrase($str, $handler = NULL) { +function views_break_phrase($str, &$handler = NULL) { if (!$handler) { $handler = new stdClass(); } @@ -1064,14 +1124,15 @@ function views_get_timezone() { } // set up the database timezone - if (in_array(db_driver(), array('mysql', 'mysqli', 'pgsql'))) { + $db_type = Database::getConnection()->databaseType(); + if (in_array($db_type, array('mysql', 'pgsql'))) { $offset = '+00:00'; static $already_set = FALSE; if (!$already_set) { - if (db_driver() == 'pgsql') { + if ($db_type == 'pgsql') { db_query("SET TIME ZONE INTERVAL '$offset' HOUR TO MINUTE"); } - elseif (db_driver() == 'mysql') { + elseif ($db_type == 'mysql') { db_query("SET @@session.time_zone = '$offset'"); } @@ -1097,19 +1158,16 @@ function views_get_timezone() { * An appropriate SQL string for the db type and field type. */ function views_date_sql_field($field, $field_type = 'int', $set_offset = NULL) { - $db_type = db_driver(); + $db_type = Database::getConnection()->databaseType(); $offset = $set_offset !== NULL ? $set_offset : views_get_timezone(); if (isset($offset) && !is_numeric($offset)) { - $tz = date_default_timezone_get(); - $current = time('Z'); - date_default_timezone_set($offset); - $offset_seconds = $current - time('Z'); - date_default_timezone_set($tz); + $dtz = new DateTimeZone($offset); + $dt = new DateTime("now", $dtz); + $offset_seconds = $dtz->getOffset($dt); } switch ($db_type) { case 'mysql': - case 'mysqli': switch ($field_type) { case 'int': $field = "DATE_ADD('19700101', INTERVAL $field SECOND)"; @@ -1133,6 +1191,11 @@ function views_date_sql_field($field, $field_type = 'int', $set_offset = NULL) { $field = "($field + INTERVAL '$offset_seconds SECONDS')"; } return $field; + case 'sqlite': + if (!empty($offset)) { + $field = "($field + '$offset_seconds')"; + } + return $field; } } @@ -1153,11 +1216,10 @@ function views_date_sql_field($field, $field_type = 'int', $set_offset = NULL) { * An appropriate SQL string for the db type and field type. */ function views_date_sql_format($format, $field, $field_type = 'int', $set_offset = NULL) { - $db_type = db_driver(); + $db_type = Database::getConnection()->databaseType(); $field = views_date_sql_field($field, $field_type, $set_offset); switch ($db_type) { case 'mysql': - case 'mysqli': $replace = array( 'Y' => '%Y', 'y' => '%y', @@ -1199,6 +1261,27 @@ function views_date_sql_format($format, $field, $field_type = 'int', $set_offset ); $format = strtr($format, $replace); return "TO_CHAR($field, '$format')"; + case 'sqlite': + $replace = array( + 'Y' => '%Y', // 4 digit year number + 'y' => '%Y', // no format for 2 digit year number + 'M' => '%m', // no format for 3 letter month name + 'm' => '%m', // month number with leading zeros + 'n' => '%m', // no format for month number without leading zeros + 'F' => '%m', // no format for full month name + 'D' => '%d', // no format for 3 letter day name + 'd' => '%d', // day of month number with leading zeros + 'l' => '%d', // no format for full day name + 'j' => '%d', // no format for day of month number without leading zeros + 'W' => '%W', // ISO week number + 'H' => '%H', // 24 hour hour with leading zeros + 'h' => '%H', // no format for 12 hour hour with leading zeros + 'i' => '%M', // minutes with leading zeros + 's' => '%S', // seconds with leading zeros + 'A' => '', // no format for AM/PM + ); + $format = strtr($format, $replace); + return "strftime('$format', $field, 'unixepoch')"; } } @@ -1219,7 +1302,7 @@ function views_date_sql_format($format, $field, $field_type = 'int', $set_offset * An appropriate SQL string for the db type and field type. */ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set_offset = NULL) { - $db_type = db_driver(); + $db_type = Database::getConnection()->databaseType(); $field = views_date_sql_field($field, $field_type, $set_offset); // Note there is no space after FROM to avoid db_rewrite problems @@ -1242,7 +1325,6 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set case('WEEK'): // ISO week number for date switch ($db_type) { case('mysql'): - case('mysqli'): // WEEK using arg 3 in mysql should return the same value as postgres EXTRACT return "WEEK($field, 3)"; case('pgsql'): @@ -1251,7 +1333,6 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set case('DOW'): switch ($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)"; @@ -1261,7 +1342,6 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set case('DOY'): switch ($db_type) { case('mysql'): - case('mysqli'): return "DAYOFYEAR($field)"; case('pgsql'): return "EXTRACT(DOY FROM($field))"; @@ -1289,11 +1369,10 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set * parent::construct($table, $left_table, $left_field, $field, $extra, $type); * } * - * function join($table, &$query) { - * $output = parent::join($table, $query); + * function build_join($select_query, $table, $view_query) { + * $this->extra = 'foo.bar = baz.boing'; + * parent::build_join($select_query, $table, $view_query); * } - * $output .= "AND foo.bar = baz.boing"; - * return $output; * } * @endcode */ @@ -1312,17 +1391,28 @@ function views_date_sql_extract($extract_type, $field, $field_type = 'int', $set * - left_table: The table we join to * - left_field: The field we join to * - type: either LEFT (default) or INNER - * - extra: Either a string that's directly added, or an array of items: + * - extra: An array of extra conditions on the join. Each condition is + * either a string that's directly added, or an array of items: * - - table: if not set, current table; if NULL, no table. This field can't * be set in the cached definition because it can't know aliases; this field * can only be used by realtime joins. * - - field: Field or formula + * in formulas we can reference the right table by using %alias + * @see SelectQueryInterface::addJoin() * - - operator: defaults to = * - - value: Must be set. If an array, operator will be defaulted to IN. * - - numeric: If true, the value will not be surrounded in quotes. - * - extra type: How all the extras will be combined. Either AND or OR. Defaults to AND. + * - - extra type: How all the extras will be combined. Either AND or OR. Defaults to AND. */ class views_join { + var $table = NULL; + var $left_table = NULL; + var $left_field = NULL; + var $field = NULL; + var $extra = NULL; + var $type = NULL; + var $definition = array(); + /** * Construct the views_join object. */ @@ -1368,7 +1458,7 @@ class views_join { */ function build_join($select_query, $table, $view_query) { if (empty($this->definition['table formula'])) { - $right_table = "{" . $this->table . "}"; + $right_table = $this->table; } else { $right_table = $this->definition['table formula']; @@ -1402,6 +1492,113 @@ class views_join { $join_table = $info['table'] . '.'; } + // Convert a single-valued array of values to the single-value case, + // and transform from IN() notation to = notation + if (is_array($info['value']) && count($info['value']) == 1) { + if (empty($info['operator'])) { + $operator = '='; + } + else { + $operator = $info['operator'] == 'NOT IN' ? '!=' : '='; + } + $info['value'] = array_shift($info['value']); + } + + if (is_array($info['value'])) { + // With an array of values, we need multiple placeholders and the + // 'IN' operator is implicit. + foreach ($info['value'] as $value) { + $placeholder_i = ':views_join_condition_' . $select_query->nextPlaceholder(); + $arguments[$placeholder_i] = $value; + } + + $operator = !empty($info['operator']) ? $info['operator'] : 'IN'; + $placeholder = '( ' . implode(', ', array_keys($arguments)) . ' )'; + } + else { + // With a single value, the '=' operator is implicit. + $operator = !empty($info['operator']) ? $info['operator'] : '='; + $placeholder = ':views_join_condition_' . $select_query->nextPlaceholder(); + $arguments[$placeholder] = $info['value']; + } + + $extras[] = "$join_table$info[field] $operator $placeholder"; + } + + if ($extras) { + if (count($extras) == 1) { + $condition .= ' AND ' . array_shift($extras); + } + else { + $condition .= ' AND (' . implode(' ' . $this->extra_type . ' ', $extras) . ')'; + } + } + } + elseif ($this->extra && is_string($this->extra)) { + $condition .= " AND ($this->extra)"; + } + } + + $select_query->addJoin($this->type, $right_table, $table['alias'], $condition, $arguments); + } +} + +/** + * Join handler for relationships that join with a subquery as the left field. + * eg: + * LEFT JOIN node node_term_data ON ([YOUR SUBQUERY HERE]) = node_term_data.nid + * + * join definition + * same as views_join class above, except: + * - left_query: The subquery to use in the left side of the join clause. + */ +class views_join_subquery extends views_join { + function construct($table = NULL, $left_table = NULL, $left_field = NULL, $field = NULL, $extra = array(), $type = 'LEFT') { + parent::construct($table, $left_table, $left_field, $field, $extra, $type); + $this->left_query = $this->definition['left_query']; + } + + /** + * Build the SQL for the join this object represents. + * + * @param $select_query + * An implementation of SelectQueryInterface. + * @param $table + * The base table to join. + * @param $view_query + * The source query, implementation of views_plugin_query. + * @return + * + */ + function build_join($select_query, $table, $view_query) { + if (empty($this->definition['table formula'])) { + $right_table = "{" . $this->table . "}"; + } + else { + $right_table = $this->definition['table formula']; + } + + // Add our join condition, using a subquery on the left instead of a field. + $condition = "($this->left_query) = $table[alias].$this->field"; + $arguments = array(); + + // Tack on the extra. + // This is just copied verbatim from the parent class, which itself has a bug: http://drupal.org/node/1118100 + if (isset($this->extra)) { + if (is_array($this->extra)) { + $extras = array(); + foreach ($this->extra as $info) { + $extra = ''; + // Figure out the table name. Remember, only use aliases provided + // if at all possible. + $join_table = ''; + if (!array_key_exists('table', $info)) { + $join_table = $table['alias'] . '.'; + } + elseif (isset($info['table'])) { + $join_table = $info['table'] . '.'; + } + $placeholder = ':views_join_condition_' . $select_query->nextPlaceholder(); if (is_array($info['value'])) { diff --git a/sites/all/modules/views/includes/plugins.inc b/sites/all/modules/views/includes/plugins.inc index 87cb38bf3..9f6459f29 100644 --- a/sites/all/modules/views/includes/plugins.inc +++ b/sites/all/modules/views/includes/plugins.inc @@ -40,6 +40,7 @@ function views_views_plugins() { 'contextual links locations' => array('page'), 'use ajax' => TRUE, 'use pager' => TRUE, + 'use more' => TRUE, 'accept attachments' => TRUE, 'admin' => t('Page'), 'help topic' => 'display-page', @@ -63,6 +64,7 @@ function views_views_plugins() { 'help' => t('Attachments added to other displays to achieve multiple views in the same view.'), 'handler' => 'views_plugin_display_attachment', 'theme' => 'views_view', + 'contextual links locations' => array(), 'use ajax' => TRUE, 'use pager' => FALSE, 'use more' => TRUE, @@ -81,6 +83,17 @@ function views_views_plugins() { 'help topic' => 'display-feed', ), ), + 'display_extender' => array( + // Default settings for all display_extender plugins. + 'default' => array( + 'title' => t('Empty display extender'), + 'help' => t('Default settings for this view.'), + 'handler' => 'views_plugin_display_extender', + // You can force the plugin to be enabled + 'enabled' => FALSE, + 'no ui' => TRUE, + ), + ), 'style' => array( // Default settings for all style plugins. 'default' => array( @@ -184,6 +197,10 @@ function views_views_plugins() { 'title' => t('PHP Code'), 'handler' => 'views_plugin_argument_default_php', ), + 'raw' => array( + 'title' => t('Raw value from URL'), + 'handler' => 'views_plugin_argument_default_raw', + ), ), 'argument validator' => array( 'php' => array( @@ -409,6 +426,9 @@ function views_discover_plugins() { if (!isset($def['parent'])) { $def['parent'] = 'parent'; } + // Set the internal name to be able to read it out later. + $def['name'] = $plugin; + // merge the new data in $cache[$type][$plugin] = $def; } @@ -438,6 +458,11 @@ class views_plugin extends views_object { */ var $display = NULL; + /** + * The plugin type of this plugin, for example style or query. + */ + var $plugin_type = NULL; + /** * Init will be called after construct, when the plugin is attached to a * view and a display. @@ -446,7 +471,13 @@ class views_plugin extends views_object { /** * Provide a form to edit options for this plugin. */ - function options_form(&$form, &$form_state) { } + function options_form(&$form, &$form_state) { + // Some form elements belong in a fieldset for presentation, but can't + // be moved into one because of the form_state['values'] hierarchy. Those + // elements can add a #fieldset => 'fieldset_name' property, and they'll + // be moved to their fieldset during pre_render. + $form['#pre_render'][] = 'views_ui_pre_render_add_fieldset_markup'; + } /** * Validate the options form. @@ -510,3 +541,16 @@ class views_plugin extends views_object { return check_plain($this->definition['title']); } } + +/** + * Get enabled display extenders. + */ +function views_get_enabled_display_extenders() { + $enabled = array_filter(variable_get('views_display_extenders', array())); + $options = views_fetch_plugin_names('display_extender'); + foreach ($options as $name => $plugin) { + $enabled[$name] = $name; + } + + return $enabled; +} diff --git a/sites/all/modules/views/includes/tabs.inc b/sites/all/modules/views/includes/tabs.inc deleted file mode 100644 index 09237196d..000000000 --- a/sites/all/modules/views/includes/tabs.inc +++ /dev/null @@ -1,196 +0,0 @@ -<?php -// $Id: tabs.inc,v 1.7.6.3 2010/03/20 23:16:37 dereine Exp $ -/** - * @file - * - * Classes and theme functions for rendering javascript UI tabs. - */ - -/** - * Contain a set of tabs as well as the ability to render them. - * - * There are three 'areas' of a tabset. - * - title: The clickable link to display the tab area. These are always visible. - * - body: The actual HTML body of the tab. Only one body is visible at a time. - * - extra: An optional decorative area around the tabs. - */ -class views_tabset { - var $tabs = array(); - var $extra = ''; - var $selected = NULL; - - /** - * Add a tab to the tabset. - * - * @param $name - * The name of the tab; this is the internal identifier and must be - * unique within the tabset. - * @param $title - * If given, this will be the visible title of the tab. This can also - * be set via $tabset->set(). This will be the link to click on to - * view the tab. - * @param $body - * If given, this is the body of the tab itself. It will display - * when the tab title is clicked on. - */ - function add($name, $title = '', $body = '') { - if (is_object($name) && is_subclass_of($name, 'views_tab')) { - $this->add_tab($name); - } - elseif (is_array($name)) { - foreach ($name as $real_tab) { - $this->add($real_tab); - } - } - else { - $this->add_tab(new views_tab($name, $title, $body)); - } - } - - /** - * Add a fully realized tab object to the tabset. - * - * @param $tab - * A fully populated views_tab object. - */ - function add_tab($tab) { - $this->tabs[$tab->name] = $tab; - } - - /** - * Set the values of a tab. - * - * @param $name - * The unique identifier of the tab to set. - * @param $title - * The title of the tab; this will be clickable. - * @param $body - * The HTML body of the tab. - */ - function set($name, $title, $body = NULL) { - if (empty($this->tabs[$name])) { - return $this->add($name, $title, $body); - } - $this->tabs[$name]->title = $title; - if (isset($body)) { - $this->tabs[$name]->body = $body; - } - } - - /** - * Set the body of a tab. - */ - function set_body($name, $body) { - if (empty($this->tabs[$name])) { - return $this->add($name, '', $body); - } - $this->tabs[$name]->body = $body; - } - - /** - * Add text to the 'extra' region of the tabset. - */ - function add_extra($text) { - $this->extra .= $text; - } - - /** - * Remove a tab. - * - * @param $tab - * May be the name of the tab or a views_tab object. - */ - function remove($tab) { - if (is_string($tab)) { - unset($this->tabs[$tab]); - } - else { - unset($this->tabs[$tab->name]); - } - } - - /** - * Control which tab will be selected when it is rendered. - */ - function set_selected($name) { - $this->selected = $name; - } - - /** - * Output the HTML for the tabs. - * - * @return - * HTML representation of the tabs. - */ - function render() { - views_add_js('tabs'); - views_add_css('views-tabs'); - - if (empty($this->selected)) { - $keys = array_keys($this->tabs); - $this->selected = array_shift($keys); - } - - drupal_alter('views_tabset', $this); - return theme('views_tabset', array('tabs' => $this->tabs, 'extra' => $this->extra, 'selected' => $this->selected)); - } -} - -/** - * An object to represent an individual tab within a tabset. - */ -class views_tab { - var $title; - var $body; - var $name; - - /** - * Construct a new tab. - */ - function views_tab($name, $title, $body = NULL) { - $this->name = $name; - $this->title = $title; - $this->body = $body; - } - - /** - * Generate HTML output for a tab. - */ - function render() { - return theme('views_tab', array('body' => $this->body)); - } -} - -/** - * Render a tabset. - * - * @todo Turn this into a template. - */ -function theme_views_tabset($variables) { - $tabs = $variables['tabs']; - $extra = isset($variables['extra']) ? $variables['extra'] : NULL; - $selected = isset($variables['selected']) ? $variables['selected'] : NULL; - $link_output = "<div class=\"views-tabs\"><ul id=\"views-tabset\">\n"; - $tab_output = "<div class=\"views-tab-area\">\n"; - - foreach ($tabs as $name => $tab) { - $link_output .= '<li' . ($name == $selected ? ' class="active"': '') . '><a href="#views-tab-' . $tab->name . '" id="views-tab-title-' . $tab->name . '">' . check_plain($tab->title) . '</a></li>' . "\n"; - $tab_output .= '<div id="views-tab-' . $tab->name . '" class="views-tab">' . $tab->render() . "</div>\n"; - } - $link_output .= "</ul>\n"; - - if ($extra) { - $link_output .= "<div class=\"extra\">$extra</div>\n"; - } - - $link_output .= "</div>\n"; - $tab_output .= "</div>\n"; - return '<div class="views-tabset clearfix">' . $link_output . $tab_output . '</div>'; -} - -/** - * Theme a simple tab. - */ -function theme_views_tab($variables) { - return $variables['body']; -} diff --git a/sites/all/modules/views/includes/view.inc b/sites/all/modules/views/includes/view.inc index 801828265..602e90ed5 100644 --- a/sites/all/modules/views/includes/view.inc +++ b/sites/all/modules/views/includes/view.inc @@ -20,6 +20,13 @@ class view extends views_db_object { var $base_table = 'node'; var $base_field = 'nid'; + /** + * The name of the view. + * + * @var string + */ + var $name = ""; + // State variables var $built = FALSE; var $executed = FALSE; @@ -53,6 +60,19 @@ class view extends views_db_object { // To avoid recursion in views embebed into areas var $parent_views = array(); + // Stores the next steps of form items to handle. + // It's an array of stack items, which contain the form id, the type of form, + // the view, the display and some additional arguments. + // @see views_ui_add_form_to_stack(). + // var $stack; + + /** + * Identifier of the current display. + * + * @var string + */ + var $current_display; + /** * Where the $query object will reside: * @@ -74,6 +94,25 @@ class view extends views_db_object { */ var $style_plugin; + /** + * Allow to override the url of the current view. + * + * @var string + */ + var $override_url = NULL; + + /** + * Allow to override the path used for generated urls. + * + * @var string + */ + var $override_path = NULL; + + /** + * Allow to override the used database which is used for this query. + */ + var $base_database = NULL; + /** * Constructor */ @@ -85,6 +124,20 @@ class view extends views_db_object { } } + /** + * Perform automatic updates when loading or importing a view. + * + * Over time, some things about Views or Drupal data has changed. + * this attempts to do some automatic updates that must happen + * to ensure older views will at least try to work. + */ + function update() { + // When views are converted automatically the base_table should be renamed + // to have a working query. + $this->base_table = views_move_table($this->base_table); + } + + /** * Returns a list of the sub-object types used by this view. These types are * stored on the display, and are used in the build process. @@ -167,6 +220,15 @@ class view extends views_db_object { } } + /** + * Determine if the pager actually uses a pager. + */ + function use_pager() { + if (!empty($this->query->pager)) { + return $this->query->pager->use_pager(); + } + } + /** * Whether or not AJAX should be used. If AJAX is used, paging, * tablesorting and exposed filters will be fetched via an AJAX call @@ -354,11 +416,99 @@ class view extends views_db_object { return TRUE; } + /** + * Attempt to discover if the view has handlers missing relationships. + * + * This will try to add relationships automatically if it can, and will + * remove the handlers if it cannot. + */ + function fix_missing_relationships() { + if (isset($this->relationships_fixed)) { + return; + } + + $this->relationships_fixed = TRUE; + + // Go through all of our handler types and test them to see if they + // are missing relationships. Missing relationships can cause fatally + // broken Views. + $base_tables = array( + $this->base_table => TRUE, + '#global' => TRUE, + ); + + // For each relationship we have, make sure we mark the base it provides as + // available. + foreach ($this->display_handler->get_option('relationships') as $id => $options) { + $options['table'] = views_move_table($options['table']); + $data = views_fetch_data($options['table'], FALSE); + if (isset($data[$options['field']])) { + $base_tables[$data[$options['field']]['relationship']['base']] = TRUE; + } + } + + $base_tables = array_keys($base_tables); + $missing_base_tables = array(); + + $types = views_object_types(); + foreach ($types as $key => $info) { + foreach ($this->display_handler->get_option($info['plural']) as $id => $options) { + $options['table'] = views_move_table($options['table']); + $data = views_fetch_data($options['table'], FALSE); + + $valid_bases = array($options['table']); + if (isset($data['table']['join'])) { + $valid_bases = array_merge($valid_bases, array_keys($data['table']['join'])); + } + + // If the base table is missing, record it so we can try to fix it. + if (!array_intersect($valid_bases, $base_tables)) { + $missing_base_tables[$options['table']][] = array('type' => $key, 'id' => $id); + } + } + } + + if (!empty($missing_base_tables)) { + // This will change handlers, so make sure any existing handlers get + // tossed. + $this->display_handler->handlers = array(); + $this->relationships_changed = TRUE; + $this->changed = TRUE; + + // Try to fix it. + foreach ($missing_base_tables as $table => $handlers) { + $data = views_fetch_data($table); + $relationship = NULL; + + // Does the missing base table have a default relationship we can + // throw in? + if (isset($data['table']['default_relationship'][$this->base_table])) { + // Create the relationship. + $info = $data['table']['default_relationship'][$this->base_table]; + + $relationship_options = isset($info['options']) ? $info['options'] : array(); + $relationship = $this->add_item($this->current_display, 'relationship', $info['table'], $info['field'], $relationship_options); + } + foreach ($handlers as $handler) { + $options = $this->display_handler->get_option($types[$handler['type']]['plural']); + if ($relationship) { + $options[$handler['id']]['relationship'] = $relationship; + } + else { + unset($options[$handler['id']]); + } + $this->display_handler->set_option($types[$handler['type']]['plural'], $options); + } + } + } + } + /** * Acquire and attach all of the handlers. */ function init_handlers() { if (empty($this->inited)) { + $this->fix_missing_relationships(); foreach (views_object_types() as $key => $info) { $this->_init_handler($key, $info); } @@ -423,6 +573,18 @@ class view extends views_db_object { } } + /** + * Run the post_execute() on all active handlers. + */ + function _post_execute() { + foreach (views_object_types() as $key => $info) { + $handlers = &$this->$key; + foreach ($handlers as $id => $handler) { + $handlers[$id]->post_execute($this->result); + } + } + } + /** * Attach all of the handlers for each type. * @@ -446,6 +608,39 @@ class view extends views_db_object { } } + /** + * Prepare arguments and set default args to args. + */ + function _pre_query_argument() { + // build arguments. + $position = -1; + + // Iterate through each argument and process. + foreach ($this->argument as $id => $arg) { + $position++; + $argument = &$this->argument[$id]; + + if ($argument->broken()) { + continue; + } + + $arg = isset($this->args[$position]) ? $this->args[$position] : NULL; + $argument->position = $position; + + if (isset($arg) || $argument->has_default_argument()) { + if (!isset($arg)) { + $arg = $argument->get_default_argument(); + // make sure default args get put back. + if (isset($arg)) { + $this->args[$position] = $arg; + } + // remember that this argument was computed, not passed on the URL. + $argument->is_default = TRUE; + } + } + } + } + /** * Build all the arguments. */ @@ -482,17 +677,7 @@ class view extends views_db_object { $arg = isset($this->args[$position]) ? $this->args[$position] : NULL; $argument->position = $position; - if (isset($arg) || $argument->has_default_argument()) { - if (!isset($arg)) { - $arg = $argument->get_default_argument(); - // make sure default args get put back. - if (isset($arg)) { - $this->args[$position] = $arg; - } - // remember that this argument was computed, not passed on the URL. - $argument->is_default = TRUE; - } - + if (isset($arg)) { // Set the argument, which will also validate that the argument can be set. if (!$argument->set_argument($arg)) { $status = $argument->validate_fail($arg); @@ -509,6 +694,7 @@ class view extends views_db_object { // Add this argument's substitution $substitutions['%' . ($position + 1)] = $arg_title; + $substitutions['!' . ($position + 1)] = strip_tags(decode_entities($arg)); // Since we're really generating the breadcrumb for the item above us, // check the default action of this argument. @@ -547,7 +733,7 @@ class view extends views_db_object { // set the title in the build info. if (!empty($title)) { - $this->build_info['title'] = str_replace(array_keys($substitutions), $substitutions, $title); + $this->build_info['title'] = $title; } // Store the arguments for later use. @@ -570,7 +756,7 @@ class view extends views_db_object { // Create and initialize the query object. $views_data = views_fetch_data($this->base_table); - $this->base_field = $views_data['table']['base']['field']; + $this->base_field = !empty($views_data['table']['base']['field']) ? $views_data['table']['base']['field'] : ''; if (!empty($views_data['table']['base']['database'])) { $this->base_database = $views_data['table']['base']['database']; } @@ -631,6 +817,9 @@ class view extends views_db_object { // Run through our handlers and ensure they have necessary information. $this->init_handlers(); + // Setup the default arguments. + $this->_pre_query_argument(); + // Let the handlers interact with each other if they really want. $this->_pre_query(); @@ -693,6 +882,11 @@ class view extends views_db_object { $this->style_plugin->build_sort_post(); } + // Allow area handlers to affect the query. + $this->_build('header'); + $this->_build('footer'); + $this->_build('empty'); + // Allow display handler to affect the query: $this->display_handler->query($this->display_handler->use_group_by()); @@ -767,8 +961,8 @@ class view extends views_db_object { return TRUE; } - // Don't allow to use deactivated displays. - if (!$this->display[$this->current_display]->handler->get_option('enabled')) { + // Don't allow to use deactivated displays, but display them on the live preview. + if (!$this->display[$this->current_display]->handler->get_option('enabled') && empty($this->live_preview)) { $this->build_info['fail'] = TRUE; return FALSE; } @@ -795,6 +989,7 @@ class view extends views_db_object { } else { $this->query->execute($this); + $this->_post_execute(); if ($cache) { $cache->cache_set('results'); } @@ -847,6 +1042,16 @@ class view extends views_db_object { // Initialize the style plugin. $this->init_style(); + // Give field handlers the opportunity to perform additional queries + // using the entire resultset prior to rendering. + if ($this->style_plugin->uses_fields()) { + foreach ($this->field as $id => $handler) { + if (!empty($this->field[$id])) { + $this->field[$id]->pre_render($this->result); + } + } + } + $this->style_plugin->pre_render($this->result); // Let modules modify the view just prior to rendering it. @@ -858,18 +1063,9 @@ class view extends views_db_object { // Let the theme play too, because pre render is a very themey thing. $function = $GLOBALS['theme'] . '_views_pre_render'; if (function_exists($function)) { - $function($this, $this->display_handler->output, $cache); + $function($this); } - // Give field handlers the opportunity to perform additional queries - // using the entire resultset prior to rendering. - if ($this->style_plugin->uses_fields()) { - foreach ($this->field as $id => $handler) { - if (!empty($this->field[$id])) { - $this->field[$id]->pre_render($this->result); - } - } - } $this->display_handler->output = $this->display_handler->render(); if ($cache) { $cache->cache_set('output'); @@ -1033,7 +1229,7 @@ class view extends views_db_object { * @param $callbacks * A menu callback array passed from views_menu_alter(). */ - function execute_hook_menu($display_id = NULL, $callbacks = array()) { + function execute_hook_menu($display_id = NULL, &$callbacks = array()) { // Prepare the view with the information we have. // This was probably already called, but it's good to be safe. @@ -1116,9 +1312,23 @@ class view extends views_db_object { $title = $this->display_handler->get_option('title'); } + // Allow substitutions from the first row. + if ($this->init_style()) { + $title = $this->style_plugin->tokenize_value($title, 0); + } return $title; } + /** + * Override the view's current title. + * + * The tokens in the title get's replaced before rendering. + */ + function set_title($title) { + $this->build_info['title'] = $title; + return TRUE; + } + /** * Return the human readable name for a view. * @@ -1129,10 +1339,7 @@ class view extends views_db_object { $human_name = $this->human_name; } else { - $human_name = $this->get_title(); - if (empty($human_name)) { - $human_name = $this->name; - } + $human_name = $this->name; } return $human_name; } @@ -1158,6 +1365,10 @@ class view extends views_db_object { * This URL will be adjusted for arguments. */ function get_url($args = NULL, $path = NULL) { + if (!empty($this->override_url)) { + return $this->override_url; + } + if (!isset($path)) { $path = $this->get_path(); } @@ -1181,8 +1392,7 @@ class view extends views_db_object { } $pieces = array(); - $arguments = isset($arguments) ? $arguments : $this->display_handler->get_option('arguments'); - $argument_keys = isset($arguments) ? array_keys($arguments) : array(); + $argument_keys = isset($this->argument) ? array_keys($this->argument) : array(); $id = current($argument_keys); foreach (explode('/', $path) as $piece) { if ($piece != '%') { @@ -1191,8 +1401,8 @@ class view extends views_db_object { else { if (empty($args)) { // Try to never put % in a url; use the wildcard instead. - if ($id && !empty($arguments[$id]['wildcard'])) { - $pieces[] = $arguments[$id]['wildcard']; + if ($id && !empty($this->argument[$id]->options['exception']['value'])) { + $pieces[] = $this->argument[$id]->options['exception']['value']; } else { $pieces[] = '*'; // gotta put something if there just isn't one. @@ -1519,6 +1729,7 @@ class view extends views_db_object { */ function export($indent = '') { $this->init_display(); + $this->init_query(); $output = ''; $output .= $this->export_row('view', $indent); // Set the API version @@ -1668,6 +1879,7 @@ class view extends views_db_object { $errors = array(); + $current_display = $this->current_display; foreach ($this->display as $id => $display) { if ($display->handler) { if (!empty($display->deleted)) { @@ -1681,6 +1893,7 @@ class view extends views_db_object { } } + $this->set_display($current_display); return $errors ? $errors : TRUE; } @@ -1692,7 +1905,7 @@ class view extends views_db_object { return TRUE; } - $this->localization_plugin = views_get_plugin('localization', variable_get('views_localization_plugin', 'core')); + $this->localization_plugin = views_get_plugin('localization', views_get_localization_plugin()); if (empty($this->localization_plugin)) { return FALSE; @@ -1935,7 +2148,7 @@ class views_db_object { if (empty($id)) { $id = $this->generate_display_id($type); if ($id !== 'default') { - preg_match("/[0-9]/", $id, $count); + preg_match("/[0-9]+/", $id, $count); $count = $count[0]; } else { @@ -2112,7 +2325,7 @@ class views_db_object { } /** - * Get the configuration of an item (field/sort/filter/etc) on a given + * Set the configuration of an item (field/sort/filter/etc) on a given * display. * * Pass in NULL for the $item to remove an item. @@ -2157,6 +2370,13 @@ class views_db_object { * to the behavior of the display at all. */ class views_display extends views_db_object { + /** + * The display handler itself, which has all the methods. + * + * @var views_plugin_display + */ + var $handler; + var $db_table = 'views_display'; function views_display($init = TRUE) { parent::init($init); diff --git a/sites/all/modules/views/js/ajax.js b/sites/all/modules/views/js/ajax.js index 45d43e02a..097c44a2f 100644 --- a/sites/all/modules/views/js/ajax.js +++ b/sites/all/modules/views/js/ajax.js @@ -67,7 +67,7 @@ Drupal.ajax.prototype.commands.viewsTriggerPreview = function (ajax, response, status) { if ($('input#edit-displays-live-preview').is(':checked')) { - $('#preview-submit').trigger('mousedown'); + $('#preview-submit').trigger('click'); } }; @@ -102,10 +102,7 @@ attach: function (context) { $('input#edit-displays-live-preview', context).once('views-ajax-processed').click(function() { if ($(this).is(':checked')) { - $('#preview-submit').trigger('mousedown'); - } - else { - $('#views-live-preview').empty(); + $('#preview-submit').click(); } }); } @@ -148,7 +145,7 @@ 'progress': { 'type': 'throbber' } }; // Bind AJAX behaviors to all items showing the class. - $('.views-ajax-link', context).once('views-ajax-processed').each(function () { + $('a.views-ajax-link', context).once('views-ajax-processed').each(function () { var element_settings = base_element_settings; // Set the URL to go to the anchor. if ($(this).attr('href')) { @@ -160,13 +157,16 @@ $('div#views-live-preview a') .once('views-ajax-processed').each(function () { + // We don't bind to links without a URL. + if (!$(this).attr('href')) { + return true; + } + var element_settings = base_element_settings; // Set the URL to go to the anchor. - if ($(this).attr('href')) { - element_settings.url = $(this).attr('href'); - if (element_settings.url.substring(0, 22) != '/admin/structure/views') { - return true; - } + element_settings.url = $(this).attr('href'); + if (Drupal.Views.getPath(element_settings.url).substring(0, 21) != 'admin/structure/views') { + return true; } element_settings.wrapper = 'views-live-preview'; @@ -180,11 +180,24 @@ // @todo Revisit this after fixing Views UI to display a Preview outside // of the main Edit form. $('div#views-live-preview input[type=submit]') - .once('views-ajax-processed').each(function () { - $(this).click(function(event) { - event.preventDefault(); - $('#preview-submit').mousedown(); + .once('views-ajax-processed').each(function(event) { + $(this).click(function () { + this.form.clk = this; + return true; }); + var element_settings = base_element_settings; + // Set the URL to go to the anchor. + element_settings.url = $(this.form).attr('action'); + if (Drupal.Views.getPath(element_settings.url).substring(0, 21) != 'admin/structure/views') { + return true; + } + + element_settings.wrapper = 'views-live-preview'; + element_settings.method = 'html'; + element_settings.event = 'click'; + + var base = $(this).attr('id'); + Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings); }); if (!this.collapseReplaced && Drupal.collapseScrollIntoView) { diff --git a/sites/all/modules/views/js/ajax_view.js b/sites/all/modules/views/js/ajax_view.js index 76a58b98f..c22bbf0d0 100644 --- a/sites/all/modules/views/js/ajax_view.js +++ b/sites/all/modules/views/js/ajax_view.js @@ -11,72 +11,116 @@ Drupal.behaviors.ViewsAjaxView = {}; Drupal.behaviors.ViewsAjaxView.attach = function() { if (Drupal.settings && Drupal.settings.views && Drupal.settings.views.ajaxViews) { - // Retrieve the path to use for views' ajax. - var ajax_path = Drupal.settings.views.ajax_path; + $.each(Drupal.settings.views.ajaxViews, function(i, settings) { + // @todo: Figure out where to store the object. + new Drupal.views.ajaxView(settings); + }); + } +}; - // If there are multiple views this might've ended up showing up multiple times. - if (ajax_path.constructor.toString().indexOf("Array") != -1) { - ajax_path = ajax_path[0]; - } +Drupal.views = {}; - $.each(Drupal.settings.views.ajaxViews, function(i, settings) { - var view = '.view-dom-id-' + settings.view_dom_id; - var element_settings = { - url: ajax_path, - submit: settings, - setClick: true, - event: 'click', - selector: view, - progress: { type: 'throbber' } - }; - - // Process exposed filter forms. - $('form#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')) - .filter(':not(.views-processed)') - .each(function () { - var button = $('input[type=submit]', this); - button = button[0]; - - var ajax = new Drupal.ajax($(button).attr('id'), button, element_settings); - }) - .addClass('views-processed') - - $(view).filter(':not(.views-processed)') - // Don't attach to nested views. Doing so would attach multiple behaviors - // to a given element. - .filter(function() { - // If there is at least one parent with a view class, this view - // is nested (e.g., an attachment). Bail. - return !$(this).parents('.view').size(); - }) - .each(function() { - // Set a reference that will work in subsequent calls. - var target = this; - $(this) - .addClass('views-processed') - // Process pager, tablesort, and attachment summary links. - .find('ul.pager > li > a, th.views-field a, .attachment .views-summary a') - .each(function () { - var viewData = {}; - // Construct an object using the settings defaults and then overriding - // with data specific to the link. - $.extend( - viewData, - settings, - Drupal.Views.parseQueryString($(this).attr('href')), - // Extract argument data from the URL. - Drupal.Views.parseViewArgs($(this).attr('href'), settings.view_base_path) - ); - - // For anchor tags, these will go to the target of the anchor rather - // than the usual location. - $.extend(viewData, Drupal.Views.parseViewArgs($(this).attr('href'), settings.view_base_path)); - - element_settings.submit = viewData; - var ajax = new Drupal.ajax(false, this, element_settings); - }); // .each function () { - }); // $view.filter().each - }); // .each Drupal.settings.views.ajaxViews - } // if +/** + * Javascript object for a certain view. + */ +Drupal.views.ajaxView = function(settings) { + var selector = '.view-dom-id-' + settings.view_dom_id; + this.$view = $(selector); + + // Retrieve the path to use for views' ajax. + var ajax_path = Drupal.settings.views.ajax_path; + + // If there are multiple views this might've ended up showing up multiple times. + if (ajax_path.constructor.toString().indexOf("Array") != -1) { + ajax_path = ajax_path[0]; + } + + this.element_settings = { + url: ajax_path + window.location.search, + submit: settings, + setClick: true, + event: 'click', + selector: selector, + progress: { type: 'throbber' } + }; + + this.settings = settings; + + // Add the ajax to exposed forms. + this.$exposed_form = $('form#views-exposed-form-'+ settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')); + this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this)); + + // Add the ajax to pagers. + this.$view + // Don't attach to nested views. Doing so would attach multiple behaviors + // to a given element. + .filter(jQuery.proxy(this.filterNestedViews, this)) + .once(jQuery.proxy(this.attachPagerAjax, this)); }; + +Drupal.views.ajaxView.prototype.attachExposedFormAjax = function() { + var button = $('input[type=submit], input[type=image]', this.$exposed_form); + button = button[0]; + + this.exposedFormAjax = new Drupal.ajax($(button).attr('id'), button, this.element_settings); +}; + +Drupal.views.ajaxView.prototype.filterNestedViews= function() { + // If there is at least one parent with a view class, this view + // is nested (e.g., an attachment). Bail. + return !this.$view.parents('.view').size(); +}; + +/** + * Attach the ajax behavior to each link. + */ +Drupal.views.ajaxView.prototype.attachPagerAjax = function() { + this.$view.find('ul.pager > li > a, th.views-field a, .attachment .views-summary a') + .each(jQuery.proxy(this.attachPagerLinkAjax, this)); +}; + +/** + * Attach the ajax behavior to a singe link. + */ +Drupal.views.ajaxView.prototype.attachPagerLinkAjax = function(id, link) { + var $link = $(link); + var viewData = {}; + var href = $link.attr('href'); + // Construct an object using the settings defaults and then overriding + // with data specific to the link. + $.extend( + viewData, + this.settings, + Drupal.Views.parseQueryString(href), + // Extract argument data from the URL. + Drupal.Views.parseViewArgs(href, this.settings.view_base_path) + ); + + // For anchor tags, these will go to the target of the anchor rather + // than the usual location. + $.extend(viewData, Drupal.Views.parseViewArgs(href, this.settings.view_base_path)); + + this.element_settings.submit = viewData; + this.pagerAjax = new Drupal.ajax(false, $link, this.element_settings); +}; + +Drupal.ajax.prototype.commands.viewsScrollTop = function (ajax, response, status) { + // Scroll to the top of the view. This will allow users + // to browse newly loaded content after e.g. clicking a pager + // link. + var offset = $(response.selector).offset(); + // We can't guarantee that the scrollable object should be + // the body, as the view could be embedded in something + // more complex such as a modal popup. Recurse up the DOM + // and scroll the first element that has a non-zero top. + var scrollTarget = response.selector; + while ($(scrollTarget).scrollTop() == 0 && $(scrollTarget).parent()) { + scrollTarget = $(scrollTarget).parent() + } + // Only scroll upward + if (offset.top - 10 < $(scrollTarget).scrollTop()) { + $(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500); + } +}; + })(jQuery); diff --git a/sites/all/modules/views/js/base.js b/sites/all/modules/views/js/base.js index 3e40d8943..3cb649a96 100644 --- a/sites/all/modules/views/js/base.js +++ b/sites/all/modules/views/js/base.js @@ -25,8 +25,8 @@ Drupal.behaviors.viewsTabs = { event.preventDefault(); }); /** - * Here is to handle display deletion - * (checking in the hidden checkbox and hiding out the row) + * Here is to handle display deletion + * (checking in the hidden checkbox and hiding out the row) */ $('a.display-remove-link') .addClass('display-processed') @@ -54,7 +54,7 @@ Drupal.Views.parseQueryString = function (query) { var pair = pairs[i].split('='); // Ignore the 'q' path argument, if present. if (pair[0] != 'q' && pair[1]) { - args[pair[0]] = decodeURIComponent(pair[1].replace(/\+/g, ' ')); + args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' ')); } } } diff --git a/sites/all/modules/views/js/tabs.js b/sites/all/modules/views/js/tabs.js deleted file mode 100644 index 89aef3f17..000000000 --- a/sites/all/modules/views/js/tabs.js +++ /dev/null @@ -1,438 +0,0 @@ -// $Id: tabs.js,v 1.4.4.4 2010/03/20 23:16:37 dereine Exp $ - -/** - * @file tabs.js - * jQuery UI Tabs (Tabs 3) - * - * This is nothing more than the pure jquery UI tabs implementation. - */ -(function($) { - - // if the UI scope is not availalable, add it - $.viewsUi = $.viewsUi || {}; - - $.fn.viewsTabs = function(initial, options) { - if (initial && initial.constructor == Object) { // shift arguments - options = initial; - initial = null; - } - options = options || {}; - - // first get initial tab from options - initial = initial && initial.constructor == Number && --initial || 0; - - return this.each(function() { - new $.viewsUi.tabs(this, $.extend(options, { initial: initial })); - }); - }; - - // chainable tabs methods - $.each(['Add', 'Remove', 'Enable', 'Disable', 'Click', 'Load'], function(i, method) { - $.fn['views' + method + 'Tab'] = function() { - var args = arguments; - return this.each(function() { - var instance = $.viewsUi.tabs.instances[this.UI_TABS_UUID]; - instance[method.toLowerCase()].apply(instance, args); - }); - }; - }); - $.fn.viewsSelectedTab = function(returnElement) { - var selected; - if (returnElement) { - - } else { - - } - return selected; - }; - - $.viewsUi.tabs = function(el, options) { - - this.source = el; - - this.options = $.extend({ - - // basic setup - initial: 0, - event: 'click', - disabled: [], - // TODO bookmarkable: $.ajaxHistory ? true : false, - unselected: false, - toggle: options.unselected ? true : false, - - // Ajax - spinner: 'Loading…', - cache: false, - hashPrefix: 'tab-', - - // animations - /*fxFade: null, - fxSlide: null, - fxShow: null, - fxHide: null,*/ - fxSpeed: 'normal', - /*fxShowSpeed: null, - fxHideSpeed: null,*/ - - // callbacks - add: function() {}, - remove: function() {}, - enable: function() {}, - disable: function() {}, - click: function() {}, - hide: function() {}, - show: function() {}, - load: function() {}, - - // CSS classes - navClass: 'ui-tabs-nav', - selectedClass: 'ui-tabs-selected', - disabledClass: 'ui-tabs-disabled', - containerClass: 'ui-tabs-container', - hideClass: 'ui-tabs-hide', - loadingClass: 'ui-tabs-loading' - - }, options); - - this.tabify(true); - - // save instance for later - var uuid = 'instance-' + $.viewsUi.tabs.prototype.count++; - $.viewsUi.tabs.instances[uuid] = this; - this.source['UI_TABS_UUID'] = uuid; - - }; - - // static - $.viewsUi.tabs.instances = {}; - - $.extend($.viewsUi.tabs.prototype, { - animating: false, - count: 0, - tabify: function(init) { - - this.$tabs = $('a:first-child', this.source); - this.$containers = $([]); - - var self = this, o = this.options; - - this.$tabs.each(function(i, a) { - // inline tab - if (a.hash && a.hash.replace('#', '')) { // safari 2 reports '#' for an empty hash - self.$containers = self.$containers.add(a.hash); - } - // remote tab - else { - var id = a.title && a.title.replace(/\s/g, '_') || o.hashPrefix + (self.count + 1) + '-' + (i + 1), url = a.href; - a.href = '#' + id; - a.url = url; - self.$containers = self.$containers.add( - $('#' + id)[0] || $('<div id="' + id + '" class="' + o.containerClass + '"></div>') - .insertAfter( self.$containers[i - 1] || self.source ) - ); - } - }); - - if (init) { - - // Try to retrieve initial tab from fragment identifier in url if present, - // otherwise try to find selected class attribute on <li>. - this.$tabs.each(function(i, a) { - if (location.hash) { - if (a.hash == location.hash) { - o.initial = i; - // prevent page scroll to fragment - //if (($.browser.msie || $.browser.opera) && !o.remote) { - if ($.browser.msie || $.browser.opera) { - var $toShow = $(location.hash), toShowId = $toShow.attr('id'); - $toShow.attr('id', ''); - setTimeout(function() { - $toShow.attr('id', toShowId); // restore id - }, 500); - } - scrollTo(0, 0); - return false; // break - } - } else if ( $(a).parents('li:eq(0)').is('li.' + o.selectedClass) ) { - o.initial = i; - return false; // break - } - }); - - // attach necessary classes for styling if not present - $(this.source).is('.' + o.navClass) || $(this.source).addClass(o.navClass); - this.$containers.each(function() { - var $this = $(this); - $this.is('.' + o.containerClass) || $this.addClass(o.containerClass); - }); - - // highlight tab accordingly - var $lis = $('li', this.source); - this.$containers.addClass(o.hideClass); - $lis.removeClass(o.selectedClass); - if (!o.unselected) { - this.$containers.slice(o.initial, o.initial + 1).css('display', 'block'); - $lis.slice(o.initial, o.initial + 1).addClass(o.selectedClass); - } - - // trigger load of initial tab is remote tab - if (this.$tabs[o.initial].url) { - this.load(o.initial + 1, this.$tabs[o.initial].url); - if (o.cache) { - this.$tabs[o.initial].url = null; // if loaded once do not load them again - } - } - - // disabled tabs - for (var i = 0, position; position = o.disabled[i]; i++) { - this.disable(position); - } - - } - - // setup animations - var showAnim = {}, hideAnim = {}, showSpeed = o.fxShowSpeed || o.fxSpeed, - hideSpeed = o.fxHideSpeed || o.fxSpeed; - if (o.fxSlide || o.fxFade) { - if (o.fxSlide) { - showAnim['height'] = 'show'; - hideAnim['height'] = 'hide'; - } - if (o.fxFade) { - showAnim['opacity'] = 'show'; - hideAnim['opacity'] = 'hide'; - } - } else { - if (o.fxShow) { - showAnim = o.fxShow; - } else { // use some kind of animation to prevent browser scrolling to the tab - showAnim['min-width'] = 0; // avoid opacity, causes flicker in Firefox - showSpeed = 1; // as little as 1 is sufficient - } - if (o.fxHide) { - hideAnim = o.fxHide; - } else { // use some kind of animation to prevent browser scrolling to the tab - hideAnim['min-width'] = 0; // avoid opacity, causes flicker in Firefox - hideSpeed = 1; // as little as 1 is sufficient - } - } - - // callbacks - var click = o.click, hide = o.hide, show = o.show; - - // reset some styles to maintain print style sheets etc. - var resetCSS = { display: '', overflow: '', height: '' }; - if (!$.browser.msie) { // not in IE to prevent ClearType font issue - resetCSS['opacity'] = ''; - } - - // hide a tab, animation prevents browser scrolling to fragment - function hideTab(clicked, $hide, $show) { - $hide.animate(hideAnim, hideSpeed, function() { // - $hide.addClass(o.hideClass).css(resetCSS); // maintain flexible height and accessibility in print etc. - hide(clicked, $show, $hide[0]); - if ($show) { - showTab(clicked, $hide, $show); - } - }); - } - - // show a tab, animation prevents browser scrolling to fragment - function showTab(clicked, $hide, $show) { - // show next tab - if (!(o.fxSlide || o.fxFade || o.fxShow)) { - $show.css('display', 'block'); // prevent occasionally occuring flicker in Firefox cause by gap between showing and hiding the tab containers - } - $show.animate(showAnim, showSpeed, function() { - $show.removeClass(o.hideClass).css(resetCSS); // maintain flexible height and accessibility in print etc. - if ($.browser.msie) { - $hide[0].style.filter = ''; - $show[0].style.filter = ''; - } - show(clicked, $show[0], $hide[0]); - self.animating = false; - }); - - } - - // switch a tab - function switchTab(clicked, $hide, $show) { - /*if (o.bookmarkable && trueClick) { // add to history only if true click occured, not a triggered click - $.ajaxHistory.update(clicked.hash); - }*/ - $(clicked).parents('li:eq(0)').addClass(o.selectedClass) - .siblings().removeClass(o.selectedClass); - hideTab(clicked, $hide, $show); - } - - // tab click handler - function tabClick(e) { - - //var trueClick = e.clientX; // add to history only if true click occured, not a triggered click - var $li = $(this).parents('li:eq(0)'), $hide = self.$containers.filter(':visible'), $show = $(this.hash); - - // if tab may be closed - if (o.toggle && !$li.is('.' + o.disabledClass) && !self.animating) { - if ($li.is('.' + o.selectedClass)) { - $li.removeClass(o.selectedClass); - hideTab(this, $hide); - this.blur(); - return false; - } else if (!$hide.length) { - $li.addClass(o.selectedClass); - showTab(this, $hide, $show); - this.blur(); - return false; - } - } - - // If tab is already selected or disabled, animation is still running or click callback - // returns false stop here. - // Check if click handler returns false last so that it is not executed for a disabled tab! - if ($li.is('.' + o.selectedClass + ', .' + o.disabledClass) - || self.animating || click(this, $show[0], $hide[0]) === false) { - this.blur(); - return false; - } - - self.animating = true; - - // show new tab - if ($show.length) { - - // prevent scrollbar scrolling to 0 and than back in IE7, happens only if bookmarking/history is enabled - /*if ($.browser.msie && o.bookmarkable) { - var showId = this.hash.replace('#', ''); - $show.attr('id', ''); - setTimeout(function() { - $show.attr('id', showId); // restore id - }, 0); - }*/ - - if (this.url) { // remote tab - var a = this; - self.load(self.$tabs.index(this) + 1, this.url, function() { - switchTab(a, $hide, $show); - }); - if (o.cache) { - this.url = null; // if loaded once do not load them again - } - } else { - switchTab(this, $hide, $show); - } - - // Set scrollbar to saved position - need to use timeout with 0 to prevent browser scroll to target of hash - /*var scrollX = window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || document.body.scrollLeft || 0; - var scrollY = window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop || 0; - setTimeout(function() { - scrollTo(scrollX, scrollY); - }, 0);*/ - - } else { - throw Drupal.t('jQuery UI Tabs: Mismatching fragment identifier.'); - } - - this.blur(); // prevent IE from keeping other link focussed when using the back button - - //return o.bookmarkable && !!trueClick; // convert trueClick == undefined to Boolean required in IE - return false; - - } - - // attach click event, avoid duplicates from former tabifying - this.$tabs.unbind(o.event, tabClick).bind(o.event, tabClick); - - }, - add: function(url, text, position) { - if (url && text) { - var o = this.options; - position = position || this.$tabs.length; // append by default - if (position >= this.$tabs.length) { - var method = 'insertAfter'; - position = this.$tabs.length; - } else { - var method = 'insertBefore'; - } - if (url.indexOf('#') == 0) { // ajax container is created by tabify automatically - var $container = $(url); - // try to find an existing element before creating a new one - ($container.length && $container || $('<div id="' + url.replace('#', '') + '" class="' + o.containerClass + ' ' + o.hideClass + '"></div>')) - [method](this.$containers[position - 1]); - } - $('<li><a href="' + url + '"><span>' + text + '</span></a></li>') - [method](this.$tabs.slice(position - 1, position).parents('li:eq(0)')); - this.tabify(); - o.add(this.$tabs[position - 1], this.$containers[position - 1]); // callback - } else { - throw Drupal.t('jQuery UI Tabs: Not enough arguments to add tab.'); - } - }, - remove: function(position) { - if (position && position.constructor == Number) { - this.$tabs.slice(position - 1, position).parents('li:eq(0)').remove(); - this.$containers.slice(position - 1, position).remove(); - this.tabify(); - } - this.options.remove(); // callback - }, - enable: function(position) { - var $li = this.$tabs.slice(position - 1, position).parents('li:eq(0)'), o = this.options; - $li.removeClass(o.disabledClass); - if ($.browser.safari) { // fix disappearing tab after enabling in Safari... TODO check Safari 3 - $li.animate({ opacity: 1 }, 1, function() { - $li.css({ opacity: '' }); - }); - } - o.enable(this.$tabs[position - 1], this.$containers[position - 1]); // callback - }, - disable: function(position) { - var $li = this.$tabs.slice(position - 1, position).parents('li:eq(0)'), o = this.options; - if ($.browser.safari) { // fix opacity of tab after disabling in Safari... TODO check Safari 3 - $li.animate({ opacity: 0 }, 1, function() { - $li.css({ opacity: '' }); - }); - } - $li.addClass(this.options.disabledClass); - o.disable(this.$tabs[position - 1], this.$containers[position - 1]); // callback - }, - click: function(position) { - this.$tabs.slice(position - 1, position).trigger('click'); - }, - load: function(position, url, callback) { - var self = this, - o = this.options, - $a = this.$tabs.slice(position - 1, position).addClass(o.loadingClass), - $span = $('span', $a), - text = $span.html(); - - // shift arguments - if (url && url.constructor == Function) { - callback = url; - } - - // set new URL - if (url) { - $a[0].url = url; - } - - // load - if (o.spinner) { - $span.html('<em>' + o.spinner + '</em>'); - } - setTimeout(function() { // timeout is again required in IE, "wait" for id being restored - $($a[0].hash).load(url, function() { - if (o.spinner) { - $span.html(text); - } - $a.removeClass(o.loadingClass); - // This callback is needed because the switch has to take place after loading - // has completed. - if (callback && callback.constructor == Function) { - callback(); - } - o.load(self.$tabs[position - 1], self.$containers[position - 1]); // callback - }); - }, 0); - } - }); -})(jQuery); diff --git a/sites/all/modules/views/js/views-admin.js b/sites/all/modules/views/js/views-admin.js index 8a8aab343..104239aed 100644 --- a/sites/all/modules/views/js/views-admin.js +++ b/sites/all/modules/views/js/views-admin.js @@ -208,7 +208,8 @@ Drupal.behaviors.viewsUiRenderAddViewButton = {}; Drupal.behaviors.viewsUiRenderAddViewButton.attach = function (context, settings) { var $ = jQuery; // Build the add display menu and pull the display input buttons into it. - var $menu = $('#views-ui-edit-form .secondary', context).once('views-ui-render-add-view-button-processed'); + var $menu = $('#views-display-menu-tabs', context).once('views-ui-render-add-view-button-processed'); + if (!$menu.length) { return; } @@ -307,15 +308,16 @@ Drupal.viewsUi.OptionsSearch = function ($form) { */ Drupal.viewsUi.OptionsSearch.prototype.getOptions = function ($allOptions) { var $ = jQuery; - var i, $label, $option; + var i, $label, $description, $option; var options = []; var length = $allOptions.length; for (i = 0; i < length; i++) { $option = $($allOptions[i]); $label = $option.find('label'); + $description = $option.find('div.description'); options[i] = { - // Search on the lowercase version of the label text. - 'labelText': $label.text().toLowerCase(), + // Search on the lowercase version of the label text + description. + 'searchText': $label.text().toLowerCase() + " " + $description.text().toLowerCase(), // Maintain a reference to the jQuery object for each row, so we don't // have to create a new object inside the performance-sensitive keyup // handler. @@ -331,7 +333,7 @@ Drupal.viewsUi.OptionsSearch.prototype.getOptions = function ($allOptions) { Drupal.viewsUi.OptionsSearch.prototype.handleKeyup = function (event) { var found, i, j, option, search, words, wordsLength, zebraClass, zebraCounter; - // Determine the user's search query. The label text has been converted to + // Determine the user's search query. The search text has been converted to // lowercase. search = this.$searchBox.val().toLowerCase(); words = search.split(' '); @@ -340,16 +342,16 @@ Drupal.viewsUi.OptionsSearch.prototype.handleKeyup = function (event) { // Start the counter for restriping rows. zebraCounter = 0; - // Search through the labels in the form for matching text. + // Search through the search texts in the form for matching text. var length = this.options.length; for (i = 0; i < length; i++) { // Use a local variable for the option being searched, for performance. option = this.options[i]; found = true; - // Each word in the search string has to match the label in order for the - // label to be shown. + // Each word in the search string has to match the item in order for the + // item to be shown. for (j = 0; j < wordsLength; j++) { - if (option.labelText.indexOf(words[j]) === -1) { + if (option.searchText.indexOf(words[j]) === -1) { found = false; } } @@ -384,10 +386,15 @@ Drupal.behaviors.viewsUiPreview.attach = function (context, settings) { // show the form. var contextualFilters = $('.views-display-setting a', contextualFiltersBucket); if (contextualFilters.length) { - $('.form-item-displays-settings-settings-content-preview-controls-view-args').show(); + $('#preview-args').parent().show(); } else { - $('.form-item-displays-settings-settings-content-preview-controls-view-args').hide(); + $('#preview-args').parent().hide(); + } + + // Executes an initial preview. + if ($('#edit-displays-live-preview').once('edit-displays-live-preview').is(':checked')) { + $('#preview-submit').once('edit-displays-live-preview').click(); } }; @@ -839,22 +846,36 @@ Drupal.viewsUi.Checkboxifier.prototype.clickHandler = function (e) { }; /** - * Add extra dependency behavior, in addition to CTools visibility management. - * - * @todo Abstract this and perhaps add to CTools. + * Change the Apply button text based upon the override select state. */ -Drupal.behaviors.viewsUiDependent = {}; -Drupal.behaviors.viewsUiDependent.attach = function (context, settings) { +Drupal.behaviors.viewsUiOverrideSelect = {}; +Drupal.behaviors.viewsUiOverrideSelect.attach = function (context, settings) { var $ = jQuery; - $('#views-ui-config-item-form #edit-options-custom-label').once('views-ui-dependent', function () { - var $checkbox = $(this); - $checkbox.click(function (event) { - if (!$checkbox.is(':checked')) { - $('#views-ui-config-item-form #edit-options-label').val(''); - $('#views-ui-config-item-form #edit-options-element-label-colon').attr('checked', false); + $('#edit-override-dropdown', context).once('views-ui-override-button-text', function() { + // Closures! :( + var $submit = $('#edit-submit', context); + var old_value = $submit.val(); + + $submit.once('views-ui-override-button-text') + .bind('mouseup', function() { + $(this).val(old_value); + return true; + }); + + $(this).bind('change', function() { + if ($(this).val() == 'default') { + $submit.val(Drupal.t('Apply (all displays)')); } - }); + else if ($(this).val() == 'default_revert') { + $submit.val(Drupal.t('Revert to default')); + } + else { + $submit.val(Drupal.t('Apply (this display)')); + } + }) + .trigger('change'); }); + }; Drupal.viewsUi.resizeModal = function (e, no_shrink) { diff --git a/sites/all/modules/views/modules/aggregator.views.inc b/sites/all/modules/views/modules/aggregator.views.inc index d4f311463..0ca9e3353 100644 --- a/sites/all/modules/views/modules/aggregator.views.inc +++ b/sites/all/modules/views/modules/aggregator.views.inc @@ -308,7 +308,7 @@ function aggregator_views_data() { // feed last updated $data['aggregator_feed']['modified'] = array( 'title' => t('Last modified'), // The item it appears as on the UI, - 'help' => t('The date of the most recent new content onf the feed.'), + 'help' => t('The date of the most recent new content on the feed.'), // Information for displaying a title as a field 'field' => array( 'handler' => 'views_handler_field_date', diff --git a/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc b/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc index 26235d41a..e3e4c51cf 100644 --- a/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc +++ b/sites/all/modules/views/modules/aggregator/views_handler_field_aggregator_title_link.inc @@ -45,4 +45,4 @@ class views_handler_field_aggregator_title_link extends views_handler_field { return $data; } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc b/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc index b2ef964d0..35aadecfd 100644 --- a/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc +++ b/sites/all/modules/views/modules/aggregator/views_plugin_row_aggregator_rss.inc @@ -43,11 +43,13 @@ class views_plugin_row_aggregator_rss extends views_plugin_row { $item = db_query($sql, array(':iid' => $iid))->fetchObject(); $item->elements = array( - array('key' => 'pubDate', 'value' => gmdate('r', $item->timestamp)), + array( + 'key' => 'pubDate', + 'value' => gmdate('r', $item->timestamp), + ), array( 'key' => 'dc:creator', 'value' => $item->author, - 'namespace' => array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/'), ), array( 'key' => 'guid', @@ -69,4 +71,3 @@ class views_plugin_row_aggregator_rss extends views_plugin_row { )); } } - diff --git a/sites/all/modules/views/modules/book.views_convert.inc b/sites/all/modules/views/modules/book.views_convert.inc deleted file mode 100644 index 8cf37fc9b..000000000 --- a/sites/all/modules/views/modules/book.views_convert.inc +++ /dev/null @@ -1,79 +0,0 @@ -<?php -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - */ -function book_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'field': - switch ($field['tablename']) { - case 'book_parent_node': - switch ($field['field']) { - case 'title': - $item = $view->get_item($display, 'field', $id); - if ($field['handler'] == 'views_handler_field_book_parent_title') { - $item['link_to_node'] = TRUE; - } - $item['relationship'] = $view->add_item($display, 'relationship', 'book_parent', 'nid', array(), 'book_parent_nid'); - $item['table'] = 'node'; - $item['field'] = 'title'; - $view->set_item($display, 'field', $id, $item); - break; - } - break; - } - break; - case 'filter': - switch ($field['tablename']) { - case 'book': - switch ($field['field']) { - case 'parent': - $operators = array('AND' => '=', 'OR' => '=', 'NOT' => '!='); - $item = $view->get_item($display, 'filter', $id); - $item['operator'] = $operators[$field['operator']]; - $item['relationship'] = $view->add_item($display, 'relationship', 'book_parent', 'nid', array(), 'book_parent_nid'); - $item['table'] = 'node'; - $item['field'] = 'nid'; - $view->set_item($display, 'filter', $id, $item); - break; - } - break; - } - break; - case 'sort': - switch ($field['tablename']) { - case 'book': - switch ($field['field']) { - case 'weight': - $view->set_item_option($display, 'sort', $id, 'table', 'book_menu_links'); - break; - } - break; - case 'book_parent_node': - switch ($field['field']) { - case 'title': - $item = $view->get_item($display, 'sort', $id); - $item['relationship'] = $view->add_item($display, 'relationship', 'book_parent', 'nid', array(), 'book_parent_nid'); - $item['table'] = 'node'; - $item['field'] = 'title'; - $view->set_item($display, 'sort', $id, $item); - break; - } - break; - } - break; - case 'argument': - $options = $field['argoptions']; - switch ($field['type']) { - case 'book_parent': - $options['relationship'] = $view->add_item($display, 'relationship', 'book_parent', 'nid', array(), 'book_parent_nid'); - $view->add_item($display, 'argument', 'node', 'nid', $options, $field['id']); - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/comment.views.inc b/sites/all/modules/views/modules/comment.views.inc index 82fa61275..772ac2439 100644 --- a/sites/all/modules/views/modules/comment.views.inc +++ b/sites/all/modules/views/modules/comment.views.inc @@ -7,7 +7,7 @@ /** * @defgroup views_comment_module comment.module handlers * - * Includes the tables 'comments' and 'node_comment_statistics' + * Includes the tables 'comment' and 'node_comment_statistics' * @{ */ @@ -17,8 +17,8 @@ function comment_views_data() { $data['comments']['moved to'] = 'comment'; - $data['comments']['comment']['moved to'] = array('field_data_comment_body', 'comment_body'); - $data['comments']['comment']['field']['moved to'] = array('field_data_comment_body', 'comment_body'); + $data['comment']['comment']['moved to'] = array('field_data_comment_body', 'comment_body'); + $data['comment']['comment']['field']['moved to'] = array('field_data_comment_body', 'comment_body'); // Define the base group of this table. Fields that don't // have a group defined will go into this field by default. $data['comment']['table']['group'] = t('Comment'); @@ -27,14 +27,15 @@ function comment_views_data() { 'field' => 'cid', 'title' => t('Comment'), 'help' => t("Comments are responses to node content."), + 'access query tag' => 'comment_access', ); + $data['comment']['table']['entity type'] = 'comment'; - //joins - $data['comment']['table']['join'] = array( - //...to the node table + // Provide a "default relationship" to keep older views from choking. + $data['comment']['table']['default_relationship'] = array( 'node' => array( - 'left_field' => 'nid', - 'field' => 'nid', + 'table' => 'node', + 'field' => 'cid', ), ); @@ -174,7 +175,7 @@ function comment_views_data() { $data['comments']['timestamp']['moved to'] = array('comment', 'changed'); // changed (when comment was last updated) $data['comment']['changed'] = array( - 'title' => t('Post date'), + 'title' => t('Updated date'), 'help' => t('Date and time of when the comment was last updated.'), 'field' => array( 'handler' => 'views_handler_field_date', @@ -191,7 +192,7 @@ function comment_views_data() { $data['comments']['timestamp_fulldate']['moved to'] = array('comment', 'changed_fulldata'); $data['comment']['changed_fulldata'] = array( 'title' => t('Created date'), - 'help' => t('In the form of CCYYMMDD.'), + 'help' => t('Date in the form of CCYYMMDD.'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_fulldate', @@ -201,7 +202,7 @@ function comment_views_data() { $data['comments']['timestamp_year_month']['moved to'] = array('comment', 'changed_year_month'); $data['comment']['changed_year_month'] = array( 'title' => t('Created year + month'), - 'help' => t('In the form of YYYYMM.'), + 'help' => t('Date in the form of YYYYMM.'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_year_month', @@ -211,7 +212,7 @@ function comment_views_data() { $data['comments']['timestamp_year']['moved to'] = array('comment', 'changed_year'); $data['comment']['changed_year'] = array( 'title' => t('Created year'), - 'help' => t('In the form of YYYY.'), + 'help' => t('Date in the form of YYYY.'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_year', @@ -221,7 +222,7 @@ function comment_views_data() { $data['comments']['timestamp_month']['moved to'] = array('comment', 'changed_month'); $data['comment']['changed_month'] = array( 'title' => t('Created month'), - 'help' => t('In the form of MM (01 - 12).'), + 'help' => t('Date in the form of MM (01 - 12).'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_month', @@ -231,7 +232,7 @@ function comment_views_data() { $data['comments']['timestamp_day']['moved to'] = array('comment', 'changed_day'); $data['comment']['changed_day'] = array( 'title' => t('Created day'), - 'help' => t('In the form of DD (01 - 31).'), + 'help' => t('Date in the form of DD (01 - 31).'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_day', @@ -241,7 +242,7 @@ function comment_views_data() { $data['comments']['timestamp_week']['moved to'] = array('comment', 'changed_week'); $data['comment']['changed_week'] = array( 'title' => t('Created week'), - 'help' => t('In the form of WW (01 - 53).'), + 'help' => t('Date in the form of WW (01 - 53).'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_week', @@ -293,6 +294,16 @@ function comment_views_data() { ), ); + + // link to approve comment + $data['comment']['approve_comment'] = array( + 'field' => array( + 'title' => t('Approve link'), + 'help' => t('Provide a simple link to approve the comment.'), + 'handler' => 'views_handler_field_comment_link_approve', + ), + ); + // link to reply to comment $data['comment']['replyto_comment'] = array( 'field' => array( @@ -316,24 +327,46 @@ function comment_views_data() { ); $data['comment']['nid'] = array( - 'title' => t('Content'), - 'help' => t('The content to which the comment is a reply to.'), + 'title' => t('Nid'), + 'help' => t('The node ID to which the comment is a reply to.'), 'relationship' => array( + 'title' => t('Content'), + 'help' => t('The content to which the comment is a reply to.'), 'base' => 'node', 'base field' => 'nid', 'handler' => 'views_handler_relationship', 'label' => t('Content'), ), + 'filter' => array( + 'handler' => 'views_handler_filter_numeric', + ), + 'argument' => array( + 'handler' => 'views_handler_argument_numeric', + ), + 'field' => array( + 'handler' => 'views_handler_field_numeric', + ), ); $data['comment']['uid'] = array( - 'title' => t('User'), - 'help' => t("The User ID of the comment's author."), + 'title' => t('Author uid'), + 'help' => t('If you need more fields than the uid add the comment: author relationship'), 'relationship' => array( + 'title' => t('Author'), + 'help' => t("The User ID of the comment's author."), 'base' => 'users', 'base field' => 'uid', 'handler' => 'views_handler_relationship', - 'label' => t('User'), + 'label' => t('author'), + ), + 'filter' => array( + 'handler' => 'views_handler_filter_numeric', + ), + 'argument' => array( + 'handler' => 'views_handler_argument_numeric', + ), + 'field' => array( + 'handler' => 'views_handler_field_user', ), ); @@ -392,9 +425,11 @@ function comment_views_data() { 'field' => array( 'handler' => 'views_handler_field_ncs_last_comment_name', 'click sortable' => TRUE, + 'no group by' => TRUE, ), 'sort' => array( 'handler' => 'views_handler_sort_ncs_last_comment_name', + 'no group by' => TRUE, ), ); @@ -424,9 +459,11 @@ function comment_views_data() { 'field' => array( 'handler' => 'views_handler_field_ncs_last_updated', 'click sortable' => TRUE, + 'no group by' => TRUE, ), 'sort' => array( 'handler' => 'views_handler_sort_ncs_last_updated', + 'no group by' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_ncs_last_updated', @@ -447,6 +484,28 @@ function comment_views_data() { ), ); + // last_comment_uid + $data['node_comment_statistics']['last_comment_uid'] = array( + 'title' => t('Last comment uid'), + 'help' => t('The User ID of the author of the last comment of a node.'), + 'relationship' => array( + 'title' => t('Last comment author'), + 'base' => 'users', + 'base field' => 'uid', + 'handler' => 'views_handler_relationship', + 'label' => t('Last comment author'), + ), + 'filter' => array( + 'handler' => 'views_handler_filter_numeric', + ), + 'argument' => array( + 'handler' => 'views_handler_argument_numeric', + ), + 'field' => array( + 'handler' => 'views_handler_filter_user_name', + ), + ); + return $data; } @@ -497,6 +556,7 @@ function comment_views_data_alter(&$data) { 'name table' => 'users', 'name field' => 'name', 'handler' => 'views_handler_argument_comment_user_uid', + 'no group by' => TRUE, ), 'filter' => array( 'field' => 'uid', @@ -506,6 +566,19 @@ function comment_views_data_alter(&$data) { ), ); + $data['node']['cid'] = array( + 'title' => t('Comments of the node'), + 'help' => t('Relate all comments on the node. This will create 1 duplicate record for every comment. Usually if you need this it is better to create a comment view.'), + 'relationship' => array( + 'group' => t('Comment'), + 'label' => t('Comments'), + 'base' => 'comment', + 'base field' => 'nid', + 'relationship field' => 'nid', + 'handler' => 'views_handler_relationship', + ), + ); + } /** @@ -548,11 +621,11 @@ function template_preprocess_views_view_row_comment(&$vars) { $view = &$vars['view']; $plugin = &$view->style_plugin->row_plugin; $comment = $plugin->comments[$vars['row']->{$vars['field_alias']}]; - $node = node_load($comment->nid); + $node = $plugin->nodes[$comment->nid]; // Put the view on the node so we can retrieve it in the preprocess. $node->view = &$view; - $build = comment_view_multiple(array($comment->cid => $comment), $node); + $build = comment_view_multiple(array($comment->cid => $comment), $node, $plugin->options['view_mode']); // If we're displaying the comments without links, remove them from the // renderable array. There is no way to avoid building them in the first // place (see comment_build_content()). diff --git a/sites/all/modules/views/modules/comment.views_convert.inc b/sites/all/modules/views/modules/comment.views_convert.inc deleted file mode 100644 index f4f8d0f62..000000000 --- a/sites/all/modules/views/modules/comment.views_convert.inc +++ /dev/null @@ -1,130 +0,0 @@ -<?php -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - * - * Intervene to convert field values from the Views 1 format to the - * Views 2 format. Intervene only if $view->add_item() won't produce - * the right results, usually needed to set field options or values. - */ -function comment_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'field': - switch ($field['tablename']) { - case 'comments': - switch ($field['field']) { - case 'subject': - if ($field['options'] = 'nolink') { - $view->set_item_option($display, 'field', $id, 'link_to_comment', FALSE); - } - break; - case 'cid': - $view->set_item_option($display, 'field', $id, 'link_to_comment', FALSE); - break; - case 'timestamp': - $handlers = array( - 'views_handler_field_date_small' => 'small', - 'views_handler_field_date' => 'medium', - 'views_handler_field_date_large' => 'large', - 'views_handler_field_date_custom' => 'custom', - 'views_handler_field_since' => 'time ago', - ); - $view->set_item_option($display, 'field', $id, 'date_format', $handlers[$field['handler']]); - if (!empty($field['options'])) { - $view->set_item_option($display, 'field', $id, 'custom_date_format', $field['options']); - } - break; - case 'add': - $view->set_item_option($display, 'field', $id, 'field', 'replyto_comment'); - break; - } - break; - case 'node_comment_statistics': - switch ($field['field']) { - case 'last_comment_timestamp': - $handlers = array( - 'views_handler_field_date_small' => 'small', - 'views_handler_field_date' => 'medium', - 'views_handler_field_date_large' => 'large', - 'views_handler_field_date_custom' => 'custom', - 'views_handler_field_since' => 'time ago', - ); - $view->set_item_option($display, 'field', $id, 'date_format', $handlers[$field['handler']]); - if (!empty($field['options'])) { - $view->set_item_option($display, 'field', $id, 'custom_date_format', $field['options']); - } - break; - case 'last_changed': - $handlers = array( - 'views_handler_field_date_small' => 'small', - 'views_handler_field_date' => 'medium', - 'views_handler_field_date_large' => 'large', - 'views_handler_field_date_custom' => 'custom', - 'views_handler_field_since' => 'time ago', - ); - $item = $view->get_item($display, 'field', $id); - $item['date_format'] = $handlers[$field['handler']]; - if (!empty($field['options'])) { - $item['custom_date_format'] = $field['options']; - } - $item['field'] = 'last_updated'; - $view->set_item($display, 'field', $id, $item); - break; - } - break; - } - break; - case 'filter': - switch ($field['tablename']) { - case 'node_comment_statistics': - switch ($field['field']) { - case 'comment_count': - $view->set_item_option($display, 'filter', $id, 'operator', $field['operator']); - break; - case 'last_changed': - $field['field'] = 'last_updated'; - case 'last_comment_timestamp': - $item = $view->get_item($display, 'filter', $id); - $item['operator'] = $field['operator']; - $item['value'] = array( - 'type' => $field['value'] == 'now' ? 'offset' : 'date', - 'value' => $field['value'], - ); - if (!empty($field['options'])) { - $item['value']['value'] = intval($field['options']) .' seconds'; - } - $item['field'] = $field['field']; - $view->set_item($display, 'filter', $id, $item); - break; - } - break; - } - break; - case 'sort': - switch ($field['tablename']) { - case 'comments': - switch ($field['field']) { - case 'timestamp': - $field['options'] = $field['options'] == 'normal' ? 'second' : $field['options']; - $view->set_item_option($display, 'sort', $id, 'granularity', $field['options']); - break; - } - break; - case 'node_comment_statistics': - switch ($field['field']) { - case 'last_changed': - $view->set_item_option($display, 'sort', $id, 'field', 'last_updated'); - case 'last_comment_timestamp': - $field['options'] = $field['options'] == 'normal' ? 'second' : $field['options']; - $view->set_item_option($display, 'sort', $id, 'granularity', $field['options']); - break; - } - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/comment.views_default.inc b/sites/all/modules/views/modules/comment.views_default.inc index 41ce8b3d3..5a4587cc9 100644 --- a/sites/all/modules/views/modules/comment.views_default.inc +++ b/sites/all/modules/views/modules/comment.views_default.inc @@ -1,21 +1,24 @@ <?php + /** * @file - * Contains default views on behalf of the comment module. + * Bulk export of views_default objects generated by Bulk export module. */ /** - * Implements hook_views_default_views(). + * Implementation of hook_views_default_views() */ function comment_views_default_views() { + $views = array(); + $view = new view; $view->name = 'comments_recent'; $view->description = 'Contains a block and a page to list recent comments; the block will automatically link to the page, which displays the comment body as well as a link to the node.'; $view->tag = 'default'; $view->base_table = 'comment'; $view->human_name = 'Recent comments'; - $view->api_version = 2; - $view->version = 7; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ /* Display: Master */ @@ -24,12 +27,14 @@ function comment_views_default_views() { $handler->display->display_options['use_more'] = TRUE; $handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['exposed_form']['type'] = 'basic'; $handler->display->display_options['pager']['type'] = 'some'; $handler->display->display_options['pager']['options']['items_per_page'] = 5; $handler->display->display_options['style_plugin'] = 'list'; $handler->display->display_options['row_plugin'] = 'fields'; - /* Relationship: Comment: Node */ + /* Relationship: Comment: Content */ $handler->display->display_options['relationships']['nid']['id'] = 'nid'; $handler->display->display_options['relationships']['nid']['table'] = 'comment'; $handler->display->display_options['relationships']['nid']['field'] = 'nid'; @@ -39,18 +44,18 @@ function comment_views_default_views() { $handler->display->display_options['fields']['subject']['field'] = 'subject'; $handler->display->display_options['fields']['subject']['label'] = ''; $handler->display->display_options['fields']['subject']['link_to_comment'] = 1; - /* Field: Comment: Post date */ + /* Field: Comment: Updated date */ $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp'; $handler->display->display_options['fields']['timestamp']['table'] = 'comment'; $handler->display->display_options['fields']['timestamp']['field'] = 'changed'; $handler->display->display_options['fields']['timestamp']['label'] = ''; $handler->display->display_options['fields']['timestamp']['date_format'] = 'time ago'; - /* Sort criterion: Comment: Post date */ + /* Sort criterion: Comment: Updated date */ $handler->display->display_options['sorts']['timestamp']['id'] = 'timestamp'; $handler->display->display_options['sorts']['timestamp']['table'] = 'comment'; $handler->display->display_options['sorts']['timestamp']['field'] = 'changed'; $handler->display->display_options['sorts']['timestamp']['order'] = 'DESC'; - /* Filter: Content: Published or admin */ + /* Filter criterion: Content: Published or admin */ $handler->display->display_options['filters']['status_extra']['id'] = 'status_extra'; $handler->display->display_options['filters']['status_extra']['table'] = 'node'; $handler->display->display_options['filters']['status_extra']['field'] = 'status_extra'; @@ -59,7 +64,6 @@ function comment_views_default_views() { /* Display: Page */ $handler = $view->new_display('page', 'Page', 'page'); - $handler->display->display_options['defaults']['items_per_page'] = FALSE; $handler->display->display_options['defaults']['style_plugin'] = FALSE; $handler->display->display_options['style_plugin'] = 'list'; $handler->display->display_options['defaults']['style_options'] = FALSE; @@ -79,7 +83,7 @@ function comment_views_default_views() { $handler->display->display_options['fields']['title']['relationship'] = 'nid'; $handler->display->display_options['fields']['title']['label'] = 'Reply to'; $handler->display->display_options['fields']['title']['link_to_node'] = 1; - /* Field: Comment: Post date */ + /* Field: Comment: Updated date */ $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp'; $handler->display->display_options['fields']['timestamp']['table'] = 'comment'; $handler->display->display_options['fields']['timestamp']['field'] = 'changed'; @@ -91,17 +95,31 @@ function comment_views_default_views() { $handler->display->display_options['fields']['subject']['field'] = 'subject'; $handler->display->display_options['fields']['subject']['label'] = ''; $handler->display->display_options['fields']['subject']['link_to_comment'] = 1; - /* Field: Comment: Body */ + /* Field: Comment: Comment */ $handler->display->display_options['fields']['comment']['id'] = 'comment'; - $handler->display->display_options['fields']['comment']['table'] = 'comment'; - $handler->display->display_options['fields']['comment']['field'] = 'comment'; + $handler->display->display_options['fields']['comment']['table'] = 'field_data_comment_body'; + $handler->display->display_options['fields']['comment']['field'] = 'comment_body'; $handler->display->display_options['fields']['comment']['label'] = ''; $handler->display->display_options['path'] = 'comments/recent'; /* Display: Block */ $handler = $view->new_display('block', 'Block', 'block'); - $handler->display->display_options['block_description'] = 'Recent comments view'; - $views[$view->name] = $view; + $translatables['comments_recent'] = array( + t('Master'), + t('Recent comments'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Content'), + t('Page'), + t('Reply to'), + t('Block'), + ); + + $views['comments_recent'] = $view; $view = new view; $view->name = 'tracker'; @@ -109,212 +127,152 @@ function comment_views_default_views() { $view->tag = 'default'; $view->base_table = 'node'; $view->human_name = 'Tracker'; - $view->api_version = 2; - $view->version = 7; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ $handler = $view->new_display('default', 'Master', 'default'); - $handler->override_option('fields', array( + $handler->display->display_options['title'] = 'Recent posts'; + $handler->display->display_options['access']['type'] = 'none'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = '25'; + $handler->display->display_options['style_plugin'] = 'table'; + $handler->display->display_options['style_options']['columns'] = array( + 'type' => 'type', + 'title' => 'title', + 'name' => 'name', + 'comment_count' => 'comment_count', + 'last_comment_timestamp' => 'last_comment_timestamp', + 'timestamp' => 'title', + 'new_comments' => 'comment_count', + ); + $handler->display->display_options['style_options']['default'] = 'last_comment_timestamp'; + $handler->display->display_options['style_options']['info'] = array( 'type' => array( - 'id' => 'type', - 'table' => 'node', - 'field' => 'type', - 'label' => 'Type', + 'sortable' => 1, + 'separator' => '', ), 'title' => array( - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'label' => 'Title', - 'link_to_node' => TRUE, + 'sortable' => 1, + 'separator' => ' ', ), 'name' => array( - 'id' => 'name', - 'table' => 'users', - 'field' => 'name', - 'label' => 'Author', - 'link_to_user' => TRUE, + 'sortable' => 1, + 'separator' => '', ), 'comment_count' => array( - 'id' => 'comment_count', - 'table' => 'node_comment_statistics', - 'field' => 'comment_count', - 'label' => 'Replies', - 'set_precision' => FALSE, - 'precision' => 0, - 'decimal' => '.', - 'separator' => ',', - 'prefix' => '', - 'suffix' => '', + 'sortable' => 1, + 'separator' => '<br />', ), 'last_comment_timestamp' => array( - 'id' => 'last_comment_timestamp', - 'table' => 'node_comment_statistics', - 'field' => 'last_comment_timestamp', - 'label' => 'Last Post', - 'date_format' => 'small', - 'custom_date_format' => '', + 'sortable' => 1, + 'separator' => ' ', ), 'timestamp' => array( - 'id' => 'timestamp', - 'table' => 'history', - 'field' => 'timestamp', - 'label' => '', - 'comments' => 1, - 'relationship' => 'none', - 'link_to_node' => 0, - 'comment' => 1, + 'separator' => '', ), 'new_comments' => array( - 'id' => 'new_comments', - 'table' => 'node', - 'field' => 'new_comments', - 'label' => '', - 'set_precision' => FALSE, - 'precision' => 0, - 'decimal' => '.', - 'separator' => ',', - 'prefix' => '', - 'suffix' => ' new', - 'link_to_comment' => 1, - 'no_empty' => 1, - 'relationship' => 'none', - ), - )); - $handler->override_option('sorts', array( - 'last_comment_timestamp' => array( - 'id' => 'last_comment_timestamp', - 'table' => 'node_comment_statistics', - 'field' => 'last_comment_timestamp', - 'order' => 'ASC', - 'granularity' => 'second', - ), - )); - $handler->override_option('arguments', array( - 'uid_touch' => array( - 'id' => 'uid_touch', - 'table' => 'node', - 'field' => 'uid_touch', - 'default_action' => 'ignore', - 'style_plugin' => 'default_summary', - 'style_options' => array( - 'count' => TRUE, - 'override' => FALSE, - 'items_per_page' => 25, - ), - 'wildcard' => 'all', - 'wildcard_substitution' => 'All', - 'title' => 'Recent posts for %1', - 'default_argument_type' => 'fixed', - 'default_argument' => '', - 'validate_type' => 'none', - 'validate_fail' => 'not found', - 'relationship' => 'none', - 'default_argument_fixed' => '', - 'default_argument_php' => '', - 'validate_argument_node_type' => array( - 'album' => 0, - 'artist' => 0, - 'book' => 0, - 'page' => 0, - 'story' => 0, - 'track' => 0, - ), - 'validate_argument_php' => '', + 'separator' => '', ), - )); - $handler->override_option('filters', array( - 'status' => array( - 'id' => 'status', - 'table' => 'node', - 'field' => 'status', - 'operator' => '=', - 'value' => '1', - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - 'status' => array( - 'id' => 'status', - 'table' => 'comments', - 'field' => 'status', - 'operator' => '=', - 'value' => 1, - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - 'relationship' => 'none', - ), - ), - )); - $handler->override_option('access', array( - 'type' => 'none', - 'role' => array(), - 'perm' => '', - )); - $handler->override_option('title', 'Recent posts'); - $handler->override_option('items_per_page', '25'); - $handler->override_option('use_pager', TRUE); - $handler->override_option('style_plugin', 'table'); - $handler->override_option('style_options', array( - 'override' => 1, - 'order' => 'desc', - 'columns' => array( - 'type' => 'type', - 'title' => 'title', - 'name' => 'name', - 'comment_count' => 'comment_count', - 'last_comment_timestamp' => 'last_comment_timestamp', - 'timestamp' => 'title', - 'new_comments' => 'comment_count', - ), - 'info' => array( - 'type' => array( - 'sortable' => 1, - 'separator' => '', - ), - 'title' => array( - 'sortable' => 1, - 'separator' => ' ', - ), - 'name' => array( - 'sortable' => 1, - 'separator' => '', - ), - 'comment_count' => array( - 'sortable' => 1, - 'separator' => '<br />', - ), - 'last_comment_timestamp' => array( - 'sortable' => 1, - 'separator' => ' ', - ), - 'timestamp' => array( - 'separator' => '', - ), - 'new_comments' => array( - 'separator' => '', - ), - ), - 'default' => 'last_comment_timestamp', - )); + ); + $handler->display->display_options['style_options']['override'] = 1; + $handler->display->display_options['style_options']['order'] = 'desc'; + /* Field: Content: Type */ + $handler->display->display_options['fields']['type']['id'] = 'type'; + $handler->display->display_options['fields']['type']['table'] = 'node'; + $handler->display->display_options['fields']['type']['field'] = 'type'; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + /* Field: User: Name */ + $handler->display->display_options['fields']['name']['id'] = 'name'; + $handler->display->display_options['fields']['name']['table'] = 'users'; + $handler->display->display_options['fields']['name']['field'] = 'name'; + $handler->display->display_options['fields']['name']['label'] = 'Author'; + /* Field: Content: Comment count */ + $handler->display->display_options['fields']['comment_count']['id'] = 'comment_count'; + $handler->display->display_options['fields']['comment_count']['table'] = 'node_comment_statistics'; + $handler->display->display_options['fields']['comment_count']['field'] = 'comment_count'; + $handler->display->display_options['fields']['comment_count']['label'] = 'Replies'; + /* Field: Content: Last comment time */ + $handler->display->display_options['fields']['last_comment_timestamp']['id'] = 'last_comment_timestamp'; + $handler->display->display_options['fields']['last_comment_timestamp']['table'] = 'node_comment_statistics'; + $handler->display->display_options['fields']['last_comment_timestamp']['field'] = 'last_comment_timestamp'; + $handler->display->display_options['fields']['last_comment_timestamp']['label'] = 'Last Post'; + /* Field: Content: Has new content */ + $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp'; + $handler->display->display_options['fields']['timestamp']['table'] = 'history'; + $handler->display->display_options['fields']['timestamp']['field'] = 'timestamp'; + $handler->display->display_options['fields']['timestamp']['label'] = ''; + $handler->display->display_options['fields']['timestamp']['link_to_node'] = 0; + $handler->display->display_options['fields']['timestamp']['comments'] = 1; + /* Field: Content: New comments */ + $handler->display->display_options['fields']['new_comments']['id'] = 'new_comments'; + $handler->display->display_options['fields']['new_comments']['table'] = 'node'; + $handler->display->display_options['fields']['new_comments']['field'] = 'new_comments'; + $handler->display->display_options['fields']['new_comments']['label'] = ''; + $handler->display->display_options['fields']['new_comments']['hide_empty'] = TRUE; + $handler->display->display_options['fields']['new_comments']['suffix'] = ' new'; + $handler->display->display_options['fields']['new_comments']['link_to_comment'] = 1; + /* Sort criterion: Content: Last comment time */ + $handler->display->display_options['sorts']['last_comment_timestamp']['id'] = 'last_comment_timestamp'; + $handler->display->display_options['sorts']['last_comment_timestamp']['table'] = 'node_comment_statistics'; + $handler->display->display_options['sorts']['last_comment_timestamp']['field'] = 'last_comment_timestamp'; + /* Contextual filter: Content: User posted or commented */ + $handler->display->display_options['arguments']['uid_touch']['id'] = 'uid_touch'; + $handler->display->display_options['arguments']['uid_touch']['table'] = 'node'; + $handler->display->display_options['arguments']['uid_touch']['field'] = 'uid_touch'; + $handler->display->display_options['arguments']['uid_touch']['exception']['title_enable'] = 1; + $handler->display->display_options['arguments']['uid_touch']['title_enable'] = 1; + $handler->display->display_options['arguments']['uid_touch']['title'] = 'Recent posts for %1'; + $handler->display->display_options['arguments']['uid_touch']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['uid_touch']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['uid_touch']['specify_validation'] = 1; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = '1'; + $handler->display->display_options['filters']['status']['group'] = 0; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + + /* Display: Page */ $handler = $view->new_display('page', 'Page', 'page'); - $handler->override_option('path', 'tracker'); - $handler->override_option('menu', array( - 'type' => 'normal', - 'title' => 'Recent posts', - 'weight' => 0, - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => NULL, - 'weight' => NULL, - )); - $views[$view->name] = $view; + $handler->display->display_options['path'] = 'tracker'; + $handler->display->display_options['menu']['type'] = 'normal'; + $handler->display->display_options['menu']['title'] = 'Recent posts'; + $translatables['tracker'] = array( + t('Master'), + t('Recent posts'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('Type'), + t('Title'), + t('Author'), + t('Replies'), + t('.'), + t(','), + t('Last Post'), + t(' new'), + t('All'), + t('Recent posts for %1'), + t('Page'), + ); + + $views['tracker'] = $view; return $views; } diff --git a/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc b/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc index 39a689d6f..dfba09ca4 100644 --- a/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc +++ b/sites/all/modules/views/modules/comment/views_handler_argument_comment_user_uid.inc @@ -36,19 +36,14 @@ class views_handler_argument_comment_user_uid extends views_handler_argument { function query($group_by = FALSE) { $this->ensure_my_table(); - $nid_alias = $this->query->add_field('node', 'nid'); - $subselect = db_select('comment', 'c'); $subselect->addField('c', 'cid'); - // @TODO: Figure out why condition/placeholders doesn't work here. - $subselect->where("c.uid = $this->argument"); - $subselect->where("c.nid = $nid_alias"); - $subselect = $subselect->countQuery(); - $subselect->preExecute(); + $subselect->condition('c.uid', $this->argument); + $subselect->where("c.nid = $this->table_alias.nid"); $condition = db_or() ->condition("$this->table_alias.uid", $this->argument, '=') - ->where("0 < (" . (string) $subselect . ")"); + ->exists($subselect); $this->query->add_where(0, $condition); } diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment.inc index 66ead3d06..9458bad5e 100644 --- a/sites/all/modules/views/modules/comment/views_handler_field_comment.inc +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment.inc @@ -17,6 +17,8 @@ class views_handler_field_comment extends views_handler_field { function option_definition() { $options = parent::option_definition(); $options['link_to_comment'] = array('default' => TRUE); + $options['link_to_node'] = array('default' => FALSE); + return $options; } @@ -30,14 +32,27 @@ class views_handler_field_comment extends views_handler_field { '#type' => 'checkbox', '#default_value' => $this->options['link_to_comment'], ); + $form['link_to_node'] = array( + '#title' => t('Link field to the node if there is no comment.'), + '#type' => 'checkbox', + '#default_value' => $this->options['link_to_node'], + ); parent::options_form($form, $form_state); } function render_link($data, $values) { - if (!empty($this->options['link_to_comment']) && $data !== NULL && $data !== '') { + if (!empty($this->options['link_to_comment'])) { $this->options['alter']['make_link'] = TRUE; - $this->options['alter']['path'] = "node/". $this->get_value($values, 'nid'); - $this->options['alter']['fragment'] = "comment-" . $this->get_value($values, 'cid'); + $nid = $this->get_value($values, 'nid'); + $cid = $this->get_value($values, 'cid'); + if (!empty($cid)) { + $this->options['alter']['path'] = "comment/" . $cid; + $this->options['alter']['fragment'] = "comment-" . $cid; + } + // If there is no comment link to the node. + else if ($this->options['link_to_node']) { + $this->options['alter']['path'] = "node/" . $nid; + } } return $data; diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc index e86cddac8..17b080a9f 100644 --- a/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment_depth.inc @@ -10,4 +10,3 @@ class views_handler_field_comment_depth extends views_handler_field { return count(explode('.', $values->comments_thread)) - 1; } } - diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc index f8fe18c56..fd4ed7a82 100644 --- a/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment_link.inc @@ -12,6 +12,7 @@ class views_handler_field_comment_link extends views_handler_field { function option_definition() { $options = parent::option_definition(); $options['text'] = array('default' => '', 'translatable' => TRUE); + $options['link_to_node'] = array('default' => FALSE); return $options; } @@ -21,6 +22,11 @@ class views_handler_field_comment_link extends views_handler_field { '#title' => t('Text to display'), '#default_value' => $this->options['text'], ); + $form['link_to_node'] = array( + '#title' => t('Link field to the node if there is no comment.'), + '#type' => 'checkbox', + '#default_value' => $this->options['link_to_node'], + ); parent::options_form($form, $form_state); } @@ -30,7 +36,7 @@ class views_handler_field_comment_link extends views_handler_field { } function render($values) { - $value = $this->get_value($values, 'nid'); + $value = $this->get_value($values, 'cid'); return $this->render_link($this->sanitize_value($value), $values); } @@ -40,9 +46,16 @@ class views_handler_field_comment_link extends views_handler_field { $cid = $this->get_value($values, 'cid'); $this->options['alter']['make_link'] = TRUE; - $this->options['alter']['path'] = "comment/" . $cid; $this->options['alter']['html'] = TRUE; - $this->options['alter']['fragment'] = "comment-" . $cid; + + if (!empty($cid)) { + $this->options['alter']['path'] = "comment/" . $cid; + $this->options['alter']['fragment'] = "comment-" . $cid; + } + // If there is no comment link to the node. + else if ($this->options['link_to_node']) { + $this->options['alter']['path'] = "node/" . $nid; + } return $text; } diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc new file mode 100644 index 000000000..bd39fa9d8 --- /dev/null +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment_link_approve.inc @@ -0,0 +1,33 @@ +<?php +/** + * @file + * Provides a comment approve link. + */ +class views_handler_field_comment_link_approve extends views_handler_field_comment_link { + function construct() { + parent::construct(); + $this->additional_fields['status'] = 'status'; + } + function access() { + //needs permission to administer comments in general + return user_access('administer comments'); + } + + function render_link($data, $values) { + $status = $this->get_value($values, 'status'); + + // Don't show an approve link on published nodes. + if ($status == COMMENT_PUBLISHED) { + return; + } + + $text = !empty($this->options['text']) ? $this->options['text'] : t('approve'); + $cid = $this->get_value($values, 'cid'); + + $this->options['alter']['make_link'] = TRUE; + $this->options['alter']['path'] = "comment/" . $cid . "/approve"; + $this->options['alter']['query'] = drupal_get_destination() + array('token' => drupal_get_token("comment/$cid/approve")); + + return $text; + } +} diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc index 1efb27434..da669a08c 100644 --- a/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment_link_delete.inc @@ -13,7 +13,7 @@ class views_handler_field_comment_link_delete extends views_handler_field_commen $cid = $this->get_value($values, 'cid'); $this->options['alter']['make_link'] = TRUE; - $this->options['alter']['path'] = "comment/delete/" . $cid; + $this->options['alter']['path'] = "comment/" . $cid . "/delete"; $this->options['alter']['query'] = drupal_get_destination(); return $text; diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc index e2aaa4d31..2cac79b55 100644 --- a/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment_link_edit.inc @@ -44,9 +44,8 @@ class views_handler_field_comment_link_edit extends views_handler_field_comment_ $this->options['alter']['query'] = drupal_get_destination(); } - $this->options['alter']['path'] = "comment/edit/" . $comment->cid; + $this->options['alter']['path'] = "comment/" . $comment->cid . "/edit"; return $text; } } - diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc index e8c5b0d53..4cd78de77 100644 --- a/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc @@ -58,4 +58,3 @@ class views_handler_field_comment_node_link extends views_handler_field { return !empty($node->content['links']['comment']) ? drupal_render($node->content['links']['comment']) : ''; } } - diff --git a/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc b/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc index 0a3537e1b..7362643ae 100644 --- a/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc +++ b/sites/all/modules/views/modules/comment/views_handler_field_comment_username.inc @@ -29,6 +29,7 @@ class views_handler_field_comment_username extends views_handler_field { function render_link($data, $values) { if (!empty($this->options['link_to_user'])) { + $account = new stdClass(); $account->uid = $this->get_value($values, 'uid'); $account->name = $this->get_value($values); $account->homepage = $this->get_value($values, 'homepage'); diff --git a/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc b/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc index 900201919..8d83b2559 100644 --- a/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc +++ b/sites/all/modules/views/modules/comment/views_handler_filter_comment_user_uid.inc @@ -8,16 +8,14 @@ class views_handler_filter_comment_user_uid extends views_handler_filter_user_na function query() { $this->ensure_my_table(); - $subselect = db_select('comments', 'c'); + $subselect = db_select('comment', 'c'); $subselect->addField('c', 'cid'); - $subselect->where("uid $this->operator $this->value"); - $subselect->where("nid = $this->table_alias.nid"); - $subselect = $subselect->countQuery(); + $subselect->condition('c.uid', $this->value, $this->operator); + $subselect->where("c.nid = $this->table_alias.nid"); $condition = db_or() ->condition("$this->table_alias.uid", $this->value, $this->operator) - ->where("0 < (" . (string) $subselect . ")") - ->condition(0, $subselect, '<'); + ->exists($subselect); $this->query->add_where(0, $condition); } diff --git a/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc b/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc index fd788ec01..39ab749a6 100644 --- a/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc +++ b/sites/all/modules/views/modules/comment/views_handler_sort_ncs_last_updated.inc @@ -9,4 +9,3 @@ class views_handler_sort_ncs_last_updated extends views_handler_sort_date { $this->field_alias = $this->query->add_orderby(NULL, "GREATEST(" . $this->node_table . ".changed, " . $this->table_alias . ".last_comment_timestamp)", $this->options['order'], $this->table_alias . '_' . $this->field); } } - diff --git a/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc b/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc index 0ff3c3a36..46a9d8714 100644 --- a/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc +++ b/sites/all/modules/views/modules/comment/views_plugin_row_comment_rss.inc @@ -10,51 +10,91 @@ class views_plugin_row_comment_rss extends views_plugin_row { var $base_table = 'comment'; var $base_field = 'cid'; - + function pre_render($result) { $cids = array(); - $this->comments = array(); + $nids = array(); foreach ($result as $row) { $cids[] = $row->cid; } - $cresult = comment_load_multiple($cids); - foreach ($cresult as $comment) { - $comment = drupal_unpack($comment); - $comment->name = $comment->uid ? $comment->registered_name : $comment->name; + $this->comments = comment_load_multiple($cids); + foreach ($this->comments as &$comment) { $comment->depth = count(explode('.', $comment->thread)) - 1; - $this->comments[$comment->cid] = $comment; + $nids[] = $comment->nid; } + + $this->nodes = node_load_multiple($nids); } function render($row) { global $base_url; - // Load the specified comment: - $comment = $this->comments[$row->{$this->field_alias}]; + $cid = $row->{$this->field_alias}; + if (!is_numeric($cid)) { + return; + } - $item = new stdClass(); - $item->title = $comment->subject; - $item->link = url('node/' . $comment->nid, array('absolute' => TRUE, 'fragment' => 'comment-' . $comment->cid)); - $item->description = check_markup($comment->comment, $comment->format); - $item->elements = array( - array('key' => 'pubDate', 'value' => gmdate('r', $comment->timestamp)), - array('key' => 'dc:creator', 'value' => $comment->name), + $item_length = $this->options['item_length']; + if ($item_length == 'default') { + $item_length = variable_get('feed_item_length', 'teaser'); + } + + // Load the specified comment and its associated node: + $comment = $this->comments[$cid]; + if (empty($comment) || empty($this->nodes[$comment->nid])) { + return; + } + + $item_text = ''; + + $uri = entity_uri('comment', $comment); + $comment->link = url($uri['path'], $uri['options'] + array('absolute' => TRUE)); + $comment->rss_namespaces = array(); + $comment->rss_elements = array( + array( + 'key' => 'pubDate', + 'value' => gmdate('r', $comment->created), + ), + array( + 'key' => 'dc:creator', + 'value' => $comment->name, + ), array( 'key' => 'guid', - 'value' => 'comment ' . $row->cid . ' at ' . $base_url, + 'value' => 'comment ' . $comment->cid . ' at ' . $base_url, 'attributes' => array('isPermaLink' => 'false'), - 'namespace' => array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/'), ), ); - foreach ($item->elements as $element) { - if (isset($element['namespace'])) { - $this->view->style_plugin->namespaces = array_merge($this->view->style_plugin->namespaces, $element['namespace']); - } + // The comment gets built and modules add to or modify + // $comment->rss_elements and $comment->rss_namespaces. + $build = comment_view($comment, $this->nodes[$comment->cid], 'rss'); + unset($build['#theme']); + + if (!empty($comment->rss_namespaces)) { + $this->view->style_plugin->namespaces = array_merge($this->view->style_plugin->namespaces, $comment->rss_namespaces); + } + + // Hide the links if desired. + if (!$this->options['links']) { + hide($build['links']); } + if ($item_length != 'title') { + // We render comment contents and force links to be last. + $build['links']['#weight'] = 1000; + $item_text .= drupal_render($build); + } + + $item = new stdClass(); + $item->description = $item_text; + $item->title = $comment->subject; + $item->link = $comment->link; + $item->elements = $comment->rss_elements; + $item->cid = $comment->cid; + return theme($this->theme_functions(), array( 'view' => $this->view, 'options' => $this->options, diff --git a/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc b/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc index 5228d9448..284fa5f0d 100644 --- a/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc +++ b/sites/all/modules/views/modules/comment/views_plugin_row_comment_view.inc @@ -8,23 +8,41 @@ * Plugin which performs a comment_view on the resulting object. */ class views_plugin_row_comment_view extends views_plugin_row { - var $base_table = 'comment'; var $base_field = 'cid'; + var $base_table = 'comment'; + + /** + * Stores all comments which are preloaded. + */ + var $comments = array(); + + /** + * Stores all nodes of all comments which are preloaded. + */ + var $nodes = array(); function summary_title() { - if (empty($this->options['links'])) { - return t('Hide links'); - } - return t('Display links'); + return t('Settings'); } function option_definition() { $options = parent::option_definition(); $options['links'] = array('default' => TRUE); + $options['view_mode'] = array('default' => 'full'); return $options; } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + + $options = $this->options_form_summary_options(); + $form['view_mode'] = array( + '#type' => 'select', + '#options' => $options, + '#title' => t('View mode'), + '#default_value' => $this->options['view_mode'], + ); + $form['links'] = array( '#type' => 'checkbox', '#title' => t('Display links'), @@ -32,19 +50,47 @@ class views_plugin_row_comment_view extends views_plugin_row { ); } + + /** + * Return the main options, which are shown in the summary title. + */ + function options_form_summary_options() { + $entity_info = entity_get_info('comment'); + $options = array(); + if (!empty($entity_info['view modes'])) { + foreach ($entity_info['view modes'] as $mode => $settings) { + $options[$mode] = $settings['label']; + } + } + if (empty($options)) { + $options = array( + 'full' => t('Full content') + ); + } + + return $options; + } + function pre_render($result) { $cids = array(); - $this->comments = array(); foreach ($result as $row) { $cids[] = $row->cid; } + // Load all comments. $cresult = comment_load_multiple($cids); + $nids = array(); foreach ($cresult as $comment) { $comment->depth = count(explode('.', $comment->thread)) - 1; $this->comments[$comment->cid] = $comment; + $nids[] = $comment->nid; + } + + // Load all nodes of the comments. + $nodes = node_load_multiple(array_unique($nids)); + foreach ($nodes as $node) { + $this->nodes[$node->nid] = $node; } } } - diff --git a/sites/all/modules/views/modules/contact.views.inc b/sites/all/modules/views/modules/contact.views.inc index 071f2cb4e..85bcb9456 100644 --- a/sites/all/modules/views/modules/contact.views.inc +++ b/sites/all/modules/views/modules/contact.views.inc @@ -14,4 +14,3 @@ function contact_views_data() { ); return $data; } - diff --git a/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc b/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc index 26e5b1d4f..3bf0ad15d 100644 --- a/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc +++ b/sites/all/modules/views/modules/contact/views_handler_field_contact_link.inc @@ -74,4 +74,3 @@ class views_handler_field_contact_link extends views_handler_field_user_link { return $text; } } - diff --git a/sites/all/modules/views/modules/field.views.inc b/sites/all/modules/views/modules/field.views.inc index 0cf726b58..7dc5cb20c 100644 --- a/sites/all/modules/views/modules/field.views.inc +++ b/sites/all/modules/views/modules/field.views.inc @@ -13,6 +13,9 @@ /** * Implements hook_views_data() + * + * Field modules can implement hook_field_views_data() to override + * the default behavior for adding fields. */ function field_views_data() { $data = array(); @@ -30,13 +33,34 @@ function field_views_data() { drupal_alter('field_views_data', $result, $field, $module); if (is_array($result)) { - $data = array_merge($data, $result); + $data = drupal_array_merge_deep($result, $data); } } return $data; } +/** + * Implements hook_views_data_alter() + * + * Field modules can implement hook_field_views_data_views_data_alter() to + * alter the views data on a per field basis. This is weirdly named so as + * not to conflict with the drupal_alter('field_views_data') in + * field_views_data. + */ +function field_views_data_alter(&$data) { + foreach (field_info_fields() as $field) { + if ($field['storage']['type'] != 'field_sql_storage') { + continue; + } + + $function = $field['module'] . '_field_views_data_views_data_alter'; + if (function_exists($function)) { + $function($data, $field); + } + } +} + /** * Returns the label of a certain field. * @@ -44,22 +68,24 @@ function field_views_data() { */ function field_views_field_label($field_name) { $label_counter = array(); + $all_labels = array(); // Count the amount of instances per label per field. $instances = field_info_instances(); - foreach ($instances as $entity_type) { + foreach ($instances as $entity_name => $entity_type) { foreach ($entity_type as $bundle) { if (isset($bundle[$field_name])) { $label_counter[$bundle[$field_name]['label']] = isset($label_counter[$bundle[$field_name]['label']]) ? ++$label_counter[$bundle[$field_name]['label']] : 1; + $all_labels[$entity_name][$bundle[$field_name]['label']] = TRUE; } } } if (empty($label_counter)) { - return $field_name; + return array($field_name, $all_labels); } // Sort the field lables by it most used label and return the most used one. arsort($label_counter); $label_counter = array_keys($label_counter); - return $label_counter[0]; + return array($label_counter[0], $all_labels); } /** @@ -82,23 +108,32 @@ function field_views_field_default_views_data($field) { $bundles_names = array(); $supports_revisions = FALSE; $entity_tables = array(); - $group_name = count($field['bundles']) > 1 ? t('Fields') : NULL; + $current_tables = array(); + $revision_tables = array(); + $groups = array(); + + $group_name = count($field['bundles']) > 1 ? t('Field') : NULL; // Build the relationships between the field table and the entity tables. foreach ($field['bundles'] as $entity => $bundles) { $entity_info = entity_get_info($entity); - if (empty($group_name)) { - $group_name = $entity_info['label']; + $groups[$entity] = $entity_info['label']; - // Override Node to Content. - if ($group_name == t('Node')) { - $group_name = t('Content'); - } + // Override Node to Content. + if ($groups[$entity] == t('Node')) { + $groups[$entity] = t('Content'); + } + + // If only one bundle use this as the default name. + if (empty($group_name)) { + $group_name = $groups[$entity]; } $entity_tables[$entity_info['base table']] = $entity; + $current_tables[$entity] = $entity_info['base table']; if (isset($entity_info['revision table'])) { $entity_tables[$entity_info['revision table']] = $entity; + $revision_tables[$entity] = $entity_info['revision table']; } $data[$current_table]['table']['join'][$entity_info['base table']] = array( @@ -134,7 +169,7 @@ function field_views_field_default_views_data($field) { $tables[FIELD_LOAD_REVISION] = $revision_table; } - $add_fields = array('entity_type', 'delta', 'language', 'bundle'); + $add_fields = array('delta', 'language', 'bundle'); foreach ($field['columns'] as $column_name => $attributes) { $add_fields[] = _field_sql_storage_columnname($field['field_name'], $column_name); } @@ -143,7 +178,7 @@ function field_views_field_default_views_data($field) { // level, not at the instance level. So we just go through all instances // and take the one which is used the most frequently. $field_name = $field['field_name']; - $label = field_views_field_label($field_name); + list($label, $all_labels) = field_views_field_label($field_name); foreach ($tables as $type => $table) { if ($type == FIELD_LOAD_CURRENT) { $group = $group_name; @@ -161,26 +196,59 @@ function field_views_field_default_views_data($field) { 'group' => $group, 'title' => $label, 'title short' => $label, - 'help' => t('Appears in: @bundles', array('@bundles' => implode(', ', $bundles_names))), + 'help' => t('Appears in: @bundles.', array('@bundles' => implode(', ', $bundles_names))), ); + + // Go through and create a list of aliases for all possible combinations of + // entity type + name. + $aliases = array(); + $also_known = array(); + foreach ($all_labels as $entity_name => $labels) { + foreach ($labels as $label_name => $true) { + if ($type == FIELD_LOAD_CURRENT) { + if ($group_name != $groups[$entity_name] || $label != $label_name) { + $aliases[] = array( + 'base' => $current_tables[$entity_name], + 'group' => $groups[$entity_name], + 'title' => $label_name, + 'help' => t('This is an alias of @group: @field.', array('@group' => $group_name, '@field' => $label)), + ); + } + $also_known[] = t('@group: @field', array('@group' => $groups[$entity_name], '@field' => $label_name)); + } + else { + if ($group_name != $groups[$entity_name] && $label != $label_name && isset($revision_tables[$entity_name])) { + $aliases[] = array( + 'base' => $revision_tables[$entity_name], + 'group' => t('@group (historical data)', array('@group' => $groups[$entity_name])), + 'title' => $label_name, + 'help' => t('This is an alias of @group: @field.', array('@group' => $group_name, '@field' => $label)), + ); + } + $also_known[] = t('@group (historical data): @field', array('@group' => $groups[$entity_name], '@field' => $label_name)); + } + } + } + if ($aliases) { + $data[$table][$column]['aliases'] = $aliases; + $data[$table][$column]['help'] .= ' ' . t('Also known as: !also.', array('!also' => implode(', ', $also_known))); + } + + $keys = array_keys($field['columns']); + $real_field = reset($keys); $data[$table][$column]['field'] = array( - 'field' => $column, 'table' => $table, 'handler' => 'views_handler_field_field', 'click sortable' => TRUE, 'field_name' => $field['field_name'], + // Provide a real field for group by. + 'real field' => $column . '_' . $real_field, 'additional fields' => $add_fields, 'entity_tables' => $entity_tables, // Default the element type to div, let the UI change it if necessary. 'element type' => 'div', 'is revision' => $type == FIELD_LOAD_REVISION, - 'entity id' => $entity_info['entity keys']['id'], - 'base table' => $entity_info['base table'], ); - if ($type == FIELD_LOAD_REVISION) { - $data[$table][$column]['field']['revision id'] = $entity_info['entity keys']['revision']; - $data[$table][$column]['field']['base table'] = $entity_info['revision table']; - } } foreach ($field['columns'] as $column => $attributes) { @@ -211,18 +279,23 @@ function field_views_field_default_views_data($field) { } - if (count($field['columns']) == 1 && $column == 'value') { + if (count($field['columns']) == 1 || $column == 'value') { $title = t('@label (!name)', array('@label' => $label, '!name' => $field['field_name'])); // CCK used the first 10 characters of $label. Probably doesn't matter. - $title_short = $field['field_name']; + $title_short = $label; } else { - $title = t('@label (!name) - !column', array('@label' => $label, '!name' => $field['field_name'], '!column' => $column)); - $title_short = t('@label - !column', array('@label' => $field['field_name'], '!column' => $column)); + $title = t('@label (!name:!column)', array('@label' => $label, '!name' => $field['field_name'], '!column' => $column)); + $title_short = t('@label:!column', array('@label' => $label, '!column' => $column)); } foreach ($tables as $type => $table) { - $group = $type == FIELD_LOAD_CURRENT ? t('Fields') : t('Fields (historical data)'); + if ($type == FIELD_LOAD_CURRENT) { + $group = $group_name; + } + else { + $group = t('@group (historical data)', array('@group' => $group_name)); + } $column_real_name = $field['storage']['details']['sql'][$type][$table][$column]; // Load all the fields from the table by default. @@ -232,9 +305,37 @@ function field_views_field_default_views_data($field) { 'group' => $group, 'title' => $title, 'title short' => $title_short, - 'help' => t('Appears in: @bundles', array('@bundles' => implode(', ', $bundles_names))), + 'help' => t('Appears in: @bundles.', array('@bundles' => implode(', ', $bundles_names))), ); + // Go through and create a list of aliases for all possible combinations of + // entity type + name. + $aliases = array(); + $also_known = array(); + foreach ($all_labels as $entity_name => $labels) { + foreach ($labels as $label_name => $true) { + if ($group_name != $groups[$entity_name] || $label != $label_name) { + if (count($field['columns']) == 1 || $column == 'value') { + $alias_title = t('@label (!name)', array('@label' => $label_name, '!name' => $field['field_name'])); + // CCK used the first 10 characters of $label. Probably doesn't matter. + } + else { + $alias_title = t('@label (!name:!column)', array('@label' => $label_name, '!name' => $field['field_name'], '!column' => $column)); + } + $aliases[] = array( + 'group' => $groups[$entity_name], + 'title' => $alias_title, + 'help' => t('This is an alias of @group: @field.', array('@group' => $group_name, '@field' => $title)), + ); + } + $also_known[] = t('@group: @field', array('@group' => $groups[$entity_name], '@field' => $title)); + } + } + if ($aliases) { + $data[$table][$column_real_name]['aliases'] = $aliases; + $data[$table][$column_real_name]['help'] .= ' ' . t('Also known as: !also.', array('!also' => implode(', ', $also_known))); + } + $data[$table][$column_real_name]['argument'] = array( 'field' => $column_real_name, 'table' => $table, @@ -263,14 +364,14 @@ function field_views_field_default_views_data($field) { // Expose additional delta column for multiple value fields. if ($field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED) { - $title_delta = t('@label (!name) - delta', array('@label' => $label, '!name' => $field['field_name'])); - $title_short_delta = t('!name - delta', array('!name' => $field['field_name'])); + $title_delta = t('@label (!name:delta)', array('@label' => $label, '!name' => $field['field_name'])); + $title_short_delta = t('@label:delta', array('@label' => $label)); $data[$table]['delta'] = array( 'group' => $group, 'title' => $title_delta, 'title short' => $title_short_delta, - 'help' => t('Delta - Appears in: @bundles', array('@bundles' => implode(', ', $bundles_names))), + 'help' => t('Delta - Appears in: @bundles.', array('@bundles' => implode(', ', $bundles_names))), ); $data[$table]['delta']['argument'] = array( 'field' => 'delta', @@ -309,7 +410,7 @@ function list_field_views_data($field) { $data = field_views_field_default_views_data($field); foreach ($data as $table_name => $table_data) { foreach ($table_data as $field => $field_data) { - if (isset($field_data['filter'])) { + if (isset($field_data['filter']) && $field != 'delta') { $data[$table_name][$field]['filter']['handler'] = 'views_handler_filter_field_list'; } } diff --git a/sites/all/modules/views/modules/field/views_handler_field_field.inc b/sites/all/modules/views/modules/field/views_handler_field_field.inc index b8c29d484..26c54fcdc 100644 --- a/sites/all/modules/views/modules/field/views_handler_field_field.inc +++ b/sites/all/modules/views/modules/field/views_handler_field_field.inc @@ -37,8 +37,8 @@ class views_handler_field_field extends views_handler_field { public $items = array(); /** - * Store the field informations. - */ + * Store the field informations. + */ public $field_info = array(); function init(&$view, &$options) { @@ -57,14 +57,51 @@ class views_handler_field_field extends views_handler_field { $this->limit_values = TRUE; } + // If "First and last only" is chosen, limit the values + if (!empty($this->options['delta_first_last'])) { + $this->limit_values = TRUE; + } + // Otherwise, we only limit values if the user hasn't selected "all", 0, or // the value matching field cardinality. - if (intval($this->options['delta_limit']) && ($this->options['delta_limit'] != $field['cardinality'])) { + if ((intval($this->options['delta_limit']) && ($this->options['delta_limit'] != $field['cardinality'])) || intval($this->options['delta_offset'])) { $this->limit_values = TRUE; } } } + /** + * Return TRUE if the user has access to view this field. + */ + function access() { + $base_table = $this->get_base_table(); + return field_access('view', $this->field_info, $this->definition['entity_tables'][$base_table]); + } + + /** + * Set the base_table and base_table_alias. + */ + function get_base_table() { + if (!isset($this->base_table)) { + // This base_table is coming from the entity not the field. + $this->base_table = $this->view->base_table; + + // If the current field is under a relationship you can't be sure that the + // base table of the view is the base table of the current field. + // For example a field from a node author on a node view does have users as base table. + if (!empty($this->options['relationship']) && $this->options['relationship'] != 'none') { + $relationships = $this->view->display_handler->get_option('relationships'); + if (!empty($relationships[$this->options['relationship']])) { + $options = $relationships[$this->options['relationship']]; + $data = views_fetch_data($options['table']); + $this->base_table = $data[$options['field']]['relationship']['base']; + } + } + } + + return $this->base_table; + } + /** * Called to add the field to a query. * @@ -77,22 +114,7 @@ class views_handler_field_field extends views_handler_field { * present in the query itself (such as "sphinx"). */ function query($use_groupby = FALSE) { - $base_table_alias = $base_table = $this->definition['base table']; - - // If the current field is under a relationship you can't be sure that the - // base table of the view is the base table of the current field. - // For example a field from a node author on a node view does have users as base table. - if (!empty($this->relationship)) { - foreach ($this->view->relationship as $relationship) { - if ($relationship->alias == $this->relationship) { - $base_table = $relationship->definition['base']; - $base_table_alias = $relationship->alias; - - $table_data = views_fetch_data($base_table); - $base_field = $table_data['table']['base']['field']; - } - } - } + $this->get_base_table(); $params = array(); if ($use_groupby) { @@ -102,21 +124,30 @@ class views_handler_field_field extends views_handler_field { $params = array( 'function' => 'min', ); + + $this->ensure_my_table(); } // Get the entity type according to the base table of the field. // Then add it to the query as a formula. That way we can avoid joining // the field table if all we need is entity_id and entity_type. - $entity_type = $this->definition['entity_tables'][$base_table]; + $entity_type = $this->definition['entity_tables'][$this->base_table]; $entity_info = entity_get_info($entity_type); + if (isset($this->relationship)) { + $this->base_table_alias = $this->relationship; + } + else { + $this->base_table_alias = $this->base_table; + } + // We always need the base field (entity_id / revision_id). if (empty($this->definition['is revision'])) { - $this->field_alias = $this->query->add_field($base_table_alias, $entity_info['entity keys']['id'], '', $params); + $this->field_alias = $this->query->add_field($this->base_table_alias, $entity_info['entity keys']['id'], '', $params); } else { - $this->field_alias = $this->query->add_field($base_table_alias, $entity_info['entity keys']['revision'], '', $params); - $this->aliases['entity id'] = $this->query->add_field($base_table_alias, $entity_info['entity keys']['id'], '', $params); + $this->field_alias = $this->query->add_field($this->base_table_alias, $entity_info['entity keys']['revision'], '', $params); + $this->aliases['entity id'] = $this->query->add_field($this->base_table_alias, $entity_info['entity keys']['id'], '', $params); } @@ -132,13 +163,29 @@ class views_handler_field_field extends views_handler_field { } if ($use_groupby) { - // Remove additional fields that are not the group_column or are not in - // the additional group_columns as their presence in the query inhibits - // grouping. - $group_field_name = $this->definition['field_name'] . '_' . $this->options['group_column']; - if (in_array($group_field_name, $fields)) { - $fields = array($group_field_name => $group_field_name) + $this->options['group_columns']; + // Add the fields that we're actually grouping on. + $options = array(); + + if ($this->options['group_column'] != 'entity id') { + $options = array($this->options['group_column'] => $this->options['group_column']); } + + $options += $this->options['group_columns']; + + + $fields = array(); + $rkey = $this->definition['is revision'] ? 'FIELD_LOAD_REVISION' : 'FIELD_LOAD_CURRENT'; + // Go through the list and determine the actual column name from field api. + foreach ($options as $column) { + $name = $column; + if (isset($this->field_info['storage']['details']['sql'][$rkey][$this->table][$column])) { + $name = $this->field_info['storage']['details']['sql'][$rkey][$this->table][$column]; + } + + $fields[$column] = $name; + } + + $this->group_fields = $fields; } // Add additional fields (and the table join itself) if needed. @@ -150,7 +197,9 @@ class views_handler_field_field extends views_handler_field { $field = $this->field_info; if (field_is_translatable($entity_type, $field) && !empty($this->query->options['field_language_add_to_query'])) { $column = $this->table_alias . '.language'; - $this->query->add_where(0, $column, $this->query->options['field_language']); + // By the same reason as field_language the field might be LANGUAGE_NONE in reality so allow it as well. + // @see this::field_language() + $this->query->add_where(0, $column, array($this->query->options['field_language'], LANGUAGE_NONE)); } } @@ -200,6 +249,11 @@ class views_handler_field_field extends views_handler_field { * Called to determine what to tell the clicksorter. */ function click_sort($order) { + // No column selected, can't continue. + if (empty($this->options['click_sort_column'])) { + return; + } + $this->ensure_my_table(); $column = _field_sql_storage_columnname($this->definition['field_name'], $this->options['click_sort_column']); if (!isset($this->aliases[$column])) { @@ -216,10 +270,18 @@ class views_handler_field_field extends views_handler_field { $field = field_info_field($this->definition['field_name']); $field_type = field_info_field_types($field['type']); $column_names = array_keys($field['columns']); + $default_column = ''; + // Try to determine a sensible default. + if (count($column_names) == 1) { + $default_column = $column_names[0]; + } + elseif (in_array('value', $column_names)) { + $default_column = 'value'; + } // If the field has a "value" column, we probably need that one. $options['click_sort_column'] = array( - 'default' => in_array('value', $column_names) ? 'value' : '', + 'default' => $default_column, ); $options['type'] = array( 'default' => $field_type['default_formatter'], @@ -228,7 +290,7 @@ class views_handler_field_field extends views_handler_field { 'default' => array(), ); $options['group_column'] = array( - 'default' => in_array('value', $column_names) ? 'value' : $column_names[0], + 'default' => $default_column, ); $options['group_columns'] = array( 'default' => array(), @@ -249,6 +311,9 @@ class views_handler_field_field extends views_handler_field { $options['delta_reversed'] = array( 'default' => FALSE, ); + $options['delta_first_last'] = array( + 'default' => FALSE, + ); $options['multi_type'] = array( 'default' => 'separator' @@ -265,6 +330,8 @@ class views_handler_field_field extends views_handler_field { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + $field = $this->field_info; $formatters = _field_view_formatter_options($field['type']); $column_names = array_keys($field['columns']); @@ -278,7 +345,7 @@ class views_handler_field_field extends views_handler_field { if (count($field['columns']) == 1) { $form['click_sort_column'] = array( '#type' => 'value', - '#value' => $column_names[0], + '#value' => isset($column_names[0]) ? $column_names[0] : '', ); } else { @@ -309,7 +376,8 @@ class views_handler_field_field extends views_handler_field { '#type' => 'checkbox', '#default_value' => $this->options['field_api_classes'], '#description' => t('If checked, field api classes will be added using field.tpl.php (or equivalent). This is not recommended unless your CSS depends upon these classes. If not checked, template will not be used.'), - '#fieldset' => 'more', + '#fieldset' => 'style_settings', + '#weight' => 20, ); if ($this->multiple) { @@ -339,8 +407,6 @@ class views_handler_field_field extends views_handler_field { $settings_form = $function($field, $instance, '_dummy', $form, $form_state); } $form['settings'] = $settings_form; - - parent::options_form($form, $form_state); } /** @@ -361,7 +427,7 @@ class views_handler_field_field extends views_handler_field { '#title' => t('Display all values in the same row'), '#type' => 'checkbox', '#default_value' => $this->options['group_rows'], - '#description' => t('If checked, multiple values for this field will be shown in the same row. If not checked, each value in this field will create a new row.'), + '#description' => t('If checked, multiple values for this field will be shown in the same row. If not checked, each value in this field will create a new row. If using group by, please make sure to group by "Entity ID" for this setting to have any effect.'), '#fieldset' => 'multiple_field_settings', ); @@ -373,13 +439,11 @@ class views_handler_field_field extends views_handler_field { $type = 'textfield'; $options = NULL; $size = 5; - $process = array(); } else { $type = 'select'; $options = drupal_map_assoc(range(1, $field['cardinality'])); $size = 1; - $process = array('form_process_select'); } $form['multi_type'] = array( '#type' => 'radios', @@ -389,7 +453,6 @@ class views_handler_field_field extends views_handler_field { 'ol' => t('Ordered list'), 'separator' => t('Simple separator'), ), - '#process' => array('form_process_radios', 'ctools_dependent_process'), '#dependency' => array('edit-options-group-rows' => array(TRUE)), '#default_value' => $this->options['multi_type'], '#fieldset' => 'multiple_field_settings', @@ -399,7 +462,6 @@ class views_handler_field_field extends views_handler_field { '#type' => 'textfield', '#title' => t('Separator'), '#default_value' => $this->options['separator'], - '#process' => array('ctools_dependent_process'), '#dependency' => array( 'radio:options[multi_type]' => array('separator'), 'edit-options-group-rows' => array(TRUE), @@ -416,7 +478,6 @@ class views_handler_field_field extends views_handler_field { '#options' => $options, '#default_value' => $this->options['delta_limit'], '#prefix' => '<div class="container-inline">', - '#process' => $process + array('ctools_dependent_process'), '#dependency' => array('edit-options-group-rows' => array(TRUE)), '#fieldset' => 'multiple_field_settings', ); @@ -428,7 +489,6 @@ class views_handler_field_field extends views_handler_field { '#field_prefix' => $prefix, '#field_suffix' => $suffix, '#default_value' => $this->options['delta_offset'], - '#process' => array('ctools_dependent_process'), '#dependency' => array('edit-options-group-rows' => array(TRUE)), '#description' => t('(first item is 0)'), '#fieldset' => 'multiple_field_settings', @@ -437,12 +497,19 @@ class views_handler_field_field extends views_handler_field { '#title' => t('Reversed'), '#type' => 'checkbox', '#default_value' => $this->options['delta_reversed'], - '#suffix' => '</div>', - '#process' => array('form_process_checkbox', 'ctools_dependent_process'), + '#suffix' => $suffix, '#dependency' => array('edit-options-group-rows' => array(TRUE)), '#description' => t('(start from last values)'), '#fieldset' => 'multiple_field_settings', ); + $form['delta_first_last'] = array( + '#title' => t('First and last only'), + '#type' => 'checkbox', + '#default_value' => $this->options['delta_first_last'], + '#suffix' => '</div>', + '#dependency' => array('edit-options-group-rows' => array(TRUE)), + '#fieldset' => 'multiple_field_settings', + ); } /** @@ -452,7 +519,10 @@ class views_handler_field_field extends views_handler_field { parent::groupby_form($form, $form_state); // With "field API" fields, the column target of the grouping function // and any additional grouping columns must be specified. - $group_columns = drupal_map_assoc(array_keys($this->field_info['columns']), 'ucfirst'); + $group_columns = array( + 'entity id' => t('Entity ID'), + ) + drupal_map_assoc(array_keys($this->field_info['columns']), 'ucfirst'); + $form['group_column'] = array( '#type' => 'select', '#title' => t('Group column'), @@ -462,12 +532,14 @@ class views_handler_field_field extends views_handler_field { ); $options = drupal_map_assoc(array('bundle', 'language', 'entity_type'), 'ucfirst'); + + // Add on defined fields, noting that they're prefixed with the field name. $form['group_columns'] = array( '#type' => 'checkboxes', '#title' => t('Group columns (additional)'), '#default_value' => $this->options['group_columns'], '#description' => t('Select any additional columns of this field to include in the query and to group on.'), - '#options' => $options, + '#options' => $options + $group_columns, ); } @@ -475,21 +547,15 @@ class views_handler_field_field extends views_handler_field { parent::groupby_form_submit($form, $form_state); $item =& $form_state['handler']->options; - if ($item['group_type'] != 'group') { - unset($item['group_column']); - unset($item['group_columns']); - } - else { - // Add settings for "field API" fields. - $item['group_column'] = $form_state['values']['options']['group_column']; - $item['group_columns'] = array_filter($form_state['values']['options']['group_columns']); - } + // Add settings for "field API" fields. + $item['group_column'] = $form_state['values']['options']['group_column']; + $item['group_columns'] = array_filter($form_state['values']['options']['group_columns']); } /** * Load the entities for all fields that are about to be displayed. */ - function pre_render(&$values) { + function post_execute(&$values) { if (!empty($values)) { // Divide the entity ids by entity type, so they can be loaded in bulk. $entities_by_type = array(); @@ -497,7 +563,7 @@ class views_handler_field_field extends views_handler_field { foreach ($values as $key => $object) { if (isset($object->{$this->field_alias}) && !isset($values[$key]->_field_data[$this->field_alias])) { $entity_type = $object->{$this->aliases['entity_type']}; - if (empty($this->definition['revision id'])) { + if (empty($this->definition['is revision'])) { $entity_id = $object->{$this->field_alias}; $entities_by_type[$entity_type][$key] = $entity_id; } @@ -538,11 +604,14 @@ class views_handler_field_field extends views_handler_field { 'entity_type' => $entity_type, 'entity' => $entities[$entity_id], ); - // Push the field values directly into the results array to make themers the life a bit easier. - $values[$key]->{$this->definition['table'] . '_' . $entity_type . '_values'} = field_get_items($entity_type, $entities[$entity_id], $this->definition['field_name']); } } } + + // Now, transfer the data back into the resultset so it can be easily used. + foreach ($values as $row_id => &$value) { + $value->{'field_' . $this->options['id']} = $this->set_items($value, $row_id); + } } } @@ -559,7 +628,7 @@ class views_handler_field_field extends views_handler_field { } if ($this->options['multi_type'] == 'separator') { - return implode(check_plain($this->options['separator']), $items); + return implode(filter_xss_admin($this->options['separator']), $items); } else { return theme('item_list', @@ -572,25 +641,46 @@ class views_handler_field_field extends views_handler_field { } } - /** - * Return an array of items for the field. - * - * Items should be stored in the result array, if possible, as an array - * with 'value' as the actual displayable value of the item, plus - * any items that might be found in the 'alter' options array for - * creating links, such as 'path', 'fragment', 'query' etc, such a thing - * is to be made. Additionally, items that might be turned into tokens - * should also be in this array. - */ function get_items($values) { - if (empty($values->_field_data[$this->field_alias]) || empty($values->_field_data[$this->field_alias]['entity'])) { - return array(); - } + return $values->{'field_' . $this->options['id']}; + } + function get_value($values, $field = NULL) { // Go ahead and render and store in $this->items. $entity = clone $values->_field_data[$this->field_alias]['entity']; + $entity_type = $values->_field_data[$this->field_alias]['entity_type']; - $langcode = $this->field_language($entity_type); + $langcode = $this->field_language($entity_type, $entity); + // If we are grouping, copy our group fields into the cloned entity. + // It's possible this will cause some weirdness, but there's only + // so much we can hope to do. + if (!empty($this->group_fields)) { + // first, test to see if we have a base value. + $base_value = array(); + // Note: We would copy original values here, but it can cause problems. + // For example, text fields store cached filtered values as + // 'safe_value' which doesn't appear anywhere in the field definition + // so we can't affect it. Other side effects could happen similarly. + $data = FALSE; + foreach ($this->group_fields as $field_name => $column) { + if (property_exists($values, $this->aliases[$column])) { + $base_value[$field_name] = $values->{$this->aliases[$column]}; + if (isset($base_value[$field_name])) { + $data = TRUE; + } + } + } + + // If any of our aggregated fields have data, fake it: + if ($data) { + // Now, overwrite the original value with our aggregated value. + // This overwrites it so there is always just one entry. + $entity->{$this->definition['field_name']}[$langcode] = array($base_value); + } + else { + $entity->{$this->definition['field_name']}[$langcode] = array(); + } + } // The field we are trying to display doesn't exist on this entity. if (!isset($entity->{$this->definition['field_name']})) { @@ -599,7 +689,7 @@ class views_handler_field_field extends views_handler_field { // We are supposed to show only certain deltas. if ($this->limit_values && !empty($entity->{$this->definition['field_name']})) { - $all_values = $entity->{$this->definition['field_name']}[$langcode]; + $all_values = !empty($entity->{$this->definition['field_name']}[$langcode]) ? $entity->{$this->definition['field_name']}[$langcode] : array(); if ($this->options['delta_reversed']) { $all_values = array_reverse($all_values); } @@ -614,26 +704,69 @@ class views_handler_field_field extends views_handler_field { else { $delta_limit = $this->options['delta_limit']; $offset = intval($this->options['delta_offset']); + + // We should only get here in this case if there's an offset, and + // in that case we're limiting to all values after the offset. + if ($delta_limit == 'all') { + $delta_limit = count($all_values) - $offset; + } } + // Determine if only the first and last values should be shown + $delta_first_last = $this->options['delta_first_last']; + $new_values = array(); for ($i = 0; $i < $delta_limit; $i++) { $new_delta = $offset + $i; if (isset($all_values[$new_delta])) { - $new_values[] = $all_values[$new_delta]; + // If first-last option was selected, only use the first and last values + if (!$delta_first_last + // Use the first value. + || $new_delta == $offset + // Use the last value. + || $new_delta == ($delta_limit + $offset - 1)) { + $new_values[] = $all_values[$new_delta]; + } } } $entity->{$this->definition['field_name']}[$langcode] = $new_values; } + if ($field == 'entity') { + return $entity; + } + else { + return !empty($entity->{$this->definition['field_name']}[$langcode]) ? $entity->{$this->definition['field_name']}[$langcode] : array(); + } + } + + /** + * Return an array of items for the field. + */ + function set_items($values, $row_id) { + if (empty($values->_field_data[$this->field_alias]) || empty($values->_field_data[$this->field_alias]['entity'])) { + return array(); + } + $display = array( 'type' => $this->options['type'], 'settings' => $this->options['settings'], 'label' => 'hidden', + // Pass the View object in the display so that fields can act on it. + 'views_view' => $this->view, + 'views_field' => $this, + 'views_row_id' => $row_id, ); + $entity_type = $values->_field_data[$this->field_alias]['entity_type']; + $entity = $this->get_value($values, 'entity'); + if (!$entity) { + return array(); + } + + $langcode = $this->field_language($entity_type, $entity); $render_array = field_view_field($entity_type, $entity, $this->definition['field_name'], $display, $langcode); $items = array(); @@ -645,7 +778,19 @@ class views_handler_field_field extends views_handler_field { foreach (element_children($render_array) as $count) { $items[$count]['rendered'] = $render_array[$count]; - $items[$count]['raw'] = $render_array['#items'][$count]; + // field_view_field() adds an #access property to the render array that + // determines whether or not the current user is allowed to view the + // field in the context of the current entity. We need to respect this + // parameter when we pull out the children of the field array for + // rendering. + if (isset($render_array['#access'])) { + $items[$count]['rendered']['#access'] = $render_array['#access']; + } + // Only add the raw field items (for use in tokens) if the curent user + // has access to view the field content. + if ((!isset($items[$count]['rendered']['#access']) || $items[$count]['rendered']['#access']) && !empty($render_array['#items'][$count])) { + $items[$count]['raw'] = $render_array['#items'][$count]; + } } return $items; } @@ -666,8 +811,19 @@ class views_handler_field_field extends views_handler_field { foreach ($field['columns'] as $id => $column) { // Use filter_xss_admin because it's user data and we can't be sure it is safe. // We know nothing about the data, though, so we can't really do much else. - if (isset($item['raw']) && is_scalar($item['raw'])) { - $tokens['[' . $this->options['id'] . '-' . $id . ']'] = filter_xss_admin($item['raw'][$id]); + + if (isset($item['raw'])) { + // If $item['raw'] is an array then we can use as is, if it's an object + // we cast it to an array, if it's neither, we can't use it. + $raw = is_array($item['raw']) ? $item['raw'] : + (is_object($item['raw']) ? (array)$item['raw'] : NULL); + } + if (isset($raw) && isset($raw[$id]) && is_scalar($raw[$id])) { + $tokens['[' . $this->options['id'] . '-' . $id . ']'] = filter_xss_admin($raw[$id]); + } + else { + // Take sure that empty values are replaced as well. + $tokens['[' . $this->options['id'] . '-' . $id . ']'] = ''; } } } @@ -676,14 +832,20 @@ class views_handler_field_field extends views_handler_field { * Return the language code of the language the field should be displayed in, * according to the settings. */ - function field_language($entity_type) { + function field_language($entity_type, $entity) { global $language_content; if (field_is_translatable($entity_type, $this->field_info)) { $default_language = language_default('language'); $language = str_replace(array('***CURRENT_LANGUAGE***', '***DEFAULT_LANGUAGE***'), array($language_content->language, $default_language), - $this->query->options['field_language']); + $this->view->display_handler->options['field_language']); + + // Give the Field Language API a chance to fallback to a different language + // (or LANGUAGE_NONE), in case the field has no data for the selected language. + // field_view_field() does this as well, but since the returned language code + // is used before calling it, the fallback needs to happen explicitly. + $language = field_language($entity_type, $entity, $this->field_info['field_name'], $language); return $language; } diff --git a/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc b/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc new file mode 100644 index 000000000..72b54da0e --- /dev/null +++ b/sites/all/modules/views/modules/field/views_handler_relationship_entity_reverse.inc @@ -0,0 +1,78 @@ +<?php +/** + * @file + * Views' relationship handlers. + */ + +class views_handler_relationship_entity_reverse extends views_handler_relationship { + function init(&$view, &$options) { + parent::init($view, $options); + + $this->field_info = field_info_field($this->definition['field_name']); + } + + /** + * Called to implement a relationship in a query. + */ + function query() { + $this->ensure_my_table(); + // First, relate our base table to the current base table to the + // field, using the base table's id field to the field's column. + $views_data = views_fetch_data($this->table); + $left_field = $views_data['table']['base']['field']; + + $first = array( + 'left_table' => $this->table_alias, + 'left_field' => $left_field, + 'table' => $this->definition['field table'], + 'field' => $this->definition['field field'], + ); + if (!empty($this->options['required'])) { + $first['type'] = 'INNER'; + } + + if (!empty($this->definition['join_extra'])) { + $first['extra'] = $this->definition['join_extra']; + } + + if (!empty($this->definition['join_handler']) && class_exists($this->definition['join_handler'])) { + $first_join = new $this->definition['join_handler']; + } + else { + $first_join = new views_join(); + } + $first_join->definition = $first; + $first_join->construct(); + $first_join->adjusted = TRUE; + + $this->first_alias = $this->query->add_table($this->definition['field table'], $this->relationship, $first_join); + + // Second, relate the field table to the entity specified using + // the entity id on the field table and the entity's id field. + $second = array( + 'left_table' => $this->first_alias, + 'left_field' => 'entity_id', + 'table' => $this->definition['base'], + 'field' => $this->definition['base field'], + ); + + if (!empty($this->options['required'])) { + $second['type'] = 'INNER'; + } + + if (!empty($this->definition['join_handler']) && class_exists($this->definition['join_handler'])) { + $second_join = new $this->definition['join_handler']; + } + else { + $second_join = new views_join(); + } + $second_join->definition = $second; + $second_join->construct(); + $second_join->adjusted = TRUE; + + // use a short alias for this: + $alias = $this->definition['field_name'] . '_' . $this->table; + + $this->alias = $this->query->add_relationship($alias, $second_join, $this->definition['base'], $this->relationship); + } +} diff --git a/sites/all/modules/views/modules/file.views.inc b/sites/all/modules/views/modules/file.views.inc new file mode 100644 index 000000000..30db20b14 --- /dev/null +++ b/sites/all/modules/views/modules/file.views.inc @@ -0,0 +1,81 @@ +<?php +/** + * @file + * + * Provide views data and handlers for file.module + */ + +/** + * @defgroup views_file_module file.module handlers + * + * @{ + */ + +/** + * Implements hook_field_views_data(). + * + * Views integration for file fields. Adds a file relationship to the default + * field data. + * + * @see field_views_field_default_views_data() + */ +function file_field_views_data($field) { + $data = field_views_field_default_views_data($field); + foreach ($data as $table_name => $table_data) { + // Add the relationship only on the fid field. + $data[$table_name][$field['field_name'] . '_fid']['relationship'] = array( + 'handler' => 'views_handler_relationship', + 'base' => 'file_managed', + 'entity type' => 'file', + 'base field' => 'fid', + 'label' => t('file from !field_name', array('!field_name' => $field['field_name'])), + ); + } + + return $data; +} + +/** + * Implements hook_field_views_data_views_data_alter(). + * + * Views integration to provide reverse relationships on file fields. + */ +function file_field_views_data_views_data_alter(&$data, $field) { + foreach ($field['bundles'] as $entity_type => $bundles) { + $entity_info = entity_get_info($entity_type); + $pseudo_field_name = 'reverse_' . $field['field_name'] . '_' . $entity_type; + + list($label, $all_labels) = field_views_field_label($field['field_name']); + $entity = $entity_info['label']; + if ($entity == t('Node')) { + $entity = t('Content'); + } + + $data['file_managed'][$pseudo_field_name]['relationship'] = array( + 'title' => t('@entity using @field', array('@entity' => $entity, '@field' => $label)), + 'help' => t('Relate each @entity with a @field set to the file.', array('@entity' => $entity, '@field' => $label)), + 'handler' => 'views_handler_relationship_entity_reverse', + 'field_name' => $field['field_name'], + 'field table' => _field_sql_storage_tablename($field), + 'field field' => $field['field_name'] . '_fid', + 'base' => $entity_info['base table'], + 'base field' => $entity_info['entity keys']['id'], + 'label' => t('!field_name', array('!field_name' => $field['field_name'])), + 'join_extra' => array( + 0 => array( + 'field' => 'entity_type', + 'value' => $entity_type, + ), + 1 => array( + 'field' => 'deleted', + 'value' => 0, + 'numeric' => TRUE, + ), + ), + ); + } +} + +/** + * @} + */ diff --git a/sites/all/modules/views/modules/filter.views.inc b/sites/all/modules/views/modules/filter.views.inc index ff6156f1a..c13d8872a 100644 --- a/sites/all/modules/views/modules/filter.views.inc +++ b/sites/all/modules/views/modules/filter.views.inc @@ -22,12 +22,12 @@ function filter_views_data() { // no fields are defined here yet. $data['filter_formats']['moved to'] = 'filter_format'; $data['filter_format']['table']['join'] = array( - 'node_revisions' => array( + 'node_revision' => array( 'left_field' => 'format', 'field' => 'format', ), 'node' => array( - 'left_table' => 'node_revisions', + 'left_table' => 'node_revision', 'left_field' => 'format', 'field' => 'format', ), diff --git a/sites/all/modules/views/modules/image.views.inc b/sites/all/modules/views/modules/image.views.inc new file mode 100644 index 000000000..1dec9e475 --- /dev/null +++ b/sites/all/modules/views/modules/image.views.inc @@ -0,0 +1,80 @@ +<?php +/** + * @file + * + * Provide views data and handlers for image.module + */ + +/** + * @defgroup views_image_module image.module handlers + * + * @{ + */ + +/** + * Implements hook_field_views_data(). + * + * Views integration for image fields. Adds an image relationship to the default + * field data. + * + * @see field_views_field_default_views_data() + */ +function image_field_views_data($field) { + $data = field_views_field_default_views_data($field); + foreach ($data as $table_name => $table_data) { + // Add the relationship only on the fid field. + $data[$table_name][$field['field_name'] . '_fid']['relationship'] = array( + 'handler' => 'views_handler_relationship', + 'base' => 'file_managed', + 'base field' => 'fid', + 'label' => t('image from !field_name', array('!field_name' => $field['field_name'])), + ); + } + + return $data; +} + +/** + * Implements hook_field_views_data_views_data_alter(). + * + * Views integration to provide reverse relationships on image fields. + */ +function image_field_views_data_views_data_alter(&$data, $field) { + foreach ($field['bundles'] as $entity_type => $bundles) { + $entity_info = entity_get_info($entity_type); + $pseudo_field_name = 'reverse_' . $field['field_name'] . '_' . $entity_type; + + list($label, $all_labels) = field_views_field_label($field['field_name']); + $entity = $entity_info['label']; + if ($entity == t('Node')) { + $entity = t('Content'); + } + + $data['file_managed'][$pseudo_field_name]['relationship'] = array( + 'title' => t('@entity using @field', array('@entity' => $entity, '@field' => $label)), + 'help' => t('Relate each @entity with a @field set to the image.', array('@entity' => $entity, '@field' => $label)), + 'handler' => 'views_handler_relationship_entity_reverse', + 'field_name' => $field['field_name'], + 'field table' => _field_sql_storage_tablename($field), + 'field field' => $field['field_name'] . '_fid', + 'base' => $entity_info['base table'], + 'base field' => $entity_info['entity keys']['id'], + 'label' => t('!field_name', array('!field_name' => $field['field_name'])), + 'join_extra' => array( + 0 => array( + 'field' => 'entity_type', + 'value' => $entity_type, + ), + 1 => array( + 'field' => 'deleted', + 'value' => 0, + 'numeric' => TRUE, + ), + ), + ); + } +} + +/** + * @} + */ diff --git a/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc b/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc index 199c7d1f0..0b092b401 100644 --- a/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc +++ b/sites/all/modules/views/modules/locale/views_handler_argument_locale_group.inc @@ -31,4 +31,3 @@ class views_handler_argument_locale_group extends views_handler_argument { return isset($groups[$group]) ? $groups[$group] : t('Unknown group'); } } - diff --git a/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc b/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc index 00fafdc78..42afbe78c 100644 --- a/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc +++ b/sites/all/modules/views/modules/locale/views_handler_argument_locale_language.inc @@ -25,8 +25,7 @@ class views_handler_argument_locale_language extends views_handler_argument { } function locale_language($langcode) { - $languages = locale_language_list(); + $languages = views_language_list(); return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language'); } } - diff --git a/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc b/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc index d46426f01..75820edfe 100644 --- a/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc +++ b/sites/all/modules/views/modules/locale/views_handler_filter_locale_group.inc @@ -14,4 +14,3 @@ class views_handler_filter_locale_group extends views_handler_filter_in_operator } } } - diff --git a/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc b/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc index 9eb97874a..ed18bce11 100644 --- a/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc +++ b/sites/all/modules/views/modules/locale/views_handler_filter_locale_language.inc @@ -12,7 +12,7 @@ class views_handler_filter_locale_language extends views_handler_filter_in_opera '***DEFAULT_LANGUAGE***' => t("Default site language"), LANGUAGE_NONE => t('No language') ); - $languages = array_merge($languages, locale_language_list()); + $languages = array_merge($languages, views_language_list()); $this->value_options = $languages; } } diff --git a/sites/all/modules/views/modules/node.views.inc b/sites/all/modules/views/modules/node.views.inc index 785d83ece..917df0cef 100644 --- a/sites/all/modules/views/modules/node.views.inc +++ b/sites/all/modules/views/modules/node.views.inc @@ -20,7 +20,7 @@ function node_views_data() { // Define the base group of this table. Fields that don't // have a group defined will go into this field by default. - $data['node']['table']['group'] = t('Content'); + $data['node']['table']['group'] = t('Content'); // Advertise this table as a possible base table $data['node']['table']['base'] = array( @@ -32,6 +32,8 @@ function node_views_data() { 'field' => 'title', ), ); + $data['node']['table']['entity type'] = 'node'; + // For other base tables, explain how we join $data['node']['table']['join'] = array( @@ -196,6 +198,9 @@ function node_views_data() { 'field' => array( 'handler' => 'views_handler_field_boolean', 'click sortable' => TRUE, + 'output formats' => array( + 'promoted-notpromoted' => array(t('Promoted'), t('Not promoted')), + ), ), 'filter' => array( 'handler' => 'views_handler_filter_boolean_operator', @@ -216,7 +221,7 @@ function node_views_data() { 'handler' => 'views_handler_field_boolean', 'click sortable' => TRUE, 'output formats' => array( - 'sticky' => array('', t('Sticky')), + 'sticky' => array(t('Sticky'), ''), ), ), 'filter' => array( @@ -230,9 +235,12 @@ function node_views_data() { ), ); - // links to operate on the node + // Define some fields based upon views_handler_field_entity in the entity + // table so they can be re-used with other query backends. + // @see views_handler_field_entity - $data['node']['view_node'] = array( + $data['node']['view_node']['moved to'] = array('views_entity_node', 'view_node'); + $data['views_entity_node']['view_node'] = array( 'field' => array( 'title' => t('Link'), 'help' => t('Provide a simple link to the content.'), @@ -240,7 +248,8 @@ function node_views_data() { ), ); - $data['node']['edit_node'] = array( + $data['node']['edit_node']['moved to'] = array('views_entity_node', 'edit_node'); + $data['views_entity_node']['edit_node'] = array( 'field' => array( 'title' => t('Edit link'), 'help' => t('Provide a simple link to edit the content.'), @@ -248,7 +257,8 @@ function node_views_data() { ), ); - $data['node']['delete_node'] = array( + $data['node']['delete_node']['moved to'] = array('views_entity_node', 'delete_node'); + $data['views_entity_node']['delete_node'] = array( 'field' => array( 'title' => t('Delete link'), 'help' => t('Provide a simple link to delete the content.'), @@ -269,7 +279,7 @@ function node_views_data() { $data['node']['created_fulldate'] = array( 'title' => t('Created date'), - 'help' => t('In the form of CCYYMMDD.'), + 'help' => t('Date in the form of CCYYMMDD.'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_fulldate', @@ -278,7 +288,7 @@ function node_views_data() { $data['node']['created_year_month'] = array( 'title' => t('Created year + month'), - 'help' => t('In the form of YYYYMM.'), + 'help' => t('Date in the form of YYYYMM.'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_year_month', @@ -287,7 +297,7 @@ function node_views_data() { $data['node']['created_year'] = array( 'title' => t('Created year'), - 'help' => t('In the form of YYYY.'), + 'help' => t('Date in the form of YYYY.'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_year', @@ -296,7 +306,7 @@ function node_views_data() { $data['node']['created_month'] = array( 'title' => t('Created month'), - 'help' => t('In the form of MM (01 - 12).'), + 'help' => t('Date in the form of MM (01 - 12).'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_month', @@ -305,7 +315,7 @@ function node_views_data() { $data['node']['created_day'] = array( 'title' => t('Created day'), - 'help' => t('In the form of DD (01 - 31).'), + 'help' => t('Date in the form of DD (01 - 31).'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_day', @@ -314,7 +324,7 @@ function node_views_data() { $data['node']['created_week'] = array( 'title' => t('Created week'), - 'help' => t('In the form of WW (01 - 53).'), + 'help' => t('Date in the form of WW (01 - 53).'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_week', @@ -323,7 +333,7 @@ function node_views_data() { $data['node']['changed_fulldate'] = array( 'title' => t('Updated date'), - 'help' => t('In the form of CCYYMMDD.'), + 'help' => t('Date in the form of CCYYMMDD.'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_fulldate', @@ -332,7 +342,7 @@ function node_views_data() { $data['node']['changed_year_month'] = array( 'title' => t('Updated year + month'), - 'help' => t('In the form of YYYYMM.'), + 'help' => t('Date in the form of YYYYMM.'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_year_month', @@ -341,7 +351,7 @@ function node_views_data() { $data['node']['changed_year'] = array( 'title' => t('Updated year'), - 'help' => t('In the form of YYYY.'), + 'help' => t('Date in the form of YYYY.'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_year', @@ -350,7 +360,7 @@ function node_views_data() { $data['node']['changed_month'] = array( 'title' => t('Updated month'), - 'help' => t('In the form of MM (01 - 12).'), + 'help' => t('Date in the form of MM (01 - 12).'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_month', @@ -359,7 +369,7 @@ function node_views_data() { $data['node']['changed_day'] = array( 'title' => t('Updated day'), - 'help' => t('In the form of DD (01 - 31).'), + 'help' => t('Date in the form of DD (01 - 31).'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_day', @@ -368,7 +378,7 @@ function node_views_data() { $data['node']['changed_week'] = array( 'title' => t('Updated week'), - 'help' => t('In the form of WW (01 - 53).'), + 'help' => t('Date in the form of WW (01 - 53).'), 'argument' => array( 'field' => 'changed', 'handler' => 'views_handler_argument_node_created_week', @@ -377,13 +387,24 @@ function node_views_data() { // uid field $data['node']['uid'] = array( - 'title' => t('Author'), - 'help' => t('Relate content to the user who created it.'), + 'title' => t('Author uid'), + 'help' => t('The user authoring the content. If you need more fields than the uid add the content: author relationship'), 'relationship' => array( + 'title' => t('Author'), + 'help' => t('Relate content to the user who created it.'), 'handler' => 'views_handler_relationship', 'base' => 'users', 'field' => 'uid', - 'label' => t('user'), + 'label' => t('author'), + ), + 'filter' => array( + 'handler' => 'views_handler_filter_user_name', + ), + 'argument' => array( + 'handler' => 'views_handler_argument_numeric', + ), + 'field' => array( + 'handler' => 'views_handler_field_user', ), ); @@ -465,7 +486,7 @@ function node_views_data() { 'relationship' => array( 'handler' => 'views_handler_relationship', 'base' => 'node', - 'base field' => 'nid', + 'base field' => 'vid', 'title' => t('Content'), 'label' => t('Get the actual content from a content revision.'), ), @@ -508,8 +529,8 @@ function node_views_data() { // revision timestamp // changed field $data['node_revision']['timestamp'] = array( - 'title' => t('Created date'), // The item it appears as on the UI, - 'help' => t('The date the content revision was created.'), // The help that appears on the UI, + 'title' => t('Updated date'), // The item it appears as on the UI, + 'help' => t('The date the node was last updated.'), // The help that appears on the UI, 'field' => array( 'handler' => 'views_handler_field_date', 'click sortable' => TRUE, @@ -611,7 +632,6 @@ function node_views_plugins() { 'help' => t('Display the content with standard node view.'), 'handler' => 'views_plugin_row_node_view', 'path' => drupal_get_path('module', 'views') . '/modules/node', // not necessary for most modules - 'theme' => 'views_view_row_node', 'base' => array('node'), // only works with 'node' as base. 'uses options' => TRUE, 'type' => 'normal', @@ -645,45 +665,24 @@ function node_views_plugins() { } /** - * Template helper for theme_views_view_row_node + * Implements hook_preprocess_node */ -function template_preprocess_views_view_row_node(&$vars) { - $options = $vars['options']; - - // Make sure the variables are defined. - $vars['node'] = ''; - $vars['comments'] = ''; +function node_row_node_view_preprocess_node(&$vars) { + $node = $vars['node']; + $options = $vars['view']->style_plugin->row_plugin->options; - if (!empty($vars['row']->{$vars['field_alias']})) { - $nid = $vars['row']->{$vars['field_alias']}; - } - if (!is_numeric($nid)) { - return; + // Prevent the comment form from showing up if this is not a page display. + if ($vars['view_mode'] == 'full' && !$vars['view']->display_handler->has_path()) { + $node->comment = FALSE; } - $row_plugin = $vars['view']->style_plugin->row_plugin; - $node = $row_plugin->nodes[$nid]; - - if (empty($node)) { - return; - } - - $node->view = $vars['view']; - // Detect which build module should be used. - $node->view_mode = (!empty($options['view_mode'])) ? $options['view_mode'] : 'full'; - $content = node_view_multiple(array($node->nid => $node), $node->view_mode); - $content = $content['nodes'][$node->nid]; if (!$options['links']) { - unset($content['links']); + unset($vars['content']['links']); } if (!empty($options['comments']) && user_access('access comments') && $node->comment) { - $build = comment_node_page_additions($node); - $vars['comments'] = drupal_render($build); + $vars['content']['comments'] = comment_node_page_additions($node); } - - $vars['node'] = drupal_render($content); - } /** @@ -704,6 +703,9 @@ function node_views_analyze($view) { // Check for something other than the default display: if ($view->base_table == 'node') { foreach ($view->display as $id => $display) { + if (empty($display->handler)) { + continue; + } if (!$display->handler->is_defaulted('access') || !$display->handler->is_defaulted('filters')) { // check for no access control $access = $display->handler->get_option('access'); diff --git a/sites/all/modules/views/modules/node.views_convert.inc b/sites/all/modules/views/modules/node.views_convert.inc deleted file mode 100644 index 2d3ea948d..000000000 --- a/sites/all/modules/views/modules/node.views_convert.inc +++ /dev/null @@ -1,181 +0,0 @@ -<?php - -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - * - * Intervene to convert field values from the Views 1 format to the - * Views 2 format. Intervene only if $view->add_item() won't produce - * the right results, usually needed to set field options or values. - */ -function node_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'field': - switch ($field['tablename']) { - case 'node': - switch ($field['field']) { - case 'title': - if ($field['options'] != 'no_link') { - $view->set_item_option($display, 'field', $id, 'link_to_node', TRUE); - } - break; - case 'created': - case 'changed': - $handlers = array( - 'views_handler_field_date_small' => 'small', - 'views_handler_field_date' => 'medium', - 'views_handler_field_date_large' => 'large', - 'views_handler_field_date_custom' => 'custom', - 'views_handler_field_since' => 'time ago', - ); - $view->set_item_option($display, 'field', $id, 'date_format', $handlers[$field['handler']]); - if (!empty($field['options'])) { - $view->set_item_option($display, 'field', $id, 'custom_date_format', $field['options']); - } - break; - case 'body': - $field['field'] = $field['handler'] == 'views_handler_field_teaser' ? 'teaser' : $field['field']; - $view->set_item_option($display, 'field', $id, 'field', $field['field']); - $view->set_item_option($display, 'field', $id, 'table', 'node_revisions'); - break; - case 'link': - case 'edit': - case 'delete': - case 'view': - $field['field'] = $field['field'] == 'link' ? 'view_node' : "$field[field]_node"; - $view->set_item_option($display, 'field', $id, 'field', $field['field']); - if (!empty($field['options'])) { - $view->set_item_option($display, 'field', $id, 'text', $field['options']); - } - break; - } - break; - } - break; - case 'filter': - switch ($field['tablename']) { - case 'node': - switch ($field['field']) { - case 'type': - $operators = array('OR' => 'IN', 'NOR' => 'NOT IN'); - $view->set_item_option($display, 'filter', $id, 'operator', $operators[$field['operator']]); - break; - case 'anon': - $item = $view->get_item($display, 'filter', $id); - $item['value'] = array(0); - $item['table'] = 'users'; - $item['field'] = 'uid'; - $view->set_item($display, 'filter', $id, $item); - break; - case 'currentuid': - $operators = array('=' => TRUE, '!=' => FALSE); - $item = $view->get_item($display, 'filter', $id); - $item['value'] = $operators[$field['operator']]; - $item['table'] = 'users'; - $item['field'] = 'uid_current'; - $view->set_item($display, 'filter', $id, $item); - break; - case 'currentuidtouched': - $view->set_item_option($display, 'filter', $id, 'value', '='); - $view->set_item_option($display, 'filter', $id, 'field', 'uid_touch'); - break; - case 'distinct': - $view->display_handler->set_option('distinct', $field['operator'] == '=' && $field['value'] == 'distinct'); - $view->set_item($display, 'filter', $id, NULL); - break; - case 'title': - $item = $view->get_item($display, 'filter', $id); - $item['operator'] = $field['operator']; - $item['case'] = FALSE; - $view->set_item($display, 'filter', $id, $item); - break; - case 'created': - case 'changed': - $item = $view->get_item($display, 'filter', $id); - $item['operator'] = $field['operator']; - $item['value'] = array( - 'type' => $field['value'] == 'now' ? 'offset' : 'date', - 'value' => $field['value'], - ); - if (!empty($field['options'])) { - $item['value']['value'] = intval($field['options']) .' seconds'; - } - $view->set_item($display, 'filter', $id, $item); - break; - case 'body': - $item = $view->get_item($display, 'filter', $id); - $item['operator'] = $field['operator']; - $item['case'] = FALSE; - $item['table'] = 'node_revisions'; - $view->set_item($display, 'filter', $id, $item); - break; - } - break; - case 'history': - switch ($field['field']) { - case 'timestamp': - $view->set_item_option($display, 'filter', $id, 'table', 'history'); - break; - } - break; - } - break; - case 'sort': - switch ($field['tablename']) { - case 'node': - switch ($field['field']) { - case 'created': - case 'changed': - $field['options'] = $field['options'] == 'normal' ? 'second' : $field['options']; - $view->set_item_option($display, 'sort', $id, 'granularity', $field['options']); - break; - case 'random': - $view->set_item_option($display, 'sort', $id, 'table', 'views'); - break; - } - break; - } - break; - case 'argument': - $options = $field['argoptions']; - switch ($field['type']) { - case 'nodetype': - $view->add_item($display, 'argument', 'node', 'type', $options, $field['id']); - break; - case 'nodeletter': - if (!empty($field['options'])) { - $options['glossary'] = TRUE; - $options['limit'] = $field['options']; - } - $options['case'] = 'upper'; - $view->add_item($display, 'argument', 'node', 'title', $options, $field['id']); - break; - case 'year': - $view->add_item($display, 'argument', 'node', 'created_year', $options, $field['id']); - break; - case 'month': - $view->add_item($display, 'argument', 'node', 'created_month', $options, $field['id']); - break; - case 'week': - $view->add_item($display, 'argument', 'node', 'created_week', $options, $field['id']); - break; - case 'monthyear': - $view->add_item($display, 'argument', 'node', 'created_year_month', $options, $field['id']); - break; - case 'fulldate': - $view->add_item($display, 'argument', 'node', 'created_fulldate', $options, $field['id']); - break; - case 'nid': - if (!empty($field['options'])) { - $options['not'] = TRUE; - } - $view->add_item($display, 'argument', 'node', 'nid', $options, $field['id']); - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/node.views_default.inc b/sites/all/modules/views/modules/node.views_default.inc index ab71d62f7..93886a7d2 100644 --- a/sites/all/modules/views/modules/node.views_default.inc +++ b/sites/all/modules/views/modules/node.views_default.inc @@ -1,119 +1,183 @@ <?php + /** * @file - * Contains default views on behalf of the node module. + * Bulk export of views_default objects generated by Bulk export module. */ /** - * Implements hook_views_default_views(). + * Implementation of hook_views_default_views() */ function node_views_default_views() { + $views = array(); + + $view = new view; + $view->name = 'archive'; + $view->description = 'Display a list of months that link to content for that month.'; + $view->tag = 'default'; + $view->base_table = 'node'; + $view->human_name = 'Archive'; + $view->core = 0; + $view->api_version = '3.0'; + $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ + $handler = $view->new_display('default', 'Master', 'default'); + $handler->display->display_options['title'] = 'Monthly archive'; + $handler->display->display_options['access']['type'] = 'none'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['style_plugin'] = 'default'; + $handler->display->display_options['row_plugin'] = 'node'; + /* Sort criterion: Content: Post date */ + $handler->display->display_options['sorts']['created']['id'] = 'created'; + $handler->display->display_options['sorts']['created']['table'] = 'node'; + $handler->display->display_options['sorts']['created']['field'] = 'created'; + $handler->display->display_options['sorts']['created']['order'] = 'DESC'; + /* Contextual filter: Content: Created year + month */ + $handler->display->display_options['arguments']['created_year_month']['id'] = 'created_year_month'; + $handler->display->display_options['arguments']['created_year_month']['table'] = 'node'; + $handler->display->display_options['arguments']['created_year_month']['field'] = 'created_year_month'; + $handler->display->display_options['arguments']['created_year_month']['default_action'] = 'summary'; + $handler->display->display_options['arguments']['created_year_month']['exception']['title_enable'] = 1; + $handler->display->display_options['arguments']['created_year_month']['title_enable'] = 1; + $handler->display->display_options['arguments']['created_year_month']['title'] = '%1'; + $handler->display->display_options['arguments']['created_year_month']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['created_year_month']['summary']['sort_order'] = 'desc'; + $handler->display->display_options['arguments']['created_year_month']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['created_year_month']['summary_options']['override'] = TRUE; + $handler->display->display_options['arguments']['created_year_month']['summary_options']['items_per_page'] = '30'; + $handler->display->display_options['arguments']['created_year_month']['specify_validation'] = 1; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = 1; + $handler->display->display_options['filters']['status']['group'] = 0; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + + /* Display: Page */ + $handler = $view->new_display('page', 'Page', 'page'); + $handler->display->display_options['path'] = 'archive'; + + /* Display: Block */ + $handler = $view->new_display('block', 'Block', 'block'); + $handler->display->display_options['defaults']['arguments'] = FALSE; + /* Contextual filter: Content: Created year + month */ + $handler->display->display_options['arguments']['created_year_month']['id'] = 'created_year_month'; + $handler->display->display_options['arguments']['created_year_month']['table'] = 'node'; + $handler->display->display_options['arguments']['created_year_month']['field'] = 'created_year_month'; + $handler->display->display_options['arguments']['created_year_month']['default_action'] = 'summary'; + $handler->display->display_options['arguments']['created_year_month']['exception']['title_enable'] = 1; + $handler->display->display_options['arguments']['created_year_month']['title_enable'] = 1; + $handler->display->display_options['arguments']['created_year_month']['title'] = '%1'; + $handler->display->display_options['arguments']['created_year_month']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['created_year_month']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['created_year_month']['summary_options']['items_per_page'] = '30'; + $handler->display->display_options['arguments']['created_year_month']['specify_validation'] = 1; + $translatables['archive'] = array( + t('Master'), + t('Monthly archive'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('All'), + t('%1'), + t('Page'), + t('Block'), + ); + + $views['archive'] = $view; + $view = new view; $view->name = 'frontpage'; $view->description = 'Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page.'; $view->tag = 'default'; $view->base_table = 'node'; $view->human_name = 'Front page'; - $view->api_version = 2; - $view->version = 7; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ $handler = $view->new_display('default', 'Master', 'default'); - $handler->override_option('sorts', array( - 'sticky' => array( - 'id' => 'sticky', - 'table' => 'node', - 'field' => 'sticky', - 'order' => 'DESC', - ), - 'created' => array( - 'id' => 'created', - 'table' => 'node', - 'field' => 'created', - 'order' => 'DESC', - 'relationship' => 'none', - 'granularity' => 'second', - ), - )); - $handler->override_option('filters', array( - 'promote' => array( - 'id' => 'promote', - 'table' => 'node', - 'field' => 'promote', - 'operator' => '=', - 'value' => '1', - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - ), - 'status' => array( - 'id' => 'status', - 'table' => 'node', - 'field' => 'status', - 'operator' => '=', - 'value' => '1', - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - ), - )); - $handler->override_option('access', array( - 'type' => 'none', - 'role' => array(), - 'perm' => '', - )); - $handler->override_option('header_format', '1'); - $handler->override_option('footer_format', '1'); - $handler->override_option('empty_format', '1'); - $handler->override_option('use_pager', '1'); - $handler->override_option('row_plugin', 'node'); - $handler->override_option('row_options', array( - 'teaser' => 1, - 'links' => 1, - )); + $handler->display->display_options['access']['type'] = 'none'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['style_plugin'] = 'default'; + $handler->display->display_options['row_plugin'] = 'node'; + $handler->display->display_options['row_options']['links'] = 1; + /* Sort criterion: Content: Sticky */ + $handler->display->display_options['sorts']['sticky']['id'] = 'sticky'; + $handler->display->display_options['sorts']['sticky']['table'] = 'node'; + $handler->display->display_options['sorts']['sticky']['field'] = 'sticky'; + $handler->display->display_options['sorts']['sticky']['order'] = 'DESC'; + /* Sort criterion: Content: Post date */ + $handler->display->display_options['sorts']['created']['id'] = 'created'; + $handler->display->display_options['sorts']['created']['table'] = 'node'; + $handler->display->display_options['sorts']['created']['field'] = 'created'; + $handler->display->display_options['sorts']['created']['order'] = 'DESC'; + /* Filter criterion: Content: Promoted to front page */ + $handler->display->display_options['filters']['promote']['id'] = 'promote'; + $handler->display->display_options['filters']['promote']['table'] = 'node'; + $handler->display->display_options['filters']['promote']['field'] = 'promote'; + $handler->display->display_options['filters']['promote']['value'] = '1'; + $handler->display->display_options['filters']['promote']['group'] = 0; + $handler->display->display_options['filters']['promote']['expose']['operator'] = FALSE; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = '1'; + $handler->display->display_options['filters']['status']['group'] = 0; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + + /* Display: Page */ $handler = $view->new_display('page', 'Page', 'page'); - $handler->override_option('path', 'frontpage'); - $handler->override_option('menu', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); + $handler->display->display_options['path'] = 'frontpage'; + + /* Display: Feed */ $handler = $view->new_display('feed', 'Feed', 'feed'); - $handler->override_option('sitename_title', '1'); - $handler->override_option('title', 'Front page feed'); - $handler->override_option('style_options', array( - 'description' => '', - )); - $handler->override_option('row_plugin', 'node_rss'); - $handler->override_option('row_options', array( - 'item_length' => 'default', - )); - $handler->override_option('path', 'rss.xml'); - $handler->override_option('menu', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('displays', array( + $handler->display->display_options['defaults']['title'] = FALSE; + $handler->display->display_options['title'] = 'Front page feed'; + $handler->display->display_options['pager']['type'] = 'some'; + $handler->display->display_options['style_plugin'] = 'rss'; + $handler->display->display_options['row_plugin'] = 'node_rss'; + $handler->display->display_options['path'] = 'rss.xml'; + $handler->display->display_options['displays'] = array( 'default' => 'default', 'page' => 'page', - )); - $views[$view->name] = $view; + ); + $handler->display->display_options['sitename_title'] = '1'; + $translatables['frontpage'] = array( + t('Master'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('Page'), + t('Feed'), + t('Front page feed'), + ); + + $views['frontpage'] = $view; $view = new view; $view->name = 'glossary'; @@ -121,262 +185,131 @@ function node_views_default_views() { $view->tag = 'default'; $view->base_table = 'node'; $view->human_name = 'Glossary'; - $view->api_version = 2; - $view->version = 7; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ $handler = $view->new_display('default', 'Master', 'default'); - $handler->override_option('fields', array( + $handler->display->display_options['use_ajax'] = TRUE; + $handler->display->display_options['access']['type'] = 'none'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = 36; + $handler->display->display_options['style_plugin'] = 'table'; + $handler->display->display_options['style_options']['columns'] = array( + 'title' => 'title', + 'name' => 'name', + 'changed' => 'changed', + ); + $handler->display->display_options['style_options']['default'] = 'title'; + $handler->display->display_options['style_options']['info'] = array( 'title' => array( - 'label' => 'Title', - 'link_to_node' => 1, - 'exclude' => 0, - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'relationship' => 'none', + 'sortable' => 1, + 'separator' => '', ), 'name' => array( - 'label' => 'Author', - 'link_to_user' => 1, - 'exclude' => 0, - 'id' => 'name', - 'table' => 'users', - 'field' => 'name', - 'relationship' => 'none', + 'sortable' => 1, + 'separator' => '', ), 'changed' => array( - 'label' => 'Last update', - 'date_format' => 'large', - 'custom_date_format' => '', - 'exclude' => 0, - 'id' => 'changed', - 'table' => 'node', - 'field' => 'changed', - 'relationship' => 'none', - ), - )); - $handler->override_option('arguments', array( - 'title' => array( - 'default_action' => 'default', - 'style_plugin' => 'default_summary', - 'style_options' => array(), - 'wildcard' => 'all', - 'wildcard_substitution' => 'All', - 'title' => '', - 'default_argument_type' => 'fixed', - 'default_argument' => '', - 'validate_type' => 'none', - 'validate_fail' => 'not found', - 'glossary' => 1, - 'limit' => '1', - 'case' => 'upper', - 'path_case' => 'lower', - 'transform_dash' => 0, - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'relationship' => 'none', - 'default_argument_user' => 0, - 'default_argument_fixed' => 'a', - 'default_argument_php' => '', - 'validate_argument_vocabulary' => array(), - 'validate_argument_type' => 'tid', - 'validate_argument_php' => '', - ), - )); - $handler->override_option('access', array( - 'type' => 'none', - 'role' => array(), - 'perm' => '', - )); - $handler->override_option('use_ajax', '1'); - $handler->override_option('items_per_page', 36); - $handler->override_option('use_pager', '1'); - $handler->override_option('style_plugin', 'table'); - $handler->override_option('style_options', array( - 'grouping' => '', - 'override' => 1, - 'sticky' => 0, - 'order' => 'asc', - 'columns' => array( - 'title' => 'title', - 'name' => 'name', - 'changed' => 'changed', - ), - 'info' => array( - 'title' => array( - 'sortable' => 1, - 'separator' => '', - ), - 'name' => array( - 'sortable' => 1, - 'separator' => '', - ), - 'changed' => array( - 'sortable' => 1, - 'separator' => '', - ), + 'sortable' => 1, + 'separator' => '', ), - 'default' => 'title', - )); + ); + $handler->display->display_options['style_options']['override'] = 1; + $handler->display->display_options['style_options']['sticky'] = 0; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + $handler->display->display_options['fields']['title']['link_to_node'] = 1; + /* Field: User: Name */ + $handler->display->display_options['fields']['name']['id'] = 'name'; + $handler->display->display_options['fields']['name']['table'] = 'users'; + $handler->display->display_options['fields']['name']['field'] = 'name'; + $handler->display->display_options['fields']['name']['label'] = 'Author'; + $handler->display->display_options['fields']['name']['link_to_user'] = 1; + /* Field: Content: Updated date */ + $handler->display->display_options['fields']['changed']['id'] = 'changed'; + $handler->display->display_options['fields']['changed']['table'] = 'node'; + $handler->display->display_options['fields']['changed']['field'] = 'changed'; + $handler->display->display_options['fields']['changed']['label'] = 'Last update'; + $handler->display->display_options['fields']['changed']['date_format'] = 'large'; + /* Contextual filter: Content: Title */ + $handler->display->display_options['arguments']['title']['id'] = 'title'; + $handler->display->display_options['arguments']['title']['table'] = 'node'; + $handler->display->display_options['arguments']['title']['field'] = 'title'; + $handler->display->display_options['arguments']['title']['default_action'] = 'default'; + $handler->display->display_options['arguments']['title']['exception']['title_enable'] = 1; + $handler->display->display_options['arguments']['title']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['title']['default_argument_options']['argument'] = 'a'; + $handler->display->display_options['arguments']['title']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['title']['specify_validation'] = 1; + $handler->display->display_options['arguments']['title']['glossary'] = 1; + $handler->display->display_options['arguments']['title']['limit'] = '1'; + $handler->display->display_options['arguments']['title']['case'] = 'upper'; + $handler->display->display_options['arguments']['title']['path_case'] = 'lower'; + $handler->display->display_options['arguments']['title']['transform_dash'] = 0; + + /* Display: Page */ $handler = $view->new_display('page', 'Page', 'page'); - $handler->override_option('path', 'glossary'); - $handler->override_option('menu', array( - 'type' => 'normal', - 'title' => 'Glossary', - 'weight' => '0', - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); + $handler->display->display_options['path'] = 'glossary'; + $handler->display->display_options['menu']['type'] = 'normal'; + $handler->display->display_options['menu']['title'] = 'Glossary'; + $handler->display->display_options['menu']['weight'] = '0'; + + /* Display: Attachment */ $handler = $view->new_display('attachment', 'Attachment', 'attachment'); - $handler->override_option('arguments', array( - 'title' => array( - 'default_action' => 'summary asc', - 'style_plugin' => 'unformatted_summary', - 'style_options' => array( - 'count' => 1, - 'override' => 0, - 'items_per_page' => '25', - 'inline' => 1, - 'separator' => ' | ', - ), - 'wildcard' => 'all', - 'wildcard_substitution' => 'All', - 'title' => '', - 'default_argument_type' => 'fixed', - 'default_argument' => '', - 'validate_type' => 'none', - 'validate_fail' => 'not found', - 'glossary' => 1, - 'limit' => '1', - 'case' => 'upper', - 'path_case' => 'lower', - 'transform_dash' => 0, - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'relationship' => 'none', - 'default_argument_user' => 0, - 'default_argument_fixed' => 'a', - 'validate_argument_vocabulary' => array(), - 'validate_argument_php' => '', - ), - )); - $handler->override_option('inherit_arguments', 0); - $handler->override_option('displays', array( + $handler->display->display_options['pager']['type'] = 'none'; + $handler->display->display_options['pager']['options']['offset'] = '0'; + $handler->display->display_options['defaults']['arguments'] = FALSE; + /* Contextual filter: Content: Title */ + $handler->display->display_options['arguments']['title']['id'] = 'title'; + $handler->display->display_options['arguments']['title']['table'] = 'node'; + $handler->display->display_options['arguments']['title']['field'] = 'title'; + $handler->display->display_options['arguments']['title']['default_action'] = 'summary'; + $handler->display->display_options['arguments']['title']['exception']['title_enable'] = 1; + $handler->display->display_options['arguments']['title']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['title']['default_argument_options']['argument'] = 'a'; + $handler->display->display_options['arguments']['title']['summary']['format'] = 'unformatted_summary'; + $handler->display->display_options['arguments']['title']['summary_options']['items_per_page'] = '25'; + $handler->display->display_options['arguments']['title']['summary_options']['inline'] = 1; + $handler->display->display_options['arguments']['title']['summary_options']['separator'] = ' | '; + $handler->display->display_options['arguments']['title']['specify_validation'] = 1; + $handler->display->display_options['arguments']['title']['glossary'] = 1; + $handler->display->display_options['arguments']['title']['limit'] = '1'; + $handler->display->display_options['arguments']['title']['case'] = 'upper'; + $handler->display->display_options['arguments']['title']['path_case'] = 'lower'; + $handler->display->display_options['arguments']['title']['transform_dash'] = 0; + $handler->display->display_options['displays'] = array( 'default' => 'default', 'page' => 'page', - )); - $views[$view->name] = $view; + ); + $handler->display->display_options['inherit_arguments'] = 0; + $translatables['glossary'] = array( + t('Master'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('Title'), + t('Author'), + t('Last update'), + t('All'), + t('Page'), + t('Attachment'), + ); - $view = new view; - $view->name = 'archive'; - $view->description = 'Display a list of months that link to content for that month.'; - $view->tag = 'default'; - $view->base_table = 'node'; - $view->human_name = 'Archive'; - $view->api_version = 2; - $view->version = 7; - $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ - $handler = $view->new_display('default', 'Master', 'default'); - $handler->override_option('title', 'Monthly archive'); - $handler->override_option('sorts', array( - 'created' => array( - 'id' => 'created', - 'table' => 'node', - 'field' => 'created', - 'order' => 'DESC', - 'granularity' => 'second', - 'relationship' => 'none', - ), - )); - $handler->override_option('arguments', array( - 'created_year_month' => array( - 'id' => 'created_year_month', - 'table' => 'node', - 'field' => 'created_year_month', - 'default_action' => 'summary desc', - 'style_plugin' => 'default_summary', - 'style_options' => array( - 'count' => 1, - 'override' => 1, - 'items_per_page' => '30', - ), - 'wildcard' => 'all', - 'wildcard_substitution' => 'All', - 'title' => '%1', - 'relationship' => 'none', - 'validate_type' => 'none', - 'validate_fail' => 'not found', - 'default_argument_type' => 'fixed', - ), - )); - $handler->override_option('filters', array( - 'status' => array( - 'id' => 'status', - 'table' => 'node', - 'field' => 'status', - 'operator' => '=', - 'value' => 1, - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - 'relationship' => 'none', - ), - )); - $handler->override_option('access', array( - 'type' => 'none', - 'role' => array(), - 'perm' => '', - )); - $handler->override_option('use_pager', '1'); - $handler->override_option('row_plugin', 'node'); - $handler->override_option('row_options', array( - 'teaser' => TRUE, - 'links' => TRUE, - )); - $handler = $view->new_display('page', 'Page', 'page'); - $handler->override_option('path', 'archive'); - $handler->override_option('menu', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler = $view->new_display('block', 'Block', 'block'); - $handler->override_option('arguments', array( - 'created_year_month' => array( - 'id' => 'created_year_month', - 'table' => 'node', - 'field' => 'created_year_month', - 'default_action' => 'summary asc', - 'style_plugin' => 'default_summary', - 'style_options' => array( - 'count' => 1, - 'override' => 0, - 'items_per_page' => '30', - ), - 'wildcard' => 'all', - 'wildcard_substitution' => 'All', - 'title' => '%1', - 'relationship' => 'none', - 'validate_type' => 'none', - 'validate_fail' => 'not found', - 'default_argument_type' => 'fixed', - ), - )); - $handler->override_option('block_description', 'Archive list'); - $views[$view->name] = $view; + $views['glossary'] = $view; return $views; } diff --git a/sites/all/modules/views/modules/node.views_template.inc b/sites/all/modules/views/modules/node.views_template.inc new file mode 100644 index 000000000..67b1986d3 --- /dev/null +++ b/sites/all/modules/views/modules/node.views_template.inc @@ -0,0 +1,132 @@ +<?php +/** + * @file + * Contains views templates on behalf of the node module. + */ +function node_views_templates() { + // Only the standard install profile has the image field provided so only show it for it. + if (variable_get('install_profile', 'standard') != 'standard') { + return array(); + } + $view = new view; + $view->name = 'image_gallery'; + $view->description = 'Shows all images which was uploaded on the "field_image" field'; + $view->tag = ''; + $view->base_table = 'node'; + $view->human_name = 'Image Gallery'; + $view->core = 7; + $view->api_version = '3.0-alpha1'; + $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Defaults */ + $handler = $view->new_display('default', 'Defaults', 'default'); + $handler->display->display_options['title'] = 'Image gallery'; + $handler->display->display_options['access']['type'] = 'perm'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = '24'; + $handler->display->display_options['pager']['options']['offset'] = '0'; + $handler->display->display_options['pager']['options']['id'] = '0'; + $handler->display->display_options['pager']['options']['expose']['items_per_page_options_all'] = 0; + $handler->display->display_options['style_plugin'] = 'grid'; + $handler->display->display_options['style_options']['fill_single_line'] = 1; + $handler->display->display_options['row_plugin'] = 'fields'; + /* Field: Content: Image */ + $handler->display->display_options['fields']['field_image']['id'] = 'field_image'; + $handler->display->display_options['fields']['field_image']['table'] = 'field_data_field_image'; + $handler->display->display_options['fields']['field_image']['field'] = 'field_image'; + $handler->display->display_options['fields']['field_image']['label'] = ''; + $handler->display->display_options['fields']['field_image']['alter']['alter_text'] = 0; + $handler->display->display_options['fields']['field_image']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['field_image']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['field_image']['alter']['external'] = 0; + $handler->display->display_options['fields']['field_image']['alter']['trim'] = 0; + $handler->display->display_options['fields']['field_image']['alter']['nl2br'] = 0; + $handler->display->display_options['fields']['field_image']['alter']['word_boundary'] = 1; + $handler->display->display_options['fields']['field_image']['alter']['ellipsis'] = 1; + $handler->display->display_options['fields']['field_image']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['field_image']['alter']['html'] = 0; + $handler->display->display_options['fields']['field_image']['element_label_colon'] = 1; + $handler->display->display_options['fields']['field_image']['element_default_classes'] = 1; + $handler->display->display_options['fields']['field_image']['hide_empty'] = 0; + $handler->display->display_options['fields']['field_image']['empty_zero'] = 0; + $handler->display->display_options['fields']['field_image']['click_sort_column'] = 'fid'; + $handler->display->display_options['fields']['field_image']['settings'] = array( + 'image_style' => 'thumbnail', + 'image_link' => 'content', + ); + $handler->display->display_options['fields']['field_image']['field_api_classes'] = 0; + /* Field: User: Name */ + $handler->display->display_options['fields']['name']['id'] = 'name'; + $handler->display->display_options['fields']['name']['table'] = 'users'; + $handler->display->display_options['fields']['name']['field'] = 'name'; + $handler->display->display_options['fields']['name']['label'] = 'Author'; + $handler->display->display_options['fields']['name']['alter']['alter_text'] = 0; + $handler->display->display_options['fields']['name']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['name']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['name']['alter']['external'] = 0; + $handler->display->display_options['fields']['name']['alter']['trim'] = 0; + $handler->display->display_options['fields']['name']['alter']['nl2br'] = 0; + $handler->display->display_options['fields']['name']['alter']['word_boundary'] = 1; + $handler->display->display_options['fields']['name']['alter']['ellipsis'] = 1; + $handler->display->display_options['fields']['name']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['name']['alter']['html'] = 0; + $handler->display->display_options['fields']['name']['element_label_colon'] = 1; + $handler->display->display_options['fields']['name']['element_default_classes'] = 1; + $handler->display->display_options['fields']['name']['hide_empty'] = 0; + $handler->display->display_options['fields']['name']['empty_zero'] = 0; + $handler->display->display_options['fields']['name']['link_to_user'] = 1; + $handler->display->display_options['fields']['name']['overwrite_anonymous'] = 0; + /* Contextual filter: Content: Has taxonomy term ID */ + $handler->display->display_options['arguments']['tid']['id'] = 'tid'; + $handler->display->display_options['arguments']['tid']['table'] = 'taxonomy_index'; + $handler->display->display_options['arguments']['tid']['field'] = 'tid'; + $handler->display->display_options['arguments']['tid']['default_action'] = 'summary'; + $handler->display->display_options['arguments']['tid']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['tid']['default_argument_skip_url'] = 0; + $handler->display->display_options['arguments']['tid']['summary']['number_of_records'] = '1'; + $handler->display->display_options['arguments']['tid']['summary']['format'] = 'unformatted_summary'; + $handler->display->display_options['arguments']['tid']['summary_options']['items_per_page'] = '25'; + $handler->display->display_options['arguments']['tid']['summary_options']['inline'] = 0; + $handler->display->display_options['arguments']['tid']['break_phrase'] = 0; + $handler->display->display_options['arguments']['tid']['add_table'] = 0; + $handler->display->display_options['arguments']['tid']['require_value'] = 0; + $handler->display->display_options['arguments']['tid']['reduce_duplicates'] = 0; + $handler->display->display_options['arguments']['tid']['set_breadcrumb'] = 0; + /* Filter criterion: Content: Image (field_image) - fid */ + $handler->display->display_options['filters']['field_image_fid']['id'] = 'field_image_fid'; + $handler->display->display_options['filters']['field_image_fid']['table'] = 'field_data_field_image'; + $handler->display->display_options['filters']['field_image_fid']['field'] = 'field_image_fid'; + $handler->display->display_options['filters']['field_image_fid']['operator'] = 'not empty'; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = '1'; + + /* Display: Gallery page */ + $handler = $view->new_display('page', 'Gallery page', 'page_1'); + $handler->display->display_options['path'] = 'gallery'; + $translatables['image_gallery'] = array( + t('Defaults'), + t('Image gallery'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('Author'), + t('All'), + t('Gallery page'), + ); + + $views[$view->name] = $view; + + return $views; +} diff --git a/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc b/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc index 7171581fe..95404f101 100644 --- a/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc +++ b/sites/all/modules/views/modules/node/views_handler_argument_dates_various.inc @@ -1,5 +1,11 @@ <?php /** + * @defgroup views_argument_handlers Handlers for arguments + * @{ + */ + +/** + * @file * Argument handler for a full date (CCYYMMDD) */ class views_handler_argument_node_created_fulldate extends views_handler_argument_date { @@ -167,3 +173,7 @@ class views_handler_argument_node_created_week extends views_handler_argument_da return t('Week @week', array('@week' => $created)); } } + +/** + * @} + */ diff --git a/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc b/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc index 85ff6c8e7..1978168ae 100644 --- a/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc +++ b/sites/all/modules/views/modules/node/views_handler_argument_node_language.inc @@ -24,8 +24,7 @@ class views_handler_argument_node_language extends views_handler_argument { } function node_language($langcode) { - $languages = locale_language_list(); + $languages = views_language_list(); return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language'); } } - diff --git a/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc b/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc index 72a739f5a..991bc8dc8 100644 --- a/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc +++ b/sites/all/modules/views/modules/node/views_handler_argument_node_nid.inc @@ -21,4 +21,3 @@ class views_handler_argument_node_nid extends views_handler_argument_numeric { return $titles; } } - diff --git a/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc b/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc index 7ade1f98f..995872ca2 100644 --- a/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc +++ b/sites/all/modules/views/modules/node/views_handler_argument_node_uid_revision.inc @@ -5,8 +5,8 @@ * Filter handler to accept a user id to check for nodes that * user posted or created a revision on. */ -class views_handler_filter_node_uid_revision extends views_handler_argument_comment_user_uid { - function query() { +class views_handler_argument_node_uid_revision extends views_handler_argument_comment_user_uid { + function query($group_by = FALSE) { $this->ensure_my_table(); $placeholder = $this->placeholder(); $this->query->add_where_expression(0, "$this->table_alias.uid = $placeholder OR ((SELECT COUNT(*) FROM {node_revision} nr WHERE nr.uid = $placeholder AND nr.nid = $this->table_alias.nid) > 0)", array($placeholder => $this->argument)); diff --git a/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc b/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc index 88f110dbd..55db56a7a 100644 --- a/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc +++ b/sites/all/modules/views/modules/node/views_handler_argument_node_vid.inc @@ -23,4 +23,3 @@ class views_handler_argument_node_vid extends views_handler_argument_numeric { return $titles; } } - diff --git a/sites/all/modules/views/modules/node/views_handler_field_node.inc b/sites/all/modules/views/modules/node/views_handler_field_node.inc index dd07b6c71..49ac468c9 100644 --- a/sites/all/modules/views/modules/node/views_handler_field_node.inc +++ b/sites/all/modules/views/modules/node/views_handler_field_node.inc @@ -13,7 +13,8 @@ class views_handler_field_node extends views_handler_field { function init(&$view, &$options) { parent::init($view, $options); - if (!empty($this->options['link_to_node'])) { + // Don't add the additional fields to groupby + if (!empty($this->options['link_to_node']) && !$this->view->display_handler->use_group_by()) { $this->additional_fields['nid'] = array('table' => 'node', 'field' => 'nid'); if (module_exists('translation')) { $this->additional_fields['language'] = array('table' => 'node', 'field' => 'language'); @@ -47,7 +48,7 @@ class views_handler_field_node extends views_handler_field { * Data should be made XSS safe prior to calling this function. */ function render_link($data, $values) { - if (!empty($this->options['link_to_node'])) { + if (!empty($this->options['link_to_node']) && !empty($this->additional_fields['nid'])) { if ($data !== NULL && $data !== '') { $this->options['alter']['make_link'] = TRUE; $this->options['alter']['path'] = "node/" . $this->get_value($values, 'nid'); diff --git a/sites/all/modules/views/modules/node/views_handler_field_node_link.inc b/sites/all/modules/views/modules/node/views_handler_field_node_link.inc index c9339ace9..8bff50a4d 100644 --- a/sites/all/modules/views/modules/node/views_handler_field_node_link.inc +++ b/sites/all/modules/views/modules/node/views_handler_field_node_link.inc @@ -2,17 +2,11 @@ /** * Field handler to present a link to the node. */ -class views_handler_field_node_link extends views_handler_field { - function construct() { - parent::construct(); - $this->additional_fields['nid'] = 'nid'; - } +class views_handler_field_node_link extends views_handler_field_entity { function option_definition() { $options = parent::option_definition(); - $options['text'] = array('default' => '', 'translatable' => TRUE); - return $options; } @@ -23,22 +17,24 @@ class views_handler_field_node_link extends views_handler_field { '#default_value' => $this->options['text'], ); parent::options_form($form, $form_state); - } - function query() { - $this->ensure_my_table(); - $this->add_additional_fields(); + // The path is set by render_link function so don't allow to set it. + $form['alter']['path'] = array('#access' => FALSE); + $form['alter']['external'] = array('#access' => FALSE); } function render($values) { - $value = $this->get_value($values, 'nid'); - return $this->render_link($this->sanitize_value($value), $values); + if ($entity = $this->get_value($values)) { + return $this->render_link($entity, $values); + } } - function render_link($data, $values) { - $this->options['alter']['make_link'] = TRUE; - $this->options['alter']['path'] = "node/$data"; - $text = !empty($this->options['text']) ? $this->options['text'] : t('view'); - return $text; + function render_link($node, $values) { + if (node_access('view', $node)) { + $this->options['alter']['make_link'] = TRUE; + $this->options['alter']['path'] = "node/$node->nid"; + $text = !empty($this->options['text']) ? $this->options['text'] : t('view'); + return $text; + } } } diff --git a/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc b/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc index caf7439b6..274886201 100644 --- a/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc +++ b/sites/all/modules/views/modules/node/views_handler_field_node_link_delete.inc @@ -3,19 +3,12 @@ * Field handler to present a link to delete a node. */ class views_handler_field_node_link_delete extends views_handler_field_node_link { - function construct() { - parent::construct(); - $this->additional_fields['type'] = 'type'; - $this->additional_fields['uid'] = 'uid'; - } - function render_link($data, $values) { - // ensure user has access to edit this node. - $node = new stdClass(); - $node->nid = $this->get_value($values, 'nid'); - $node->uid = $this->get_value($values, 'uid'); - $node->type = $this->get_value($values, 'type'); - $node->status = 1; // unpublished nodes ignore access control + /** + * Renders the link. + */ + function render_link($node, $values) { + // Ensure user has access to delete this node. if (!node_access('delete', $node)) { return; } diff --git a/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc b/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc index 687412fac..de9e8a49c 100644 --- a/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc +++ b/sites/all/modules/views/modules/node/views_handler_field_node_link_edit.inc @@ -3,19 +3,12 @@ * Field handler to present a link node edit. */ class views_handler_field_node_link_edit extends views_handler_field_node_link { - function construct() { - parent::construct(); - $this->additional_fields['uid'] = 'uid'; - $this->additional_fields['type'] = 'type'; - } - function render_link($data, $values) { - // ensure user has access to edit this node. - $node = new stdClass(); - $node->nid = $this->get_value($values, 'nid'); - $node->uid = $this->get_value($values, 'uid'); - $node->type = $this->get_value($values, 'type'); - $node->status = 1; // unpublished nodes ignore access control + /** + * Renders the link. + */ + function render_link($node, $values) { + // Ensure user has access to edit this node. if (!node_access('update', $node)) { return; } diff --git a/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc b/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc index 031fe3e47..87000caa4 100644 --- a/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc +++ b/sites/all/modules/views/modules/node/views_handler_field_node_revision_link_delete.inc @@ -8,6 +8,7 @@ class views_handler_field_node_revision_link_delete extends views_handler_field_ $this->additional_fields['uid'] = array('table' => 'node', 'field' => 'uid'); $this->additional_fields['node_vid'] = array('table' => 'node', 'field' => 'vid'); $this->additional_fields['vid'] = 'vid'; + $this->additional_fields['type'] = array('table' => 'node', 'field' => 'type'); } function access() { @@ -18,6 +19,7 @@ class views_handler_field_node_revision_link_delete extends views_handler_field_ // ensure user has access to delete this node. $node = new stdClass(); $node->nid = $this->get_value($values, 'nid'); + $node->vid = $this->get_value($values, 'vid'); $node->uid = $this->get_value($values, 'uid'); $node->type = $this->get_value($values, 'type'); $node->status = 1; // unpublished nodes ignore access control diff --git a/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc b/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc index 8232c9907..c287697c0 100644 --- a/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc +++ b/sites/all/modules/views/modules/node/views_handler_filter_node_type.inc @@ -10,6 +10,7 @@ class views_handler_filter_node_type extends views_handler_filter_in_operator { foreach ($types as $type => $info) { $options[$type] = t($info->name); } + asort($options); $this->value_options = $options; } } diff --git a/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc b/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc index c7d451266..56441b55e 100644 --- a/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc +++ b/sites/all/modules/views/modules/node/views_handler_filter_node_uid_revision.inc @@ -5,7 +5,7 @@ * Filter handler to check for revisions a certain user has created. */ class views_handler_filter_node_uid_revision extends views_handler_filter_user_name { - function query() { + function query($group_by = FALSE) { $this->ensure_my_table(); $placeholder = $this->placeholder(); diff --git a/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc b/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc index 276c7fef6..f88af08bd 100644 --- a/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc +++ b/sites/all/modules/views/modules/node/views_plugin_argument_default_node.inc @@ -23,4 +23,3 @@ class views_plugin_argument_default_node extends views_plugin_argument_default { } } } - diff --git a/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc b/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc index ead008b50..498ee76ca 100644 --- a/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc +++ b/sites/all/modules/views/modules/node/views_plugin_argument_validate_node.inc @@ -42,6 +42,7 @@ class views_plugin_argument_validate_node extends views_plugin_argument_validate '#title' => t('Access operation to check'), '#options' => array('view' => t('View'), 'update' => t('Edit'), 'delete' => t('Delete')), '#default_value' => $this->options['access_op'], + '#dependency' => array('edit-options-validate-options-node-access' => array(TRUE)), ); $form['nid_type'] = array( @@ -55,16 +56,16 @@ class views_plugin_argument_validate_node extends views_plugin_argument_validate ); } - function options_submit(&$form, &$form_state, &$options) { + function options_submit(&$form, &$form_state, &$options = array()) { // filter trash out of the options so we don't store giant unnecessary arrays $options['types'] = array_filter($options['types']); } function convert_options(&$options) { if (!isset($options['types']) && !empty($this->argument->options['validate_argument_node_type'])) { - $options['types'] = $this->argument->options['validate_argument_node_type']; + $options['types'] = isset($this->argument->options['validate_argument_node_type']) ? $this->argument->options['validate_argument_node_type'] : array(); $options['access'] = !empty($this->argument->options['validate_argument_node_access']); - $options['access_op'] = $this->argument->options['validate_argument_node_access_op']; + $options['access_op'] = isset($this->argument->options['validate_argument_node_access_op']) ? $this->argument->options['validate_argument_node_access_op'] : 'view'; $options['nid_type'] = isset($this->argument->options['validate_argument_nid_type']) ? $this->argument->options['validate_argument_nid_type'] : array(); } } @@ -101,7 +102,7 @@ class views_plugin_argument_validate_node extends views_plugin_argument_validate $nids = new stdClass(); $nids->value = array($argument); $nids = views_break_phrase($argument, $nids); - if ($nids->value == -1) { + if ($nids->value == array(-1)) { return FALSE; } diff --git a/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc b/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc index ac589b0e5..c1086ccb2 100644 --- a/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc +++ b/sites/all/modules/views/modules/node/views_plugin_row_node_rss.inc @@ -20,6 +20,7 @@ class views_plugin_row_node_rss extends views_plugin_row { $options = parent::option_definition(); $options['item_length'] = array('default' => 'default'); + $options['links'] = FALSE; return $options; } @@ -33,6 +34,11 @@ class views_plugin_row_node_rss extends views_plugin_row { '#options' => $this->options_form_summary_options(), '#default_value' => $this->options['item_length'], ); + $form['links'] = array( + '#type' => 'checkbox', + '#title' => t('Display links'), + '#default_value' => $this->options['links'], + ); } /** @@ -54,10 +60,13 @@ class views_plugin_row_node_rss extends views_plugin_row { function pre_render($values) { + $nids = array(); foreach ($values as $row) { $nids[] = $row->{$this->field_alias}; } - $this->nodes = node_load_multiple($nids); + if (!empty($nids)) { + $this->nodes = node_load_multiple($nids); + } } function render($row) { @@ -82,41 +91,56 @@ class views_plugin_row_node_rss extends views_plugin_row { $item_text = ''; - $node->rss_namespaces = array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/'); + $uri = entity_uri('node', $node); + $node->link = url($uri['path'], $uri['options'] + array('absolute' => TRUE)); + $node->rss_namespaces = array(); $node->rss_elements = array( - array('key' => 'pubDate', 'value' => gmdate('r', $node->created)), - array('key' => 'dc:creator', 'value' => $node->name), - array('key' => 'guid', 'value' => $node->nid . ' at ' . $base_url, 'attributes' => array('isPermaLink' => 'false')) + array( + 'key' => 'pubDate', + 'value' => gmdate('r', $node->created), + ), + array( + 'key' => 'dc:creator', + 'value' => $node->name, + ), + array( + 'key' => 'guid', + 'value' => $node->nid . ' at ' . $base_url, + 'attributes' => array('isPermaLink' => 'false'), + ), ); // The node gets built and modules add to or modify $node->rss_elements // and $node->rss_namespaces. - node_build_content($node, 'rss'); + $build = node_view($node, 'rss'); + unset($build['#theme']); - $this->view->style_plugin->namespaces = array_merge($this->view->style_plugin->namespaces, $node->rss_namespaces); + if (!empty($node->rss_namespaces)) { + $this->view->style_plugin->namespaces = array_merge($this->view->style_plugin->namespaces, $node->rss_namespaces); + } - if ($item_length != 'title' && !empty($node->content)) { + // Hide the links if desired. + if (!$this->options['links']) { + hide($build['links']); + } + + if ($item_length != 'title') { // We render node contents and force links to be last. - $links = drupal_render($node->content['links']); - $item_text .= drupal_render($node->content) . $links; + $build['links']['#weight'] = 1000; + $item_text .= drupal_render($build); } - $item = new stdClass; + $item = new stdClass(); $item->description = $item_text; $item->title = $node->title; - $item->link = url("node/$node->nid", array('absolute' => TRUE)); + $item->link = $node->link; $item->elements = $node->rss_elements; $item->nid = $node->nid; - if (isset($node->readmore)) { - $item->readmore = $node->readmore; - } - return theme($this->theme_functions(), - array( - 'view' => $this->view, - 'options' => $this->options, - 'row' => $item - )); + return theme($this->theme_functions(), array( + 'view' => $this->view, + 'options' => $this->options, + 'row' => $item + )); } } - diff --git a/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc b/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc index bff594987..040e7bd4b 100644 --- a/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc +++ b/sites/all/modules/views/modules/node/views_plugin_row_node_view.inc @@ -94,4 +94,12 @@ class views_plugin_row_node_view extends views_plugin_row { } $this->nodes = node_load_multiple($nids); } + + function render($row) { + $node = $this->nodes[$row->{$this->field_alias}]; + $node->view = $this->view; + $build = node_view($node, $this->options['view_mode']); + + return drupal_render($build); + } } diff --git a/sites/all/modules/views/modules/profile.views_convert.inc b/sites/all/modules/views/modules/profile.views_convert.inc deleted file mode 100644 index b4f08daaa..000000000 --- a/sites/all/modules/views/modules/profile.views_convert.inc +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - * - * Intervene to convert field values from the Views 1 format to the - * Views 2 format. Intervene only if $view->add_item() won't produce - * the right results, usually needed to set field options or values. - */ -function profile_views_convert($display, $type, &$view, $field, $id = NULL) { - static $profile_fields; - if (!isset($profile_fields)) { - $profile_fields = array(); - foreach (profile_views_get_fields() as $profile_field) { - $profile_fields['profile_values_'. $profile_field->name] = $profile_field; - } - } - switch ($type) { - case 'filter': - if (isset($tables[$field['tablename']])) { - switch ($profile_fields[$field['tablename']]->type) { - case 'vocabulary': - case 'selection': - $operators = array('AND' => 'in', 'OR' => 'in', 'NOR' => 'not in'); - $view->set_item_option($display, 'filter', $id, 'operator', $operators[$field['operator']]); - break; - default: - $view->set_item_option($display, 'filter', $id, 'operator', $field['operator']); - break; - } - } - break; - } -} \ No newline at end of file diff --git a/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc b/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc index a294b6557..6c1cc6684 100644 --- a/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc +++ b/sites/all/modules/views/modules/profile/views_handler_field_profile_date.inc @@ -42,7 +42,7 @@ class views_handler_field_profile_date extends views_handler_field_date { // birthdays. // But we *can* deal with non-year stuff: - $date = gmmktime(0, 0, 0, $value['month'], $value['day'], 1970); + $date = gmmktime(0, 0, 0, $value['month'], $value['day'], $value['year']); $replace = array( // day 'd' => sprintf('%02d', $value['day']), diff --git a/sites/all/modules/views/modules/search.views.inc b/sites/all/modules/views/modules/search.views.inc index f661c7cf4..6f0bc1b36 100644 --- a/sites/all/modules/views/modules/search.views.inc +++ b/sites/all/modules/views/modules/search.views.inc @@ -70,10 +70,12 @@ function search_views_data() { 'handler' => 'views_handler_field_search_score', 'click sortable' => TRUE, 'float' => TRUE, + 'no group by' => TRUE, ), // Information for sorting on a search score. 'sort' => array( 'handler' => 'views_handler_sort_search_score', + 'no group by' => TRUE, ), ); @@ -120,9 +122,11 @@ function search_views_data() { // Information for searching terms using the full search syntax 'filter' => array( 'handler' => 'views_handler_filter_search', + 'no group by' => TRUE, ), 'argument' => array( 'handler' => 'views_handler_argument_search', + 'no group by' => TRUE, ), ); @@ -164,6 +168,7 @@ function template_preprocess_views_view_row_search(&$vars) { return; } + // @todo: Once the search row is fixed this node_load should be replace by a node_load_multiple $node = node_load($nid); if (empty($node)) { diff --git a/sites/all/modules/views/modules/search.views_convert.inc b/sites/all/modules/views/modules/search.views_convert.inc deleted file mode 100644 index 08fd29769..000000000 --- a/sites/all/modules/views/modules/search.views_convert.inc +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/** - * @file - * Field conversion for fields handled by this module. - */ - -function search_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'filter': - switch ($field['tablename']) { - case 'temp_search_results': - switch ($field['field']) { - case 'word': - $view->set_item_option($display, 'filter', $id, 'table', 'search_index'); - $view->set_item_option($display, 'filter', $id, 'field', 'keys'); - break; - } - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/search.views_default.inc b/sites/all/modules/views/modules/search.views_default.inc index f10f3766e..449dfb3c7 100644 --- a/sites/all/modules/views/modules/search.views_default.inc +++ b/sites/all/modules/views/modules/search.views_default.inc @@ -1,151 +1,118 @@ <?php + /** * @file - * Contains default views on behalf of the search module. + * Bulk export of views_default objects generated by Bulk export module. */ /** - * Implements hook_views_default_views(). + * Implementation of hook_views_default_views() */ function search_views_default_views() { + $views = array(); + $view = new view; $view->name = 'backlinks'; $view->description = 'Displays a list of nodes that link to the node, using the search backlinks table.'; $view->tag = 'default'; $view->base_table = 'node'; $view->human_name = 'Backlinks'; - $view->api_version = 2; - $view->version = 7; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ $handler = $view->new_display('default', 'Master', 'default'); - $handler->override_option('fields', array( - 'title' => array( - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'label' => '', - 'relationship' => 'none', - 'link_to_node' => 1, - ), - )); - $handler->override_option('arguments', array( - 'nid' => array( - 'id' => 'nid', - 'table' => 'search_node_links_to', - 'field' => 'nid', - 'default_action' => 'not found', - 'style_plugin' => 'default_summary', - 'style_options' => array( - 'count' => TRUE, - 'override' => FALSE, - 'items_per_page' => 25, - ), - 'wildcard' => '', - 'wildcard_substitution' => '', - 'title' => 'Pages that link to %1', - 'default_argument_type' => 'fixed', - 'default_argument' => '', - 'validate_type' => 'node', - 'validate_fail' => 'not found', - 'relationship' => 'none', - 'default_argument_fixed' => '', - 'default_argument_php' => '', - 'validate_argument_node_type' => array(), - 'validate_argument_php' => '', - ), - )); - $handler->override_option('filters', array( - 'status' => array( - 'id' => 'status', - 'table' => 'node', - 'field' => 'status', - 'operator' => '=', - 'value' => 1, - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - 'relationship' => 'none', - ), - )); - $handler->override_option('access', array( - 'type' => 'none', - 'role' => array(), - 'perm' => '', - )); - $handler->override_option('empty', 'No backlinks found.'); - $handler->override_option('empty_format', '1'); - $handler->override_option('items_per_page', 30); - $handler->override_option('use_pager', '1'); - $handler->override_option('style_plugin', 'list'); - $handler->override_option('style_options', array( - 'type' => 'ol', - )); + $handler->display->display_options['access']['type'] = 'none'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = 30; + $handler->display->display_options['style_plugin'] = 'list'; + $handler->display->display_options['style_options']['type'] = 'ol'; + $handler->display->display_options['row_plugin'] = 'fields'; + /* No results behavior: Global: Text area */ + $handler->display->display_options['empty']['text']['id'] = 'area'; + $handler->display->display_options['empty']['text']['table'] = 'views'; + $handler->display->display_options['empty']['text']['field'] = 'area'; + $handler->display->display_options['empty']['text']['empty'] = FALSE; + $handler->display->display_options['empty']['text']['content'] = 'No backlinks found.'; + $handler->display->display_options['empty']['text']['format'] = '1'; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + $handler->display->display_options['fields']['title']['label'] = ''; + $handler->display->display_options['fields']['title']['link_to_node'] = 1; + /* Contextual filter: Search: Links to */ + $handler->display->display_options['arguments']['nid']['id'] = 'nid'; + $handler->display->display_options['arguments']['nid']['table'] = 'search_node_links_to'; + $handler->display->display_options['arguments']['nid']['field'] = 'nid'; + $handler->display->display_options['arguments']['nid']['default_action'] = 'not found'; + $handler->display->display_options['arguments']['nid']['title_enable'] = 1; + $handler->display->display_options['arguments']['nid']['title'] = 'Pages that link to %1'; + $handler->display->display_options['arguments']['nid']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['nid']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['nid']['specify_validation'] = 1; + $handler->display->display_options['arguments']['nid']['validate']['type'] = 'node'; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = 1; + $handler->display->display_options['filters']['status']['group'] = 0; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + + /* Display: Page */ $handler = $view->new_display('page', 'Page', 'page'); - $handler->override_option('path', 'node/%/backlinks'); - $handler->override_option('menu', array( - 'type' => 'tab', - 'title' => 'What links here', - 'weight' => '0', - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler = $view->new_display('block', 'Block', 'block'); - $handler->override_option('arguments', array( - 'nid' => array( - 'id' => 'nid', - 'table' => 'search_node_links_to', - 'field' => 'nid', - 'default_action' => 'default', - 'style_plugin' => 'default_summary', - 'style_options' => array( - 'count' => TRUE, - 'override' => FALSE, - 'items_per_page' => 25, - ), - 'wildcard' => '', - 'wildcard_substitution' => '', - 'title' => 'What links here', - 'default_argument_type' => 'node', - 'default_argument' => '', - 'validate_type' => 'node', - 'validate_fail' => 'not found', - 'relationship' => 'none', - 'default_argument_fixed' => '', - 'default_argument_php' => 'return ($node = menu_get_object()) ? $node->nid : FALSE;', - 'validate_argument_node_type' => array( - 'album' => 0, - 'artist' => 0, - 'book' => 0, - 'page' => 0, - 'story' => 0, - 'track' => 0, - ), - 'validate_argument_php' => '', - 'default_argument_user' => 0, - 'validate_argument_vocabulary' => array( - '3' => 0, - '4' => 0, - '1' => 0, - '5' => 0, - '2' => 0, - ), - 'validate_argument_type' => 'tid', - ), - )); - $handler->override_option('items_per_page', 6); - $handler->override_option('use_more', 1); - $handler->override_option('style_plugin', 'list'); - $handler->override_option('style_options', array( - 'type' => 'ul', - )); - $handler->override_option('block_description', 'What links here'); - $views[$view->name] = $view; + $handler->display->display_options['path'] = 'node/%/backlinks'; + $handler->display->display_options['menu']['type'] = 'tab'; + $handler->display->display_options['menu']['title'] = 'What links here'; + $handler->display->display_options['menu']['weight'] = '0'; + + /* Display: What links here */ + $handler = $view->new_display('block', 'What links here', 'block'); + $handler->display->display_options['defaults']['use_more'] = FALSE; + $handler->display->display_options['use_more'] = TRUE; + $handler->display->display_options['defaults']['style_plugin'] = FALSE; + $handler->display->display_options['style_plugin'] = 'list'; + $handler->display->display_options['defaults']['style_options'] = FALSE; + $handler->display->display_options['defaults']['row_plugin'] = FALSE; + $handler->display->display_options['row_plugin'] = 'fields'; + $handler->display->display_options['defaults']['row_options'] = FALSE; + $handler->display->display_options['defaults']['arguments'] = FALSE; + /* Contextual filter: Search: Links to */ + $handler->display->display_options['arguments']['nid']['id'] = 'nid'; + $handler->display->display_options['arguments']['nid']['table'] = 'search_node_links_to'; + $handler->display->display_options['arguments']['nid']['field'] = 'nid'; + $handler->display->display_options['arguments']['nid']['default_action'] = 'default'; + $handler->display->display_options['arguments']['nid']['title_enable'] = 1; + $handler->display->display_options['arguments']['nid']['title'] = 'What links here'; + $handler->display->display_options['arguments']['nid']['default_argument_type'] = 'node'; + $handler->display->display_options['arguments']['nid']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['nid']['specify_validation'] = 1; + $handler->display->display_options['arguments']['nid']['validate']['type'] = 'node'; + $translatables['backlinks'] = array( + t('Master'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('No backlinks found.'), + t('All'), + t('Pages that link to %1'), + t('Page'), + t('What links here'), + ); + + $views['backlinks'] = $view; return $views; } diff --git a/sites/all/modules/views/modules/search/views_handler_argument_search.inc b/sites/all/modules/views/modules/search/views_handler_argument_search.inc index fd1372f3b..7fbdebb38 100644 --- a/sites/all/modules/views/modules/search/views_handler_argument_search.inc +++ b/sites/all/modules/views/modules/search/views_handler_argument_search.inc @@ -36,16 +36,13 @@ class views_handler_argument_search extends views_handler_argument { } if ($required) { if ($this->operator == 'required') { - $this->query->add_where($this->options['group'], 'FALSE'); + $this->query->add_where(0, 'FALSE'); } } else { $search_index = $this->ensure_my_table(); - $or = db_or(); - foreach ($words as $word) { - $or->condition("$search_index.word", $word); - } + $search_condition = db_and(); // Create a new join to relate the 'search_total' table to our current 'search_index' table. $join = new views_join; @@ -54,15 +51,14 @@ class views_handler_argument_search extends views_handler_argument { $this->search_score = $this->query->add_field('', "SUM($search_index.score * $search_total.count)", 'score', array('aggregate' => TRUE)); - $this->query->add_where($this->options['group'], $or); - if (empty($this->query->relationships[$this->relationship])) { $base_table = $this->query->base_table; } else { $base_table = $this->query->relationships[$this->relationship]['base']; } - $this->query->add_where($this->options['group'], "$search_index.type", $base_table); + $search_condition->condition("$search_index.type", $base_table); + if (!$this->search_query->simple()) { $search_dataset = $this->query->add_table('search_dataset'); $conditions = $this->search_query->conditions(); @@ -74,13 +70,24 @@ class views_handler_argument_search extends views_handler_argument { $this->search_query->condition_replace_string('d.', "$search_dataset.", $condition); } } - $this->query->add_where($this->options['group'], $conditions); + $search_conditions =& $search_condition->conditions(); + $search_conditions = array_merge($search_conditions, $condition_conditions); + } + else { + // Stores each condition, so and/or on the filter level will still work. + $or = db_or(); + foreach ($words as $word) { + $or->condition("$search_index.word", $word); + } + + $search_condition->condition($or); } + $this->query->add_where(0, $search_condition); $this->query->add_groupby("$search_index.sid"); $matches = $this->search_query->matches(); $placeholder = $this->placeholder(); - $this->query->add_having_expression($this->options['group'], "COUNT(*) >= $placeholder", array($placeholder => $matches)); + $this->query->add_having_expression(0, "COUNT(*) >= $placeholder", array($placeholder => $matches)); } } } diff --git a/sites/all/modules/views/modules/search/views_handler_filter_search.inc b/sites/all/modules/views/modules/search/views_handler_filter_search.inc index bf7089fb4..4ed228dac 100644 --- a/sites/all/modules/views/modules/search/views_handler_filter_search.inc +++ b/sites/all/modules/views/modules/search/views_handler_filter_search.inc @@ -44,16 +44,14 @@ class views_handler_filter_search extends views_handler_filter { /** * Provide a simple textfield for equality */ - function exposed_form(&$form, &$form_state) { - if (isset($this->options['expose']['identifier'])) { - $key = $this->options['expose']['identifier']; - $form[$key] = array( - '#type' => 'textfield', - '#size' => 15, - '#default_value' => $this->value, - '#attributes' => array('title' => t('Enter the terms you wish to search for.')), - ); - } + function value_form(&$form, &$form_state) { + $form['value'] = array( + '#type' => 'textfield', + '#size' => 15, + '#default_value' => $this->value, + '#attributes' => array('title' => t('Enter the terms you wish to search for.')), + '#title' => empty($form_state['exposed']) ? t('Value') : '', + ); } /** @@ -96,7 +94,7 @@ class views_handler_filter_search extends views_handler_filter { * and $this->value respectively. */ function query() { - // Since attachment views don't validate the exposed input, parse the search + // Since attachment views don't validate the exposed input, parse the search // expression if required. if (!$this->parsed) { $this->query_parse_search_expression($this->value); @@ -119,10 +117,7 @@ class views_handler_filter_search extends views_handler_filter { else { $search_index = $this->ensure_my_table(); - $or = db_or(); - foreach ($words as $word) { - $or->condition("$search_index.word", $word); - } + $search_condition = db_and(); // Create a new join to relate the 'serach_total' table to our current 'search_index' table. $join = new views_join; @@ -131,15 +126,13 @@ class views_handler_filter_search extends views_handler_filter { $this->search_score = $this->query->add_field('', "SUM($search_index.score * $search_total.count)", 'score', array('aggregate' => TRUE)); - $this->query->add_where($this->options['group'], $or); - if (empty($this->query->relationships[$this->relationship])) { $base_table = $this->query->base_table; } else { $base_table = $this->query->relationships[$this->relationship]['base']; } - $this->query->add_where($this->options['group'], "$search_index.type", $base_table); + $search_condition->condition("$search_index.type", $base_table); if (!$this->search_query->simple()) { $search_dataset = $this->query->add_table('search_dataset'); $conditions = $this->search_query->conditions(); @@ -151,18 +144,31 @@ class views_handler_filter_search extends views_handler_filter { $this->search_query->condition_replace_string('d.', "$search_dataset.", $condition); } } - $this->query->add_where($this->options['group'], $conditions); + $search_conditions =& $search_condition->conditions(); + $search_conditions = array_merge($search_conditions, $condition_conditions); + } + else { + // Stores each condition, so and/or on the filter level will still work. + $or = db_or(); + foreach ($words as $word) { + $or->condition("$search_index.word", $word); + } + + $search_condition->condition($or); } + $this->query->add_where($this->options['group'], $search_condition); $this->query->add_groupby("$search_index.sid"); $matches = $this->search_query->matches(); $placeholder = $this->placeholder(); $this->query->add_having_expression($this->options['group'], "COUNT(*) >= $placeholder", array($placeholder => $matches)); } + // Set to NULL to prevent PDO exception when views object is cached. + $this->search_query = NULL; } } -class viewsSearchQuery extends searchQuery { +class viewsSearchQuery extends SearchQuery { public function &conditions() { return $this->conditions; } diff --git a/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc b/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc index 90c99eae9..b34a60bb4 100644 --- a/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc +++ b/sites/all/modules/views/modules/search/views_handler_sort_search_score.inc @@ -5,20 +5,21 @@ */ class views_handler_sort_search_score extends views_handler_sort { function query() { - // Check to see if the search filter added 'score' to the table. + // Check to see if the search filter/argument added 'score' to the table. // Our filter stores it as $handler->search_score -- and we also // need to check its relationship to make sure that we're using the same // one or obviously this won't work. - foreach ($this->view->filter as $handler) { - if (isset($handler->search_score) && $handler->relationship == $this->relationship) { - $this->query->add_orderby(NULL, NULL, $this->options['order'], $handler->search_score); - $this->table_alias = $handler->table_alias; - return; + foreach (array('filter', 'argument') as $type) { + foreach ($this->view->{$type} as $handler) { + if (isset($handler->search_score) && $handler->relationship == $this->relationship) { + $this->query->add_orderby(NULL, NULL, $this->options['order'], $handler->search_score); + $this->table_alias = $handler->table_alias; + return; + } } } - // Do absolutely nothing if there is no filter in place; there is no reason to + // Do absolutely nothing if there is no filter/argument in place; there is no reason to // sort on the raw scores with this handler. } } - diff --git a/sites/all/modules/views/modules/statistics.views.inc b/sites/all/modules/views/modules/statistics.views.inc index 78ef793f0..187d9f1b1 100644 --- a/sites/all/modules/views/modules/statistics.views.inc +++ b/sites/all/modules/views/modules/statistics.views.inc @@ -103,6 +103,27 @@ function statistics_views_data() { ), ); + // accesslog.aid + $data['accesslog']['aid'] = array( + 'title' => t('Aid'), + 'help' => t('Unique access event ID.'), + 'field' => array( + 'handler' => 'views_handler_field_numeric', + 'click sortable' => TRUE, + ), + 'argument' => array( + 'handler' => 'views_handler_argument_numeric', + 'name field' => 'wid', + 'numeric' => TRUE, + ), + 'filter' => array( + 'handler' => 'views_handler_filter_numeric', + ), + 'sort' => array( + 'handler' => 'views_handler_sort', + ), + ); + // session id $data['accesslog']['sid'] = array( 'title' => t('Session ID'), diff --git a/sites/all/modules/views/modules/statistics.views_convert.inc b/sites/all/modules/views/modules/statistics.views_convert.inc deleted file mode 100644 index 19257a9fd..000000000 --- a/sites/all/modules/views/modules/statistics.views_convert.inc +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - * - * Intervene to convert field values from the Views 1 format to the - * Views 2 format. Intervene only if $view->add_item() won't produce - * the right results, usually needed to set field options or values. - */ -function statistics_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'field': - switch ($field['tablename']) { - case 'node_counter': - switch ($field['field']) { - case 'timestamp': - $handlers = array( - 'views_handler_field_date_small' => 'small', - 'views_handler_field_date' => 'medium', - 'views_handler_field_date_large' => 'large', - 'views_handler_field_date_custom' => 'custom', - 'views_handler_field_since' => 'time ago', - ); - $view->set_item_option($display, 'field', $id, 'date_format', $handlers[$field['handler']]); - if (!empty($field['options'])) { - $view->set_item_option($display, 'field', $id, 'custom_date_format', $field['options']); - } - break; - } - break; - } - break; - case 'sort': - switch ($field['tablename']) { - case 'node_counter': - switch ($field['field']) { - case 'timestamp': - $field['options'] = $field['options'] == 'normal' ? 'second' : $field['options']; - $view->set_item_option($display, 'sort', $id, 'granularity', $field['options']); - break; - } - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/statistics.views_default.inc b/sites/all/modules/views/modules/statistics.views_default.inc index c6bbd62c3..84a94270d 100644 --- a/sites/all/modules/views/modules/statistics.views_default.inc +++ b/sites/all/modules/views/modules/statistics.views_default.inc @@ -1,304 +1,252 @@ <?php + /** * @file - * Contains default views on behalf of the statistics module. + * Bulk export of views_default objects generated by Bulk export module. */ /** - * Implements hook_views_default_views(). + * Implementation of hook_views_default_views() */ function statistics_views_default_views() { + $views = array(); + $view = new view; $view->name = 'popular'; $view->description = 'Shows the most-viewed nodes on the site. This requires the statistics to be enabled at administer >> reports >> access log settings.'; $view->tag = 'default'; $view->base_table = 'node'; $view->human_name = 'Popular content'; - $view->api_version = 2; - $view->version = 7; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ $handler = $view->new_display('default', 'Master', 'default'); - $handler->override_option('fields', array( + $handler->display->display_options['title'] = 'Popular content'; + $handler->display->display_options['use_more'] = TRUE; + $handler->display->display_options['access']['type'] = 'none'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = '25'; + $handler->display->display_options['style_plugin'] = 'table'; + $handler->display->display_options['style_options']['columns'] = array( + 'type' => 'type', + 'title' => 'title', + 'name' => 'name', + 'timestamp' => 'title', + 'totalcount' => 'totalcount', + ); + $handler->display->display_options['style_options']['default'] = '-1'; + $handler->display->display_options['style_options']['info'] = array( 'type' => array( - 'id' => 'type', - 'table' => 'node', - 'field' => 'type', - 'label' => 'Type', + 'sortable' => 0, + 'separator' => '', ), 'title' => array( - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'label' => 'Title', - 'link_to_node' => TRUE, + 'sortable' => 0, + 'separator' => '', ), 'name' => array( - 'id' => 'name', - 'table' => 'users', - 'field' => 'name', - 'label' => 'Author', - 'link_to_user' => TRUE, + 'sortable' => 0, + 'separator' => '', ), 'timestamp' => array( - 'id' => 'timestamp', - 'table' => 'history', - 'field' => 'timestamp', - 'label' => '', - 'comments' => 1, - 'relationship' => 'none', - 'link_to_node' => 0, - 'comment' => 1, + 'separator' => '', ), - )); - $handler->override_option('sorts', array( 'totalcount' => array( - 'id' => 'totalcount', - 'table' => 'node_counter', - 'field' => 'totalcount', - 'order' => 'DESC', - 'relationship' => 'none', - ), - )); - $handler->override_option('filters', array( - 'status' => array( - 'id' => 'status', - 'table' => 'node', - 'field' => 'status', - 'operator' => '=', - 'value' => '1', - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - ), - 'totalcount' => array( - 'id' => 'totalcount', - 'table' => 'node_counter', - 'field' => 'totalcount', - 'operator' => '>', - 'value' => array( - 'value' => '0', - 'min' => '', - 'max' => '', - ), - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - 'relationship' => 'none', - ), - )); - $handler->override_option('access', array( - 'type' => 'none', - 'role' => array(), - 'perm' => '', - )); - $handler->override_option('title', 'Popular content'); - $handler->override_option('items_per_page', '25'); - $handler->override_option('use_pager', TRUE); - $handler->override_option('use_more', 1); - $handler->override_option('style_plugin', 'table'); - $handler->override_option('style_options', array( - 'override' => 0, - 'order' => 'desc', - 'columns' => array( - 'type' => 'type', - 'title' => 'title', - 'name' => 'name', - 'timestamp' => 'title', - 'totalcount' => 'totalcount', - ), - 'info' => array( - 'type' => array( - 'sortable' => 0, - 'separator' => '', - ), - 'title' => array( - 'sortable' => 0, - 'separator' => '', - ), - 'name' => array( - 'sortable' => 0, - 'separator' => '', - ), - 'timestamp' => array( - 'separator' => '', - ), - 'totalcount' => array( - 'sortable' => 0, - 'separator' => '', - ), - ), - 'default' => '-1', - )); + 'sortable' => 0, + 'separator' => '', + ), + ); + $handler->display->display_options['style_options']['override'] = 0; + $handler->display->display_options['style_options']['order'] = 'desc'; + /* Field: Content: Type */ + $handler->display->display_options['fields']['type']['id'] = 'type'; + $handler->display->display_options['fields']['type']['table'] = 'node'; + $handler->display->display_options['fields']['type']['field'] = 'type'; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + /* Field: User: Name */ + $handler->display->display_options['fields']['name']['id'] = 'name'; + $handler->display->display_options['fields']['name']['table'] = 'users'; + $handler->display->display_options['fields']['name']['field'] = 'name'; + $handler->display->display_options['fields']['name']['label'] = 'Author'; + /* Field: Content: Has new content */ + $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp'; + $handler->display->display_options['fields']['timestamp']['table'] = 'history'; + $handler->display->display_options['fields']['timestamp']['field'] = 'timestamp'; + $handler->display->display_options['fields']['timestamp']['label'] = ''; + $handler->display->display_options['fields']['timestamp']['link_to_node'] = 0; + $handler->display->display_options['fields']['timestamp']['comments'] = 1; + /* Sort criterion: Content statistics: Total views */ + $handler->display->display_options['sorts']['totalcount']['id'] = 'totalcount'; + $handler->display->display_options['sorts']['totalcount']['table'] = 'node_counter'; + $handler->display->display_options['sorts']['totalcount']['field'] = 'totalcount'; + $handler->display->display_options['sorts']['totalcount']['order'] = 'DESC'; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = '1'; + $handler->display->display_options['filters']['status']['group'] = 0; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + /* Filter criterion: Content statistics: Total views */ + $handler->display->display_options['filters']['totalcount']['id'] = 'totalcount'; + $handler->display->display_options['filters']['totalcount']['table'] = 'node_counter'; + $handler->display->display_options['filters']['totalcount']['field'] = 'totalcount'; + $handler->display->display_options['filters']['totalcount']['operator'] = '>'; + $handler->display->display_options['filters']['totalcount']['value']['value'] = '0'; + $handler->display->display_options['filters']['totalcount']['group'] = 0; + $handler->display->display_options['filters']['totalcount']['expose']['operator'] = FALSE; + + /* Display: Popular (page) */ $handler = $view->new_display('page', 'Popular (page)', 'page'); - $handler->override_option('path', 'popular/all'); - $handler->override_option('menu', array( - 'type' => 'default tab', - 'title' => 'Popular content', - 'weight' => '-1', - )); - $handler->override_option('tab_options', array( - 'type' => 'normal', - 'title' => 'Popular content', - 'weight' => '', - )); + $handler->display->display_options['path'] = 'popular/all'; + $handler->display->display_options['menu']['type'] = 'default tab'; + $handler->display->display_options['menu']['title'] = 'Popular content'; + $handler->display->display_options['menu']['weight'] = '-1'; + $handler->display->display_options['tab_options']['type'] = 'normal'; + $handler->display->display_options['tab_options']['title'] = 'Popular content'; + $handler->display->display_options['tab_options']['weight'] = ''; + + /* Display: Today (page) */ $handler = $view->new_display('page', 'Today (page)', 'page_1'); - $handler->override_option('fields', array( - 'type' => array( - 'id' => 'type', - 'table' => 'node', - 'field' => 'type', - 'label' => 'Type', - ), - 'title' => array( - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'label' => 'Title', - 'link_to_node' => TRUE, - ), - 'name' => array( - 'id' => 'name', - 'table' => 'users', - 'field' => 'name', - 'label' => 'Author', - 'link_to_user' => TRUE, - ), - 'timestamp' => array( - 'id' => 'timestamp', - 'table' => 'history', - 'field' => 'timestamp', - 'label' => '', - 'comments' => 1, - 'relationship' => 'none', - 'link_to_node' => 0, - 'comment' => 1, - ), - 'daycount' => array( - 'id' => 'daycount', - 'table' => 'node_counter', - 'field' => 'daycount', - 'label' => 'Views today', - 'set_precision' => FALSE, - 'precision' => 0, - 'decimal' => '.', - 'separator' => ',', - 'prefix' => '', - 'suffix' => '', - 'relationship' => 'none', - ), - )); - $handler->override_option('sorts', array( - 'daycount' => array( - 'id' => 'daycount', - 'table' => 'node_counter', - 'field' => 'daycount', - 'order' => 'DESC', - 'relationship' => 'none', - ), - )); - $handler->override_option('path', 'popular/today'); - $handler->override_option('menu', array( - 'type' => 'tab', - 'title' => 'Today\'s popular content', - 'weight' => '0', - )); - $handler->override_option('tab_options', array( - 'type' => 'normal', - 'title' => 'Popular content', - 'weight' => '0', - )); + $handler->display->display_options['defaults']['fields'] = FALSE; + /* Field: Content: Type */ + $handler->display->display_options['fields']['type']['id'] = 'type'; + $handler->display->display_options['fields']['type']['table'] = 'node'; + $handler->display->display_options['fields']['type']['field'] = 'type'; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + /* Field: User: Name */ + $handler->display->display_options['fields']['name']['id'] = 'name'; + $handler->display->display_options['fields']['name']['table'] = 'users'; + $handler->display->display_options['fields']['name']['field'] = 'name'; + $handler->display->display_options['fields']['name']['label'] = 'Author'; + /* Field: Content: Has new content */ + $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp'; + $handler->display->display_options['fields']['timestamp']['table'] = 'history'; + $handler->display->display_options['fields']['timestamp']['field'] = 'timestamp'; + $handler->display->display_options['fields']['timestamp']['label'] = ''; + $handler->display->display_options['fields']['timestamp']['link_to_node'] = 0; + $handler->display->display_options['fields']['timestamp']['comments'] = 1; + /* Field: Content statistics: Views today */ + $handler->display->display_options['fields']['daycount']['id'] = 'daycount'; + $handler->display->display_options['fields']['daycount']['table'] = 'node_counter'; + $handler->display->display_options['fields']['daycount']['field'] = 'daycount'; + $handler->display->display_options['defaults']['sorts'] = FALSE; + /* Sort criterion: Content statistics: Views today */ + $handler->display->display_options['sorts']['daycount']['id'] = 'daycount'; + $handler->display->display_options['sorts']['daycount']['table'] = 'node_counter'; + $handler->display->display_options['sorts']['daycount']['field'] = 'daycount'; + $handler->display->display_options['sorts']['daycount']['order'] = 'DESC'; + $handler->display->display_options['path'] = 'popular/today'; + $handler->display->display_options['menu']['type'] = 'tab'; + $handler->display->display_options['menu']['title'] = 'Today\'s popular content'; + $handler->display->display_options['menu']['weight'] = '0'; + $handler->display->display_options['tab_options']['type'] = 'normal'; + $handler->display->display_options['tab_options']['title'] = 'Popular content'; + $handler->display->display_options['tab_options']['weight'] = '0'; + + /* Display: Popular (block) */ $handler = $view->new_display('block', 'Popular (block)', 'block'); - $handler->override_option('fields', array( - 'title' => array( - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'label' => '', - 'link_to_node' => 1, - 'relationship' => 'none', - ), - 'totalcount' => array( - 'id' => 'totalcount', - 'table' => 'node_counter', - 'field' => 'totalcount', - 'label' => '', - 'set_precision' => FALSE, - 'precision' => 0, - 'decimal' => '.', - 'separator' => ',', - 'prefix' => ' (', - 'suffix' => ')', - 'relationship' => 'none', - ), - )); - $handler->override_option('items_per_page', 5); - $handler->override_option('style_plugin', 'list'); - $handler->override_option('style_options', array( - 'type' => 'ul', - )); - $handler->override_option('row_options', array( - 'inline' => array( - 'title' => 'title', - 'totalcount' => 'totalcount', - ), - 'separator' => '', - )); - $handler->override_option('block_description', 'Popular content'); + $handler->display->display_options['defaults']['style_plugin'] = FALSE; + $handler->display->display_options['style_plugin'] = 'list'; + $handler->display->display_options['defaults']['style_options'] = FALSE; + $handler->display->display_options['defaults']['row_plugin'] = FALSE; + $handler->display->display_options['row_plugin'] = 'fields'; + $handler->display->display_options['row_options']['inline'] = array( + 'title' => 'title', + 'totalcount' => 'totalcount', + ); + $handler->display->display_options['defaults']['row_options'] = FALSE; + $handler->display->display_options['defaults']['fields'] = FALSE; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + $handler->display->display_options['fields']['title']['label'] = ''; + $handler->display->display_options['fields']['title']['link_to_node'] = 1; + /* Field: Content statistics: Total views */ + $handler->display->display_options['fields']['totalcount']['id'] = 'totalcount'; + $handler->display->display_options['fields']['totalcount']['table'] = 'node_counter'; + $handler->display->display_options['fields']['totalcount']['field'] = 'totalcount'; + $handler->display->display_options['fields']['totalcount']['label'] = ''; + $handler->display->display_options['fields']['totalcount']['prefix'] = ' ('; + $handler->display->display_options['fields']['totalcount']['suffix'] = ')'; + + /* Display: Today (block) */ $handler = $view->new_display('block', 'Today (block)', 'block_1'); - $handler->override_option('fields', array( - 'title' => array( - 'id' => 'title', - 'table' => 'node', - 'field' => 'title', - 'label' => '', - 'link_to_node' => 1, - 'relationship' => 'none', - ), - 'daycount' => array( - 'id' => 'daycount', - 'table' => 'node_counter', - 'field' => 'daycount', - 'label' => '', - 'set_precision' => FALSE, - 'precision' => 0, - 'decimal' => '.', - 'separator' => ',', - 'prefix' => ' (', - 'suffix' => ')', - 'relationship' => 'none', - ), - )); - $handler->override_option('sorts', array( - 'daycount' => array( - 'id' => 'daycount', - 'table' => 'node_counter', - 'field' => 'daycount', - 'order' => 'DESC', - 'relationship' => 'none', - ), - )); - $handler->override_option('title', 'Today\'s popular content'); - $handler->override_option('items_per_page', 5); - $handler->override_option('link_display', 'page_1'); - $handler->override_option('style_plugin', 'list'); - $handler->override_option('style_options', array( - 'type' => 'ul', - )); - $handler->override_option('row_options', array( - 'inline' => array( - 'title' => 'title', - 'daycount' => 'daycount', - ), - 'separator' => '', - )); - $handler->override_option('block_description', 'Today\'s popular content'); - $views[$view->name] = $view; + $handler->display->display_options['defaults']['title'] = FALSE; + $handler->display->display_options['title'] = 'Today\'s popular content'; + $handler->display->display_options['defaults']['link_display'] = FALSE; + $handler->display->display_options['link_display'] = 'page_1'; + $handler->display->display_options['defaults']['style_plugin'] = FALSE; + $handler->display->display_options['style_plugin'] = 'list'; + $handler->display->display_options['defaults']['style_options'] = FALSE; + $handler->display->display_options['defaults']['row_plugin'] = FALSE; + $handler->display->display_options['row_plugin'] = 'fields'; + $handler->display->display_options['row_options']['inline'] = array( + 'title' => 'title', + 'daycount' => 'daycount', + ); + $handler->display->display_options['defaults']['row_options'] = FALSE; + $handler->display->display_options['defaults']['fields'] = FALSE; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + $handler->display->display_options['fields']['title']['label'] = ''; + $handler->display->display_options['fields']['title']['link_to_node'] = 1; + /* Field: Content statistics: Views today */ + $handler->display->display_options['fields']['daycount']['id'] = 'daycount'; + $handler->display->display_options['fields']['daycount']['table'] = 'node_counter'; + $handler->display->display_options['fields']['daycount']['field'] = 'daycount'; + $handler->display->display_options['fields']['daycount']['label'] = ''; + $handler->display->display_options['fields']['daycount']['prefix'] = ' ('; + $handler->display->display_options['fields']['daycount']['suffix'] = ')'; + $handler->display->display_options['defaults']['sorts'] = FALSE; + /* Sort criterion: Content statistics: Views today */ + $handler->display->display_options['sorts']['daycount']['id'] = 'daycount'; + $handler->display->display_options['sorts']['daycount']['table'] = 'node_counter'; + $handler->display->display_options['sorts']['daycount']['field'] = 'daycount'; + $handler->display->display_options['sorts']['daycount']['order'] = 'DESC'; + $translatables['popular'] = array( + t('Master'), + t('Popular content'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('Type'), + t('Title'), + t('Author'), + t('Popular (page)'), + t('Today (page)'), + t('Views today'), + t('.'), + t(','), + t('Popular (block)'), + t(' ('), + t(')'), + t('Today (block)'), + t('Today\'s popular content'), + ); + + $views['popular'] = $view; return $views; } diff --git a/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc b/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc index 03fa7d204..674eb34cb 100644 --- a/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc +++ b/sites/all/modules/views/modules/statistics/views_handler_field_accesslog_path.inc @@ -6,7 +6,7 @@ class views_handler_field_accesslog_path extends views_handler_field { /** * Override init function to provide generic option to link to node. */ - function init(&$view, $options) { + function init(&$view, &$options) { parent::init($view, $options); if (!empty($this->options['display_as_link'])) { $this->additional_fields['path'] = 'path'; diff --git a/sites/all/modules/views/modules/system.views.inc b/sites/all/modules/views/modules/system.views.inc index 6e2c72a0f..d7975cdc0 100644 --- a/sites/all/modules/views/modules/system.views.inc +++ b/sites/all/modules/views/modules/system.views.inc @@ -33,20 +33,13 @@ function system_views_data() { 'field' => 'filename' ), ); + $data['file_managed']['table']['entity type'] = 'file'; + // The file table does not inherently join to the node table, // but may things (such as upload.module) can add relationships // that allow file fields to be used. - // For other base tables, explain how we join - $data['file_managed']['table']['join'] = array( - 'users' => array( - // direct join to the users table via 'uid' field. - 'left_field' => 'uid', - 'field' => 'uid', - ), - ); - // fid $data['file_managed']['fid'] = array( 'title' => t('File ID'), @@ -58,6 +51,7 @@ function system_views_data() { 'argument' => array( 'handler' => 'views_handler_argument_file_fid', 'name field' => 'filename', // the field to display in the summary. + 'numeric' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric', @@ -125,7 +119,7 @@ function system_views_data() { ); // extension - $data['files']['extension'] = array( + $data['file_managed']['extension'] = array( 'title' => t('Extension'), 'help' => t('The extension of the file.'), 'real field' => 'filename', @@ -183,6 +177,18 @@ function system_views_data() { ), ); + // uid + $data['file_managed']['uid'] = array( + 'title' => t('User who uploaded'), + 'help' => t('The user that uploaded the file.'), + 'relationship' => array( + 'title' => t('User who uploaded'), + 'label' => t('User who uploaded'), + 'base' => 'users', + 'base field' => 'uid', + ), + ); + // ---------------------------------------------------------------------- // file_usage table @@ -564,19 +570,6 @@ function _views_file_status($choice = NULL) { return $status; } - // uid field - $data['files']['uid'] = array( - 'title' => t('User'), - 'help' => t('The user, who uploaded the file.'), - 'relationship' => array( - 'base' => 'users', - 'base field' => 'uid', - 'handler' => 'views_handler_relationship', - 'label' => t('User'), - ), - ); - - /** * @} */ diff --git a/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc b/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc index d51e5fb8c..f24f0920c 100644 --- a/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc +++ b/sites/all/modules/views/modules/system/views_handler_argument_file_fid.inc @@ -1,21 +1,20 @@ <?php /** - * Argument handler to accept a file id. + * Argument handler to accept multiple file ids. */ -class views_handler_argument_file_fid extends views_handler_argument { +class views_handler_argument_file_fid extends views_handler_argument_numeric { /** - * Override the behavior of title(). Get the title of the file. + * Override the behavior of title_query(). Get the filenames. */ - function title() { - $title = db_select('files', 'f') - ->addField('f', 'filename') - ->condition('fid', $this->argument) + function title_query() { + $titles = db_select('file_managed', 'f') + ->fields('f', array('filename')) + ->condition('fid', $this->value) ->execute() - ->fetchField(); - if (empty($title)) { - return t('No title'); + ->fetchCol(); + foreach ($titles as &$title) { + $title = check_plain($title); } - - return check_plain($title); + return $titles; } } diff --git a/sites/all/modules/views/modules/system/views_handler_field_file.inc b/sites/all/modules/views/modules/system/views_handler_field_file.inc index 6d1660e26..aeef6ad9a 100644 --- a/sites/all/modules/views/modules/system/views_handler_field_file.inc +++ b/sites/all/modules/views/modules/system/views_handler_field_file.inc @@ -50,4 +50,4 @@ class views_handler_field_file extends views_handler_field { $value = $this->get_value($values); return $this->render_link($this->sanitize_value($value), $values); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc b/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc index 9a06639a7..74dba9ef2 100644 --- a/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc +++ b/sites/all/modules/views/modules/system/views_handler_field_file_filemime.inc @@ -12,7 +12,7 @@ class views_handler_field_file_filemime extends views_handler_field_file { function options_form(&$form, &$form_state) { $form['filemime_image'] = array( - '#title' => t('Display an icon representing the file type, instead of the MIME text (such as "image/jpeg").'), + '#title' => t('Display an icon representing the file type, instead of the MIME text (such as "image/jpeg")'), '#type' => 'checkbox', '#default_value' => !empty($this->options['filemime_image']), ); @@ -28,4 +28,4 @@ class views_handler_field_file_filemime extends views_handler_field_file { return $this->render_link($data, $values); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc b/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc index 16dce1be0..e24531a51 100644 --- a/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc +++ b/sites/all/modules/views/modules/system/views_handler_filter_file_status.inc @@ -9,4 +9,3 @@ class views_handler_filter_file_status extends views_handler_filter_in_operator } } } - diff --git a/sites/all/modules/views/modules/taxonomy.views.inc b/sites/all/modules/views/modules/taxonomy.views.inc index ec2c92932..5dcbc18e8 100644 --- a/sites/all/modules/views/modules/taxonomy.views.inc +++ b/sites/all/modules/views/modules/taxonomy.views.inc @@ -21,7 +21,7 @@ function taxonomy_views_data() { // taxonomy_vocabulary table $data['vocabulary']['moved to'] = 'taxonomy_vocabulary'; - $data['taxonomy_vocabulary']['table']['group'] = t('Taxonomy'); + $data['taxonomy_vocabulary']['table']['group'] = t('Taxonomy vocabulary'); $data['taxonomy_vocabulary']['table']['join'] = array( // vocabulary links to taxonomy_term_data directly via vid. @@ -29,17 +29,19 @@ function taxonomy_views_data() { 'left_field' => 'vid', 'field' => 'vid', ), - // vocabulary links to node through taxonomy_term_data via vid + ); + + // Provide a "default relationship" to keep older views from choking. + $data['taxonomy_vocabulary']['table']['default_relationship'] = array( 'node' => array( - 'left_table' => 'taxonomy_term_data', - 'left_field' => 'vid', - 'field' => 'vid', + 'table' => 'node', + 'field' => 'term_node_tid', ), ); // vocabulary name $data['taxonomy_vocabulary']['name'] = array( - 'title' => t('Vocabulary name'), // The item it appears as on the UI, + 'title' => t('Name'), // The item it appears as on the UI, 'field' => array( 'help' => t('Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the "Taxonomy: Term" field is; and can similarly cause duplicates.'), 'handler' => 'views_handler_field', @@ -51,7 +53,7 @@ function taxonomy_views_data() { ), ); $data['taxonomy_vocabulary']['machine_name'] = array( - 'title' => t('Vocabulary machine name'), // The item it appears as on the UI, + 'title' => t('Machine name'), // The item it appears as on the UI, 'field' => array( 'help' => t('Machine-Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the "Taxonomy: Term" field is; and can similarly cause duplicates.'), 'handler' => 'views_handler_field', @@ -61,10 +63,18 @@ function taxonomy_views_data() { 'help' => t('Filter the results of "Taxonomy: Term" to a particular vocabulary.'), 'handler' => 'views_handler_filter_vocabulary_machine_name', ), + 'argument' => array( + 'help' => t('Filter the results of "Taxonomy: Term" to a particular vocabulary.'), + 'handler' => 'views_handler_argument_vocabulary_machine_name', + ), ); $data['taxonomy_vocabulary']['vid'] = array( 'title' => t('Vocabulary ID'), // The item it appears as on the UI, 'help' => t('The taxonomy vocabulary ID'), + 'field' => array( + 'handler' => 'views_handler_field_numeric', + 'click sortable' => TRUE, + ), 'argument' => array( 'handler' => 'views_handler_argument_vocabulary_vid', 'name field' => 'name', @@ -73,27 +83,31 @@ function taxonomy_views_data() { 'handler' => 'views_handler_sort', ), ); + $data['taxonomy_vocabulary']['description'] = array( + 'title' => t('Description'), // The item it appears as on the UI, + 'help' => t('The taxonomy vocabulary description'), + 'field' => array( + 'handler' => 'views_handler_field', + ), + ); // ---------------------------------------------------------------------- // taxonomy_term_data table $data['term_data']['moved to'] = 'taxonomy_term_data'; - $data['taxonomy_term_data']['table']['group'] = t('Taxonomy'); + $data['taxonomy_term_data']['table']['group'] = t('Taxonomy term'); $data['taxonomy_term_data']['table']['base'] = array( 'field' => 'tid', 'title' => t('Term'), 'help' => t('Taxonomy terms are attached to nodes.'), 'access query tag' => 'term_access', ); + $data['taxonomy_term_data']['table']['entity type'] = 'taxonomy_term'; + // The term data table $data['taxonomy_term_data']['table']['join'] = array( - 'node' => array( - 'left_table' => 'taxonomy_index', - 'left_field' => 'tid', - 'field' => 'tid', - ), 'taxonomy_vocabulary' => array( 'field' => 'vid', 'left_field' => 'vid', @@ -105,10 +119,18 @@ function taxonomy_views_data() { ), ); + // Provide a "default relationship" to keep older views from choking. + $data['taxonomy_term_data']['table']['default_relationship'] = array( + 'node' => array( + 'table' => 'node', + 'field' => 'term_node_tid', + ), + ); + // tid field $data['taxonomy_term_data']['tid'] = array( 'title' => t('Term ID'), - 'help' => t('The taxonomy term ID'), + 'help' => t('The tid of a taxonomy term.'), 'field' => array( 'handler' => 'views_handler_field_numeric', 'click sortable' => TRUE, @@ -117,23 +139,38 @@ function taxonomy_views_data() { 'handler' => 'views_handler_sort', ), 'argument' => array( - 'handler' => 'views_handler_argument_numeric', + 'handler' => 'views_handler_argument_taxonomy', 'name field' => 'name', - 'skip base' => array('node'), 'zero is null' => TRUE, ), 'filter' => array( + 'title' => t('Term'), + 'help' => t('Taxonomy term chosen from autocomplete or select widget.'), 'handler' => 'views_handler_filter_term_node_tid', 'hierarchy table' => 'taxonomy_term_hierarchy', 'numeric' => TRUE, - 'skip base' => array('node'), + ), + ); + + $data['taxonomy_term_data']['tid_representative'] = array( + 'relationship' => array( + 'title' => t('Representative node'), + 'label' => t('Representative node'), + 'help' => t('Obtains a single representative node for each term, according to a chosen sort criterion.'), + 'handler' => 'views_handler_relationship_groupwise_max', + 'relationship field' => 'tid', + 'outer field' => 'taxonomy_term_data.tid', + 'argument table' => 'taxonomy_term_data', + 'argument field' => 'tid', + 'base' => 'node', + 'field' => 'nid', ), ); // Term name field $data['taxonomy_term_data']['name'] = array( - 'title' => t('Term'), - 'help' => t('Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the result set.'), + 'title' => t('Name'), + 'help' => t('The taxonomy term name.'), 'field' => array( 'handler' => 'views_handler_field_taxonomy', 'click sortable' => TRUE, @@ -158,24 +195,22 @@ function taxonomy_views_data() { 'title' => t('Weight'), 'help' => t('The term weight field'), 'field' => array( - 'handler' => 'views_handler_field', + 'handler' => 'views_handler_field_numeric', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'views_handler_sort', ), 'filter' => array( - 'handler' => 'views_handler_filter_string', + 'handler' => 'views_handler_filter_numeric', ), ); // Term description $data['taxonomy_term_data']['description'] = array( - 'title' => t('Term description'), // The item it appears as on the UI, + 'title' => t('Term description'), 'help' => t('The description associated with a taxonomy term.'), 'field' => array( - 'field' => 'description', // the real field - 'group' => t('Taxonomy'), // The group it appears in on the UI, 'handler' => 'views_handler_field_markup', 'format' => array('field' => 'format'), ), @@ -203,7 +238,7 @@ function taxonomy_views_data() { // taxonomy_index table $data['term_node']['moved to'] = 'taxonomy_index'; - $data['taxonomy_index']['table']['group'] = t('Taxonomy'); + $data['taxonomy_index']['table']['group'] = t('Taxonomy term'); $data['taxonomy_index']['table']['join'] = array( 'taxonomy_term_data' => array( @@ -212,7 +247,7 @@ function taxonomy_views_data() { 'field' => 'tid', ), 'node' => array( - // links directly to node via vid + // links directly to node via nid 'left_field' => 'nid', 'field' => 'nid', ), @@ -223,27 +258,24 @@ function taxonomy_views_data() { ); $data['taxonomy_index']['nid'] = array( - 'title' => t('Content'), - 'help' => t('Get all content tagged with a term.'), + 'title' => t('Content with term'), + 'help' => t('Relate all content tagged with a term.'), 'relationship' => array( 'handler' => 'views_handler_relationship', 'base' => 'node', 'base field' => 'nid', 'label' => t('node'), + 'skip base' => 'node', ), ); + // @todo This stuff needs to move to a node field since + // really it's all about nodes. // tid field $data['taxonomy_index']['tid'] = array( - 'title' => t('Term ID'), - 'help' => t('The taxonomy term ID'), - 'field' => array( - 'title' => t('All terms'), - 'help' => t('Display all taxonomy terms associated with a node from specified vocabularies.'), - 'handler' => 'views_handler_field_term_node_tid', - 'skip base' => 'taxonomy_term_data', - 'no group by' => TRUE, - ), + 'group' => t('Content'), + 'title' => t('Has taxonomy term ID'), + 'help' => t('Display content if it has the selected taxonomy terms.'), 'argument' => array( 'handler' => 'views_handler_argument_term_node_tid', 'name table' => 'taxonomy_term_data', @@ -253,7 +285,7 @@ function taxonomy_views_data() { 'skip base' => 'taxonomy_term_data', ), 'filter' => array( - 'title' => t('Term'), + 'title' => t('Has taxonomy term'), 'handler' => 'views_handler_filter_term_node_tid', 'hierarchy table' => 'taxonomy_term_hierarchy', 'numeric' => TRUE, @@ -265,7 +297,7 @@ function taxonomy_views_data() { // ---------------------------------------------------------------------- // term_hierarchy table - $data['taxonomy_term_hierarchy']['table']['group'] = t('Taxonomy'); + $data['taxonomy_term_hierarchy']['table']['group'] = t('Taxonomy term'); $data['term_hierarchy']['moved to'] = 'taxonomy_term_hierarchy'; $data['taxonomy_term_hierarchy']['table']['join'] = array( @@ -279,11 +311,13 @@ function taxonomy_views_data() { 'left_field' => 'tid', 'field' => 'tid', ), + ); + + // Provide a "default relationship" to keep older views from choking. + $data['taxonomy_term_hierarchy']['table']['default_relationship'] = array( 'node' => array( - // links to node thorugh taxonomy_term_data - 'left_table' => 'taxonomy_term_data', - 'left_field' => 'tid', - 'field' => 'tid', + 'table' => 'node', + 'field' => 'term_node_tid', ), ); @@ -297,38 +331,10 @@ function taxonomy_views_data() { ), 'argument' => array( 'help' => t('The parent term of the term.'), - 'handler' => 'views_handler_argument_numeric', + 'handler' => 'views_handler_argument_taxonomy', ), ); - // ---------------------------------------------------------------------- - // taxonomy_term_synonym table - - $data['term_synonym']['moved to'] = 'taxonomy_term_synonym'; - $data['taxonomy_term_synonym']['table']['group'] = t('Taxonomy'); - - $data['taxonomy_term_synonym']['table']['join'] = array( - 'taxonomy_term_data' => array( - // links directly to taxonomy_term_data via tid - 'left_field' => 'tid', - 'field' => 'tid', - ), - 'node' => array( - 'left_table' => 'taxonomy_index', - 'left_field' => 'tid', - 'field' => 'tid', - ), - ); - - $data['taxonomy_term_synonym']['name'] = array( - 'title' => t('Term synonym'), - 'help' => t('Term synonyms may be used to find terms by alternate names.'), - 'argument' => array( - 'handler' => 'views_handler_argument_string', - 'many to one' => TRUE, - 'empty field name' => t('Uncategorized'), - ), - ); return $data; } @@ -337,33 +343,37 @@ function taxonomy_views_data() { */ function taxonomy_views_data_alter(&$data) { $data['node']['term_node_tid'] = array( - 'group' => t('Taxonomy'), - 'title' => t('Terms on node'), + 'title' => t('Taxonomy terms on node'), 'help' => t('Relate nodes to taxonomy terms, specifiying which vocabulary or vocabularies to use. This relationship will cause duplicated records if there are multiple terms.'), 'relationship' => array( 'handler' => 'views_handler_relationship_node_term_data', 'label' => t('term'), 'base' => 'taxonomy_term_data', ), + 'field' => array( + 'title' => t('All taxonomy terms'), + 'help' => t('Display all taxonomy terms associated with a node from specified vocabularies.'), + 'handler' => 'views_handler_field_term_node_tid', + 'no group by' => TRUE, + ), ); $data['node']['term_node_tid_depth'] = array( - 'group' => t('Taxonomy'), - 'title' => t('Term ID (with depth)'), - 'help' => t('The depth filter is more complex, so provides fewer options.'), + 'help' => t('Display content if it has the selected taxonomy terms, or children of the selected terms. Due to additional complexity, this has fewer options than the versions without depth.'), 'real field' => 'nid', 'argument' => array( + 'title' => t('Has taxonomy term ID (with depth)'), 'handler' => 'views_handler_argument_term_node_tid_depth', 'accept depth modifier' => TRUE, ), 'filter' => array( + 'title' => t('Has taxonomy terms (with depth)'), 'handler' => 'views_handler_filter_term_node_tid_depth', ), ); $data['node']['term_node_tid_depth_modifier'] = array( - 'group' => t('Taxonomy'), - 'title' => t('Term ID depth modifier'), + 'title' => t('Has taxonomy term ID depth modifier'), 'help' => t('Allows the "depth" for Taxonomy: Term ID (with depth) to be modified via an additional contextual filter value.'), 'argument' => array( 'handler' => 'views_handler_argument_term_node_tid_depth_modifier', @@ -383,19 +393,66 @@ function taxonomy_field_views_data($field) { $data = field_views_field_default_views_data($field); foreach ($data as $table_name => $table_data) { foreach ($table_data as $field_name => $field_data) { - if (!in_array($field_name, array('table', 'entity_id', 'revision_id'))) { - $data[$table_name][$field_name]['relationship'] = array( - 'handler' => 'views_handler_relationship', - 'base' => 'taxonomy_term_data', - 'base field' => 'tid', - 'label' => t('term from !field_name', array('!field_name' => $field['field_name'])), - ); + if (isset($field_data['filter']) && $field_name != 'delta') { + $data[$table_name][$field_name]['filter']['handler'] = 'views_handler_filter_term_node_tid'; + $data[$table_name][$field_name]['filter']['vocabulary'] = $field['settings']['allowed_values'][0]['vocabulary']; } } + + // Add the relationship only on the tid field. + $data[$table_name][$field['field_name'] . '_tid']['relationship'] = array( + 'handler' => 'views_handler_relationship', + 'base' => 'taxonomy_term_data', + 'base field' => 'tid', + 'label' => t('term from !field_name', array('!field_name' => $field['field_name'])), + ); + } + return $data; } +/** + * Implements hook_field_views_data_views_data_alter(). + * + * Views integration to provide reverse relationships on term references. + */ +function taxonomy_field_views_data_views_data_alter(&$data, $field) { + foreach ($field['bundles'] as $entity_type => $bundles) { + $entity_info = entity_get_info($entity_type); + $pseudo_field_name = 'reverse_' . $field['field_name'] . '_' . $entity_type; + + list($label, $all_labels) = field_views_field_label($field['field_name']); + $entity = $entity_info['label']; + if ($entity == t('Node')) { + $entity = t('Content'); + } + + $data['taxonomy_term_data'][$pseudo_field_name]['relationship'] = array( + 'title' => t('@entity using @field', array('@entity' => $entity, '@field' => $label)), + 'help' => t('Relate each @entity with a @field set to the term.', array('@entity' => $entity, '@field' => $label)), + 'handler' => 'views_handler_relationship_entity_reverse', + 'field_name' => $field['field_name'], + 'field table' => _field_sql_storage_tablename($field), + 'field field' => $field['field_name'] . '_tid', + 'base' => $entity_info['base table'], + 'base field' => $entity_info['entity keys']['id'], + 'label' => t('!field_name', array('!field_name' => $field['field_name'])), + 'join_extra' => array( + 0 => array( + 'field' => 'entity_type', + 'value' => $entity_type, + ), + 1 => array( + 'field' => 'deleted', + 'value' => 0, + 'numeric' => TRUE, + ), + ), + ); + } +} + /** * Implements hook_views_plugins */ @@ -411,7 +468,7 @@ function taxonomy_views_plugins() { ), 'argument default' => array( 'taxonomy_tid' => array( - 'title' => t('Taxonomy Term ID from URL'), + 'title' => t('Taxonomy term ID from URL'), 'handler' => 'views_plugin_argument_default_taxonomy_tid', 'path' => drupal_get_path('module', 'views') . '/modules/taxonomy', 'parent' => 'fixed', @@ -435,7 +492,7 @@ function views_taxonomy_set_breadcrumb(&$breadcrumb, &$argument) { if ($parent->tid == $argument->argument) { continue; } - if ($argument->options['use_taxonomy_term_path']) { + if (!empty($argument->options['use_taxonomy_term_path'])) { $path = taxonomy_term_uri($parent); } else { diff --git a/sites/all/modules/views/modules/taxonomy.views_convert.inc b/sites/all/modules/views/modules/taxonomy.views_convert.inc deleted file mode 100644 index 50c9b952a..000000000 --- a/sites/all/modules/views/modules/taxonomy.views_convert.inc +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - * - * Intervene to convert field values from the Views 1 format to the - * Views 2 format. Intervene only if $view->add_item() won't produce - * the right results, usually needed to set field options or values. - */ -function taxonomy_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'field': - if ($field['tablename'] == 'term_node' || !strncmp($field['tablename'], 'term_node_', 10)) { - switch ($field['field']) { - case 'name': - $item = $view->get_item($display, 'field', $id); - if ($field['options'] != 'nolink') { - $item['link_to_taxonomy'] = TRUE; - } - if (!empty($field['vocabulary'])) { - $item['limit'] = TRUE; - $item['vids'] = array($field['vocabulary']); - } - $view->set_item($display, 'field', $id, $item); - break; - } - } - elseif ($field['tablename'] == 'term_data') { - switch ($field['field']) { - case 'name': - if ($field['field'] == 'views_handler_field_tid_link') { - $view->set_item_option($display, 'field', $id, 'link_to_taxonomy', TRUE); - } - break; - } - } - break; - case 'filter': - if ($field['tablename'] == 'term_node' || !strncmp($field['tablename'], 'term_node_', 10)) { - switch ($field['field']) { - case 'tid': - $operators = array('AND' => 'and', 'OR' => 'or', 'NOR' => 'not'); - $item = $view->get_item($display, 'filter', $id); - if ($vid = (integer) substr($field['tablename'], 10)) { - $item['table'] = 'term_node'; - $item['vid'] = $vid; - } - else { - $item['limit'] = FALSE; - } - $item['operator'] = $operators[$field['operator']]; - $item['type'] = 'select'; - $view->set_item($display, 'filter', $id, $item); - break; - } - } - elseif ($field['tablename'] == 'term_data') { - switch ($field['field']) { - case 'vid': - $operators = array('AND' => 'IN', 'OR' => 'IN', 'NOR' => 'NOT IN'); - $view->set_item_option($display, 'filter', $id, 'operator', $operators[$field['operator']]); - break; - } - } - break; - case 'argument': - $options = $field['argoptions']; - switch ($field['type']) { - case 'taxid': - if (!empty($field['options'])) { - $options['depth'] = $field['options']; - } - $options['break_phrase'] = TRUE; - $view->add_item($display, 'argument', 'node', 'term_node_tid_depth', $options, $field['id']); - break; - case 'taxletter': - if (!empty($field['options'])) { - $options['glossary'] = TRUE; - $options['limit'] = $field['options']; - } - $view->add_item($display, 'argument', 'term_data', 'name', $options, $field['id']); - break; - case 'vocid': - $view->add_item($display, 'argument', 'vocabulary', 'vid', $options, $field['id']); - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/taxonomy.views_default.inc b/sites/all/modules/views/modules/taxonomy.views_default.inc index d03a1d386..db53fc243 100644 --- a/sites/all/modules/views/modules/taxonomy.views_default.inc +++ b/sites/all/modules/views/modules/taxonomy.views_default.inc @@ -1,184 +1,108 @@ <?php + /** * @file - * Contains default views on behalf of the statistics module. + * Bulk export of views_default objects generated by Bulk export module. */ /** - * Implements hook_views_default_views(). + * Implementation of hook_views_default_views() */ function taxonomy_views_default_views() { + $views = array(); + $view = new view; $view->name = 'taxonomy_term'; - $view->description = 'A view to emulate Drupal core\'s handling of taxonomy/term; it also emulates Views 1\'s handling by having two possible feeds.'; + $view->description = 'A view to emulate Drupal core\'s handling of taxonomy/term.'; $view->tag = 'default'; $view->base_table = 'node'; $view->human_name = 'Taxonomy term'; - $view->api_version = 2; - $view->version = 7; + $view->core = 7; + $view->api_version = '3.0'; $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ $handler = $view->new_display('default', 'Master', 'default'); - $handler->override_option('sorts', array( - 'sticky' => array( - 'id' => 'sticky', - 'table' => 'node', - 'field' => 'sticky', - 'order' => 'DESC', - 'relationship' => 'none', - ), - 'created' => array( - 'id' => 'created', - 'table' => 'node', - 'field' => 'created', - 'order' => 'DESC', - 'granularity' => 'second', - 'relationship' => 'none', - ), - )); - $handler->override_option('arguments', array( - 'term_node_tid_depth' => array( - 'id' => 'term_node_tid_depth', - 'table' => 'node', - 'field' => 'term_node_tid_depth', - 'default_action' => 'not found', - 'style_plugin' => 'default_summary', - 'style_options' => array( - 'count' => TRUE, - 'override' => FALSE, - 'items_per_page' => 25, - ), - 'wildcard' => 'all', - 'wildcard_substitution' => 'All', - 'title' => '%1', - 'default_argument_type' => 'fixed', - 'default_argument' => '', - 'validate_type' => 'taxonomy_term', - 'validate_fail' => 'not found', - 'depth' => '0', - 'break_phrase' => 1, - 'relationship' => 'none', - 'default_argument_fixed' => '', - 'default_argument_php' => '', - 'validate_argument_node_type' => array( - 'album' => 0, - 'artist' => 0, - 'book' => 0, - 'page' => 0, - 'story' => 0, - 'track' => 0, - ), - 'validate_argument_vocabulary' => array( - '3' => 0, - '4' => 0, - '1' => 0, - '5' => 0, - '2' => 0, - ), - 'validate_argument_type' => 'tids', - 'validate_argument_php' => '', - ), - 'term_node_tid_depth_modifier' => array( - 'id' => 'term_node_tid_depth_modifier', - 'table' => 'node', - 'field' => 'term_node_tid_depth_modifier', - 'default_action' => 'ignore', - 'style_plugin' => 'default_summary', - 'style_options' => array( - 'count' => TRUE, - 'override' => FALSE, - 'items_per_page' => 25, - ), - 'wildcard' => 'all', - 'wildcard_substitution' => 'All', - 'title' => '', - 'default_argument_type' => 'fixed', - 'default_argument' => '', - 'validate_type' => 'none', - 'validate_fail' => 'not found', - ), - )); - $handler->override_option('filters', array( - 'status_extra' => array( - 'id' => 'status_extra', - 'table' => 'node', - 'field' => 'status_extra', - 'operator' => '=', - 'value' => '', - 'group' => 0, - 'exposed' => FALSE, - 'expose' => array( - 'operator' => FALSE, - 'label' => '', - ), - 'relationship' => 'none', - ), - )); - $handler->override_option('access', array( - 'type' => 'none', - 'role' => array(), - 'perm' => '', - )); - $handler->override_option('use_pager', '1'); - $handler->override_option('row_plugin', 'node'); - $handler->override_option('row_options', array( - 'teaser' => TRUE, - 'links' => TRUE, - )); + $handler->display->display_options['access']['type'] = 'none'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['style_plugin'] = 'default'; + $handler->display->display_options['row_plugin'] = 'node'; + /* Sort criterion: Content: Sticky */ + $handler->display->display_options['sorts']['sticky']['id'] = 'sticky'; + $handler->display->display_options['sorts']['sticky']['table'] = 'node'; + $handler->display->display_options['sorts']['sticky']['field'] = 'sticky'; + $handler->display->display_options['sorts']['sticky']['order'] = 'DESC'; + /* Sort criterion: Content: Post date */ + $handler->display->display_options['sorts']['created']['id'] = 'created'; + $handler->display->display_options['sorts']['created']['table'] = 'node'; + $handler->display->display_options['sorts']['created']['field'] = 'created'; + $handler->display->display_options['sorts']['created']['order'] = 'DESC'; + /* Contextual filter: Content: Has taxonomy term ID (with depth) */ + $handler->display->display_options['arguments']['term_node_tid_depth']['id'] = 'term_node_tid_depth'; + $handler->display->display_options['arguments']['term_node_tid_depth']['table'] = 'node'; + $handler->display->display_options['arguments']['term_node_tid_depth']['field'] = 'term_node_tid_depth'; + $handler->display->display_options['arguments']['term_node_tid_depth']['default_action'] = 'not found'; + $handler->display->display_options['arguments']['term_node_tid_depth']['exception']['title_enable'] = 1; + $handler->display->display_options['arguments']['term_node_tid_depth']['title_enable'] = 1; + $handler->display->display_options['arguments']['term_node_tid_depth']['title'] = '%1'; + $handler->display->display_options['arguments']['term_node_tid_depth']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['term_node_tid_depth']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['term_node_tid_depth']['specify_validation'] = 1; + $handler->display->display_options['arguments']['term_node_tid_depth']['validate']['type'] = 'taxonomy_term'; + $handler->display->display_options['arguments']['term_node_tid_depth']['depth'] = '0'; + $handler->display->display_options['arguments']['term_node_tid_depth']['break_phrase'] = 1; + /* Contextual filter: Content: Has taxonomy term ID depth modifier */ + $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['id'] = 'term_node_tid_depth_modifier'; + $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['table'] = 'node'; + $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['field'] = 'term_node_tid_depth_modifier'; + $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['exception']['title_enable'] = 1; + $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['specify_validation'] = 1; + /* Filter criterion: Content: Published or admin */ + $handler->display->display_options['filters']['status_extra']['id'] = 'status_extra'; + $handler->display->display_options['filters']['status_extra']['table'] = 'node'; + $handler->display->display_options['filters']['status_extra']['field'] = 'status_extra'; + $handler->display->display_options['filters']['status_extra']['group'] = 0; + $handler->display->display_options['filters']['status_extra']['expose']['operator'] = FALSE; + + /* Display: Page */ $handler = $view->new_display('page', 'Page', 'page'); - $handler->override_option('path', 'taxonomy/term/%'); - $handler->override_option('menu', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler = $view->new_display('feed', 'Core feed', 'feed'); - $handler->override_option('items_per_page', 15); - $handler->override_option('use_pager', '1'); - $handler->override_option('row_plugin', 'node_rss'); - $handler->override_option('row_options', array( - 'item_length' => 'default', - )); - $handler->override_option('path', 'taxonomy/term/%/%/feed'); - $handler->override_option('menu', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('displays', array( + $handler->display->display_options['path'] = 'taxonomy/term/%'; + + /* Display: Feed */ + $handler = $view->new_display('feed', 'Feed', 'feed'); + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = 15; + $handler->display->display_options['style_plugin'] = 'rss'; + $handler->display->display_options['row_plugin'] = 'node_rss'; + $handler->display->display_options['path'] = 'taxonomy/term/%/%/feed'; + $handler->display->display_options['displays'] = array( 'page' => 'page', 'default' => 0, - )); - $handler = $view->new_display('feed', 'Views 1 feed', 'feed_1'); - $handler->override_option('items_per_page', 15); - $handler->override_option('use_pager', '1'); - $handler->override_option('row_plugin', 'node_rss'); - $handler->override_option('row_options', array( - 'item_length' => 'default', - )); - $handler->override_option('path', 'taxonomy/term/%/feed'); - $handler->override_option('menu', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $handler->override_option('tab_options', array( - 'type' => 'none', - 'title' => '', - 'weight' => 0, - )); - $views[$view->name] = $view; + ); + $translatables['taxonomy_term'] = array( + t('Master'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('All'), + t('%1'), + t('Page'), + t('Feed'), + ); + + $views['taxonomy_term'] = $view; return $views; } - - diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc b/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc index 44b2bdac1..7f14e4d21 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_argument_taxonomy.inc @@ -3,15 +3,18 @@ /** * Argument handler for basic taxonomy tid. */ -class views_handler_argument_taxonomy extends views_handler_argument { +class views_handler_argument_taxonomy extends views_handler_argument_numeric { /** * Override the behavior of title(). Get the title of the node. */ function title() { - $term = taxonomy_term_load($this->argument); - if (!empty($term)) { - return check_plain($term->name); + // There might be no valid argument. + if ($this->argument) { + $term = taxonomy_term_load($this->argument); + if (!empty($term)) { + return check_plain($term->name); + } } // TODO review text return t('No name'); diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc b/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc index 3bc3c5fd1..ab519612f 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc @@ -44,7 +44,6 @@ class views_handler_argument_term_node_tid_depth extends views_handler_argument '#title' => t("Use Drupal's taxonomy term path to create breadcrumb links"), '#description' => t('If selected, the links in the breadcrumb trail will be created using the standard drupal method instead of the custom views method. This is useful if you are using modules like taxonomy redirect to modify your taxonomy term links.'), '#default_value' => !empty($this->options['use_taxonomy_term_path']), - '#process' => array('form_process_checkbox', 'ctools_dependent_process'), '#dependency' => array('edit-options-set-breadcrumb' => array(TRUE)), ); parent::options_form($form, $form_state); @@ -71,6 +70,8 @@ class views_handler_argument_term_node_tid_depth extends views_handler_argument $actions = parent::default_actions(); unset($actions['summary asc']); unset($actions['summary desc']); + unset($actions['summary asc by count']); + unset($actions['summary desc by count']); return $actions; } @@ -81,7 +82,7 @@ class views_handler_argument_term_node_tid_depth extends views_handler_argument $tids = new stdClass(); $tids->value = $this->argument; $tids = views_break_phrase($this->argument, $tids); - if ($tids->value == -1) { + if ($tids->value == array(-1)) { return FALSE; } diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc b/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc index e28b9ebea..3f3186499 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc @@ -55,4 +55,3 @@ class views_handler_argument_term_node_tid_depth_modifier extends views_handler_ } } } - diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc b/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc new file mode 100644 index 000000000..4999d274e --- /dev/null +++ b/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc @@ -0,0 +1,19 @@ +<?php + +/** + * Argument handler to accept a vocabulary machine name. + */ +class views_handler_argument_vocabulary_machine_name extends views_handler_argument_string { + /** + * Override the behavior of title(). Get the name of the vocabulary.. + */ + function title() { + $title = db_query("SELECT v.name FROM {taxonomy_vocabulary} v WHERE v.machine_name = :machine_name", array(':machine_name' => $this->argument))->fetchField(); + + if (empty($title)) { + return t('No vocabulary'); + } + + return check_plain($title); + } +} diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc b/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc index 5c828c166..5b6358822 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_argument_vocabulary_vid.inc @@ -3,9 +3,9 @@ /** * Argument handler to accept a vocabulary id. */ -class views_handler_argument_vocabulary_vid extends views_handler_argument { +class views_handler_argument_vocabulary_vid extends views_handler_argument_numeric { /** - * Override the behavior of title(). Get the name of the user. + * Override the behavior of title(). Get the name of the vocabulary. */ function title() { $title = db_query("SELECT v.name FROM {taxonomy_vocabulary} v WHERE v.vid = :vid", array(':vid' => $this->argument))->fetchField(); diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc b/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc index c721e841b..b910e395e 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_field_taxonomy.inc @@ -24,6 +24,7 @@ class views_handler_field_taxonomy extends views_handler_field { function option_definition() { $options = parent::option_definition(); $options['link_to_taxonomy'] = array('default' => FALSE); + $options['convert_spaces'] = array('default' => FALSE); return $options; } @@ -36,6 +37,12 @@ class views_handler_field_taxonomy extends views_handler_field { '#description' => t("Enable to override this field's links."), '#type' => 'checkbox', '#default_value' => !empty($this->options['link_to_taxonomy']), + ); + $form['convert_spaces'] = array( + '#title' => t('Convert spaces in term names to hyphens'), + '#description' => t('This allows links to work with Views taxonomy term arguments.'), + '#type' => 'checkbox', + '#default_value' => !empty($this->options['convert_spaces']), ); parent::options_form($form, $form_state); } @@ -56,6 +63,11 @@ class views_handler_field_taxonomy extends views_handler_field { $uri = entity_uri('taxonomy_term', $term); $this->options['alter']['path'] = $uri['path']; } + + if (!empty($this->options['convert_spaces'])) { + $data = str_replace(' ', '-', $data); + } + return $data; } diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc b/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc index 3903951bb..31cc0ea16 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_field_term_link_edit.inc @@ -50,4 +50,3 @@ class views_handler_field_term_link_edit extends views_handler_field { } } } - diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc b/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc index 7e63f2f91..e46add8c5 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc @@ -1,13 +1,15 @@ <?php /** - * Field handler for terms. + * @file + * Field handler to display all taxonomy terms of a node. */ class views_handler_field_term_node_tid extends views_handler_field_prerender_list { function init(&$view, &$options) { parent::init($view, $options); - if ($view->base_table == 'node_revisions') { - $this->additional_fields['nid'] = array('table' => 'node_revisions', 'field' => 'nid'); + // @todo: Wouldn't it be possible to use $this->base_table and no if here? + if ($view->base_table == 'node_revision') { + $this->additional_fields['nid'] = array('table' => 'node_revision', 'field' => 'nid'); } else { $this->additional_fields['nid'] = array('table' => 'node', 'field' => 'nid'); @@ -64,7 +66,6 @@ class views_handler_field_term_node_tid extends views_handler_field_prerender_li '#title' => t('Vocabularies'), '#options' => $options, '#default_value' => $this->options['vocabularies'], - '#process' => array('form_process_checkboxes', 'ctools_dependent_process'), '#dependency' => array('edit-options-limit' => array(TRUE)), '#fieldset' => 'more', ); @@ -132,10 +133,9 @@ class views_handler_field_term_node_tid extends views_handler_field_prerender_li } function add_self_tokens(&$tokens, $item) { - $tokens['[' . $this->options['id'] . '-tid' . ']'] = $item['tid']; - $tokens['[' . $this->options['id'] . '-name' . ']'] = $item['name']; - $tokens['[' . $this->options['id'] . '-vocabulary-machine-name' . ']'] = $item['vocabulary_machine_name']; - $tokens['[' . $this->options['id'] . '-vocabulary' . ']'] = $item['vocabulary']; + foreach(array('tid', 'name', 'vocabulary_machine_name', 'vocabulary') as $token) { + // Replace _ with - for the vocabulary machine name. + $tokens['[' . $this->options['id'] . '-' . str_replace('_', '-', $token). ']'] = isset($item[$token]) ? $item[$token] : ''; + } } } - diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc b/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc index 5ffe2f1a4..5e0467342 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid.inc @@ -6,6 +6,9 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_one { function init(&$view, &$options) { parent::init($view, $options); + if (!empty($this->definition['vocabulary'])) { + $this->options['vocabulary'] = $this->definition['vocabulary']; + } // Convert legacy vid option to machine name vocabulary. if (!empty($this->options['vid']) & empty($this->options['vocabulary'])) { @@ -41,26 +44,22 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on if ($this->options['limit']) { // We only do this when the form is displayed. - if ($this->options['vid'] == 0) { + if ($this->options['vocabulary'] == 0) { $first_vocabulary = reset($vocabularies); - $this->options['vid'] = $first_vocabulary->vid; + $this->options['vocabulary'] = $first_vocabulary->machine_name; } - $form['vocabulary'] = array( - '#prefix' => '<div class="views-left-40">', - '#suffix' => '</div>', - '#type' => 'radios', - '#title' => t('Vocabulary'), - '#options' => $options, - '#description' => t('Select which vocabulary to show terms for in the regular options.'), - '#default_value' => $this->options['vocabulary'], - ); + if (empty($this->definition['vocabulary'])) { + $form['vocabulary'] = array( + '#type' => 'radios', + '#title' => t('Vocabulary'), + '#options' => $options, + '#description' => t('Select which vocabulary to show terms for in the regular options.'), + '#default_value' => $this->options['vocabulary'], + ); + } } - $form['markup_start'] = array( - '#markup' => '<div class="views-left-40">', - ); - $form['type'] = array( '#type' => 'radios', '#title' => t('Selection type'), @@ -72,13 +71,8 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on '#type' => 'checkbox', '#title' => t('Show hierarchy in dropdown'), '#default_value' => !empty($this->options['hierarchy']), - '#process' => array('form_process_checkbox', 'ctools_dependent_process'), '#dependency' => array('radio:options[type]' => array('select')), ); - - $form['markup_end'] = array( - '#markup' => '</div>', - ); } function value_form(&$form, &$form_state) { @@ -214,6 +208,12 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on return TRUE; } + // If view is an attachment and is inheriting exposed filters, then assume + // exposed input has already been validated + if (!empty($this->view->is_attachment) && $this->view->display_handler->uses_exposed()) { + $this->validated_exposed_input = (array) $this->view->exposed_raw_input[$this->options['expose']['identifier']]; + } + // If it's non-required and there's no value don't bother filtering. if (!$this->options['expose']['required'] && empty($this->validated_exposed_input)) { return FALSE; diff --git a/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc b/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc index a718ec2ef..96a991cc0 100644 --- a/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc +++ b/sites/all/modules/views/modules/taxonomy/views_handler_filter_term_node_tid_depth.inc @@ -6,7 +6,7 @@ * because it uses a subquery to find nodes with */ class views_handler_filter_term_node_tid_depth extends views_handler_filter_term_node_tid { - function operator_options() { + function operator_options($which = 'title') { return array( 'or' => t('Is one of'), ); diff --git a/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc b/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc index 5026e54c7..17ee6342a 100644 --- a/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc +++ b/sites/all/modules/views/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc @@ -5,7 +5,7 @@ */ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_default { - function init(&$view, &$argument, &$options) { + function init(&$view, &$argument, $options) { parent::init($view, $argument, $options); // Convert legacy vids option to machine name vocabularies. @@ -24,6 +24,7 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d $options['term_page'] = array('default' => TRUE); $options['node'] = array('default' => FALSE); + $options['anyall'] = array('default' => ','); $options['limit'] = array('default' => FALSE); $options['vocabularies'] = array('default' => array()); @@ -38,7 +39,7 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d ); $form['node'] = array( '#type' => 'checkbox', - '#title' => t('Load default filter from node page, that\'s good for related taxonomy blocks.'), + '#title' => t('Load default filter from node page, that\'s good for related taxonomy blocks'), '#default_value' => $this->options['node'], ); @@ -71,10 +72,24 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d 'edit-options-argument-default-taxonomy-tid-node' => array(1), ), ); + + $form['anyall'] = array( + '#type' => 'radios', + '#title' => t('Multiple-value handling'), + '#default_value'=> $this->options['anyall'], + '#process' => array('form_process_radios', 'ctools_dependent_process'), + '#options' => array( + ',' => t('Filter to items that share all terms'), + '+' => t('Filter to items that share any term'), + ), + '#dependency' => array( + 'edit-options-argument-default-taxonomy-tid-node' => array(1), + ), + ); } - function options_submit(&$form, &$form_state, &$options) { - // Clear checkbox values. + function options_submit(&$form, &$form_state, &$options = array()) { + // Filter unselected items so we don't unnecessarily store giant arrays. $options['vocabularies'] = array_filter($options['vocabularies']); } @@ -116,11 +131,11 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d $tids[] = $tid; } } - return implode(",", $tids); + return implode($this->options['anyall'], $tids); } // Return all tids. else { - return implode(",", array_keys($taxonomy)); + return implode($this->options['anyall'], array_keys($taxonomy)); } } } @@ -128,9 +143,8 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d // If the current page is a view that takes tid as an argument, // find the tid argument and return it. $views_page = views_get_page_view(); - if ($views_page && isset($views_page->view->argument['tid'])) { - return $views_page->view->argument['tid']->argument; + if ($views_page && isset($views_page->argument['tid'])) { + return $views_page->argument['tid']->argument; } } } - diff --git a/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc b/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc index d4318c085..c81c619ee 100644 --- a/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc +++ b/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc @@ -8,7 +8,7 @@ * Validate whether an argument is an acceptable node. */ class views_plugin_argument_validate_taxonomy_term extends views_plugin_argument_validate { - function init(&$view, &$argument, &$options) { + function init(&$view, &$argument, $options) { parent::init($view, $argument, $options); // Convert legacy vids option to machine name vocabularies. @@ -68,8 +68,8 @@ class views_plugin_argument_validate_taxonomy_term extends views_plugin_argument ); } - function options_submit(&$form, &$form_state, &$options) { - // filter trash out of the options so we don't store giant unnecessary arrays + function options_submit(&$form, &$form_state, &$options = array()) { + // Filter unselected items so we don't unnecessarily store giant arrays. $options['vocabularies'] = array_filter($options['vocabularies']); } @@ -102,9 +102,15 @@ class views_plugin_argument_validate_taxonomy_term extends views_plugin_argument if (!$term) { return FALSE; } + $this->argument->validated_title = check_plain($term->name); return empty($vocabularies) || !empty($vocabularies[$term->machine_name]); case 'tids': + // An empty argument is not a term so doesn't pass. + if (empty($argument)) { + return FALSE; + } + $tids = new stdClass(); $tids->value = $argument; $tids = views_break_phrase($argument, $tids); @@ -184,4 +190,32 @@ class views_plugin_argument_validate_taxonomy_term extends views_plugin_argument return FALSE; } } + + function process_summary_arguments(&$args) { + $type = $this->options['type']; + $transform = $this->options['transform']; + $vocabularies = array_filter($this->options['vocabularies']); + + if ($type == 'convert') { + $arg_keys = array_flip($args); + + $query = db_select('taxonomy_term_data', 'td'); + $query->condition('tid', $args); + $query->addField('td', 'tid', 'tid'); + if (!empty($vocabularies)) { + $query->leftJoin('taxonomy_vocabulary', 'tv', 'td.vid = tv.vid'); + $query->condition('tv.machine_name', $vocabularies); + } + if ($transform) { + $query->addExpression("REPLACE(td.name, ' ', '-')", 'name'); + } + else { + $query->addField('td', 'name', 'name'); + } + + foreach ($query->execute()->fetchAllKeyed() as $tid => $term) { + $args[$arg_keys[$tid]] = $term; + } + } + } } diff --git a/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc b/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc index 22c4eb0de..483ce6f7f 100644 --- a/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc +++ b/sites/all/modules/views/modules/translation/views_handler_argument_node_tnid.inc @@ -14,11 +14,10 @@ class views_handler_argument_node_tnid extends views_handler_argument_numeric { function title_query() { $titles = array(); - $result = db_query("SELECT n.title FROM {node} n WHERE n.tnid IN (:tnids)", array(':tnis' => $this->value)); + $result = db_query("SELECT n.title FROM {node} n WHERE n.tnid IN (:tnids)", array(':tnids' => $this->value)); foreach ($result as $term) { $titles[] = check_plain($term->title); } return $titles; } } - diff --git a/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc b/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc index 3177ce4a7..93bd88327 100644 --- a/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc +++ b/sites/all/modules/views/modules/translation/views_handler_field_node_language.inc @@ -22,7 +22,7 @@ class views_handler_field_node_language extends views_handler_field_node { } function render($values) { - $languages = locale_language_list(empty($this->options['native_language']) ? 'name' : 'native'); + $languages = views_language_list(empty($this->options['native_language']) ? 'name' : 'native'); $value = $this->get_value($values); $value = isset($languages[$value]) ? $languages[$value] : ''; return $this->render_link($value, $values); diff --git a/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc b/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc index 105041fef..6e356ea28 100644 --- a/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc +++ b/sites/all/modules/views/modules/translation/views_handler_field_node_link_translate.inc @@ -8,24 +8,25 @@ class views_handler_field_node_link_translate extends views_handler_field_node_l $this->additional_fields['uid'] = 'uid'; $this->additional_fields['type'] = 'type'; $this->additional_fields['language'] = 'language'; - $this->additional_fields['format'] = array('table' => 'node_revisions', 'field' => 'format'); } - function render($values) { + function render_link($data, $values) { // ensure user has access to edit this node. $node = new stdClass(); $node->nid = $this->get_value($values, 'nid'); $node->uid = $this->get_value($values, 'uid'); $node->type = $this->get_value($values, 'type'); - $node->format = $this->get_value($values, 'format'); $node->language = $this->get_value($values, 'language'); $node->status = 1; // unpublished nodes ignore access control if (empty($node->language) || !translation_supported_type($node->type) || !node_access('view', $node) || !user_access('translate content')) { return; } + $this->options['alter']['make_link'] = TRUE; + $this->options['alter']['path'] = "node/$node->nid/translate"; + $this->options['alter']['query'] = drupal_get_destination(); + $text = !empty($this->options['text']) ? $this->options['text'] : t('translate'); - return l($text, "node/$node->nid/translate", array('query' => drupal_get_destination())); + return $text; } } - diff --git a/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc b/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc index 034d0fcbf..b4c17b9c9 100644 --- a/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc +++ b/sites/all/modules/views/modules/translation/views_handler_filter_node_language.inc @@ -11,7 +11,7 @@ class views_handler_filter_node_language extends views_handler_filter_in_operato '***DEFAULT_LANGUAGE***' => t("Default site language"), LANGUAGE_NONE => t('No language') ); - $languages = array_merge($languages, locale_language_list()); + $languages = array_merge($languages, views_language_list()); $this->value_options = $languages; } } diff --git a/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc b/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc index b47847bb2..460e16f06 100644 --- a/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc +++ b/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid.inc @@ -32,6 +32,6 @@ class views_handler_filter_node_tnid extends views_handler_filter { function query() { $table = $this->ensure_my_table(); // Select for source translations (tnid = nid). Conditionally, also accept either untranslated nodes (tnid = 0). - $this->query->add_where($this->options['group'], "$table.tnid = $table.nid" . ($this->operator ? " OR $table.tnid = 0" : '')); + $this->query->add_where_expression($this->options['group'], "$table.tnid = $table.nid" . ($this->operator ? " OR $table.tnid = 0" : '')); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc b/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc index d35aff7ff..e1cda3ac9 100644 --- a/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc +++ b/sites/all/modules/views/modules/translation/views_handler_filter_node_tnid_child.inc @@ -9,7 +9,6 @@ class views_handler_filter_node_tnid_child extends views_handler_filter { function query() { $table = $this->ensure_my_table(); - $this->query->add_where($this->options['group'], "$table.tnid <> $table.nid AND $table.tnid > 0"); + $this->query->add_where_expression($this->options['group'], "$table.tnid <> $table.nid AND $table.tnid > 0"); } } - diff --git a/sites/all/modules/views/modules/upload.views.inc b/sites/all/modules/views/modules/upload.views.inc deleted file mode 100644 index 198b64e7c..000000000 --- a/sites/all/modules/views/modules/upload.views.inc +++ /dev/null @@ -1,141 +0,0 @@ -<?php -/** - * @file - * - * Provide views data and handlers for upload tables that are not represented by - * their own module. - */ - -/** - * @defgroup views_upload_module upload.module handlers - * - * @{ - */ - -/** - * Implements hook_views_data() - */ -function upload_views_data() { - $data = array(); - - // ---------------------------------------------------------------------- - // upload table - - $data['upload']['table']['group'] = t('Upload'); - - $data['upload']['table']['join'] = array( - 'node' => array( - 'left_field' => 'vid', - 'field' => 'vid', - ), - 'node_revisions' => array( - 'left_field' => 'vid', - 'field' => 'vid', - ), - 'file_managed' => array( - 'left_field' => 'fid', - 'field' => 'fid', - ), - ); - - $data['upload']['vid'] = array( - 'title' => t('Content'), - 'help' => t('The content the uploaded file is attached to'), - 'relationship' => array( - 'label' => t('upload'), - 'base' => 'node', - 'base field' => 'vid', - // This allows us to not show this relationship if the base is already - // node so users won't create circular relationships. - 'skip base' => array('node', 'node_revisions'), - ), - ); - - $data['upload']['description'] = array( - 'title' => t('Description'), - 'help' => t('The description of the uploaded file.'), - 'field' => array( - 'handler' => 'views_handler_field_upload_description', - 'click sortable' => TRUE, - ), - 'sort' => array( - 'handler' => 'views_handler_sort', - ), - 'filter' => array( - 'handler' => 'views_handler_filter_string', - ), - 'argument' => array( - 'handler' => 'views_handler_argument_string', - ), - ); - - $data['upload']['list'] = array( - 'title' => t('Listed'), - 'help' => t('Whether or not the file is marked to be listed.'), - 'field' => array( - 'handler' => 'views_handler_field_boolean', - 'click sortable' => TRUE, - ), - 'filter' => array( - 'handler' => 'views_handler_filter_boolean_operator', - 'label' => t('Published'), - 'type' => 'yes-no', - ), - 'sort' => array( - 'handler' => 'views_handler_sort', - ), - ); - - $data['upload']['weight'] = array( - 'title' => t('Weight'), - 'help' => t('The weight, used for sorting.'), - 'field' => array( - 'handler' => 'views_handler_field_numeric', - 'click sortable' => TRUE, - ), - 'sort' => array( - 'handler' => 'views_handler_sort', - ), - 'filter' => array( - 'handler' => 'views_handler_filter_numeric', - ), - ); - - return $data; -} - -/** - * Implements hook_views_data_alter() - */ -function upload_views_data_alter(&$data) { - $data['node']['upload_fid'] = array( - 'group' => t('Upload'), - 'title' => t('Attached files'), - 'help' => t('All files attached to a node with upload.module.'), - 'real field' => 'vid', - 'field' => array( - 'handler' => 'views_handler_field_upload_fid', - 'no group by' => TRUE, - ), - 'filter' => array( - 'handler' => 'views_handler_filter_upload_fid', - 'title' => t('Has attached files'), - 'type' => 'yes-no', - 'help' => t('Only display items with attached files. This can cause duplicates if there are multiple attached files.'), - ), - 'relationship' => array( - 'title' => t('Attached files'), - 'help' => t('Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node.'), - 'relationship table' => 'upload', - 'relationship field' => 'fid', - 'base' => 'file_managed', - 'base field' => 'fid', - 'handler' => 'views_handler_relationship', - 'label' => t('Files'), - ), - ); -} - -/** - * @} - */ diff --git a/sites/all/modules/views/modules/upload.views_convert.inc b/sites/all/modules/views/modules/upload.views_convert.inc deleted file mode 100644 index 27e80650f..000000000 --- a/sites/all/modules/views/modules/upload.views_convert.inc +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - * - * Intervene to convert field values from the Views 1 format to the - * Views 2 format. Intervene only if $view->add_item() won't produce - * the right results, usually needed to set field options or values. - */ -function upload_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'field': - switch ($field['tablename']) { - case 'file_revisions': - switch ($field['field']) { - case 'fid': - $relationship = $view->add_item($display, 'relationship', 'node', 'upload_fid', array(), 'node_upload_fid'); - $view->set_item_option($display, 'field', $id, 'relationship', $relationship); - $view->set_item_option($display, 'field', $id, 'table', 'files'); - break; - } - break; - case 'files': - switch ($field['field']) { - case 'all_files': - $item = $view->get_item($display, 'field', $id); - switch ($field['options']) { - case 'link': - $item['link_to_file'] = TRUE; - break; - case 'linkdesc': - $item['link_to_file'] = TRUE; - case 'nolinkdesc': - $item['alter']['alter_text'] = TRUE; - $item['alter']['text'] = '['. $view->add_item($display, 'field', 'upload', 'description', array('exclude' => TRUE)) .']'; - break; - } - if ($field['handler'] == 'views_handler_file_listed_files') { - $item['only_listed'] = TRUE; - } - $item['table'] = 'node'; - $item['field'] = 'upload_fid'; - $view->set_item($display, 'field', $id, $item); - break; - case 'filename': - if ($field['handler'] == 'views_handler_file_filename_download') { - $view->set_item_option($display, 'field', $id, 'link_to_file', TRUE); - } - $relationship = $view->add_item($display, 'relationship', 'node', 'upload_fid', array(), 'node_upload_fid'); - $view->set_item_option($display, 'field', $id, 'relationship', $relationship); - break; - } - break; - } - break; - case 'filter': - switch ($field['tablename']) { - case 'file_revisions': - switch ($field['field']) { - case 'fid': - $view->set_item_option($display, 'filter', $id, 'table', 'node'); - $view->set_item_option($display, 'filter', $id, 'field', 'upload_fid'); - break; - case 'list': - $view->set_item_option($display, 'filter', $id, 'table', 'upload'); - break; - } - break; - case 'files': - switch ($field['field']) { - case 'filename': - case 'filemime': - $item = $view->get_item($display, 'filter', $id); - $item['operator'] = $field['operator']; - $item['case'] = FALSE; - $item['relationship'] = $view->add_item($display, 'relationship', 'node', 'upload_fid', array(), 'node_upload_fid'); - $view->set_item($display, 'filter', $id, $item); - break; - case 'filesize': - $relationship = $view->add_item($display, 'relationship', 'node', 'upload_fid', array(), 'node_upload_fid'); - $view->set_item_option($display, 'filter', $id, 'relationship', $relationship); - $view->set_item_option($display, 'filter', $id, 'operator', $field['operator']); - break; - } - break; - } - break; - case 'sorts': - switch ($field['tablename']) { - case 'file_revisions': - switch ($field['field']) { - case 'fid': - $relationship = $view->add_item($display, 'relationship', 'node', 'upload_fid', array(), 'node_upload_fid'); - $view->set_item_option($display, 'field', $id, 'relationship', $relationship); - $view->set_item_option($display, 'field', $id, 'table', 'files'); - break; - } - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/upload/views_handler_field_upload_description.inc b/sites/all/modules/views/modules/upload/views_handler_field_upload_description.inc deleted file mode 100644 index d978433ea..000000000 --- a/sites/all/modules/views/modules/upload/views_handler_field_upload_description.inc +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -/** - * Field handler to provide a list of roles. - */ -class views_handler_field_upload_description extends views_handler_field { - function init(&$view, &$options) { - parent::init($view, $options); - if (!empty($options['link_to_file'])) { - $this->additional_fields['fid'] = 'fid'; - } - } - - function option_definition() { - $options = parent::option_definition(); - $options['link_to_file'] = array('default' => FALSE); - return $options; - } - - function options_form(&$form, &$form_state) { - parent::options_form($form, $form_state); - $form['link_to_file'] = array( - '#title' => t('Link this field to download the file'), - '#type' => 'checkbox', - '#default_value' => !empty($this->options['link_to_file']), - ); - } - - function pre_render(&$values) { - if (empty($this->options['link_to_file'])) { - return; - } - - $fids = array(); - $this->items = array(); - - $data = array(); - foreach ($values as $result) { - if ($result->{$this->aliases['fid']}) { - $fids[] = $result->{$this->aliases['fid']}; - } - } - - if ($fids) { - $result = db_query("SELECT f.fid, f.uri FROM {files} f WHERE f.fid IN (:fids)", array(':fids' => $fids)); - foreach ($result as $file) { - $this->items[$file->fid] = $file; - } - } - } - - function render($values) { - $value = $this->get_value($values); - return $this->render_link($this->sanitize_value($value), $values); - } - - /** - * Render whatever the data is as a link to the file. - * - * Data should be made XSS safe prior to calling this function. - */ - function render_link($data, $values) { - $fid = $this->get_value($values, 'fid'); - if (!empty($this->options['link_to_file']) && $fid && $data !== NULL && $data !== '') { - $values = $this->items[$fid]; - $this->options['alter']['make_link'] = TRUE; - $this->options['alter']['path'] = file_create_url($values->uri); - } - else { - $this->options['alter']['make_link'] = FALSE; - } - return $data; - } -} diff --git a/sites/all/modules/views/modules/upload/views_handler_field_upload_fid.inc b/sites/all/modules/views/modules/upload/views_handler_field_upload_fid.inc deleted file mode 100644 index 1e2a1f6f8..000000000 --- a/sites/all/modules/views/modules/upload/views_handler_field_upload_fid.inc +++ /dev/null @@ -1,87 +0,0 @@ -<?php -/** - * Field handler to provide a list of roles. - */ -class views_handler_field_upload_fid extends views_handler_field_prerender_list { - function construct() { - parent::construct(); - } - - function option_definition() { - $options = parent::option_definition(); - $options['link_to_file'] = array('default' => FALSE); - $options['only_listed'] = array('default' => FALSE); - return $options; - } - - function options_form(&$form, &$form_state) { - parent::options_form($form, $form_state); - $form['link_to_file'] = array( - '#title' => t('Link this field to download the file'), - '#type' => 'checkbox', - '#default_value' => !empty($this->options['link_to_file']), - ); - - $form['only_listed'] = array( - '#title' => t('Only show "listed" file attachments'), - '#type' => 'checkbox', - '#default_value' => !empty($this->options['only_listed']), - ); - } - - function pre_render(&$values) { - $vids = array(); - $this->items = array(); - - foreach ($values as $result) { - $vids[] = $result->{$this->field_alias}; - } - - if ($vids) { - // Support "only listed files" option. - $where = ''; - if (!empty($this->options['only_listed'])) { - $where = " AND u.list <> 0"; - } - $result = db_query("SELECT u.vid, u.fid, f.filename, f.uri, f.filesize, f.filemime, u.description FROM {upload} u LEFT JOIN {file_managed} f ON f.fid = u.fid WHERE u.vid IN (" . implode(', ', $vids) . ")$where ORDER BY u.weight")->fetchAssoc(); - foreach ($result as $file) { - $file['filename'] = check_plain($file['filename']); - $file['filemime'] = check_plain($file['filemime']); - $file['description'] = check_plain($file['description']); - $file['filesize'] = format_size($file['filesize']); - $file['uri'] = file_create_url($file['uri']); - if (!empty($this->options['link_to_file']) ) { - $file['make_link'] = TRUE; - $file['path'] = $file['uri']; - } - $this->items[$file['vid']][$file['fid']] = $file; - } - } - } - - function render_item($count, $item) { - return $item['description']; - } - - function document_self_tokens(&$tokens) { - $tokens['[' . $this->options['id'] . '-fid' . ']'] = t('The file ID for the file.'); - $tokens['[' . $this->options['id'] . '-name' . ']'] = t('The name of the attached file.'); - $tokens['[' . $this->options['id'] . '-type' . ']'] = t('The MIME type of the attached file.'); - $tokens['[' . $this->options['id'] . '-description' . ']'] = t('The name of the attached file.'); - $tokens['[' . $this->options['id'] . '-path' . ']'] = t('The path of the attached file.'); - $tokens['[' . $this->options['id'] . '-url' . ']'] = t('The url of the attached file.'); - $tokens['[' . $this->options['id'] . '-uri' . ']'] = t('The path of the attached file.'); - $tokens['[' . $this->options['id'] . '-size' . ']'] = t('The size of the attached file.'); - } - - function add_self_tokens(&$tokens, $item) { - $tokens['[' . $this->options['id'] . '-fid' . ']'] = $item['fid']; - $tokens['[' . $this->options['id'] . '-name' . ']'] = $item['filename']; - $tokens['[' . $this->options['id'] . '-type' . ']'] = $item['filemime']; - $tokens['[' . $this->options['id'] . '-description' . ']'] = $item['description']; - $tokens['[' . $this->options['id'] . '-path' . ']'] = $item['uri']; - $tokens['[' . $this->options['id'] . '-url' . ']'] = url($item['uri']); - $tokens['[' . $this->options['id'] . '-uri' . ']'] = $item['uri']; - $tokens['[' . $this->options['id'] . '-size' . ']'] = $item['filesize']; - } -} diff --git a/sites/all/modules/views/modules/upload/views_handler_filter_upload_fid.inc b/sites/all/modules/views/modules/upload/views_handler_filter_upload_fid.inc deleted file mode 100644 index 31a957094..000000000 --- a/sites/all/modules/views/modules/upload/views_handler_filter_upload_fid.inc +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -/** - * Filter by whether or not a node has attached files from the upload module - */ -class views_handler_filter_upload_fid extends views_handler_filter_boolean_operator { - function construct() { - parent::construct(); - $this->value_value = t('Has attached files'); - } - - function query() { - $this->ensure_my_table(); - $this->query->add_where($this->options['group'], "(SELECT COUNT(*) FROM {upload} u WHERE u.vid = $this->table_alias.$this->real_field) " . (empty($this->value) ? '=' : '<>') . " 0"); - } -} - diff --git a/sites/all/modules/views/modules/user.views.inc b/sites/all/modules/views/modules/user.views.inc index 0029fcf98..8ecc8f5e6 100644 --- a/sites/all/modules/views/modules/user.views.inc +++ b/sites/all/modules/views/modules/user.views.inc @@ -27,19 +27,21 @@ function user_views_data() { 'help' => t('Users who have created accounts on your site.'), 'access query tag' => 'user_access', ); + $data['users']['table']['entity type'] = 'user'; - $data['users']['table']['join'] = array( + + $data['users']['table']['default_relationship'] = array( 'node' => array( - 'left_field' => 'uid', + 'table' => 'node', 'field' => 'uid', - 'type' => 'INNER', // all nodes have an author. ), - // This goes to the node so that we have consistent authorship. - 'node_revisions' => array( - 'left_table' => 'node', - 'left_field' => 'uid', + 'node_revision' => array( + 'table' => 'node_revision', + 'field' => 'uid', + ), + 'file' => array( + 'table' => 'file', 'field' => 'uid', - 'type' => 'INNER', // all nodes have an author. ), ); @@ -73,6 +75,22 @@ function user_views_data() { ), ); + // uid + $data['users']['uid_representative'] = array( + 'relationship' => array( + 'title' => t('Representative node'), + 'label' => t('Representative node'), + 'help' => t('Obtains a single representative node for each user, according to a chosen sort criterion.'), + 'handler' => 'views_handler_relationship_groupwise_max', + 'relationship field' => 'uid', + 'outer field' => 'users.uid', + 'argument table' => 'users', + 'argument field' => 'uid', + 'base' => 'node', + 'field' => 'nid', + ), + ); + // uid $data['users']['uid_current'] = array( 'real field' => 'uid', @@ -182,7 +200,7 @@ function user_views_data() { $data['users']['created_fulldate'] = array( 'title' => t('Created date'), - 'help' => t('In the form of CCYYMMDD.'), + 'help' => t('Date in the form of CCYYMMDD.'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_fulldate', @@ -191,16 +209,17 @@ function user_views_data() { $data['users']['created_year_month'] = array( 'title' => t('Created year + month'), - 'help' => t('In the form of YYYYMM.'), + 'help' => t('Date in the form of YYYYMM.'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_year_month', ), ); - $data['users']['timestamp_year'] = array( + $data['users']['timestamp_year']['moved to'] = array('users', 'created_year'); + $data['users']['created_year'] = array( 'title' => t('Created year'), - 'help' => t('In the form of YYYY.'), + 'help' => t('Date in the form of YYYY.'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_year', @@ -209,7 +228,7 @@ function user_views_data() { $data['users']['created_month'] = array( 'title' => t('Created month'), - 'help' => t('In the form of MM (01 - 12).'), + 'help' => t('Date in the form of MM (01 - 12).'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_month', @@ -218,7 +237,7 @@ function user_views_data() { $data['users']['created_day'] = array( 'title' => t('Created day'), - 'help' => t('In the form of DD (01 - 31).'), + 'help' => t('Date in the form of DD (01 - 31).'), 'argument' => array( 'field' => 'created', 'handler' => 'views_handler_argument_node_created_day', @@ -227,12 +246,12 @@ function user_views_data() { $data['users']['created_week'] = array( 'title' => t('Created week'), - 'help' => t('In the form of WW (01 - 53).'), + 'help' => t('Date in the form of WW (01 - 53).'), 'argument' => array( - 'field' => 'timestamp', + 'field' => 'created', 'handler' => 'views_handler_argument_node_created_week', ), - ); + ); // access field $data['users']['access'] = array( @@ -335,13 +354,15 @@ function user_views_data() { 'left_field' => 'uid', 'field' => 'uid', ), + ); + + $data['users_roles']['table']['default_relationship'] = array( 'node' => array( - 'left_field' => 'uid', + 'table' => 'node', 'field' => 'uid', ), - 'node_revisions' => array( - 'left_table' => 'node', - 'left_field' => 'uid', + 'node_revision' => array( + 'table' => 'node_revision', 'field' => 'uid', ), ); @@ -382,18 +403,42 @@ function user_views_data() { 'left_field' => 'rid', 'field' => 'rid', ), + ); + + $data['role']['table']['default_relationship'] = array( 'node' => array( - 'left_table' => 'users_roles', - 'left_field' => 'rid', - 'field' => 'rid', + 'table' => 'node', + 'field' => 'uid', + ), + 'node_revision' => array( + 'table' => 'node_revision', + 'field' => 'uid', ), - 'node_revisions' => array( + ); + + // permission table + $data['role_permission']['table']['group'] = t('User'); + $data['role_permission']['table']['join'] = array( + // Directly links to users table. + 'users' => array( 'left_table' => 'users_roles', 'left_field' => 'rid', 'field' => 'rid', ), ); + $data['role_permission']['permission'] = array( + 'title' => t('Permission'), + 'help' => t('The user permissions.'), + 'field' => array( + 'handler' => 'views_handler_field_user_permissions', + 'no group by' => TRUE, + ), + 'filter' => array( + 'handler' => 'views_handler_filter_user_permissions', + ), + ); + // ---------------------------------------------------------------------- // authmap table @@ -404,12 +449,19 @@ function user_views_data() { 'left_field' => 'uid', 'field' => 'uid', ), + ); + + $data['authmap']['table']['default_relationship'] = array( 'node' => array( - 'left_table' => 'users', - 'left_field' => 'uid', + 'table' => 'node', + 'field' => 'uid', + ), + 'node_revision' => array( + 'table' => 'node_revision', 'field' => 'uid', ), ); + $data['authmap']['aid'] = array( 'title' => t('Authmap ID'), 'help' => t('The Authmap ID.'), diff --git a/sites/all/modules/views/modules/user.views_convert.inc b/sites/all/modules/views/modules/user.views_convert.inc deleted file mode 100644 index dd67d47e9..000000000 --- a/sites/all/modules/views/modules/user.views_convert.inc +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -/** - * @file - * Field conversion for fields handled by this module. - */ - -/** - * Implements hook_views_convert(). - */ -function user_views_convert($display, $type, &$view, $field, $id = NULL) { - switch ($type) { - case 'field': - switch ($field['tablename']) { - case 'users': - switch ($field['field']) { - case 'uid': - $view->set_item_option($display, 'field', $id, 'field', 'picture'); - break; - } - break; - } - break; - case 'filter': - if ($field['tablename'] == 'users' || !strncmp($field['tablename'], 'users_role_', 11)) { - switch ($field['field']) { - case 'uid': - $operators = array('OR' => 'IN', 'NOR' => 'NOT IN'); - $view->set_item_option($display, 'filter', $id, 'operator', $operators[$field['operator']]); - if ($rid = (integer) substr($field['tablename'], 11)) { - $view->add_item($display, 'filter', 'users_roles', 'rid', array('value' => $rid)); - } - break; - } - } - elseif ($field['tablename'] == 'users_roles') { - switch ($field['field']) { - case 'rid': - $operators = array('AND' => 'and', 'OR' => 'or', 'NOR' => 'not'); - $view->set_item_option($display, 'filter', $id, 'operator', $operators[$field['operator']]); - break; - } - } - break; - case 'argument': - $options = $field['argoptions']; - switch ($field['type']) { - case 'uid': - $view->add_item($display, 'argument', 'users', 'uid', $options, $field['id']); - break; - case 'uidtouch': - $view->add_item($display, 'argument', 'node', 'uid_touch', $options, $field['id']); - break; - case 'username': - $view->add_item($display, 'argument', 'users', 'name', $options, $field['id']); - break; - } - break; - } -} diff --git a/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc b/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc index f4cb423c4..e5a7d1c7a 100644 --- a/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc +++ b/sites/all/modules/views/modules/user/views_handler_argument_user_uid.inc @@ -25,4 +25,3 @@ class views_handler_argument_user_uid extends views_handler_argument_numeric { return $titles; } } - diff --git a/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc b/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc index b5ccf12fe..0facece32 100644 --- a/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc +++ b/sites/all/modules/views/modules/user/views_handler_argument_users_roles_rid.inc @@ -13,4 +13,3 @@ class views_handler_argument_users_roles_rid extends views_handler_argument_many return $titles; } } - diff --git a/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc b/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc index d0c4ee7e8..272de3bcd 100644 --- a/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc +++ b/sites/all/modules/views/modules/user/views_handler_field_user_link_cancel.inc @@ -23,4 +23,3 @@ class views_handler_field_user_link_cancel extends views_handler_field_user_link } } } - diff --git a/sites/all/modules/views/modules/user/views_handler_field_user_link_delete.inc b/sites/all/modules/views/modules/user/views_handler_field_user_link_delete.inc deleted file mode 100644 index bf138d612..000000000 --- a/sites/all/modules/views/modules/user/views_handler_field_user_link_delete.inc +++ /dev/null @@ -1,24 +0,0 @@ -<?php -// $Id: views_handler_field_user_link_delete.inc,v 1.1.6.1 2010/11/18 07:29:03 dereine Exp $ -/** - * Field handler to present a link to user delete. - */ -class views_handler_field_user_link_delete extends views_handler_field_user_link { - // An example of field level access control. - function access() { - return user_access('administer users'); - } - - function render_link($data, $values) { - $uid = $values->{$this->aliases['uid']}; - $this->options['alter']['make_link'] = TRUE; - - $text = !empty($this->options['text']) ? $this->options['text'] : t('delete'); - - $this->options['alter']['path'] = "user/$uid/delete"; - $this->options['alter']['query'] = drupal_get_destination(); - - return $text; - } -} - diff --git a/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc b/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc index cf55366b4..692b6b3dd 100644 --- a/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc +++ b/sites/all/modules/views/modules/user/views_handler_field_user_mail.inc @@ -10,6 +10,7 @@ class views_handler_field_user_mail extends views_handler_field_user { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['link_to_user'] = array( '#title' => t('Link this field'), '#type' => 'radios', @@ -20,7 +21,6 @@ class views_handler_field_user_mail extends views_handler_field_user { ), '#default_value' => $this->options['link_to_user'], ); - parent::options_form($form, $form_state); } function render_link($data, $values) { diff --git a/sites/all/modules/views/modules/user/views_handler_field_user_name.inc b/sites/all/modules/views/modules/user/views_handler_field_user_name.inc index 3b04dd1e5..fe1056917 100644 --- a/sites/all/modules/views/modules/user/views_handler_field_user_name.inc +++ b/sites/all/modules/views/modules/user/views_handler_field_user_name.inc @@ -8,7 +8,7 @@ class views_handler_field_user_name extends views_handler_field_user { */ function init(&$view, &$data) { parent::init($view, $data); - if (!empty($this->options['overwrite_anonymous'])) { + if (!empty($this->options['overwrite_anonymous']) || !empty($this->options['format_username'])) { $this->additional_fields['uid'] = 'uid'; } } @@ -18,11 +18,19 @@ class views_handler_field_user_name extends views_handler_field_user { $options['overwrite_anonymous'] = array('default' => FALSE); $options['anonymous_text'] = array('default' => '', 'translatable' => TRUE); + $options['format_username'] = array('default' => TRUE); return $options; } function options_form(&$form, &$form_state) { + $form['format_username'] = array( + '#title' => t('Use formatted username'), + '#type' => 'checkbox', + '#default_value' => !empty($this->options['format_username']), + '#description' => t('If checked, the username will be formatted by the system. If unchecked, it will be displayed raw.'), + '#fieldset' => 'more', + ); $form['overwrite_anonymous'] = array( '#title' => t('Overwrite the value to display for anonymous users'), '#type' => 'checkbox', @@ -34,7 +42,6 @@ class views_handler_field_user_name extends views_handler_field_user { '#title' => t('Text to display for anonymous users'), '#type' => 'textfield', '#default_value' => $this->options['anonymous_text'], - '#process' => array('ctools_dependent_process'), '#dependency' => array( 'edit-options-overwrite-anonymous' => array(1), ), @@ -45,9 +52,10 @@ class views_handler_field_user_name extends views_handler_field_user { } function render_link($data, $values) { + $account = new stdClass(); + $account->uid = $this->get_value($values, 'uid'); + $account->name = $this->get_value($values); if (!empty($this->options['link_to_user']) || !empty($this->options['overwrite_anonymous'])) { - $account = new stdClass(); - $account->uid = $this->get_value($values, 'uid'); if (!empty($this->options['overwrite_anonymous']) && !$account->uid) { // This is an anonymous user, and we're overriting the text. return check_plain($this->options['anonymous_text']); @@ -57,8 +65,11 @@ class views_handler_field_user_name extends views_handler_field_user { return theme('username', array('account' => $account)); } } + // If we want a formatted username, do that. + if (!empty($this->options['format_username'])) { + return format_username($account); + } // Otherwise, there's no special handling, so return the data directly. return $data; } } - diff --git a/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc b/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc new file mode 100644 index 000000000..7bdb31666 --- /dev/null +++ b/sites/all/modules/views/modules/user/views_handler_field_user_permissions.inc @@ -0,0 +1,60 @@ +<?php +/** + * Field handler to provide a list of permissions. + */ +class views_handler_field_user_permissions extends views_handler_field_prerender_list { + function construct() { + parent::construct(); + $this->additional_fields['uid'] = array('table' => 'users', 'field' => 'uid'); + } + + function query() { + $this->add_additional_fields(); + $this->field_alias = $this->aliases['uid']; + } + + function pre_render(&$values) { + $uids = array(); + $this->items = array(); + + foreach ($values as $result) { + $uids[] = $this->get_value($result, NULL, TRUE); + } + + if ($uids) { + // Get a list of all the modules implementing a hook_permission() and sort by + // display name. + $module_info = system_get_info('module'); + $modules = array(); + foreach (module_implements('permission') as $module) { + $modules[$module] = $module_info[$module]['name']; + } + asort($modules); + + $permissions = module_invoke_all('permission'); + + $result = db_query("SELECT u.uid, u.rid, rp.permission FROM {role_permission} rp INNER JOIN {users_roles} u ON u.rid = rp.rid WHERE u.uid IN (:uids) AND rp.module IN (:modules) ORDER BY rp.permission", + array(':uids' => $uids, ':modules' => array_keys($modules))); + + foreach ($result as $perm) { + $this->items[$perm->uid][$perm->permission]['permission'] = $permissions[$perm->permission]['title']; + } + } + } + + function render_item($count, $item) { + return $item['permission']; + } + + /* + function document_self_tokens(&$tokens) { + $tokens['[' . $this->options['id'] . '-role' . ']'] = t('The name of the role.'); + $tokens['[' . $this->options['id'] . '-rid' . ']'] = t('The role ID of the role.'); + } + + function add_self_tokens(&$tokens, $item) { + $tokens['[' . $this->options['id'] . '-role' . ']'] = $item['role']; + $tokens['[' . $this->options['id'] . '-rid' . ']'] = $item['rid']; + } + */ +} diff --git a/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc b/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc index 60e09cdd3..663b74307 100644 --- a/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc +++ b/sites/all/modules/views/modules/user/views_handler_field_user_picture.inc @@ -8,21 +8,86 @@ class views_handler_field_user_picture extends views_handler_field { parent::construct(); $this->additional_fields['uid'] = 'uid'; $this->additional_fields['name'] = 'name'; - $this->additional_fields['mail'] = 'mail'; + $this->additional_fields['mail'] = 'mail'; } - function element_type($none_supported = FALSE, $default_empty = FALSE) { + function element_type($none_supported = FALSE, $default_empty = FALSE, $inline = FALSE) { + if ($inline) { + return 'span'; + } + return 'div'; } + function option_definition() { + $options = parent::option_definition(); + $options['link_photo_to_profile'] = array('default' => TRUE); + $options['image_style'] = array('default' => ''); + return $options; + } + + function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + $form['link_photo_to_profile'] = array( + '#title' => t("Link to user's profile"), + '#description' => t("Link the user picture to the user's profile"), + '#type' => 'checkbox', + '#default_value' => $this->options['link_photo_to_profile'], + ); + + if (module_exists('image')) { + $styles = image_styles(); + $style_options = array('' => t('Default')); + foreach ($styles as $style) { + $style_options[$style['name']] = $style['name']; + } + + $form['image_style'] = array( + '#title' => t('Image style'), + '#description' => t('Using <em>Default</em> will use the site-wide image style for user pictures set in the <a href="!account-settings">Account settings</a>.', array('!account-settings' => url('admin/config/people/accounts', array('fragment' => 'edit-personalization')))), + '#type' => 'select', + '#options' => $style_options, + '#default_value' => $this->options['image_style'], + ); + } + } + function render($values) { - // Fake an account object. - $account = new stdClass(); - $account->uid = $this->get_value($values, 'uid'); - $account->name = $this->get_value($values, 'name'); - $account->mail = $this->get_value($values, 'mail'); - $account->picture = $this->get_value($values); - - return theme('user_picture', array('account' => $account)); + if ($this->options['image_style'] && module_exists('image')) { + // @todo: Switch to always using theme('user_picture') when it starts + // supporting image styles. See http://drupal.org/node/1021564 + if ($picture_fid = $this->get_value($values)) { + $picture = file_load($picture_fid); + $picture_filepath = $picture->uri; + } + else { + $picture_filepath = variable_get('user_picture_default', ''); + } + if (file_valid_uri($picture_filepath)) { + $output = theme('image_style', array('style_name' => $this->options['image_style'], 'path' => $picture_filepath)); + if ($this->options['link_photo_to_profile'] && user_access('access user profiles')) { + $uid = $this->get_value($values, 'uid'); + $output = l($output, "user/$uid", array('html' => TRUE)); + } + } + else { + $output = ''; + } + } + else { + // Fake an account object. + $account = new stdClass(); + if ($this->options['link_photo_to_profile']) { + // Prevent template_preprocess_user_picture from adding a link + // by not setting the uid. + $account->uid = $this->get_value($values, 'uid'); + } + $account->name = $this->get_value($values, 'name'); + $account->mail = $this->get_value($values, 'mail'); + $account->picture = $this->get_value($values); + $output = theme('user_picture', array('account' => $account)); + } + + return $output; } } diff --git a/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc b/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc index 592c10fff..e1d583bf5 100644 --- a/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc +++ b/sites/all/modules/views/modules/user/views_handler_field_user_roles.inc @@ -18,7 +18,7 @@ class views_handler_field_user_roles extends views_handler_field_prerender_list $this->items = array(); foreach ($values as $result) { - $uids[] = $this->get_value($result); + $uids[] = $this->get_value($result, NULL, TRUE); } if ($uids) { diff --git a/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc b/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc index 2fce71ab8..a1b409c3a 100644 --- a/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc +++ b/sites/all/modules/views/modules/user/views_handler_filter_user_name.inc @@ -114,7 +114,7 @@ class views_handler_filter_user_name extends views_handler_filter_in_operator { return $uids; } - function value_submit() { + function value_submit($form, &$form_state) { // prevent array filter from removing our anonymous user. } diff --git a/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc b/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc new file mode 100644 index 000000000..904ba9f90 --- /dev/null +++ b/sites/all/modules/views/modules/user/views_handler_filter_user_permissions.inc @@ -0,0 +1,27 @@ +<?php +/** + * Filter handler for user roles + */ +class views_handler_filter_user_permissions extends views_handler_filter_many_to_one { + function get_value_options() { + $module_info = system_get_info('module'); + + // Get a list of all the modules implementing a hook_permission() and sort by + // display name. + $modules = array(); + foreach (module_implements('permission') as $module) { + $modules[$module] = $module_info[$module]['name']; + } + asort($modules); + + $this->value_options = array(); + foreach ($modules as $module => $display_name) { + if ($permissions = module_invoke($module, 'permission')) { + foreach ($permissions as $perm => $perm_item) { + // @todo: group by module but views_handler_filter_many_to_one does not support this. + $this->value_options[$perm] = check_plain(strip_tags($perm_item['title'])); + } + } + } + } +} diff --git a/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc b/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc index 631133e2d..d79226c67 100644 --- a/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc +++ b/sites/all/modules/views/modules/user/views_plugin_argument_default_current_user.inc @@ -15,4 +15,3 @@ class views_plugin_argument_default_current_user extends views_plugin_argument_d return $user->uid; } } - diff --git a/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc b/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc index a2e1b4a76..d14e34580 100644 --- a/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc +++ b/sites/all/modules/views/modules/user/views_plugin_argument_default_user.inc @@ -67,11 +67,10 @@ class views_plugin_argument_default_user extends views_plugin_argument_default { } // If the current page is a view that takes uid as an argument, return the uid. - $views_page = views_get_page_view(); + $view = views_get_page_view(); - if ($views_page && isset($views_page->view->argument['uid'])) { - return $views_page->view->argument['uid']->argument; + if ($view && isset($view->argument['uid'])) { + return $view->argument['uid']->argument; } } } - diff --git a/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc b/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc index 28eaf40e7..4dfa4bc8c 100644 --- a/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc +++ b/sites/all/modules/views/modules/user/views_plugin_argument_validate_user.inc @@ -43,7 +43,6 @@ class views_plugin_argument_validate_user extends views_plugin_argument_validate '#options' => array_map('check_plain', user_roles(TRUE)), '#default_value' => $this->options['roles'], '#description' => t('If no roles are selected, users from any role will be allowed.'), - '#process' => array('form_process_checkboxes', 'ctools_dependent_process'), '#dependency' => array( 'edit-options-validate-options-user-restrict-roles' => array(1), ), @@ -81,7 +80,8 @@ class views_plugin_argument_validate_user extends views_plugin_argument_validate } else { if ($type == 'name' || $type == 'either') { - if ($argument == $GLOBALS['user']->name) { + $name = !empty($GLOBALS['user']->name) ? $GLOBALS['user']->name : variable_get('anonymous', t('Anonymous')); + if ($argument == $name) { $account = clone $GLOBALS['user']; } $where = "name = :argument"; @@ -117,7 +117,19 @@ class views_plugin_argument_validate_user extends views_plugin_argument_validate } $this->argument->argument = $account->uid; - $this->argument->validated_title = check_plain($account->name); + $this->argument->validated_title = isset($account->name) ? check_plain($account->name) : check_plain(variable_get('anonymous', t('Anonymous'))); return TRUE; } + + function process_summary_arguments(&$args) { + // If the validation says the input is an username, we should reverse the + // argument so it works for example for generation summary urls. + $uids_arg_keys = array_flip($args); + if ($this->options['type'] == 'name') { + $users = user_load_multiple($args); + foreach ($users as $uid => $account) { + $args[$uids_arg_keys[$uid]] = $account->name; + } + } + } } diff --git a/sites/all/modules/views/modules/views.views.inc b/sites/all/modules/views/modules/views.views.inc index bf90a4ef1..527607e03 100644 --- a/sites/all/modules/views/modules/views.views.inc +++ b/sites/all/modules/views/modules/views.views.inc @@ -16,6 +16,7 @@ function views_views_data() { $data['views']['table']['group'] = t('Global'); $data['views']['table']['join'] = array( + // #global is a special flag which let's a table appear all the time. '#global' => array(), ); @@ -73,6 +74,7 @@ function views_views_data() { 'help' => t('Evaluates a mathematical expression and displays it.'), 'field' => array( 'handler' => 'views_handler_field_math', + 'float' => TRUE, ), ); } diff --git a/sites/all/modules/views/plugins/export_ui/views_ui.class.php b/sites/all/modules/views/plugins/export_ui/views_ui.class.php index 9f5642e9f..39e182ce7 100644 --- a/sites/all/modules/views/plugins/export_ui/views_ui.class.php +++ b/sites/all/modules/views/plugins/export_ui/views_ui.class.php @@ -48,6 +48,9 @@ class views_ui extends ctools_export_ui { // We are using our own 'edit' still, rather than having edit on this // object (maybe in the future) so unset the edit callbacks: + // Store this so we can put them back as sometimes they're needed + // again laster: + $stored_items = $this->plugin['menu']['items']; // We leave these to make sure the operations still exist in the plugin so // that the path finder. unset($this->plugin['menu']['items']['edit']); @@ -56,6 +59,12 @@ class views_ui extends ctools_export_ui { unset($this->plugin['menu']['items']['edit callback']); parent::hook_menu($items); + + $this->plugin['menu']['items'] = $stored_items; + } + + function load_item($item_name) { + return views_ui_cache_load($item_name); } function list_form(&$form, &$form_state) { @@ -119,10 +128,13 @@ class views_ui extends ctools_export_ui { ); $tags = array(); - if (isset($form_state['views'])) { - foreach ($form_state['views'] as $name => $view) { + if (isset($form_state['object']->items)) { + foreach ($form_state['object']->items as $name => $view) { if (!empty($view->tag)) { - $tags[$view->tag] = $view->tag; + $view_tags = drupal_explode_tags($view->tag); + foreach ($view_tags as $tag) { + $tags[$tag] = $tag; + } } } } @@ -153,6 +165,17 @@ class views_ui extends ctools_export_ui { } function list_filter($form_state, $view) { + // Don't filter by tags if all is set up. + if ($form_state['values']['tag'] != 'all') { + // If none is selected check whether the view has a tag. + if ($form_state['values']['tag'] == 'none') { + return !empty($view->tag); + } + else { + // Check whether the tag can be found in the views tag. + return strpos($view->tag, $form_state['values']['tag']) === FALSE; + } + } if ($form_state['values']['base'] != 'all' && $form_state['values']['base'] != $view->base_table) { return TRUE; } @@ -339,6 +362,27 @@ class views_ui extends ctools_export_ui { drupal_set_title(t('Create view from template @template', array('@template' => $template->get_human_name()))); return $output; } + + function set_item_state($state, $js, $input, $item) { + ctools_export_set_object_status($item, $state); + menu_rebuild(); + + if (!$js) { + drupal_goto(ctools_export_ui_plugin_base_path($this->plugin)); + } + else { + return $this->list_page($js, $input); + } + } + + function list_page($js, $input) { + // wrap output in a div for CSS + $output = parent::list_page($js, $input); + if (is_string($output)) { + $output = '<div id="views-ui-list-page">' . $output . '</div>'; + return $output; + } + } } /** @@ -348,12 +392,19 @@ class views_ui extends ctools_export_ui { */ function views_ui_clone_form($form, &$form_state) { $counter = 1; + + if (!isset($form_state['item'])) { + $view = views_get_view($form_state['original name']); + } + else { + $view = $form_state['item']; + } do { if (empty($form_state['item']->is_template)) { - $name = format_plural($counter, 'Clone of', 'Clone @count of') . ' ' . $form_state['original name']; + $name = format_plural($counter, 'Clone of', 'Clone @count of') . ' ' . $view->get_human_name(); } else { - $name = $form_state['original name']; + $name = $view->get_human_name(); if ($counter > 1) { $name .= ' ' . $counter; } @@ -366,13 +417,16 @@ function views_ui_clone_form($form, &$form_state) { '#type' => 'textfield', '#title' => t('View name'), '#default_value' => $name, + '#size' => 32, + '#maxlength' => 255, ); $form['name'] = array( '#title' => t('View name'), '#type' => 'machine_name', '#required' => TRUE, - '#maxlength' => 255, + '#maxlength' => 32, + '#size' => 32, '#machine_name' => array( 'exists' => 'ctools_export_ui_edit_name_exists', 'source' => array('human_name'), @@ -386,5 +440,3 @@ function views_ui_clone_form($form, &$form_state) { return $form; } - - diff --git a/sites/all/modules/views/plugins/export_ui/views_ui.inc b/sites/all/modules/views/plugins/export_ui/views_ui.inc index fc79f3dd5..042fc79cd 100644 --- a/sites/all/modules/views/plugins/export_ui/views_ui.inc +++ b/sites/all/modules/views/plugins/export_ui/views_ui.inc @@ -35,4 +35,3 @@ $plugin = array( ), ), ); - diff --git a/sites/all/modules/views/plugins/views_plugin_access_perm.inc b/sites/all/modules/views/plugins/views_plugin_access_perm.inc index 3310bb2a0..c1b473b11 100644 --- a/sites/all/modules/views/plugins/views_plugin_access_perm.inc +++ b/sites/all/modules/views/plugins/views_plugin_access_perm.inc @@ -13,6 +13,11 @@ class views_plugin_access_perm extends views_plugin_access { } function summary_title() { + $permissions = module_invoke_all('permission'); + if (isset($permissions[$this->options['perm']])) { + return $permissions[$this->options['perm']]['title']; + } + return t($this->options['perm']); } @@ -25,14 +30,20 @@ class views_plugin_access_perm extends views_plugin_access { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $perms = array(); + $module_info = system_get_info('module'); + // Get list of permissions foreach (module_implements('permission') as $module) { $permissions = module_invoke($module, 'permission'); foreach ($permissions as $name => $perm) { - $perms[$module][$name] = $perm['title']; + $perms[$module_info[$module]['name']][$name] = strip_tags($perm['title']); } } + + asort($perms); + $form['perm'] = array( '#type' => 'select', '#options' => $perms, diff --git a/sites/all/modules/views/plugins/views_plugin_access_role.inc b/sites/all/modules/views/plugins/views_plugin_access_role.inc index b273971e7..2ed1affef 100644 --- a/sites/all/modules/views/plugins/views_plugin_access_role.inc +++ b/sites/all/modules/views/plugins/views_plugin_access_role.inc @@ -36,6 +36,7 @@ class views_plugin_access_role extends views_plugin_access { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['role'] = array( '#type' => 'checkboxes', '#title' => t('Role'), diff --git a/sites/all/modules/views/plugins/views_plugin_argument_default.inc b/sites/all/modules/views/plugins/views_plugin_argument_default.inc index bc284df66..7132afa38 100644 --- a/sites/all/modules/views/plugins/views_plugin_argument_default.inc +++ b/sites/all/modules/views/plugins/views_plugin_argument_default.inc @@ -56,7 +56,7 @@ class views_plugin_argument_default extends views_plugin { /** * Provide the default form form for submitting options */ - function options_submit(&$form, &$form_state) { } + function options_submit(&$form, &$form_state, &$options = array()) { } /** * Determine if the administrator has the privileges to use this @@ -93,4 +93,3 @@ class views_plugin_argument_default extends views_plugin { /** * @} */ - diff --git a/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc b/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc index 86afd9e57..fba63ecf6 100644 --- a/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc +++ b/sites/all/modules/views/plugins/views_plugin_argument_default_fixed.inc @@ -16,6 +16,7 @@ class views_plugin_argument_default_fixed extends views_plugin_argument_default } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['argument'] = array( '#type' => 'textfield', '#title' => t('Fixed value'), @@ -39,4 +40,4 @@ class views_plugin_argument_default_fixed extends views_plugin_argument_default /** * @} - */ \ No newline at end of file + */ diff --git a/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc b/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc index 699dae73e..53240da1b 100644 --- a/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc +++ b/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc @@ -16,11 +16,12 @@ class views_plugin_argument_default_php extends views_plugin_argument_default { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['code'] = array( '#type' => 'textarea', '#title' => t('PHP contextual filter code'), '#default_value' => $this->options['code'], - '#description' => t('Enter PHP code that returns a value to use for this filter. Do not use <?php ?>. You must return only a single value for just this filter.'), + '#description' => t('Enter PHP code that returns a value to use for this filter. Do not use <?php ?>. You must return only a single value for just this filter. Some variables are available: the view object will be "$view". The argument handler will be "$argument", for example you may change the title used for substitutions for this argument by setting "argument->validated_title"".'), ); // Only do this if using one simple standard form gadget diff --git a/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc b/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc new file mode 100644 index 000000000..dcaf22f7b --- /dev/null +++ b/sites/all/modules/views/plugins/views_plugin_argument_default_raw.inc @@ -0,0 +1,36 @@ +<?php +/** + * @file + * Contains the raw value argument default plugin. + */ + +/** + * Default argument plugin to use the raw value from the URL. + */ +class views_plugin_argument_default_raw extends views_plugin_argument_default { + function option_definition() { + $options = parent::option_definition(); + $options['index'] = array('default' => ''); + + return $options; + } + + function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + // Using range(1, 10) will create an array keyed 0-9, which allows arg() to + // properly function since it is also zero-based. + $form['index'] = array( + '#type' => 'select', + '#title' => t('Path component'), + '#default_value' => $this->options['index'], + '#options' => range(1, 10), + '#description' => t('The numbering starts from 1, e.g. on the page admin/structure/types, the 3rd path component is "types".'), + ); + } + + function get_argument() { + if ($arg = arg($this->options['index'])) { + return $arg; + } + } +} diff --git a/sites/all/modules/views/plugins/views_plugin_argument_validate.inc b/sites/all/modules/views/plugins/views_plugin_argument_validate.inc index fd680949f..19d84cdf4 100644 --- a/sites/all/modules/views/plugins/views_plugin_argument_validate.inc +++ b/sites/all/modules/views/plugins/views_plugin_argument_validate.inc @@ -84,9 +84,18 @@ class views_plugin_argument_validate extends views_plugin { } function validate_argument($arg) { return TRUE; } + + /** + * Process the summary arguments for displaying. + * + * Some plugins alter the argument so it uses something else interal. + * For example the user validation set's the argument to the uid, + * for a faster query. But there are use cases where you want to use + * the old value again, for example the summary. + */ + function process_summary_arguments(&$args) { } } /** * @} */ - diff --git a/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc b/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc index 323909969..2cfecedd9 100644 --- a/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc +++ b/sites/all/modules/views/plugins/views_plugin_argument_validate_numeric.inc @@ -14,4 +14,3 @@ class views_plugin_argument_validate_numeric extends views_plugin_argument_valid return is_numeric($argument); } } - diff --git a/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc b/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc index a4c3ae860..00cc9f343 100644 --- a/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc +++ b/sites/all/modules/views/plugins/views_plugin_argument_validate_php.inc @@ -18,11 +18,12 @@ class views_plugin_argument_validate_php extends views_plugin_argument_validate } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['code'] = array( '#type' => 'textarea', '#title' => t('PHP validate code'), '#default_value' => $this->options['code'], - '#description' => t('Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be "$argument" and the view will be "$view". You may change the argument by setting "$handler->argument". You may change the title used for substitutions for this argument by setting "$argument->validated_title".'), + '#description' => t('Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be "$argument" and the view will be "$view". You may change the argument by setting "$handler->argument". You may change the title used for substitutions for this argument by setting "$handler->validated_title".'), ); $this->check_access($form, 'code'); @@ -53,4 +54,3 @@ class views_plugin_argument_validate_php extends views_plugin_argument_validate return $result; } } - diff --git a/sites/all/modules/views/plugins/views_plugin_cache.inc b/sites/all/modules/views/plugins/views_plugin_cache.inc index 1b17c07c8..dfd16e88a 100644 --- a/sites/all/modules/views/plugins/views_plugin_cache.inc +++ b/sites/all/modules/views/plugins/views_plugin_cache.inc @@ -52,7 +52,7 @@ class views_plugin_cache extends views_plugin { * The cache type, either 'query', 'result' or 'output'. */ function cache_expire($type) { } - + /** * Determine expiration time in the cache table of the cache type * or CACHE_PERMANENT if item shouldn't be removed automatically from cache. @@ -172,13 +172,8 @@ class views_plugin_cache extends views_plugin { */ function cache_start() { $this->storage['head'] = drupal_add_html_head(); - $this->storage['css'] = drupal_add_css(); - $js = drupal_add_js(); - foreach ($js as $key => $data) { - if ($data['scope'] == 'header' || $data['scope'] == 'footer') { - $this->storage['js'][$data['scope']][$key] = $data; - } - } + $this->storage['css'] = drupal_add_css(); + $this->storage['js'] = drupal_add_js(); } /** @@ -204,21 +199,22 @@ class views_plugin_cache extends views_plugin { } } - $js = array(); - // A little less simple for js - foreach (array('header', 'footer') as $scope) { - $js[$scope] = drupal_add_js(NULL, NULL, $scope); - } + // Get javascript after views renders + $js = drupal_add_js(); + // Get javascript before views renders. $start = isset($this->storage['js']) ? $this->storage['js'] : array(); $this->storage['js'] = array(); -return; // @TODO: fixme + // If there are any differences between the old and the new javascript then + // store them to be added later. + if ($diff = array_diff_assoc($js, $start)) { + $this->storage['js'] = $diff; + } - foreach ($js as $key => $data) { - if (!isset($start[$key][$data['scope']][$key]) && ($data['scope'] == 'header' || $data['scope'] == 'footer')) { - $this->storage['js'][$data['scope']][$key] = $data; - } + // Special case the settings key and get the difference of the data. + if ($settings_diff = array_diff_assoc($js['settings']['data'], $start['settings']['data'])) { + $this->storage['js']['settings'] = $settings_diff; } } @@ -231,12 +227,19 @@ return; // @TODO: fixme } if (!empty($this->storage['css'])) { foreach ($this->storage['css'] as $args) { - call_user_func_array('drupal_add_css', $args); + drupal_add_css($args['data'], $args); } } if (!empty($this->storage['js'])) { - foreach ($this->storage['js'] as $args) { - drupal_add_js($data); + foreach ($this->storage['js'] as $key => $args) { + if ($key != 'settings') { + drupal_add_js($args['data'], $args); + } + else { + foreach ($args as $setting) { + drupal_add_js($setting, 'setting'); + } + } } } } @@ -245,9 +248,9 @@ return; // @TODO: fixme global $user; if (!isset($this->_results_key)) { - + $build_info = $this->view->build_info; - + foreach (array('query', 'count_query') as $index) { $query = clone $build_info[$index]; $query->preExecute(); diff --git a/sites/all/modules/views/plugins/views_plugin_cache_time.inc b/sites/all/modules/views/plugins/views_plugin_cache_time.inc index c758b096b..ac84b1c34 100644 --- a/sites/all/modules/views/plugins/views_plugin_cache_time.inc +++ b/sites/all/modules/views/plugins/views_plugin_cache_time.inc @@ -13,6 +13,7 @@ class views_plugin_cache_time extends views_plugin_cache { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $options = array(60, 300, 1800, 3600, 21600, 518400); $options = drupal_map_assoc($options, 'format_interval'); $options = array(-1 => t('Never cache')) + $options; diff --git a/sites/all/modules/views/plugins/views_plugin_display.inc b/sites/all/modules/views/plugins/views_plugin_display.inc index 210dbcb70..2fdd789f5 100644 --- a/sites/all/modules/views/plugins/views_plugin_display.inc +++ b/sites/all/modules/views/plugins/views_plugin_display.inc @@ -33,6 +33,11 @@ class views_plugin_display extends views_plugin { var $handlers = array(); + /** + * Stores all available display extenders. + */ + var $extender = array(); + function init(&$view, &$display, $options = NULL) { $this->view = &$view; $this->display = &$display; @@ -46,34 +51,68 @@ class views_plugin_display extends views_plugin { unset($options['defaults']); } - $this->unpack_options($this->options, $options); + // Cache for unpack_options, but not if we are in the ui. + static $unpack_options = array(); + if (empty($view->editing)) { + $cid = 'unpack_options:' . md5(serialize(array($this->options, $options))); + if (empty($unpack_options[$cid])) { + $cache = views_cache_get($cid, TRUE); + if (!empty($cache->data)) { + $this->options = $cache->data; + } + else { + $this->unpack_options($this->options, $options); + views_cache_set($cid, $this->options, TRUE); + } + $unpack_options[$cid] = $this->options; + } + else { + $this->options = $unpack_options[$cid]; + } + } + else { + $this->unpack_options($this->options, $options); + } // Translate changed settings: - // Check if any of the previous values now managed by - // pluggable pagers have been changed. - // If yes, perform the conversion $items_per_page = $this->get_option('items_per_page'); $offset = $this->get_option('offset'); - $type = $this->get_option('use_pager'); - if ((!empty($items_per_page) && $items_per_page != 10) || !empty($offset) || !empty($type)) { - if (!$type) { - $type = $items_per_page ? 'some' : 'none'; - } - - if ($type == 1) { + $use_pager = $this->get_option('use_pager'); + $pager = $this->get_option('pager'); + // Check if the pager options were already converted. + // The pager settings of a Views 2.x view specifying 10 items with an + // offset of 0 and no pager is the same as of a Views 3.x view with + // default settings. In this case, the only way to determine which case we + // are dealing with is checking the API version but that's only available + // for exported Views as it's not stored in the database. + // If you would like to change this code, really take care that you thought + // of every possibility. + // @TODO: Provide a way to convert the database views as well. + if (((!empty($items_per_page) && $items_per_page != 10) || !empty($offset) || !empty($use_pager)) + || (!empty($view->api_version) && $view->api_version == 2)) { + // Find out the right pager type. + // If the view "use pager" it's a normal/full pager. + if ($use_pager) { $type = 'full'; } + // If it does not use pager, but 0 items per page it should not page + // else it should display just a certain amount of items. + else { + $type = $items_per_page ? 'some' : 'none'; + } + // Setup the pager options. $pager = array( 'type' => $type, 'options' => array( - 'offset' => $offset + 'offset' => intval($offset) ), ); if ($items_per_page) { $pager['options']['items_per_page'] = $items_per_page; } + // Setup the pager element. if ($id = $this->get_option('pager_element')) { $pager['options']['id'] = $id; } @@ -86,6 +125,7 @@ class views_plugin_display extends views_plugin { $this->set_option('pager', $pager); } + // Plugable headers, footer and empty texts are // not compatible with previous version of views // This code converts old values into a configured handler for each area @@ -130,6 +170,37 @@ class views_plugin_display extends views_plugin { // Clear the values $this->set_option('distinct', NULL); } + + // Convert field language settings. + $query_options = $this->get_option('query'); + if (isset($query_options['options']['field_language'])) { + $this->set_option('field_language', $query_options['options']['field_language']); + unset($query_options['options']['field_language']); + } + if (isset($query_options['options']['field_language_add_to_query'])) { + $this->set_option('field_language_add_to_query', $query_options['options']['field_language_add_to_query']); + unset($query_options['options']['field_language_add_to_query']); + } + $this->set_option('query', $query_options); + } + + function construct() { + // Load extenders as soon as possible + $this->extender = array(); + $extenders = views_get_enabled_display_extenders(); + // If you update to the dev version the registry might not be loaded yet. + if (!empty($extenders) && class_exists('views_plugin_display_extender')) { + foreach ($extenders as $extender) { + $data = views_fetch_plugin_data('display_extender', $extender); + if (isset($data['handler']) && class_exists($data['handler'])) { + $this->extender[$extender] = new $data['handler']($this->view, $this); + } + else { + vpr('Invalid display extender @extender', array('@handler' => $extender)); + } + } + } + parent::construct(); } function destroy() { @@ -146,6 +217,10 @@ class views_plugin_display extends views_plugin { if (isset($this->default_display)) { unset($this->default_display); } + + foreach ($this->extender as $extender) { + $extender->destroy(); + } } /** @@ -224,7 +299,7 @@ class views_plugin_display extends views_plugin { } /** - * Does the display have a more link enabled? + * Does the display have groupby enabled? */ function use_group_by() { return $this->get_option('group_by'); @@ -278,21 +353,18 @@ class views_plugin_display extends views_plugin { */ function defaultable_sections($section = NULL) { $sections = array( - 'access' => array('access'), - 'cache' => array('cache'), + 'access' => array('access', 'access_options'), + 'access_options' => array('access', 'access_options'), + 'cache' => array('cache', 'cache_options'), + 'cache_options' => array('cache', 'cache_options'), 'title' => array('title'), - 'enabled' => array('enabled'), 'css_class' => array('css_class'), 'use_ajax' => array('use_ajax'), 'hide_attachment_summary' => array('hide_attachment_summary'), 'group_by' => array('group_by'), 'query' => array('query'), - 'items_per_page' => array('items_per_page', 'offset', 'use_pager', 'pager_element'), - 'pager' => array('pager'), 'use_more' => array('use_more', 'use_more_always', 'use_more_text'), - 'link_display' => array('link_display'), - 'exposed_block' => array('exposed_block'), - 'exposed_form' => array('exposed_form'), + 'link_display' => array('link_display', 'link_url'), // Force these to cascade properly. 'style_plugin' => array('style_plugin', 'style_options', 'row_plugin', 'row_options'), @@ -300,6 +372,12 @@ class views_plugin_display extends views_plugin { 'row_plugin' => array('style_plugin', 'style_options', 'row_plugin', 'row_options'), 'row_options' => array('style_plugin', 'style_options', 'row_plugin', 'row_options'), + 'pager' => array('pager', 'pager_options'), + 'pager_options' => array('pager', 'pager_options'), + + 'exposed_form' => array('exposed_form', 'exposed_form_options'), + 'exposed_form_options' => array('exposed_form', 'exposed_form_options'), + // These guys are special 'header' => array('header'), 'footer' => array('footer'), @@ -317,6 +395,10 @@ class views_plugin_display extends views_plugin { unset($sections['items_per_page']); } + foreach ($this->extender as $extender) { + $extender->defaultable_sections($sections, $section); + } + if ($section) { if (!empty($sections[$section])) { return $sections[$section]; @@ -335,24 +417,21 @@ class views_plugin_display extends views_plugin { 'cache' => TRUE, 'query' => TRUE, 'title' => TRUE, - 'display_comment' => FALSE, - 'enabled' => TRUE, 'css_class' => TRUE, 'display_description' => FALSE, 'use_ajax' => TRUE, 'hide_attachment_summary' => TRUE, - 'items_per_page' => TRUE, - 'use_pager' => TRUE, - 'offset' => TRUE, 'pager' => TRUE, + 'pager_options' => TRUE, 'use_more' => TRUE, 'use_more_always' => TRUE, 'use_more_text' => TRUE, - 'exposed_block' => TRUE, 'exposed_form' => TRUE, + 'exposed_form_options' => TRUE, 'link_display' => TRUE, + 'link_url' => '', 'group_by' => TRUE, 'style_plugin' => TRUE, @@ -402,6 +481,10 @@ class views_plugin_display extends views_plugin { 'default' => FALSE, 'bool' => TRUE, ), + // This is legacy code: + // Items_per/offset/use_pager is moved to the pager plugin + // but the automatic update path needs this items defined, so don't remove it. + // @see views_plugin_display::init() 'items_per_page' => array( 'default' => 10, ), @@ -418,7 +501,7 @@ class views_plugin_display extends views_plugin { ), 'use_more_always' => array( 'default' => FALSE, - 'bool' => TRUE, + 'bool' => FALSE, ), 'use_more_text' => array( 'default' => 'more', @@ -427,10 +510,19 @@ class views_plugin_display extends views_plugin { 'link_display' => array( 'default' => '', ), + 'link_url' => array( + 'default' => '', + ), 'group_by' => array( 'default' => FALSE, 'bool' => TRUE, ), + 'field_language' => array( + 'default' => '***CURRENT_LANGUAGE***', + ), + 'field_language_add_to_query' => array( + 'default' => 1, + ), // These types are all plugins that can have individual settings // and therefore need special handling. @@ -558,6 +650,11 @@ class views_plugin_display extends views_plugin { if ($this->is_default_display()) { unset($options['defaults']); } + + foreach ($this->extender as $extender) { + $extender->option_definition($options); + } + return $options; } @@ -581,6 +678,16 @@ class views_plugin_display extends views_plugin { */ function uses_link_display() { return !$this->has_path(); } + /** + * Check to see if the display can put the exposed formin a block. + * + * By default, displays that do not have a path cannot disconnect + * the exposed form and put it in a block, because the form has no + * place to go and Views really wants the forms to go to a specific + * page. + */ + function uses_exposed_form_in_block() { return $this->has_path(); } + /** * Check to see which display to use when creating links within * a view using this display. @@ -706,7 +813,7 @@ class views_plugin_display extends views_plugin { if (!isset($this->base_field)) { $views_data = views_fetch_data($this->view->base_table); - $this->view->base_field = $views_data['table']['base']['field']; + $this->view->base_field = !empty($views_data['table']['base']['field']) ? $views_data['table']['base']['field'] : ''; } $plugin->init($this->view->base_table, $this->view->base_field, $options); } @@ -868,6 +975,33 @@ class views_plugin_display extends views_plugin { return l($text, 'admin/structure/views/nojs/display/' . $this->view->name . '/' . $this->display->id . '/' . $section, array('attributes' => array('class' => 'views-ajax-link ' . $class, 'title' => $title, 'id' => drupal_html_id('views-' . $this->display->id . '-' . $section)), 'html' => TRUE)); } + /** + * Returns to tokens for arguments. + * + * This function is similar to views_handler_field::get_render_tokens() + * but without fields tokens. + */ + function get_arguments_tokens() { + $tokens = array(); + if (!empty($this->view->build_info['substitutions'])) { + $tokens = $this->view->build_info['substitutions']; + } + $count = 0; + foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) { + $token = '%' . ++$count; + if (!isset($tokens[$token])) { + $tokens[$token] = ''; + } + + // Use strip tags as there should never be HTML in the path. + // However, we need to preserve special characters like " that + // were removed by check_plain(). + $tokens['!' . $count] = isset($this->view->args[$count - 1]) ? strip_tags(decode_entities($this->view->args[$count - 1])) : ''; + } + + return $tokens; + } + /** * Provide the default summary for options in the views UI. * @@ -947,13 +1081,6 @@ class views_plugin_display extends views_plugin { 'desc' => t('Change the title that this display will use.'), ); - $options['enabled'] = array( - 'category' => 'other', - 'title' => t('Display status'), - 'value' => $this->get_option('enabled') ? t('Enabled') : t('Disabled'), - 'desc' => t('Define if this display is or is not enabled.'), - ); - $style_plugin = views_fetch_plugin_data('style', $this->get_option('style_plugin')); $style_plugin_instance = $this->get_plugin('style'); $style_summary = empty($style_plugin['title']) ? t('Missing style plugin') : $style_plugin_instance->summary_title(); @@ -1047,7 +1174,7 @@ class views_plugin_display extends views_plugin { if ($this->view->query->get_aggregation_info()) { $options['group_by'] = array( 'category' => 'other', - 'title' => t('Use grouping'), + 'title' => t('Use aggregation'), 'value' => $this->get_option('group_by') ? t('Yes') : t('No'), 'desc' => t('Allow grouping and aggregation (calculation) of fields.'), ); @@ -1060,6 +1187,22 @@ class views_plugin_display extends views_plugin { 'desc' => t('Allow to set some advanced settings for the query plugin'), ); + $languages = array( + '***CURRENT_LANGUAGE***' => t("Current user's language"), + '***DEFAULT_LANGUAGE***' => t("Default site language"), + LANGUAGE_NONE => t('Language neutral'), + ); + if (module_exists('locale')) { + $languages = array_merge($languages, locale_language_list()); + } + $field_language = array(); + $options['field_language'] = array( + 'category' => 'other', + 'title' => t('Field Language'), + 'value' => $languages[$this->get_option('field_language')], + 'desc' => t('All fields which support translations will be displayed in the selected language.'), + ); + $access_plugin = $this->get_plugin('access'); if (!$access_plugin) { // default to the no access control plugin. @@ -1105,35 +1248,25 @@ class views_plugin_display extends views_plugin { } if ($this->uses_link_display()) { - // Only show the 'link display' if there is more than one option. - $count = 0; - foreach ($this->view->display as $display_id => $display) { - if (is_object($display->handler) && $display->handler->has_path()) { - $count++; - } - if ($count > 1) { - break; - } - } - - if ($count > 1) { - $display_id = $this->get_link_display(); - $link_display = empty($this->view->display[$display_id]) ? t('None') : check_plain($this->view->display[$display_id]->display_title); - $options['link_display'] = array( - 'category' => 'other', - 'title' => t('Link display'), - 'value' => $link_display, - 'desc' => t('Specify which display this display will link to.'), - ); - } + $display_id = $this->get_link_display(); + $link_display = empty($this->view->display[$display_id]) ? t('None') : check_plain($this->view->display[$display_id]->display_title); + $link_display = $this->get_option('link_display') == 'custom_url' ? t('Custom URL') : $link_display; + $options['link_display'] = array( + 'category' => 'other', + 'title' => t('Link display'), + 'value' => $link_display, + 'desc' => t('Specify which display or custom url this display will link to.'), + ); } - $options['exposed_block'] = array( - 'category' => 'exposed', - 'title' => t('Exposed form in block'), - 'value' => $this->get_option('exposed_block') ? t('Yes') : t('No'), - 'desc' => t('Allow the exposed form to appear in a block instead of the view.'), - ); + if ($this->uses_exposed_form_in_block()) { + $options['exposed_block'] = array( + 'category' => 'exposed', + 'title' => t('Exposed form in block'), + 'value' => $this->get_option('exposed_block') ? t('Yes') : t('No'), + 'desc' => t('Allow the exposed form to appear in a block instead of the view.'), + ); + } $exposed_form_plugin = $this->get_plugin('exposed_form'); if (!$exposed_form_plugin) { @@ -1173,12 +1306,17 @@ class views_plugin_display extends views_plugin { 'value' => t('Information'), 'desc' => t('Get information on how to theme this display'), ); + + foreach ($this->extender as $extender) { + $extender->options_summary($categories, $options); + } } /** * Provide the default form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); if ($this->defaultable_sections($form_state['section'])) { views_ui_standard_display_dropdown($form, $form_state, $form_state['section']); } @@ -1237,15 +1375,6 @@ class views_plugin_display extends views_plugin { '#default_value' => $this->get_option('title'), ); break; - case 'enabled': - $form['#title'] .= t('Status of this display'); - $form['enabled'] = array( - '#type' => 'checkbox', - '#title' => t('Enable display'), - '#description' => t('If unchecked, this display will not be available in the site.'), - '#default_value' => $this->get_option('enabled'), - ); - break; case 'css_class': $form['#title'] .= t('CSS class'); $form['css_class'] = array( @@ -1278,27 +1407,33 @@ class views_plugin_display extends views_plugin { $form['use_more'] = array( '#type' => 'checkbox', '#title' => t('Create more link'), - '#description' => t("This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above."), + '#description' => t("This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above. You can override the url at the link display setting."), '#default_value' => $this->get_option('use_more'), ); $form['use_more_always'] = array( '#type' => 'checkbox', - '#title' => t('Always display more link'), + '#title' => t('Do not display more link unless there is more content'), '#description' => t("This will display the more link even if there are no more items to display."), - '#default_value' => $this->get_option('use_more_always'), + '#default_value' => !$this->get_option('use_more_always'), + '#dependency' => array( + 'edit-use-more' => array(TRUE), + ), ); $form['use_more_text'] = array( '#type' => 'textfield', '#title' => t('More link text'), '#description' => t("The text to display for the more link."), '#default_value' => $this->get_option('use_more_text'), + '#dependency' => array( + 'edit-use-more' => array(TRUE), + ), ); break; case 'group_by': $form['#title'] .= t('Allow grouping and aggregation (calculation) of fields.'); $form['group_by'] = array( '#type' => 'checkbox', - '#title' => t('Group by'), + '#title' => t('Aggregate'), '#description' => t('If enabled, some fields may become unavailable. All fields that are selected for grouping will be collapsed to one record per distinct value. Other fields which are selected for aggregation will have the function run on them. For example, you can group nodes on title and count the number of nids in order to get a list of duplicate titles.'), '#default_value' => $this->get_option('group_by'), ); @@ -1314,7 +1449,7 @@ class views_plugin_display extends views_plugin { $access = $this->get_option('access'); $form['access']['type'] = array( '#type' => 'radios', - '#options' => views_fetch_plugin_names('access'), + '#options' => views_fetch_plugin_names('access', NULL, array($this->view->base_table)), '#default_value' => $access['type'], ); @@ -1357,7 +1492,7 @@ class views_plugin_display extends views_plugin { $cache = $this->get_option('cache'); $form['cache']['type'] = array( '#type' => 'radios', - '#options' => views_fetch_plugin_names('cache'), + '#options' => views_fetch_plugin_names('cache', NULL, array($this->view->base_table)), '#default_value' => $cache['type'], ); @@ -1417,6 +1552,48 @@ class views_plugin_display extends views_plugin { $this->view->query->options_form($form['query']['options'], $form_state); } break; + case 'field_language': + $form['#title'] .= t('Field Language'); + + $entities = entity_get_info(); + $entity_tables = array(); + $has_translation_handlers = FALSE; + foreach ($entities as $type => $entity_info) { + $entity_tables[] = $entity_info['base table']; + + if (!empty($entity_info['translation'])) { + $has_translation_handlers = TRUE; + } + } + + // Doesn't make sense to show a field setting here if we aren't querying + // an entity base table. Also, we make sure that there's at least one + // entity type with a translation handler attached. + if (in_array($this->view->base_table, $entity_tables) && $has_translation_handlers) { + $languages = array( + '***CURRENT_LANGUAGE***' => t("Current user's language"), + '***DEFAULT_LANGUAGE***' => t("Default site language"), + LANGUAGE_NONE => t('Language neutral'), + ); + $languages = array_merge($languages, views_language_list()); + + $form['field_language'] = array( + '#type' => 'select', + '#title' => t('Field Language'), + '#description' => t('All fields which support translations will be displayed in the selected language.'), + '#options' => $languages, + '#default_value' => $this->get_option('field_language'), + ); + $form['field_language_add_to_query'] = array( + '#type' => 'checkbox', + '#title' => t('When needed, add the field language condition to the query'), + '#default_value' => $this->get_option('field_language_add_to_query'), + ); + } + else { + $form['field_language']['#markup'] = t("You don't have translatable entity types."); + } + break; case 'style_plugin': $form['#title'] .= t('How should this view be styled'); $form['#help_topic'] = 'style'; @@ -1486,11 +1663,48 @@ class views_plugin_display extends views_plugin { $options[$display_id] = $display->display_title; } } - $form['link_display'] = array( - '#type' => 'radios', - '#options' => $options, - '#description' => t("Which display to use to get this display's path for things like summary links, rss feed links, more links, etc."), - '#default_value' => $this->get_link_display(), + $options['custom_url'] = t('Custom URL'); + if (count($options)) { + $form['link_display'] = array( + '#type' => 'radios', + '#options' => $options, + '#description' => t("Which display to use to get this display's path for things like summary links, rss feed links, more links, etc."), + '#default_value' => $this->get_option('link_display'), + ); + } + + $options = array(); + $count = 0; // This lets us prepare the key as we want it printed. + foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) { + $options[t('Arguments')]['%' . ++$count] = t('@argument title', array('@argument' => $handler->ui_name())); + $options[t('Arguments')]['!' . $count] = t('@argument input', array('@argument' => $handler->ui_name())); + } + + // Default text. + // We have some options, so make a list. + if (!empty($options)) { + $output = t('<p>The following tokens are available for this link.</p>'); + foreach (array_keys($options) as $type) { + if (!empty($options[$type])) { + $items = array(); + foreach ($options[$type] as $key => $value) { + $items[] = $key . ' == ' . $value; + } + $output .= theme('item_list', + array( + 'items' => $items, + 'type' => $type + )); + } + } + } + + $form['link_url'] = array( + '#type' => 'textfield', + '#title' => t('Custom URL'), + '#default_value' => $this->get_option('link_url'), + '#description' => t('A Drupal path or external URL the more link will point to. Note that this will override the link display setting above.') . $output, + '#dependency' => array('radio:link_display' => array('custom_url')), ); break; case 'analyze-theme': @@ -1622,6 +1836,9 @@ class views_plugin_display extends views_plugin { } foreach (list_themes() as $key => $theme) { + if (!empty($theme->info['hidden'])) { + continue; + } $options[$key] = $theme->info['name']; } @@ -1777,7 +1994,7 @@ class views_plugin_display extends views_plugin { $exposed_form = $this->get_option('exposed_form'); $form['exposed_form']['type'] = array( '#type' => 'radios', - '#options' => views_fetch_plugin_names('exposed_form'), + '#options' => views_fetch_plugin_names('exposed_form', NULL, array($this->view->base_table)), '#default_value' => $exposed_form['type'], ); @@ -1813,11 +2030,11 @@ class views_plugin_display extends views_plugin { $pager = $this->get_option('pager'); $form['pager']['type'] = array( '#type' => 'radios', - '#options' => views_fetch_plugin_names('pager', empty($this->definition['use pager']) ? 'basic' : NULL), + '#options' => views_fetch_plugin_names('pager', empty($this->definition['use pager']) ? 'basic' : NULL, array($this->view->base_table)), '#default_value' => $pager['type'], ); - $pager_plugin = views_fetch_plugin_data('pager', $pager['type']); + $pager_plugin = views_fetch_plugin_data('pager', $pager['type'], array($this->view->base_table)); if (!empty($pager_plugin['uses options'])) { $form['markup'] = array( '#prefix' => '<div class="form-item description">', @@ -1841,6 +2058,9 @@ class views_plugin_display extends views_plugin { break; } + foreach ($this->extender as $extender) { + $extender->options_form($form, $form_state); + } } /** @@ -1876,15 +2096,20 @@ class views_plugin_display extends views_plugin { */ function options_validate(&$form, &$form_state) { switch ($form_state['section']) { + case 'display_title': + if (empty($form_state['values']['display_title'])) { + form_error($form['display_title'], t('Display title may not be empty.')); + } + break; case 'css_class': $css_class = $form_state['values']['css_class']; - if (preg_match('/[^a-zA-Z0-9- ]/', $css_class)) { + if (preg_match('/[^a-zA-Z0-9-_ ]/', $css_class)) { form_error($form['css_class'], t('CSS classes must be alphanumeric or dashes only.')); } break; case 'display_id': if ($form_state['values']['display_id']) { - if (preg_match('/[^a-zA-Z0-9_]/', $form_state['values']['display_id'])) { + if (preg_match('/[^a-z0-9_]/', $form_state['values']['display_id'])) { form_error($form['display_id'], t('Display name must be letters, numbers, or underscores only.')); } @@ -1934,6 +2159,10 @@ class views_plugin_display extends views_plugin { } break; } + + foreach ($this->extender as $extender) { + $extender->options_validate($form, $form_state); + } } /** @@ -2008,20 +2237,24 @@ class views_plugin_display extends views_plugin { } break; + case 'link_display': + $this->set_option('link_url', $form_state['values']['link_url']); case 'title': case 'css_class': - case 'link_display': case 'display_comment': $this->set_option($section, $form_state['values'][$section]); break; - case 'enabled': + case 'field_language': + $this->set_option('field_language', $form_state['values']['field_language']); + $this->set_option('field_language_add_to_query', $form_state['values']['field_language_add_to_query']); + break; case 'use_ajax': case 'hide_attachment_summary': $this->set_option($section, (bool)$form_state['values'][$section]); break; case 'use_more': $this->set_option($section, intval($form_state['values'][$section])); - $this->set_option('use_more_always', intval($form_state['values']['use_more_always'])); + $this->set_option('use_more_always', !intval($form_state['values']['use_more_always'])); $this->set_option('use_more_text', $form_state['values']['use_more_text']); case 'distinct': $this->set_option($section, $form_state['values'][$section]); @@ -2066,7 +2299,7 @@ class views_plugin_display extends views_plugin { // if row, $style will be empty. $plugin = $this->get_plugin(empty($style) ? 'row' : 'style'); if ($plugin) { - $plugin->options_submit($form[$section], $form_state); + $plugin->options_submit($form['options'][$section], $form_state); } $this->set_option($section, $form_state['values'][$section]); break; @@ -2124,6 +2357,10 @@ class views_plugin_display extends views_plugin { } break; } + + foreach ($this->extender as $extender) { + $extender->options_submit($form, $form_state); + } } /** @@ -2166,7 +2403,11 @@ class views_plugin_display extends views_plugin { /** * Inject anything into the query that the display handler needs. */ - function query() { } + function query() { + foreach ($this->extender as $extender) { + $extender->query(); + } + } /** * Not all display plugins will support filtering @@ -2184,10 +2425,18 @@ class views_plugin_display extends views_plugin { * Render the 'more' link */ function render_more_link() { - if ($this->use_more() && ($this->use_more_always() || $this->view->query->pager->has_more_records())) { + if ($this->use_more() && ($this->use_more_always() || (!empty($this->view->query->pager) && $this->view->query->pager->has_more_records()))) { $path = $this->get_path(); + + if ($this->get_option('link_display') == 'custom_url' && $override_path = $this->get_option('link_url')) { + $tokens = $this->get_arguments_tokens(); + $path = strtr($override_path, $tokens); + } + if ($path) { - $path = $this->view->get_url(NULL, $path); + if (empty($override_path)) { + $path = $this->view->get_url(NULL, $path); + } $url_options = array(); if (!empty($this->view->exposed_raw_input)) { $url_options['query'] = $this->view->exposed_raw_input; @@ -2195,7 +2444,7 @@ class views_plugin_display extends views_plugin { $theme = views_theme_functions('views_more', $this->view, $this->display); $path = check_url(url($path, $url_options)); - return theme($theme, array('more_url' => $path, 'link_text' => check_plain($this->use_more_text()))); + return theme($theme, array('more_url' => $path, 'link_text' => check_plain($this->use_more_text()), 'view' => $this->view)); } } } @@ -2289,6 +2538,10 @@ class views_plugin_display extends views_plugin { $exposed_form = $this->get_plugin('exposed_form'); $exposed_form->pre_execute(); } + + foreach ($this->extender as $extender) { + $extender->pre_execute(); + } } /** @@ -2389,15 +2642,19 @@ class views_plugin_display extends views_plugin { * Provide the block system with any exposed widget blocks for this display. */ function get_special_blocks() { - $delta = '-exp-' . $this->view->name . '-' . $this->display->id; - $desc = t('Exposed form: @view-@display_id', array('@view' => $this->view->name, '@display_id' => $this->display->id)); + $blocks = array(); - return array( - $delta => array( + if ($this->uses_exposed_form_in_block()) { + $delta = '-exp-' . $this->view->name . '-' . $this->display->id; + $desc = t('Exposed form: @view-@display_id', array('@view' => $this->view->name, '@display_id' => $this->display->id)); + + $blocks[$delta] = array( 'info' => $desc, 'cache' => DRUPAL_NO_CACHE, - ) - ); + ); + } + + return $blocks; } /** @@ -2410,7 +2667,8 @@ class views_plugin_display extends views_plugin { return; } $this->view->init_handlers(); - if ($this->uses_exposed()) { + + if ($this->uses_exposed() && $this->get_option('exposed_block')) { $exposed_form = $this->get_plugin('exposed_form'); return array( 'content' => $exposed_form->render_exposed_form(TRUE), @@ -2473,7 +2731,20 @@ class views_plugin_display extends views_plugin { else { $handler_type = $type; } - $handler = views_get_handler($info['table'], $info['field'], $handler_type); + // If aggregation is on, the group type might override the actual + // handler that is in use. This piece of code checks that and, + // if necessary, sets the override handler. + $override = NULL; + if ($this->use_group_by() && !empty($info['group_type'])) { + if (empty($this->view->query)) { + $this->view->init_query(); + } + $aggregate = $this->view->query->get_aggregation_info(); + if (!empty($aggregate[$info['group_type']]['handler'][$type])) { + $override = $aggregate[$info['group_type']]['handler'][$type]; + } + } + $handler = views_get_handler($info['table'], $info['field'], $handler_type, $override); if ($handler) { $handler->init($this->view, $info); $output .= $indent . '/* ' . $types[$type]['stitle'] . ': ' . $handler->ui_name() . " */\n"; @@ -2621,7 +2892,7 @@ class views_plugin_display extends views_plugin { $handler = views_get_handler($info['table'], $info['field'], $handler_type); if ($handler) { $handler->init($this->view, $info); - $handler->unpack_translatables($translatable, array_merge($parents, array($handler_type, $info['table'], $info['field']))); + $handler->unpack_translatables($translatable, array_merge($parents, array($type, $info['table'], $info['id']))); } // Prevent reference problems. @@ -2630,6 +2901,38 @@ class views_plugin_display extends views_plugin { return $output; } + + /** + * Provide some helpful text for the arguments. + * The result should contain of an array with + * - filter value present: The title of the fieldset in the argument + * where you can configure what should be done with a given argument. + * - filter value not present: The tiel of the fieldset in the argument + * where you can configure what should be done if the argument does not + * exist. + * - description: A description about how arguments comes to the display. + * For example blocks don't get it from url. + */ + function get_argument_text() { + return array( + 'filter value not present' => t('When the filter value is <em>NOT</em> available'), + 'filter value present' => t('When the filter value <em>IS</em> available or a default is provided'), + 'description' => t("This display does not have a source for contextual filters, so no contextual filter value will be available unless you select 'Provide default'."), + ); + } + + /** + * Provide some helpful text for pagers. + * + * The result should contain of an array within + * - items per page title + */ + function get_pager_text() { + return array( + 'items per page title' => t('Items to display'), + 'items per page description' => t('The number of items to display. Enter 0 for no limit.') + ); + } } diff --git a/sites/all/modules/views/plugins/views_plugin_display_block.inc b/sites/all/modules/views/plugins/views_plugin_display_block.inc index 3c0ef0e97..4338d7579 100644 --- a/sites/all/modules/views/plugins/views_plugin_display_block.inc +++ b/sites/all/modules/views/plugins/views_plugin_display_block.inc @@ -29,7 +29,12 @@ class views_plugin_display_block extends views_plugin_display { $desc = $this->get_option('block_description'); if (empty($desc)) { - $desc = t('@view: @display', array('@view' => $this->view->name, '@display' => $this->display->display_title)); + if ($this->display->display_title == $this->definition['title']) { + $desc = t('View: @view', array('@view' => $this->view->get_human_name())); + } + else { + $desc = t('View: @view: @display', array('@view' => $this->view->get_human_name(), '@display' => $this->display->display_title)); + } } return array( $delta => array( @@ -74,14 +79,10 @@ class views_plugin_display_block extends views_plugin_display { $block_description = t('None'); } - if (strlen($block_description) > 16) { - $block_description = drupal_substr($block_description, 0, 16) . '...'; - } - $options['block_description'] = array( 'category' => 'block', 'title' => t('Block name'), - 'value' => $block_description, + 'value' => views_ui_truncate($block_description, 24), ); $cache_type = $this->get_option('block_caching'); @@ -128,6 +129,7 @@ class views_plugin_display_block extends views_plugin_display { * Provide the default form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); // It is very important to call the parent function here: parent::options_form($form, $form_state); @@ -189,25 +191,38 @@ class views_plugin_display_block extends views_plugin_display { * Update the block delta when you change the machine readable name of the display. */ function update_block_bid($name, $old_delta, $delta) { + $old_hashes = $hashes = variable_get('views_block_hashes', array()); + $old_delta = $name . '-' . $old_delta; $delta = $name . '-' . $delta; if (strlen($old_delta) >= 32) { $old_delta = md5($old_delta); + unset($hashes[$old_delta]); } if (strlen($delta) >= 32) { - $delta = md5($delta); + $md5_delta = md5($delta); + $hashes[$md5_delta] = $delta; + $delta = $md5_delta; } db_update('block') ->fields(array('delta' => $delta)) ->condition('delta', $old_delta) ->execute(); + + // Update the hashes if needed. + if ($hashes != $old_hashes) { + variable_set('views_block_hashes', $hashes); + } } /** * Save the block cache setting in the blocks table if this block allready * exists in the blocks table. Dirty fix untill http://drupal.org/node/235673 gets in. */ function save_block_cache($delta, $cache_setting) { - if ($bid = db_query("SELECT bid FROM {block} WHERE module = 'views' AND delta = :delta", array( + if (strlen($delta) >= 32) { + $delta = md5($delta); + } + if (db_table_exists('block') && $bid = db_query("SELECT bid FROM {block} WHERE module = 'views' AND delta = :delta", array( ':delta' => $delta))->fetchField()) { db_update('block') ->fields(array( diff --git a/sites/all/modules/views/plugins/views_plugin_display_default.inc b/sites/all/modules/views/plugins/views_plugin_display_default.inc index 0d518e762..d46a12655 100644 --- a/sites/all/modules/views/plugins/views_plugin_display_default.inc +++ b/sites/all/modules/views/plugins/views_plugin_display_default.inc @@ -52,4 +52,4 @@ class views_plugin_display_default extends views_plugin_display { function execute() { return $this->view->render($this->display->id); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/plugins/views_plugin_display_extender.inc b/sites/all/modules/views/plugins/views_plugin_display_extender.inc new file mode 100644 index 000000000..c2cc488b2 --- /dev/null +++ b/sites/all/modules/views/plugins/views_plugin_display_extender.inc @@ -0,0 +1,54 @@ +<?php +/** + * @todo + */ +class views_plugin_display_extender extends views_plugin { + function __construct(&$view, &$display) { + $this->view = $view; + $this->display = $display; + } + + + /** + * Provide a form to edit options for this plugin. + */ + function options_definition(&$options) { } + + /** + * Provide a form to edit options for this plugin. + */ + function options_form(&$form, &$form_state) { } + + /** + * Validate the options form. + */ + function options_validate(&$form, &$form_state) { } + + /** + * Handle any special handling on the validate form. + */ + function options_submit(&$form, &$form_state) { } + + /** + * Set up any variables on the view prior to execution. + */ + function pre_execute() { } + + /** + * Inject anything into the query that the display_extender handler needs. + */ + function query() { } + + /** + * Provide the default summary for options in the views UI. + * + * This output is returned as an array. + */ + function options_summary(&$categories, &$options) { } + + /** + * Static member function to list which sections are defaultable + * and what items each section contains. + */ + function defaultable_sections(&$sections, $section = NULL) { } +} diff --git a/sites/all/modules/views/plugins/views_plugin_display_feed.inc b/sites/all/modules/views/plugins/views_plugin_display_feed.inc index 7eb99ae06..3b0715891 100644 --- a/sites/all/modules/views/plugins/views_plugin_display_feed.inc +++ b/sites/all/modules/views/plugins/views_plugin_display_feed.inc @@ -138,6 +138,7 @@ class views_plugin_display_feed extends views_plugin_display_page { * Provide the default form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); // It is very important to call the parent function here. parent::options_form($form, $form_state); diff --git a/sites/all/modules/views/plugins/views_plugin_display_page.inc b/sites/all/modules/views/plugins/views_plugin_display_page.inc index 85f5bf9a7..ac89e0c2a 100644 --- a/sites/all/modules/views/plugins/views_plugin_display_page.inc +++ b/sites/all/modules/views/plugins/views_plugin_display_page.inc @@ -54,14 +54,15 @@ class views_plugin_display_page extends views_plugin_display { $bits = explode('/', $this->get_option('path')); $page_arguments = array($this->view->name, $this->display->id); - $view_arguments = $this->get_option('arguments'); + $this->view->init_handlers(); + $view_arguments = $this->view->argument; // Replace % with %views_arg for menu autoloading and add to the // page arguments so the argument actually comes through. - foreach($bits as $pos => $bit) { + foreach ($bits as $pos => $bit) { if ($bit == '%') { $argument = array_shift($view_arguments); - if (isset($argument['validate_type']) && $argument['validate_type'] != 'none') { + if (!empty($argument->options['specify_validation']) && $argument->options['validate']['type'] != 'none') { $bits[$pos] = '%views_arg'; } $page_arguments[] = $pos; @@ -166,7 +167,7 @@ class views_plugin_display_page extends views_plugin_display { 'page arguments' => $page_arguments, // Default access check (per display) 'access callback' => 'views_access', - 'access arguments' => array($access_plugin->get_access_callback()), + 'access arguments' => $access_arguments, // Identify URL embedded arguments and correlate them to a handler 'load arguments' => array($this->view->name, $this->display->id, '%index'), 'title' => $tab_options['title'], @@ -211,11 +212,14 @@ class views_plugin_display_page extends views_plugin_display { $this->view->get_breadcrumb(TRUE); - // And the title, which is much easier. - drupal_set_title(filter_xss_admin($this->view->get_title()), PASS_THROUGH); // And now render the view. - return $this->view->render(); + $render = $this->view->render(); + + // First execute the view so it's possible to get tokens for the title. + // And the title, which is much easier. + drupal_set_title(filter_xss_admin($this->view->get_title()), PASS_THROUGH); + return $render; } /** @@ -235,19 +239,15 @@ class views_plugin_display_page extends views_plugin_display { ), ); - $path = strip_tags($this->get_option('path')); + $path = strip_tags('/' . $this->get_option('path')); if (empty($path)) { $path = t('None'); } - if (strlen($path) > 16) { - $path = substr($path, 0, 16) . '...'; - } - $options['path'] = array( 'category' => 'page', 'title' => t('Path'), - 'value' => $path, + 'value' => views_ui_truncate($path, 24), ); $menu = $this->get_option('menu'); @@ -268,14 +268,10 @@ class views_plugin_display_page extends views_plugin_display { break; } - if (strlen($menu_str) > 16) { - $menu_str = substr($menu_str, 0, 16) . '...'; - } - $options['menu'] = array( 'category' => 'page', 'title' => t('Menu'), - 'value' => $menu_str, + 'value' => views_ui_truncate($menu_str, 24), ); // This adds a 'Settings' link to the style_options setting if the style has options. @@ -289,6 +285,7 @@ class views_plugin_display_page extends views_plugin_display { * Provide the default form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); // It is very important to call the parent function here: parent::options_form($form, $form_state); @@ -353,8 +350,8 @@ class views_plugin_display_page extends views_plugin_display { '#type' => 'select', '#options' => menu_get_menus(), '#default_value' => $menu['name'], - '#description' => t('Insert item into an available menu.'), // - '#dependency' => array('radio:menu[type]' => array('normal')), + '#description' => t('Insert item into an available menu.'), + '#dependency' => array('radio:menu[type]' => array('normal', 'tab')), ); } else { @@ -522,4 +519,19 @@ class views_plugin_display_page extends views_plugin_display { return $errors; } + + function get_argument_text() { + return array( + 'filter value not present' => t('When the filter value is <em>NOT</em> in the URL'), + 'filter value present' => t('When the filter value <em>IS</em> in the URL or a default is provided'), + 'description' => t('The contextual filter values is provided by the URL.'), + ); + } + + function get_pager_text() { + return array( + 'items per page title' => t('Items per page'), + 'items per page description' => t('The number of items to display per page. Enter 0 for no limit.') + ); + } } diff --git a/sites/all/modules/views/plugins/views_plugin_exposed_form.inc b/sites/all/modules/views/plugins/views_plugin_exposed_form.inc index fae1f0403..8dbe583cc 100644 --- a/sites/all/modules/views/plugins/views_plugin_exposed_form.inc +++ b/sites/all/modules/views/plugins/views_plugin_exposed_form.inc @@ -28,10 +28,13 @@ class views_plugin_exposed_form extends views_plugin { $options['exposed_sorts_label'] = array('default' => 'Sort by', 'translatable' => TRUE); $options['sort_asc_label'] = array('default' => 'Asc', 'translatable' => TRUE); $options['sort_desc_label'] = array('default' => 'Desc', 'translatable' => TRUE); + $options['autosubmit'] = array('default' => FALSE); + $options['autosubmit_hide'] = array('default' => TRUE); return $options; } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['submit_button'] = array( '#type' => 'textfield', '#title' => t('Submit button text'), @@ -81,6 +84,23 @@ class views_plugin_exposed_form extends views_plugin { '#default_value' => $this->options['sort_desc_label'], '#required' => TRUE, ); + + $form['autosubmit'] = array( + '#type' => 'checkbox', + '#title' => t('Autosubmit'), + '#description' => t('Automatically submit the form once an element is changed.'), + '#default_value' => $this->options['autosubmit'], + ); + + $form['autosubmit_hide'] = array( + '#type' => 'checkbox', + '#title' => t('Hide submit button'), + '#description' => t('Hide submit button if javascript is enabled.'), + '#default_value' => $this->options['autosubmit_hide'], + '#dependency' => array( + 'edit-exposed-form-options-autosubmit' => array(1), + ), + ); } /** @@ -115,9 +135,6 @@ class views_plugin_exposed_form extends views_plugin { $form_state['exposed_form_plugin'] = $this; $form = drupal_build_form('views_exposed_form', $form_state); $output = drupal_render($form); - if (!empty($form_state['js settings'])) { - $this->view->js_settings = $form_state['js settings']; - } if (!$this->view->display_handler->displays_exposed() || (!$block && $this->view->display_handler->get_option('exposed_block'))) { return ""; @@ -132,17 +149,21 @@ class views_plugin_exposed_form extends views_plugin { $exposed_data = isset($view->exposed_data) ? $view->exposed_data : array(); $sort_by = isset($exposed_data['sort_by']) ? $exposed_data['sort_by'] : NULL; if (!empty($sort_by)) { - $handler = $view->sort[$sort_by]; - if (isset($handler)) { + // Make sure the original order of sorts is preserved + // (e.g. a sticky sort is often first) + if (isset($view->sort[$sort_by])) { $view->query->orderby = array(); - if (isset($exposed_data['sort_order']) && in_array($exposed_data['sort_order'], array('ASC', 'DESC'))) { - $handler->options['order'] = $exposed_data['sort_order']; - } - $handler->query(); - foreach ($view->sort as $sort) { + foreach ($view->sort as $key => $sort) { if (!$sort->is_exposed()) { $sort->query(); } + else if ($key == $sort_by) { + if (isset($exposed_data['sort_order']) && in_array($exposed_data['sort_order'], array('ASC', 'DESC'))) { + $sort->options['order'] = $exposed_data['sort_order']; + } + $sort->set_relationship(); + $sort->query(); + } } } } @@ -177,7 +198,7 @@ class views_plugin_exposed_form extends views_plugin { $form['sort_by'] = array( '#type' => 'select', '#options' => $exposed_sorts, - '#title' => t($this->options['exposed_sorts_label']), + '#title' => $this->options['exposed_sorts_label'], ); $sort_order = array( 'ASC' => $this->options['sort_asc_label'], @@ -189,6 +210,12 @@ class views_plugin_exposed_form extends views_plugin { $first_sort = reset($this->view->sort); $default_sort_order = $first_sort->options['order']; } + + if (!isset($form_state['input']['sort_by'])) { + $keys = array_keys($exposed_sorts); + $form_state['input']['sort_by'] = array_shift($keys); + } + $form['sort_order'] = array( '#type' => 'select', '#options' => $sort_order, @@ -206,6 +233,19 @@ class views_plugin_exposed_form extends views_plugin { $pager->exposed_form_alter($form, $form_state); $form_state['pager_plugin'] = $pager; } + + + // Apply autosubmit values. + if (!empty($this->options['autosubmit'])) { + $form = array_merge_recursive($form, array('#attributes' => array('class' => array('ctools-auto-submit-full-form')))); + $form['submit']['#attributes']['class'][] = 'ctools-use-ajax'; + $form['submit']['#attributes']['class'][] = 'ctools-auto-submit-click'; + $form['#attached']['js'][] = drupal_get_path('module', 'ctools') . '/js/auto-submit.js'; + + if (!empty($this->options['autosubmit_hide'])) { + $form['submit']['#attributes']['class'][] = 'js-hide'; + } + } } function exposed_form_validate(&$form, &$form_state) { @@ -236,8 +276,27 @@ class views_plugin_exposed_form extends views_plugin { } function reset_form(&$form, &$form_state) { - unset($_SESSION['views'][$this->view->name][$this->view->current_display]); - $form_state = array(); + // _SESSION is not defined for users who are not logged in. + + // If filters are not overridden, store the 'remember' settings on the + // default display. If they are, store them on this display. This way, + // multiple displays in the same view can share the same filters and + // remember settings. + $display_id = ($this->view->display_handler->is_defaulted('filters')) ? 'default' : $this->view->current_display; + + if (isset($_SESSION['views'][$this->view->name][$display_id])) { + unset($_SESSION['views'][$this->view->name][$display_id]); + } + + // Set the form to allow redirect. + if (empty($this->view->live_preview)) { + $form_state['no_redirect'] = FALSE; + } + else { + $form_state['rebuild'] = TRUE; + $this->view->exposed_data = array(); + } + $form_state['values'] = array(); } } diff --git a/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc b/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc index 3774b406a..2b564a424 100644 --- a/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc +++ b/sites/all/modules/views/plugins/views_plugin_exposed_form_input_required.inc @@ -9,7 +9,7 @@ class views_plugin_exposed_form_input_required extends views_plugin_exposed_form $options = parent::option_definition(); $options['text_input_required'] = array('default' => t('Select any filter and click on Apply to see results'), 'translatable' => TRUE); - $options['text_input_required_format'] = array('default' => filter_default_format()); + $options['text_input_required_format'] = array('default' => NULL); return $options; } @@ -21,12 +21,14 @@ class views_plugin_exposed_form_input_required extends views_plugin_exposed_form '#title' => t('Text on demand'), '#description' => t('Text to display instead of results until the user selects and applies an exposed filter.'), '#default_value' => $this->options['text_input_required'], - '#format' => $this->options['text_input_required_format'], + '#format' => isset($this->options['text_input_required_format']) ? $this->options['text_input_required_format'] : filter_default_format(), + '#wysiwyg' => FALSE, ); } function options_submit(&$form, &$form_state) { - $form_state['values']['exposed_form_options']['text_input_required_format'] = $form_state['values']['options']['text_input_required']['format']; + $form_state['values']['exposed_form_options']['text_input_required_format'] = $form_state['values']['exposed_form_options']['text_input_required']['format']; + $form_state['values']['exposed_form_options']['text_input_required'] = $form_state['values']['exposed_form_options']['text_input_required']['value']; parent::options_submit($form, $form_state); } @@ -34,7 +36,6 @@ class views_plugin_exposed_form_input_required extends views_plugin_exposed_form static $cache = NULL; if (!isset($cache)) { $view = $this->view; - $exposed_data = $view->exposed_data; if (is_array($view->filter) && count($view->filter)) { foreach ($view->filter as $filter_id => $filter) { if ($filter->is_exposed()) { diff --git a/sites/all/modules/views/plugins/views_plugin_localization.inc b/sites/all/modules/views/plugins/views_plugin_localization.inc index 5b8640214..bfff15f6f 100644 --- a/sites/all/modules/views/plugins/views_plugin_localization.inc +++ b/sites/all/modules/views/plugins/views_plugin_localization.inc @@ -43,7 +43,7 @@ class views_plugin_localization extends views_plugin { function translate($source) { // Allow other modules to make changes to the string before and after translation $source['pre_process'] = $this->invoke_translation_process($source, 'pre'); - $source['translation'] = $this->translate_string($source['value'], $source['keys']); + $source['translation'] = $this->translate_string($source['value'], $source['keys'], $source['format']); $source['post_process'] = $this->invoke_translation_process($source, 'post'); return $source['translation']; } @@ -56,8 +56,10 @@ class views_plugin_localization extends views_plugin { * @param $keys * An array of keys to identify the string. Generally constructed from * view name, display_id, and a property, e.g., 'header'. + * @param $format + * The input format of the string. This is optional. */ - function translate_string($string, $keys = array()) {} + function translate_string($string, $keys = array(), $format = '') {} /** * Save string source for translation. @@ -68,7 +70,7 @@ class views_plugin_localization extends views_plugin { function save($source) { // Allow other modules to make changes to the string before saving $source['pre_process'] = $this->invoke_translation_process($source, 'pre'); - $this->save_string($source['value'], $source['keys']); + $this->save_string($source['value'], $source['keys'], isset($source['format']) ? $source['format'] : ''); } /** @@ -79,8 +81,10 @@ class views_plugin_localization extends views_plugin { * @param $keys * An array of keys to identify the string. Generally constructed from * view name, display_id, and a property, e.g., 'header'. + * @param $format + * The input format of the string. This is optional. */ - function save_string($string, $keys = array()) {} + function save_string($string, $keys = array(), $format = '') {} /** * Delete a string. @@ -135,7 +139,9 @@ class views_plugin_localization extends views_plugin { $translatable[] = array('value' => $display->display_title, 'keys' => array('display_title')); } // Unpack handlers. - $this->view->display[$display_id]->handler->unpack_translatables($translatable); + if (is_object($this->view->display[$display_id]->handler)) { + $this->view->display[$display_id]->handler->unpack_translatables($translatable); + } foreach ($translatable as $data) { $data['keys'] = array_merge(array($this->view->name, $display_id), $data['keys']); switch ($op) { diff --git a/sites/all/modules/views/plugins/views_plugin_localization_core.inc b/sites/all/modules/views/plugins/views_plugin_localization_core.inc index 9c90e2b68..87443ca0d 100644 --- a/sites/all/modules/views/plugins/views_plugin_localization_core.inc +++ b/sites/all/modules/views/plugins/views_plugin_localization_core.inc @@ -20,8 +20,10 @@ class views_plugin_localization_core extends views_plugin_localization { * @param $keys * An array of keys to identify the string. Generally constructed from * view name, display_id, and a property, e.g., 'header'. + * @param $format + * The input format of the string. This is optional. */ - function translate_string($string, $keys = array()) { + function translate_string($string, $keys = array(), $format = '') { return t($string); } @@ -33,8 +35,10 @@ class views_plugin_localization_core extends views_plugin_localization { * @param $keys * An array of keys to identify the string. Generally constructed from * view name, display_id, and a property, e.g., 'header'. + * @param $format + * The input format of the string. This is optional. */ - function save_string($string, $keys = array()) { + function save_string($string, $keys = array(), $format = '') { global $language; // If the current language is 'en', we need to reset the language diff --git a/sites/all/modules/views/plugins/views_plugin_pager.inc b/sites/all/modules/views/plugins/views_plugin_pager.inc index d639e5426..f39e2d391 100644 --- a/sites/all/modules/views/plugins/views_plugin_pager.inc +++ b/sites/all/modules/views/plugins/views_plugin_pager.inc @@ -77,6 +77,9 @@ class views_plugin_pager extends views_plugin { * the page number will be set from the global page array. */ function set_current_page($number = NULL) { + if (!is_numeric($number) || $number < 0) { + $number = 0; + } $this->current_page = $number; } diff --git a/sites/all/modules/views/plugins/views_plugin_pager_full.inc b/sites/all/modules/views/plugins/views_plugin_pager_full.inc index a0a448ff4..6c7b09649 100644 --- a/sites/all/modules/views/plugins/views_plugin_pager_full.inc +++ b/sites/all/modules/views/plugins/views_plugin_pager_full.inc @@ -38,10 +38,12 @@ class views_plugin_pager_full extends views_plugin_pager { * Provide the default form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + $pager_text = $this->display->handler->get_pager_text(); $form['items_per_page'] = array( - '#title' => t('Items per page'), + '#title' => $pager_text['items per page title'], '#type' => 'textfield', - '#description' => t('The number of items to display per page. Enter 0 for no limit.'), + '#description' => $pager_text['items per page description'], '#default_value' => $this->options['items_per_page'], ); @@ -196,7 +198,7 @@ class views_plugin_pager_full extends views_plugin_pager { function render($input) { $pager_theme = views_theme_functions('pager', $this->view, $this->display); $output = theme($pager_theme, array( - 'tags' => $input, 'element' => $this->options['id'])); + 'parameters' => $input, 'element' => $this->options['id'])); return $output; } @@ -213,15 +215,26 @@ class views_plugin_pager_full extends views_plugin_pager { return; } - // If the current page number was not prespecified, default to pulling it from 'page' - // based upon + // If the current page number was not specified, extract it from the global + // page array. global $pager_page_array; - // Extract the ['page'] info. - $pager_page_array = isset($_GET['page']) ? explode(',', $_GET['page']) : array(0); - $this->current_page = 0; - if (!empty($pager_page_array[$this->options['id']])) { - $this->current_page = intval($pager_page_array[$this->options['id']]); + if (empty($pager_page_array)) { + $pager_page_array = array(); + } + + // Fill in missing values in the global page array, in case the global page + // array hasn't been initialized before. + $page = isset($_GET['page']) ? explode(',', $_GET['page']) : array(); + + for ($i = 0; $i <= $this->options['id'] || $i < count($pager_page_array); $i++) { + $pager_page_array[$i] = empty($page[$i]) ? 0 : $page[$i]; + } + + $this->current_page = intval($pager_page_array[$this->options['id']]); + + if ($this->current_page < 0) { + $this->current_page = 0; } } @@ -252,7 +265,9 @@ class views_plugin_pager_full extends views_plugin_pager { $items_per_page = $this->get_items_per_page(); if (!empty($items_per_page)) { // Dump information about what we already know into the globals. - global $pager_page_array, $pager_total, $pager_total_items; + global $pager_page_array, $pager_total, $pager_total_items, $pager_limits; + // Set the limit. + $pager_limits[$this->options['id']] = $this->options['items_per_page']; // Set the item count for the pager. $pager_total_items[$this->options['id']] = $this->total_items; // Calculate and set the count of available pages. diff --git a/sites/all/modules/views/plugins/views_plugin_pager_mini.inc b/sites/all/modules/views/plugins/views_plugin_pager_mini.inc index 82c83d1c9..13617eda4 100644 --- a/sites/all/modules/views/plugins/views_plugin_pager_mini.inc +++ b/sites/all/modules/views/plugins/views_plugin_pager_mini.inc @@ -16,6 +16,6 @@ class views_plugin_pager_mini extends views_plugin_pager_full { function render($input) { $pager_theme = views_theme_functions('views_mini_pager', $this->view, $this->display); return theme($pager_theme, array( - 'tags' => $input, 'element' => $this->options['id'])); + 'parameters' => $input, 'element' => $this->options['id'])); } } diff --git a/sites/all/modules/views/plugins/views_plugin_pager_none.inc b/sites/all/modules/views/plugins/views_plugin_pager_none.inc index 6d56aeeee..1fca14bb4 100644 --- a/sites/all/modules/views/plugins/views_plugin_pager_none.inc +++ b/sites/all/modules/views/plugins/views_plugin_pager_none.inc @@ -6,6 +6,14 @@ * @ingroup views_pager_plugins */ class views_plugin_pager_none extends views_plugin_pager { + + function init(&$view, &$display, $options = array()) { + parent::init($view, $display, $options); + + // If the pager is set to none, then it should show all items. + $this->set_items_per_page(0); + } + function summary_title() { if (!empty($this->options['offset'])) { return t('All items, skip @skip', array('@skip' => $this->options['offset'])); @@ -24,6 +32,7 @@ class views_plugin_pager_none extends views_plugin_pager { * Provide the default form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['offset'] = array( '#type' => 'textfield', '#title' => t('Offset'), diff --git a/sites/all/modules/views/plugins/views_plugin_pager_some.inc b/sites/all/modules/views/plugins/views_plugin_pager_some.inc index 28ed1a39b..a482f87a2 100644 --- a/sites/all/modules/views/plugins/views_plugin_pager_some.inc +++ b/sites/all/modules/views/plugins/views_plugin_pager_some.inc @@ -25,10 +25,12 @@ class views_plugin_pager_some extends views_plugin_pager { * Provide the default form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + $pager_text = $this->display->handler->get_pager_text(); $form['items_per_page'] = array( - '#title' => t('Items to display'), + '#title' => $pager_text['items per page title'], '#type' => 'textfield', - '#description' => t('The number of items to display per page.'), + '#description' => $pager_text['items per page description'], '#default_value' => $this->options['items_per_page'], ); diff --git a/sites/all/modules/views/plugins/views_plugin_query.inc b/sites/all/modules/views/plugins/views_plugin_query.inc index 66680ecfc..f2003840a 100644 --- a/sites/all/modules/views/plugins/views_plugin_query.inc +++ b/sites/all/modules/views/plugins/views_plugin_query.inc @@ -47,6 +47,8 @@ class views_plugin_query extends views_plugin { * * Values to set: $view->result, $view->total_rows, $view->execute_time, * $view->pager['current_page']. + * + * $view->result should contain an array of objects. */ function execute(&$view) { } @@ -68,7 +70,9 @@ class views_plugin_query extends views_plugin { /** * Add settings for the ui. */ - function options_form(&$form, &$form_state) { } + function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + } function options_validate(&$form, &$form_state) { } @@ -144,4 +148,10 @@ class views_plugin_query extends views_plugin { $this->group_operator = strtoupper($type); } + /** + * Returns the according entity objects for the given query results. + */ + function get_result_entities($results, $relationship = NULL) { + return FALSE; + } } diff --git a/sites/all/modules/views/plugins/views_plugin_query_default.inc b/sites/all/modules/views/plugins/views_plugin_query_default.inc index 6be8657b4..082ff337b 100644 --- a/sites/all/modules/views/plugins/views_plugin_query_default.inc +++ b/sites/all/modules/views/plugins/views_plugin_query_default.inc @@ -79,6 +79,16 @@ class views_plugin_query_default extends views_plugin_query { */ var $pager = NULL; + /** + * An array mapping table aliases and field names to field aliases. + */ + var $field_aliases = array(); + + /** + * Query tags which will be passed over to the dbtng query object. + */ + var $tags = array(); + /** * Constructor; Create the basic query object and fill with default values. */ @@ -176,11 +186,9 @@ class views_plugin_query_default extends views_plugin_query { 'default' => FALSE, 'bool' => TRUE, ); - $options['field_language'] = array( - 'default' => '***CURRENT_LANGUAGE***', - ); - $options['field_language_add_to_query'] = array( - 'default' => 1, + $options['query_comment'] = array( + 'default' => '', + 'bool' => FALSE, ); return $options; @@ -190,6 +198,8 @@ class views_plugin_query_default extends views_plugin_query { * Add settings for the ui. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + $form['disable_sql_rewrite'] = array( '#title' => t('Disable SQL rewriting'), '#description' => t('Disabling SQL rewriting will disable node_access checks as well as other modules that implement hook_query_alter().'), @@ -209,42 +219,12 @@ class views_plugin_query_default extends views_plugin_query { '#description' => t('This will make the query attempt to connect to a slave server if available. If no slave server is defined or available, it will fall back to the default server.'), '#default_value' => !empty($this->options['slave']), ); - - $entities = entity_get_info(); - $entity_tables = array(); - $has_translation_handlers = FALSE; - foreach ($entities as $type => $entity_info) { - $entity_tables[] = $entity_info['base table']; - - if (!empty($entity_info['translation'])) { - $has_translation_handlers = TRUE; - } - } - - // Doesn't make sense to show a field setting here if we aren't querying - // an entity base table. Also, we make sure that there's at least one - // entity type with a translation handler attached. - if (in_array($this->base_table, $entity_tables) && $has_translation_handlers) { - $languages = array( - '***CURRENT_LANGUAGE***' => t("Current user's language"), - '***DEFAULT_LANGUAGE***' => t("Default site language"), - LANGUAGE_NONE => t('Language neutral'), - ); - $languages = array_merge($languages, locale_language_list()); - - $form['field_language'] = array( - '#type' => 'select', - '#title' => t('Field Language'), - '#description' => t('All fields which support translations will be displayed in the selected language.'), - '#options' => $languages, - '#default_value' => $this->options['field_language'], - ); - $form['field_language_add_to_query'] = array( - '#type' => 'checkbox', - '#title' => t('When needed, add the field language condition to the query.'), - '#default_value' => $this->options['field_language_add_to_query'], - ); - } + $form['query_comment'] = array( + '#type' => 'textfield', + '#title' => t('Query Comment'), + '#description' => t('If set, this comment will be embedded in the query and passed to the SQL server. This can be helpful for logging or debugging.'), + '#default_value' => $this->options['query_comment'], + ); } // ---------------------------------------------------------------- @@ -266,7 +246,7 @@ class views_plugin_query_default extends views_plugin_query { * @param $alias * What this relationship will be called, and is also the alias * for the table. - * @param $join + * @param views_join $join * A views_join object (or derived object) to join the alias in. * @param $base * The name of the 'base' table this relationship represents; this @@ -338,7 +318,7 @@ class views_plugin_query_default extends views_plugin_query { * tables exist and are properly aliased. If set to NULL the path to * the primary table will be ensured. If the path cannot be made, the * table will NOT be added. - * @param $join + * @param views_join $join * In some join configurations this table may actually join back through * a different method; this is most likely to be used when tracing * a hierarchy path. (node->parent->parent2->parent3). This parameter @@ -357,7 +337,11 @@ class views_plugin_query_default extends views_plugin_query { return FALSE; } - return $this->queue_table($table, $relationship, $this->adjust_join($join, $relationship), $alias); + if ($join && $relationship) { + $join = $this->adjust_join($join, $relationship); + } + + return $this->queue_table($table, $relationship, $join, $alias); } /** @@ -373,7 +357,7 @@ class views_plugin_query_default extends views_plugin_query { * @param $relationship * The primary table alias this table is related to. If not set, the * primary table will be used. - * @param $join + * @param views_join $join * In some join configurations this table may actually join back through * a different method; this is most likely to be used when tracing * a hierarchy path. (node->parent->parent2->parent3). This parameter @@ -485,7 +469,7 @@ class views_plugin_query_default extends views_plugin_query { * The relationship to ensure the table links to. Each relationship will * get a unique instance of the table being added. If not specified, * will be the primary table. - * @param $join + * @param views_join $join * A views_join object (or derived object) to join the alias in. * * @return @@ -673,7 +657,7 @@ class views_plugin_query_default extends views_plugin_query { * @param $base_table * The path we're following to get this join. * - * @return + * @return views_join * A views_join object or child object, if one exists. */ function get_join_data($table, $base_table) { @@ -748,7 +732,7 @@ class views_plugin_query_default extends views_plugin_query { // We limit the length of the original alias up to 60 characters // to get a unique alias later if its have duplicates - $alias = substr($alias, 0, 60); + $alias = strtolower(substr($alias, 0, 60)); // Create a field info array. $field_info = array( @@ -770,6 +754,9 @@ class views_plugin_query_default extends views_plugin_query { $this->fields[$alias] = $field_info; } + // Keep track of all aliases used. + $this->field_aliases[$table][$field] = $alias; + return $alias; } @@ -1008,6 +995,24 @@ class views_plugin_query_default extends views_plugin_query { } } + /** + * Returns the alias for the given field added to $table. + * + * @see views_plugin_query_default::add_field() + */ + function get_field_alias($table_alias, $field) { + return isset($this->field_aliases[$table_alias][$field]) ? $this->field_aliases[$table_alias][$field] : FALSE; + } + + /** + * Adds a query tag to the sql object. + * + * @see SelectQuery::addTag + */ + function add_tag($tag) { + $this->tags[] = $tag; + } + /** * Generates a unique placeholder used in the db query. */ @@ -1032,18 +1037,26 @@ class views_plugin_query_default extends views_plugin_query { $has_condition = FALSE; $main_group = $this->group_operator == 'OR' ? db_or() : db_and(); foreach ($this->$where as $group => $info) { - $sub_group = $info['type'] == 'OR' ? db_or() : db_and(); - foreach ($info['conditions'] as $key => $clause) { - if ($clause['operator'] == 'formula') { - $has_condition = TRUE; - $sub_group->where($clause['field'], $clause['value']); - } - else { - $has_condition = TRUE; - $sub_group->condition($clause['field'], $clause['value'], $clause['operator']); + if (!empty($info['conditions'])) { + $sub_group = $info['type'] == 'OR' ? db_or() : db_and(); + foreach ($info['conditions'] as $key => $clause) { + // DBTNG doesn't support to add the same subquery twice to the main + // query and the count query, so clone the subquery to have two instances + // of the same object. - http://drupal.org/node/1112854 + if (is_object($clause['value']) && $clause['value'] instanceof SelectQuery) { + $clause['value'] = clone $clause['value']; + } + if ($clause['operator'] == 'formula') { + $has_condition = TRUE; + $sub_group->where($clause['field'], $clause['value']); + } + else { + $has_condition = TRUE; + $sub_group->condition($clause['field'], $clause['value'], $clause['operator']); + } } + $main_group->condition($sub_group); } - $main_group->condition($sub_group); } if ($has_condition) { return $main_group; @@ -1168,7 +1181,15 @@ class views_plugin_query_default extends views_plugin_query { // Go ahead and build the query. // db_select doesn't support to specify the key, so use getConnection directly. - $query = Database::getConnection($target, $key)->select($this->base_table, $this->base_table, $options)->addTag('views'); + $query = Database::getConnection($target, $key) + ->select($this->base_table, $this->base_table, $options) + ->addTag('views') + ->addTag('views_' . $this->view->name); + + // Add the tags added to the view itself. + foreach ($this->tags as $tag) { + $query->addTag($tag); + } if (!empty($distinct)) { $query->distinct(); @@ -1220,6 +1241,11 @@ class views_plugin_query_default extends views_plugin_query { $query->condition($condition); } + // Add a query comment. + if (!empty($this->options['query_comment'])) { + $query->comment($this->options['query_comment']); + } + // Add all query substitutions as metadata. $query->addMetaData('views_substitutions', module_invoke_all('views_query_substitutions', $this)); @@ -1321,21 +1347,22 @@ class views_plugin_query_default extends views_plugin_query { $start = microtime(TRUE); - if ($this->pager->use_count_query() || !empty($view->get_total_rows)) { - $this->pager->execute_count_query($count_query); - } - // Let the pager modify the query to add limits. - $this->pager->pre_execute($query); + try { + if ($this->pager->use_count_query() || !empty($view->get_total_rows)) { + $this->pager->execute_count_query($count_query); + } + + // Let the pager modify the query to add limits. + $this->pager->pre_execute($query); - if (!empty($this->limit) || !empty($this->offset)) { - // We can't have an offset without a limit, so provide a very large limit instead. - $limit = intval(!empty($this->limit) ? $this->limit : 999999); - $offset = intval(!empty($this->offset) ? $this->offset : 0); - $query->range($offset, $limit); - } + if (!empty($this->limit) || !empty($this->offset)) { + // We can't have an offset without a limit, so provide a very large limit instead. + $limit = intval(!empty($this->limit) ? $this->limit : 999999); + $offset = intval(!empty($this->offset) ? $this->offset : 0); + $query->range($offset, $limit); + } - try { $result = $query->execute(); $view->result = array(); @@ -1351,7 +1378,13 @@ class views_plugin_query_default extends views_plugin_query { } catch (Exception $e) { $view->result = array(); - debug('Exception: ' . $e->getMessage()); + if (!empty($view->live_preview)) { + drupal_set_message(time()); + drupal_set_message($e->getMessage(), 'error'); + } + else { + vpr('Exception in @human_name[@view_name]: @message', array('@human_name' => $view->human_name, '@view_name' => $view->name, '@message' => $e->getMessage())); + } } } @@ -1375,7 +1408,17 @@ class views_plugin_query_default extends views_plugin_query { 'method' => 'views_query_default_aggregation_method_simple', 'handler' => array( 'argument' => 'views_handler_argument_group_by_numeric', - 'field' => 'views_handler_field_group_by_numeric', + 'field' => 'views_handler_field_numeric', + 'filter' => 'views_handler_filter_group_by_numeric', + 'sort' => 'views_handler_sort_group_by_numeric', + ), + ), + 'count_distinct' => array( + 'title' => t('Count DISTINCT'), + 'method' => 'views_query_default_aggregation_method_distinct', + 'handler' => array( + 'argument' => 'views_handler_argument_group_by_numeric', + 'field' => 'views_handler_field_numeric', 'filter' => 'views_handler_filter_group_by_numeric', 'sort' => 'views_handler_sort_group_by_numeric', ), @@ -1385,7 +1428,6 @@ class views_plugin_query_default extends views_plugin_query { 'method' => 'views_query_default_aggregation_method_simple', 'handler' => array( 'argument' => 'views_handler_argument_group_by_numeric', - 'field' => 'views_handler_field_group_by_numeric', 'filter' => 'views_handler_filter_group_by_numeric', 'sort' => 'views_handler_sort_group_by_numeric', ), @@ -1395,7 +1437,6 @@ class views_plugin_query_default extends views_plugin_query { 'method' => 'views_query_default_aggregation_method_simple', 'handler' => array( 'argument' => 'views_handler_argument_group_by_numeric', - 'field' => 'views_handler_field_group_by_numeric', 'filter' => 'views_handler_filter_group_by_numeric', 'sort' => 'views_handler_sort_group_by_numeric', ), @@ -1405,7 +1446,6 @@ class views_plugin_query_default extends views_plugin_query { 'method' => 'views_query_default_aggregation_method_simple', 'handler' => array( 'argument' => 'views_handler_argument_group_by_numeric', - 'field' => 'views_handler_field_group_by_numeric', 'filter' => 'views_handler_filter_group_by_numeric', 'sort' => 'views_handler_sort_group_by_numeric', ), @@ -1415,15 +1455,63 @@ class views_plugin_query_default extends views_plugin_query { 'method' => 'views_query_default_aggregation_method_simple', 'handler' => array( 'argument' => 'views_handler_argument_group_by_numeric', - 'field' => 'views_handler_field_group_by_numeric', 'filter' => 'views_handler_filter_group_by_numeric', 'sort' => 'views_handler_sort_group_by_numeric', ), ), ); } + + /** + * Returns the according entity objects for the given query results. + * + */ + function get_result_entities($results, $relationship = NULL) { + $base_table = $this->base_table; + $base_table_alias = $base_table; + + if (!empty($relationship)) { + foreach ($this->view->relationship as $current) { + if ($current->alias == $relationship) { + $base_table = $current->definition['base']; + $base_table_alias = $relationship; + break; + } + } + } + $table_data = views_fetch_data($base_table); + + // Bail out if the table has not specified the according entity-type. + if (!isset($table_data['table']['entity type'])) { + return FALSE; + } + $entity_type = $table_data['table']['entity type']; + $info = entity_get_info($entity_type); + $id_alias = $this->get_field_alias($base_table_alias, $info['entity keys']['id']); + + // Assemble the ids of the entities to load. + $ids = array(); + foreach ($results as $key => $result) { + if (isset($result->$id_alias)) { + $ids[$key] = $result->$id_alias; + } + } + + $entities = entity_load($entity_type, $ids); + // Re-key the array by row-index. + $result = array(); + foreach ($ids as $key => $id) { + $result[$key] = isset($entities[$id]) ? $entities[$id] : FALSE; + } + return array($entity_type, $result); + } } function views_query_default_aggregation_method_simple($group_type, $field) { return strtoupper($group_type) . '(' . $field . ')'; } + +function views_query_default_aggregation_method_distinct($group_type, $field) { + $group_type = str_replace('_distinct', '', $group_type); + return strtoupper($group_type) . '(DISTINCT ' . $field . ')'; +} diff --git a/sites/all/modules/views/plugins/views_plugin_row.inc b/sites/all/modules/views/plugins/views_plugin_row.inc index 36b02b117..78d043e05 100644 --- a/sites/all/modules/views/plugins/views_plugin_row.inc +++ b/sites/all/modules/views/plugins/views_plugin_row.inc @@ -51,6 +51,7 @@ class views_plugin_row extends views_plugin { * Provide a form for setting options. */ function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); if (isset($this->base_table)) { $view = &$form_state['view']; @@ -144,4 +145,3 @@ class views_plugin_row extends views_plugin { /** * @} */ - diff --git a/sites/all/modules/views/plugins/views_plugin_row_fields.inc b/sites/all/modules/views/plugins/views_plugin_row_fields.inc index 307ee5fee..65510d234 100644 --- a/sites/all/modules/views/plugins/views_plugin_row_fields.inc +++ b/sites/all/modules/views/plugins/views_plugin_row_fields.inc @@ -19,6 +19,7 @@ class views_plugin_row_fields extends views_plugin_row { $options['inline'] = array('default' => array()); $options['separator'] = array('default' => ''); $options['hide_empty'] = array('default' => FALSE); + $options['default_field_elements'] = array('default' => TRUE); return $options; } @@ -33,12 +34,25 @@ class views_plugin_row_fields extends views_plugin_row { $this->options['inline'] = array(); } + $form['default_field_elements'] = array( + '#type' => 'checkbox', + '#title' => t('Provide default field wrapper elements'), + '#default_value' => $this->options['default_field_elements'], + '#description' => t('If not checked, fields that are not configured to customize their HTML elements will get no wrappers at all for their field, label and field + label wrappers. You can use this to quickly reduce the amount of markup the view provides by default, at the cost of making it more difficult to apply CSS.'), + ); + $form['inline'] = array( '#type' => 'checkboxes', '#title' => t('Inline fields'), '#options' => $options, '#default_value' => $this->options['inline'], - '#description' => t('Inline fields will be displayed next to each other rather than one after another.'), + '#description' => t('Inline fields will be displayed next to each other rather than one after another. Note that some fields will ignore this if they are block elements, particularly body fields and other formatted HTML.'), + '#dependency' => array( + 'edit-row-options-default-field-elements' => array(1), + ), + '#prefix' => '<div id="edit-row-options-inline-wrapper"><div>', + '#suffix' => '</div></div>', + ); $form['separator'] = array( @@ -66,4 +80,3 @@ class views_plugin_row_fields extends views_plugin_row { $form_state['values']['row_options']['inline'] = array_filter($form_state['values']['row_options']['inline']); } } - diff --git a/sites/all/modules/views/plugins/views_plugin_style.inc b/sites/all/modules/views/plugins/views_plugin_style.inc index 5fdece56e..4e0946e63 100644 --- a/sites/all/modules/views/plugins/views_plugin_style.inc +++ b/sites/all/modules/views/plugins/views_plugin_style.inc @@ -18,6 +18,10 @@ * Base class to define a style plugin handler. */ class views_plugin_style extends views_plugin { + /** + * Store all available tokens row rows. + */ + var $row_tokens = array(); /** * Initialize a style plugin. * @@ -40,6 +44,7 @@ class views_plugin_style extends views_plugin { $this->options += array( 'grouping' => '', + 'group_rendered' => TRUE, ); $this->definition += array( @@ -103,7 +108,7 @@ class views_plugin_style extends views_plugin { if ($this->uses_row_class()) { $class = $this->options['row_class']; if ($this->uses_fields() && $this->view->field) { - $class = $this->tokenize_value($class, $row_index); + $class = strip_tags($this->tokenize_value($class, $row_index)); } $classes = explode(' ', $class); @@ -124,10 +129,15 @@ class views_plugin_style extends views_plugin { 'text' => $value, ); - $tokens = $this->row_tokens[$row_index]; - // Grab a random field handler to perform the render. - $field = end($this->view->field); - $value = strip_tags($field->render_altered($fake_item, $tokens)); + // Row tokens might be empty, for example for node row style. + $tokens = isset($this->row_tokens[$row_index]) ? $this->row_tokens[$row_index] : array(); + if (!empty($this->view->build_info['substitutions'])) { + $tokens += $this->view->build_info['substitutions']; + } + + if ($tokens) { + $value = strtr($value, $tokens); + } } return $value; @@ -143,6 +153,7 @@ class views_plugin_style extends views_plugin { function option_definition() { $options = parent::option_definition(); $options['grouping'] = array('default' => ''); + $options['group_rendered'] = array('default' => TRUE); if ($this->uses_row_class()) { $options['row_class'] = array('default' => ''); } @@ -151,6 +162,7 @@ class views_plugin_style extends views_plugin { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); // Only fields-based views can handle grouping. Style plugins can also exclude // themselves from being groupable by setting their "use grouping" definiton // key to FALSE. @@ -168,6 +180,12 @@ class views_plugin_style extends views_plugin { '#default_value' => $this->options['grouping'], '#description' => t('You may optionally specify a field by which to group the records. Leave blank to not group.'), ); + $form['group_rendered'] = array( + '#type' => 'checkbox', + '#title' => t('Use rendered output to group rows'), + '#default_value' => $this->options['group_rendered'], + '#description' => t('If enabled the rendered output of the grouping field is used to group the rows.'), + ); } } @@ -220,21 +238,26 @@ class views_plugin_style extends views_plugin { } // Group the rows according to the grouping field, if specified. - $sets = $this->render_grouping($this->view->result, $this->options['grouping']); + $sets = $this->render_grouping( + $this->view->result, + $this->options['grouping'], + (bool) $this->options['group_rendered'] + ); // Render each group separately and concatenate. Plugins may override this // method if they wish some other way of handling grouping. $output = ''; - foreach ($sets as $title => $records) { + foreach ($sets as $group) { + $title = $group['group']; if ($this->uses_row_plugin()) { $rows = array(); - foreach ($records as $row_index => $row) { + foreach ($group['rows'] as $row_index => $row) { $this->view->row_index = $row_index; $rows[$row_index] = $this->row_plugin->render($row); } } else { - $rows = $records; + $rows = $group['rows']; } $output .= theme($this->theme_functions(), @@ -243,7 +266,7 @@ class views_plugin_style extends views_plugin { 'options' => $this->options, 'rows' => $rows, 'title' => $title) - ); + ); } unset($this->view->row_index); return $output; @@ -257,10 +280,14 @@ class views_plugin_style extends views_plugin { * @param $grouping_field * The field id on which to group. If empty, the result set will be given * a single group with an empty string as a label. + * @param $group_rendered + * Boolean value to switch whether to use the rendered or the raw field + * value for grouping. If set to NULL the return is structured as before + * Views 7.x-3.0-rc2. * @return * The grouped record set. */ - function render_grouping($records, $grouping_field = '') { + function render_grouping($records, $grouping_field = '', $group_rendered = NULL) { // Make sure fields are rendered $this->render_fields($this->view->result); $sets = array(); @@ -271,18 +298,42 @@ class views_plugin_style extends views_plugin { // we can control any special formatting of the grouping field through // the admin or theme layer or anywhere else we'd like. if (isset($this->view->field[$grouping_field])) { - $grouping = $this->get_field($index, $grouping_field); + $group_content = $this->get_field($index, $grouping_field); if ($this->view->field[$grouping_field]->options['label']) { - $grouping = $this->view->field[$grouping_field]->options['label'] . ': ' . $grouping; + $group_content = $this->view->field[$grouping_field]->options['label'] . ': ' . $group_content; + } + if ($group_rendered) { + $grouping = $group_content; + } + else { + $grouping = $this->get_field_value($index, $grouping_field); + } + if (empty($sets[$grouping]['group'])) { + $sets[$grouping]['group'] = $group_content; } } - $sets[$grouping][$index] = $row; + $sets[$grouping]['rows'][$index] = $row; } } else { // Create a single group with an empty grouping field. - $sets[''] = $records; + $sets[''] = array( + 'group' => '', + 'rows' => $records, + ); + } + + // If this parameter isn't explicitely set modify the output to be fully + // backward compatible to code before Views 7.x-3.0-rc2. + // @TODO Remove this as soon as possible e.g. October 2020 + if ($group_rendered === NULL) { + $old_style_sets = array(); + foreach ($sets as $group) { + $old_style_sets[$group['group']] = $group['rows']; + } + $sets = $old_style_sets; } + return $sets; } @@ -297,23 +348,27 @@ class views_plugin_style extends views_plugin { return; } - if (isset($this->rendered_fields)) { - return $this->rendered_fields; - } - - $this->view->row_index = 0; - $keys = array_keys($this->view->field); - foreach ($result as $count => $row) { - $this->view->row_index = $count; - foreach ($keys as $id) { - $this->rendered_fields[$count][$id] = $this->view->field[$id]->theme($row); - } + if (!isset($this->rendered_fields)) { + $this->rendered_fields = array(); + $this->view->row_index = 0; + $keys = array_keys($this->view->field); + + // If all fields have a field::access FALSE there might be no fields, so + // there is no reason to execute this code. + if (!empty($keys)) { + foreach ($result as $count => $row) { + $this->view->row_index = $count; + foreach ($keys as $id) { + $this->rendered_fields[$count][$id] = $this->view->field[$id]->theme($row); + } - if ($this->uses_tokens()) { - $this->row_tokens[$count] = $this->view->field[$id]->get_render_tokens(array()); + $this->row_tokens[$count] = $this->view->field[$id]->get_render_tokens(array()); + } } + unset($this->view->row_index); } - unset($this->view->row_index); + + return $this->rendered_fields; } /** @@ -334,6 +389,21 @@ class views_plugin_style extends views_plugin { } } + /** + * Get the raw field value. + * + * @param $index + * The index count of the row. + * @param $field + * The id of the field. + */ + function get_field_value($index, $field) { + $this->view->row_index = $index; + $value = $this->view->field[$field]->get_value($this->view->result[$index]); + unset($this->view->row_index); + return $value; + } + function validate() { $errors = parent::validate(); @@ -363,4 +433,3 @@ class views_plugin_style extends views_plugin { /** * @} */ - diff --git a/sites/all/modules/views/plugins/views_plugin_style_grid.inc b/sites/all/modules/views/plugins/views_plugin_style_grid.inc index 91722f267..915f14cd5 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_grid.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_grid.inc @@ -33,6 +33,8 @@ class views_plugin_style_grid extends views_plugin_style { '#type' => 'textfield', '#title' => t('Number of columns'), '#default_value' => $this->options['columns'], + '#required' => TRUE, + '#element_validate' => array('views_element_validate_integer'), ); $form['alignment'] = array( '#type' => 'radios', @@ -41,7 +43,7 @@ class views_plugin_style_grid extends views_plugin_style { '#default_value' => $this->options['alignment'], '#description' => t('Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down.'), ); - + $form['fill_single_line'] = array( '#type' => 'checkbox', '#title' => t('Fill up single line'), @@ -57,4 +59,3 @@ class views_plugin_style_grid extends views_plugin_style { ); } } - diff --git a/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc b/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc index f8df2f645..1da6f2119 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_jump_menu.inc @@ -56,7 +56,7 @@ class views_plugin_style_jump_menu extends views_plugin_style { $form['hide'] = array( '#type' => 'checkbox', - '#title' => t('Hide the "Go" button.'), + '#title' => t('Hide the "Go" button'), '#default_value' => !empty($this->options['hide']), '#description' => t('If hidden, this button will only be hidden for users with javascript and the page will automatically jump when the select is changed.'), ); @@ -76,7 +76,7 @@ class views_plugin_style_jump_menu extends views_plugin_style { $form['default_value'] = array( '#type' => 'checkbox', - '#title' => t('Select the current contextual filter value.'), + '#title' => t('Select the current contextual filter value'), '#default_value' => !empty($this->options['default_value']), '#description' => t('If checked, the current path will be displayed as the default option in the jump menu, if applicable.'), ); @@ -98,27 +98,28 @@ class views_plugin_style_jump_menu extends views_plugin_style { foreach ($sets as $title => $records) { foreach ($records as $row_index => $row) { $this->view->row_index = $row_index; - $path = strip_tags($this->get_field($this->view->row_index, $this->options['path'])); + $path = strip_tags(decode_entities($this->get_field($this->view->row_index, $this->options['path']))); // Putting a '/' in front messes up url() so let's take that out // so users don't shoot themselves in the foot. - if (strpos($path, '/') === 0) { - $path = substr($path, 1); + $base_path = base_path(); + if (strpos($path, $base_path) === 0) { + $path = drupal_substr($path, drupal_strlen($base_path)); } // use drupal_parse_url() to preserve query and fragment in case the user // wants to do fun tricks. $url_options = drupal_parse_url($path); - $path = $url_options['path']; - $path = url($path, $url_options); - $field = strip_tags($this->row_plugin->render($row)); + $path = url($url_options['path'], $url_options); + $field = strip_tags(decode_entities($this->row_plugin->render($row))); + $key = md5($path . $field) . "::" . $path; if ($title) { - $options[$title][$path] = $field; + $options[$title][$key] = $field; } else { - $options[$path] = $field; + $options[$key] = $field; } - $paths[$path] = $path; + $paths[$path] = $key; $this->view->row_index++; } } @@ -126,7 +127,7 @@ class views_plugin_style_jump_menu extends views_plugin_style { $default_value = ''; if ($this->options['default_value'] && !empty($paths[url($_GET['q'])])) { - $default_value = url($_GET['q']); + $default_value = $paths[url($_GET['q'])]; } ctools_include('jump-menu'); @@ -138,7 +139,7 @@ class views_plugin_style_jump_menu extends views_plugin_style { ); $form = drupal_get_form('ctools_jump_menu', $options, $settings); - return drupal_render($form); + return $form; } function render_set($title, $records) { diff --git a/sites/all/modules/views/plugins/views_plugin_style_list.inc b/sites/all/modules/views/plugins/views_plugin_style_list.inc index 2b21ee85c..36620042a 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_list.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_list.inc @@ -50,4 +50,3 @@ class views_plugin_style_list extends views_plugin_style { ); } } - diff --git a/sites/all/modules/views/plugins/views_plugin_style_rss.inc b/sites/all/modules/views/plugins/views_plugin_style_rss.inc index 0a0598e2b..9e1981928 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_rss.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_rss.inc @@ -56,7 +56,7 @@ class views_plugin_style_rss extends views_plugin_style { '#title' => t('RSS description'), '#default_value' => $this->options['description'], '#description' => t('This will appear in the RSS feed itself.'), - '#dependency' => array('edit-style-options-override' => array(FALSE)), + '#maxlength' => 1024, ); } @@ -79,7 +79,7 @@ class views_plugin_style_rss extends views_plugin_style { // This will be filled in by the row plugin and is used later on in the // theming output. - $this->namespaces = array(); + $this->namespaces = array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/'); // Fetch any additional elements for the channel and merge in their // namespaces. @@ -90,15 +90,18 @@ class views_plugin_style_rss extends views_plugin_style { } } - foreach ($this->view->result as $row) { + foreach ($this->view->result as $row_index => $row) { + $this->view->row_index = $row_index; $rows .= $this->row_plugin->render($row); } - return theme($this->theme_functions(), + $output = theme($this->theme_functions(), array( 'view' => $this->view, 'options' => $this->options, 'rows' => $rows )); + unset($this->view->row_index); + return $output; } } diff --git a/sites/all/modules/views/plugins/views_plugin_style_summary.inc b/sites/all/modules/views/plugins/views_plugin_style_summary.inc index 527dd3b42..304f024d3 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_summary.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_summary.inc @@ -28,6 +28,7 @@ class views_plugin_style_summary extends views_plugin_style { } function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); $form['base_path'] = array( '#type' => 'textfield', '#title' => t('Base path'), @@ -48,11 +49,14 @@ class views_plugin_style_summary extends views_plugin_style { '#default_value' => !empty($this->options['override']), '#title' => t('Override number of items to display'), ); + $form['items_per_page'] = array( '#type' => 'textfield', '#title' => t('Items to display'), '#default_value' => $this->options['items_per_page'], - '#dependency' => array('edit-style-options-override' => array(TRUE)), + '#dependency' => array( + 'edit-options-summary-options-' . str_replace('_', '-', $this->definition['name']) . '-override' => array(1) + ), ); } @@ -70,4 +74,3 @@ class views_plugin_style_summary extends views_plugin_style { )); } } - diff --git a/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc b/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc index 688a6cfa4..bfa66833f 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_summary_jump_menu.inc @@ -52,7 +52,7 @@ class views_plugin_style_summary_jump_menu extends views_plugin_style { $form['hide'] = array( '#type' => 'checkbox', - '#title' => t('Hide the "Go" button.'), + '#title' => t('Hide the "Go" button'), '#default_value' => !empty($this->options['hide']), '#description' => t('If hidden, this button will only be hidden for users with javascript and the page will automatically jump when the select is changed.'), ); @@ -72,7 +72,7 @@ class views_plugin_style_summary_jump_menu extends views_plugin_style { $form['default_value'] = array( '#type' => 'checkbox', - '#title' => t('Select the current contextual filter value.'), + '#title' => t('Select the current contextual filter value'), '#default_value' => !empty($this->options['default_value']), '#description' => t('If checked, the current contextual filter value will be displayed as the default option in the jump menu, if applicable.'), ); @@ -89,21 +89,29 @@ class views_plugin_style_summary_jump_menu extends views_plugin_style { $options = array(); $default_value = ''; + $row_args = array(); + foreach ($this->view->result as $id => $row) { + $row_args[$id] = $argument->summary_argument($row); + } + $argument->process_summary_arguments($row_args); + foreach ($this->view->result as $id => $row) { $args = $this->view->args; - $args[$argument->position] = $argument->summary_argument($row); + $args[$argument->position] = $row_args[$id]; $base_path = NULL; - if (!empty($argument->options['style_options']['base_path'])) { - $base_path = $argument->options['style_options']['base_path']; + if (!empty($argument->options['summary_options']['base_path'])) { + $base_path = $argument->options['summary_options']['base_path']; } $path = url($this->view->get_url($args, $base_path), $url_options); + $summary_value = strip_tags($argument->summary_name($row)); + $key = md5($path . $summary_value) . "::" . $path; - $options[$path] = strip_tags($argument->summary_name($row)); + $options[$key] = $summary_value; if (!empty($this->options['count'])) { - $options[$path] .= ' (' . intval($row->{$argument->count_alias}) . ')'; + $options[$key] .= ' (' . intval($row->{$argument->count_alias}) . ')'; } if ($this->options['default_value'] && $_GET['q'] == $this->view->get_url($args)) { - $default_value = $path; + $default_value = $key; } } @@ -119,4 +127,3 @@ class views_plugin_style_summary_jump_menu extends views_plugin_style { return drupal_render($form); } } - diff --git a/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc b/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc index 69a8d721d..56a002410 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_summary_unformatted.inc @@ -31,4 +31,3 @@ class views_plugin_style_summary_unformatted extends views_plugin_style_summary ); } } - diff --git a/sites/all/modules/views/plugins/views_plugin_style_table.inc b/sites/all/modules/views/plugins/views_plugin_style_table.inc index e0b784bc0..2ad5f64bc 100644 --- a/sites/all/modules/views/plugins/views_plugin_style_table.inc +++ b/sites/all/modules/views/plugins/views_plugin_style_table.inc @@ -52,7 +52,12 @@ class views_plugin_style_table extends views_plugin_style { return; } $sort = $this->options['default']; - $this->order = !empty($this->options['order']) ? $this->options['order'] : 'asc'; + if (!empty($this->options['info'][$sort]['default_sort_order'])) { + $this->order = $this->options['info'][$sort]['default_sort_order']; + } + else { + $this->order = !empty($this->options['order']) ? $this->options['order'] : 'asc'; + } } else { $sort = $_GET['order']; @@ -156,14 +161,6 @@ class views_plugin_style_table extends views_plugin_style { '#description' => t('(Sticky header effects will not be active for preview below, only on live output.)'), ); - $form['order'] = array( - '#type' => 'select', - '#title' => t('Default sort order'), - '#options' => array('asc' => t('Ascending'), 'desc' => t('Descending')), - '#default_value' => $this->options['order'], - '#description' => t('If a default sort order is selected, what order should it use by default.'), - ); - $form['summary'] = array( '#type' => 'textfield', '#title' => t('Table summary'), @@ -243,6 +240,11 @@ class views_plugin_style_table extends views_plugin_style { '#default_value' => isset($this->options['info'][$field]['separator']) ? $this->options['info'][$field]['separator'] : '', '#dependency' => array($id => array($field)), ); + $form['info'][$field]['empty_column'] = array( + '#type' => 'checkbox', + '#default_value' => isset($this->options['info'][$field]['empty_column']) ? $this->options['info'][$field]['empty_column'] : FALSE, + '#dependency' => array($id => array($field)), + ); // markup for the field name $form['info'][$field]['name'] = array( @@ -261,7 +263,7 @@ class views_plugin_style_table extends views_plugin_style { $form['empty_table'] = array( '#type' => 'checkbox', - '#title' => t('Show the empty text in the table.'), + '#title' => t('Show the empty text in the table'), '#default_value' => $this->options['empty_table'], '#description' => t('Per default the table is hidden for an empty view. With this option it is posible to show an empty table with the text in it.'), ); @@ -270,7 +272,7 @@ class views_plugin_style_table extends views_plugin_style { '#markup' => '<div class="description form-item">' . t('Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column click sortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section.') . '</div>', ); } - + function even_empty() { return parent::even_empty() || !empty($this->options['empty_table']); } diff --git a/sites/all/modules/views/plugins/views_wizard/users.inc b/sites/all/modules/views/plugins/views_wizard/users.inc index 038fb7cb9..176a9e1ee 100644 --- a/sites/all/modules/views/plugins/views_wizard/users.inc +++ b/sites/all/modules/views/plugins/views_wizard/users.inc @@ -33,4 +33,3 @@ $plugin = array( ), ), ); - diff --git a/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php b/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php index cac9a7d5d..c314befeb 100644 --- a/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php +++ b/sites/all/modules/views/plugins/views_wizard/views_ui_base_views_wizard.class.php @@ -61,7 +61,7 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { $entities = entity_get_info(); foreach ($entities as $entity_type => $entity_info) { - if ($this->base_table == $entity_info['base table']) { + if (isset($entity_info['base table']) && $this->base_table == $entity_info['base table']) { $this->entity_info = $entity_info; $this->entity_type = $entity_type; } @@ -133,11 +133,16 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { $this->build_form_style($form, $form_state, 'page'); $form['displays']['page']['options']['items_per_page'] = array( - '#title' => t('Items per page'), + '#title' => t('Items to display'), '#type' => 'textfield', '#default_value' => '10', '#size' => 5, - '#element_validate' => array('_element_validate_integer_positive'), + '#element_validate' => array('views_element_validate_integer'), + ); + $form['displays']['page']['options']['pager'] = array( + '#title' => t('Use a pager'), + '#type' => 'checkbox', + '#default_value' => TRUE, ); $form['displays']['page']['options']['link'] = array( '#title' => t('Create a menu link'), @@ -263,7 +268,12 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { '#type' => 'textfield', '#default_value' => '5', '#size' => 5, - '#element_validate' => array('_element_validate_integer_positive'), + '#element_validate' => array('views_element_validate_integer'), + ); + $form['displays']['block']['options']['pager'] = array( + '#title' => t('Use a pager'), + '#type' => 'checkbox', + '#default_value' => FALSE, ); return $form; @@ -418,23 +428,27 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { * By default, this adds a "sorted by [date]" filter (when it is available). */ protected function build_sorts(&$form, &$form_state) { + $sorts = array( + 'none' => t('Unsorted'), + ); // Check if we are allowed to sort by creation date. - $sorts = array(); if (!empty($this->plugin['created_column'])) { - $sorts = array( + $sorts += array( $this->plugin['created_column'] . ':DESC' => t('Newest first'), $this->plugin['created_column'] . ':ASC' => t('Oldest first'), ); - if (isset($this->plugin['available_sorts'])) { - $sorts += $this->plugin['available_sorts']; - } } + if (isset($this->plugin['available_sorts'])) { + $sorts += $this->plugin['available_sorts']; + } + + // If there is no sorts option available continue. if (!empty($sorts)) { $form['displays']['show']['sort'] = array( '#type' => 'select', '#title' => t('sorted by'), '#options' => $sorts, - '#default_value' => isset($this->plugin['created_column']) ? $this->plugin['created_column'] . ':DESC' : NULL, + '#default_value' => isset($this->plugin['created_column']) ? $this->plugin['created_column'] . ':DESC' : 'none', ); } } @@ -649,13 +663,26 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { } } } + $table_data = views_fetch_data($table); + // Check whether the bundle key filter handler is or an child of it views_handler_filter_in_operator + // If it's not just use a single value instead of an array. + $handler = $table_data[$bundle_key]['filter']['handler']; + if ($handler == 'views_handler_filter_in_operator' || is_subclass_of($handler, 'views_handler_filter_in_operator')) { + $value = drupal_map_assoc(array($form_state['values']['show']['type'])); + } + else { + $value = $form_state['values']['show']['type']; + } + $filters[$bundle_key] = array( 'id' => $bundle_key, 'table' => $table, 'field' => $bundle_key, - 'value' => drupal_map_assoc(array($form_state['values']['show']['type'])), + 'value' => $value, ); } + + // @todo: Figure out why this isn't part of node_views_wizard. if (!empty($form_state['values']['show']['tagged_with']['tids'])) { $filters['tid'] = array( 'id' => 'tid', @@ -696,7 +723,8 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { protected function default_display_sorts_user($form, $form_state) { $sorts = array(); - if (!empty($form_state['values']['show']['sort'])) { + // Don't add a sort if there is no form value or the user selected none as sort. + if (!empty($form_state['values']['show']['sort']) && $form_state['values']['show']['sort'] != 'none') { list($column, $sort) = explode(':', $form_state['values']['show']['sort']); // Column either be a column-name or the table-columnn-ame. $column = explode('-', $column); @@ -728,7 +756,15 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { $display_options['style_plugin'] = $page['style']['style_plugin']; // Not every style plugin supports row style plugins. $display_options['row_plugin'] = isset($page['style']['row_plugin']) ? $page['style']['row_plugin'] : 'fields'; - $display_options['pager']['type'] = 'full'; + if (empty($page['items_per_page'])) { + $display_options['pager']['type'] = 'none'; + } + elseif ($page['pager']) { + $display_options['pager']['type'] = 'full'; + } + else { + $display_options['pager']['type'] = 'some'; + } $display_options['pager']['options']['items_per_page'] = $page['items_per_page']; if (!empty($page['link'])) { $display_options['menu']['type'] = 'normal'; @@ -744,7 +780,7 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface { $display_options['title'] = $block['title']; $display_options['style_plugin'] = $block['style']['style_plugin']; $display_options['row_plugin'] = isset($block['style']['row_plugin']) ? $block['style']['row_plugin'] : 'fields'; - $display_options['pager']['type'] = 'full'; + $display_options['pager']['type'] = $block['pager'] ? 'full' : (empty($block['items_per_page']) ? 'none' : 'some'); $display_options['pager']['options']['items_per_page'] = $block['items_per_page']; return $display_options; } diff --git a/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test b/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test new file mode 100644 index 000000000..8de9777c4 --- /dev/null +++ b/sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test @@ -0,0 +1,101 @@ +<?php +/** + * @file + * Test the argument_comment_user_uid handler. + */ +class viewsHandlerArgumentCommentUserUidTest extends ViewsSqlTest { + public static function getInfo() { + return array( + 'name' => 'Tests handler argument_comment_user_uid', + 'description' => 'Tests the user posted or commented argument handler', + 'group' => 'Views Modules', + ); + } + + /** + * Post comment. + * + * @param $node + * Node to post comment on. + * @param $comment + * Comment to save + */ + function postComment($node, $comment = array()) { + $comment += array( + 'uid' => $this->loggedInUser->uid, + 'nid' => $node->nid, + 'cid' => '', + 'pid' => '', + ); + return comment_save((object) $comment); + } + + function setUp() { + parent::setUp(); + + // Add two users, create a node with the user1 as author and another node with user2 as author. + // For the second node add a comment from user1. + $this->account = $this->drupalCreateUser(); + $this->account2 = $this->drupalCreateUser(); + $this->drupalLogin($this->account); + $this->node_user_posted = $this->drupalCreateNode(); + $this->node_user_commented = $this->drupalCreateNode(array('uid' => $this->account2->uid)); + $this->postComment($this->node_user_commented); + } + + function testCommentUserUidTest() { + $view = $this->view_comment_user_uid(); + + + $this->executeView($view, array($this->account->uid)); + $resultset = array( + array( + 'nid' => $this->node_user_posted->nid, + ), + array( + 'nid' => $this->node_user_commented->nid, + ), + ); + $this->column_map = array('nid' => 'nid'); + debug($view->result); + $this->assertIdenticalResultset($view, $resultset, $this->column_map); + } + + function view_comment_user_uid() { + $view = new view; + $view->name = 'test_comment_user_uid'; + $view->description = ''; + $view->tag = 'default'; + $view->base_table = 'node'; + $view->human_name = 'test_comment_user_uid'; + $view->core = 7; + $view->api_version = '3.0'; + $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ + $handler = $view->new_display('default', 'Master', 'default'); + $handler->display->display_options['access']['type'] = 'perm'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['style_plugin'] = 'default'; + $handler->display->display_options['row_plugin'] = 'node'; + /* Field: Content: nid */ + $handler->display->display_options['fields']['nid']['id'] = 'nid'; + $handler->display->display_options['fields']['nid']['table'] = 'node'; + $handler->display->display_options['fields']['nid']['field'] = 'nid'; + /* Contextual filter: Content: User posted or commented */ + $handler->display->display_options['arguments']['uid_touch']['id'] = 'uid_touch'; + $handler->display->display_options['arguments']['uid_touch']['table'] = 'node'; + $handler->display->display_options['arguments']['uid_touch']['field'] = 'uid_touch'; + $handler->display->display_options['arguments']['uid_touch']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['uid_touch']['default_argument_skip_url'] = 0; + $handler->display->display_options['arguments']['uid_touch']['summary']['number_of_records'] = '0'; + $handler->display->display_options['arguments']['uid_touch']['summary']['format'] = 'default_summary'; + $handler->display->display_options['arguments']['uid_touch']['summary_options']['items_per_page'] = '25'; + + return $view; + } +} diff --git a/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test b/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test new file mode 100644 index 000000000..c50408830 --- /dev/null +++ b/sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test @@ -0,0 +1,35 @@ +<?php +/** + * @file + * Test the filter_comment_user_uid handler. + * The actual stuff is done in the parent class. + */ +class viewsHandlerFilterCommentUserUidTest extends viewsHandlerArgumentCommentUserUidTest { + public static function getInfo() { + return array( + 'name' => 'Tests handler filter_comment_user_uid', + 'description' => 'Tests the user posted or commented filter handler', + 'group' => 'Views Modules', + ); + } + + /** + * Override the view from the argument test case to remove the argument and + * add filter with the uid as the value. + */ + function view_comment_user_uid() { + $view = parent::view_comment_user_uid(); + // Remove the argument. + $view->set_item('default', 'argument', 'uid_touch', NULL); + + $options = array( + 'id' => 'uid_touch', + 'table' => 'node', + 'field' => 'uid_touch', + 'value' => array($this->loggedInUser->uid), + ); + $view->add_item('default', 'filter', 'node', 'uid_touch', $options); + + return $view; + } +} diff --git a/sites/all/modules/views/tests/handlers/views_handler_argument_null.test b/sites/all/modules/views/tests/handlers/views_handler_argument_null.test index 6a978bd40..da01136c7 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_argument_null.test +++ b/sites/all/modules/views/tests/handlers/views_handler_argument_null.test @@ -32,7 +32,7 @@ class ViewsHandlerArgumentNullTest extends ViewsSqlTest { $this->executeView($view); - // Take sure that the argument is not validated yet. + // Make sure that the argument is not validated yet. unset($view->argument['null']->argument_validated); $this->assertTrue($view->argument['null']->validate_arg(26)); // test must_not_be option. diff --git a/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test b/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test index 1b910b87f..a6c95f931 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test +++ b/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test @@ -16,7 +16,7 @@ class ViewsHandlerFieldBooleanTest extends ViewsSqlTest { $data[3]['age'] = 0; return $data; } - + function viewsData() { $data = parent::viewsData(); $data['views_test']['age']['field']['handler'] = 'views_handler_field_boolean'; @@ -40,24 +40,24 @@ class ViewsHandlerFieldBooleanTest extends ViewsSqlTest { // This is john, which has no age, there are no custom formats defined, yet. $this->assertEqual(t('No'), $view->field['age']->advanced_render($view->result[0])); $this->assertEqual(t('Yes'), $view->field['age']->advanced_render($view->result[1])); - + // Reverse the output. $view->field['age']->options['not'] = TRUE; $this->assertEqual(t('Yes'), $view->field['age']->advanced_render($view->result[0])); $this->assertEqual(t('No'), $view->field['age']->advanced_render($view->result[1])); - + unset($view->field['age']->options['not']); - + // Use another output format. $view->field['age']->options['type'] = 'true-false'; $this->assertEqual(t('False'), $view->field['age']->advanced_render($view->result[0])); $this->assertEqual(t('True'), $view->field['age']->advanced_render($view->result[1])); - + // Set a custom output format. $view->field['age']->formats['test'] = array(t('Test-True'), t('Test-False')); $view->field['age']->options['type'] = 'test'; $this->assertEqual(t('Test-False'), $view->field['age']->advanced_render($view->result[0])); $this->assertEqual(t('Test-True'), $view->field['age']->advanced_render($view->result[1])); - + } } diff --git a/sites/all/modules/views/tests/handlers/views_handler_field_counter.test b/sites/all/modules/views/tests/handlers/views_handler_field_counter.test index 4db982be4..c628a79a7 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_field_counter.test +++ b/sites/all/modules/views/tests/handlers/views_handler_field_counter.test @@ -1,6 +1,6 @@ <?php -class viewsHandlerFilterCounterTest extends ViewsSqlTest { +class ViewsHandlerFilterCounterTest extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Field: Counter', diff --git a/sites/all/modules/views/tests/handlers/views_handler_field_custom.test b/sites/all/modules/views/tests/handlers/views_handler_field_custom.test index 6a5ab307e..787cdbd70 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_field_custom.test +++ b/sites/all/modules/views/tests/handlers/views_handler_field_custom.test @@ -34,6 +34,6 @@ class ViewsHandlerFieldCustomTest extends ViewsSqlTest { $this->executeView($view); - $this->assertEqual($random, $view->field['name']->advanced_render($view->result[0])); + $this->assertEqual($random, $view->style_plugin->get_field(0, 'name')); } } diff --git a/sites/all/modules/views/tests/handlers/views_handler_field_math.test b/sites/all/modules/views/tests/handlers/views_handler_field_math.test index 26e756524..2d222e63f 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_field_math.test +++ b/sites/all/modules/views/tests/handlers/views_handler_field_math.test @@ -32,6 +32,6 @@ class ViewsHandlerFieldMath extends ViewsSqlTest { $this->executeView($view); - $this->assertEqual($rand1 + $rand2, $view->field['expression']->render($view->result[0])); + $this->assertEqual($rand1 + $rand2, $view->style_plugin->get_field(0, 'expression')); } } diff --git a/sites/all/modules/views/tests/handlers/views_handler_field_xss.test b/sites/all/modules/views/tests/handlers/views_handler_field_xss.test index e4a6488bc..c76d1880d 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_field_xss.test +++ b/sites/all/modules/views/tests/handlers/views_handler_field_xss.test @@ -48,6 +48,6 @@ class ViewsHandlerTestXss extends ViewsSqlTest { $view->result[$counter]->views_test_name = $input; $this->assertEqual($view->field['name']->advanced_render($view->result[$counter]), $expected_result); $counter++; - } + } } } diff --git a/sites/all/modules/views/tests/handlers/views_handler_filter_date.test b/sites/all/modules/views/tests/handlers/views_handler_filter_date.test index cbc0da51d..135ce4f34 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_filter_date.test +++ b/sites/all/modules/views/tests/handlers/views_handler_filter_date.test @@ -126,7 +126,7 @@ class ViewsHandlerFilterDateTest extends ViewsSqlTest { } /** - * Take sure the validation callbacks works. + * Make sure the validation callbacks works. */ function testUiValidation() { $view = $this->views_test_between(); @@ -142,7 +142,7 @@ class ViewsHandlerFilterDateTest extends ViewsSqlTest { // Generate a definitive wrong value, which should be checked by validation. $edit['options[value][value]'] = $this->randomString() . '-------'; $this->drupalPost(NULL, $edit, t('Apply')); - $this->assertText(t('Invalid date format.'), 'Take sure that validation is runned and the invalidate date format is identified.'); + $this->assertText(t('Invalid date format.'), 'Make sure that validation is runned and the invalidate date format is identified.'); } function views_test_between() { @@ -151,7 +151,9 @@ class ViewsHandlerFilterDateTest extends ViewsSqlTest { $view->description = ''; $view->tag = ''; $view->base_table = 'node'; - $view->api_version = '3.0-alpha1'; + $view->human_name = ''; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ /* Display: Master */ @@ -159,6 +161,7 @@ class ViewsHandlerFilterDateTest extends ViewsSqlTest { $handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none'; $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['exposed_form']['type'] = 'basic'; $handler->display->display_options['pager']['type'] = 'full'; $handler->display->display_options['style_plugin'] = 'default'; @@ -167,7 +170,7 @@ class ViewsHandlerFilterDateTest extends ViewsSqlTest { $handler->display->display_options['fields']['nid']['id'] = 'nid'; $handler->display->display_options['fields']['nid']['table'] = 'node'; $handler->display->display_options['fields']['nid']['field'] = 'nid'; - /* Filter: Content: Updated date */ + /* Filter criterion: Content: Post date */ $handler->display->display_options['filters']['created']['id'] = 'created'; $handler->display->display_options['filters']['created']['table'] = 'node'; $handler->display->display_options['filters']['created']['field'] = 'created'; diff --git a/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test b/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test index 91a8d7b0f..96e82aaec 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test +++ b/sites/all/modules/views/tests/handlers/views_handler_filter_equality.test @@ -1,6 +1,6 @@ <?php -class viewsHandlerFilterEqualityTest extends ViewsSqlTest { +class ViewsHandlerFilterEqualityTest extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Filter: Equality', diff --git a/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test b/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test index 5ca3be4d8..0112118ef 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test +++ b/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test @@ -1,6 +1,6 @@ <?php -class viewsHandlerFilterNumericTest extends ViewsSqlTest { +class ViewsHandlerFilterNumericTest extends ViewsSqlTest { var $column_map = array(); public static function getInfo() { diff --git a/sites/all/modules/views/tests/handlers/views_handler_filter_string.test b/sites/all/modules/views/tests/handlers/views_handler_filter_string.test index 94102a095..67b870d13 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_filter_string.test +++ b/sites/all/modules/views/tests/handlers/views_handler_filter_string.test @@ -1,6 +1,6 @@ <?php -class viewsHandlerFilterStringTest extends ViewsSqlTest { +class ViewsHandlerFilterStringTest extends ViewsSqlTest { var $column_map = array(); public static function getInfo() { @@ -40,7 +40,7 @@ class viewsHandlerFilterStringTest extends ViewsSqlTest { } /** - * A extended test dataset. + * An extended test dataset. */ protected function dataSet() { $dataset = parent::dataSet(); @@ -146,7 +146,6 @@ class viewsHandlerFilterStringTest extends ViewsSqlTest { } function testFilterStringWord() { - return; $view = $this->getBasicView(); // Change the filtering @@ -402,4 +401,4 @@ class viewsHandlerFilterStringTest extends ViewsSqlTest { ); $this->assertIdenticalResultset($view, $resultset, $this->column_map); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/handlers/views_handler_sort.test b/sites/all/modules/views/tests/handlers/views_handler_sort.test index ed9fd58d7..aa63a9a08 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_sort.test +++ b/sites/all/modules/views/tests/handlers/views_handler_sort.test @@ -6,9 +6,9 @@ class ViewsHandlerSortTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Sort: generic'), - 'description' => t('Test the core views_handler_sort handler.'), - 'group' => t('Views Handlers'), + 'name' => 'Sort: generic', + 'description' => 'Test the core views_handler_sort handler.', + 'group' => 'Views Handlers', ); } diff --git a/sites/all/modules/views/tests/handlers/views_handler_sort_date.test b/sites/all/modules/views/tests/handlers/views_handler_sort_date.test index 2d522fd8b..08b60532e 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_sort_date.test +++ b/sites/all/modules/views/tests/handlers/views_handler_sort_date.test @@ -6,9 +6,9 @@ class ViewsHandlerSortDateTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Sort: date'), - 'description' => t('Test the core views_handler_sort_date handler.'), - 'group' => t('Views Handlers'), + 'name' => 'Sort: date', + 'description' => 'Test the core views_handler_sort_date handler.', + 'group' => 'Views Handlers', ); } @@ -21,7 +21,7 @@ class ViewsHandlerSortDateTest extends ViewsSqlTest { } protected function orderResultSetDateHelper($date, $granularity) { - switch ('granularity') { + switch ($granularity) { case 'second': default: return $date; diff --git a/sites/all/modules/views/tests/handlers/views_handler_sort_random.test b/sites/all/modules/views/tests/handlers/views_handler_sort_random.test index 4c179eaeb..18677a01c 100644 --- a/sites/all/modules/views/tests/handlers/views_handler_sort_random.test +++ b/sites/all/modules/views/tests/handlers/views_handler_sort_random.test @@ -6,9 +6,9 @@ class ViewsHandlerSortRandomTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Sort: random'), - 'description' => t('Test the core views_handler_sort_random handler.'), - 'group' => t('Views Handlers'), + 'name' => 'Sort: random', + 'description' => 'Test the core views_handler_sort_random handler.', + 'group' => 'Views Handlers', ); } diff --git a/sites/all/modules/views/tests/styles/views_plugin_style.test b/sites/all/modules/views/tests/styles/views_plugin_style.test new file mode 100644 index 000000000..5bad590b5 --- /dev/null +++ b/sites/all/modules/views/tests/styles/views_plugin_style.test @@ -0,0 +1,106 @@ +<?php + +/** + * @file + * Tests some general style plugin related functionality. + */ +class ViewsPluginStyleTestCase extends ViewsSqlTest { + public static function getInfo() { + return array( + 'name' => 'Styles', + 'description' => 'Test general style functionality.', + 'group' => 'Views Plugins', + ); + } + + /** + * Tests the groupby features of styles. + */ + function testGroupBy() { + $view = $this->getBasicView(); + // Setup grouping by the job. + $view->init_display(); + $view->init_style(); + $view->style_plugin->options['grouping'] = 'job'; + + // Reduce the amount of items to make the test a bit easier. + // Set up the pager. + $view->display['default']->handler->override_option('pager', array( + 'type' => 'some', + 'options' => array('items_per_page' => 3), + )); + + // Add the job field . + $view->display['default']->handler->override_option('fields', array( + 'name' => array( + 'id' => 'name', + 'table' => 'views_test', + 'field' => 'name', + 'relationship' => 'none', + ), + 'job' => array( + 'id' => 'job', + 'table' => 'views_test', + 'field' => 'job', + 'relationship' => 'none', + ), + )); + + // Now run the query and groupby the result. + $this->executeView($view); + + // This is the old way to call it. + $sets = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping']); + + $expected = array(); + // Use Job: as label, so be sure that the label is used for groupby as well. + $expected['Job: Singer'] = array(); + $expected['Job: Singer'][0] = new StdClass(); + $expected['Job: Singer'][0]->views_test_name = 'John'; + $expected['Job: Singer'][0]->views_test_job = 'Singer'; + $expected['Job: Singer'][0]->views_test_id = '1'; + $expected['Job: Singer'][1] = new StdClass(); + $expected['Job: Singer'][1]->views_test_name = 'George'; + $expected['Job: Singer'][1]->views_test_job = 'Singer'; + $expected['Job: Singer'][1]->views_test_id = '2'; + $expected['Job: Drummer'] = array(); + $expected['Job: Drummer'][2] = new StdClass(); + $expected['Job: Drummer'][2]->views_test_name = 'Ringo'; + $expected['Job: Drummer'][2]->views_test_job = 'Drummer'; + $expected['Job: Drummer'][2]->views_test_id = '3'; + + $this->assertEqual($sets, $expected, t('The style plugin should proper groupby the results')); + + $expected = array(); + $expected['Job: Singer'] = array(); + $expected['Job: Singer']['group'] = 'Job: Singer'; + $expected['Job: Singer']['rows'][0] = new StdClass(); + $expected['Job: Singer']['rows'][0]->views_test_name = 'John'; + $expected['Job: Singer']['rows'][0]->views_test_job = 'Singer'; + $expected['Job: Singer']['rows'][0]->views_test_id = '1'; + $expected['Job: Singer']['rows'][1] = new StdClass(); + $expected['Job: Singer']['rows'][1]->views_test_name = 'George'; + $expected['Job: Singer']['rows'][1]->views_test_job = 'Singer'; + $expected['Job: Singer']['rows'][1]->views_test_id = '2'; + $expected['Job: Drummer'] = array(); + $expected['Job: Drummer']['group'] = 'Job: Drummer'; + $expected['Job: Drummer']['rows'][2] = new StdClass(); + $expected['Job: Drummer']['rows'][2]->views_test_name = 'Ringo'; + $expected['Job: Drummer']['rows'][2]->views_test_job = 'Drummer'; + $expected['Job: Drummer']['rows'][2]->views_test_id = '3'; + + // The newer api passes the value of the grouping as well. + $sets_new_rendered = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping'], TRUE); + $sets_new_value = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping'], FALSE); + + $this->assertEqual($sets_new_rendered, $expected, t('The style plugins should proper groupby the results with grouped by the rendered output.')); + + // Reorder the group structure to group by value. + $expected['Singer'] = $expected['Job: Singer']; + $expected['Drummer'] = $expected['Job: Drummer']; + unset($expected['Job: Singer']); + unset($expected['Job: Drummer']); + + $this->assertEqual($sets_new_value, $expected, t('The style plugins should proper groupby the results with grouped by the value.')); + } +} diff --git a/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test b/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test new file mode 100644 index 000000000..03495c30b --- /dev/null +++ b/sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test @@ -0,0 +1,135 @@ +<?php + +class viewsPluginStyleJumpMenuTest extends ViewsSqlTest { + public static function getInfo() { + return array( + 'name' => 'Jump menu', + 'description' => 'Test jump menu style functionality.', + 'group' => 'Views Plugins', + ); + } + + + public function setUp() { + parent::setUp(); + $this->nodes = array(); + $this->nodes['page'][] = $this->drupalCreateNode(array('type' => 'page')); + $this->nodes['page'][] = $this->drupalCreateNode(array('type' => 'page')); + $this->nodes['story'][] = $this->drupalCreateNode(array('type' => 'story')); + $this->nodes['story'][] = $this->drupalCreateNode(array('type' => 'story')); + + $this->nodeTitles = array($this->nodes['page'][0]->title, $this->nodes['page'][1]->title, $this->nodes['story'][0]->title, $this->nodes['story'][1]->title); + } + + + /** + * Tests jump menues with more then one same path but maybe differnet titles. + */ + function testDuplicatePaths() { + $view = $this->getJumpMenuView(); + $view->set_display(); + $view->init_handlers(); + + // Setup a [path] which would leed to "duplicate" paths, but still the shouldn't be used for grouping. + $view->field['nothing']->options['alter']['text'] = '[path]'; + $view->preview(); + $form = $view->style_plugin->render($view->result); + + // As there is no grouping setup it should be 4 elements. + $this->assertEqual(count($form['jump']['#options']), 4 + 1); + + // Check that all titles are part of the form as well. + $options = array_values($form['jump']['#options']); + foreach ($options as $key => $title) { + // The first one is the choose label. + if ($key == 0) { + continue; + } + $this->assertTrue($this->nodeTitles[$key - 1] == trim($title), t('Title @title should appear on the jump list, as we do not filter', array('@title' => $title))); + } + } + + function getJumpMenuView() { + $view = new view; + $view->name = 'test_jump_menu'; + $view->description = ''; + $view->tag = 'default'; + $view->base_table = 'node'; + $view->human_name = 'test_jump_menu'; + $view->core = 7; + $view->api_version = '3.0'; + $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ + $handler = $view->new_display('default', 'Master', 'default'); + $handler->display->display_options['access']['type'] = 'perm'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['style_plugin'] = 'jump_menu'; + $handler->display->display_options['style_options']['hide'] = 0; + $handler->display->display_options['style_options']['path'] = 'nothing'; + $handler->display->display_options['style_options']['default_value'] = 0; + $handler->display->display_options['row_plugin'] = 'fields'; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + $handler->display->display_options['fields']['title']['label'] = ''; + $handler->display->display_options['fields']['title']['alter']['alter_text'] = 0; + $handler->display->display_options['fields']['title']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['title']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0; + $handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0; + $handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['title']['alter']['trim'] = 0; + $handler->display->display_options['fields']['title']['alter']['html'] = 0; + $handler->display->display_options['fields']['title']['hide_empty'] = 0; + $handler->display->display_options['fields']['title']['empty_zero'] = 0; + $handler->display->display_options['fields']['title']['link_to_node'] = 1; + /* Field: Content: Type */ + $handler->display->display_options['fields']['type']['id'] = 'type'; + $handler->display->display_options['fields']['type']['table'] = 'node'; + $handler->display->display_options['fields']['type']['field'] = 'type'; + $handler->display->display_options['fields']['type']['exclude'] = 1; + /* Field: Global: Custom text */ + $handler->display->display_options['fields']['nothing']['id'] = 'nothing'; + $handler->display->display_options['fields']['nothing']['table'] = 'views'; + $handler->display->display_options['fields']['nothing']['field'] = 'nothing'; + $handler->display->display_options['fields']['nothing']['alter']['text'] = '[type]'; + $handler->display->display_options['fields']['nothing']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['external'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['replace_spaces'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['trim_whitespace'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['nl2br'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['word_boundary'] = 1; + $handler->display->display_options['fields']['nothing']['alter']['ellipsis'] = 1; + $handler->display->display_options['fields']['nothing']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['trim'] = 0; + $handler->display->display_options['fields']['nothing']['alter']['html'] = 0; + $handler->display->display_options['fields']['nothing']['element_label_colon'] = 1; + $handler->display->display_options['fields']['nothing']['element_default_classes'] = 1; + $handler->display->display_options['fields']['nothing']['hide_empty'] = 0; + $handler->display->display_options['fields']['nothing']['empty_zero'] = 0; + $handler->display->display_options['fields']['nothing']['hide_alter_empty'] = 0; + $handler->display->display_options['fields']['nothing']['exclude'] = 1; + + /* Sort criterion: Content: Post date */ + $handler->display->display_options['sorts']['created']['id'] = 'created'; + $handler->display->display_options['sorts']['created']['table'] = 'node'; + $handler->display->display_options['sorts']['created']['field'] = 'created'; + $handler->display->display_options['sorts']['created']['order'] = 'DESC'; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = 1; + $handler->display->display_options['filters']['status']['group'] = 0; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + + return $view; + } +} diff --git a/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc b/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc index 5e5c29220..82b4548c0 100644 --- a/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc +++ b/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_dynamic.inc @@ -15,4 +15,4 @@ class views_test_plugin_access_test_dynamic extends views_plugin_access { function get_access_callback() { return array('views_test_test_dynamic_access_callback', array(!empty($options['access']), 1, 2)); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc b/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc index f42c3001b..5d99731ae 100644 --- a/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc +++ b/sites/all/modules/views/tests/test_plugins/views_test_plugin_access_test_static.inc @@ -15,4 +15,4 @@ class views_test_plugin_access_test_static extends views_plugin_access { function get_access_callback() { return array('views_test_test_static_access_callback', array(!empty($options['access']))); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/user/views_user.test b/sites/all/modules/views/tests/user/views_user.test new file mode 100644 index 000000000..6800008b7 --- /dev/null +++ b/sites/all/modules/views/tests/user/views_user.test @@ -0,0 +1,137 @@ +<?php + +/** + * @file + * Tests basic user module integration into views. + */ + +class ViewsUserTestCase extends ViewsSqlTest { + public static function getInfo() { + return array( + 'name' => 'Tests basic user integration', + 'description' => 'Tests the integration of user module', + 'group' => 'Views Modules', + ); + } + + + protected function setUp() { + parent::setUp(); + + $this->users[] = $this->drupalCreateUser(); + $this->users[] = user_load(1); + $this->nodes[] = $this->drupalCreateNode(array('uid' => $this->users[0]->uid)); + $this->nodes[] = $this->drupalCreateNode(array('uid' => 1)); + } + + /** + * Add a view which has no explicit relationship to the author and check the result. + * + * @todo: Remove the following comment once the relationship is required. + * One day a view will require the relationship so it should still work + */ + public function testRelationship() { + $view = $this->test_view_user_relationship(); + + $view->execute_display(); + $expected = array(); + for ($i = 0; $i <= 1; $i++) { + $expected[$i] = array( + 'node_title' => $this->nodes[$i]->title, + 'users_uid' => $this->nodes[$i]->uid, + 'users_name' => $this->users[$i]->name, + ); + } + $this->assertIdenticalResultset($view, $expected); + } + + function test_view_user_relationship() { + $view = new view; + $view->name = 'test_user_relationship'; + $view->description = ''; + $view->tag = 'default'; + $view->base_table = 'node'; + $view->human_name = 'test_user_relationship'; + $view->core = 7; + $view->api_version = '3.0-alpha1'; + $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ + $handler = $view->new_display('default', 'Master', 'default'); + $handler->display->display_options['title'] = 'test_user_relationship'; + $handler->display->display_options['access']['type'] = 'perm'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = '10'; + $handler->display->display_options['style_plugin'] = 'default'; + $handler->display->display_options['row_plugin'] = 'fields'; + $handler->display->display_options['row_options']['hide_empty'] = 0; + $handler->display->display_options['row_options']['default_field_elements'] = 1; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + $handler->display->display_options['fields']['title']['label'] = ''; + $handler->display->display_options['fields']['title']['alter']['alter_text'] = 0; + $handler->display->display_options['fields']['title']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['title']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0; + $handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0; + $handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['title']['alter']['trim'] = 0; + $handler->display->display_options['fields']['title']['alter']['html'] = 0; + $handler->display->display_options['fields']['title']['hide_empty'] = 0; + $handler->display->display_options['fields']['title']['empty_zero'] = 0; + $handler->display->display_options['fields']['title']['link_to_node'] = 1; + /* Field: User: Name */ + $handler->display->display_options['fields']['name']['id'] = 'name'; + $handler->display->display_options['fields']['name']['table'] = 'users'; + $handler->display->display_options['fields']['name']['field'] = 'name'; + $handler->display->display_options['fields']['name']['alter']['alter_text'] = 0; + $handler->display->display_options['fields']['name']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['name']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['name']['alter']['external'] = 0; + $handler->display->display_options['fields']['name']['alter']['replace_spaces'] = 0; + $handler->display->display_options['fields']['name']['alter']['trim_whitespace'] = 0; + $handler->display->display_options['fields']['name']['alter']['nl2br'] = 0; + $handler->display->display_options['fields']['name']['alter']['word_boundary'] = 1; + $handler->display->display_options['fields']['name']['alter']['ellipsis'] = 1; + $handler->display->display_options['fields']['name']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['name']['alter']['trim'] = 0; + $handler->display->display_options['fields']['name']['alter']['html'] = 0; + $handler->display->display_options['fields']['name']['element_label_colon'] = 1; + $handler->display->display_options['fields']['name']['element_default_classes'] = 1; + $handler->display->display_options['fields']['name']['hide_empty'] = 0; + $handler->display->display_options['fields']['name']['empty_zero'] = 0; + $handler->display->display_options['fields']['name']['hide_alter_empty'] = 0; + $handler->display->display_options['fields']['name']['link_to_user'] = 1; + $handler->display->display_options['fields']['name']['overwrite_anonymous'] = 0; + /* Field: User: Uid */ + $handler->display->display_options['fields']['uid']['id'] = 'uid'; + $handler->display->display_options['fields']['uid']['table'] = 'users'; + $handler->display->display_options['fields']['uid']['field'] = 'uid'; + $handler->display->display_options['fields']['uid']['alter']['alter_text'] = 0; + $handler->display->display_options['fields']['uid']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['uid']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['uid']['alter']['external'] = 0; + $handler->display->display_options['fields']['uid']['alter']['replace_spaces'] = 0; + $handler->display->display_options['fields']['uid']['alter']['trim_whitespace'] = 0; + $handler->display->display_options['fields']['uid']['alter']['nl2br'] = 0; + $handler->display->display_options['fields']['uid']['alter']['word_boundary'] = 1; + $handler->display->display_options['fields']['uid']['alter']['ellipsis'] = 1; + $handler->display->display_options['fields']['uid']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['uid']['alter']['trim'] = 0; + $handler->display->display_options['fields']['uid']['alter']['html'] = 0; + $handler->display->display_options['fields']['uid']['element_label_colon'] = 1; + $handler->display->display_options['fields']['uid']['element_default_classes'] = 1; + $handler->display->display_options['fields']['uid']['hide_empty'] = 0; + $handler->display->display_options['fields']['uid']['empty_zero'] = 0; + $handler->display->display_options['fields']['uid']['hide_alter_empty'] = 0; + $handler->display->display_options['fields']['uid']['link_to_user'] = 1; + + return $view; + } +} diff --git a/sites/all/modules/views/tests/user/views_user_argument_default.test b/sites/all/modules/views/tests/user/views_user_argument_default.test index d326b5870..4159b596d 100644 --- a/sites/all/modules/views/tests/user/views_user_argument_default.test +++ b/sites/all/modules/views/tests/user/views_user_argument_default.test @@ -1,10 +1,11 @@ <?php + /** * @file * Tests views user argument default plugin. */ -class viewsUserArgumentDefault extends ViewsSqlTest { +class ViewsUserArgumentDefault extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Tests user argument default plugin', diff --git a/sites/all/modules/views/tests/user/views_user_argument_validate.test b/sites/all/modules/views/tests/user/views_user_argument_validate.test index 0276d7bd9..1d5678422 100644 --- a/sites/all/modules/views/tests/user/views_user_argument_validate.test +++ b/sites/all/modules/views/tests/user/views_user_argument_validate.test @@ -7,7 +7,7 @@ module_load_include('test', 'views', 'tests/views_query'); -class viewsUserArgumentValidate extends viewsSqlTest { +class ViewsUserArgumentValidate extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Tests user argument validator', diff --git a/sites/all/modules/views/tests/views_access.test b/sites/all/modules/views/tests/views_access.test index 4350fb6b3..14bc53275 100644 --- a/sites/all/modules/views/tests/views_access.test +++ b/sites/all/modules/views/tests/views_access.test @@ -6,9 +6,9 @@ class ViewsAccessTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Access'), - 'description' => t('Tests pluggable access for views.'), - 'group' => t('Views Plugins') + 'name' => 'Access', + 'description' => 'Tests pluggable access for views.', + 'group' => 'Views Plugins' ); } @@ -277,4 +277,4 @@ class ViewsAccessTest extends ViewsSqlTest { return $view; } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/views_analyze.test b/sites/all/modules/views/tests/views_analyze.test index 934566066..9bd79221d 100644 --- a/sites/all/modules/views/tests/views_analyze.test +++ b/sites/all/modules/views/tests/views_analyze.test @@ -1,10 +1,11 @@ <?php + /** * @file - * Tests the views analyse system. + * Tests the views analyze system. */ -class ViewsAnalyzeTest extends viewsSqlTest { +class ViewsAnalyzeTest extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Views Analyze', @@ -26,22 +27,22 @@ class ViewsAnalyzeTest extends viewsSqlTest { } /** - * Tests that analyse works in general. + * Tests that analyze works in general. */ - function testAnalyseBasic() { + function testAnalyzeBasic() { $this->drupalLogin($this->admin); // Enable the frontpage view and click the analyse button. $view = views_get_view('frontpage'); $view->save(); $this->drupalGet('admin/structure/views/view/frontpage/edit'); - $this->assertLink(t('analyze')); + $this->assertLink(t('analyze view')); // This redirects the user to the form. - $this->clickLink(t('analyze')); + $this->clickLink(t('analyze view')); $this->assertText(t('View analysis')); // This redirects the user back to the main views edit page. $this->drupalPost(NULL, array(), t('Ok')); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/views_argument_default.test b/sites/all/modules/views/tests/views_argument_default.test index 5c04701fb..39e54e783 100644 --- a/sites/all/modules/views/tests/views_argument_default.test +++ b/sites/all/modules/views/tests/views_argument_default.test @@ -1,14 +1,14 @@ <?php /** -* Basic test for pluggable argument default. -*/ + * Basic test for pluggable argument default. + */ class ViewsArgumentDefaultTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Argument_default'), - 'description' => t('Tests pluggable argument_default for views.'), - 'group' => t('Views Plugins') + 'name' => 'Argument_default', + 'description' => 'Tests pluggable argument_default for views.', + 'group' => 'Views Plugins' ); } @@ -25,12 +25,14 @@ class ViewsArgumentDefaultTest extends ViewsSqlTest { $view = $this->view_argument_default_fixed(); $view->set_display('default'); - $view->execute_display(); - $view->destroy(); + $view->pre_execute(); + $view->init_handlers(); + + $this->assertEqual($view->argument['null']->get_default_argument(), $this->random, 'Fixed argument should be used by default.'); - $this->assertEqual($view->args[0], $this->random, 'Fixed argument should be used by default.'); + $view->destroy(); - // Take sure that a normal argument provided is used + // Make sure that a normal argument provided is used $view = $this->view_argument_default_fixed(); $view->set_display('default'); @@ -102,4 +104,4 @@ class ViewsArgumentDefaultTest extends ViewsSqlTest { return $view; } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/views_argument_validator.test b/sites/all/modules/views/tests/views_argument_validator.test index 47fce7306..cbbb7b813 100644 --- a/sites/all/modules/views/tests/views_argument_validator.test +++ b/sites/all/modules/views/tests/views_argument_validator.test @@ -1,11 +1,11 @@ <?php -class viewsArgumentValidatorTest extends ViewsSqlTest { +class ViewsArgumentValidatorTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Argument validator'), - 'group' => t('Views Plugins'), - 'description' => t('Test argument validator tests.'), + 'name' => 'Argument validator', + 'group' => 'Views Plugins', + 'description' => 'Test argument validator tests.', ); } diff --git a/sites/all/modules/views/tests/views_basic.test b/sites/all/modules/views/tests/views_basic.test index 22d3a2aa7..20a9d4f8e 100644 --- a/sites/all/modules/views/tests/views_basic.test +++ b/sites/all/modules/views/tests/views_basic.test @@ -6,9 +6,9 @@ class ViewsBasicTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Basic query test'), - 'description' => t('A basic query test for Views.'), - 'group' => t('Views') + 'name' => 'Basic query test', + 'description' => 'A basic query test for Views.', + 'group' => 'Views' ); } diff --git a/sites/all/modules/views/tests/views_cache.test b/sites/all/modules/views/tests/views_cache.test index f2e39c583..458b578f1 100644 --- a/sites/all/modules/views/tests/views_cache.test +++ b/sites/all/modules/views/tests/views_cache.test @@ -1,19 +1,21 @@ <?php + /** * @file - * test cache system. + * Test cache system. */ module_load_include('test', 'views', 'tests/views_query'); + /** * Basic test for pluggable caching. */ class ViewsCacheTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Cache'), - 'description' => t('Tests pluggable caching for views.'), - 'group' => t('Views Plugins') + 'name' => 'Cache', + 'description' => 'Tests pluggable caching for views.', + 'group' => 'Views Plugins' ); } @@ -143,4 +145,3 @@ class ViewsCacheTest extends ViewsSqlTest { $this->assertEqual(6, count($view->result), t('The number of returned rows match.')); } } - diff --git a/sites/all/modules/views/tests/views_exposed_form.test b/sites/all/modules/views/tests/views_exposed_form.test index a1fb9922b..4c660f69a 100644 --- a/sites/all/modules/views/tests/views_exposed_form.test +++ b/sites/all/modules/views/tests/views_exposed_form.test @@ -1,13 +1,15 @@ <?php + /** * @file * Test exposed forms. */ + class ViewsExposedFormTest extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Exposed forms', - 'description' => 'Test exosed forms functionality.', + 'description' => 'Test exposed forms functionality.', 'group' => 'Views Plugins', ); } @@ -83,14 +85,13 @@ class ViewsExposedFormTest extends ViewsSqlTest { // Now check the sort criteria. $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created'); $this->helperButtonHasLabel('edit-options-expose-button-button', t('Expose sort')); - $this->assertNoFieldById('edit-options-expose-label', '', t('Take sure no label field is shown')); + $this->assertNoFieldById('edit-options-expose-label', '', t('Make sure no label field is shown')); // Click the Expose sort button. $edit = array(); $this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created', $edit, t('Expose sort')); // Check the label of the expose button $this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide sort')); - $this->assertFieldById('edit-options-expose-label', '', t('Take sure a label field is shown')); + $this->assertFieldById('edit-options-expose-label', '', t('Make sure a label field is shown')); } } - diff --git a/sites/all/modules/views/tests/views_glossary.test b/sites/all/modules/views/tests/views_glossary.test index 939f0ae66..4c0ca565d 100644 --- a/sites/all/modules/views/tests/views_glossary.test +++ b/sites/all/modules/views/tests/views_glossary.test @@ -1,7 +1,8 @@ <?php + /** * @file - * Test glossary view ( summary of arguments ) + * Test glossary view ( summary of arguments ). */ class ViewsGlossaryTestCase extends ViewsSqlTest { @@ -54,4 +55,3 @@ class ViewsGlossaryTestCase extends ViewsSqlTest { } } } - diff --git a/sites/all/modules/views/tests/views_groupby.test b/sites/all/modules/views/tests/views_groupby.test index 9f6e0f97b..de166425d 100644 --- a/sites/all/modules/views/tests/views_groupby.test +++ b/sites/all/modules/views/tests/views_groupby.test @@ -3,17 +3,12 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => 'Tests groupby feature of views3', - 'description' => 'tests aggregate functionality of views3, for example count', - 'group' => 'Views', + 'name' => 'Groupby UI', + 'description' => 'Tests UI of aggregate functionality.', + 'group' => 'Views UI', ); } - public function setUp() { - parent::setUp('views', 'views_ui'); - module_enable(array('views_ui')); - } - /** * Test aggregatate count feature. */ @@ -38,7 +33,6 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { $this->drupalCreateNode($node_2); $view = $this->viewsAggregateCountView(); - $view->set_display('default'); $output = $view->execute_display(); $this->assertEqual(count($view->result), 2, 'Make sure the count of items is right.'); @@ -61,10 +55,10 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { $view->name = 'aggregate_count'; $view->description = ''; $view->tag = ''; - $view->view_php = ''; $view->base_table = 'node'; - $view->is_cacheable = FALSE; - $view->api_version = 2; + $view->human_name = ''; + $view->core = 7; + $view->api_version = '3.0'; $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ /* Display: Master */ @@ -72,31 +66,34 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { $handler->display->display_options['group_by'] = TRUE; $handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['exposed_form']['type'] = 'basic'; $handler->display->display_options['pager']['type'] = 'some'; $handler->display->display_options['style_plugin'] = 'default'; $handler->display->display_options['row_plugin'] = 'fields'; - /* Field: Content: Nid */ + /* Field: Content: Title */ $handler->display->display_options['fields']['nid']['id'] = 'nid'; $handler->display->display_options['fields']['nid']['table'] = 'node'; $handler->display->display_options['fields']['nid']['field'] = 'title'; $handler->display->display_options['fields']['nid']['alter']['alter_text'] = 0; $handler->display->display_options['fields']['nid']['alter']['make_link'] = 0; - $handler->display->display_options['fields']['nid']['alter']['trim'] = 0; $handler->display->display_options['fields']['nid']['alter']['word_boundary'] = 1; $handler->display->display_options['fields']['nid']['alter']['ellipsis'] = 1; $handler->display->display_options['fields']['nid']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['nid']['alter']['trim'] = 0; $handler->display->display_options['fields']['nid']['alter']['html'] = 0; $handler->display->display_options['fields']['nid']['hide_empty'] = 0; $handler->display->display_options['fields']['nid']['empty_zero'] = 0; $handler->display->display_options['fields']['nid']['link_to_node'] = 0; - /* Argument: Content: Type */ + /* Contextual filter: Content: Type */ $handler->display->display_options['arguments']['type']['id'] = 'type'; $handler->display->display_options['arguments']['type']['table'] = 'node'; $handler->display->display_options['arguments']['type']['field'] = 'type'; - $handler->display->display_options['arguments']['type']['default_action'] = 'summary asc'; - $handler->display->display_options['arguments']['type']['style_plugin'] = 'default_summary'; + $handler->display->display_options['arguments']['type']['default_action'] = 'summary'; $handler->display->display_options['arguments']['type']['default_argument_type'] = 'fixed'; + $handler->display->display_options['arguments']['type']['summary']['format'] = 'default_summary'; + return $view; } @@ -127,7 +124,6 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { $this->drupalCreateNode($node_2); $view = $this->viewsGroupByViewHelper($group_by); - $view->set_display('default'); $output = $view->execute_display(); $this->assertEqual(count($view->result), 2, 'Make sure the count of items is right.'); @@ -213,26 +209,6 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { $this->GroupByTestHelper('max', array(4, 7)); } - function testGroupBySave() { - $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration')); - $this->drupalLogin($admin_user); - views_invalidate_cache(); - menu_rebuild(); - - $this->drupalGet('admin/structure/views'); - $this->drupalGet('admin/structure/views/view/test_views_groupby_save/edit'); - - $edit = array( - 'group_by' => TRUE, - ); - $this->drupalPost('admin/structure/views/nojs/display/test_views_groupby_save/default/group_by', $edit, t('Apply')); - - $this->drupalGet('admin/structure/views/view/test_views_groupby_save/edit'); - $this->drupalPost('admin/structure/views/view/test_views_groupby_save/edit', array(), t('Save')); - - $this->drupalGet('admin/structure/views/nojs/display/test_views_groupby_save/default/group_by'); - } - public function testGroupByCountOnlyFilters() { // Check if GROUP BY and HAVING are included when a view // Doesn't display SUM, COUNT, MAX... functions in SELECT statment @@ -247,7 +223,6 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { } $view = $this->viewsGroupByCountViewOnlyFilters(); - $view->set_display('default'); $output = $view->execute_display(); $this->assertTrue(strpos($view->build_info['query'], 'GROUP BY'), t('Make sure that GROUP BY is in the query')); @@ -298,4 +273,43 @@ class ViewsQueryGroupByTest extends ViewsSqlTest { return $view; } -} \ No newline at end of file +} + +class viewsUiGroupbyTestCase extends DrupalWebTestCase { + public function setUp() { + parent::setUp('views', 'views_ui'); + module_enable(array('views_ui')); + } + + public static function getInfo() { + return array( + 'name' => 'Groupby', + 'description' => 'Tests aggregate functionality of views, for example count.', + 'group' => 'Views', + ); + } + + /** + * Tests whether basic saving works. + * + * @todo: this should check the change of the settings as well. + */ + function testGroupBySave() { + $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration')); + $this->drupalLogin($admin_user); + views_invalidate_cache(); + menu_rebuild(); + + $this->drupalGet('admin/structure/views/view/test_views_groupby_save/edit'); + + $edit = array( + 'group_by' => TRUE, + ); + $this->drupalPost('admin/structure/views/nojs/display/test_views_groupby_save/default/group_by', $edit, t('Apply')); + + $this->drupalGet('admin/structure/views/view/test_views_groupby_save/edit'); + $this->drupalPost('admin/structure/views/view/test_views_groupby_save/edit', array(), t('Save')); + + $this->drupalGet('admin/structure/views/nojs/display/test_views_groupby_save/default/group_by'); + } +} diff --git a/sites/all/modules/views/tests/views_handlers.test b/sites/all/modules/views/tests/views_handlers.test index 8a6c33267..32a5747db 100644 --- a/sites/all/modules/views/tests/views_handlers.test +++ b/sites/all/modules/views/tests/views_handlers.test @@ -1,15 +1,15 @@ <?php /** -* @file -* Test abstract handlers of views -*/ + * @file + * Test abstract handlers of views. + */ class ViewsHandlersTest extends ViewsSqlTest { public static function getInfo() { return array( - 'name' => t('Handlers test'), - 'description' => t('test abstract handler definitions'), + 'name' => 'Handlers test', + 'description' => 'test abstract handler definitions', 'group' => 'Views', ); } @@ -36,6 +36,9 @@ class ViewsHandlersTest extends ViewsSqlTest { $this->assertFieldByName('options[expose][reduce]', TRUE); } + /** + * Test views_break_phrase_string function. + */ function test_views_break_phrase_string() { $empty_stdclass = new stdClass(); $empty_stdclass->operator = 'or'; @@ -63,8 +66,48 @@ class ViewsHandlersTest extends ViewsSqlTest { $this->assertEqual('and', $handler->operator); $this->assertEqualValue(array('word1', 'word2', 'word'), views_break_phrase_string('word1,,word2,word', $handler)); $this->assertEqual('and', $handler->operator); + $this->assertEqualValue(array('word1 word2', 'word'), views_break_phrase_string('word1 word2,word', $handler)); + $this->assertEqual('and', $handler->operator); + $this->assertEqualValue(array('word1', 'word2 word'), views_break_phrase_string('word1,word2 word', $handler)); + $this->assertEqual('and', $handler->operator); + } + + /** + * Test views_break_phrase function. + */ + function test_views_break_phrase() { + $empty_stdclass = new stdClass(); + $empty_stdclass->operator = 'or'; + $empty_stdclass->value = array(); + + $null = NULL; + // check defaults + $this->assertEqual($empty_stdclass, views_break_phrase('', $null)); + + $handler = views_get_handler('node', 'title', 'argument'); + $this->assertEqual($handler, views_break_phrase('', $handler)); + + // Generate three random numbers which can be used below; + $n1 = rand(0, 100); + $n2 = rand(0, 100); + $n3 = rand(0, 100); + // test ors + $this->assertEqualValue(array($n1, $n2, $n3), views_break_phrase("$n1 $n2+$n3", $handler)); + $this->assertEqual('or', $handler->operator); + $this->assertEqualValue(array($n1, $n2, $n3), views_break_phrase("$n1+$n2+$n3", $handler)); + $this->assertEqual('or', $handler->operator); + $this->assertEqualValue(array($n1, $n2, $n3), views_break_phrase("$n1 $n2 $n3", $handler)); + $this->assertEqual('or', $handler->operator); + $this->assertEqualValue(array($n1, $n2, $n3), views_break_phrase("$n1 $n2++$n3", $handler)); + $this->assertEqual('or', $handler->operator); + + // test ands. + $this->assertEqualValue(array($n1, $n2, $n3), views_break_phrase("$n1,$n2,$n3", $handler)); + $this->assertEqual('and', $handler->operator); + $this->assertEqualValue(array($n1, $n2, $n3), views_break_phrase("$n1,,$n2,$n3", $handler)); + $this->assertEqual('and', $handler->operator); } - + /** * Check to see if two values are equal. * @@ -76,6 +119,7 @@ class ViewsHandlersTest extends ViewsSqlTest { * The message to display along with the assertion. * @param $group * The type of assertion - examples are "Browser", "PHP". + * * @return * TRUE if the assertion succeeded, FALSE otherwise. */ diff --git a/sites/all/modules/views/tests/views_module.test b/sites/all/modules/views/tests/views_module.test index 8a8e36ada..6ce6a5a80 100644 --- a/sites/all/modules/views/tests/views_module.test +++ b/sites/all/modules/views/tests/views_module.test @@ -1,6 +1,8 @@ <?php + module_load_include('test', 'views', 'tests/views_query'); -class viewsModuleTest extends ViewsSqlTest { + +class ViewsModuleTest extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Tests views.module', @@ -76,7 +78,7 @@ class viewsModuleTest extends ViewsSqlTest { $this->assertEqual($result_text, $expect[$key]); } } - + /** * Tests the dynamic includes of templates via module feature. */ @@ -96,7 +98,7 @@ class viewsModuleTest extends ViewsSqlTest { $types = array('field', 'area', 'filter'); foreach ($types as $type) { $handler = views_get_handler($this->randomName(), $this->randomName(), $type); - $this->assertEqual('views_handler_' . $type . '_broken', get_class($handler), t('Take sure that a broken handler of type: @type are created', array('@type' => $type))); + $this->assertEqual('views_handler_' . $type . '_broken', get_class($handler), t('Make sure that a broken handler of type: @type are created', array('@type' => $type))); } $views_data = $this->viewsData(); diff --git a/sites/all/modules/views/tests/views_pager.test b/sites/all/modules/views/tests/views_pager.test index e02e43f62..93c9de4c2 100644 --- a/sites/all/modules/views/tests/views_pager.test +++ b/sites/all/modules/views/tests/views_pager.test @@ -1,7 +1,8 @@ <?php + /** * @file - * Tests the pluggable pager system + * Tests the pluggable pager system. */ class ViewsPagerTest extends DrupalWebTestCase { @@ -20,7 +21,7 @@ class ViewsPagerTest extends DrupalWebTestCase { /** * Pagers was sometimes not stored. * - * See: http://drupal.org/node/652712. + * @see http://drupal.org/node/652712 */ public function testStorePagerSettings() { $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration')); @@ -70,7 +71,10 @@ class ViewsPagerTest extends DrupalWebTestCase { $edit = array( ); // Add a display and override the pager settings. $this->drupalPost('admin/structure/views/view/test_store_pager_settings/edit', $edit, t('Add Page')); - $this->drupalPost('admin/structure/views/nojs/display/test_store_pager_settings/page_1/pager', array(), t('Override')); + $edit = array( + 'override[dropdown]' => 'page_1', + ); + $this->drupalPost('admin/structure/views/nojs/display/test_store_pager_settings/page_1/pager', $edit, t('Apply')); $edit = array( 'pager[type]' => 'mini', @@ -113,7 +117,7 @@ class ViewsPagerTest extends DrupalWebTestCase { * Test the none-pager-query. */ public function testNoLimit() { - // Create 11 nodes and take sure that everyone is returned. + // Create 11 nodes and make sure that everyone is returned. // We create 11 nodes, because the default pager plugin had 10 items per page. for ($i = 0; $i < 11; $i++) { $this->drupalCreateNode(); @@ -122,7 +126,7 @@ class ViewsPagerTest extends DrupalWebTestCase { $view->set_display('default'); $view->pre_execute(); $view->execute(); - $this->assertEqual(count($view->result), 11, 'Take sure that every item is returned in the result'); + $this->assertEqual(count($view->result), 11, 'Make sure that every item is returned in the result'); $view->destroy(); @@ -140,7 +144,7 @@ class ViewsPagerTest extends DrupalWebTestCase { $view->pre_execute(); $view->execute(); - $this->assertEqual(count($view->result), 8, 'Take sure that every item beside the first three is returned in the result'); + $this->assertEqual(count($view->result), 8, 'Make sure that every item beside the first three is returned in the result'); // Check some public functions. $this->assertFalse($view->query->pager->use_pager()); @@ -174,7 +178,7 @@ class ViewsPagerTest extends DrupalWebTestCase { * Test the some pager plugin. */ public function testLimit() { - // Create 11 nodes and take sure that everyone is returned. + // Create 11 nodes and make sure that everyone is returned. // We create 11 nodes, because the default pager plugin had 10 items per page. for ($i = 0; $i < 11; $i++) { $this->drupalCreateNode(); @@ -182,7 +186,7 @@ class ViewsPagerTest extends DrupalWebTestCase { $view = $this->viewsPagerLimit(); $view->set_display('default'); $view->execute(); - $this->assertEqual(count($view->result), 5, 'Take sure that only a certain count of items is returned'); + $this->assertEqual(count($view->result), 5, 'Make sure that only a certain count of items is returned'); $view->destroy(); // Setup and test a offset. @@ -199,7 +203,7 @@ class ViewsPagerTest extends DrupalWebTestCase { $view->display_handler->set_option('pager', $pager); $view->pre_execute(); $view->execute(); - $this->assertEqual(count($view->result), 3, 'Take sure that only a certain count of items is returned'); + $this->assertEqual(count($view->result), 3, 'Make sure that only a certain count of items is returned'); // Check some public functions. $this->assertFalse($view->query->pager->use_pager()); @@ -234,7 +238,7 @@ class ViewsPagerTest extends DrupalWebTestCase { * Test the normal pager. */ public function testNormalPager() { - // Create 11 nodes and take sure that everyone is returned. + // Create 11 nodes and make sure that everyone is returned. // We create 11 nodes, because the default pager plugin had 10 items per page. for ($i = 0; $i < 11; $i++) { $this->drupalCreateNode(); @@ -243,7 +247,7 @@ class ViewsPagerTest extends DrupalWebTestCase { $view->set_display('default'); $view->pre_execute(); $view->execute(); - $this->assertEqual(count($view->result), 5, 'Take sure that only a certain count of items is returned'); + $this->assertEqual(count($view->result), 5, 'Make sure that only a certain count of items is returned'); $view->destroy(); // Setup and test a offset. @@ -260,7 +264,7 @@ class ViewsPagerTest extends DrupalWebTestCase { $view->display_handler->set_option('pager', $pager); $view->pre_execute(); $view->execute(); - $this->assertEqual(count($view->result), 3, 'Take sure that only a certain count of items is returned'); + $this->assertEqual(count($view->result), 3, 'Make sure that only a certain count of items is returned'); // Test items per page = 0 $view = $this->viewPagerFullZeroItemsPerPage(); @@ -408,7 +412,7 @@ class ViewsPagerTest extends DrupalWebTestCase { * Test rendering with NULL pager. */ public function testRenderNullPager() { - // Create 11 nodes and take sure that everyone is returned. + // Create 11 nodes and make sure that everyone is returned. // We create 11 nodes, because the default pager plugin had 10 items per page. for ($i = 0; $i < 11; $i++) { $this->drupalCreateNode(); @@ -421,4 +425,4 @@ class ViewsPagerTest extends DrupalWebTestCase { $output = $view->render(); $this->assertEqual(preg_match('/<ul class="pager">/', $output), 0, t('The pager is not rendered.')); } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/views_plugin_localization_test.inc b/sites/all/modules/views/tests/views_plugin_localization_test.inc index fe53b50cd..35a870dd4 100644 --- a/sites/all/modules/views/tests/views_plugin_localization_test.inc +++ b/sites/all/modules/views/tests/views_plugin_localization_test.inc @@ -12,7 +12,7 @@ class views_plugin_localization_test extends views_plugin_localization { * Return the string and take sure that the test can find out whether the * string got translated. */ - function translate_string($string, $keys = array()) { + function translate_string($string, $keys = array(), $format = '') { $this->translated_strings[] = $string; return $string . "-translated"; } diff --git a/sites/all/modules/views/tests/views_query.test b/sites/all/modules/views/tests/views_query.test index 436372100..7f38e505c 100644 --- a/sites/all/modules/views/tests/views_query.test +++ b/sites/all/modules/views/tests/views_query.test @@ -6,7 +6,7 @@ */ /** - * Abstract class for views testing + * Abstract class for views testing. */ abstract class ViewsTestCase extends DrupalWebTestCase { /** @@ -29,7 +29,7 @@ abstract class ViewsTestCase extends DrupalWebTestCase { } /** - * Helper function: verify a result set returned by view. + * Helper function: verify a result set returned by view.. * * Inverse of ViewsTestCase::assertIdenticalResultset(). * diff --git a/sites/all/modules/views/tests/views_test.info b/sites/all/modules/views/tests/views_test.info index 3786faa74..3f7120d78 100644 --- a/sites/all/modules/views/tests/views_test.info +++ b/sites/all/modules/views/tests/views_test.info @@ -5,9 +5,9 @@ core = 7.x dependencies[] = views hidden = TRUE -; Information added by drupal.org packaging script on 2011-03-28 -version = "7.x-3.0-beta3" +; Information added by drupal.org packaging script on 2011-12-18 +version = "7.x-3.0" core = "7.x" project = "views" -datestamp = "1301301970" +datestamp = "1324170450" diff --git a/sites/all/modules/views/tests/views_test.module b/sites/all/modules/views/tests/views_test.module index d5806eefe..b51769022 100644 --- a/sites/all/modules/views/tests/views_test.module +++ b/sites/all/modules/views/tests/views_test.module @@ -42,4 +42,4 @@ function views_test_test_static_access_callback($access) { function views_test_test_dynamic_access_callback($access, $argument1, $argument2) { return $access && $argument1 == variable_get('test_dynamic_access_argument1', NULL) && $argument2 == variable_get('test_dynamic_access_argument2', NULL); -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/views_test.views_default.inc b/sites/all/modules/views/tests/views_test.views_default.inc index ab77f1d66..dce5906ec 100644 --- a/sites/all/modules/views/tests/views_test.views_default.inc +++ b/sites/all/modules/views/tests/views_test.views_default.inc @@ -34,17 +34,18 @@ function views_test_views_default_views() { $view->name = 'test_rename_reset_button'; $view->description = ''; $view->tag = ''; - $view->view_php = ''; $view->base_table = 'node'; - $view->is_cacheable = FALSE; - $view->api_version = 2; - $view->version = 7; + $view->human_name = ''; + $view->core = 0; + $view->api_version = '3.0'; $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ /* Display: Master */ $handler = $view->new_display('default', 'Master', 'default'); $handler->display->display_options['access']['type'] = 'none'; $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; $handler->display->display_options['exposed_form']['type'] = 'basic'; $handler->display->display_options['exposed_form']['options']['reset_button'] = TRUE; $handler->display->display_options['pager']['type'] = 'full'; @@ -52,13 +53,15 @@ function views_test_views_default_views() { $handler->display->display_options['row_plugin'] = 'node'; $handler->display->display_options['row_options']['links'] = 1; $handler->display->display_options['row_options']['comments'] = 0; - /* Filter: Content: Type */ + /* Filter criterion: Content: Type */ $handler->display->display_options['filters']['type']['id'] = 'type'; $handler->display->display_options['filters']['type']['table'] = 'node'; $handler->display->display_options['filters']['type']['field'] = 'type'; $handler->display->display_options['filters']['type']['exposed'] = TRUE; $handler->display->display_options['filters']['type']['expose']['operator_id'] = 'type_op'; $handler->display->display_options['filters']['type']['expose']['label'] = 'Content: Type'; + $handler->display->display_options['filters']['type']['expose']['identifier'] = 'type'; + $handler->display->display_options['filters']['type']['expose']['reduce'] = 0; /* Display: Page */ $handler = $view->new_display('page', 'Page', 'page_1'); @@ -139,4 +142,4 @@ function views_test_views_default_views() { $views[$view->name] = $view; return $views; -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/views_translatable.test b/sites/all/modules/views/tests/views_translatable.test index ac3dd422d..18445c9f8 100644 --- a/sites/all/modules/views/tests/views_translatable.test +++ b/sites/all/modules/views/tests/views_translatable.test @@ -2,7 +2,7 @@ module_load_include('test', 'views', 'tests/views_query'); -class viewsTranslatableTest extends ViewsSqlTest { +class ViewsTranslatableTest extends ViewsSqlTest { var $strings; public static function getInfo() { @@ -48,17 +48,17 @@ class viewsTranslatableTest extends ViewsSqlTest { $view = $this->view_unpack_translatable(); $view->init_localization(); - $this->assertEqual('views_plugin_localization_test', get_class($view->localization_plugin), 'Take sure that init_localization initiales the right translation plugin'); + $this->assertEqual('views_plugin_localization_test', get_class($view->localization_plugin), 'Make sure that init_localization initializes the right translation plugin'); $view->export_locale_strings(); $expected_strings = $this->strings; $result_strings = $view->localization_plugin->get_export_strings(); - $this->assertEqual(sort($expected_strings), sort($result_strings), 'Take sure that the localisation plugin got every translatable string.'); + $this->assertEqual(sort($expected_strings), sort($result_strings), 'Make sure that the localization plugin got every translatable string.'); } public function testUi() { - // Take sure that the string is not translated on the ui. + // Make sure that the string is not translated in the UI. $view = $this->view_unpack_translatable(); $view->save(); views_invalidate_cache(); @@ -67,11 +67,11 @@ class viewsTranslatableTest extends ViewsSqlTest { $this->drupalLogin($admin_user); $this->drupalGet("admin/structure/views/view/$view->name/edit"); - $this->assertNoText('-translated', 'Take sure that no strings get\'s translated in the ui.'); + $this->assertNoText('-translated', 'Make sure that no strings get translated in the UI.'); } /** - * Take sure that the translations get's into the loaded view. + * Make sure that the translations get into the loaded view. */ public function testTranslation() { $view = $this->view_unpack_translatable(); @@ -83,7 +83,44 @@ class viewsTranslatableTest extends ViewsSqlTest { foreach ($this->strings as $string) { $expected_strings[] = $string .= '-translated'; } - $this->assertEqual(sort($expected_strings), sort($view->localization_plugin->translated_strings), 'Take sure that every string got loaded translated'); + $this->assertEqual(sort($expected_strings), sort($view->localization_plugin->translated_strings), 'Make sure that every string got loaded translated'); + } + + /** + * Make sure that the different things have the right translation keys. + */ + public function testTranslationKey() { + $view = $this->view_unpack_translatable(); + $view->editing = TRUE; + $view->init_display(); + + // Don't run translation. We just want to get the right keys. + + foreach ($view->display as $display_id => $display) { + $translatables = array(); + $display->handler->unpack_translatables($translatables); + + $this->string_keys = array( + 'Master1' => array('title'), + 'Apply1' => array('exposed_form', 'submit_button'), + 'Sort By1' => array('exposed_form', 'exposed_sorts_label'), + 'Asc1' => array('exposed_form', 'sort_asc_label'), + 'Desc1' => array('exposed_form', 'sort_desc_label'), + 'more1' => array('use_more_text'), + 'Reset1' => array('exposed_form', 'reset_button_label'), + 'Offset1' => array('pager', 'expose', 'offset_label'), + 'Master1' => array('title'), + 'title1' => array('title'), + 'Items per page1' => array('pager', 'expose', 'items_per_page_label'), + 'fieldlabel1' => array('field', 'node', 'nid', 'label'), + 'filterlabel1' => array('filter', 'node', 'nid', 'expose', 'label'), + '- All -' => array('pager', 'expose', 'items_per_page_options_all_label'), + ); + + foreach ($translatables as $translatable) { + $this->assertEqual($translatable['keys'], $this->string_keys[$translatable['value']]); + } + } } public function view_unpack_translatable() { diff --git a/sites/all/modules/views/tests/views_ui.test b/sites/all/modules/views/tests/views_ui.test index f0f600fdd..003eb855a 100644 --- a/sites/all/modules/views/tests/views_ui.test +++ b/sites/all/modules/views/tests/views_ui.test @@ -1,4 +1,5 @@ <?php + /** * @file * Tests views UI Wizard. @@ -48,7 +49,7 @@ class ViewsUIWizardBasicTestCase extends ViewsUIWizardHelper { // This view should not have a block. $this->drupalGet('admin/structure/block'); - $this->assertNoText($view1['name'] . ': Block'); + $this->assertNoText('View: ' . $view1['human_name']); // Create two nodes. $node1 = $this->drupalCreateNode(array('type' => 'page')); @@ -92,7 +93,7 @@ class ViewsUIWizardBasicTestCase extends ViewsUIWizardHelper { // This view should not have a block. $this->drupalGet('admin/structure/block'); - $this->assertNoText($view2['name'] . ': Block'); + $this->assertNoText('View: ' . $view2['human_name']); // Create a view with a page and a block, and filter the listing. $view3 = array(); @@ -122,7 +123,7 @@ class ViewsUIWizardBasicTestCase extends ViewsUIWizardHelper { // Put the block into the first sidebar region. $this->drupalGet('admin/structure/block'); - $this->assertText($view3['name'] . ': Block'); + $this->assertText('View: ' . $view3['human_name']); $edit = array(); $edit["blocks[views_{$view3['name']}-block][region]"] = 'sidebar_first'; $this->drupalPost('admin/structure/block', $edit, t('Save blocks')); @@ -544,7 +545,7 @@ class ViewsUIWizardItemsPerPageTestCase extends ViewsUIWizardHelper { // the block, and check that the nodes we expect appear in the correct // order. $this->drupalGet('admin/structure/block'); - $this->assertText($view['name'] . ': Block'); + $this->assertText('View: ' . $view['human_name']); $edit = array(); $edit["blocks[views_{$view['name']}-block][region]"] = 'sidebar_first'; $this->drupalPost('admin/structure/block', $edit, t('Save blocks')); @@ -904,4 +905,31 @@ class ViewsUIWizardOverrideDisplaysTestCase extends ViewsUIWizardHelper { $this->assertText($new_block_title); $this->assertNoText($view['block[title]']); } + + /** + * Tests that the revert to all displays select-option works as expected. + */ + function testRevertAllDisplays() { + // Create a basic view with a page, block. + // Because there is both a title on page and block we expect the title on + // the block be overriden. + $view['human_name'] = $this->randomName(16); + $view['name'] = strtolower($this->randomName(16)); + $view['page[create]'] = 1; + $view['page[title]'] = $this->randomName(16); + $view['page[path]'] = $this->randomName(16); + $view['block[create]'] = 1; + $view['block[title]'] = $this->randomName(16); + $this->drupalPost('admin/structure/views/add', $view, t('Continue & edit')); + + // Revert the title of the block back to the default ones, but submit some + // new values to be sure that the new value is not stored. + $edit = array(); + $edit['title'] = $new_block_title = $this->randomName(); + $edit['override[dropdown]'] = 'default_revert'; + + $this->drupalPost("admin/structure/views/nojs/display/{$view['name']}/block/title", $edit, t('Apply')); + $this->drupalPost("admin/structure/views/view/{$view['name']}/edit/block", array(), t('Save')); + $this->assertText($view['page[title]']); + } } diff --git a/sites/all/modules/views/tests/views_upgrade.test b/sites/all/modules/views/tests/views_upgrade.test index 102fb5f26..7205a10b3 100644 --- a/sites/all/modules/views/tests/views_upgrade.test +++ b/sites/all/modules/views/tests/views_upgrade.test @@ -1,11 +1,13 @@ <?php + /** * @file * Try to test the upgrade path of all conversions. * * You can find all conversions by searching for "moved to". */ -class viewsUpgradeTestCase extends ViewsSqlTest { + +class ViewsUpgradeTestCase extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Views Upgrade test', @@ -17,7 +19,7 @@ class viewsUpgradeTestCase extends ViewsSqlTest { protected function setUp() { // // To import a view the user needs use PHP for settings rights, so enable php module. parent::setUp(); -// +// // // $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration', 'use PHP for settings')); // // $this->drupalLogin($admin_user); } @@ -35,7 +37,7 @@ class viewsUpgradeTestCase extends ViewsSqlTest { return $data; } - + function debugField($field) { $keys = array('id', 'table', 'field', 'actual_field', 'original_field', 'real_field'); $info = array(); @@ -75,16 +77,17 @@ class viewsUpgradeTestCase extends ViewsSqlTest { $view = $this->viewsMovedToTable(); $view->build(); - $this->assertEqual('views_test', $view->base_table, 'Take sure that view->base_table gets automatically converted.'); + $this->assertEqual('views_test', $view->base_table, 'Make sure that view->base_table gets automatically converted.'); // $this->assertEqual('id', $view->field['id']->field, 'If we move a whole table fields of this table should work, too.'); $this->assertEqual('id', $view->field['id']->real_field, 'To run the query right the real_field has to be set right.'); $this->assertEqual('views_test', $view->field['id']->table); } - + /** * Test a import via ui. * - * To ensure the general functionality the recent comments view from drupal6 is used. + * To ensure the general functionality, the recent comments view from drupal6 + * is used. */ public function testUpgradeImport() { $edit = array( @@ -133,11 +136,11 @@ class viewsUpgradeTestCase extends ViewsSqlTest { $handler->display->display_options['fields']['old_field_2']['id'] = 'old_field_2'; $handler->display->display_options['fields']['old_field_2']['table'] = 'views_test'; $handler->display->display_options['fields']['old_field_2']['field'] = 'old_field_2'; - + $handler->display->display_options['filters']['old_field_3']['id'] = 'old_field_3'; $handler->display->display_options['filters']['old_field_3']['table'] = 'views_test'; $handler->display->display_options['filters']['old_field_3']['field'] = 'old_field_3'; - + return $view; } @@ -263,4 +266,4 @@ class viewsUpgradeTestCase extends ViewsSqlTest { return $import; } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/tests/views_view.test b/sites/all/modules/views/tests/views_view.test index 49234e31a..f57961eb7 100644 --- a/sites/all/modules/views/tests/views_view.test +++ b/sites/all/modules/views/tests/views_view.test @@ -1,8 +1,9 @@ <?php + /** * Test the view class. */ -class viewsViewTest extends ViewsSqlTest { +class ViewsViewTest extends ViewsSqlTest { public static function getInfo() { return array( 'name' => 'Test the view class', @@ -31,15 +32,15 @@ class viewsViewTest extends ViewsSqlTest { } function assertViewDestroy($view) { - $this->assertFalse(isset($view->display['default']->handler), 'Take sure all displays are destroyed.'); - $this->assertFalse(isset($view->display['attachment_1']->handler), 'Take sure all displays are destroyed.'); + $this->assertFalse(isset($view->display['default']->handler), 'Make sure all displays are destroyed.'); + $this->assertFalse(isset($view->display['attachment_1']->handler), 'Make sure all displays are destroyed.'); - $this->assertFalse(isset($view->filter), 'Take sure all handlers are destroyed'); - $this->assertFalse(isset($view->field), 'Take sure all handlers are destroyed'); - $this->assertFalse(isset($view->argument), 'Take sure all handlers are destroyed'); - $this->assertFalse(isset($view->relationship), 'Take sure all handlers are destroyed'); - $this->assertFalse(isset($view->sort), 'Take sure all handlers are destroyed'); - $this->assertFalse(isset($view->area), 'Take sure all handlers are destroyed'); + $this->assertFalse(isset($view->filter), 'Make sure all handlers are destroyed'); + $this->assertFalse(isset($view->field), 'Make sure all handlers are destroyed'); + $this->assertFalse(isset($view->argument), 'Make sure all handlers are destroyed'); + $this->assertFalse(isset($view->relationship), 'Make sure all handlers are destroyed'); + $this->assertFalse(isset($view->sort), 'Make sure all handlers are destroyed'); + $this->assertFalse(isset($view->area), 'Make sure all handlers are destroyed'); $keys = array('current_display', 'display_handler', 'field', 'argument', 'filter', 'sort', 'relationship', 'header', 'footer', 'empty', 'query', 'result', 'inited', 'style_plugin', 'plugin_name', 'exposed_data', 'exposed_input', 'many_to_one_tables'); foreach ($keys as $key) { @@ -60,10 +61,27 @@ class viewsViewTest extends ViewsSqlTest { $view->delete(); $view = views_get_view($view->name); - $this->assertNotNull($view, 'Take sure that the old view is still in the static cache.'); + $this->assertNotNull($view, 'Make sure that the old view is still in the static cache.'); $view = views_get_view($view->name, TRUE); - $this->assertNull($view, "Take sure that the old view get's cleared by the reset parameter."); + $this->assertNull($view, "Make sure that the old view gets cleared by the reset parameter."); + } + + function testValidate() { + // Test a view with multiple displays. + // Validating a view shouldn't change the active display. + // @todo: Create an extra validation view. + $view = $this->view_test_destroy(); + $view->set_display('page_1'); + + $view->validate(); + + $this->assertEqual('page_1', $view->current_display, "The display should be constant while validating"); + + // @todo: Write real tests for the validation. + // In general the following things could be tested: + // - Deleted displays shouldn't be validated + // - Multiple displays are validating and the errors are merged together. } /** @@ -264,4 +282,4 @@ class viewsViewTest extends ViewsSqlTest { return $view; } -} \ No newline at end of file +} diff --git a/sites/all/modules/views/theme/theme.inc b/sites/all/modules/views/theme/theme.inc index 3ac182a6c..2adb7700e 100644 --- a/sites/all/modules/views/theme/theme.inc +++ b/sites/all/modules/views/theme/theme.inc @@ -24,6 +24,12 @@ function _views_theme_functions($hook, $view, $display = NULL) { $themes[] = $hook . '__' . $view->name . '__' . $display->id; $themes[] = $hook . '__' . $display->id; $themes[] = $hook . '__' . preg_replace('/[^a-z0-9]/', '_', strtolower($view->tag)); + + // Add theme suggestions foreach single tag. + foreach (drupal_explode_tags($view->tag) as $tag) { + $themes[] = $hook . '__' . preg_replace('/[^a-z0-9]/', '_', strtolower($tag)); + } + if ($display->id != $display->display_plugin) { $themes[] = $hook . '__' . $view->name . '__' . $display->display_plugin; $themes[] = $hook . '__' . $display->display_plugin; @@ -42,7 +48,7 @@ function template_preprocess_views_view(&$vars) { $view = $vars['view']; - $vars['rows'] = !empty($view->result) || $view->style_plugin->even_empty() ? $view->style_plugin->render($view->result) : ''; + $vars['rows'] = (!empty($view->result) || $view->style_plugin->even_empty()) ? $view->style_plugin->render($view->result) : ''; $vars['css_name'] = drupal_clean_css_identifier($view->name); $vars['name'] = $view->name; @@ -80,7 +86,7 @@ function template_preprocess_views_view(&$vars) { $vars['title'] = !empty($view->views_ui_context) ? filter_xss_admin($view->get_title()) : ''; if ($view->display_handler->render_pager()) { - $exposed_input = isset($view->exposed_data_raw) ? $view->exposed_data_raw : NULL; + $exposed_input = isset($view->exposed_raw_input) ? $view->exposed_raw_input : NULL; $vars['pager'] = $view->query->render_pager($exposed_input); } @@ -94,15 +100,6 @@ function template_preprocess_views_view(&$vars) { // processed by contextual_preprocess() they will appear in the $title_suffix // variable (which we will then render in views-view.tpl.php). views_add_contextual_links($vars['view_array'], 'view', $view, $view->current_display); - // If a display handles where to put the contextual links for themselves let it - // does it but by default render the links in the view ouput. - $vars['admin_links'] = ''; - if (!empty($vars['view_array']['#views_contextual_links_info'])) { - $location = $vars['view_array']['#views_contextual_links_info']['views_ui']; - if ($location == 'view') { - $vars['admin_links'] = drupal_render($vars['view_array']['#contextual_links']['views_ui']); - } - } // Attachments are always updated with the outer view, never by themselves, // so they do not have dom ids. @@ -116,8 +113,7 @@ function template_preprocess_views_view(&$vars) { // we set up a running counter, $dom_id, to issue a "unique" identifier for // each view. This identifier is written to both Drupal.settings and the DIV // wrapper. - static $dom_id = 1; - $vars['dom_id'] = !empty($view->dom_id) ? $view->dom_id : $dom_id++; + $vars['dom_id'] = !empty($view->dom_id) ? $view->dom_id : md5($view->name . REQUEST_TIME . rand()); $vars['classes_array'][] = 'view-dom-id-' . $vars['dom_id']; } @@ -127,7 +123,7 @@ function template_preprocess_views_view(&$vars) { 'views' => array( 'ajax_path' => url('views/ajax'), 'ajaxViews' => array( - array( + 'views_dom_id:' . $vars['dom_id'] => array( 'view_name' => $view->name, 'view_display_id' => $view->current_display, 'view_args' => check_plain(implode('/', $view->args)), @@ -147,6 +143,33 @@ function template_preprocess_views_view(&$vars) { drupal_add_js($settings, 'setting'); views_add_js('ajax_view'); } + + // If form fields were found in the View, reformat the View output as a form. + if (views_view_has_form_elements($view)) { + $output = !empty($vars['rows']) ? $vars['rows'] : $vars['empty']; + $form = drupal_get_form(views_form_id($view), $view, $output); + // The form is requesting that all non-essential views elements be hidden, + // usually because the rendered step is not a view result. + if ($form['show_view_elements']['#value'] == FALSE) { + $vars['header'] = ''; + $vars['exposed'] = ''; + $vars['pager'] = ''; + $vars['footer'] = ''; + $vars['more'] = ''; + $vars['feed_icon'] = ''; + } + $vars['rows'] = $form; + } +} + +/** + * Process function to render certain elements into the view. + */ +function template_process_views_view(&$vars) { + if (is_array($vars['rows'])) { + $vars['rows'] = drupal_render($vars['rows']); + } + // Flatten the classes to a string for the template file. $vars['classes'] = implode(' ', $vars['classes_array']); } @@ -158,7 +181,7 @@ function template_preprocess_views_view_fields(&$vars) { $view = $vars['view']; // Loop through the fields for this view. - $inline = FALSE; + $previous_inline = FALSE; $vars['fields'] = array(); // ensure it's at least an empty array. foreach ($view->field as $id => $field) { // render this even if set to exclude so it can be used elsewhere. @@ -167,22 +190,27 @@ function template_preprocess_views_view_fields(&$vars) { if (empty($field->options['exclude']) && (!$empty || (empty($field->options['hide_empty']) && empty($vars['options']['hide_empty'])))) { $object = new stdClass(); $object->handler = &$view->field[$id]; + $object->inline = !empty($vars['options']['inline'][$id]); - $object->element_type = $object->handler->element_type(TRUE); + $object->element_type = $object->handler->element_type(TRUE, !$vars['options']['default_field_elements'], $object->inline); if ($object->element_type) { $class = ''; if ($object->handler->options['element_default_classes']) { $class = 'field-content'; } - if ($classes = $object->handler->element_classes()) { + if ($classes = $object->handler->element_classes($view->row_index)) { if ($class) { $class .= ' '; } $class .= $classes; } - $field_output = '<' . $object->element_type . ' class="' . $class . '">' . $field_output . '</' . $object->element_type . '>'; + $pre = '<' . $object->element_type; + if ($class) { + $pre .= ' class="' . $class . '"'; + } + $field_output = $pre . '>' . $field_output . '</' . $object->element_type . '>'; } // Protect ourself somewhat for backward compatibility. This will prevent @@ -199,17 +227,15 @@ function template_preprocess_views_view_fields(&$vars) { $object->raw = NULL; // make sure it exists to reduce NOTICE } - $object->inline = !empty($vars['options']['inline'][$id]); - - if (!empty($vars['options']['separator']) && $inline && $object->inline && $object->content) { + if (!empty($vars['options']['separator']) && $previous_inline && $object->inline && $object->content) { $object->separator = filter_xss_admin($vars['options']['separator']); } $object->class = drupal_clean_css_identifier($id); - $inline = $object->inline; - $object->inline_html = $object->handler->element_wrapper_type(TRUE, TRUE); - if ($object->inline_html === '') { + $previous_inline = $object->inline; + $object->inline_html = $object->handler->element_wrapper_type(TRUE, TRUE); + if ($object->inline_html === '' && $vars['options']['default_field_elements']) { $object->inline_html = $object->inline ? 'span' : 'div'; } @@ -223,7 +249,7 @@ function template_preprocess_views_view_fields(&$vars) { $class = "views-field views-field-" . $object->class; } - if ($classes = $object->handler->element_wrapper_classes()) { + if ($classes = $object->handler->element_wrapper_classes($view->row_index)) { if ($class) { $class .= ' '; } @@ -242,28 +268,36 @@ function template_preprocess_views_view_fields(&$vars) { // on the template. $object->label = check_plain($view->field[$id]->label()); $object->label_html = ''; - $object->element_label_type = $object->handler->element_label_type(TRUE); - if ($object->element_label_type && $object->label) { - $class = ''; - if ($object->handler->options['element_default_classes']) { - $class = 'views-label-' . $object->class; + if ($object->label) { + $object->label_html .= $object->label; + if ($object->handler->options['element_label_colon']) { + $object->label_html .= ': '; } - $element_label_class = $object->handler->element_label_classes(); - if ($element_label_class) { - if ($class) { - $class .= ' '; + $object->element_label_type = $object->handler->element_label_type(TRUE, !$vars['options']['default_field_elements']); + if ($object->element_label_type) { + $class = ''; + if ($object->handler->options['element_default_classes']) { + $class = 'views-label views-label-' . $object->class; } - $class .= $element_label_class; - } + $element_label_class = $object->handler->element_label_classes($view->row_index); + if ($element_label_class) { + if ($class) { + $class .= ' '; + } - $object->label_html = '<' . $object->element_label_type . ' class="' . $class . '">'; - $object->label_html .= $object->label; - if ($object->handler->options['element_label_colon']) { - $object->label_html .= ': '; + $class .= $element_label_class; + } + + $pre = '<' . $object->element_label_type; + if ($class) { + $pre .= ' class="' . $class . '"'; + } + $pre .= '>'; + + $object->label_html = $pre . $object->label_html . '</' . $object->element_label_type . '>'; } - $object->label_html .= '</' . $object->element_label_type . '>'; } $vars['fields'][$id] = $object; @@ -310,20 +344,35 @@ function template_preprocess_views_view_summary(&$vars) { if (!empty($view->exposed_raw_input)) { $url_options['query'] = $view->exposed_raw_input; } + + $active_urls = drupal_map_assoc(array( + url($_GET['q'], array('alias' => TRUE)), // force system path + url($_GET['q']), // could be an alias + )); + + // Collect all arguments foreach row, to be able to alter them for example by the validator. + // This is not done per single argument value, because this could cause performance problems. + $row_args = array(); + + foreach ($vars['rows'] as $id => $row) { + $row_args[$id] = $argument->summary_argument($row); + } + $argument->process_summary_arguments($row_args); + foreach ($vars['rows'] as $id => $row) { $vars['row_classes'][$id] = ''; $vars['rows'][$id]->link = $argument->summary_name($row); $args = $view->args; - $args[$argument->position] = $argument->summary_argument($row); + $args[$argument->position] = $row_args[$id]; $base_path = NULL; - if (!empty($argument->options['style_options']['base_path'])) { - $base_path = $argument->options['style_options']['base_path']; + if (!empty($argument->options['summary_options']['base_path'])) { + $base_path = $argument->options['summary_options']['base_path']; } $vars['rows'][$id]->url = url($view->get_url($args, $base_path), $url_options); $vars['rows'][$id]->count = intval($row->{$argument->count_alias}); - if ($vars['rows'][$id]->url == base_path() . $_GET['q'] || $vars['rows'][$id]->url == base_path() . drupal_get_path_alias($_GET['q'])) { + if (isset($active_urls[$vars['rows'][$id]->url])) { $vars['row_classes'][$id] = 'active'; } } @@ -345,6 +394,19 @@ function template_preprocess_views_view_summary_unformatted(&$vars) { } $count = 0; + $active_urls = drupal_map_assoc(array( + url($_GET['q'], array('alias' => TRUE)), // force system path + url($_GET['q']), // could be an alias + )); + + // Collect all arguments foreach row, to be able to alter them for example by the validator. + // This is not done per single argument value, because this could cause performance problems. + $row_args = array(); + foreach ($vars['rows'] as $id => $row) { + $row_args[$id] = $argument->summary_argument($row); + } + $argument->process_summary_arguments($row_args); + foreach ($vars['rows'] as $id => $row) { // only false on first time: if ($count++) { @@ -352,15 +414,15 @@ function template_preprocess_views_view_summary_unformatted(&$vars) { } $vars['rows'][$id]->link = $argument->summary_name($row); $args = $view->args; - $args[$argument->position] = $argument->summary_argument($row); + $args[$argument->position] = $row_args[$id]; $base_path = NULL; - if (!empty($argument->options['style_options']['base_path'])) { - $base_path = $argument->options['style_options']['base_path']; + if (!empty($argument->options['summary_options']['base_path'])) { + $base_path = $argument->options['summary_options']['base_path']; } $vars['rows'][$id]->url = url($view->get_url($args, $base_path), $url_options); $vars['rows'][$id]->count = intval($row->{$argument->count_alias}); - if ($vars['rows'][$id]->url == base_path() . $_GET['q'] || $vars['rows'][$id]->url == base_path() . drupal_get_path_alias($_GET['q'])) { + if (isset($active_urls[$vars['rows'][$id]->url])) { $vars['row_classes'][$id] = 'active'; } } @@ -391,6 +453,9 @@ function template_preprocess_views_view_table(&$vars) { $order = !empty($handler->order) ? $handler->order : 'asc'; $query = tablesort_get_query_parameters(); + if (isset($view->exposed_raw_input)) { + $query += $view->exposed_raw_input; + } $header = array(); @@ -439,7 +504,7 @@ function template_preprocess_views_view_table(&$vars) { if ($fields[$field]->options['element_default_classes']) { $vars['header_classes'][$field] .= "views-field views-field-" . $vars['fields'][$field]; } - $class = $fields[$field]->element_label_classes(); + $class = $fields[$field]->element_label_classes(0); if ($class) { if ($vars['header_classes'][$field]) { $vars['header_classes'][$field] .= ' '; @@ -469,7 +534,7 @@ function template_preprocess_views_view_table(&$vars) { if ($fields[$field]->options['element_default_classes']) { $vars['field_classes'][$field][$num] = "views-field views-field-" . $vars['fields'][$field]; } - if ($classes = $fields[$field]->element_classes()) { + if ($classes = $fields[$field]->element_classes($num)) { if ($vars['field_classes'][$field][$num]) { $vars['field_classes'][$field][$num] .= ' '; } @@ -503,6 +568,20 @@ function template_preprocess_views_view_table(&$vars) { $vars['rows'][$num][$column] .= $field_output; } } + + // Remove columns if the option is hide empty column is checked and the field is not empty. + if (!empty($options['info'][$field]['empty_column'])) { + $empty = TRUE; + foreach ($vars['rows'] as $num => $columns) { + $empty &= empty($columns[$column]); + } + if ($empty) { + foreach ($vars['rows'] as $num => &$columns) { + unset($columns[$column]); + unset($vars['header'][$column]); + } + } + } } $count = 0; @@ -521,6 +600,7 @@ function template_preprocess_views_view_table(&$vars) { $vars['rows'][0][0] = $view->display_handler->render_area('empty'); // Calculate the amounts of rows with output. $vars['field_attributes'][0][0]['colspan'] = count($vars['header']); + $vars['field_classes'][0][0] = 'views-empty'; } @@ -677,8 +757,14 @@ function template_preprocess_views_view_unformatted(&$vars) { function template_preprocess_views_view_list(&$vars) { $handler = $vars['view']->style_plugin; - $vars['class'] = drupal_clean_css_identifier($handler->options['class']); - $vars['wrapper_class'] = drupal_clean_css_identifier($handler->options['wrapper_class']); + $class = explode(' ', $handler->options['class']); + $class = array_map('views_clean_css_identifier', $class); + + $wrapper_class = explode(' ', $handler->options['wrapper_class']); + $wrapper_class = array_map('views_clean_css_identifier', $wrapper_class); + + $vars['class'] = implode(' ', $class); + $vars['wrapper_class'] = implode(' ', $wrapper_class); $vars['wrapper_prefix'] = ''; $vars['wrapper_suffix'] = ''; $vars['list_type_prefix'] = '<' . $handler->options['type'] . '>'; @@ -832,6 +918,38 @@ function template_preprocess_views_exposed_form(&$vars) { $vars['button'] = drupal_render_children($form); } +/** + * Theme function for a View with form elements: replace the placeholders. + */ +function theme_views_form_views_form($variables) { + $form = $variables['form']; + + // Placeholders and their substitutions (usually rendered form elements). + $search = array(); + $replace = array(); + + // Add in substitutions provided by the form. + foreach ($form['#substitutions']['#value'] as $substitution) { + $field_name = $substitution['field_name']; + $row_id = $substitution['row_id']; + + $search[] = $substitution['placeholder']; + $replace[] = isset($form[$field_name][$row_id]) ? drupal_render($form[$field_name][$row_id]) : ''; + } + // Add in substitutions from hook_views_form_substitutions(). + $substitutions = module_invoke_all('views_form_substitutions'); + foreach ($substitutions as $placeholder => $substitution) { + $search[] = $placeholder; + $replace[] = $substitution; + } + + // Apply substitutions to the rendered output. + $form['output']['#markup'] = str_replace($search, $replace, $form['output']['#markup']); + + // Render and add remaining form fields. + return drupal_render_children($form); +} + function theme_views_mini_pager($vars) { global $pager_page_array, $pager_total; diff --git a/sites/all/modules/views/theme/views-exposed-form.tpl.php b/sites/all/modules/views/theme/views-exposed-form.tpl.php index 38c3bf033..1112a7cfc 100644 --- a/sites/all/modules/views/theme/views-exposed-form.tpl.php +++ b/sites/all/modules/views/theme/views-exposed-form.tpl.php @@ -28,8 +28,8 @@ <?php endif; ?> <div class="views-exposed-form"> <div class="views-exposed-widgets clearfix"> - <?php foreach($widgets as $id => $widget): ?> - <div class="views-exposed-widget views-widget-<?php print $id ?>"> + <?php foreach ($widgets as $id => $widget): ?> + <div id="<?php print $widget->id; ?>-wrapper" class="views-exposed-widget views-widget-<?php print $id; ?>"> <?php if (!empty($widget->label)): ?> <label for="<?php print $widget->id; ?>"> <?php print $widget->label; ?> @@ -46,25 +46,25 @@ </div> <?php endforeach; ?> <?php if (!empty($sort_by)): ?> - <div class="views-exposed-widget"> + <div class="views-exposed-widget views-widget-sort-by"> <?php print $sort_by; ?> </div> - <div class="views-exposed-widget"> + <div class="views-exposed-widget views-widget-sort-order"> <?php print $sort_order; ?> </div> <?php endif; ?> <?php if (!empty($items_per_page)): ?> - <div class="views-exposed-widget"> + <div class="views-exposed-widget views-widget-per-page"> <?php print $items_per_page; ?> </div> <?php endif; ?> <?php if (!empty($offset)): ?> - <div class="views-exposed-widget"> + <div class="views-exposed-widget views-widget-offset"> <?php print $offset; ?> </div> <?php endif; ?> <div class="views-exposed-widget views-submit-button"> - <?php print $button ?> + <?php print $button; ?> </div> <?php if (!empty($reset_button)): ?> <div class="views-exposed-widget views-reset-button"> diff --git a/sites/all/modules/views/theme/views-more.tpl.php b/sites/all/modules/views/theme/views-more.tpl.php index f0025144f..43b5221be 100644 --- a/sites/all/modules/views/theme/views-more.tpl.php +++ b/sites/all/modules/views/theme/views-more.tpl.php @@ -3,7 +3,9 @@ * @file views-more.tpl.php * Theme the more link * - * - $more_url: the url for the more link + * - $view: The view object. + * - $more_url: the url for the more link. + * - $link_text: the text for the more link. * * @ingroup views_templates */ diff --git a/sites/all/modules/views/theme/views-ui-edit-tab.tpl.php b/sites/all/modules/views/theme/views-ui-edit-tab.tpl.php deleted file mode 100644 index dffaa9e10..000000000 --- a/sites/all/modules/views/theme/views-ui-edit-tab.tpl.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php -/** - * @file views-ui-edit-tab.tpl.php - * Template for the primary view editing window. - */ -?> -<div class="clearfix views-display views-display-<?php print $display->id; if (!empty($display->deleted)) { print ' views-display-deleted'; }; ?>"> - <?php // top section ?> - <?php if ($remove): ?> - <div class="remove-display"><?php print $remove ?></div> - <?php endif; ?> - <?php if ($clone): ?> - <div class="clone-display"><?php print $clone ?></div> - <?php endif; ?> - <div class="top"> - <div class="inside"> - <?php print $display_help_icon; ?> - <span class="display-title"> - <?php print $title; ?> - </span> - <span class="display-description"> - <?php print $description; ?> - </span> - </div> - </div> - - <?php // left section ?> - <div class="left tab-section"> - <div class="inside"> - <?php // If this is the default display, add some basic stuff here. ?> - <?php if ($default): ?> - <div class="views-category"> - <div class="views-category-title"><?php print t('View settings'); ?></div> - <div class="views-category-content"> - <?php foreach ($details as $name => $detail): ?> - <div class="<?php $details_class[$name]; if (!empty($details_changed[$name])) { print ' changed'; }?>"> - <?php print $detail ?> - </div> - <?php endforeach; ?> - </div> - </div> - <?php endif; ?> - - <?php foreach ($categories as $category_id => $category): ?> - <div class="views-category"> - <div class="views-category-title views-category-<?php print $category_id; ?>"> - <?php print $category['title']; ?> - </div> - <div class="views-category-content"> - <?php foreach ($category['data'] as $data): ?> - <div class="<?php - print $data['class']; - if (!empty($data['overridden'])) { - print ' overridden'; - } - if (!empty($data['defaulted'])) { - print ' defaulted'; - } - if (!empty($data['changed'])) { - print ' changed'; - }?>"> - <?php print $data['links'] . $data['content'] ?> - </div> - <?php endforeach; ?> - </div> - </div> - <?php endforeach; ?> - </div> - </div> - - <?php // middle section ?> - <div class="middle tab-section"> - <div class="inside"> - <?php foreach ($areas as $area): ?> - <div class="views-category"> - <?php print $area; ?> - </div> - <?php endforeach;?> - <?php if (!empty($fields)): ?> - <div class="views-category"> - <?php print $fields; ?> - </div> - <?php endif; ?> - </div> - </div> - - <?php // right section ?> - <div class="right tab-section"> - <div class="inside"> - <div class="views-category"> - <?php print $relationships; ?> - </div> - <div class="views-category"> - <?php print $arguments; ?> - </div> - <div class="views-category"> - <?php print $sorts; ?> - </div> - <div class="views-category"> - <?php print $filters; ?> - </div> - </div> - </div> - -</div> diff --git a/sites/all/modules/views/theme/views-ui-list-views.tpl.php b/sites/all/modules/views/theme/views-ui-list-views.tpl.php deleted file mode 100644 index 76701e254..000000000 --- a/sites/all/modules/views/theme/views-ui-list-views.tpl.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -// $Id: views-ui-list-views.tpl.php,v 1.6.6.1 2010/01/20 23:24:24 dereine Exp $ -/** - * @file - * - * Displays the list of views on the administration screen. - */ -?> -<p><?php print $help; ?></p> -<?php print $widgets; ?> -<?php foreach ($views as $view): ?> - <table class="views-entry <?php print $view->classes; ?>"> - <tbody> - <tr> - <td class="view-name"> - <?php print $help_type_icon; ?> - <?php print t('<em>@type</em> @base view: <strong>@view</strong>', array('@type' => $view->type, '@view' => $view->name, '@base' => $view->base)); ?> - <?php if (!empty($view->tag)): ?> - (<?php print $view->tag; ?>) - <?php endif; ?> - </td> - <td class="view-ops"><?php print $view->ops ?></td> - </tr> - <tr> - <td> - <?php if ($view->title): ?> - <?php print t('Title: @title', array('@title' => $view->title)); ?> <br /> - <?php endif; ?> - <?php if (isset($view->path)): ?> - <?php print t('Path: !path', array('!path' => $view->path)); ?> <br /> - <?php endif; ?> - <?php if ($view->displays): ?> - <em><?php print $view->displays; ?> </em><br /> - <?php endif; ?> - </td> - <td colspan="2" class="description"> - <?php print $view->description; ?> - </td> - </tr> - </tbody> - </table> -<?php endforeach; ?> diff --git a/sites/all/modules/views/theme/views-view-field.tpl.php b/sites/all/modules/views/theme/views-view-field.tpl.php index 6aebd27f6..6bd6656e6 100644 --- a/sites/all/modules/views/theme/views-view-field.tpl.php +++ b/sites/all/modules/views/theme/views-view-field.tpl.php @@ -19,4 +19,4 @@ * the view is modified. */ ?> -<?php print $output; ?> \ No newline at end of file +<?php print $output; ?> diff --git a/sites/all/modules/views/theme/views-view-row-comment.tpl.php b/sites/all/modules/views/theme/views-view-row-comment.tpl.php index b6fa85c29..627f5f7a8 100644 --- a/sites/all/modules/views/theme/views-view-row-comment.tpl.php +++ b/sites/all/modules/views/theme/views-view-row-comment.tpl.php @@ -14,4 +14,4 @@ * @ingroup views_templates */ ?> -<?php print $comment; ?> \ No newline at end of file +<?php print $comment; ?> diff --git a/sites/all/modules/views/theme/views-view-row-node.tpl.php b/sites/all/modules/views/theme/views-view-row-node.tpl.php deleted file mode 100644 index d40bb4dd3..000000000 --- a/sites/all/modules/views/theme/views-view-row-node.tpl.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php -/** - * @file views-view-row-node.tpl.php - * Default simple view template to display a single node. - * - * Rather than doing anything with this particular template, it is more - * efficient to use a variant of the node.tpl.php based upon the view, - * which will be named node--view--VIEWNAME.tpl.php. This isn't actually - * a views template, which is why it's not used here, but is a template - * 'suggestion' given to the node template, and is used exactly - * the same as any other variant of the node template file, such as - * node-NODETYPE.tpl.php - * - * @ingroup views_templates - */ -?> -<?php print $node; ?> -<?php if ($comments): ?> - <?php print $comments; ?> -<?php endif; ?> diff --git a/sites/all/modules/views/theme/views-view-rss.tpl.php b/sites/all/modules/views/theme/views-view-rss.tpl.php index 54e4dc9b4..10800b24e 100644 --- a/sites/all/modules/views/theme/views-view-rss.tpl.php +++ b/sites/all/modules/views/theme/views-view-rss.tpl.php @@ -16,4 +16,4 @@ <?php print $channel_elements; ?> <?php print $items; ?> </channel> -</rss> \ No newline at end of file +</rss> diff --git a/sites/all/modules/views/theme/views-view-table.tpl.php b/sites/all/modules/views/theme/views-view-table.tpl.php index b728b4121..3ec5f5c3f 100644 --- a/sites/all/modules/views/theme/views-view-table.tpl.php +++ b/sites/all/modules/views/theme/views-view-table.tpl.php @@ -7,7 +7,7 @@ * - $header: An array of header labels keyed by field id. * - $header_classes: An array of header classes keyed by field id. * - $fields: An array of CSS IDs to use for each field id. - * - $class: A class or classes to apply to the table, based on settings. + * - $classes: A class or classes to apply to the table, based on settings. * - $row_classes: An array of classes to apply to each row, indexed by row * number. This matches the index in $rows. * - $rows: An array of row items. Each row is an array of content. @@ -17,24 +17,24 @@ * @ingroup views_templates */ ?> -<table class="<?php print $classes; ?>"<?php print $attributes; ?>> +<table <?php if ($classes) { print 'class="'. $classes . '" '; } ?><?php print $attributes; ?>> <?php if (!empty($title)) : ?> <caption><?php print $title; ?></caption> <?php endif; ?> <thead> <tr> <?php foreach ($header as $field => $label): ?> - <th class="<?php print $header_classes[$field]; ?>"> + <th <?php if ($header_classes[$field]) { print 'class="'. $header_classes[$field] . '" '; } ?>> <?php print $label; ?> </th> <?php endforeach; ?> </tr> </thead> <tbody> - <?php foreach ($rows as $count => $row): ?> - <tr class="<?php print implode(' ', $row_classes[$count]); ?>"> + <?php foreach ($rows as $row_count => $row): ?> + <tr class="<?php print implode(' ', $row_classes[$row_count]); ?>"> <?php foreach ($row as $field => $content): ?> - <td class="<?php print $field_classes[$field][$count]; ?>" <?php print drupal_attributes($field_attributes[$field][$count]); ?>> + <td <?php if ($field_classes[$field][$row_count]) { print 'class="'. $field_classes[$field][$row_count] . '" '; } ?><?php print drupal_attributes($field_attributes[$field][$row_count]); ?>> <?php print $content; ?> </td> <?php endforeach; ?> diff --git a/sites/all/modules/views/theme/views-view.tpl.php b/sites/all/modules/views/theme/views-view.tpl.php index 755f8ab87..94393eeb8 100644 --- a/sites/all/modules/views/theme/views-view.tpl.php +++ b/sites/all/modules/views/theme/views-view.tpl.php @@ -22,16 +22,11 @@ * - $exposed: Exposed widget form/info to display * - $feed_icon: Feed icon to display, if any * - $more: A link to view more, if any - * - $admin_links: A rendered list of administrative links - * - $admin_links_raw: A list of administrative links suitable for theme('links') * * @ingroup views_templates */ ?> <div class="<?php print $classes; ?>"> - <?php if ($admin_links): ?> - <?php print $admin_links; ?> - <?php endif; ?> <?php print render($title_prefix); ?> <?php if ($title): ?> <?php print $title; ?> @@ -91,4 +86,4 @@ </div> <?php endif; ?> -</div> <?php /* class view */ ?> +</div><?php /* class view */ ?> diff --git a/sites/all/modules/views/translations/de.po b/sites/all/modules/views/translations/de.po deleted file mode 100644 index e878db831..000000000 --- a/sites/all/modules/views/translations/de.po +++ /dev/null @@ -1,4439 +0,0 @@ -# LANGUAGE translation of Drupal (general) -# Copyright YEAR NAME <EMAIL@ADDRESS> -# Generated from files: -# views.module,v 1.141 2006/06/25 18:24:56 merlinofchaos -# views_ui.module,v 1.28 2006/06/25 18:24:56 merlinofchaos -# views_user.inc,v 1.7 2006/06/25 18:24:56 merlinofchaos -# views_comment.inc,v 1.3 2006/06/23 22:12:23 merlinofchaos -# views_node.inc,v 1.16 2006/06/25 18:24:56 merlinofchaos -# views_upload.inc,v 1.1 2006/06/24 01:41:53 merlinofchaos -# views_rss.module,v 1.3 2006/06/25 01:57:28 merlinofchaos -# views_theme_wizard.module,v 1.2 2006/07/12 23:21:04 merlinofchaos -# views.install,v 1.21 2006/07/24 22:44:27 merlinofchaos -# -msgid "" -msgstr "" -"Project-Id-Version: German translation for views module\n" -"POT-Creation-Date: 2008-11-06 21:18+0100\n" -"PO-Revision-Date: 2008-12-01 01:16+0100\n" -"Last-Translator: Alexander Haß\n" -"Language-Team: Alexander Hass\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: German\n" -"X-Poedit-Country: GERMANY\n" -"X-Poedit-SourceCharset: utf-8\n" - -#: views.module:629 -msgid "Broken handler @table.@field" -msgstr "Beschädigte Behandlungsroutine @table.@field" - -#: views.module:747 -msgid "Skipping broken view @view" -msgstr "Beschädigte Ansicht @view wurde übersprungen" - -#: views.module:794;834 -#: includes/admin.inc:98;216;216;621 -msgid "Overridden" -msgstr "Übersteuert" - -#: views.module:797;830 -#: views_ui.module:289 -#: includes/admin.inc:97;215;215;588;766 -msgid "Default" -msgstr "Standard" - -#: views.module:935 -#: includes/admin.inc:295 -#: views_export/views_export.module:116 -msgid "Apply" -msgstr "Anwenden" - -#: views.module:151 -#: views_ui.module:26 -#: views.info:0;0 -#: views_ui.info:0 -#: views_export/views_export.info:0 -msgid "Views" -msgstr "Ansichten" - -#: views.module:155 -msgid "Ajax callback for view loading." -msgstr "Ajax-Rückfrage für das Laden der Ansicht." - -#: views.module:0 -msgid "views" -msgstr "Ansichten" - -#: views_ui.module:159 -msgid "The converter will make a best-effort attempt to convert a Views 1 view to Views 2. This conversion is not reliable; you will very likely have to make adjustments to your view to get it to match. You can import Views 1 views through the normal Import tab." -msgstr "Der Konverter wird mit größter Mühe versuchen einen „View 1“ nach „View 2“ zu konvertieren. Diese Konvertierung ist nicht zuverlässig und es müssen sicherlich Anpassungen an der Ansicht vorgenommen werden, um den alten Stand wiederherzustellen. „View 1“-Ansichten können über den normalen Import-Reiter importiert werden." - -#: views_ui.module:265 -msgid "Changes cannot be made to a locked view." -msgstr "An einer gesperrten Ansicht können keine Änderungen vorgenommen werden." - -#: views_ui.module:28 -msgid "Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented." -msgstr "Ansichten sind benutzerdefinierte Listen von Inhalt in dem System. Diese sind hochgradig Konfigurierbar und ermöglichen die Kontrolle, wie Listen von Inhalten präsentiert werden." - -#: views_ui.module:32 -#: includes/plugins.inc:135 -msgid "List" -msgstr "Alle anzeigen" - -#: views_ui.module:38 -#: includes/admin.inc:1178;1178;2165 -msgid "Add" -msgstr "Hinzufügen" - -#: views_ui.module:43 -#: includes/admin.inc:724 -msgid "Import" -msgstr "Importieren" - -#: views_ui.module:49 -msgid "Tools" -msgstr "Werkzeuge" - -#: views_ui.module:55 -msgid "Basic" -msgstr "Basis" - -#: views_ui.module:63 -#: includes/convert.inc:30 -msgid "Convert" -msgstr "Konvertieren" - -#: views_ui.module:64 -msgid "Convert stored Views 1 views." -msgstr "Konvertiere gespeicherte Views 1 Ansichten." - -#: views_ui.module:70;83;88 -msgid "Delete view" -msgstr "Ansicht löschen" - -#: views_ui.module:76 -msgid "Convert view" -msgstr "Ansicht konvertieren" - -#: views_ui.module:113 -#: includes/admin.inc:93 -#: theme/theme.inc:89 -msgid "Edit" -msgstr "Bearbeiten" - -#: views_ui.module:0 -msgid "views_ui" -msgstr "views_ui" - -#: views.install:31 -msgid "Stores the general data for a view." -msgstr "Speichert die allgemeinen Daten für eine Ansicht." - -#: views.install:37 -msgid "The view ID of the field, defined by the database." -msgstr "Die von der Datenbank festgelegte Ansichts-ID für das Feld." - -#: views.install:45 -msgid "The unique name of the view. This is the primary field views are loaded from, and is used so that views may be internal and not necessarily in the database. May only be alphanumeric characters plus underscores." -msgstr "Der eindeutige Name der Ansicht. Dies ist das primäre Feld aus dem Ansichten geladen werden und wird verwendet, damit Ansichten intern sind und sich nicht notwendigerweise in der Datenbank befinden müssen." - -#: views.install:51 -msgid "A description of the view for the admin interface." -msgstr "Eine Beschreibung der Ansicht für die Verwaltungsoberfläche." - -#: views.install:57 -msgid "A tag used to group/sort views in the admin interface" -msgstr "Eine Kennzeichnung die verwendet wird, um Ansichten in der Verwaltungsoberfläche zu gruppieren/sortieren." - -#: views.install:61 -msgid "A chunk of PHP code that can be used to provide modifications to the view prior to building." -msgstr "Ein Stück von PHP-Code das verwendet werden kann, um Änderungen an einer Ansicht vor dem Aufbau vorzunehmen." - -#: views.install:68 -msgid "What table this view is based on, such as node, user, comment, or term." -msgstr "Auf welcher Tabelle diese Ansicht basiert, wie etwa Beitrag, Benutzer, Kommentar oder Begriff." - -#: views.install:74 -msgid "A boolean to indicate whether or not this view may have its query cached." -msgstr "Ein boolscher Wert der angibt, ob die Abfrage dieser Ansicht gecached wird oder nicht." - -#: views.install:82 -msgid "Stores information about each display attached to a view." -msgstr "Speichert Informationen über jede Anzeige, die mit einer Ansicht verbunden ist." - -#: views.install:89 -msgid "The view this display is attached to." -msgstr "Die Ansicht mit der diese Anzeige verbunden ist." - -#: views.install:97 -msgid "An identifier for this display; usually generated from the display_plugin, so should be something like page or page_1 or block_2, etc." -msgstr "Ein Bezeichner für die Anzeige. Normalerweise wird dieser vom display_plugin generiert und sollte so ähnlich wie page, page_1 oder page_2, usw. lauten." - -#: views.install:104 -msgid "The title of the display, viewable by the administrator." -msgstr "Der für einen Administrator sichtbare Titel der Anzeige." - -#: views.install:111 -msgid "The type of the display. Usually page, block or embed, but is pluggable so may be other things." -msgstr "Der Typ der Anzeige. Normalerweise eine Seite, Block oder Einbettung aber auch um andere Dinge erweiterbar." - -#: views.install:116 -msgid "The order in which this display is loaded." -msgstr "Die Reihenfolge in der die Anzeige geladen wird." - -#: views.install:120 -msgid "A serialized array of options for this display; it contains options that are generally only pertinent to that display plugin type." -msgstr "Ein serialisiertes Array von Optionen für diese Anzeige. Dies enthält Optionen die generell nur zu diesem Anzeige-Plugin-Typ gehören." - -# TODO -#: views.install:131 -msgid "A special cache used to store objects that are being edited; it serves to save state in an ordinarily stateless environment." -msgstr "Ein spezieller Cache der zum Speichern von Objekten verwendet wird, die gerade bearbeitet werden. Dieser stellt den Status " - -#: views.install:136 -msgid "The session ID this cache object belongs to." -msgstr "Die Session-ID zu der dieses Cacheobjekt gehört." - -#: views.install:141 -msgid "The name of the view this cache is attached to." -msgstr "Der Name der Ansicht mit dem dieser Cache verbunden ist." - -#: views.install:146 -msgid "The name of the object this cache is attached to; this essentially represents the owner so that several sub-systems can use this cache." -msgstr "Der Name des Objekts an den dieser Cache angehängt ist. Dies repräsentiert hauptsächlich den Eigentümer, damit verschiedene andere Subsysteme diesen Cache nutzen können." - -#: views.install:153 -msgid "The time this cache was created or updated." -msgstr "Der Zeitpunkt zu dem der Cache erstellt oder aktualisiert wurde." - -#: views.install:157 -msgid "Serialized data being stored." -msgstr "Die gespeicherten serialisierten Daten." - -#: views.info:0 -msgid "Create customized lists and queries from your database." -msgstr "Benutzerdefinierte Listen und Abfragen aus der Datenbank erstellen." - -#: views_ui.info:0 -msgid "Views UI" -msgstr "Ansichten UI" - -#: views_ui.info:0 -msgid "Administrative interface to views. Without this module, you cannot create or edit your views." -msgstr "Verwaltungsoberfläche für Ansichten. Ohne dieses Modul können Ansichten weder erstellt noch bearbeitet werden." - -#: docs/docs.php:127 -msgid "Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page." -msgstr "Emuliert die standardmäßige Drupal-Startseite. Der standardmäßige Pfad der Startseite kann auf diese Ansicht eingestellt werden, um diese zur Startseite zu machen." - -#: docs/docs.php:128 -msgid "default" -msgstr "Standard" - -#: docs/docs.php:137 -#: includes/plugins.inc:25 -msgid "Defaults" -msgstr "Standards" - -#: docs/docs.php:226 -#: includes/plugins.inc:39;47 -msgid "Page" -msgstr "Seite" - -#: docs/docs.php:281 -#: includes/plugins.inc:72;80 -msgid "Feed" -msgstr "Newsfeed" - -#: docs/docs.php:349 -msgid "Front page feed" -msgstr "Newsfeed der Startseite" - -#: handlers/views_handler_argument.inc:102 -#: modules/translation/views_handler_relationship_translation.inc:23 -msgid "All" -msgstr "Alle" - -#: handlers/views_handler_argument.inc:119 -#: includes/admin.inc:272;383 -#: modules/comment.views.inc:44 -#: modules/node.views.inc:85;413 -#: plugins/views_plugin_display.inc:592 -#: plugins/views_plugin_display_page.inc:285;348 -msgid "Title" -msgstr "Titel" - -#: handlers/views_handler_argument.inc:121 -msgid "The title to use when this argument is present. It will override the title of the view and titles from previous arguments. You can use percent substitution here to replace with argument titles. Use \"%1\" for the first argument, \"%2\" for the second, etc." -msgstr "Der bei diesem vorhandenen Argument zu verwendende Titel. Dies wird den Titel der Ansicht und die Titel von vorhergehenden Argumenten übersteuern. Um Titel mit Argumenten zu ersetzen, kann die prozentuale Ersetzung verwendet werden. Dabei kann für das erste Argument „%1“, für das zweite „%2“, etc. verwendet werden." - -#: handlers/views_handler_argument.inc:134 -msgid "Action to take if argument is not present" -msgstr "Die auszuführende Aktion, wenn das Argument nicht vorhanden ist" - -#: handlers/views_handler_argument.inc:146 -msgid "Wildcard" -msgstr "Platzhalter" - -#: handlers/views_handler_argument.inc:149 -msgid "If this value is received as an argument, the argument will be ignored; i.e, \"all values\"" -msgstr "Sollte dieser Wert als Argument übergeben werden, wird das Argument ignoriert z.B. „alle Werte“" - -#: handlers/views_handler_argument.inc:155 -#, fuzzy -msgid "Wildcard title" -msgstr "Platzhaltertitel" - -#: handlers/views_handler_argument.inc:158 -msgid "The title to use for the wildcard in substitutions elsewhere." -msgstr "" - -#: handlers/views_handler_argument.inc:181 -msgid "Validator options" -msgstr "Validatoroptionen" - -#: handlers/views_handler_argument.inc:186 -#, fuzzy -msgid "Validator" -msgstr "Validator" - -#: handlers/views_handler_argument.inc:190 -msgid "<Basic validation>" -msgstr "<Basisvalidierung>" - -#: handlers/views_handler_argument.inc:229 -msgid "Action to take if argument does not validate" -msgstr "Die auszuführende Aktion, wenn das Argument nicht valide ist" - -#: handlers/views_handler_argument.inc:248 -msgid "Display all values" -msgstr "Alle Werte anzeigen" - -#: handlers/views_handler_argument.inc:253 -msgid "Hide view / Page not found (404)" -msgstr "Ansicht ausblenden / Seite wurde nicht gefunden (404)" - -#: handlers/views_handler_argument.inc:258 -msgid "Display empty text" -msgstr "Leerer Text anzeigen" - -#: handlers/views_handler_argument.inc:263 -msgid "Summary, sorted ascending" -msgstr "Zusammenfassung, aufsteigend sortiert" - -#: handlers/views_handler_argument.inc:270 -msgid "Summary, sorted descending" -msgstr "Zusammenfassung, absteigend sortiert" - -#: handlers/views_handler_argument.inc:277 -msgid "Provide default argument" -msgstr "Standardargument zu Verfügung stellen" - -#: handlers/views_handler_argument.inc:310 -msgid "Provide default argument options" -msgstr "Standardmäßige Argumentoptionen zur Verfügung stellen" - -#: handlers/views_handler_argument.inc:320 -msgid "Default argument type" -msgstr "Standardtyp für Argumente" - -#: handlers/views_handler_argument.inc:708 -#: handlers/views_handler_field.inc:227 -#: handlers/views_handler_filter.inc:592 -#: handlers/views_handler_relationship.inc:133 -#: handlers/views_handler_sort.inc:66 -msgid "Broken/missing handler" -msgstr "Beschädigte/fehlende Behandlungsroutine" - -#: handlers/views_handler_argument.inc:716 -#: handlers/views_handler_field.inc:235 -#: handlers/views_handler_filter.inc:600 -#: handlers/views_handler_relationship.inc:141 -#: handlers/views_handler_sort.inc:74 -msgid "The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item." -msgstr "Die Behandlungsroutine für diesen Eintrag ist beschädigt oder fehlt und kann nicht verwendet werden. Sollte ein Modul diese Behandlungsroutine zu Verfügung gestellt haben und deaktiviert worden sein, kann die Wiederaktivierung des Moduls dies korrigieren. Ansonsten sollte der Eintrag wohl gelöscht werden." - -#: handlers/views_handler_argument_date.inc:29 -msgid "Current date" -msgstr "Aktuelles Datum" - -#: handlers/views_handler_argument_date.inc:30 -msgid "Current node's creation time" -msgstr "Aktuelles Beitragserstellungsdatum" - -#: handlers/views_handler_argument_date.inc:31 -msgid "Current node's update time" -msgstr "Aktuelles Beitragsaktualisierungsdatum" - -#: handlers/views_handler_argument_many_to_one.inc:45 -#: handlers/views_handler_argument_numeric.inc:30 -msgid "Allow multiple terms per argument." -msgstr "Ermöglicht mehrere Begriffe pro Argument." - -# English string needs work "ODER-Verknüpfung" -#: handlers/views_handler_argument_many_to_one.inc:46 -#, fuzzy -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 (for OR) or 1,2,3 (for AND)." -msgstr "Sobald ausgewählt, können Benutzer mehrere Argumente in Form von 1+2+3 (für ODER-Verknüpfungen) oder 1,2,3 (für UND-Verknüpfungen) angeben." - -#: handlers/views_handler_argument_many_to_one.inc:53 -#: handlers/views_handler_argument_string.inc:95 -msgid "Allow multiple arguments to work together." -msgstr "Ermöglicht die Zusammenarbeit mehrerer Argumente." - -#: handlers/views_handler_argument_many_to_one.inc:54 -#: handlers/views_handler_argument_string.inc:96 -msgid "If selected, multiple instances of this argument can work together, as though multiple terms were supplied to the same argument. This setting is not compatible with the \"Reduce duplicates\" setting." -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:60 -#: handlers/views_handler_argument_string.inc:102 -msgid "Do not display items with no value in summary" -msgstr "Einträge ohne Wert in der Zusammenfassung nicht anzeigen" - -#: handlers/views_handler_argument_many_to_one.inc:95;109 -#: handlers/views_handler_argument_numeric.inc:45;57 -#: modules/taxonomy.views.inc:129;208;292 -msgid "Uncategorized" -msgstr "Nicht kategorisiert" - -#: handlers/views_handler_argument_many_to_one.inc:113 -#: handlers/views_handler_argument_numeric.inc:61 -msgid "Invalid input" -msgstr "Ungültige Eingabe" - -#: handlers/views_handler_argument_null.inc:21 -msgid "Fail basic validation if any argument is given" -msgstr "Die Basisvalidierung soll fehlschlagen, wenn irgendein Argument übergeben wird" - -#: handlers/views_handler_argument_null.inc:23 -msgid "By checking this field, you can use this to make sure views with more arguments than necessary fail validation." -msgstr "" - -#: handlers/views_handler_argument_numeric.inc:31 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." -msgstr "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." - -#: handlers/views_handler_argument_numeric.inc:37 -msgid "Exclude the argument" -msgstr "Argument ausschließen" - -#: handlers/views_handler_argument_numeric.inc:38 -msgid "If selected, the numbers entered in the argument will be excluded rather than limiting the view." -msgstr "Sobald ausgewählt, werden die im Argument angegebenen Zahlen ausgeschlossen und nicht zur Begrenzung der Ansicht verwendet." - -#: handlers/views_handler_argument_string.inc:44 -msgid "Glossary mode" -msgstr "" - -#: handlers/views_handler_argument_string.inc:45 -msgid "Glossary mode applies a limit to the number of characters used in the argument, which allows the summary view to act as a glossary." -msgstr "" - -#: handlers/views_handler_argument_string.inc:51 -msgid "Character limit" -msgstr "Zeichenbegrenzung" - -#: handlers/views_handler_argument_string.inc:52 -msgid "How many characters of the argument to filter against. If set to 1, all fields starting with the letter in the argument would be matched." -msgstr "" - -#: handlers/views_handler_argument_string.inc:60 -msgid "Case" -msgstr "Groß-/Kleinschreibung" - -#: handlers/views_handler_argument_string.inc:61 -msgid "When printing the argument result, how to transform the case." -msgstr "" - -#: handlers/views_handler_argument_string.inc:63;77 -msgid "No transform" -msgstr "Keine Umwandlung" - -#: handlers/views_handler_argument_string.inc:64;78 -msgid "Upper case" -msgstr "Großschreibung" - -#: handlers/views_handler_argument_string.inc:65;79 -msgid "Lower case" -msgstr "Kleinschreibung" - -#: handlers/views_handler_argument_string.inc:66;80 -msgid "Capitalize first letter" -msgstr "Ersten Buchstaben groß schreiben" - -#: handlers/views_handler_argument_string.inc:67;81 -msgid "Capitalize each word" -msgstr "Jedes Wort groß schreiben" - -#: handlers/views_handler_argument_string.inc:74 -msgid "Case in path" -msgstr "Groß-/Kleinschreibung im Pfad" - -#: handlers/views_handler_argument_string.inc:75 -msgid "When printing url paths, how to transform the of the argument. Do not use this unless with Postgres as it uses case sensitive comparisons." -msgstr "" - -#: handlers/views_handler_argument_string.inc:88 -msgid "Transform spaces to dashes in URL" -msgstr "Leerzeichen in der URL in Striche umwandeln" - -#: handlers/views_handler_field.inc:146 -#: handlers/views_handler_filter.inc:322 -#: handlers/views_handler_relationship.inc:78 -msgid "Label" -msgstr "Bezeichnung" - -#: handlers/views_handler_field.inc:148 -msgid "The label for this field that will be displayed to end users if the style requires it." -msgstr "" - -#: handlers/views_handler_field.inc:152 -msgid "Exclude from display" -msgstr "Von der Anzeige ausschließen" - -#: handlers/views_handler_field.inc:154 -msgid "Check this box to not display this field, but still load it in the view. Use this option to not show a grouping field in each record, or when doing advanced theming." -msgstr "" - -#: handlers/views_handler_field_boolean.inc:24 -msgid "Output format" -msgstr "Ausgabeformat" - -#: handlers/views_handler_field_boolean.inc:26 -msgid "Yes/No" -msgstr "Ja/Nein" - -#: handlers/views_handler_field_boolean.inc:27 -msgid "True/False" -msgstr "Wahr/Unwahr" - -#: handlers/views_handler_field_boolean.inc:28 -msgid "On/Off" -msgstr "An/Aus" - -#: handlers/views_handler_field_boolean.inc:34 -msgid "Reverse" -msgstr "Umgekehrt" - -#: handlers/views_handler_field_boolean.inc:35 -msgid "If checked, true will be displayed as false." -msgstr "Sobald aktiviert, wird „wahr“ als „unwahr“ angezeigt." - -#: handlers/views_handler_field_boolean.inc:49 -#: handlers/views_handler_filter_boolean_operator.inc:47 -#: handlers/views_handler_filter_in_operator.inc:25 -#: plugins/views_plugin_display.inc:633;642;659;667;717;803;1207 -#: plugins/views_plugin_display_attachment.inc:63;69 -msgid "Yes" -msgstr "Ja" - -#: handlers/views_handler_field_boolean.inc:49 -#: handlers/views_handler_filter_boolean_operator.inc:47 -#: handlers/views_handler_filter_in_operator.inc:25 -#: plugins/views_plugin_display.inc:633;642;659;667;717;803;811;1207 -#: plugins/views_plugin_display_attachment.inc:63;69 -msgid "No" -msgstr "Nein" - -#: handlers/views_handler_field_boolean.inc:51 -#: handlers/views_handler_filter_boolean_operator.inc:16;61 -msgid "True" -msgstr "Wahr" - -#: handlers/views_handler_field_boolean.inc:51 -#: handlers/views_handler_filter_boolean_operator.inc:61 -msgid "False" -msgstr "Unwahr" - -#: handlers/views_handler_field_boolean.inc:53 -msgid "On" -msgstr "An" - -#: handlers/views_handler_field_boolean.inc:53 -msgid "Off" -msgstr "Aus" - -#: handlers/views_handler_field_date.inc:24 -msgid "Date format" -msgstr "Datumsformat" - -#: handlers/views_handler_field_date.inc:29 -msgid "Custom" -msgstr "Benutzerdefiniert" - -#: handlers/views_handler_field_date.inc:30 -#, fuzzy -msgid "Time ago" -msgstr "Zeit vergangen" - -#: handlers/views_handler_field_date.inc:36 -msgid "Custom date format" -msgstr "Benutzerdefiniertes Datumsformat" - -# not literally -#: handlers/views_handler_field_date.inc:37 -msgid "If \"Custom\", see <a href=\"http://us.php.net/manual/en/function.date.php\" target=\"_blank\">the PHP docs</a> for date formats. If \"Time ago\" this is the the number of different units to display, which defaults to two." -msgstr "Für „Benutzerdefiniert“ gibt es nähere Information über Datumsformate in der <a href=\"http://www.php.net/manual/de/function.date.php\" target=\"_blank\">PHP-Dokumentation</a>. Bei „Zeit vergangen“ ist dies die Anzahl der unterschiedlichen Einheiten die angezeigt werden sollen, welche standardmäßig 2-stellig sind." - -#: handlers/views_handler_field_date.inc:53 -msgid "%time ago" -msgstr "vor %time" - -#: handlers/views_handler_field_numeric.inc:32 -msgid "Round" -msgstr "Runden" - -#: handlers/views_handler_field_numeric.inc:33 -msgid "If checked, the number will be rounded." -msgstr "Sobald aktiviert, wird die Zahl gerundet." - -#: handlers/views_handler_field_numeric.inc:38 -msgid "Precision" -msgstr "Genauigkeit" - -#: handlers/views_handler_field_numeric.inc:40 -msgid "Specify how many digits to print after the decimal point." -msgstr "Festlegen, wie viele Stellen nach dem Dezimalpunkt erscheinen sollen." - -#: handlers/views_handler_field_numeric.inc:47 -msgid "Decimal point" -msgstr "Dezimalpunkt" - -#: handlers/views_handler_field_numeric.inc:49 -msgid "What single character to use as a decimal point." -msgstr "Welches Symbol als Dezimalpunkt verwendet werden soll." - -#: handlers/views_handler_field_numeric.inc:55 -msgid "Thousands separator" -msgstr "Tausender-Trennzeichen" - -#: handlers/views_handler_field_numeric.inc:57 -msgid "What single character to use as the thousands separator." -msgstr "Welches Symbol als tausender Trennzeichen verwendet werden soll." - -#: handlers/views_handler_field_numeric.inc:62 -msgid "Prefix" -msgstr "Präfix" - -#: handlers/views_handler_field_numeric.inc:64 -msgid "Text to put before the number, such as currency symbol." -msgstr "Text der vor die Zahl gestellt werden soll, wie etwa ein Währungszeichen." - -#: handlers/views_handler_field_numeric.inc:68 -msgid "Suffix" -msgstr "Suffix" - -#: handlers/views_handler_field_numeric.inc:70 -msgid "Text to put after the number, such as currency symbol." -msgstr "Text der an die Zahl angehängt werden soll, wie etwa ein Währungszeichen." - -#: handlers/views_handler_field_prerender_list.inc:29 -#: modules/node/views_plugin_row_node_rss.inc:24 -msgid "Display type" -msgstr "Anzeigetyp" - -#: handlers/views_handler_field_prerender_list.inc:31 -#: plugins/views_plugin_style_list.inc:33 -msgid "Unordered list" -msgstr "Ungeordnete Liste" - -#: handlers/views_handler_field_prerender_list.inc:32 -#: plugins/views_plugin_style_list.inc:33 -msgid "Ordered list" -msgstr "Geordnete Liste" - -#: handlers/views_handler_field_prerender_list.inc:33 -msgid "Simple separator" -msgstr "Einfacher Separator" - -#: handlers/views_handler_field_prerender_list.inc:40 -#: includes/admin.inc:2974 -#: plugins/views_plugin_row_fields.inc:47 -#: plugins/views_plugin_style_summary_unformatted.inc:30 -msgid "Separator" -msgstr "Separator" - -#: handlers/views_handler_field_prerender_list.inc:48 -msgid "Empty list text" -msgstr "Leerer Listentext" - -#: handlers/views_handler_field_prerender_list.inc:50 -msgid "If the list is empty, you may enter text here that will be displayed." -msgstr "Hier kann ein Text eingegeben werden, der bei einer leeren Liste angezeigt wird." - -#: handlers/views_handler_field_url.inc:24 -#: modules/statistics/views_handler_field_accesslog_path.inc:31 -msgid "Display as link" -msgstr "Als Link anzeigen" - -#: handlers/views_handler_filter.inc:136 -msgid "Operator" -msgstr "Operator" - -#: handlers/views_handler_filter.inc:201 -msgid "Expose" -msgstr "Hervorheben" - -# TODO as they view it. -#: handlers/views_handler_filter.inc:206 -#, fuzzy -msgid "This item is currently not exposed. If you <strong>expose</strong> it, users will be able to change the filter as they view it." -msgstr "Der Eintrag ist derzeit nicht hervorgehoben. Sollte dieser <strong>hervorgehoben</strong> werden, können Benutzer den Filter ändern." - -#: handlers/views_handler_filter.inc:213 -msgid "Hide" -msgstr "Ausblenden" - -# TODO as they view it. -#: handlers/views_handler_filter.inc:218 -#, fuzzy -msgid "This item is currently exposed. If you <strong>hide</strong> it, users will not be able to change the filter as they view it." -msgstr "Dieser Eintrag ist derzeit hervorgehoben. Sollte dieser <strong>ausgeblendet</strong> werden, können Benutzer den Filter nicht ändern." - -#: handlers/views_handler_filter.inc:289 -msgid "Unlock operator" -msgstr "Operator entsperren" - -#: handlers/views_handler_filter.inc:290 -msgid "When checked, the operator will be exposed to the user" -msgstr "Sobald aktiviert, wird der Operator für den Benutzer hervorgehoben" - -#: handlers/views_handler_filter.inc:296 -msgid "Operator identifier" -msgstr "Bezeichner für Operator" - -#: handlers/views_handler_filter.inc:298 -msgid "This will appear in the URL after the ? to identify this operator." -msgstr "Dies wird in der URL nach dem ? erscheinen, um diesen Operator zu identifizieren." - -#: handlers/views_handler_filter.inc:315 -msgid "Filter identifier" -msgstr "Bezeichner für Filter" - -#: handlers/views_handler_filter.inc:317 -msgid "This will appear in the URL after the ? to identify this filter. Cannot be blank." -msgstr "Dieser wird in der URL nach dem ? erscheinen, um den Filter zu identifizieren. Darf nicht unausgefüllt bleiben." - -#: handlers/views_handler_filter.inc:333 -msgid "Optional" -msgstr "Optional" - -#: handlers/views_handler_filter.inc:334 -msgid "This exposed filter is optional and will have added options to allow it not to be set." -msgstr "Dieser hervorgehobene Filter ist optional und wird Optionen enthalten, damit dieser nicht eingestellt werden muss." - -#: handlers/views_handler_filter.inc:340 -msgid "Force single" -msgstr "Eine Option erzwingen" - -#: handlers/views_handler_filter.inc:341 -msgid "Force this exposed filter to accept only one option." -msgstr "Diesen hervorgehobenen Filter zwingen, nur eine Option zu akzeptieren." - -#: handlers/views_handler_filter.inc:347 -msgid "Remember" -msgstr "Erinnern" - -#: handlers/views_handler_filter.inc:348 -msgid "Remember the last setting the user gave this filter." -msgstr "Die letzte Filtereinstellung des Benutzers merken." - -#: handlers/views_handler_filter.inc:359 -msgid "The identifier is required if the filter is exposed." -msgstr "Der Bezeichner ist erforderlich, wenn der Filter hervorgehoben ist." - -#: handlers/views_handler_filter.inc:364 -msgid "This identifier is not allowed." -msgstr "Dieser Bezeichner ist unzulässig." - -# Beliebig, etc ? -#: handlers/views_handler_filter.inc:465 -#, fuzzy -msgid "<Any>" -msgstr "<Jeder>" - -# TODO: English should be uppercase -#: handlers/views_handler_filter_boolean_operator.inc:58 -#: handlers/views_handler_filter_in_operator.inc:175 -#: handlers/views_handler_filter_numeric.inc:247 -#: handlers/views_handler_filter_string.inc:111 -#, fuzzy -msgid "exposed" -msgstr "Hervorgehoben" - -#: handlers/views_handler_filter_date.inc:24 -msgid "Value type" -msgstr "Werttyp" - -#: handlers/views_handler_filter_date.inc:26 -msgid "A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred." -msgstr "Ein Datum in einem maschinenlesbaren Format. JJJJ-MM-TT HH:MM:SS ist bevorzugt." - -#: handlers/views_handler_filter_date.inc:27 -msgid "An offset from the current time such as \"+1 day\" or \"-2 hours -30 minutes\"" -msgstr "Ein Zeitversatz bezogen auf die aktuellen Uhrzeit, wie etwa „+1 Tag“ oder „-2 Stunden -30 Minuten“" - -#: handlers/views_handler_filter_date.inc:77;83;87 -msgid "Invalid date format." -msgstr "Ungültiges Datumsformat." - -#: handlers/views_handler_filter_equality.inc:15 -#: handlers/views_handler_filter_numeric.inc:38 -#: handlers/views_handler_filter_string.inc:28 -msgid "Is equal to" -msgstr "Ist gleich mit" - -#: handlers/views_handler_filter_equality.inc:16 -#: handlers/views_handler_filter_numeric.inc:44 -#: handlers/views_handler_filter_string.inc:34 -msgid "Is not equal to" -msgstr "Ist ungleich zu" - -#: handlers/views_handler_filter_equality.inc:26 -#: handlers/views_handler_filter_numeric.inc:148;163 -#: handlers/views_handler_filter_string.inc:170 -msgid "Value" -msgstr "Wert" - -#: handlers/views_handler_filter_in_operator.inc:15 -msgid "Options" -msgstr "Optionen" - -#: handlers/views_handler_filter_in_operator.inc:37 -msgid "Limit list to selected items" -msgstr "Liste auf ausgewählte Einträge begrenzen" - -#: handlers/views_handler_filter_in_operator.inc:38 -msgid "If checked, the selected items presented to the user will be the only ones selected here." -msgstr "Sobald aktiviert, werden nur die hier ausgewählten Einträge dem Benutzer präsentiert." - -#: handlers/views_handler_filter_in_operator.inc:57 -#: handlers/views_handler_filter_many_to_one.inc:32 -msgid "Is one of" -msgstr "Ist eines von" - -#: handlers/views_handler_filter_in_operator.inc:58 -msgid "Is not one of" -msgstr "Ist keines von" - -#: handlers/views_handler_filter_in_operator.inc:193 -#: modules/system.views.inc:209 -#: plugins/views_plugin_access.inc:55 -msgid "Unknown" -msgstr "Unbekannt" - -#: handlers/views_handler_filter_many_to_one.inc:33 -msgid "Is all of" -msgstr "Ist alles von" - -#: handlers/views_handler_filter_many_to_one.inc:34 -msgid "Is none of" -msgstr "Ist keines von" - -#: handlers/views_handler_filter_numeric.inc:26 -msgid "Is less than" -msgstr "Ist weniger als" - -#: handlers/views_handler_filter_numeric.inc:28 -msgid "<" -msgstr "<" - -#: handlers/views_handler_filter_numeric.inc:32 -msgid "Is less than or equal to" -msgstr "Ist weniger als oder gleich" - -#: handlers/views_handler_filter_numeric.inc:34 -msgid "<=" -msgstr "<=" - -#: handlers/views_handler_filter_numeric.inc:40 -#: handlers/views_handler_filter_string.inc:29 -msgid "=" -msgstr "=" - -#: handlers/views_handler_filter_numeric.inc:46 -#: handlers/views_handler_filter_string.inc:35 -msgid "!=" -msgstr "!=" - -#: handlers/views_handler_filter_numeric.inc:50 -msgid "Is greater than or equal to" -msgstr "Ist größer als oder gleich" - -#: handlers/views_handler_filter_numeric.inc:52 -msgid ">=" -msgstr ">=" - -#: handlers/views_handler_filter_numeric.inc:56 -msgid "Is greater than" -msgstr "Ist größer als" - -#: handlers/views_handler_filter_numeric.inc:58 -msgid ">" -msgstr ">" - -#: handlers/views_handler_filter_numeric.inc:62 -msgid "Is between" -msgstr "Ist zwischen" - -#: handlers/views_handler_filter_numeric.inc:64 -msgid "between" -msgstr "zwischen" - -#: handlers/views_handler_filter_numeric.inc:68 -msgid "Is not between" -msgstr "Ist nicht zwischen" - -#: handlers/views_handler_filter_numeric.inc:70 -msgid "not between" -msgstr "nicht zwischen" - -#: handlers/views_handler_filter_numeric.inc:79 -#: handlers/views_handler_filter_string.inc:80 -msgid "Is empty (NULL)" -msgstr "Ist leer (NULL)" - -#: handlers/views_handler_filter_numeric.inc:81 -#: handlers/views_handler_filter_string.inc:82 -msgid "empty" -msgstr "leer" - -#: handlers/views_handler_filter_numeric.inc:85 -#: handlers/views_handler_filter_string.inc:86 -msgid "Is not empty (NULL)" -msgstr "Ist nicht leer (NULL)" - -#: handlers/views_handler_filter_numeric.inc:87 -#: handlers/views_handler_filter_string.inc:88 -msgid "not empty" -msgstr "nicht leer" - -#: handlers/views_handler_filter_numeric.inc:175 -msgid "Min" -msgstr "Min" - -#: handlers/views_handler_filter_numeric.inc:181 -msgid "And max" -msgstr "Und höchstens" - -#: handlers/views_handler_filter_numeric.inc:181 -msgid "And" -msgstr "und" - -#: handlers/views_handler_filter_numeric.inc:253 -msgid "@min and @max" -msgstr "@min und @max" - -#: handlers/views_handler_filter_string.inc:40 -msgid "Contains" -msgstr "Enthält" - -#: handlers/views_handler_filter_string.inc:41 -msgid "contains" -msgstr "enthält" - -#: handlers/views_handler_filter_string.inc:46 -msgid "Contains any word" -msgstr "Enthält ein beliebiges Wort" - -#: handlers/views_handler_filter_string.inc:47 -msgid "has word" -msgstr "enthält das Wort" - -#: handlers/views_handler_filter_string.inc:52 -msgid "Contains all words" -msgstr "Enthält alle Wörter" - -#: handlers/views_handler_filter_string.inc:53 -msgid "has all" -msgstr "enthält alle" - -#: handlers/views_handler_filter_string.inc:58 -msgid "Starts with" -msgstr "Beginnt mit" - -#: handlers/views_handler_filter_string.inc:59 -msgid "begins" -msgstr "beginnt" - -#: handlers/views_handler_filter_string.inc:64 -msgid "Ends with" -msgstr "Endet mit" - -#: handlers/views_handler_filter_string.inc:65 -msgid "ends" -msgstr "endet" - -#: handlers/views_handler_filter_string.inc:70 -msgid "Does not contain" -msgstr "Enthält nicht" - -#: handlers/views_handler_filter_string.inc:71 -msgid "!has" -msgstr "!has" - -#: handlers/views_handler_filter_string.inc:126 -msgid "Case sensitive" -msgstr "Groß- und Kleinschreibung berücksichtigen" - -#: handlers/views_handler_filter_string.inc:128 -msgid "Case sensitive filters may be faster. MySQL might ignore case sensitivity." -msgstr "Filter die Groß-/Kleinschreibung beachten, können schneller sein. MySQL könnte die Groß-/Kleinschreibung ignorieren." - -#: handlers/views_handler_relationship.inc:80 -msgid "The label for this relationship that will be displayed only administratively." -msgstr "Die Bezeichnung für diese Beziehung wird nur innerhalb der Verwaltung angezeigt." - -# Relationship is required -#: handlers/views_handler_relationship.inc:85 -msgid "Require this relationship" -msgstr "Beziehung ist erforderlich" - -#: handlers/views_handler_relationship.inc:86 -msgid "If required, items that do not contain this relationship will not appear." -msgstr "" - -#: handlers/views_handler_sort.inc:38 -msgid "asc" -msgstr "aufsteigend" - -#: handlers/views_handler_sort.inc:42 -msgid "desc" -msgstr "absteigend" - -#: handlers/views_handler_sort.inc:54 -msgid "Sort order" -msgstr "Sortierreihenfolge" - -#: handlers/views_handler_sort.inc:55 -#: plugins/views_plugin_style_table.inc:149 -msgid "Ascending" -msgstr "Aufsteigend" - -#: handlers/views_handler_sort.inc:55 -#: plugins/views_plugin_style_table.inc:149 -msgid "Descending" -msgstr "Absteigend" - -#: handlers/views_handler_sort_date.inc:26 -msgid "Granularity" -msgstr "Granularität" - -#: handlers/views_handler_sort_date.inc:28 -msgid "Second" -msgstr "Sekunde" - -#: handlers/views_handler_sort_date.inc:29 -msgid "Minute" -msgstr "Minute" - -#: handlers/views_handler_sort_date.inc:30 -msgid "Hour" -msgstr "Stunde" - -#: handlers/views_handler_sort_date.inc:31 -msgid "Day" -msgstr "Tag" - -#: handlers/views_handler_sort_date.inc:32 -msgid "Month" -msgstr "Monat" - -#: handlers/views_handler_sort_date.inc:33 -msgid "Year" -msgstr "Jahr" - -#: handlers/views_handler_sort_date.inc:35 -msgid "The granularity is the smallest unit to use when determining whether two dates are the same; for example, if the granularity is \"Year\" then all dates in 1999, regardless of when they fall in 1999, will be considered the same date." -msgstr "Die Granularität ist die Kleinste zu verwendende Einheit, wenn die Gleichheit zweiter Datumsangaben ermittelt werden soll. Sollte beispielsweise die Granularität das „Jahr“ sein, wird jedes Datum in 1999 ungeachtet dem Tag in 1999, als das gleiche Datum betrachtet." - -#: handlers/views_handler_sort_formula.inc:24 -msgid "views_handler_sort_formula missing default: @formula" -msgstr "Standard für views_handler_sort_formula ist nicht vorhanden: @formula" - -#: includes/admin.inc:36 -msgid "If you <a href=\"@modules\">enable the advanced help module</a>, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Das Ansichten-Modul stellt durch nach <a href=\"@modules\">Aktivieren des erweiterten Hilfemoduls</a> eine bessere und ausführlichere Hilfe zu Verfügung. <a href=\"@hide\">Diese Meldung ausblenden.</a>" - -#: includes/admin.inc:39 -msgid "If you install the advanced help module from !href, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Ansichten stellt durch die Installation des erweiterten Hilfemoduls von !href eine bessere und ausführlichere Hilfe zu Verfügung. <a href=\"@hide\">Diese Meldung ausblenden.</a>" - -#: includes/admin.inc:94;978 -#: theme/theme.inc:96 -#: views_export/views_export.module:128 -msgid "Export" -msgstr "Exportieren" - -#: includes/admin.inc:95;983 -#: theme/theme.inc:101 -msgid "Clone" -msgstr "Duplizieren" - -#: includes/admin.inc:98 -msgid "Revert" -msgstr "Zurücksetzen" - -#: includes/admin.inc:98;634;847 -#: includes/convert.inc:35;108 -msgid "Delete" -msgstr "Löschen" - -#: includes/admin.inc:103 -msgid "Disable" -msgstr "Deaktivieren" - -#: includes/admin.inc:106 -msgid "Enable" -msgstr "Aktivieren" - -#: includes/admin.inc:112 -msgid "Warning! Broken view!" -msgstr "Warnung! Beschädigte Ansicht!" - -#: includes/admin.inc:127 -#: includes/view.inc:1666 -msgid "Broken" -msgstr "Beschädigt" - -#: includes/admin.inc:189 -msgid "Install the advanced help module for the getting started" -msgstr "Für die ersten Schritte sollte das erweiterte Hilfemodul installiert werden" - -#: includes/admin.inc:192 -msgid "Not sure what to do? Try the \"!getting-started\" page." -msgstr "Nicht sicher was Sie machen sollen? Versuchen Sie die „!getting-started“-Seite aufzurufen." - -#: includes/admin.inc:206;213;2131 -msgid "<All>" -msgstr "<Alle>" - -#: includes/admin.inc:207 -#: plugins/views_plugin_style.inc:76 -msgid "<None>" -msgstr "<Keine>" - -#: includes/admin.inc:211 -msgid "Storage" -msgstr "Speicher" - -#: includes/admin.inc:214;214 -#: includes/view.inc:1165;1215 -msgid "Normal" -msgstr "Normal" - -#: includes/admin.inc:228;275 -#: modules/node.views.inc:140 -#: plugins/views_plugin_display_page.inc:273 -msgid "Type" -msgstr "Typ" - -#: includes/admin.inc:246;273;1063 -#: views_export/views_export.module:146 -#, fuzzy -msgid "Tag" -msgstr "Kennzeichnung" - -#: includes/admin.inc:262 -msgid "Displays" -msgstr "Anzeigen" - -#: includes/admin.inc:269 -msgid "Sort by" -msgstr "Sortieren nach" - -#: includes/admin.inc:271 -#: modules/system.views.inc:69 -#: modules/user.views.inc:59;79 -#: plugins/views_plugin_display.inc:580 -msgid "Name" -msgstr "Name" - -#: includes/admin.inc:274;391 -#: modules/statistics.views.inc:149 -#: modules/system.views.inc:88 -#: plugins/views_plugin_display_page.inc:202 -msgid "Path" -msgstr "Pfad" - -#: includes/admin.inc:276 -#: includes/convert.inc:21 -#: modules/upload.views.inc:56 -#: views_export/views_export.module:146 -msgid "Description" -msgstr "Beschreibung" - -#: includes/admin.inc:283 -msgid "Order" -msgstr "Reihenfolge" - -#: includes/admin.inc:285 -msgid "Up" -msgstr "nach oben" - -#: includes/admin.inc:286 -msgid "Down" -msgstr "nach unten" - -#: includes/admin.inc:370;401 -msgid "Query" -msgstr "Abfrage" - -#: includes/admin.inc:372 -msgid "These queries were run during view rendering:" -msgstr "Diese Abfragen werden während dem Rendering der Ansicht ausgeführt:" - -#: includes/admin.inc:377 -msgid "[@time ms]" -msgstr "[@time ms] " - -#: includes/admin.inc:380 -msgid "Other queries" -msgstr "Andere Abfragen" - -#: includes/admin.inc:388 -msgid "This display has no path." -msgstr "Diese Anzeige hat keinen Pfad." - -#: includes/admin.inc:393 -msgid "Query build time" -msgstr "Aufbauzeit der Abfrage" - -#: includes/admin.inc:393;394;395 -msgid "@time ms" -msgstr "@time ms" - -#: includes/admin.inc:394 -msgid "Query execute time" -msgstr "Ausführungszeit der Abfrage" - -#: includes/admin.inc:395 -msgid "View render time" -msgstr "Renderingzeit der Ansicht" - -#: includes/admin.inc:401 -#, fuzzy -msgid "No query was run" -msgstr "Es wurde keine Abfrage ausgeführt" - -#: includes/admin.inc:408 -#, fuzzy -msgid "Unable to preview due to validation errors." -msgstr "Die Vorschau kann wegen Validierungsfehlern nicht angezeigt werden." - -#: includes/admin.inc:459 -msgid "Display" -msgstr "Anzeige" - -#: includes/admin.inc:467 -#: includes/view.inc:1870 -msgid "Arguments" -msgstr "Argumente" - -#: includes/admin.inc:469 -msgid "Separate arguments with a / as though they were a URL path." -msgstr "Argumente mit einem „/“ voneinander abtrennen, als ob diese ein URL-Pfad wären." - -#: includes/admin.inc:475 -msgid "Preview" -msgstr "Vorschau" - -#: includes/admin.inc:513 -msgid "Clone view %view" -msgstr "Ansicht %view duplizieren" - -#: includes/admin.inc:526;713 -#: includes/convert.inc:20 -msgid "View name" -msgstr "Ansichtsname" - -#: includes/admin.inc:527 -msgid "This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If overriding a module provided view, the name must not be changed or instead a new view will be created." -msgstr "" - -#: includes/admin.inc:535;1826 -msgid "View description" -msgstr "Beschreibung anzeigen" - -#: includes/admin.inc:536;1827 -msgid "This description will appear on the Views administrative UI to tell you what the view is about." -msgstr "Diese Beschreibung erscheint auf der Verwaltungsoberfläche der Ansichten, um darüber Aufzuklären, worum es sich bei der Ansicht handelt." - -#: includes/admin.inc:542;1833 -#, fuzzy -msgid "View tag" -msgstr "Ansichten-Kennzeichnung" - -#: includes/admin.inc:543;1834 -msgid "Enter an optional tag for this view; it is used only to help sort views on the administrative page." -msgstr "Eine optionale Kennzeichnung für diese Ansicht eingeben. Diese wird auf der Verwaltungsseite nur als Sortierhilfe für Ansichten verwendet." - -#: includes/admin.inc:555 -msgid "View type" -msgstr "Ansichtstyp" - -# Können die Argumente, Felder, Sortierkriterien und Filter *oder* der Ansichtentyp nicht mehr geändert werden? -#: includes/admin.inc:556 -#, fuzzy -msgid "The view type is the primary table for which information is being retrieved. The view type controls what arguments, fields, sort criteria and filters are available, so once this is set it <strong>cannot be changed</strong>." -msgstr "Der Ansichtentyp ist die primäre Tabelle für die Information abgefragt werden. Da der Ansichtentyp die zu Verfügung stehenden Argumente, Felder, Sortierkriterien und Filter kontrolliert, können diese <strong>nicht mehr geändert werden</strong>, nachdem diese einmal eingestellt wurden." - -#: includes/admin.inc:567 -msgid "Next" -msgstr "nächste Seite" - -#: includes/admin.inc:583;758 -msgid "View name must be alphanumeric or underscores only." -msgstr "Der Name einer Ansicht darf nur aus Buchstaben und Unterstrichen bestehen." - -#: includes/admin.inc:589 -msgid "You must use a unique name for this view." -msgstr "Für die Ansicht muss ein eindeutiger Name verwendet werden." - -#: includes/admin.inc:622 -msgid "Are you sure you want to revert the view %name?" -msgstr "Soll die Ansicht %name wirklich zurückgesetzt werden?" - -#: includes/admin.inc:623 -msgid "Reverting the view will delete the view that is in the database, reverting it to the original default view. Any changes you have made will be lost and cannot be recovered." -msgstr "Eine Ansicht zurückzusetzten wird die Ansicht in der Datenbank löschen und auf die Orginalansicht zurücksetzten. Alle vorgenommenen Änderungen gehen verloren und können nicht wiederhergestellt werden." - -#: includes/admin.inc:626 -#: includes/convert.inc:105 -msgid "Are you sure you want to delete the view %name?" -msgstr "Soll die Ansicht %name wirklich gelöscht werden?" - -#: includes/admin.inc:627 -msgid "Deleting a view cannot be undone." -msgstr "Das Löschen einer Ansicht kann nicht rückgängig gemacht werden." - -#: includes/admin.inc:635;671;840;1329 -#: includes/convert.inc:109 -msgid "Cancel" -msgstr "Abbrechen" - -#: includes/admin.inc:644 -msgid "The view has been deleted." -msgstr "Die Ansicht wurde gelöscht." - -#: includes/admin.inc:656 -msgid "There is no lock on view %view to break." -msgstr "Auf der Ansicht %view gibt es keine aufzuhebende Sperre." - -#: includes/admin.inc:666 -msgid "Are you sure you want to break the lock on view %name?" -msgstr "Soll die Sperre auf der Ansicht %name wirklich aufgehoben werden?" - -#: includes/admin.inc:669 -msgid "By breaking this lock, any unsaved changes made by !user will be lost!" -msgstr "Durch Aufheben der Sperre, gehen alle ungespeicherten Änderungen von !user verloren!" - -#: includes/admin.inc:670 -msgid "Break lock" -msgstr "Sperre aufheben" - -#: includes/admin.inc:680 -msgid "The lock has been broken and you may now edit this view." -msgstr "Die Sperre wurde aufgehoben und die Ansicht kann jetzt bearbeitet werden." - -#: includes/admin.inc:687 -msgid "Edit view %view" -msgstr "Ansicht %view bearbeiten" - -#: includes/admin.inc:714 -msgid "Enter the name to use for this view if it is different from the source view. Leave blank to use the name of the view." -msgstr "Einen Namen für die Ansicht eingeben, wenn dieser anders als die ursprüngliche Ansicht ist. Freilassen, um den Namen der Ansicht zu verwenden." - -#: includes/admin.inc:719 -msgid "Paste view code here" -msgstr "Code für die Ansicht hier einfügen" - -#: includes/admin.inc:741 -msgid "Unable to interpret view code." -msgstr "Code der Ansicht konnte nicht Interpretiert werden." - -#: includes/admin.inc:749 -msgid "You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2." -msgstr "Es wird eine Ansicht aus Views-Version 1 importiert. Hier müssen möglicherweise einige Parameter angepasst werden, damit diese mit Version 2 richtig zusammenarbeitet." - -#: includes/admin.inc:752 -msgid "That view is not compatible with this version of Views." -msgstr "Diese Ansicht ist inkompatibel mit dieser Ansichtenversion." - -#: includes/admin.inc:767 -msgid "A view by that name already exists; please choose a different name" -msgstr "Eine Ansicht mit diesem Namen ist schon vorhanden. Bitte einen anderen Namen wählen." - -#: includes/admin.inc:776 -msgid "Display plugin @plugin is not available." -msgstr "Das Anzeige-Plugin @plugin ist nicht verfügbar." - -#: includes/admin.inc:783 -msgid "Style plugin @plugin is not available." -msgstr "Das Design-Plugin @plugin ist nicht verfügbar." - -#: includes/admin.inc:789 -msgid "Row plugin @plugin is not available." -msgstr "Das Zeilen-Plugin @plugin ist nicht verfügbar." - -#: includes/admin.inc:799 -msgid "@type handler @table.@field is not available." -msgstr "Die @type-Behandlungsroutine @table.@field ist nicht verfügbar." - -#: includes/admin.inc:812 -msgid "Unable to import view." -msgstr "Die Ansicht konnte nicht importiert werden." - -#: includes/admin.inc:833;861 -msgid "Save" -msgstr "Speichern" - -#: includes/admin.inc:885 -msgid "The view has been saved." -msgstr "Die Ansicht wurde gespeichert." - -#: includes/admin.inc:929 -msgid "Unknown or missing table name" -msgstr "Unbekannter oder fehlender Tabellenname" - -#: includes/admin.inc:934 -msgid "Click on an item to edit that item's details." -msgstr "Einen Eintrag anklicken, um die Details zu bearbeiten." - -#: includes/admin.inc:937 -msgid "This view has a broken default display and cannot be used." -msgstr "Diese Ansicht enthält eine beschädigte Standardanzeige und kann nicht verwendet werden." - -#: includes/admin.inc:979 -#: theme/theme.inc:97 -msgid "Export this view" -msgstr "Diese Ansicht exportieren" - -#: includes/admin.inc:984 -#: theme/theme.inc:102 -msgid "Create a copy of this view" -msgstr "Eine Kopie der Ansicht erstellen" - -#: includes/admin.inc:995 -msgid "View \"!display\"" -msgstr "Ansicht „!display“" - -#: includes/admin.inc:996 -msgid "Go to the real page for this display" -msgstr "Auf die reale Seite dieser Anzeige wechseln" - -#: includes/admin.inc:1062;3008 -#: includes/plugins.inc:218 -#: plugins/views_plugin_display.inc:587;704;723 -#: plugins/views_plugin_display_attachment.inc:90 -#: plugins/views_plugin_display_block.inc:73 -#: plugins/views_plugin_display_feed.inc:108 -#: plugins/views_plugin_display_page.inc:193 -msgid "None" -msgstr "Keines" - -#: includes/admin.inc:1140 -msgid "Invalid" -msgstr "Ungültig" - -#: includes/admin.inc:1141 -msgid "Error: Display @display refers to a plugin named '@plugin', but that plugin doesn't exist!" -msgstr "Fehler: Die Anzeige @display bezieht sich auf das nicht vorhandene Plugin ‚@plugin‘!" - -#: includes/admin.inc:1176;1176 -msgid "Rearrange" -msgstr "Umsortieren" - -#: includes/admin.inc:1216;2216;2391;2459;2544 -msgid "Error: handler for @table > @field doesn't exist!" -msgstr "Fehler: Die Behandlungsroutine für @table > @field ist nicht vorhanden!" - -#: includes/admin.inc:1235;1235;1244 -msgid "Settings" -msgstr "Einstellungen" - -#: includes/admin.inc:1240 -#: plugins/views_plugin_display.inc:598;616 -msgid "Missing style plugin" -msgstr "Fehlendes Design-Plugin" - -#: includes/admin.inc:1244 -#: plugins/views_plugin_display.inc:611;626 -msgid "Change settings for this style" -msgstr "Einstellungen für dieses Design ändern" - -#: includes/admin.inc:1247 -msgid " Style: !style" -msgstr " Design: !style" - -# not literally -#: includes/admin.inc:1278 -msgid "Invalid display id found while regenerating tabs" -msgstr "Eine ungültige Anzeige-ID wurde bei der Neuerstellung von Reitern gefunden" - -#: includes/admin.inc:1311 -msgid "Update" -msgstr "Aktualisieren" - -#: includes/admin.inc:1329 -msgid "Ok" -msgstr "Ok" - -#: includes/admin.inc:1600 -msgid "Unable to initialize default display" -msgstr "Die Standardanzeige konnte nicht initialisiert werden." - -#: includes/admin.inc:1632 -msgid "Add display" -msgstr "Anzeige hinzufügen" - -#: includes/admin.inc:1672 -msgid "Remove display" -msgstr "Anzeige entfernen" - -#: includes/admin.inc:1683 -msgid "Restore display" -msgstr "Anzeige wiederherstellen" - -#: includes/admin.inc:1755 -msgid "Analyze" -msgstr "Analysieren" - -#: includes/admin.inc:1767 -msgid "View analysis" -msgstr "Analyse anzeigen" - -#: includes/admin.inc:1821 -msgid "View details" -msgstr "Ansichtdetails" - -#: includes/admin.inc:1862;1916;1971;2117;2209;2384;2452;2537 -msgid "Invalid display id @display" -msgstr "Ungültige Anzeige-ID @display" - -#: includes/admin.inc:1920 -msgid "Configure @type" -msgstr "@type konfigurieren" - -#: includes/admin.inc:1975 -msgid "Rearrange @type" -msgstr "@type neu anordnen" - -#: includes/admin.inc:2018 -msgid "Broken field @id" -msgstr "Beschädigtes Feld @id" - -#: includes/admin.inc:2058;2067;2300 -msgid "Remove" -msgstr "Entfernen" - -#: includes/admin.inc:2058;2058 -msgid "Remove this item" -msgstr "Dieses Element entfernen" - -#: includes/admin.inc:2064 -msgid "No fields available." -msgstr "Keine Felder verfügbar." - -#: includes/admin.inc:2067 -#: modules/book.views.inc:57 -#: modules/taxonomy.views.inc:135 -#: modules/upload.views.inc:90 -#: plugins/views_plugin_display_page.inc:312 -msgid "Weight" -msgstr "Reihenfolge" - -#: includes/admin.inc:2123 -msgid "Add @type" -msgstr "@type hinzufügen" - -#: includes/admin.inc:2134 -msgid "Groups" -msgstr "Gruppen" - -#: includes/admin.inc:2153 -msgid "!group: !field" -msgstr "!group: !field" - -#: includes/admin.inc:2162 -#, fuzzy -msgid "There are no @types available to add." -msgstr "Es stehen keine @types zum Hinzufügen zu Verfügung." - -#: includes/admin.inc:2259 -msgid "Do not use a relationship" -msgstr "Keine Beziehung verwenden" - -#: includes/admin.inc:2273 -#: includes/view.inc:1894;1895 -msgid "Relationship" -msgstr "Beziehung" - -#: includes/admin.inc:2286 -msgid "Configure @type %item" -msgstr "@type %item konfigurieren" - -#: includes/admin.inc:2399 -msgid "Configure extra settings for @type %item" -msgstr "Besondere Einstellungen für @type %item konfigurieren" - -#: includes/admin.inc:2464 -msgid "Change summary style for @type %item" -msgstr "Zusammenfassungsdesign für @type %item ändern" - -#: includes/admin.inc:2487;2501 -msgid "Internal error: broken plugin." -msgstr "Interner Fehler: beschädigtes Plugin." - -#: includes/admin.inc:2551 -msgid "Configure summary style for @type %item" -msgstr "Zusammenfassungsdesign für @type %item konfigurieren" - -#: includes/admin.inc:2643 -msgid "Clear Views' cache" -msgstr "Ansichten-Cache leeren" - -#: includes/admin.inc:2649 -msgid "Add Views signature to all SQL queries" -msgstr "Eine View-Signatur zu allen SQL-Abfragen hinzufügen" - -# TODO troubleshooting -#: includes/admin.inc:2650 -msgid "All Views-generated queries will include a special 'VIEWS' = 'VIEWS' string in the WHERE clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting." -msgstr "Alle von Ansichten generierten Abfragen werden eine spezielle Zeichenkette 'VIEWS' = 'VIEWS' in der WHERE Bedingung enthalten. Dies erlaubt die einfachere Identifikation der Abfragen von Ansichten in den Datenbankprotokollen, sollte aber nur zur Fehlersuche genutzt werden." - -#: includes/admin.inc:2656 -msgid "Disable views data caching" -msgstr "Datencaching von Ansichten deaktivieren" - -#: includes/admin.inc:2657 -msgid "Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site." -msgstr "Ansichten cached Daten über die Tabellen, Module und verfügbaren Ansichten, um die Leistung zu steigern. Durch aktivieren dieses Ankreuzfeldes wird Ansichten den Cache übergehen und die Daten bei Bedarf neu aufbauen. Dies kann erhebliche Auswirkungen auf die Leistung der Website haben." - -#: includes/admin.inc:2663 -msgid "Ignore missing advanced help module" -msgstr "Das fehlende Erweiterte-Hilfe-Modul ignorieren" - -#: includes/admin.inc:2664 -msgid "Views uses the advanced help module to provide help text; if this module is not present Views will complain, unless this setting is checked." -msgstr "Das Ansichten-Modul verwendet das Erweiterte Hilfe-Modul, um Hilfetexte zu Verfügung zu stellen. Sollte das Modul nicht vorhanden sein, wird das Ansichten-Modul solange darauf hinweisen, bis diese Einstellung aktiviert wurde. " - -#: includes/admin.inc:2670 -msgid "Show query above live preview" -msgstr "Abfrage oberhalb der Live-Vorschau anzeigen" - -#: includes/admin.inc:2671 -msgid "The live preview feature will show you the output of the view you're creating, as well as the view. Check here to show the query and other information above the view; leave this unchecked to show that information below the view." -msgstr "Die Live-Vorschau-Funktion wird die Ausgabe der erstellten Ansicht und auch die Ansicht anzeigen. Aktivieren, um die Abfrage und andere Information oberhalb der Ansicht anzuzeigen. Deaktivieren, um diese Information unterhalb der Ansicht anzuzeigen." - -#: includes/admin.inc:2677 -msgid "Show other queries run during render during live preview" -msgstr "" - -#: includes/admin.inc:2678 -msgid "Drupal has the potential to run many queries while a view is being rendered. Checking this box will display every query run during view render as part of the live preview." -msgstr "" - -# not literally -#: includes/admin.inc:2684 -msgid "Do not show hover links over views" -msgstr "Administrationslinks in den Ansichten nicht anzeigen" - -# not literally -#: includes/admin.inc:2685 -msgid "To make it easier to administrate your views, Views provides 'hover' links to take you to the edit and export screen of a view whenever the view is used. This can be distracting on some themes, though; if it is problematic, you can turn it off here." -msgstr "Um die Verwaltung der Ansichten zu erleichtern, werden Administrationslinks in den Ansichten angezeigt, mit denen man zur Bearbeiten- und Exportieren-Seite einer Ansicht gelangt. Diese können in einigen Themes stören und bei Problemen hiermit abgeschaltet werden." - -#: includes/admin.inc:2691 -msgid "Enable views performance statistics via the Devel module" -msgstr "Performancestatistiken für Ansichten mittels Devel-Modul aktivieren" - -#: includes/admin.inc:2692 -msgid "Check this to enable some Views query and performance statistics <em>if Devel is installed</em>." -msgstr "Aktivieren, damit Abfragen und Leistungsstatistiken der Ansicht bei <em>installiertem Devel-Modul</em> angezeigt werden." - -#: includes/admin.inc:2698 -msgid "Disable javascript with Views" -msgstr "JavaScript mit Ansichten deaktivieren" - -#: includes/admin.inc:2699 -msgid "If you are having problems with the javascript, you can disable it here; the Views UI should degrade and still be usable without javascript, it just not as good." -msgstr "" - -# not literally -#: includes/admin.inc:2707 -msgid "Page region to output performance statistics" -msgstr "Performancestatistiken in folgender Seitenregion ausgegeben" - -#: includes/admin.inc:2720 -msgid "The cache has been cleared." -msgstr "Der Cache wurde geleert." - -#: includes/admin.inc:2886 -msgid "Error: missing @component" -msgstr "Fehler: @component fehlt" - -#: includes/admin.inc:2972 -#: includes/view.inc:1865 -msgid "Field" -msgstr "Feld" - -#: includes/admin.inc:2973 -msgid "Column" -msgstr "Spalte" - -#: includes/admin.inc:2976 -msgid "Sortable" -msgstr "Sortierbar" - -#: includes/admin.inc:2980 -msgid "Default sort" -msgstr "Standardsortierung" - -# not literally -#: includes/ajax.inc:82 -msgid "Server reports invalid input error." -msgstr "Der Server hat eine ungültige Eingabe festgestellt." - -#: includes/ajax.inc:83 -msgid "Error" -msgstr "Fehler" - -# http://drupal.org/node/279073#comment-909822 -#: includes/analyze.inc:38 -msgid "View analysis can find nothing to report." -msgstr "Die Analyse der Ansicht kann nichts berichtenswertes finden." - -#: includes/analyze.inc:104 -msgid "This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display." -msgstr "" - -#: includes/convert.inc:14 -msgid "There are no Views 1 views stored in the database to convert." -msgstr "In der Datenbank sind keine Views-1-Ansichten zum konvertieren vorhanden." - -#: includes/convert.inc:22 -msgid "Operations" -msgstr "Operationen" - -#: includes/convert.inc:33 -msgid "Converted" -msgstr "Konvertiert" - -#: includes/convert.inc:68 -msgid "The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name." -msgstr "" - -#: includes/convert.inc:79 -msgid "Unable to find view." -msgstr "Ansicht konnte nicht gefunden werden." - -#: includes/convert.inc:89 -msgid "Unable to convert view." -msgstr "Ansicht konnte nicht konvertiert werden." - -#: includes/convert.inc:107 -msgid "This action cannot be undone." -msgstr "Dieser Vorgang kann nicht rückgängig gemacht werden." - -#: includes/convert.inc:117 -msgid "The view has been deleted" -msgstr "Die Ansicht wurde gelöscht." - -#: includes/form.inc:249 -msgid "Validation error, please try again. If this error persists, please contact the site administrator." -msgstr "Bei der Gültigkeitsüberprüfung ist ein Fehler aufgetreten, bitte erneut versuchen. Falls der Fehler fortbesteht, wenden Sie sich bitte an den Administrator der Website." - -#: includes/handlers.inc:43 -msgid "Handler @handler include tried to loop infinitely!" -msgstr "Die Behandlungsroutine @handler ist eine Endlosschleife!" - -#: includes/handlers.inc:269 -msgid "!group: !title" -msgstr "!group: !title" - -#: includes/handlers.inc:507 -msgid "Reduce duplicates" -msgstr "Duplikate reduzieren" - -#: includes/handlers.inc:508 -msgid "This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution." -msgstr "" - -#: includes/plugins.inc:26 -msgid "Default settings for this view." -msgstr "Standardeinstellungen für diese Ansicht." - -# not literally -#: includes/plugins.inc:40 -msgid "Display the view as a page, with a URL and menu links." -msgstr "Die Ansicht als Seite mit einer URL und Menüeinträgen anzeigen." - -#: includes/plugins.inc:51;60 -msgid "Block" -msgstr "Block" - -#: includes/plugins.inc:52 -msgid "Display the view as a block." -msgstr "Eine Ansicht als Block anzeigen." - -#: includes/plugins.inc:64 -msgid "Attachment" -msgstr "Anhang" - -#: includes/plugins.inc:65 -msgid "Attachments added to other displays to achieve multiple views in the same view." -msgstr "" - -#: includes/plugins.inc:73 -msgid "Display the view as a feed, such as an RSS feed." -msgstr "Die Ansicht als Newsfeed anzeigen, wie einen RSS-Newsfeed." - -#: includes/plugins.inc:93;144 -msgid "Unformatted" -msgstr "Unformatiert" - -#: includes/plugins.inc:94 -msgid "Displays rows one after another." -msgstr "Zeigt die Zeilen aufeinander folgend an." - -#: includes/plugins.inc:104 -msgid "HTML List" -msgstr "HTML-Liste" - -#: includes/plugins.inc:105 -msgid "Displays rows as an HTML list." -msgstr "Zeigt die Zeilen als HTML-Liste an." - -#: includes/plugins.inc:114 -msgid "Grid" -msgstr "Raster" - -#: includes/plugins.inc:115 -msgid "Displays rows in a grid." -msgstr "Zeilen in einem Gitter anzeigen." - -#: includes/plugins.inc:124 -msgid "Table" -msgstr "Tabelle" - -#: includes/plugins.inc:125 -msgid "Displays rows in a table." -msgstr "Zeilen in einer Tabelle anzeigen." - -#: includes/plugins.inc:136 -msgid "Displays the default summary as a list." -msgstr "Zeigt die standardmäßige Zusammenfassung als Liste an." - -#: includes/plugins.inc:145 -#, fuzzy -msgid "Displays the summary unformatted, with option for one after another or inline." -msgstr "Zeigt die Zusammenfassung unformatiert an, mit der Option eine nach der anderen oder inline." - -#: includes/plugins.inc:154 -msgid "RSS Feed" -msgstr "RSS-Feed" - -#: includes/plugins.inc:155 -msgid "Generates an RSS feed from a view." -msgstr "Generiert einen RSS-Newsfeed aus einer Ansicht." - -#: includes/plugins.inc:173 -#: includes/view.inc:1863 -msgid "Fields" -msgstr "Felder" - -#: includes/plugins.inc:174 -msgid "Displays the fields with an optional template." -msgstr "Die Felder mit einer optionalen Vorlage anzeigen." - -#: includes/plugins.inc:187 -msgid "Fixed entry" -msgstr "Fester Eintrag" - -#: includes/plugins.inc:191;203 -msgid "PHP Code" -msgstr "PHP-Code" - -#: includes/plugins.inc:207 -msgid "Numeric" -msgstr "Numerisch" - -#: includes/plugins.inc:219 -msgid "Will be available to all users." -msgstr "Wird allen Benutzern zu Verfügung stehen." - -#: includes/plugins.inc:224 -#: plugins/views_plugin_access_role.inc:40 -msgid "Role" -msgstr "Rolle" - -#: includes/plugins.inc:225 -msgid "Access will be granted to users with any of the specified roles." -msgstr "" - -#: includes/plugins.inc:231 -#: plugins/views_plugin_access_perm.inc:35 -msgid "Permission" -msgstr "Berechtigung" - -#: includes/plugins.inc:232 -msgid "Access will be granted to users with the specified permission string." -msgstr "" - -#: includes/view.inc:261 -msgid "set_display() called with invalid display id @display." -msgstr "set_display() wurde mit ungültiger Anzeige-ID @display aufgerufen." - -#: includes/view.inc:1063 -msgid "Home" -msgstr "Startseite" - -#: includes/view.inc:1864 -msgid "fields" -msgstr "Felder" - -#: includes/view.inc:1866 -msgid "field" -msgstr "Feld" - -#: includes/view.inc:1871 -msgid "arguments" -msgstr "Argumente" - -#: includes/view.inc:1872;1873 -msgid "Argument" -msgstr "Argument" - -#: includes/view.inc:1877 -msgid "Sort criteria" -msgstr "Sortierkriterium" - -#: includes/view.inc:1878 -msgid "sort criteria" -msgstr "Sortierkriterium" - -#: includes/view.inc:1879 -msgid "Sort criterion" -msgstr "Sortierkriterien" - -#: includes/view.inc:1880 -msgid "sort criterion" -msgstr "Sortierkriterien" - -#: includes/view.inc:1884 -msgid "Filters" -msgstr "Filter" - -#: includes/view.inc:1885 -msgid "filters" -msgstr "Filter" - -#: includes/view.inc:1886 -msgid "Filter" -msgstr "Filter" - -#: includes/view.inc:1887 -msgid "filter" -msgstr "Filter" - -#: includes/view.inc:1892 -msgid "Relationships" -msgstr "Beziehungen" - -#: includes/view.inc:1893 -msgid "relationships" -msgstr "Beziehungen" - -# auf/bei/unter? -#: js/ajax.js:0;0;0;0;0;0;0 -#: js/ajax_view.js:0;0;0 -#, fuzzy -msgid "An error occurred at @path." -msgstr "Ein Fehler ist auf @path aufgetreten." - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Mismatching fragment identifier." -msgstr "" - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Not enough arguments to add tab." -msgstr "jQuery UI-Reiter: Nicht genug Argumente, um einen Reiter hinzuzufügen." - -#: modules/book.views.inc:21;36;46;99 -msgid "Book" -msgstr "Buch" - -#: modules/book.views.inc:30 -msgid "Top level book" -msgstr "In Moderation" - -#: modules/book.views.inc:31 -msgid "The book the node is in." -msgstr "Das Buch, indem der Beitrag enthalten ist." - -#: modules/book.views.inc:58 -msgid "The weight of the book page." -msgstr "Die Reihenfolge der Buchseite." - -#: modules/book.views.inc:69 -#: modules/comment.views.inc:202 -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:24 -msgid "Depth" -msgstr "Tiefe" - -#: modules/book.views.inc:70 -msgid "The depth of the book page in the hierarchy; top level books have a depth of 1." -msgstr "Die Tiefe der Buchseite in der Hierarchie. Bücher der obersten Ebene haben eine Tiefe von 1." - -#: modules/book.views.inc:87 -msgid "Hierarchy" -msgstr "Hierarchie" - -#: modules/book.views.inc:88 -msgid "The order of pages in the book hierarchy. Remember to sort by weight too if you want exactly the right order." -msgstr "" - -#: modules/book.views.inc:110 -#: modules/taxonomy.views.inc:259 -msgid "Parent" -msgstr "Übergeordnet" - -#: modules/book.views.inc:111 -msgid "The parent book node." -msgstr "Der übergeordnete Buchbeitrag." - -#: modules/book.views.inc:116 -msgid "Book parent" -msgstr "Übergeordnetes Buch" - -#: modules/comment.views.inc:22;26;384;395 -msgid "Comment" -msgstr "Kommentar" - -#: modules/comment.views.inc:27 -msgid "Comments are responses to node content." -msgstr "Kommentare sind Antworten auf Inhalte von Beiträgen." - -#: modules/comment.views.inc:45 -msgid "The title of the comment." -msgstr "Der Titel des Kommentars." - -#: modules/comment.views.inc:63 -#: modules/node.views.inc:358 -msgid "Body" -msgstr "Textkörper" - -#: modules/comment.views.inc:64 -msgid "The text of the comment." -msgstr "Der Text des Kommentars." - -#: modules/comment.views.inc:76 -msgid "ID" -msgstr "ID" - -#: modules/comment.views.inc:77 -msgid "The comment ID of the field" -msgstr "Die Kommentar-ID des Feldes" - -#: modules/comment.views.inc:95 -msgid "Author" -msgstr "Autor" - -#: modules/comment.views.inc:96 -msgid "The name of the poster." -msgstr "Der Name des Beitragenden." - -#: modules/comment.views.inc:114 -msgid "Author's website" -msgstr "Website des Autors" - -#: modules/comment.views.inc:115 -msgid "The website address of the comment's author. Can be a link. The homepage can also be linked with the Name field. Will be empty if posted by a registered user." -msgstr "" - -#: modules/comment.views.inc:133 -#: modules/node.views.inc:108 -msgid "Post date" -msgstr "Beitragsdatum" - -#: modules/comment.views.inc:134 -msgid "Date and time of when the comment was posted." -msgstr "Zeitpunkt zu dem der Kommentar gespeichert wurde." - -#: modules/comment.views.inc:149 -msgid "In moderation" -msgstr "In Moderation" - -#: modules/comment.views.inc:150 -msgid "Whether or not the comment is currently in moderation." -msgstr "Ob sich der Kommentar derzeit in Moderation befindet oder nicht." - -#: modules/comment.views.inc:157 -#: modules/node.views.inc:204;213 -msgid "Moderated" -msgstr "Moderiert" - -#: modules/comment.views.inc:167 -msgid "View link" -msgstr "‚Anzeigen‘-Link" - -#: modules/comment.views.inc:168 -msgid "Provide a simple link to view the comment." -msgstr "Stellt einen einfachen Link zur Ansicht des Kommentars bereit." - -#: modules/comment.views.inc:176 -#: modules/node.views.inc:250 -#: modules/user.views.inc:202 -msgid "Edit link" -msgstr "‚Bearbeiten‘-Link" - -#: modules/comment.views.inc:177 -msgid "Provide a simple link to edit the comment." -msgstr "Stellt einen einfachen Link zum Bearbeiten des Kommentars bereit." - -#: modules/comment.views.inc:185 -#: modules/node.views.inc:258;472 -#: modules/user.views.inc:210 -msgid "Delete link" -msgstr "‚Löschen‘-Link" - -#: modules/comment.views.inc:186 -msgid "Provide a simple link to delete the comment." -msgstr "Stellt einen einfachen Link zum Löschen des Kommentars bereit." - -#: modules/comment.views.inc:194 -msgid "Reply-to link" -msgstr "‚Antworten‘-Link" - -#: modules/comment.views.inc:195 -msgid "Provide a simple link to reply to the comment." -msgstr "Stellt einen einfachen Link zum Antworten auf den Kommentars bereit." - -#: modules/comment.views.inc:203 -msgid "Display the depth of the comment if it is threaded." -msgstr "Bei gruppierter Ansicht die Verschachtelungstiefe des Kommentars anzeigen." - -#: modules/comment.views.inc:207 -msgid "Thread" -msgstr "Thread" - -#: modules/comment.views.inc:208 -msgid "Sort by the threaded order. This will keep child comments together with their parents." -msgstr "Nach der gruppierten Reihenfolge sortieren. Dies wird die Unterkommentare mit ihren Eltern zusammenlassen." - -#: modules/comment.views.inc:214;220;255 -#: modules/node.views.inc:24;29;90;357;372;484;616;627;639 -#: modules/upload.views.inc:43 -msgid "Node" -msgstr "Beitrag" - -#: modules/comment.views.inc:215 -msgid "The node the comment is a reply to." -msgstr "Der Beitrag auf den sich diese Antwort bezieht." - -#: modules/comment.views.inc:225;231 -#: modules/node.views.inc:345 -#: modules/statistics.views.inc:204 -#: modules/user.views.inc:23;27;219 -msgid "User" -msgstr "Benutzer" - -#: modules/comment.views.inc:226 -msgid "The user who wrote the comment." -msgstr "Der Benutzer, der den Kommentar geschrieben hat." - -#: modules/comment.views.inc:236 -msgid "Parent CID" -msgstr "Übergeordnete Kommentar-ID" - -#: modules/comment.views.inc:237 -msgid "The Comment ID of the parent comment." -msgstr "Die Kommentar-ID dies übergeordneten Kommentars." - -#: modules/comment.views.inc:242;247 -msgid "Parent comment" -msgstr "Übergeordneter Kommentar" - -#: modules/comment.views.inc:243 -msgid "The parent comment." -msgstr "Der übergeordnete Kommentar." - -#: modules/comment.views.inc:268 -msgid "Last comment time" -msgstr "Letzter Kommentarzeitpunkt" - -#: modules/comment.views.inc:269 -msgid "Date and time of when the last comment was posted." -msgstr "Zeitpunkt zu dem der letzte Kommentar gespeichert wurde." - -#: modules/comment.views.inc:284 -msgid "Last comment author" -msgstr "Letzter Kommentarautor" - -#: modules/comment.views.inc:285 -msgid "The name of the author of the last posted comment." -msgstr "Der Name des Autors von dem letzten Kommentar." - -#: modules/comment.views.inc:297 -msgid "Comment count" -msgstr "Anzahl an Kommentaren" - -#: modules/comment.views.inc:298 -msgid "The number of comments a node has." -msgstr "Die Anzahl der Kommentare zu einem Beitrag." - -#: modules/comment.views.inc:316 -msgid "Updated/commented date" -msgstr "Aktualisierungs-/Kommentarzeitpunkt" - -#: modules/comment.views.inc:317 -msgid "The most recent of last comment posted or node updated time." -msgstr "" - -#: modules/comment.views.inc:340 -msgid "New comments" -msgstr "Neue Kommentare" - -#: modules/comment.views.inc:341 -msgid "The number of new comments on the node." -msgstr "Die Anzahl der neuen Kommentare zu dem Beitrag." - -#: modules/comment.views.inc:349 -msgid "Comment status" -msgstr "Kommentarstatus" - -#: modules/comment.views.inc:350 -msgid "Whether comments are enabled or disabled on the node." -msgstr "Ob Kommentare zu dem Beitrag aktiviert oder deaktiviert sind." - -#: modules/comment.views.inc:364 -msgid "User posted or commented" -msgstr "" - -#: modules/comment.views.inc:365 -msgid "Display comments only if a user posted the node or commented on the node." -msgstr "Kommentare nur anzeigen, wenn ein Benutzer den Beitrag gespeichert oder kommentiert hat." - -#: modules/comment.views.inc:385 -msgid "Display the comment with standard comment view." -msgstr "Den Kommentar mit der Standardkommentaransicht anzeigen." - -#: modules/comment.views.inc:396 -msgid "Display the comment as RSS." -msgstr "Zeigt den Kommentar als RSS-Newsfeed an." - -#: modules/node.views.inc:30 -msgid "Nodes are a Drupal site's primary content." -msgstr "Beiträge sind der primäre Inhalt einer Drupal-Website." - -#: modules/node.views.inc:57 -msgid "Nid" -msgstr "Beitrags-ID" - -#: modules/node.views.inc:58 -msgid "The node ID of the node." -msgstr "Die Beitrags-ID des Beitrags." - -#: modules/node.views.inc:86;414 -msgid "The title of the node." -msgstr "Der Titel des Beitrags." - -# ? -#: modules/node.views.inc:109 -msgid "The date the node was posted." -msgstr "Der Zeitpunkt zu dem der Beitrag gespeichert wurde." - -#: modules/node.views.inc:124 -msgid "Updated date" -msgstr "Aktualisierungszeitpunkt" - -#: modules/node.views.inc:125 -msgid "The date the node was last updated." -msgstr "Der Zeitpunkt zu dem der Beitrag das letzte mal aktualisiert wurde." - -#: modules/node.views.inc:141 -msgid "The type of a node (for example, \"blog entry\", \"forum post\", \"story\", etc)." -msgstr "Der Beitragstyp (zum Beispiel: „Blogbeitrag“, „Forumsbeitrag“, „Artikel“, usw)." - -#: modules/node.views.inc:159;167;181 -#: modules/translation.views.inc:106 -#: modules/upload.views.inc:82 -msgid "Published" -msgstr "Veröffentlicht" - -#: modules/node.views.inc:160 -msgid "The published status of the node." -msgstr "Den Veröffentlichungsstatus des Beitrags." - -#: modules/node.views.inc:176 -#, fuzzy -msgid "Published or admin" -msgstr "Veröffentlicht oder Verwalter" - -#: modules/node.views.inc:177 -msgid "Filters out unpublished nodes if the current user cannot view them." -msgstr "Filtert unveröffentlichte Beiträge aus, wenn der aktuelle Benutzer diese nicht sehen kann." - -#: modules/node.views.inc:187;195 -msgid "Promoted to front page" -msgstr "Auf der Startseite" - -#: modules/node.views.inc:188 -msgid "The front page of the node." -msgstr "Die Startseite dieses Beitrags." - -#: modules/node.views.inc:205 -msgid "Whether or not the node is moderated." -msgstr "Ob ein Beitrag moderiert ist oder nicht." - -#: modules/node.views.inc:222;231 -msgid "Sticky" -msgstr "am Anfang von Listen" - -#: modules/node.views.inc:223 -msgid "Whether or not the node is sticky." -msgstr "Ob ein Beitrag am Anfang von Listen angezeigt wird oder nicht." - -#: modules/node.views.inc:242 -msgid "Link" -msgstr "Link" - -#: modules/node.views.inc:243 -msgid "Provide a simple link to the node." -msgstr "Stellt einen einfachen Link zu dem Beitrag bereit." - -#: modules/node.views.inc:251 -msgid "Provide a simple link to edit the node." -msgstr "Stellt einen einfachen Link zum Bearbeiten des Beitrags bereit." - -#: modules/node.views.inc:259 -msgid "Provide a simple link to delete the node." -msgstr "Stellt einen einfachen Link zum Löschen des Beitrags bereit." - -#: modules/node.views.inc:267;448 -#: modules/user.views.inc:123 -msgid "Created date" -msgstr "Erstellungsdatum" - -#: modules/node.views.inc:268 -msgid "In the form of CCYYMMDD." -msgstr "In der Form von JJJJMMTT." - -#: modules/node.views.inc:276 -msgid "Created year + month" -msgstr "Jahr + Monat wurde erstellt" - -#: modules/node.views.inc:277 -msgid "In the form of YYYYMM." -msgstr "In der Form von JJJJMM." - -#: modules/node.views.inc:285 -msgid "Created year" -msgstr "Erstellungsjahr" - -#: modules/node.views.inc:286 -msgid "In the form of YYYY." -msgstr "In der Form von JJJJ." - -#: modules/node.views.inc:294 -msgid "Created month" -msgstr "Erstellungsmonat" - -#: modules/node.views.inc:295 -msgid "In the form of MM (01 - 12)." -msgstr "In der Form von MM (01 - 12)." - -#: modules/node.views.inc:303 -msgid "Created day" -msgstr "Erstellungstag" - -#: modules/node.views.inc:304 -msgid "In the form of DD (01 - 31)." -msgstr "In der Form von TT (01 - 31)." - -#: modules/node.views.inc:312 -msgid "Created week" -msgstr "Erstellungswoche" - -#: modules/node.views.inc:313 -msgid "In the form of WW (01 - 53)." -msgstr "In der Form von WW (01 - 53)." - -#: modules/node.views.inc:325;330 -msgid "Node revision" -msgstr "Beitragsversion" - -#: modules/node.views.inc:331 -msgid "Node revisions are a history of changes to nodes." -msgstr "Beitragsversionen sind eine Historie von Änderungen an Beiträgen." - -#: modules/node.views.inc:346 -msgid "Relate a node revision to the user who created the revision." -msgstr "" - -#: modules/node.views.inc:351 -msgid "user" -msgstr "Benutzer" - -#: modules/node.views.inc:359 -msgid "The actual, full data in the body field; this may not be valid data on all node types." -msgstr "" - -#: modules/node.views.inc:373 -msgid "Teaser" -msgstr "Anrisstext" - -#: modules/node.views.inc:374 -msgid "The stored teaser field. This may not be valid or useful data on all node types." -msgstr "" - -#: modules/node.views.inc:387 -msgid "Vid" -msgstr "Vid" - -#: modules/node.views.inc:388 -msgid "The revision ID of the node revision." -msgstr "Die Versions-ID der Beitragsversion." - -#: modules/node.views.inc:434 -msgid "Log message" -msgstr "Protokollnachricht" - -#: modules/node.views.inc:435 -msgid "The log message entered when the revision was created." -msgstr "Die eingegebene Protokollnachricht, als die Version erstellt wurde." - -#: modules/node.views.inc:449 -msgid "The date the node revision was created." -msgstr "Der Zeitpunkt zu dem die Beitragsversion erstellt wurde." - -#: modules/node.views.inc:464 -msgid "Revert link" -msgstr "‚Zurück‘-Link" - -#: modules/node.views.inc:465 -msgid "Provide a simple link to revert to the revision." -msgstr "Stellt einen einfachen Link bereit, um zu der Version zurückzukehren." - -#: modules/node.views.inc:473 -msgid "Provide a simple link to delete the node revision." -msgstr "Stellt einen einfachen Link zum Löschen der Beitragsversion bereit." - -#: modules/node.views.inc:500 -msgid "Has new content" -msgstr "Neuer Inhalt vorhanden" - -#: modules/node.views.inc:503 -msgid "Show a marker if the node has new or updated content." -msgstr "Eine Markierung anzeigen, wenn der Beitrag neuen oder aktualisierten Inhalt enthält." - -#: modules/node.views.inc:506 -msgid "Show only nodes that have new content." -msgstr "Nur Beiträge mit neuem Inhalt anzeigen." - -#: modules/node.views.inc:617;628 -msgid "Display the node with standard node view." -msgstr "Den Beitrag mit der Standardbeitragsansicht anzeigen." - -#: modules/node.views.inc:646 -msgid "Node ID from URL" -msgstr "Beitrags-ID aus der URL" - -#: modules/node.views.inc:708 -msgid "Display %display has no access control but does not contain a filter for published nodes." -msgstr "Die Anzeige %display hat keine Zugriffskontrolle und enthält keinen Filter für veröffentlichte Beiträge." - -#: modules/poll.views.inc:23 -msgid "Poll" -msgstr "Umfrage" - -#: modules/poll.views.inc:38;47 -#: modules/user.views.inc:171;180 -msgid "Active" -msgstr "Aktiv" - -#: modules/poll.views.inc:39 -msgid "Whether the poll is open for voting." -msgstr "Ob die Umfrage offen für die Stimmabgabe ist." - -#: modules/profile.views.inc:20;40 -msgid "Profile" -msgstr "Profil" - -#: modules/profile.views.inc:100 -msgid "@field-name" -msgstr "@field-name" - -#: modules/profile.views.inc:107 -msgid "Profile textfield" -msgstr "Profiltextfeld" - -#: modules/profile.views.inc:126 -msgid "Profile textarea" -msgstr "Profil-Textfeld" - -#: modules/profile.views.inc:142 -msgid "Profile checkbox" -msgstr "Profil-Ankreuzfeld" - -#: modules/profile.views.inc:159 -msgid "Profile URL" -msgstr "Profil-URL" - -#: modules/profile.views.inc:175 -msgid "Profile selection" -msgstr "Profileauswahl" - -#: modules/profile.views.inc:195 -msgid "Profile freeform list %field-name." -msgstr "" - -#: modules/profile.views.inc:207 -msgid "Profile date %field-name." -msgstr "Profildatum %field-name." - -#: modules/search.views.inc:23;77;88;106;163 -msgid "Search" -msgstr "Suchen" - -#: modules/search.views.inc:72 -msgid "Score" -msgstr "Punktzahl" - -#: modules/search.views.inc:73 -msgid "The score of the search item." -msgstr "Die Punktzahl der Suchebegriffes." - -#: modules/search.views.inc:95 -msgid "Links from" -msgstr "Links von" - -#: modules/search.views.inc:96 -msgid "Nodes that link from the node." -msgstr "Beiträge die von dem Beitrag verlinken." - -#: modules/search.views.inc:113 -msgid "Links to" -msgstr "Links zu" - -#: modules/search.views.inc:114 -msgid "Nodes that link to the node." -msgstr "Beiträge die auf den Beitrag verlinken." - -#: modules/search.views.inc:125 -msgid "Search Terms" -msgstr "Suchbegriffe" - -#: modules/search.views.inc:126 -msgid "The terms to search for." -msgstr "Die Begriffe nach denen gesucht werden soll." - -#: modules/search.views.inc:164 -msgid "Display the results with standard search view." -msgstr "Die Ergebnisse mit der Standard-Suchansicht anzeigen." - -#: modules/statistics.views.inc:24 -msgid "Node statistics" -msgstr "Beitragsstatistiken" - -#: modules/statistics.views.inc:36 -msgid "Total views" -msgstr "Seitenansichten gesamt" - -#: modules/statistics.views.inc:37 -msgid "The total number of times the node has been viewed." -msgstr "Dies zeigt die Anzahl an, wie oft ein Beitrag insgesamt gelesen wurde." - -#: modules/statistics.views.inc:53 -msgid "Views today" -msgstr "Heutige Seitenansichten" - -#: modules/statistics.views.inc:54 -msgid "The total number of times the node has been viewed today." -msgstr "Dies zeigt die Anzahl an, wie oft ein Beitrag heute gelesen wurde." - -#: modules/statistics.views.inc:70 -msgid "Most recent view" -msgstr "Die neuste Seitenansicht" - -#: modules/statistics.views.inc:71 -msgid "The most recent time the node has been viewed." -msgstr "Der letzte Zeitpunkt zu dem der Beitrag gelesen wurde." - -#: modules/statistics.views.inc:89;94 -msgid "Access log" -msgstr "Zugriffsprotokoll" - -#: modules/statistics.views.inc:95 -msgid "Stores site access information." -msgstr "Speichert die Zugriffsinformation auf die Website." - -#: modules/statistics.views.inc:109 -msgid "Session ID" -msgstr "Session-ID" - -#: modules/statistics.views.inc:110 -msgid "Browser session ID of user that visited page." -msgstr "Die Browser-Session-ID des Benutzers, der diese Seite besucht hat." - -#: modules/statistics.views.inc:129 -msgid "Page title" -msgstr "Seitentitel" - -#: modules/statistics.views.inc:130 -msgid "Title of page visited." -msgstr "Titel der besuchten Seite." - -#: modules/statistics.views.inc:150 -msgid "Internal path to page visited (relative to Drupal root.)" -msgstr "Interner Pfad zur besuchten Seite (relativ zum Drupal-Hauptverzeichnis)." - -#: modules/statistics.views.inc:169 -msgid "Referrer" -msgstr "Referrer" - -#: modules/statistics.views.inc:170 -msgid "Referrer URI." -msgstr "Referrer-URI." - -#: modules/statistics.views.inc:185 -msgid "Hostname" -msgstr "Hostadresse" - -#: modules/statistics.views.inc:186 -msgid "Hostname of user that visited the page." -msgstr "Der Hostname des Benutzers, der die Seite besucht hat." - -#: modules/statistics.views.inc:205 -msgid "The user who visited the site." -msgstr "Der Benutzer, der die Website besucht hat." - -#: modules/statistics.views.inc:215 -msgid "Timer" -msgstr "Timer" - -#: modules/statistics.views.inc:216 -msgid "Time in milliseconds that the page took to load." -msgstr "Die benötigte Ladezeit der Seite in Millisekunden." - -#: modules/statistics.views.inc:231 -msgid "Timestamp" -msgstr "Zeitstempel" - -#: modules/statistics.views.inc:232 -msgid "Timestamp of when the page was visited." -msgstr "Zeitstempel zu dem die Seite besucht wurde." - -#: modules/system.views.inc:25;30 -msgid "File" -msgstr "Datei" - -#: modules/system.views.inc:31 -msgid "Files maintained by Drupal and various modules." -msgstr "Dateien werden von Drupal und unterschiedlichen Modulen verwaltet." - -#: modules/system.views.inc:49 -msgid "File ID" -msgstr "Datei-ID" - -#: modules/system.views.inc:50 -msgid "The ID of the file." -msgstr "Die ID der Datei." - -#: modules/system.views.inc:70 -msgid "The name of the file." -msgstr "Der Name der Datei." - -#: modules/system.views.inc:89 -msgid "The path of the file." -msgstr "Der Pfad der Datei." - -#: modules/system.views.inc:107 -msgid "Mime type" -msgstr "MIME-Typ" - -#: modules/system.views.inc:108 -msgid "The mime type of the file." -msgstr "Der MIME-Typ der Datei." - -#: modules/system.views.inc:126 -msgid "Size" -msgstr "Größe" - -#: modules/system.views.inc:127 -msgid "The size of the file." -msgstr "Die Größe der Datei." - -#: modules/system.views.inc:142 -msgid "Status" -msgstr "Status" - -#: modules/system.views.inc:143 -msgid "The status of the file." -msgstr "Der Status der Datei." - -#: modules/system.views.inc:158 -msgid "Upload date" -msgstr "Profilauswahl" - -# ? -#: modules/system.views.inc:159 -msgid "The date the file was uploaded." -msgstr "Der Zeitpunkt zu dem die Datei hochgeladen wurde." - -#: modules/system.views.inc:204 -msgid "Temporary" -msgstr "Temporär" - -#: modules/system.views.inc:205 -msgid "Permanent" -msgstr "Dauerhaft" - -#: modules/taxonomy.views.inc:24;67;152;170;226;266;303;314 -msgid "Taxonomy" -msgstr "Taxonomie" - -#: modules/taxonomy.views.inc:48 -msgid "Vocabulary name" -msgstr "Vokabularname" - -#: modules/taxonomy.views.inc:50 -msgid "Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the \"Taxonomy: Term\" field is; and can similarly cause duplicates." -msgstr "" - -#: modules/taxonomy.views.inc:56 -msgid "Vocabulary ID" -msgstr "Vokabular-ID" - -#: modules/taxonomy.views.inc:57 -msgid "The taxonomy vocabulary ID" -msgstr "Die Vokabular-ID der Taxonomie" - -#: modules/taxonomy.views.inc:70;116;213 -msgid "Term" -msgstr "Begriff" - -#: modules/taxonomy.views.inc:71 -msgid "Taxonomy terms are attached to nodes." -msgstr "" - -#: modules/taxonomy.views.inc:96;196 -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:35 -msgid "Term ID" -msgstr "Begriff-ID" - -#: modules/taxonomy.views.inc:97;197 -msgid "The taxonomy term ID" -msgstr "Die Taxonomiebegriff-ID" - -#: modules/taxonomy.views.inc:117 -msgid "Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the result set." -msgstr "" - -#: modules/taxonomy.views.inc:127 -msgid "Taxonomy term name." -msgstr "Name des Taxonomie-Begriffes." - -#: modules/taxonomy.views.inc:136 -msgid "The term weight field" -msgstr "Das Feld für die Begriffsreihenfolge" - -#: modules/taxonomy.views.inc:148 -msgid "Term description" -msgstr "Begriffsbeschreibung" - -#: modules/taxonomy.views.inc:149 -msgid "The description associated with a taxonomy term." -msgstr "Die einem Taxonomiebegriff zugeordnete Beschreibung." - -#: modules/taxonomy.views.inc:160 -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:37 -msgid "Vocabulary" -msgstr "Vokabular" - -#: modules/taxonomy.views.inc:161 -msgid "Filter the results of \"Taxonomy: Term\" to a particular vocabulary." -msgstr "" - -#: modules/taxonomy.views.inc:199 -msgid "All terms" -msgstr "Alle Begriffe" - -#: modules/taxonomy.views.inc:200 -msgid "Display all taxonomy terms associated with a node from specified vocabularies." -msgstr "Alle einem Beitrag zugeordneten Taxonomiebegriffe eines angegebenes Vokabulars anzeigen." - -#: modules/taxonomy.views.inc:254 -msgid "Parent term" -msgstr "Übergeordneter Begriff" - -#: modules/taxonomy.views.inc:255 -msgid "The parent term of the term. This can produce duplicate entries if you are using a vocabulary that allows multiple parents." -msgstr "" - -#: modules/taxonomy.views.inc:287 -msgid "Term synonym" -msgstr "Begriffssynonym" - -#: modules/taxonomy.views.inc:288 -msgid "Term synonyms may be used to find terms by alternate names." -msgstr "" - -#: modules/taxonomy.views.inc:304 -msgid "Term ID (with depth)" -msgstr "Begriffs-ID (mit Verschachtelungstiefe)" - -#: modules/taxonomy.views.inc:305 -msgid "The depth filter is more complex, so provides fewer options." -msgstr "Der Verschachtelungstiefenfilter ist wesentlich komplexer und stellt deshalb weniger Optionen zu Verfügung." - -#: modules/taxonomy.views.inc:315 -msgid "Term ID depth modifier" -msgstr "" - -#: modules/taxonomy.views.inc:316 -msgid "Allows the \"depth\" for Taxonomy: Term ID (with depth) to be modified via an additional argument." -msgstr "Ermöglicht über ein zusätzliches Argument die Anpassung der „Verschachtelungstiefe“ einer Taxonomie-Begriffs-ID (mit Verschachtelungstiefe)." - -#: modules/taxonomy.views.inc:372 -msgid "Taxonomy term" -msgstr "Taxonomie-Begriff" - -#: modules/translation.views.inc:31;48;80;97 -msgid "Node translation" -msgstr "Beitragsübersetzung" - -#: modules/translation.views.inc:32 -#: modules/node/views_handler_filter_node_language.inc:9 -#: modules/translation/views_handler_filter_node_language.inc:9 -msgid "Language" -msgstr "Sprache" - -#: modules/translation.views.inc:33 -msgid "The language the content is in." -msgstr "Die Sprache des Inhalts." - -#: modules/translation.views.inc:49 -msgid "Translation set node ID" -msgstr "Beitrags-ID des Übersetzungssatzes" - -#: modules/translation.views.inc:50 -msgid "The ID of the translation set the content belongs to." -msgstr "Die ID des Übersetzungssatzes, zu dem der Inhalt gehört." - -#: modules/translation.views.inc:69;74 -msgid "Source translation" -msgstr "Quellübersetzung" - -#: modules/translation.views.inc:70 -msgid "The source that this content was translated from." -msgstr "Die Quelle aus der dieser Inhalt übersetzt wird." - -#: modules/translation.views.inc:81;84;91 -msgid "Translations" -msgstr "Übersetzungen" - -#: modules/translation.views.inc:82;85 -msgid "Versions of content in different languages." -msgstr "Versionen von Inhalt in unterschiedlichen Sprachen." - -#: modules/translation.views.inc:98 -msgid "Translation status" -msgstr "Übersetzungsstatus" - -#: modules/translation.views.inc:99 -msgid "The translation status of the node--whether or not the translation needs to be updated." -msgstr "Der Übersetzungsstatus des Beitrags - ob die Übersetzung aktualisiert werden muss oder nicht." - -#: modules/upload.views.inc:25;112 -msgid "Upload" -msgstr "Upload" - -#: modules/upload.views.inc:44 -msgid "The node the uploaded file is attached to" -msgstr "Der Beitrag an dem die hochgeladene Datei angehängt ist." - -#: modules/upload.views.inc:46 -msgid "upload" -msgstr "Upload" - -#: modules/upload.views.inc:57 -msgid "The description of the uploaded file." -msgstr "Die Beschreibung der hochgeladen Datei." - -#: modules/upload.views.inc:74 -msgid "Listed" -msgstr "Aufgelistet" - -#: modules/upload.views.inc:75 -msgid "Whether or not the file is marked to be listed." -msgstr "Ob die Datei zur Auflistung markiert ist oder nicht." - -#: modules/upload.views.inc:91 -msgid "The weight, used for sorting." -msgstr "Die für die Sortierung verwendete Reihenfolge." - -#: modules/upload.views.inc:113;125 -msgid "Attached files" -msgstr "Angehängte Dateien" - -#: modules/upload.views.inc:114 -msgid "All files attached to a node with upload.module." -msgstr "Alle mit dem Upload-Modul an einen Beitrag angehängten Dateien." - -#: modules/upload.views.inc:121 -#: modules/upload/views_handler_filter_upload_fid.inc:10 -msgid "Has attached files" -msgstr "Angehängte Dateien vorhanden" - -#: modules/upload.views.inc:122 -msgid "Only display items with attached files. This can cause duplicates if there are multiple attached files." -msgstr "Nur Einträge mit angehängten Dateien anzeigen. Sollten mehrere angehängte Dateien vorhanden sein, kann dies zu Duplikaten führen." - -#: modules/upload.views.inc:126 -msgid "Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node." -msgstr "" - -#: modules/upload.views.inc:132 -msgid "Files" -msgstr "Dateien" - -#: modules/user.views.inc:28 -msgid "Users who have created accounts on your site." -msgstr "Benutzer, die Konten auf der Website erstellt haben." - -#: modules/user.views.inc:48 -msgid "Uid" -msgstr "Uid" - -#: modules/user.views.inc:49 -msgid "The user ID" -msgstr "Benutzer-ID" - -#: modules/user.views.inc:70 -msgid "Current" -msgstr "Aktuell" - -#: modules/user.views.inc:71 -msgid "Filter the view to the currently logged in user." -msgstr "Die Ansicht des aktuell angemeldeten Benuters filtern." - -#: modules/user.views.inc:80 -msgid "The user or author name." -msgstr "Der Benutzer oder Name des Autors." - -#: modules/user.views.inc:96 -msgid "E-mail" -msgstr "E-Mail-Adresse" - -#: modules/user.views.inc:97 -msgid "Email address for a given user. This field is not normally shown to users, so be cautious when using it." -msgstr "Die E-Mail-Adresse für einen bestimmten Benutzer. Dieses Feld wird Benutzern normalerweise nicht angezeigt und sollte nur unter Vorsicht verwendet werden." - -#: modules/user.views.inc:112 -msgid "Picture" -msgstr "Bild" - -#: modules/user.views.inc:113 -msgid "The user's picture, if allowed." -msgstr "Das Bild des Benutzers, soweit zulässig." - -#: modules/user.views.inc:124 -msgid "The date the user was created." -msgstr "Der Zeitpunkt zu dem der Benutzer erstellt wurde." - -#: modules/user.views.inc:139 -msgid "Last access" -msgstr "Letzter Zugriff" - -#: modules/user.views.inc:140 -msgid "The user's last access date." -msgstr "Letztes Zugriffsdatum des Benutzers." - -#: modules/user.views.inc:155 -msgid "Last login" -msgstr "Letzte Anmeldung" - -#: modules/user.views.inc:156 -msgid "The user's last login date." -msgstr "Letztes Anmeldedatum des Benutzers." - -#: modules/user.views.inc:172 -msgid "Whether a user is active or blocked." -msgstr "Ob ein Benutzer aktiv oder blockiert ist." - -#: modules/user.views.inc:189 -msgid "Signature" -msgstr "Signatur" - -#: modules/user.views.inc:190 -msgid "The user's signature." -msgstr "Die Signatur des Benutzers." - -#: modules/user.views.inc:203 -msgid "Provide a simple link to edit the user." -msgstr "Stellt einen einfachen Link zum Bearbeiten des Benutzers bereit." - -#: modules/user.views.inc:211 -msgid "Provide a simple link to delete the user." -msgstr "Stellt einen einfachen Link zum Löschen des Benutzers bereit." - -#: modules/user.views.inc:240 -msgid "Roles" -msgstr "Rollen" - -#: modules/user.views.inc:241 -msgid "Roles that a user belongs to." -msgstr "Die Rollen denen ein Benutzer angehört." - -#: modules/user.views.inc:253 -msgid "No role" -msgstr "Keine Rolle" - -#: modules/user.views.inc:296 -msgid "User ID from URL" -msgstr "Benutzer-ID aus der URL" - -#: modules/user.views.inc:302 -msgid "User ID from logged in user" -msgstr "Benutzer-ID des angemeldeten Benutzers" - -#: modules/views.views.inc:18 -msgid "Global" -msgstr "Global" - -#: modules/views.views.inc:23 -msgid "Random" -msgstr "Zufall" - -#: modules/views.views.inc:24 -msgid "Randomize the display order." -msgstr "Die Anzeigereihenfolge zufällig anordnen." - -#: modules/views.views.inc:31 -msgid "Null" -msgstr "Null" - -#: modules/views.views.inc:32 -msgid "Allow an argument to be ignored. The query will not be altered by this argument." -msgstr "Ermöglicht es, dass ein Argument ignoriert wird. Die Abfrage wird durch dieses Argument nicht verändert." - -#: modules/comment/views_handler_argument_comment_user_uid.inc:11 -#: modules/user/views_handler_argument_user_uid.inc:17 -msgid "Anonymous" -msgstr "Gast" - -#: modules/comment/views_handler_argument_comment_user_uid.inc:17 -msgid "No user" -msgstr "Keine Benutzer" - -#: modules/comment/views_handler_field_comment.inc:30 -msgid "Link this field to its comment" -msgstr "Dieses Feld auf seinen Kommentar verlinken" - -#: modules/comment/views_handler_field_comment_link.inc:23 -#: modules/node/views_handler_field_node_link.inc:24 -#: modules/user/views_handler_field_user_link.inc:22 -msgid "Text to display" -msgstr "Anzuzeigender Text" - -#: modules/comment/views_handler_field_comment_link.inc:34 -#: modules/node/views_handler_field_node_link.inc:35 -#: modules/user/views_handler_field_user_link.inc:38 -msgid "view" -msgstr "Anzeigen" - -#: modules/comment/views_handler_field_comment_link_delete.inc:12 -#: modules/node/views_handler_field_node_link_delete.inc:26 -#: modules/node/views_handler_field_node_revision_link_delete.inc:35 -#: modules/user/views_handler_field_user_link_delete.inc:13 -msgid "delete" -msgstr "Löschen" - -#: modules/comment/views_handler_field_comment_link_edit.inc:21 -#: modules/node/views_handler_field_node_link_edit.inc:26 -#: modules/user/views_handler_field_user_link_edit.inc:13 -msgid "edit" -msgstr "Bearbeiten" - -#: modules/comment/views_handler_field_comment_link_reply.inc:13 -msgid "reply" -msgstr "Antwort" - -#: modules/comment/views_handler_field_comment_username.inc:25 -msgid "Link this field to its user or an author's homepage" -msgstr "Mit diesem Feld auf den Benutzer oder die Startseite des Autors verlinken" - -#: modules/comment/views_handler_field_node_comment.inc:12 -#: modules/comment/views_handler_filter_node_comment.inc:10 -msgid "Disabled" -msgstr "Deaktiviert" - -#: modules/comment/views_handler_field_node_comment.inc:14 -#: modules/comment/views_handler_filter_node_comment.inc:11 -msgid "Read only" -msgstr "Nur Leseberechtigung" - -# Translation is context sensitive for comments and may cause incompatibilities. -#: modules/comment/views_handler_field_node_comment.inc:16 -#: modules/comment/views_handler_filter_node_comment.inc:12 -msgid "Read/Write" -msgstr "Kommentare lesen und schreiben" - -#: modules/comment/views_handler_field_node_new_comments.inc:25 -msgid "Link this field to new comments" -msgstr "Dieses Feld mit neuen Kommentaren verknüpfen" - -#: modules/comment/views_handler_field_node_new_comments.inc:30 -msgid "Display nothing if no new comments" -msgstr "Nichts anzeigen, wenn keine neuen Kommentare vorhanden sind" - -#: modules/comment/views_plugin_row_comment_view.inc:21 -#: modules/node/views_plugin_row_node_view.inc:32 -msgid "Display links" -msgstr "Links anzeigen" - -#: modules/node/views_handler_argument_dates_various.inc:167 -#, fuzzy -msgid "Week @week" -msgstr "@week Woche" - -#: modules/node/views_handler_argument_node_language.inc:29 -#: modules/translation/views_handler_argument_node_language.inc:29 -msgid "Unknown language" -msgstr "Unbekannte Sprache" - -#: modules/node/views_handler_argument_node_type.inc:30 -msgid "Unknown node type" -msgstr "Unbekannter Beitragstyp" - -#: modules/node/views_handler_field_history_user_timestamp.inc:32 -msgid "Check for new comments as well" -msgstr "Auch auf neue Kommentare überprüfen." - -#: modules/node/views_handler_field_node.inc:32 -msgid "Link this field to its node" -msgstr "Dieses Feld auf seinen Beitrag verlinken" - -#: modules/node/views_handler_field_node_revision_link_revert.inc:36 -msgid "revert" -msgstr "zurücksetzen" - -#: modules/node/views_handler_filter_node_language.inc:10 -#: modules/translation/views_handler_filter_node_language.inc:10 -msgid "Current user's language" -msgstr "Aktuelle Sprache des Benutzers" - -#: modules/node/views_handler_filter_node_language.inc:10 -#: modules/translation/views_handler_filter_node_language.inc:10 -msgid "No language" -msgstr "Keine Sprache" - -#: modules/node/views_handler_filter_node_type.inc:9 -msgid "Node type" -msgstr "Beitragstyp" - -#: modules/node/views_plugin_argument_validate_node.inc:29 -msgid "Types" -msgstr "Typen" - -#: modules/node/views_plugin_argument_validate_node.inc:32 -msgid "If you wish to validate for specific node types, check them; if none are checked, all nodes will pass." -msgstr "" - -#: modules/node/views_plugin_argument_validate_node.inc:39 -msgid "Validate user has access to the node" -msgstr "Überprüfen, ob der Benutzer Zugriff auf den Beitrag hat" - -#: modules/node/views_plugin_argument_validate_node.inc:47 -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:33 -msgid "Argument type" -msgstr "Argumenttyp" - -#: modules/node/views_plugin_argument_validate_node.inc:49 -msgid "Node ID" -msgstr "Beitrags-ID" - -#: modules/node/views_plugin_argument_validate_node.inc:50 -msgid "Node IDs separated by , or +" -msgstr "Beitrag-IDs getrennt nach , oder +" - -#: modules/node/views_plugin_row_node_rss.inc:26 -msgid "Full text" -msgstr "Vollständiger Text" - -#: modules/node/views_plugin_row_node_rss.inc:27 -msgid "Title plus teaser" -msgstr "Titel mit Anrißtext" - -#: modules/node/views_plugin_row_node_rss.inc:28 -msgid "Title only" -msgstr "Nur Titel" - -#: modules/node/views_plugin_row_node_rss.inc:29 -msgid "Use default RSS settings" -msgstr "Die Standard-RSS-Einstellungen verwenden" - -#: modules/node/views_plugin_row_node_rss.inc:95 -msgid "read more" -msgstr "Weiterlesen" - -#: modules/node/views_plugin_row_node_view.inc:27 -msgid "Display only teaser" -msgstr "Nur den Anrißtext anzeigen" - -#: modules/node/views_plugin_row_node_view.inc:37 -msgid "Display node comments" -msgstr "Beitragskommentare anzeigen" - -#: modules/search/views_handler_filter_search.inc:23 -msgid "On empty input" -msgstr "Bei leerer Eingabe" - -#: modules/search/views_handler_filter_search.inc:26 -msgid "Show All" -msgstr "Alle anzeigen" - -#: modules/search/views_handler_filter_search.inc:27 -msgid "Show None" -msgstr "Keine anzeigen" - -#: modules/search/views_handler_filter_search.inc:42 -msgid "Enter the terms you wish to search for." -msgstr "Die Begriffe eingeben nach denen gesucht werden soll." - -#: modules/search/views_handler_filter_search.inc:62 -msgid "You must include at least one positive keyword with @count characters or more." -msgstr "Es muss mindestens ein gültiges Stichwort in der Suchanfrage verwendet werden, das mindestens @count oder mehr Zeichen enthält." - -#: modules/search/views_handler_filter_search.inc:66 -msgid "Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>." -msgstr "Mit großgeschriebenem <strong>OR</strong> nach einem von beiden Begriffen suchen. Beispielsweise <strong>Katzen OR Hunde</strong>." - -#: modules/search/views_plugin_row_search_view.inc:23 -msgid "Display score" -msgstr "Anzeigepunktzahl" - -#: modules/system/views_handler_argument_file_fid.inc:13 -msgid "No title" -msgstr "Kein Titel" - -#: modules/system/views_handler_field_file.inc:29 -#: modules/upload/views_handler_field_upload_description.inc:24 -#: modules/upload/views_handler_field_upload_fid.inc:21 -msgid "Link this field to download the file" -msgstr "" - -#: modules/taxonomy/views_handler_argument_taxonomy.inc:18 -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:125 -msgid "No name" -msgstr "Kein Name" - -# festlegen? -#: modules/taxonomy/views_handler_argument_term_node_tid.inc:17 -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:38 -msgid "Set the breadcrumb for the term parents" -msgstr "Die Pfadnavigation für die übergeordneten Begriffe festlegen" - -#: modules/taxonomy/views_handler_argument_term_node_tid.inc:18 -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:39 -msgid "If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received." -msgstr "" - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:26 -msgid "The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term \"fruit\" and a child term \"apple\", with a depth of 1 (or higher) then filtering for the term \"fruit\" will get nodes that are tagged with \"apple\" as well as \"fruit\". If negative, the reverse is true; searching for \"apple\" will also pick up nodes tagged with \"fruit\" if depth is -1 (or lower)." -msgstr "" - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:31 -msgid "Allow multiple terms per argument" -msgstr "Ermöglicht mehrere Begriffe pro Argument." - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:32 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this argument." -msgstr "Sobald aktiviert, können Benutzer mehrere Argumente in der Form von 1+2+3 eingeben. Aufgrund der Anzahl der erforderlichen JOINs wird AND mit diesem Argument als OR betrachtet." - -#: modules/taxonomy/views_handler_argument_vocabulary_vid.inc:15 -msgid "No vocabulary" -msgstr "Kein Vokabular" - -# TODO: See: Link this field to its term page -#: modules/taxonomy/views_handler_field_taxonomy.inc:33 -msgid "Link this field to its taxonomy term page" -msgstr "Dieses Feld mit seiner Taxonomie-Begriffseite verlinken" - -# TODO: See: Link this field to its taxonomy term page -#: modules/taxonomy/views_handler_field_term_node_tid.inc:34 -msgid "Link this field to its term page" -msgstr "Dieses Feld mit seiner Begriffseite verlinken" - -#: modules/taxonomy/views_handler_field_term_node_tid.inc:41 -msgid "Limit terms by vocabulary" -msgstr "Begriffe nach Vokabular begrenzen" - -#: modules/taxonomy/views_handler_field_term_node_tid.inc:55 -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:23 -msgid "Vocabularies" -msgstr "Vokabulare" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:39 -msgid "Select which vocabulary to show terms for in the regular options." -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:49 -msgid "Selection type" -msgstr "Auswahltyp" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:50 -msgid "Dropdown" -msgstr "Auswahlliste" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:50 -msgid "Autocomplete" -msgstr "Autovervollständigung" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:56 -msgid "Show hierarchy in dropdown" -msgstr "Hierarchie in Auswahlliste anzeigen" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:73 -msgid "An invalid vocabulary is selected. Please change it in the options." -msgstr "Ein ungültiges Vokabular wurde ausgewählt. Bitte in den Optionen ändern." - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:91;147 -msgid "Select terms from vocabulary @voc" -msgstr "Begriffe aus dem Vokabular @voc wählen." - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:255 -msgid "Unable to find term: @terms" -msgid_plural "Unable to find terms: @terms" -msgstr[0] "Begriff konnte nicht gefunden werden: @terms" -msgstr[1] "Begriffe konnten nicht gefunden werden: @terms" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:26 -msgid "If you wish to validate for specific vocabularies, check them; if none are checked, all terms will pass." -msgstr "" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:36 -msgid "Term IDs separated by , or +" -msgstr "Begriff-IDs getrennt nach , oder +" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:37 -msgid "Term name or synonym" -msgstr "Begriffsname oder Synonym" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:38 -msgid "Term name/synonym converted to Term ID" -msgstr "Begriffname/Synonym wurde zur Begriff-ID konvertiert." - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:41 -msgid "Select the form of this argument; if using term name, it is generally more efficient to convert it to a term ID and use Taxonomy: Term ID rather than Taxonomy: Term Name\" as an argument." -msgstr "" - -#: modules/translation/views_handler_filter_node_language.inc:10 -msgid "Default site language" -msgstr "Standardmäßige Websitesprache" - -#: modules/translation/views_handler_relationship_translation.inc:24 -msgid "Current language" -msgstr "Aktuelle Sprache" - -#: modules/translation/views_handler_relationship_translation.inc:25 -msgid "Default language" -msgstr "Standardsprache" - -#: modules/translation/views_handler_relationship_translation.inc:32 -msgid "Translation option" -msgstr "Übersetzungsoption" - -#: modules/translation/views_handler_relationship_translation.inc:33 -msgid "The translation options allows you to select which translation or translations in a translation set join on. Select \"Current language\" or \"Default language\" to join on the translation in the current or default language respectively. Select a specific language to join on a translation in that language. If you select \"All\", each translation will create a new row, which may appear to cause duplicates." -msgstr "" - -#: modules/upload/views_handler_field_upload_fid.inc:27 -msgid "Only show \"listed\" file attachments" -msgstr "Nur „aufgelistete“ Dateianhänge anzeigen" - -#: modules/user/views_handler_field_user.inc:30 -msgid "Link this field to its user" -msgstr "Dieses Feld mit seinem Benutzer verlinken" - -#: modules/user/views_handler_field_user_mail.inc:16 -msgid "Link this field" -msgstr "Dieses Feld verlinken" - -#: modules/user/views_handler_field_user_mail.inc:19 -msgid "No link" -msgstr "Keine Verlinkung" - -#: modules/user/views_handler_field_user_mail.inc:20 -msgid "To the user" -msgstr "Zu dem Benutzer" - -#: modules/user/views_handler_field_user_mail.inc:21 -msgid "With a mailto:" -msgstr "Mit einem mailto:" - -# TODO: English is not context sensitive -#: modules/user/views_handler_filter_user_current.inc:10 -msgid "Is the logged in user" -msgstr "Ist der angemeldete Benutzer" - -#: modules/user/views_handler_filter_user_name.inc:28 -msgid "Usernames" -msgstr "Benutzernamen" - -#: modules/user/views_handler_filter_user_name.inc:29 -msgid "Enter a comma separated list of user names." -msgstr "Eine kommagetrennte Liste von Benutzernamen." - -#: modules/user/views_handler_filter_user_name.inc:112 -msgid "Unable to find user: @users" -msgid_plural "Unable to find users: @users" -msgstr[0] "Benutzer konnte nicht gefunden werden: @users" -msgstr[1] "Benutzer konnten nicht gefunden werden: @users" - -#: modules/user/views_plugin_argument_default_user.inc:17 -msgid "Also look for a node and use the node author" -msgstr "" - -#: plugins/views_plugin_access_none.inc:9 -msgid "Unrestricted" -msgstr "Unbeschränkt" - -#: plugins/views_plugin_access_perm.inc:37 -msgid "Only users with the selected permission flag will be able to access this display. Note that users with \"access all views\" can see any view, regardless of other permissions." -msgstr "" - -#: plugins/views_plugin_access_role.inc:21 -msgid "No role(s) selected" -msgstr "Keine Rolle(n) ausgewählt" - -#: plugins/views_plugin_access_role.inc:24 -msgid "Multiple roles" -msgstr "Mehrere Rollen" - -#: plugins/views_plugin_access_role.inc:43 -msgid "Only the checked roles will be able to access this display. Note that users with \"access all views\" can see any view, regardless of role." -msgstr "Nur die aktivierten Rollen werden auf diese Anzeige zugreifen können. Beachten, dass Benutzer mit dem „Zugriff auf alle Ansichten“ alle Ansichten unabhängig von ihrer Rolle sehen können." - -#: plugins/views_plugin_access_role.inc:49 -msgid "You must select at least one role if type is \"by role\"" -msgstr "Beim Typ „nach Rolle“ muss mindestens eine Rolle ausgewählt sein." - -#: plugins/views_plugin_argument_default.inc:32 -msgid "Default argument" -msgstr "Standard-Argument" - -#: plugins/views_plugin_argument_default.inc:54 -msgid "Note: you do not have permission to modify this. If you change the default argument type, this setting will be lost and you will NOT be able to get it back." -msgstr "" - -#: plugins/views_plugin_argument_default_php.inc:17 -msgid "PHP argument code" -msgstr "PHP-Argumentcode" - -#: plugins/views_plugin_argument_default_php.inc:20 -msgid "Enter PHP code that returns a value to use for this argument. Do not use <?php ?>. You must return only a single value for just this argument." -msgstr "" - -#: plugins/views_plugin_argument_validate.inc:43 -msgid "Note: you do not have permission to modify this. If you change the validator, this setting will be lost and you will NOT be able to get it back." -msgstr "" - -#: plugins/views_plugin_argument_validate_php.inc:19 -msgid "PHP validate code" -msgstr "" - -#: plugins/views_plugin_argument_validate_php.inc:21 -msgid "Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be \"$argument\" and the view will be \"$view\". You may change the argument by setting \"$handler->argument\"." -msgstr "" - -#: plugins/views_plugin_display.inc:558 -msgid "Broken field" -msgstr "Beschädigtes Feld" - -#: plugins/views_plugin_display.inc:575 -msgid "Basic settings" -msgstr "Basiseinstellungen" - -#: plugins/views_plugin_display.inc:582 -msgid "Change the name of this display." -msgstr "Den Namen dieser Anzeige ändern." - -#: plugins/views_plugin_display.inc:594 -msgid "Change the title that this display will use." -msgstr "Den von dieser Anzeige verwendeten Titel ändern." - -#: plugins/views_plugin_display.inc:604 -msgid "Style" -msgstr "Design" - -#: plugins/views_plugin_display.inc:606 -msgid "Change the style plugin." -msgstr "Das Design-Plugin ändern." - -#: plugins/views_plugin_display.inc:620 -msgid "Row style" -msgstr "Zeilendesign" - -#: plugins/views_plugin_display.inc:622 -msgid "Change the row plugin." -msgstr "Das Zeilen-Plugin ändern." - -#: plugins/views_plugin_display.inc:632 -msgid "Use AJAX" -msgstr "AJAX verwenden" - -#: plugins/views_plugin_display.inc:634 -msgid "Change whether or not this display will use AJAX." -msgstr "Ändern, ob diese Anzeige AJAX verwenden soll oder nicht." - -#: plugins/views_plugin_display.inc:641 -msgid "Use pager" -msgstr "Seitennavigation verwenden" - -#: plugins/views_plugin_display.inc:642 -msgid "Mini" -msgstr "Mini" - -#: plugins/views_plugin_display.inc:643 -msgid "Change this display's pager setting." -msgstr "Die Seitennavigations-Einstellung dieser Anzeige ändern." - -#: plugins/views_plugin_display.inc:650;822 -msgid "Items per page" -msgstr "Beträge pro Seite" - -#: plugins/views_plugin_display.inc:650;822 -#: plugins/views_plugin_style_summary.inc:43 -msgid "Items to display" -msgstr "Anzuzeigende Einträge" - -#: plugins/views_plugin_display.inc:651 -msgid "Unlimited" -msgstr "Unbegrenzt" - -#: plugins/views_plugin_display.inc:652 -msgid "Change how many items to display." -msgstr "Die Anzahl der anzuzeigenden Beiträge ändern." - -#: plugins/views_plugin_display.inc:658 -msgid "More link" -msgstr "‚Weiter‘-Link" - -#: plugins/views_plugin_display.inc:660 -msgid "Specify whether this display will provide a \"more\" link." -msgstr "Festlegen, ob diese Anzeige einen „Weiter“-Link bereitstellt." - -#: plugins/views_plugin_display.inc:666;849 -msgid "Distinct" -msgstr "Eindeutig" - -#: plugins/views_plugin_display.inc:668;846 -msgid "Display only distinct items, without duplicates." -msgstr "Nur unterschiedliche Einträge ohne Duplikate anzeigen." - -#: plugins/views_plugin_display.inc:681 -msgid "Access" -msgstr "Zugriff" - -#: plugins/views_plugin_display.inc:683 -msgid "Specify access control type for this display." -msgstr "Den Zugriffskontrolltyp für diese Anzeige festlegen." - -#: plugins/views_plugin_display.inc:687 -msgid "Change settings for this access type." -msgstr "Einstellungen für diesen Zugriffstyp ändern." - -#: plugins/views_plugin_display.inc:707 -msgid "Link display" -msgstr "Anzeige verlinken" - -#: plugins/views_plugin_display.inc:709 -msgid "Specify which display this display will link to." -msgstr "Angeben, zu welcher Anzeige diese Anzeige verlinken soll." - -#: plugins/views_plugin_display.inc:716 -msgid "Exposed form in block" -msgstr "Hervorgehobenes Formular in Block" - -#: plugins/views_plugin_display.inc:718 -msgid "Allow the exposed form to appear in a block instead of the view." -msgstr "Ermöglicht das Erscheinen des hervorgehobenen Formulars in einem Block anstatt der Ansicht." - -#: plugins/views_plugin_display.inc:721;897 -msgid "Header" -msgstr "Kopfbereich" - -#: plugins/views_plugin_display.inc:721;913 -msgid "Footer" -msgstr "Fußbereich" - -#: plugins/views_plugin_display.inc:721;929 -msgid "Empty text" -msgstr "Leerer Text" - -#: plugins/views_plugin_display.inc:737 -msgid "Unknown/missing format" -msgstr "Unbekannt/fehlendes Format" - -# May not context sensitive -#: plugins/views_plugin_display.inc:745 -#, fuzzy -msgid "Change this display's !name." -msgstr "Den !name dieser Anzeige ändern." - -#: plugins/views_plugin_display.inc:751 -msgid "Theme" -msgstr "Theme" - -#: plugins/views_plugin_display.inc:752 -msgid "Information" -msgstr "Information" - -# not literally -#: plugins/views_plugin_display.inc:753 -msgid "Get information on how to theme this display" -msgstr "Information abrufen, wie diese Anzeige dargestellt werden soll." - -#: plugins/views_plugin_display.inc:779 -msgid "The name of this display" -msgstr "Der Name dieser Anzeige" - -#: plugins/views_plugin_display.inc:782 -msgid "This title will appear only in the administrative interface for the View." -msgstr "Dieser Titel wird nur in die Verwaltungsoberfläche für die Ansicht angezeigt." - -#: plugins/views_plugin_display.inc:787 -msgid "The title of this view" -msgstr "Der Titel dieser Ansicht." - -#: plugins/views_plugin_display.inc:790 -msgid "This title will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc." -msgstr "Dieser Titel wird mit der Ansicht angezeigt, wo in der Regel die Titel angezeigt werden. Beispielsweise als Seitentitel, Blocktitel, etc." - -# not literally -#: plugins/views_plugin_display.inc:795 -msgid "Use AJAX when available to load this view" -msgstr "Soweit möglich, soll diese Ansicht mit AJAX geladen werden." - -#: plugins/views_plugin_display.inc:799 -msgid "If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This means the entire page will not refresh. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content." -msgstr "" - -#: plugins/views_plugin_display.inc:808 -msgid "Use a pager for this view" -msgstr "Eine Seitennavigation für diese Ansicht verwenden" - -#: plugins/views_plugin_display.inc:811 -msgid "Full pager" -msgstr "Vollständige Seitennavigation" - -#: plugins/views_plugin_display.inc:811 -msgid "Mini pager" -msgstr "Kleine Seitennavigation" - -#: plugins/views_plugin_display.inc:816 -msgid "Pager element" -msgstr "Seitennavigationselement" - -#: plugins/views_plugin_display.inc:817 -msgid "Unless you're experiencing problems with pagers related to this view, you should leave this at 0. If using multiple pagers on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add a lot of commas to your URLs, so avoid if possible." -msgstr "" - -#: plugins/views_plugin_display.inc:826 -msgid "The number of items to display per page. Enter 0 for no limit." -msgstr "Die Anzahl der anzuzeigenden Einträge pro Seite. 0 für keine Begrenzung." - -#: plugins/views_plugin_display.inc:831 -msgid "Offset" -msgstr "Offset" - -#: plugins/views_plugin_display.inc:832 -msgid "The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed. Offset can not be used if items to display is 0; instead use a very large number there." -msgstr "Die Anzahl der zu überspringenden Einträge. Sollte das Feld beispielsweise den Wert 3 enthalten, werden die ersten 3 Einträge übersprungen und nicht angezeigt. Der Offset kann nicht verwendet, wenn die anzuzeigenden Einträge 0 betragen. Stattdessen muss eine sehr großen Zahl verwendet werden." - -#: plugins/views_plugin_display.inc:837 -msgid "Add a more link to the bottom of the display." -msgstr "Am unteren Rand der Anzeige einen ‚mehr‘-Link einfügen." - -# TODO: Add more link -#: plugins/views_plugin_display.inc:840 -msgid "Create more link" -msgstr "‚Weiter‘-Link erstellen" - -#: plugins/views_plugin_display.inc:841 -msgid "This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above." -msgstr "Dies wird am unteren Rand dieser Ansicht einen ‚mehr‘-Link einfügen, der auf die Seitenansicht verlinkt. Sollte mehr wie eine Seitenansicht vorhanden sein, wird der Link auf die unter ‚Link-Anzeige‘ angegebene Anzeige zeigen." - -#: plugins/views_plugin_display.inc:850 -msgid "This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution." -msgstr "" - -#: plugins/views_plugin_display.inc:855 -msgid "Access restrictions" -msgstr "Zugriffsberechtigungen" - -# TODO: not context sensitive -#: plugins/views_plugin_display.inc:874;954 -msgid "You may also adjust the !settings for the currently selected style by clicking on the icon." -msgstr "" - -#: plugins/views_plugin_display.inc:874;954;999 -msgid "settings" -msgstr "Einstellungen" - -#: plugins/views_plugin_display.inc:882 -msgid "Access options" -msgstr "Zugriffsoptionen" - -#: plugins/views_plugin_display.inc:900;916 -msgid "Display even if view has no result" -msgstr "Auch anzeigen, wenn die Ansicht keine Ergebnisse zurückliefert" - -#: plugins/views_plugin_display.inc:907 -msgid "Text to display at the top of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Am Anfang der Ansicht anzuzeigender Text. Dieser kann eine Erklärung, Links oder beliebige andere Inhalte enthalten. (Optional)" - -#: plugins/views_plugin_display.inc:923 -msgid "Text to display beneath the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Unterhalb der Ansicht anzuzeigender Text. Dieser kann eine Erklärung, Links oder beliebige andere Inhalte enthalten. (Optional)" - -#: plugins/views_plugin_display.inc:934 -msgid "Text to display if the view has no results. Optional." -msgstr "Der anzuzeigende Text, wenn die Ansicht keine Ergebnisse zurückliefert. (Optional)" - -#: plugins/views_plugin_display.inc:940 -msgid "How should this view be styled" -msgstr "Wie soll diese Ansicht designed werden" - -#: plugins/views_plugin_display.inc:946 -msgid "If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary." -msgstr "" - -#: plugins/views_plugin_display.inc:960 -msgid "Style options" -msgstr "Darstellungsoptionen" - -#: plugins/views_plugin_display.inc:971 -msgid "Row style options" -msgstr "Darstellungsoptionen für Zeilen" - -#: plugins/views_plugin_display.inc:986 -msgid "How should each row in this view be styled" -msgstr "Wie soll jede Zeile in dieser Ansicht designed werden" - -#: plugins/views_plugin_display.inc:999 -msgid "You may also adjust the !settings for the currently selected row style by clicking on the icon." -msgstr "" - -#: plugins/views_plugin_display.inc:1005 -msgid "Which display to use for path" -msgstr "Welche Anzeige für den Pfad verwendet werden soll" - -#: plugins/views_plugin_display.inc:1014 -msgid "Which display to use to get this display's path for things like summary links, rss feed links, more links, etc." -msgstr "" - -#: plugins/views_plugin_display.inc:1019 -msgid "Theming information" -msgstr "Theming-Information" - -#: plugins/views_plugin_display.inc:1027 -msgid "Display output" -msgstr "Anzeigeausgabe" - -#: plugins/views_plugin_display.inc:1031 -msgid "Alternative display output" -msgstr "Alternative Anzeigeausgabe" - -#: plugins/views_plugin_display.inc:1038 -msgid "Style output" -msgstr "Designausgabe" - -#: plugins/views_plugin_display.inc:1042 -msgid "Alternative style" -msgstr "Alternatives Design" - -#: plugins/views_plugin_display.inc:1049 -msgid "Row style output" -msgstr "Ausgabe des Zeilendesign" - -#: plugins/views_plugin_display.inc:1053 -msgid "Alternative row style" -msgstr "Alternatives Zeilendesign" - -#: plugins/views_plugin_display.inc:1061 -msgid "Field @field (ID: @id)" -msgstr "Feld @field (ID: @id)" - -#: plugins/views_plugin_display.inc:1069 -msgid "This section lists all possible templates for the display plugin and for the style plugins, ordered roughly from the least specific to the most specific. The active template for each plugin -- which is the most specific template found on the system -- is highlighted in bold." -msgstr "" - -#: plugins/views_plugin_display.inc:1084 -msgid "Rescan template files" -msgstr "Vorlagendateien erneut einlesen" - -#: plugins/views_plugin_display.inc:1090 -#, fuzzy -msgid "<strong>Important!</strong> When adding, removing, or renaming template files, it is necessary to make Drupal aware of the changes by making it rescan the files on your system. By clicking this button you clear Drupal's theme registry and thereby trigger this rescanning process. The highlighted templates above will then reflect the new state of your system." -msgstr "<strong>Wichtig!</strong> Beim Hinzufügen, Entfernen oder Umbennennen von Template-Dateien ist es erforderlich Drupal über die Änderung durch neu Einlesen der Dateien auf dem System in Kenntnis zu setzen. Durch Anklicken dieses Schaltknopfs wird die Drupal-Theme-Registierung gelöscht und damit dieser Neueinleseprozess angestoßen. Die oberhalb hervorgehobenen Templates werden dann den neuen Stand des Systems wiedergeben." - -#: plugins/views_plugin_display.inc:1096 -msgid "Theming information (display)" -msgstr "Theming-Information (Anzeige)" - -#: plugins/views_plugin_display.inc:1097;1124;1153;1182 -msgid "Back to !info." -msgstr "Zurück zu !info." - -#: plugins/views_plugin_display.inc:1097;1124;1153;1182 -msgid "theming information" -msgstr "Theming-Information" - -# theming ? -#: plugins/views_plugin_display.inc:1100 -msgid "This display has no theming information" -msgstr "Für diese Anzeige gibt es keine Theming-Information" - -#: plugins/views_plugin_display.inc:1103 -msgid "This is the default theme template used for this display." -msgstr "Dies ist das standardmäßig verwendete Theme-Template für diese Anzeige." - -#: plugins/views_plugin_display.inc:1109 -msgid "This is an alternative template for this display." -msgstr "Dies ist eine alternative Vorlage für diese Anzeige." - -#: plugins/views_plugin_display.inc:1123 -msgid "Theming information (style)" -msgstr "Theming-Information (Design)" - -#: plugins/views_plugin_display.inc:1129 -msgid "This display has no style theming information" -msgstr "Diese Anzeige enthält keine Theming-Information für das Design" - -#: plugins/views_plugin_display.inc:1132 -msgid "This is the default theme template used for this style." -msgstr "Dies ist das standardmäßig verwendete Theme-Template für dieses Design." - -#: plugins/views_plugin_display.inc:1138 -msgid "This is an alternative template for this style." -msgstr "Dies ist ein alternatives Template für dieses Design." - -#: plugins/views_plugin_display.inc:1152;1181 -msgid "Theming information (row style)" -msgstr "Theming-Information (Zeilendesign)" - -#: plugins/views_plugin_display.inc:1158 -msgid "This display has no row style theming information" -msgstr "Diese Anzeige enthält keine Theming-Information für das Zeilendesign" - -#: plugins/views_plugin_display.inc:1161;1184 -msgid "This is the default theme template used for this row style." -msgstr "Dies ist das standardmäßig verwendete Theme-Template für dieses Zeilendesign." - -#: plugins/views_plugin_display.inc:1167 -msgid "This is an alternative template for this row style." -msgstr "Dies ist ein alternatives Template für dieses Zeilendesign." - -#: plugins/views_plugin_display.inc:1199 -msgid "Put the exposed form in a block" -msgstr "Das hervorgehobene Formular in einen Block legen" - -# not literally -#: plugins/views_plugin_display.inc:1203 -msgid "If set, any exposed widgets will not appear with this view. Instead, a block will be made available to the Drupal block administration system, and the exposed form will appear there. Note that this block must be enabled manually, Views will not enable it for you." -msgstr "Sobald aktiviert, wird jedes hervorgehobenes Steuerelement nicht mit der Ansicht erscheinen. Stattdessen wird dem Drupal-Blockverwaltungssystem ein Block zu Verfügung gestellt, der das hervorgehobene Formular enthält. Hierbei ist zu beachten, dass dieser Block manuell aktiviert werden muss und nicht durch das Ansichten-Modul aktiviert wird." - -#: plugins/views_plugin_display.inc:1238 -msgid "File found in folder @template-path" -msgstr "Datei wurde im Verzeichnis @template-path gefunden" - -#: plugins/views_plugin_display.inc:1242 -msgid "(File not found, in folder @template-path)" -msgstr "(Datei wurde im Verzeichnis @template-path nicht gefunden)" - -#: plugins/views_plugin_display.inc:1399 -msgid "Override" -msgstr "Übersteuern" - -#: plugins/views_plugin_display.inc:1404 -msgid "Status: using default values." -msgstr "Status: Standardwerte werden verwendet." - -#: plugins/views_plugin_display.inc:1408 -msgid "Update default display" -msgstr "Standardanzeige aktualisieren" - -#: plugins/views_plugin_display.inc:1413 -msgid "Use default" -msgstr "Standard verwenden" - -#: plugins/views_plugin_display.inc:1418 -msgid "Status: using overridden values." -msgstr "Status: Übersteuerte Werte werden verwendet." - -#: plugins/views_plugin_display.inc:1633 -msgid "Display \"@display\" uses fields but there are none defined for it or all are excluded." -msgstr "Die Anzeige „@display“ verwendet Felder, aber es sind keine dafür angegeben oder alle ausgeschlossen." - -#: plugins/views_plugin_display.inc:1638 -msgid "Display \"@display\" uses a path but the path is undefined." -msgstr "Die Anzeige „@display“ verwendet einen Pfad, aber der Pfad ist nicht angegeben." - -#: plugins/views_plugin_display.inc:1643 -msgid "Display \"@display\" has an invalid style plugin." -msgstr "Die Anzeige „@display“ verwendet ein ungültiges Design-Plugin." - -#: plugins/views_plugin_display.inc:1659 -msgid "Exposed form: @view-@display_id" -msgstr "Hervorgehobenes Formular: @view-@display_id" - -#: plugins/views_plugin_display_attachment.inc:35 -msgid "Before" -msgstr "Vorher" - -#: plugins/views_plugin_display_attachment.inc:36 -msgid "After" -msgstr "Nachdem" - -#: plugins/views_plugin_display_attachment.inc:37 -msgid "Both" -msgstr "Beide" - -#: plugins/views_plugin_display_attachment.inc:57 -msgid "Attachment settings" -msgstr "Einstellungen für Anhänge" - -#: plugins/views_plugin_display_attachment.inc:62;109 -msgid "Inherit arguments" -msgstr "Vererbte Argumente" - -# übernehmen/vererben? -#: plugins/views_plugin_display_attachment.inc:68;118 -msgid "Inherit exposed filters" -msgstr "Hervorgehobene Filter übernehmen" - -#: plugins/views_plugin_display_attachment.inc:74;127 -msgid "Position" -msgstr "Position" - -#: plugins/views_plugin_display_attachment.inc:80 -#: plugins/views_plugin_display_feed.inc:98 -msgid "Multiple displays" -msgstr "Mehrere Anzeigen" - -#: plugins/views_plugin_display_attachment.inc:95;136 -#: plugins/views_plugin_display_feed.inc:113;140 -msgid "Attach to" -msgstr "Anhängen an" - -#: plugins/views_plugin_display_attachment.inc:112;121 -msgid "Inherit" -msgstr "Vererben" - -#: plugins/views_plugin_display_attachment.inc:113 -msgid "Should this display inherit its arguments from the parent display to which it is attached?" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:122 -msgid "Should this display inherit its exposed filter values from the parent display to which it is attached?" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:130 -msgid "Attach before or after the parent display?" -msgstr "Bevor oder nach der übergeordneten Anzeige anhängen?" - -#: plugins/views_plugin_display_attachment.inc:145 -msgid "Select which display or displays this should attach to." -msgstr "" - -#: plugins/views_plugin_display_block.inc:68 -msgid "Block settings" -msgstr "Blockeinstellungen" - -#: plugins/views_plugin_display_block.inc:82 -msgid "Admin" -msgstr "Admin" - -#: plugins/views_plugin_display_block.inc:106 -msgid "Do not cache" -msgstr "Nicht cachen" - -#: plugins/views_plugin_display_block.inc:107 -msgid "Cache once for everything (global)" -msgstr "Einmalig für alles (global) cachen." - -#: plugins/views_plugin_display_block.inc:108 -msgid "Per page" -msgstr "Nach Seite" - -#: plugins/views_plugin_display_block.inc:109 -msgid "Per role" -msgstr "Nach Rolle" - -# ? -#: plugins/views_plugin_display_block.inc:110 -msgid "Per role per page" -msgstr "Nach Rolle und Seite" - -#: plugins/views_plugin_display_block.inc:111 -msgid "Per user" -msgstr "Nach Benutzer" - -# ? -#: plugins/views_plugin_display_block.inc:112 -msgid "Per user per page" -msgstr "Nach Benutzer und Seite" - -#: plugins/views_plugin_display_block.inc:137 -msgid "Block admin description" -msgstr "" - -#: plugins/views_plugin_display_block.inc:140 -msgid "This will appear as the name of this block in administer >> site building >> blocks." -msgstr "Dies wird als der Name dieses Blocks in Verwalten >> Strukturierung >> Blöcke erscheinen." - -#: plugins/views_plugin_display_block.inc:145 -msgid "Block caching type" -msgstr "Cachetyp für Blöcke" - -#: plugins/views_plugin_display_block.inc:149 -msgid "This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed." -msgstr "" - -#: plugins/views_plugin_display_feed.inc:86 -msgid "Feed settings" -msgstr "Newsfeed-Einstellungen" - -#: plugins/views_plugin_display_feed.inc:90 -msgid "Using the site name" -msgstr "Der Name der Website wird verwendet" - -#: plugins/views_plugin_display_feed.inc:132 -msgid "Use the site name for the title" -msgstr "Den Namen der Website für den Titel verwenden." - -#: plugins/views_plugin_display_feed.inc:149 -msgid "The feed icon will be available only to the selected displays." -msgstr "Das Feed-Symbol wird nur in den ausgewählten Anzeigen zur Verfügung stehen." - -#: plugins/views_plugin_display_feed.inc:155 -msgid "This view will be displayed by visiting this path on your site. It is recommended that the path be something like \"path/%/%/feed\" or \"path/%/%/rss.xml\", putting one % in the path for each argument you have defined in the view." -msgstr "Diese Ansicht wird durch den Besuch des Pfades auf der Website angezeigt. Es werden Pfade wie „pfad/%/%/feed“ oder „pfad/%/%/rss.xml“ empfohlen, bei dem für jedes in der Ansicht festgelegte Argument ein % in den Pfad eingefügt wird." - -#: plugins/views_plugin_display_page.inc:188 -msgid "Page settings" -msgstr "Seiteneinstellungen" - -#: plugins/views_plugin_display_page.inc:213 -msgid "No menu" -msgstr "Kein Menü" - -#: plugins/views_plugin_display_page.inc:216 -msgid "Normal: @title" -msgstr "Normal: @title" - -#: plugins/views_plugin_display_page.inc:220 -msgid "Tab: @title" -msgstr "Reiter: @title" - -#: plugins/views_plugin_display_page.inc:230;302 -msgid "Menu" -msgstr "Menü" - -#: plugins/views_plugin_display_page.inc:236 -msgid "Change settings for the parent menu" -msgstr "Einstellungen für das übergeordnete Menü ändern" - -#: plugins/views_plugin_display_page.inc:249 -msgid "The menu path or URL of this view" -msgstr "Der Menüpfad oder URL von dieser Ansicht" - -#: plugins/views_plugin_display_page.inc:253 -msgid "This view will be displayed by visiting this path on your site. You may use \"%\" in your URL to represent values that will be used for arguments: For example, \"node/%/feed\"." -msgstr "" - -#: plugins/views_plugin_display_page.inc:259 -msgid "Menu item entry" -msgstr "Menüpunkt" - -#: plugins/views_plugin_display_page.inc:276 -msgid "No menu entry" -msgstr "Kein Menüpunkt" - -#: plugins/views_plugin_display_page.inc:277 -msgid "Normal menu entry" -msgstr "Normaler Menüpunkt" - -#: plugins/views_plugin_display_page.inc:278;343 -msgid "Menu tab" -msgstr "Menü-Reiter" - -#: plugins/views_plugin_display_page.inc:279 -msgid "Default menu tab" -msgstr "Standardmäßiger Menü-Reiter" - -#: plugins/views_plugin_display_page.inc:288 -msgid "If set to normal or tab, enter the text to use for the menu item." -msgstr "Den zu verwendenden Text für den Menüpunkt eingeben, wenn dieser auf Normal oder Reiter eingestellt wird." - -#: plugins/views_plugin_display_page.inc:295 -msgid "Warning: Changing this item's menu will not work reliably in Drupal 6.4 or earlier. Please upgrade your copy of Drupal at !url." -msgstr "" - -#: plugins/views_plugin_display_page.inc:306 -msgid "Insert item into an available menu." -msgstr "Menüeintrag in ein vorhandenes Menü eintragen." - -#: plugins/views_plugin_display_page.inc:315 -msgid "The lower the weight the higher/further left it will appear." -msgstr "Je niedriger die Reihenfolge, umso höher bzw. weiter links wird es erscheinen." - -#: plugins/views_plugin_display_page.inc:321 -msgid "Default tab options" -msgstr "Standardmäßige Reiteroptionen" - -#: plugins/views_plugin_display_page.inc:330 -msgid "When providing a menu item as a tab, Drupal needs to know what the parent menu item of that tab will be. Sometimes the parent will already exist, but other times you will need to have one created. The path of a parent item will always be the same path with the last part left off. i.e, if the path to this view is <em>foo/bar/baz</em>, the parent path would be <em>foo/bar</em>." -msgstr "" - -#: plugins/views_plugin_display_page.inc:341 -msgid "Parent menu item" -msgstr "Übergeordneter Menüpunkt" - -#: plugins/views_plugin_display_page.inc:343 -msgid "Already exists" -msgstr "Schon vorhanden" - -#: plugins/views_plugin_display_page.inc:343 -msgid "Normal menu item" -msgstr "Normaler Menüpunkt" - -#: plugins/views_plugin_display_page.inc:351 -msgid "If creating a parent menu item, enter the title of the item." -msgstr "Einen Titel für den Menüpunkt eingeben, wenn ein übergeordneter Menüpunkt erstellt wird." - -#: plugins/views_plugin_display_page.inc:357 -msgid "Tab weight" -msgstr "Reiterreihenfolge" - -#: plugins/views_plugin_display_page.inc:361 -msgid "If the parent menu item is a tab, enter the weight of the tab. The lower the number, the more to the left it will be." -msgstr "Die Reihenfolge des Reiters eingeben, wenn der übergeordnete Menüpunkt ein Reiter ist. Umso niedriger die Zahl ist, desto weiter links wird er angezeigt." - -#: plugins/views_plugin_display_page.inc:375 -msgid "\"$arg\" is no longer supported. Use % instead." -msgstr "„$arg“ wird nicht mehr unterstützt. Stattdessen kann % verwendet werden." - -#: plugins/views_plugin_display_page.inc:379 -msgid "\"%\" may not be used for the first segment of a path." -msgstr "„%“ darf nicht als erstes Segment eines Pfades verwendet werden." - -#: plugins/views_plugin_display_page.inc:389 -msgid "Views cannot create normal menu items for paths with a % in them." -msgstr "Ansichten können keine normalen Menüpunkt für Pfade mit einem % erstellen." - -#: plugins/views_plugin_display_page.inc:396 -msgid "A display whose path ends with a % cannot be a tab." -msgstr "Eine Anzeige deren Pfad mit einem % abschließt kann kein Reiter sein." - -#: plugins/views_plugin_display_page.inc:401 -msgid "Title is required for this menu type." -msgstr "Ein Titel ist für diesen Menütyp erforderlich." - -#: plugins/views_plugin_display_page.inc:432 -msgid "Display @display is set to use a menu but the menu title is not set." -msgstr "Die Anzeige @display ist konfiguriert ein Menü zu verwenden, aber der Menütitel ist nicht vorhanden." - -#: plugins/views_plugin_display_page.inc:438 -msgid "Display @display is set to use a parent menu but the parent menu title is not set." -msgstr "Die Anzeige @display ist konfiguriert ein übergeordnetes Menü zu verwenden, aber der übergeordnete Menütitel ist nicht vorhanden." - -#: plugins/views_plugin_row_fields.inc:40 -msgid "Inline fields" -msgstr "Inline-Felder" - -#: plugins/views_plugin_row_fields.inc:43 -msgid "Inline fields will be displayed next to each other rather than one after another." -msgstr "" - -#: plugins/views_plugin_row_fields.inc:51 -msgid "The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field." -msgstr "" - -#: plugins/views_plugin_style.inc:91 -msgid "Grouping field" -msgstr "Gruppierungsfeld" - -#: plugins/views_plugin_style.inc:94 -msgid "You may optionally specify a field by which to group the records. Leave blank to not group." -msgstr "" - -#: plugins/views_plugin_style.inc:191 -msgid "Style @style requires a row style but the row plugin is invalid." -msgstr "Das Design @style erfordert ein Zeilendesign, aber das Zeilen-Plugin ist ungültig." - -#: plugins/views_plugin_style_grid.inc:33 -msgid "Number of columns" -msgstr "Anzahl der Spalten" - -#: plugins/views_plugin_style_grid.inc:38 -msgid "Alignment" -msgstr "Ausrichtung" - -#: plugins/views_plugin_style_grid.inc:39 -msgid "Horizontal" -msgstr "Horizontal" - -#: plugins/views_plugin_style_grid.inc:39 -msgid "Vertical" -msgstr "Vertikal" - -#: plugins/views_plugin_style_grid.inc:41 -msgid "Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down." -msgstr "" - -#: plugins/views_plugin_style_list.inc:32 -msgid "List type" -msgstr "Listentyp" - -#: plugins/views_plugin_style_rss.inc:56 -msgid "Use the site mission for the description" -msgstr "Die Websitebeschreibung für die Beschreibung verwenden." - -#: plugins/views_plugin_style_rss.inc:60 -msgid "RSS description" -msgstr "RSS-Beschreibung" - -# not literally -#: plugins/views_plugin_style_rss.inc:62 -#, fuzzy -msgid "This will appear in the RSS feed itself." -msgstr "Dies wird in dem RSS-Newsfeed erscheinen." - -#: plugins/views_plugin_style_summary.inc:34 -#, fuzzy -msgid "Display record count with link" -msgstr "Anzahl der Ergebnisse mit dem Link anzeigen" - -#: plugins/views_plugin_style_summary.inc:39 -msgid "Override number of items to display" -msgstr "Die Anzahl der anzuzeigenden Einträge übersteuern" - -#: plugins/views_plugin_style_summary_unformatted.inc:26 -#, fuzzy -msgid "Display items inline" -msgstr "Einträge inline anzeigen" - -#: plugins/views_plugin_style_table.inc:126 -msgid "You need at least one field before you can configure your table settings" -msgstr "Mindestens ein Feld ist erforderlich, bevor die Tabelleneinstellungen konfiguriert werden können" - -#: plugins/views_plugin_style_table.inc:135 -msgid "Override normal sorting if click sorting is used" -msgstr "Normale Sortierung übersteuern, wenn die Klick-Sortierung verwendet wird." - -#: plugins/views_plugin_style_table.inc:141 -msgid "Enable Drupal style \"sticky\" table headers (Javascript)" -msgstr "" - -#: plugins/views_plugin_style_table.inc:143 -msgid "(Sticky header effects will not be active for preview below, only on live output.)" -msgstr "" - -#: plugins/views_plugin_style_table.inc:148 -msgid "Default sort order" -msgstr "Standardsortierung" - -#: plugins/views_plugin_style_table.inc:151 -#, fuzzy -msgid "If a default sort order is selected, what order should it use by default." -msgstr "Welche standardmäßige Sortierung bei der standardmäßigen Sortierreihenfolge verwendet werden soll." - -#: plugins/views_plugin_style_table.inc:237 -msgid "Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column click sortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section." -msgstr "" - -#: theme/views-more.tpl.php:15 -msgid "more" -msgstr "Weiter" - -#: theme/views-ui-edit-item.tpl.php:32 -msgid "The style selected does not utilize fields." -msgstr "Das ausgewählte Design verwendet keine Felder." - -#: theme/views-ui-edit-item.tpl.php:34 -msgid "None defined" -msgstr "Nicht definiert" - -#: theme/views-ui-edit-tab.tpl.php:31 -msgid "View settings" -msgstr "Einstellungen der Ansicht" - -#: theme/views-ui-edit-view.tpl.php:11 -msgid "This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a href=\"!break\">break this lock</a>." -msgstr "Diese Ansicht wird gerade vom Benutzer !user bearbeitet und ist deshalb für die Bearbeitung durch andere gesperrt. Diese Sperre ist !age alt. Hier klicken um <a href=\"!break\">die Sperre aufzuheben</a>." - -#: theme/views-ui-edit-view.tpl.php:16 -msgid "New view" -msgstr "Neue Ansicht" - -#: theme/views-ui-edit-view.tpl.php:18 -msgid "Changed view" -msgstr "Ansicht wurde geändert" - -#: theme/views-ui-edit-view.tpl.php:23 -msgid "View %name, displaying items of type <strong>@base</strong>." -msgstr "Die Ansicht %name zeigt Einträge vom Typ <strong>@base</strong> an." - -#: theme/views-ui-edit-view.tpl.php:42 -msgid "Live preview" -msgstr "Live-Vorschau" - -#: theme/views-ui-list-views.tpl.php:17 -msgid "<em>@type</em> @base view: <strong>@view</strong>" -msgstr "<em>@type</em> @base-Ansicht: <strong>@view</strong>" - -#: theme/views-ui-list-views.tpl.php:27 -msgid "Title: @title" -msgstr "Titel: @title" - -#: theme/views-ui-list-views.tpl.php:30 -msgid "Path: !path" -msgstr "Pfad: !path" - -#: theme/theme.inc:90 -msgid "Edit this view" -msgstr "Diese Ansicht bearbeiten" - -#: theme/theme.inc:307 -msgid "sort by @s" -msgstr "Nach @s sortieren" - -#: theme/theme.inc:559 -msgid "‹‹" -msgstr "‹‹" - -#: theme/theme.inc:560 -msgid "››" -msgstr "››" - -#: theme/theme.inc:570 -msgid "@current of @max" -msgstr "@current von @max" - -#: views_export/views_export.module:76 -msgid "There are no views to be exported at this time." -msgstr "Derzeit gibt es keine zu exportierenden Ansichten." - -# "Tags" als "Tags" belassen? -#: views_export/views_export.module:108 -msgid "Show only these tags" -msgstr "Nur diese Kennzeichnungen anzeigen" - -#: views_export/views_export.module:122 -msgid "Module name" -msgstr "Modulname" - -#: views_export/views_export.module:123 -msgid "Enter the module name to export code to." -msgstr "Den Modulnamen angebenen zu dem Code exportiert wird." - -# TODO: English needs work -#: views_export/views_export.module:190 -msgid "Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory" -msgstr "Diesen Code im Verzeichnis modules/@module oder modules/@module/includes in eine Datei mit dem Namen @module.views_default.inc eingefügen." - -#: views_export/views_export.module:44 -msgid "use views exporter" -msgstr "Ansichten-Export verwenden" - -#: views_export/views_export.module:17 -msgid "Bulk export" -msgstr "Massenexport" - -#: views_export/views_export.module:0 -msgid "views_export" -msgstr "views_export" - -# Name of the views export module -#: views_export/views_export.info:0 -msgid "Views exporter" -msgstr "Ansichten-Export" - -#: views_export/views_export.info:0 -msgid "Allows exporting multiple views at once." -msgstr "Ermöglicht den Export mehrerer Ansichten auf einmal." - -#~ msgid "break this lock" -#~ msgstr "Sperre aufheben" - -#, fuzzy -#~ msgid "exposed>" -#~ msgstr "hervorgehoben" -#~ msgid "By role" -#~ msgstr "Nach Rolle" -#~ msgid "By permission" -#~ msgstr "Nach Berechtigung" -#~ msgid "" -#~ "Email address for a given user. Only accessible to users with " -#~ "<em>administer users</em> permission" -#~ msgstr "" -#~ "E-Mail-Adresse eines angegebenen Benutzers. Nur Benutzer mit der " -#~ "<em>Benutzer verwalten</em>-Berechtigung können darauf zugreifen." -#~ msgid "If by role" -#~ msgstr "Wenn nach Rolle" -#~ msgid "If by permission" -#~ msgstr "Wenn nach Berechtigung" -#~ msgid "Caching" -#~ msgstr "Caching" -#~ msgid "User ID" -#~ msgstr "Benutzer-ID" -#~ msgid "administer views" -#~ msgstr "Ansichten verwalten" -#~ msgid "Shows all new activity on system." -#~ msgstr "Alle neuen Aktivitäten auf dem System anzeigen." -#~ msgid "Replies" -#~ msgstr "Antworten" -#~ msgid "Last Post" -#~ msgstr "Letzter Beitrag" - -#, fuzzy -#~ msgid " new" -#~ msgstr " neu" -#~ msgid "Recent posts for %1" -#~ msgstr "Neueste Beiträge für %1" -#~ msgid "Recent posts" -#~ msgstr "Neue Beiträge" -#~ msgid "Recent comments" -#~ msgstr "Neueste Kommentare" -#~ msgid "Reply to" -#~ msgstr "Antwort an" -#~ msgid "Pages that link to %1" -#~ msgstr "Seiten die zu %1 verweisen" - -# core? -#, fuzzy -#~ msgid "Popular content" -#~ msgstr "Beliebter Inhalt" -#~ msgid "Popular (page)" -#~ msgstr "Beliebt (Seite)" -#~ msgid "Today (page)" -#~ msgstr "Heute (Seite)" -#~ msgid "Today's popular content" -#~ msgstr "Heutiger beliebtester Inhalt" -#~ msgid "Popular (block)" -#~ msgstr "Beliebt (Block)" -#~ msgid "Today (block)" -#~ msgstr "Heute (Block)" -#~ msgid "Core feed" -#~ msgstr "Kern-Newsfeed" - diff --git a/sites/all/modules/views/translations/eo.po b/sites/all/modules/views/translations/eo.po deleted file mode 100644 index 5de86ce4b..000000000 --- a/sites/all/modules/views/translations/eo.po +++ /dev/null @@ -1,4100 +0,0 @@ -# Esperanto translation of Drupal (general) -# Copyright 2008 Chuck Smith <chuck@chucksmith.de> -# Generated from files: -# views.module,v 1.300 2008/06/25 21:10:10 merlinofchaos -# admin.inc,v 1.123 2008/07/02 18:43:08 merlinofchaos -# views_ui.module,v 1.99 2008/06/04 00:09:53 merlinofchaos -# views_export.module,v 1.2 2008/06/25 21:42:20 merlinofchaos -# views.info,v 1.7 2007/08/12 06:52:14 merlinofchaos -# views_ui.info,v 1.10 2008/01/09 00:05:08 merlinofchaos -# views_export.info,v 1.1 2008/06/12 16:17:25 merlinofchaos -# plugins.inc,v 1.134 2008/07/04 16:47:20 merlinofchaos -# convert.inc,v 1.11 2008/06/26 16:41:01 merlinofchaos -# theme.inc,v 1.53 2008/07/03 15:54:08 merlinofchaos -# views.install,v 1.41 2008/06/03 23:50:44 merlinofchaos -# docs.php,v 1.8 2008/06/18 15:25:46 merlinofchaos -# node.views.inc,v 1.76 2008/07/02 18:14:03 merlinofchaos -# view.inc,v 1.116 2008/07/03 18:01:44 merlinofchaos -# system.views.inc,v 1.6 2008/06/26 00:58:29 merlinofchaos -# user.views.inc,v 1.47 2008/06/26 00:58:29 merlinofchaos -# argument.handlers.inc,v 1.40 2008/07/04 20:43:33 merlinofchaos -# comment.views.inc,v 1.20 2008/07/02 17:42:57 merlinofchaos -# statistics.views.inc,v 1.7 2008/06/26 00:58:29 merlinofchaos -# upload.views.inc,v 1.12 2008/06/30 16:37:14 merlinofchaos -# book.views.inc,v 1.4 2008/07/02 17:42:57 merlinofchaos -# taxonomy.views.inc,v 1.37 2008/07/02 18:53:40 merlinofchaos -# ajax.inc,v 1.15 2008/06/14 17:42:42 merlinofchaos -# field.handlers.inc,v 1.13 2008/06/18 15:25:46 merlinofchaos -# filter.handlers.inc,v 1.25 2008/07/03 05:05:12 merlinofchaos -# relationship.handlers.inc,v 1.7 2008/06/30 16:37:14 merlinofchaos -# sort.handlers.inc,v 1.6 2008/06/18 15:25:46 merlinofchaos -# form.inc,v 1.10 2008/06/25 21:10:10 merlinofchaos -# handlers.inc,v 1.88 2008/06/25 22:20:01 merlinofchaos -# ajax.js,v 1.21 2008/05/27 22:31:59 merlinofchaos -# ajax_view.js,v 1.5 2008/05/27 22:31:59 merlinofchaos -# tabs.js,v 1.3 2008/03/30 15:58:26 merlinofchaos -# poll.views.inc,v 1.2 2008/03/12 04:32:07 merlinofchaos -# profile.views.inc,v 1.7 2008/06/26 00:58:29 merlinofchaos -# search.views.inc,v 1.11 2008/06/27 00:39:07 merlinofchaos -# views.views.inc,v 1.4 2008/06/26 00:58:29 merlinofchaos -# views-more.tpl.php,v 1.2 2008/04/11 08:46:26 merlinofchaos -# views-ui-edit-item.tpl.php,v 1.7 2008/05/09 19:32:12 merlinofchaos -# views-ui-edit-tab.tpl.php,v 1.10 2008/05/14 00:30:25 merlinofchaos -# views-ui-edit-view.tpl.php,v 1.8 2008/05/14 00:52:10 merlinofchaos -# views-ui-list-views.tpl.php,v 1.5 2008/05/08 05:29:30 merlinofchaos -# -#, fuzzy -msgid "" -"" -msgstr "Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2008-07-06 13:10+0200\n" -"PO-Revision-Date: 2008-08-12 HH:MM+ZZZZ\n" -"Last-Translator: Chuck Smith <chuck@chucksmith.de>\n" -"Language-Team: Esperanto <chuck@chucksmith.de>\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" - -#: views.module:640 -msgid "Skipping broken view @view" -msgstr "Preterpasi rompitan aspekton @view" - -#: views.module:687 -#: includes/admin.inc:92 -msgid "Overridden" -msgstr "Anstataŭigita" - -#: views.module:690 -#: views_ui.module:284 -#: includes/admin.inc:91 -msgid "Default" -msgstr "Defaŭlta" - -#: views.module:828 -#: includes/admin.inc:286 -#: views_export/views_export.module:116 -msgid "Apply" -msgstr "Apliki" - -#: views.module:109 -#: views_ui.module:23 -#: views.info:0 -#: views_ui.info:0 -#: views_export/views_export.info:0 -msgid "Views" -msgstr "Aspektoj" - -#: views.module:114 -msgid "Ajax callback for view loading." -msgstr "Ajax-revoko por ŝarĝi aspekton." - -#: views.module:0 -msgid "views" -msgstr "aspektoj" - -#: views_ui.module:158 -msgid "The converter will make a best-effort attempt to convert a Views 1 view to Views 2. This conversion is not reliable; you will very likely have to make adjustments to your view to get it to match. You can import Views 1 views through the normal Import tab." -msgstr "La konvertilo klopodos kiel eble plej bone konverti aspekton de Aspektoj 1 al Aspektoj 2. Tiu konvertado ne fidindas; vi plej verŝajne devos ĝustigi vian aspekton por ke ĝi kongruu. Vi povas importi aspektojn de Aspektoj 1 per la normala importa langeto." - -#: views_ui.module:25 -msgid "Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented." -msgstr "Aspektoj estas adapteblaj listoj de enhavo en via sistemo; ili estas tre adapteblaj kaj donos al vi regon super kiel listoj de enhavo prezentiĝos." - -#: views_ui.module:29 -#: includes/plugins.inc:88 -msgid "List" -msgstr "Listo" - -#: views_ui.module:35 -#: includes/admin.inc:1105 -msgid "Add" -msgstr "Aldoni" - -#: views_ui.module:40 -#: includes/admin.inc:715 -msgid "Import" -msgstr "Importi" - -#: views_ui.module:46 -msgid "Tools" -msgstr "Iloj" - -#: views_ui.module:52 -msgid "Basic" -msgstr "Baza" - -#: views_ui.module:60 -#: includes/convert.inc:30 -msgid "Convert" -msgstr "Konverti" - -#: views_ui.module:61 -msgid "Convert stored Views 1 views." -msgstr "Konverti konservitajn aspektojn de Aspektoj 1." - -#: views_ui.module:67 -msgid "Delete view" -msgstr "Forigi aspekton" - -#: views_ui.module:73 -msgid "Convert view" -msgstr "Konverti aspekton" - -#: views_ui.module:110 -#: includes/admin.inc:87 -#: theme/theme.inc:89 -msgid "Edit" -msgstr "Redakti" - -#: views_ui.module:0 -msgid "views_ui" -msgstr "views_ui" - -#: views.install:31 -msgid "Stores the general data for a view." -msgstr "Konservas la ĝeneralajn datumojn por aspekto." - -#: views.install:37 -msgid "The view ID of the field, defined by the database." -msgstr "La aspekta ID de la kampo, difinita de la datumbazo." - -#: views.install:45 -msgid "The unique name of the view. This is the primary field views are loaded from, and is used so that views may be internal and not necessarily in the database. May only be alphanumeric characters plus underscores." -msgstr "La unika nomo de la aspekto. Tio estas la ĉefa kampo de kiu aspektoj estas ŝarĝitaj, kaj estas uzata por ke aspektoj povu esti internaj kaj ne necese en la datumbazo. Povas nur esti alfanumeraj signoj kaj substrekoj." - -#: views.install:51 -msgid "A description of the view for the admin interface." -msgstr "Priskribo de la aspekto por la administra interfaco." - -#: views.install:57 -msgid "A tag used to group/sort views in the admin interface" -msgstr "Etikedo uzata por grupigi/ordigi aspektojn en la administra interfaco" - -#: views.install:61 -msgid "A chunk of PHP code that can be used to provide modifications to the view prior to building." -msgstr "Peco de PHP-kodo kiu povas esti uzata por modifi la aspekton antaŭ ĝia konstruado." - -#: views.install:68 -msgid "What table this view is based on, such as node, user, comment, or term." -msgstr "Sur kiu tabelo ĉi tiu aspekto estas bazita, kiel nodo, uzanto, komento aŭ termino." - -#: views.install:74 -msgid "A boolean to indicate whether or not this view may have its query cached." -msgstr "Buleo por indiki ĉu aŭ ne ĉi tiu aspekto povas kaŝmemorigi sian informpeton." - -#: views.install:82 -msgid "Stores information about each display attached to a view." -msgstr "Konservas informojn pri ĉiu aspekto alkroĉita al aspekto." - -#: views.install:89 -msgid "The view this display is attached to." -msgstr "La aspekto al kiu ĝi estas alkroĉita." - -#: views.install:97 -msgid "An identifier for this display; usually generated from the display_plugin, so should be something like page or page_1 or block_2, etc." -msgstr "Identigilo por ĉi tiu aspekto; kutime generita de la display_plugin, do devas esti io kiel page aŭ page_1 aŭ block_2 ktp." - -#: views.install:104 -msgid "The title of the display, viewable by the administrator." -msgstr "La titolo de la aspekto, videbla de la administranto." - -#: views.install:111 -msgid "The type of the display. Usually page, block or embed, but is pluggable so may be other things." -msgstr "La speco de la aspekto. Kutime paĝo, bloko aŭ enteksta, sed estas kromprogramebla, do povas esti aliaj aferoj." - -#: views.install:116 -msgid "The order in which this display is loaded." -msgstr "La sinsekvo en kiu ĉi tiu aspekto ŝarĝiĝas." - -#: views.install:120 -msgid "A serialized array of options for this display; it contains options that are generally only pertinent to that display plugin type." -msgstr "Serialigita matrico de opcioj por ĉi tiu aspekto; ĝi enhavas opciojn kiuj ĝenerale rilatas al tiu aspekta kromprograma speco. " - -#: views.install:131 -msgid "A special cache used to store objects that are being edited; it serves to save state in an ordinarily stateless environment." -msgstr "Speciala kaŝmemoro uzata por konservi objektojn kiuj estas redaktataj; ĝi servas por konservi staton en ordinare senstata ĉirkaŭaĵo." - -#: views.install:136 -msgid "The session ID this cache object belongs to." -msgstr "La seanca ID al kiu ĉi tiu kaŝmemora objekto apartenas." - -#: views.install:141 -msgid "The name of the view this cache is attached to." -msgstr "La nomo de la aspekto al kiu ĉi tiu kaŝmemoro estas alkroĉita." - -#: views.install:146 -msgid "The name of the object this cache is attached to; this essentially represents the owner so that several sub-systems can use this cache." -msgstr "La nomo de la objekto al kiu ĉi tiu kaŝmemoro estas alkroĉita; tio esence reprezentas la havanto por ke kelkaj subsistemoj povas uzi ĉi tiun kaŝmemoron." - -#: views.install:153 -msgid "The time this cache was created or updated." -msgstr "La tempo kiam ĉi tiu kaŝmemoro estis kreita aŭ ĝisdatigita." - -#: views.install:157 -msgid "Serialized data being stored." -msgstr "Serialigitaj datumoj konserviĝas." - -#: views.info:0 -msgid "Create customized lists and queries from your database." -msgstr "Krei proprajn listojn kaj vicojn el via datumbazo." - -#: views_ui.info:0 -msgid "Views UI" -msgstr "Aspektoj UI" - -#: views_ui.info:0 -msgid "Administrative interface to views. Without this module, you cannot create or edit your views." -msgstr "Administranta interfaco al aspektoj. Sen ĉi tiu modulo, vi ne povas krei aŭ redakti viajn aspektojn." - -#: docs/docs.php:106 -msgid "Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page." -msgstr "Imitas la defaŭltan frontpaĝon de Drupalo; oni povas fiksi la defaŭltan hejmpaĝan vojon al ĉi tiu aspekto por ke ĝi ĉefpaĝiĝu." - -#: docs/docs.php:107 -msgid "default" -msgstr "defaŭlta" - -#: docs/docs.php:116 -#: includes/plugins.inc:18 -msgid "Defaults" -msgstr "Defaŭltoj" - -#: docs/docs.php:205 -#: includes/plugins.inc:32 -msgid "Page" -msgstr "Paĝo" - -#: docs/docs.php:260 -#: includes/plugins.inc:65 -msgid "Feed" -msgstr "Fluo" - -#: docs/docs.php:328 -msgid "Front page feed" -msgstr "Ĉefpaĝa fluo" - -#: includes/admin.inc:34 -msgid "If you install the advanced help module from !href, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Se vi instalas la help-modulo por spertuloj de !href, Aspektoj provizos pli bonan helpon. <a href=\"@hide\">Kaŝi ĉi tiun mesaĝon.</a>" - -#: includes/admin.inc:88 -#: theme/theme.inc:96 -#: views_export/views_export.module:128 -msgid "Export" -msgstr "Eksporti" - -#: includes/admin.inc:89 -#: theme/theme.inc:101 -msgid "Clone" -msgstr "Kloni" - -#: includes/admin.inc:92 -msgid "Revert" -msgstr "Malfari ŝanĝojn" - -#: includes/admin.inc:92 -#: includes/convert.inc:35 -msgid "Delete" -msgstr "Forigi" - -#: includes/admin.inc:97 -msgid "Disable" -msgstr "Malŝalti" - -#: includes/admin.inc:100 -msgid "Enable" -msgstr "Ŝalti" - -#: includes/admin.inc:106 -msgid "Warning! Broken view!" -msgstr "Atentu! Rompita aspekto!" - -#: includes/admin.inc:121 -msgid "Broken" -msgstr "Rompita" - -#: includes/admin.inc:180 -msgid "Install the advanced help module for the getting started" -msgstr "Instalu la help-modulon por spertuloj por komenci" - -#: includes/admin.inc:183 -msgid "Not sure what to do? Try the \"!getting-started\" page." -msgstr "Ne certas kion fari? Provu la paĝon de \"Komenci\"." - -#: includes/admin.inc:197 -msgid "<All>" -msgstr "<All>" - -#: includes/admin.inc:198 -#: includes/plugins.inc:2975 -msgid "<None>" -msgstr "<None>" - -#: includes/admin.inc:213 -#: views_export/views_export.module:146 -msgid "Tag" -msgstr "Etikedo" - -#: includes/admin.inc:229 -msgid "Displays" -msgstr "Aspektoj" - -#: includes/admin.inc:241 -#: includes/plugins.inc:1128 -#: modules/node.views.inc:139 -msgid "Type" -msgstr "Speco" - -#: includes/admin.inc:248 -msgid "Storage" -msgstr "Konservado" - -#: includes/admin.inc:251 -#: includes/view.inc:1097 -msgid "Normal" -msgstr "Normala" - -#: includes/admin.inc:260 -msgid "Sort by" -msgstr "Ordigi laŭ" - -#: includes/admin.inc:262 -#: includes/plugins.inc:831 -#: modules/system.views.inc:69 -#: modules/user.views.inc:59 -msgid "Name" -msgstr "Nomo" - -#: includes/admin.inc:263 -#: includes/argument.handlers.inc:127 -#: includes/plugins.inc:843 -#: modules/comment.views.inc:44 -#: modules/node.views.inc:84 -msgid "Title" -msgstr "Titolo" - -#: includes/admin.inc:265 -#: includes/plugins.inc:2098 -#: modules/statistics.views.inc:146 -#: modules/system.views.inc:88 -msgid "Path" -msgstr "Vojo" - -#: includes/admin.inc:267 -#: includes/convert.inc:21 -#: modules/upload.views.inc:56 -#: views_export/views_export.module:146 -msgid "Description" -msgstr "Priskribo" - -#: includes/admin.inc:274 -msgid "Order" -msgstr "Sinsekvo" - -#: includes/admin.inc:276 -msgid "Up" -msgstr "Supren" - -#: includes/admin.inc:277 -msgid "Down" -msgstr "Malsupren" - -#: includes/admin.inc:361 -msgid "Query" -msgstr "Informpeto" - -#: includes/admin.inc:363 -msgid "These queries were run during view rendering:" -msgstr "Ĉi tiuj informpetoj funkciis dum kreado de aspekto:" - -#: includes/admin.inc:368 -msgid "[@time ms] " -msgstr "[@time ms]" - -#: includes/admin.inc:371 -msgid "Other queries" -msgstr "Aliaj informpetoj" - -#: includes/admin.inc:379 -msgid "This display has no path." -msgstr "Ĉi tiu aspekto ne havas vojon." - -#: includes/admin.inc:384 -msgid "Query build time" -msgstr "Tempo por konstrui informpeton" - -#: includes/admin.inc:384 -msgid "@time ms" -msgstr "@time ms" - -#: includes/admin.inc:385 -msgid "Query execute time" -msgstr "Tempo por plenumi informpeton" - -#: includes/admin.inc:386 -msgid "View render time" -msgstr "Tempo por montri aspekton" - -#: includes/admin.inc:392 -msgid "No query was run" -msgstr "Neniu informpeto funkciis" - -#: includes/admin.inc:399 -msgid "Unable to preview due to validation errors." -msgstr "Ne eblas antaŭvidi pro validigaj eraroj." - -#: includes/admin.inc:450 -msgid "Display" -msgstr "Montri" - -#: includes/admin.inc:458 -#: includes/view.inc:1774 -msgid "Arguments" -msgstr "Argumentoj" - -#: includes/admin.inc:460 -msgid "Separate arguments with a / as though they were a URL path." -msgstr "Disigi argumentojn per / kvazaŭ ili estis URL-vojo." - -#: includes/admin.inc:466 -msgid "Preview" -msgstr "Antaŭvidi" - -#: includes/admin.inc:504 -msgid "Clone view @view" -msgstr "Klona aspekto @view" - -#: includes/admin.inc:517 -#: includes/convert.inc:20 -msgid "View name" -msgstr "Nomo de aspekto" - -#: includes/admin.inc:518 -msgid "This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If overriding a module provided view, the name must not be changed or instead a new view will be created." -msgstr "Ĉi tio estas unika nomo de la aspekto. Ĝi devas enhavi nur alfanumerajn signojn kaj substrekojn; ĝi estas uzata por identigi la aspekton interne kaj por generi unikajn haŭtajn ŝablonajn nomojn por ĉi tiu aspekto. Se oni anstataŭigas modulprovitan aspekton, la nomo ne povas esti ŝanĝita aŭ anstataŭe nova aspekto kreiĝos." - -#: includes/admin.inc:526 -msgid "View description" -msgstr "Priskribo de aspekto" - -#: includes/admin.inc:527 -msgid "This description will appear on the Views administrative UI to tell you what the view is about." -msgstr "Ĉi tiu priskribo aperos en la administra UI por Aspektoj por montri al vi pri kio temas la aspekto." - -#: includes/admin.inc:533 -msgid "View tag" -msgstr "Etikedo de aspekto" - -#: includes/admin.inc:534 -msgid "Enter an optional tag for this view; it is used only to help sort views on the administrative page." -msgstr "Enmetu nedevigan etikedon por ĉi tiu aspekto; ĝi estas uzata nur por helpi ordigi aspektojn en la administra paĝo." - -#: includes/admin.inc:546 -msgid "View type" -msgstr "Aspekta speco" - -#: includes/admin.inc:547 -msgid "The view type is the primary table for which information is being retrieved. The view type controls what arguments, fields, sort criteria and filters are available, so once this is set it <strong>cannot be changed</strong>." -msgstr "La aspekta speco estas la ĉefa tabelo por kiu informoj estas ricevita. La aspekta speco regas kiuj argumentoj, kampoj, ordigaj kriterioj kaj filtriloj alireblas, do kiam tio estas fiksita, <strong>ĝi estas neŝanĝebla</strong>." - -#: includes/admin.inc:558 -msgid "Next" -msgstr "Sekva" - -#: includes/admin.inc:574 -msgid "View name must be alphanumeric or underscores only." -msgstr "Aspekta nomo devas enhavi nur alfanumerojn aŭ substrekojn." - -#: includes/admin.inc:580 -msgid "You must use a unique name for this view." -msgstr "Vi devas uzi unikan nomon por ĉi tiu aspekto." - -#: includes/admin.inc:613 -msgid "Are you sure you want to revert the view %name?" -msgstr "Ĉu vi certas ke vi volas refari la ŝanĝojn al la aspekto %name?" - -#: includes/admin.inc:614 -msgid "Reverting the view will delete the view that is in the database, reverting it to the original default view. Any changes you have made will be lost and cannot be recovered." -msgstr "Refari la ŝanĝojn de la aspekto forigos la aspekton kiu estas en la datumbazo, revenante al ĝia originala defaŭlta aspekto. Ŝanĝojn kiujn vi faris estos plene perditaj." - -#: includes/admin.inc:617 -#: includes/convert.inc:105 -msgid "Are you sure you want to delete the view %name?" -msgstr "Ĉu vi certas ke vi volas forigi la aspekton %name?" - -#: includes/admin.inc:618 -msgid "Deleting a view cannot be undone." -msgstr "Forigi aspekton ne povas esti malfarata." - -#: includes/admin.inc:626 -#: includes/convert.inc:110 -msgid "Cancel" -msgstr "Nuligi" - -#: includes/admin.inc:635 -msgid "The view has been deleted." -msgstr "La aspekto estis forigita." - -#: includes/admin.inc:647 -msgid "There is no lock on view %view to break." -msgstr "Ne estas ŝlosilo por rompi de aspekto %view." - -#: includes/admin.inc:657 -msgid "Are you sure you want to break the lock on view %name?" -msgstr "Ĉu vi certas ke vi volas rompi la ŝlosilon de aspekto %name?" - -#: includes/admin.inc:660 -msgid "By breaking this lock, any unsaved changes made by !user will be lost!" -msgstr "Rompante ĉi tiun ŝlosilon, nekonservitaj ŝanĝoj de !user estos perdita!" - -#: includes/admin.inc:661 -msgid "Break lock" -msgstr "Rompi ŝlosilon" - -#: includes/admin.inc:678 -msgid "Edit view \"%view\"" -msgstr "Redakti aspekton \"%view\"" - -#: includes/admin.inc:705 -msgid "Enter the name to use for this view if it is different from the source view. Leave blank to use the name of the view." -msgstr "Enmeti la nomon por uzi por ĉi tiu aspekto se ĝi malsamas de la fonta aspekto. Lasu malplena por uzi la nomon de la aspekto." - -#: includes/admin.inc:710 -msgid "Paste view code here" -msgstr "Glui aspektan kodon ĉi tie" - -#: includes/admin.inc:732 -msgid "Unable to interpret view code." -msgstr "Ne eblas interpreti kodon de aspekto." - -#: includes/admin.inc:740 -msgid "You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2." -msgstr "Vi importas aspekton kreita en versio 1 de Aspektoj. Vi eble devas ĝustigi kelkajn parametrojn por funkcii ĝuste en versio 2." - -#: includes/admin.inc:743 -msgid "That view is not compatible with this version of Views." -msgstr "Tiu aspekto ne kongruas kun ĉi tiu versio de Aspektoj." - -#: includes/admin.inc:758 -msgid "A view by that name already exists; please choose a different name" -msgstr "Aspekto de tiu nomo jam ekzistas; bonvolu elekti alian nomon" - -#: includes/admin.inc:779 -msgid "Save" -msgstr "Konservi" - -#: includes/admin.inc:831 -msgid "The view has been saved." -msgstr "La aspekto estas konservita." - -#: includes/admin.inc:875 -msgid "Unknown or missing table name" -msgstr "Nekonata aŭ mankata tabela nomo" - -#: includes/admin.inc:880 -msgid "Click on an item to edit that item's details." -msgstr "Klaku sur ero por redakti ties detalojn." - -#: includes/admin.inc:883 -msgid "This view has a broken default display and cannot be used." -msgstr "Ĉi tiu aspekto havas rompitan defaŭltan montradon kaj ne povas esti uzata." - -#: includes/admin.inc:919 -msgid "break this lock" -msgstr "rompi ĉi tiun ŝlosilon" - -#: includes/admin.inc:925 -#: theme/theme.inc:97 -msgid "Export this view" -msgstr "Eksporti ĉi tiun aspekton" - -#: includes/admin.inc:930 -#: theme/theme.inc:102 -msgid "Create a copy of this view" -msgstr "Krei kopion de ĉi tiu aspekto" - -#: includes/admin.inc:941 -msgid "View \"!display\"" -msgstr "Vidi \"!display\"" - -#: includes/admin.inc:942 -msgid "Go to the real page for this display" -msgstr "Iri al la vera paĝo por ĉi tiu montro" - -#: includes/admin.inc:1008 -#: includes/plugins.inc:838 -msgid "None" -msgstr "Neniu" - -#: includes/admin.inc:1082 -msgid "Invalid" -msgstr "Nevalida" - -#: includes/admin.inc:1082 -msgid "Error: Display @display refers to a plugin named '@plugin', but that plugin doesn't exist!" -msgstr "Eraro: Montro @display referencas al kromprogramo nomata '@plugin', sed tiu kromprogramo ne ekzistas!" - -#: includes/admin.inc:1103 -msgid "Rearrange" -msgstr "Rearanĝi" - -#: includes/admin.inc:1136 -msgid "Error: handler for @table > @field doesn't exist!" -msgstr "Eraro: traktilo por @table > @field ne ekzistas!" - -#: includes/admin.inc:1155 -msgid "Settings" -msgstr "Agordoj" - -#: includes/admin.inc:1160 -#: includes/plugins.inc:849 -msgid "Missing style plugin" -msgstr "Mankata stila kromprogramo" - -#: includes/admin.inc:1164 -#: includes/plugins.inc:862 -msgid "Change settings for this style" -msgstr "Ŝanĝi agordojn por ĉi tiu stilo" - -#: includes/admin.inc:1167 -msgid " Style: !style" -msgstr " Stilo: !style" - -#: includes/admin.inc:1198 -msgid "Invalid display id while regenerating tabs" -msgstr "Nevalida montra id regenerante langetojn" - -#: includes/admin.inc:1231 -msgid "Update" -msgstr "Ĝisdatigo" - -#: includes/admin.inc:1249 -msgid "Ok" -msgstr "Ok" - -#: includes/admin.inc:1518 -msgid "Unable to initialize default display" -msgstr "Ne eblas pravalorizi defaŭltan montron" - -#: includes/admin.inc:1550 -msgid "Add display" -msgstr "Aldoni montron" - -#: includes/admin.inc:1590 -msgid "Remove display" -msgstr "Forigi montron" - -#: includes/admin.inc:1601 -msgid "Restore display" -msgstr "Restarigi montron" - -#: includes/admin.inc:1673 -msgid "Analyze" -msgstr "Analizi" - -#: includes/admin.inc:1693 -msgid "This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display." -msgstr "Ĉi tiu aspekto havas nur defaŭltan montron kaj tiel ne povas lokiĝi ie en via retejo; eble vi volas aldoni paĝon aŭ blokan montron." - -#: includes/admin.inc:1705 -msgid "View analysis" -msgstr "Analizo de aspekto" - -#: includes/admin.inc:1714 -msgid "View analysis can find nothing to report." -msgstr "Analizo de aspekto ne povas trovi ion por raporti." - -#: includes/admin.inc:1788 -msgid "View details" -msgstr "Detaloj de aspekto" - -#: includes/admin.inc:1829 -msgid "Invalid display id @display" -msgstr "Nevalida montra id @display" - -#: includes/admin.inc:1887 -msgid "Configure @type" -msgstr "Agordi @type" - -#: includes/admin.inc:1942 -msgid "Rearrange @type" -msgstr "Rearanĝi @type" - -#: includes/admin.inc:1985 -msgid "Broken field @id" -msgstr "Rompita kampo @id" - -#: includes/admin.inc:2025 -msgid "Remove" -msgstr "Forigi" - -#: includes/admin.inc:2025 -msgid "Remove this item" -msgstr "Forigi ĉi tiun eron" - -#: includes/admin.inc:2031 -msgid "No fields available." -msgstr "Neniuj kampoj alireblaj." - -#: includes/admin.inc:2034 -#: includes/plugins.inc:2190 -#: modules/book.views.inc:57 -#: modules/taxonomy.views.inc:115 -#: modules/upload.views.inc:90 -msgid "Weight" -msgstr "Pezo" - -#: includes/admin.inc:2090 -msgid "Add @type" -msgstr "Aldoni @type" - -#: includes/admin.inc:2101 -msgid "Groups" -msgstr "Grupoj" - -#: includes/admin.inc:2120 -msgid "!group: !field" -msgstr "!group: !field" - -#: includes/admin.inc:2129 -msgid "There are no @types available to add." -msgstr "Ne estas @types alireblaj por aldoni." - -#: includes/admin.inc:2226 -msgid "Do not use a relationship" -msgstr "Ne uzu en rilato" - -#: includes/admin.inc:2235 -#: includes/view.inc:1798 -msgid "Relationship" -msgstr "Rilato" - -#: includes/admin.inc:2248 -msgid "Configure @type \"@item\"" -msgstr "Agordi @type \"@item\"" - -#: includes/admin.inc:2361 -msgid "Configure extra settings for @type \"@item\"" -msgstr "Agordi ekstrajn agordojn por @type \"@item\"" - -#: includes/admin.inc:2426 -msgid "Change summary style for @type \"@item\"" -msgstr "Ŝanĝi resuman stilon por @type \"@item\"" - -#: includes/admin.inc:2449 -msgid "Internal error: broken plugin." -msgstr "Interna eraro: rompita kromprogramo." - -#: includes/admin.inc:2513 -msgid "Configure summary style for @type \"@item\"" -msgstr "Agordi resuman stilon por @type \"@item\"" - -#: includes/admin.inc:2605 -msgid "Clear Views' cache" -msgstr "Malplenigi kaŝmemoron de Aspekto" - -#: includes/admin.inc:2611 -msgid "Add Views signature to all SQL queries" -msgstr "Aldoni subskribon de Aspekto al ĉiuj SQL-informpetoj" - -#: includes/admin.inc:2612 -msgid "All Views-generated queries will include a special 'VIEWS' = 'VIEWS' string in the WHERE clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting." -msgstr "Ĉiuj Aspekto-generitaj informpetoj inkluzivos specialan 'VIEWS' = 'VIEWS' teksto en la WHERE sekcio. Tio simpligas identigi informpetojn de Aspektoj en datumbazaj servilaj protokoloj, sed devas esti uzata nur dum problemsolvado." - -#: includes/admin.inc:2618 -msgid "Disable views data caching" -msgstr "Malŝalti datum-kaŝmemoradon de aspektoj" - -#: includes/admin.inc:2619 -msgid "Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site." -msgstr "Aspektoj kaŝmemorigas datumojn pri alireblaj tabeloj, moduloj kaj aspektoj, por plibonigi rendimenton. Se ŝaltita, Aspektoj preterpasos ĉi tiun kaŝmemoron kaj ĉiam rekonstruas ĉi tiujn datumojn kiam bezonata. Tio povas serioze influi la rendimenton de via retejo." - -#: includes/admin.inc:2625 -msgid "Ignore missing advanced help module" -msgstr "Ignori mankantan help-modulo por spertuloj" - -#: includes/admin.inc:2626 -msgid "Views uses the advanced help module to provide help text; if this module is not present Views will complain, unless this setting is checked." -msgstr "Aspektoj uzas la help-modulon de spertoj por provizi helpan tekston; se tiu modulo ne ekzistas, Aspektoj eble plendos, krom se ĉi tiu agordo estas ŝaltita." - -#: includes/admin.inc:2632 -msgid "Show query above live preview" -msgstr "Montri informpeton super viva antaŭvido" - -#: includes/admin.inc:2633 -msgid "The live preview feature will show you the output of the view you're creating, as well as the view. Check here to show the query and other information above the view; leave this unchecked to show that information below the view." -msgstr "La viva antaŭvida funkcio montros al vi la eligo de la aspekto kiun vi kreas, kune kun la aspekto. Ŝaltu ĝin por montri la informpeton kaj aliajn informojn super la aspekto; lasu ĝin malŝaltita por montri tiujn informojn sub la aspekto." - -#: includes/admin.inc:2639 -msgid "Show other queries run during render during live preview" -msgstr "Montri aliajn informpetojn kiuj funkcias dum montrado de viva antaŭvido" - -#: includes/admin.inc:2640 -msgid "Drupal has the potential to run many queries while a view is being rendered. Checking this box will display every query run during view render as part of the live preview." -msgstr "Drupalo havas potencialon por funkciigi multajn informpetojn dum aspekto montriĝas. Kiam ŝaltita, oni vidos ĉiun informpeton dum la montriĝo kiel parto de la viva antaŭvido." - -#: includes/admin.inc:2646 -msgid "Do not show hover links over views" -msgstr "Ne montri superligilojn super aspektoj" - -#: includes/admin.inc:2647 -msgid "To make it easier to administrate your views, Views provides 'hover' links to take you to the edit and export screen of a view whenever the view is used. This can be distracting on some themes, though; if it is problematic, you can turn it off here." -msgstr "Por faciligi administradon de viaj aspektoj, Aspektoj provizas 'superligilojn' al la redakta kaj eksporta ekrano de aspekto kiam la aspekto estas uzata. Tio povas distri en kelkaj haŭtoj, tamen, se estas problema, vi povas malŝalti ĝin ĉi tie." - -#: includes/admin.inc:2653 -msgid "Enable views performance statistics via the Devel module" -msgstr "Ŝalti rendimentajn statistikon de aspektoj per la Devel-modulo." - -#: includes/admin.inc:2654 -msgid "Check this to enable some Views query and performance statistics <em>if Devel is installed</em>." -msgstr "Ĉi tio ŝaltas kelkajn informpetan kaj rendimentajn statistikojn de Aspektoj <em>se Devel estas instalita</em>. " - -#: includes/admin.inc:2660 -msgid "Disable javascript with Views" -msgstr "Malŝalti JavaSkripton kun Aspektoj" - -#: includes/admin.inc:2661 -msgid "If you are having problems with the javascript, you can disable it here; the Views UI should degrade and still be usable without javascript, it just not as good." -msgstr "Se vi havas problemojn kun la JavaSkripto, vi povas malŝalti ĝin ĉi tie; la Aspektoj UI devas daŭre funkcii kaj uzeblas sen JavaSkripto, ĝi simple ne estas tiel bona." - -#: includes/admin.inc:2669 -msgid "Page region to output performance statistics" -msgstr "Paĝa regiono por eligi rendimentan statistikon" - -#: includes/admin.inc:2682 -msgid "The cache has been cleared." -msgstr "La kaŝmemoro estas malplenigita." - -#: includes/admin.inc:2872 -msgid "Error: missing @component" -msgstr "Eraro: mankas @component" - -#: includes/ajax.inc:73 -msgid "Server reports invalid input error." -msgstr "Servilo raportas nevalidan enmetan eraron." - -#: includes/ajax.inc:74 -msgid "Error" -msgstr "Eraro" - -#: includes/argument.handlers.inc:110 -msgid "All" -msgstr "Ĉiuj" - -#: includes/argument.handlers.inc:129 -msgid "The title to use when this argument is present; it will override the title of the view and titles from previous arguments. You can use percent substitution here to replace with argument titles. Use \"%1\" for the first argument, \"%2\" for the second, etc." -msgstr "La titolo por uzi kiam ĉi tiu argumento ekzistas; ĝi anstataŭigos la titolon de la aspekto kaj titoloj de antaŭaj argumentoj. Vi povas uzi procentan anstataŭigon por anstataŭigi kun argumentaj titoloj. Uzu \"%1\" por la unua argumento, \"%2\" por la dua ktp." - -#: includes/argument.handlers.inc:142 -msgid "Action to take if argument is not present" -msgstr "Ago por fari se argumento ne ekzistas" - -#: includes/argument.handlers.inc:154 -msgid "Wildcard" -msgstr "Ĵokero" - -#: includes/argument.handlers.inc:157 -msgid "If this value is received as an argument, the argument will be ignored; i.e, \"all values\"" -msgstr "Se tiu valoro ne estas ricevita kiel argumento, la argumento estos ignorita; alivorte \"ĉiuj valoroj\"" - -#: includes/argument.handlers.inc:163 -msgid "Wildcard title" -msgstr "Ĵokera titolo" - -#: includes/argument.handlers.inc:166 -msgid "The title to use for the wildcard in substitutions elsewhere." -msgstr "La titolo por uzi por la ĵokero en anstataŭigoj aliloke." - -#: includes/argument.handlers.inc:189 -msgid "Validator options" -msgstr "Validilaj opcioj" - -#: includes/argument.handlers.inc:194 -msgid "Validator" -msgstr "Validilo" - -#: includes/argument.handlers.inc:198 -msgid "<Basic validation>" -msgstr "<Basic validation>" - -#: includes/argument.handlers.inc:233 -msgid "Action to take if argument does not validate" -msgstr "Ago por fari se argumento ne validiĝas" - -#: includes/argument.handlers.inc:252 -msgid "Display all values" -msgstr "Montri ĉiujn valorojn" - -#: includes/argument.handlers.inc:257 -msgid "Hide view / Page not found (404)" -msgstr "Kaŝi aspekton / Paĝo ne trovita (404)" - -#: includes/argument.handlers.inc:262 -msgid "Display empty text" -msgstr "Montri malplenan tekston" - -#: includes/argument.handlers.inc:267 -msgid "Summary, sorted ascending" -msgstr "Resumo, ordigita kreskante" - -#: includes/argument.handlers.inc:274 -msgid "Summary, sorted descending" -msgstr "Resumo, ordigita malkreskante" - -#: includes/argument.handlers.inc:281 -msgid "Provide default argument" -msgstr "Provizi defaŭltan argumenton" - -#: includes/argument.handlers.inc:314 -msgid "Provide default argument options" -msgstr "Provizi defaŭltan argumentajn opciojn" - -#: includes/argument.handlers.inc:324 -msgid "Default argument type" -msgstr "Defaŭlta argumenta speco" - -#: includes/argument.handlers.inc:710 -#: includes/field.handlers.inc:217 -#: includes/filter.handlers.inc:577 -#: includes/relationship.handlers.inc:132 -#: includes/sort.handlers.inc:71 -msgid "Broken/missing handler" -msgstr "Rompita/mankata traktilo" - -#: includes/argument.handlers.inc:718 -#: includes/field.handlers.inc:225 -#: includes/filter.handlers.inc:585 -#: includes/relationship.handlers.inc:140 -#: includes/sort.handlers.inc:79 -msgid "The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item." -msgstr "La traktilo por ĉi tiu ero estas rompita aŭ mankata kaj ne povas esti uzata. Se modulo provizis la traktilon kaj estis malŝaltita, reŝalti la modulon eble restarigos ĝin. Alikaze, vi verŝajne devas forigi la eron." - -#: includes/argument.handlers.inc:804 -msgid "Current date" -msgstr "Aktuala dato" - -#: includes/argument.handlers.inc:859 -msgid "Glossary mode" -msgstr "Glosara reĝimo" - -#: includes/argument.handlers.inc:860 -msgid "Glossary mode applies a limit to the number of characters used in the argument, which allows the summary view to act as a glossary." -msgstr "Glosara reĝimo aplikas limon al nombro da signoj uzitaj en la argumento, kiu ebligas ke la resuma aspekto povu agi kiel glosaro." - -#: includes/argument.handlers.inc:866 -msgid "Character limit" -msgstr "Signa limo" - -#: includes/argument.handlers.inc:867 -msgid "How many characters of the argument to filter against. If set to 1, all fields starting with the letter in the argument would be matched." -msgstr "Kiom da signoj por filtri de la argumento. Se agordita al 1, ĉiuj kampoj komencante kun la litero en la argumento kongruus. " - -#: includes/argument.handlers.inc:875 -msgid "Case" -msgstr "Uskleco" - -#: includes/argument.handlers.inc:876 -msgid "When printing the argument result, how to transform the case." -msgstr "Montrante la argumentan rezulton, kiel transformi la usklecon." - -#: includes/argument.handlers.inc:878 -msgid "No transform" -msgstr "Neniu transformo" - -#: includes/argument.handlers.inc:879 -msgid "Upper case" -msgstr "Majuskla" - -#: includes/argument.handlers.inc:880 -msgid "Lower case" -msgstr "Minuskla" - -#: includes/argument.handlers.inc:881 -msgid "Capitalize first letter" -msgstr "Majuskligi unuan literon" - -#: includes/argument.handlers.inc:882 -msgid "Capitalize each word" -msgstr "Majuskligi ĉiun vorton" - -#: includes/argument.handlers.inc:889 -msgid "Case in path" -msgstr "Uskleco en vojo" - -#: includes/argument.handlers.inc:890 -msgid "When printing url paths, how to transform the of the argument. Do not use this unless with Postgres as it uses case sensitive comparisons." -msgstr "Kiam montrante url-vojojn, kiel transformi la de la argumento. Ne uzu tion krom kun Postgres ĉar ĝi uzas usklecodistingajn komparojn." - -#: includes/argument.handlers.inc:903 -msgid "Transform spaces to dashes in URL" -msgstr "Transformi spacetojn al streketojn en URL" - -#: includes/argument.handlers.inc:910 -msgid "Allow multiple arguments to work together." -msgstr "Ebligi multajn argumentojn por kunfunkcii." - -#: includes/argument.handlers.inc:911 -msgid "If selected, multiple instances of this argument can work together, as though multiple terms were supplied to the same argument. This setting is not compatible with the \"Reduce duplicates\" setting." -msgstr "Se elektita, multaj ekzemploj de ĉi tiu argumento povas kunfunkcii, kvazaŭ multaj terminoj estis donitaj al la sama argumento. Tiu agordo ne kongruas kun la agordo de \"Redukti kopiojn\"." - -#: includes/argument.handlers.inc:917 -msgid "Do not display items with no value in summary" -msgstr "Ne montru erojn kun neniu valoro en resumo." - -#: includes/argument.handlers.inc:1043 -msgid "Allow multiple terms per argument." -msgstr "Ebligi multajn terminojn por argumento." - -#: includes/argument.handlers.inc:1044 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." -msgstr "Se elektita, uzantoj povas enmeti multajn argumentojn en la formo de 1+2+3 aŭ 1,2,3." - -#: includes/argument.handlers.inc:1050 -msgid "Exclude the argument" -msgstr "Ekskludi la argumenton" - -#: includes/argument.handlers.inc:1051 -msgid "If selected, the numbers entered in the argument will be excluded rather than limiting the view." -msgstr "Se elektita, la nombroj enmetitaj en la argumento ekskludiĝos anstataŭ limigi la aspekton." - -#: includes/argument.handlers.inc:1058 -#: modules/taxonomy.views.inc:109 -msgid "Uncategorized" -msgstr "Nekategoriigita" - -#: includes/argument.handlers.inc:1074 -msgid "Invalid input" -msgstr "Nevalida enmeto" - -#: includes/argument.handlers.inc:1150 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 (for OR) or 1,2,3 (for AND)." -msgstr "Se elektita, uzantoj povas enmeti multajn argumentojn en la formo de 1+2+3 (por OR) aŭ 1,2,3 (por AND)." - -#: includes/convert.inc:14 -msgid "There are no Views 1 views stored in the database to convert." -msgstr "Ne estas aspektoj de Aspektoj 1 en la datumbazo por konverti." - -#: includes/convert.inc:22 -msgid "Operations" -msgstr "Operacioj" - -#: includes/convert.inc:33 -msgid "Converted" -msgstr "Konvertita" - -#: includes/convert.inc:68 -msgid "The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name." -msgstr "La tabelo sube listigas aspektoj de Aspektoj versio 1 kiuj estas konservitaj en la datumbazo. Vi povas aŭ konverti ilin por funkcii en Aspektoj versio 2, aŭ forigi ilin. La aspektoj estas konverteblaj nur se ne estas aspektoj de Aspektoj 2 kun la sama nomo." - -#: includes/convert.inc:79 -msgid "Unable to find view." -msgstr "Ne eblas trovi aspekton." - -#: includes/convert.inc:89 -msgid "Unable to convert view." -msgstr "Ne eblas konverti aspekton." - -#: includes/convert.inc:108 -msgid "This action cannot be undone." -msgstr "Tiu ago ne povas esti malfarata." - -#: includes/convert.inc:118 -msgid "The view has been deleted" -msgstr "Tiu aspekto estis forigita." - -#: includes/field.handlers.inc:138 -#: includes/filter.handlers.inc:309 -#: includes/relationship.handlers.inc:78 -msgid "Label" -msgstr "Etikedo" - -#: includes/field.handlers.inc:140 -msgid "The label for this field that will be displayed to end users if the style requires it." -msgstr "La etikedo por ĉi tiu kampo montriĝos al uzantoj se la stilo bezonas ĝin." - -#: includes/field.handlers.inc:144 -msgid "Exclude from display" -msgstr "Ekskludu de montrado" - -#: includes/field.handlers.inc:146 -msgid "Check this box to not display this field, but still load it in the view. Use this option to not show a grouping field in each record, or when doing advanced theming." -msgstr "Ŝaltu por ne montri ĉi tiun kampon, sed tamen ŝarĝi ĝin en la montro. Uzu ĉi tiun opcion por ne montri grupigan kampon en ĉiu rikardo, aŭ kiam vi faras haŭtadon por spertuloj." - -#: includes/field.handlers.inc:255 -msgid "Date format" -msgstr "Datoformato" - -#: includes/field.handlers.inc:260 -msgid "Custom" -msgstr "Propra" - -#: includes/field.handlers.inc:261 -msgid "Time ago" -msgstr "Tempo antaŭe" - -#: includes/field.handlers.inc:267 -msgid "Custom date format" -msgstr "Propra datoformato" - -#: includes/field.handlers.inc:268 -msgid "If \"Custom\", see <a href=\"http://us.php.net/manual/en/function.date.php\">the PHP docs</a> for date formats. If \"Time ago\" this is the the number of different units to display, which defaults to two." -msgstr "Se \"Propra\" vidu <a href=\"http://us.php.net/manual/en/function.date.php\">la PHP-dokumentojn</a> por datoformatoj. Se \"Tempo antaŭe\", tio estas la nombro da malsamaj unuoj por montri, kiu defaŭltas al du." - -#: includes/field.handlers.inc:284 -msgid "%time ago" -msgstr "%time antaŭe" - -#: includes/field.handlers.inc:312 -msgid "Output format" -msgstr "Eliga formato" - -#: includes/field.handlers.inc:314 -msgid "Yes/No" -msgstr "Jes/Ne" - -#: includes/field.handlers.inc:315 -msgid "True/False" -msgstr "Vera/Malvera" - -#: includes/field.handlers.inc:316 -msgid "On/Off" -msgstr "Ŝaltita/Malŝaltita" - -#: includes/field.handlers.inc:322 -msgid "Reverse" -msgstr "Inversa" - -#: includes/field.handlers.inc:323 -msgid "If checked, true will be displayed as false." -msgstr "Se ŝaltita, vera montriĝos kiel malvera." - -#: includes/field.handlers.inc:337 -#: includes/filter.handlers.inc:929 -#: includes/plugins.inc:884 -msgid "Yes" -msgstr "Jes" - -#: includes/field.handlers.inc:337 -#: includes/filter.handlers.inc:929 -#: includes/plugins.inc:884 -msgid "No" -msgstr "Ne" - -#: includes/field.handlers.inc:339 -#: includes/filter.handlers.inc:898 -msgid "True" -msgstr "Vera" - -#: includes/field.handlers.inc:339 -#: includes/filter.handlers.inc:939 -msgid "False" -msgstr "Malvera" - -#: includes/field.handlers.inc:341 -msgid "On" -msgstr "Ŝaltita" - -#: includes/field.handlers.inc:341 -msgid "Off" -msgstr "Malŝaltita" - -#: includes/field.handlers.inc:404 -#: modules/statistics.views.inc:274 -msgid "Display as link" -msgstr "Montri kiel ligilo" - -#: includes/field.handlers.inc:446 -#: modules/node.views.inc:1259 -msgid "Display type" -msgstr "Montra speco" - -#: includes/field.handlers.inc:448 -#: includes/plugins.inc:3129 -msgid "Unordered list" -msgstr "Neordigita listo" - -#: includes/field.handlers.inc:449 -#: includes/plugins.inc:3129 -msgid "Ordered list" -msgstr "Ordigita listo" - -#: includes/field.handlers.inc:450 -msgid "Simple separator" -msgstr "Simpla disigilo" - -#: includes/field.handlers.inc:457 -#: includes/plugins.inc:3423 -msgid "Separator" -msgstr "Disigilo" - -#: includes/field.handlers.inc:465 -msgid "Empty list text" -msgstr "Malplena lista teksto" - -#: includes/field.handlers.inc:467 -msgid "If the list is empty, you may enter text here that will be displayed." -msgstr "Se la listo estas malplena, vi povas enmeti tekston ĉi tie kiu montriĝos." - -#: includes/field.handlers.inc:524 -msgid "Round" -msgstr "Rondigo" - -#: includes/field.handlers.inc:525 -msgid "If checked, the number will be rounded." -msgstr "Se ŝaltita, la numero rondiĝos." - -#: includes/field.handlers.inc:530 -msgid "Precision" -msgstr "Precizo" - -#: includes/field.handlers.inc:532 -msgid "Specify how many digits to print after the decimal point." -msgstr "Indiki kiom da ciferoj por montri post la dekuma punkto." - -#: includes/field.handlers.inc:539 -msgid "Decimal point" -msgstr "Dekuma punkto" - -#: includes/field.handlers.inc:541 -msgid "What single character to use as a decimal point." -msgstr "Kiu signo por uzi kiel dekuma punkto." - -#: includes/field.handlers.inc:547 -msgid "Thousands separator" -msgstr "Disigilo de miloj" - -#: includes/field.handlers.inc:549 -msgid "What single character to use as the thousands separator." -msgstr "Kiu signo por uzi kiel la disigilo de miloj." - -#: includes/field.handlers.inc:554 -msgid "Prefix" -msgstr "Prefikso" - -#: includes/field.handlers.inc:556 -msgid "Text to put before the number, such as currency symbol." -msgstr "Teksto por meti antaŭ la numero, kiel mona simbolo." - -#: includes/field.handlers.inc:560 -msgid "Suffix" -msgstr "Sufikso" - -#: includes/field.handlers.inc:562 -msgid "Text to put after the number, such as currency symbol." -msgstr "Teksto por meti post la numero, kiel mona simbolo." - -#: includes/filter.handlers.inc:124 -msgid "Operator" -msgstr "Operacio" - -#: includes/filter.handlers.inc:188 -msgid "Expose" -msgstr "Montri" - -#: includes/filter.handlers.inc:193 -msgid "This item is currently not exposed. If you <strong>expose</strong> it, users will be able to change the filter as they view it." -msgstr "Ĉi tiu ero nun estas kaŝita. Se vi <strong>montras</strong> ĝin, uzantoj povos ŝanĝi la filtrilon dum ili vidas ĝin." - -#: includes/filter.handlers.inc:200 -msgid "Hide" -msgstr "Kaŝi" - -#: includes/filter.handlers.inc:205 -msgid "This item is currently exposed. If you <strong>hide</strong> it, users will not able to change the filter as they view it." -msgstr "Ĉi tiu ero estas nun montrata. Se vi <strong>kaŝas</strong> ĝin, uzantoj ne povos ŝanĝi la filtrilon dum ili vidas ĝin. " - -#: includes/filter.handlers.inc:276 -msgid "Unlock operator" -msgstr "Malŝlosi operatoron" - -#: includes/filter.handlers.inc:277 -msgid "When checked, the operator will be exposed to the user" -msgstr "Kiam ŝaltita, la operatoro montriĝas al la uzanto" - -#: includes/filter.handlers.inc:283 -msgid "Operator identifier" -msgstr "Operatora identigilo" - -#: includes/filter.handlers.inc:285 -msgid "This will appear in the URL after the ? to identify this operator." -msgstr "Ĉi tio aperos en la URL post la ? por identigi ĉi tiun operatoron." - -#: includes/filter.handlers.inc:302 -msgid "Filter identifier" -msgstr "Filtrila identigilo" - -#: includes/filter.handlers.inc:304 -msgid "This will appear in the URL after the ? to identify this filter. Cannot be blank." -msgstr "Ĉi tio aperos en la URL post la ? por identigi ĉi tiun filtrilon. Ne povas esti malplena." - -#: includes/filter.handlers.inc:320 -msgid "Optional" -msgstr "Nedeviga" - -#: includes/filter.handlers.inc:321 -msgid "This exposed filter is optional and will have added options to allow it not to be set." -msgstr "Ĉi tiu montrata filtrilo estas nedeviga kaj havos aldonajn opciojn por ebligi ke ĝi ne estu ŝaltita." - -#: includes/filter.handlers.inc:327 -msgid "Force single" -msgstr "Devigi unuopan" - -#: includes/filter.handlers.inc:328 -msgid "Force this exposed filter to accept only one option." -msgstr "Devigi ke ĉi tiu montrata filtrilo akceptu nur unu opcion." - -#: includes/filter.handlers.inc:334 -msgid "Remember" -msgstr "Memori" - -#: includes/filter.handlers.inc:335 -msgid "Remember the last setting the user gave this filter." -msgstr "Memori la lastan agordon kiun la uzanto donis al ĉi tiu filtrilo." - -#: includes/filter.handlers.inc:346 -msgid "The identifier is required if the filter is\n exposed." -msgstr "La identigilo estas bezonata se la filtrilo estas\n montrata." - -#: includes/filter.handlers.inc:352 -msgid "This identifier is not allowed." -msgstr "Ĉi tiu identigilo ne estas permesata." - -#: includes/filter.handlers.inc:453 -msgid "<Any>" -msgstr "<Any>" - -#: includes/filter.handlers.inc:607 -msgid "Is equal to" -msgstr "Egalas al" - -#: includes/filter.handlers.inc:608 -msgid "Is not equal to" -msgstr "Ne egalas al" - -#: includes/filter.handlers.inc:618 -msgid "Value" -msgstr "Valoro" - -#: includes/filter.handlers.inc:650 -msgid "=" -msgstr "=" - -#: includes/filter.handlers.inc:661 -msgid "Contains" -msgstr "Enhavas" - -#: includes/filter.handlers.inc:662 -msgid "contains" -msgstr "enhavas" - -#: includes/filter.handlers.inc:667 -msgid "Contains any word" -msgstr "Enhavas iun vorton" - -#: includes/filter.handlers.inc:668 -msgid "has word" -msgstr "havas vorton" - -#: includes/filter.handlers.inc:673 -msgid "Contains all words" -msgstr "Enhavas ĉiujn vortojn" - -#: includes/filter.handlers.inc:674 -msgid "has all" -msgstr "havas ĉiujn" - -#: includes/filter.handlers.inc:679 -msgid "Starts with" -msgstr "Komenciĝas per" - -#: includes/filter.handlers.inc:680 -msgid "begins" -msgstr "komenciĝas" - -#: includes/filter.handlers.inc:685 -msgid "Ends with" -msgstr "Finiĝas per" - -#: includes/filter.handlers.inc:686 -msgid "ends" -msgstr "finiĝas" - -#: includes/filter.handlers.inc:691 -msgid "Does not contain" -msgstr "Ne enhavas" - -#: includes/filter.handlers.inc:692 -msgid "!has" -msgstr "!has" - -#: includes/filter.handlers.inc:701 -msgid "Is empty (NULL)" -msgstr "Malplenas (NULL)" - -#: includes/filter.handlers.inc:703 -msgid "empty" -msgstr "malplena" - -#: includes/filter.handlers.inc:707 -msgid "Is not empty (NULL)" -msgstr "Ne malplenas (NULL)" - -#: includes/filter.handlers.inc:709 -msgid "not empty" -msgstr "ne malplena" - -#: includes/filter.handlers.inc:732 -msgid "exposed>" -msgstr "montrata>" - -#: includes/filter.handlers.inc:739 -msgid "Case sensitive" -msgstr "Usklecodistinga" - -#: includes/filter.handlers.inc:741 -msgid "Case sensitive filters may be faster; MySQL might ignore case sensitivity." -msgstr "Usklecodistingaj filtriloj povas esti pli rapidaj; MySQL eble ignoras usklecodistingeco." - -#: includes/filter.handlers.inc:936 -msgid "exposed" -msgstr "montrita" - -#: includes/filter.handlers.inc:968 -msgid "Options" -msgstr "Opcioj" - -#: includes/filter.handlers.inc:990 -msgid "Limit list to selected items" -msgstr "Limigi liston al elektitaj eroj" - -#: includes/filter.handlers.inc:991 -msgid "If checked, the selected items presented to the user will be the only ones selected here." -msgstr "Se ŝaltita, la elektitaj eroj prezentitaj al la uzanto estos la solaj kiuj estas elektitaj ĉi tie. " - -#: includes/filter.handlers.inc:1010 -msgid "Is one of" -msgstr "Estas unu el" - -#: includes/filter.handlers.inc:1011 -msgid "Is not one of" -msgstr "Ne estas unu el" - -#: includes/filter.handlers.inc:1102 -#: modules/system.views.inc:234 -msgid "Unknown" -msgstr "Nekonata" - -#: includes/filter.handlers.inc:1157 -msgid "Is less than" -msgstr "Estas malpli ol" - -#: includes/filter.handlers.inc:1159 -msgid "<" -msgstr "<" - -#: includes/filter.handlers.inc:1163 -msgid "Is less than or equal to" -msgstr "Estas malpli ol aŭ egala al" - -#: includes/filter.handlers.inc:1165 -msgid "<=" -msgstr "<=" - -#: includes/filter.handlers.inc:1177 -msgid "!=" -msgstr "!=" - -#: includes/filter.handlers.inc:1181 -msgid "Is greater than or equal to" -msgstr "Estas pli granda aŭ egala al" - -#: includes/filter.handlers.inc:1183 -msgid ">=" -msgstr ">=" - -#: includes/filter.handlers.inc:1187 -msgid "Is greater than" -msgstr "Estas pli granda ol" - -#: includes/filter.handlers.inc:1189 -msgid ">" -msgstr ">" - -#: includes/filter.handlers.inc:1193 -msgid "Is between" -msgstr "Estas inter" - -#: includes/filter.handlers.inc:1195 -msgid "between" -msgstr "inter" - -#: includes/filter.handlers.inc:1199 -msgid "Is not between" -msgstr "Ne estas inter" - -#: includes/filter.handlers.inc:1201 -msgid "not between" -msgstr "ne inter" - -#: includes/filter.handlers.inc:1292 -msgid "Min" -msgstr "Min" - -#: includes/filter.handlers.inc:1298 -msgid "And max" -msgstr "Kaj maks" - -#: includes/filter.handlers.inc:1298 -msgid "And" -msgstr "Kaj" - -#: includes/filter.handlers.inc:1355 -msgid "@min and @max" -msgstr "@min kaj @max" - -#: includes/filter.handlers.inc:1381 -msgid "Value type" -msgstr "Valora speco" - -#: includes/filter.handlers.inc:1383 -msgid "A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred." -msgstr "Dato en maŝinlegebla formato. CCYY-MM-DD HH:MM:SS estas preferata." - -#: includes/filter.handlers.inc:1384 -msgid "An offset from the current time such as \"+1 day\" or \"-2 hours -30 minutes\"" -msgstr "Deŝovo de la nuna tempo kiel \"+1 tago\" aŭ \"-2 horoj -30 minutoj\"" - -#: includes/filter.handlers.inc:1434 -msgid "Invalid date format." -msgstr "Nevalida datoformato." - -#: includes/filter.handlers.inc:1540 -msgid "Is all of" -msgstr "Estas ĉio el" - -#: includes/filter.handlers.inc:1541 -msgid "Is none of" -msgstr "Estas nenio el" - -#: includes/form.inc:249 -msgid "Validation error, please try again. If this error persists, please contact the site administrator." -msgstr "Validiga eraro, bonvolu reprovi. Se ĉi tiu eraro daŭras, bonvolu kontakti la retejan administranton." - -#: includes/handlers.inc:154 -msgid "!group: !title" -msgstr "!group: !title" - -#: includes/handlers.inc:380 -msgid "Reduce duplicates" -msgstr "Redukti kopiojn" - -#: includes/handlers.inc:381 -msgid "This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution." -msgstr "Ĉi tiu filtrilo povas kaŭzi ke eroj havu pli ol unu el la elektitaj opcioj por aperi kiel kopiaj rezultoj. Se tiu filtrilo kaŭzas ke kopiaj rezultoj okazu, tiu markobutono povas redukti tiujn kopiojn; tamen, ju pli da terminoj ĝi devas serĉi, des malpli rendimenta la informpeto estos, do uzu tion atente. " - -#: includes/plugins.inc:19 -msgid "Default settings for this view." -msgstr "Defaŭltaj agordoj por ĉi tiu aspekto." - -#: includes/plugins.inc:33 -msgid "Display the view as a page, with a URL and menu links." -msgstr "Montri la aspekton kiel paĝo, kun URL kaj menuligiloj." - -#: includes/plugins.inc:44 -msgid "Block" -msgstr "Bloko" - -#: includes/plugins.inc:45 -msgid "Display the view as a block." -msgstr "Montri la aspekton kiel blokon." - -#: includes/plugins.inc:57 -msgid "Attachment" -msgstr "Alkroĉaĵo" - -#: includes/plugins.inc:58 -msgid "Attachments added to other displays to achieve multiple views in the same view." -msgstr "Alkroĉaĵoj aldonitaj al aliaj montroj por atingi multajn aspektojn en la sama aspekto." - -#: includes/plugins.inc:66 -msgid "Display the view as a feed, such as an RSS feed." -msgstr "Montri la aspekton kiel fluo, ekzemple kiel RSS-fluo." - -#: includes/plugins.inc:78 -msgid "Unformatted" -msgstr "Neformatita" - -#: includes/plugins.inc:79 -msgid "Displays rows one after another." -msgstr "Montras vicojn unu post la alia." - -#: includes/plugins.inc:89 -msgid "Displays rows as an HTML list." -msgstr "Montras vicojn kiel HTML-liston." - -#: includes/plugins.inc:97 -msgid "Grid" -msgstr "Krado" - -#: includes/plugins.inc:98 -msgid "Displays rows in a grid." -msgstr "Montras vicojn en krado." - -#: includes/plugins.inc:106 -msgid "Table" -msgstr "Tabelo" - -#: includes/plugins.inc:107 -msgid "Displays rows in a table." -msgstr "Montras vicojn en tabelo." - -#: includes/plugins.inc:117 -msgid "Displays the default summary summary as a list." -msgstr "Montras la defaŭltan resumon kiel liston." - -#: includes/plugins.inc:125 -msgid "Displays the summary unformatted, with option for one after another or inline." -msgstr "Montras la resumon neformatitan, kun opcio por unu post la alia aŭ enteksta." - -#: includes/plugins.inc:132 -msgid "RSS Feed" -msgstr "RSS-Fluo" - -#: includes/plugins.inc:133 -msgid "Generates an RSS feed from a view." -msgstr "Generas RSS-fluon de aspekto." - -#: includes/plugins.inc:143 -#: includes/view.inc:1767 -msgid "Fields" -msgstr "Kampoj" - -#: includes/plugins.inc:144 -msgid "Displays the fields with an optional template." -msgstr "Montras la kampojn kun nedeviga ŝablono." - -#: includes/plugins.inc:154 -msgid "Fixed entry" -msgstr "Fiksita ero" - -#: includes/plugins.inc:158 -msgid "PHP Code" -msgstr "PHP-Kodo" - -#: includes/plugins.inc:168 -msgid "Numeric" -msgstr "Numera" - -#: includes/plugins.inc:809 -msgid "Broken field" -msgstr "Rompita kampo" - -#: includes/plugins.inc:826 -msgid "Basic settings" -msgstr "Bazaj agordoj" - -#: includes/plugins.inc:833 -msgid "Change the name of this display." -msgstr "Ŝanĝi la nomon de ĉi tiu montro." - -#: includes/plugins.inc:845 -msgid "Change the title that this display will use." -msgstr "Ŝanĝu la titolon kiun ĉi tiu montro uzos." - -#: includes/plugins.inc:855 -msgid "Style" -msgstr "Stilo" - -#: includes/plugins.inc:857 -msgid "Change the style plugin." -msgstr "Ŝanĝi la stilan kromprogramon." - -#: includes/plugins.inc:871 -msgid "Row style" -msgstr "Vica stilo" - -#: includes/plugins.inc:873 -msgid "Change the row plugin." -msgstr "Ŝanĝi la vican kromprogramon." - -#: includes/plugins.inc:883 -msgid "Use AJAX" -msgstr "Uzi AJAX-n" - -#: includes/plugins.inc:885 -msgid "Change whether or not this display will use AJAX." -msgstr "Ŝanĝi ĉu aŭ ne ĉi tiu montro uzos AJAX-n." - -#: includes/plugins.inc:892 -msgid "Use pager" -msgstr "Uzi paĝilon" - -#: includes/plugins.inc:893 -msgid "Mini" -msgstr "Mini" - -#: includes/plugins.inc:894 -msgid "Change this display's pager setting." -msgstr "Ŝanĝi la agordon de ĉi tiu montra paĝilo" - -#: includes/plugins.inc:901 -msgid "Items per page" -msgstr "Eroj de paĝo" - -#: includes/plugins.inc:901 -msgid "Items to display" -msgstr "Eroj por montri" - -#: includes/plugins.inc:902 -msgid "Unlimited" -msgstr "Senlima" - -#: includes/plugins.inc:903 -msgid "Change how many items to display." -msgstr "Ŝanĝi kiom da eroj por montri" - -#: includes/plugins.inc:909 -msgid "More link" -msgstr "Plia ligilo" - -#: includes/plugins.inc:911 -msgid "Specify whether this display will provide a \"more\" link." -msgstr "Elekti ĉu ĉi tiu montro provizos \"plian\" ligilon." - -#: includes/plugins.inc:917 -msgid "Distinct" -msgstr "Distinga" - -#: includes/plugins.inc:919 -msgid "Display only distinct items, without duplicates." -msgstr "Montri nur distinktajn erojn, sen kopioj." - -#: includes/plugins.inc:930 -msgid "Unrestricted" -msgstr "Nelimigita" - -#: includes/plugins.inc:938 -msgid "Multiple roles" -msgstr "Multaj roloj" - -#: includes/plugins.inc:950 -msgid "Access" -msgstr "Aliro" - -#: includes/plugins.inc:952 -msgid "Specify access control settings for this display." -msgstr "Indiki alirajn agordojn por ĉi tiu montro." - -#: includes/plugins.inc:972 -msgid "Link display" -msgstr "Ligila montro" - -#: includes/plugins.inc:974 -msgid "Specify which display this display will link to." -msgstr "Indiki al kiu montro ĉi tiu montro ligos." - -#: includes/plugins.inc:979 -msgid "Header" -msgstr "Kaplinio" - -#: includes/plugins.inc:979 -msgid "Footer" -msgstr "Piedlinio" - -#: includes/plugins.inc:979 -msgid "Empty text" -msgstr "Malplena teksto" - -#: includes/plugins.inc:995 -msgid "Unknown/missing filter" -msgstr "Nekonata/mankata filtrilo" - -#: includes/plugins.inc:1003 -msgid "Change this display's !name." -msgstr "Ŝanĝi la !name de la montro." - -#: includes/plugins.inc:1009 -msgid "Theme" -msgstr "Haŭto" - -#: includes/plugins.inc:1010 -msgid "Information" -msgstr "Informoj" - -#: includes/plugins.inc:1011 -msgid "Get information on how to theme this display" -msgstr "Akiri informojn pri kiel haŭtigi ĉi tiun montron" - -#: includes/plugins.inc:1037 -msgid "The name of this display" -msgstr "La nomo de ĉi tiu montro" - -#: includes/plugins.inc:1040 -msgid "This title will appear only in the administrative interface for the View." -msgstr "Ĉi tiu titolo aperos nur en la administra interfaco por la Aspekto." - -#: includes/plugins.inc:1045 -msgid "The title of this view" -msgstr "La titolo de ĉi tiu aspekto" - -#: includes/plugins.inc:1048 -msgid "This title will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc." -msgstr "Ĉi tiu titolo montros kun la aspekto, kie ajn titoloj normale montriĝas; ekzemple, kiel la paĝa titolo, bloka titolo ktp." - -#: includes/plugins.inc:1053 -msgid "Use AJAX when available to load this view" -msgstr "Uzi AJAX-n kiam eblas por ŝarĝi ĉi tiun aspekton" - -#: includes/plugins.inc:1057 -msgid "If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This means the entire page will not refresh. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content." -msgstr "Se ŝaltita, ĉi tiu aspekto uzos AJAX-n mekanismon por paĝado, tabelordigo kaj montrataj filtriloj. Tio signifas ke la tuta paĝo ne refreŝiĝos. Ne estas rekomendita uzi tion se ĉi tiu aspekto estas la ĉefa enhavo de la paĝo ĉar tio malebligos profundajn ligilojn al specifaj paĝoj, sed tre utilas por flanka enhavo." - -#: includes/plugins.inc:1066 -msgid "Use a pager for this view" -msgstr "Uzi paĝilon por ĉi tiu aspekto" - -#: includes/plugins.inc:1069 -msgid "Full pager" -msgstr "Plena paĝilo" - -#: includes/plugins.inc:1069 -msgid "Mini pager" -msgstr "Mini-paĝilo" - -#: includes/plugins.inc:1074 -msgid "Pager element" -msgstr "Paĝila elemento" - -#: includes/plugins.inc:1075 -msgid "Unless you're experiencing problems with pagers related to this view, you should leave this at 0. If using multiple pagers on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add a lot of commas to your URLs, so avoid if possible." -msgstr "Krom se vi spertas problemojn kun paĝiloj rilate al ĉi tiu aspekto, indas lasi ĉe 0. Se vi uzas multajn paĝilojn en unu paĝo, vi eble bezonas ke tiu numero estu pli alta valoro por ke ĝi ne konfliktu kun la ?page=array. Grandaj valoroj aldonos multe da komoj al viaj URL-oj, do evitu se eblas." - -#: includes/plugins.inc:1084 -msgid "The number of items to display per page. Enter 0 for no limit." -msgstr "La nombro da eroj por montri en ĉiu paĝo. Enmetu 0 por neniu limo." - -#: includes/plugins.inc:1089 -msgid "Offset" -msgstr "Deŝovo" - -#: includes/plugins.inc:1090 -msgid "The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed. Offset can not be used if items to display is 0; instead use a very large number there." -msgstr "La nombro da eroj por preterpasi. Ekzemple, se ĉi tiu kampo estas 3, la unuaj 3 eroj preterpasiĝos kaj ne montriĝos. Deŝovo ne povas esti uzata se la montro estas 0; anstataŭe uzu tre grandan numeron tie." - -#: includes/plugins.inc:1095 -msgid "Add a more link to the bottom of the display." -msgstr "Aldonu "pli" ligilon sube de la montro. " - -#: includes/plugins.inc:1098 -msgid "Create more link" -msgstr "Kreu "pli" ligilon" - -#: includes/plugins.inc:1099 -msgid "This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above." -msgstr "Tio aldonos "pli" ligilon sube de ĉi tiu montro, kiu ligos al la paĝa aspekto. Se vi havas pli ol unu paĝa aspekto, la ligilo iros al la montro indikita en 'Ligila montro' supre." - -#: includes/plugins.inc:1108 -msgid "This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution." -msgstr "Tio kaŭzos ke la aspekto montros nur malsamajn erojn. Se estas multaj samaj eroj, ĉiu montriĝos nur unufoje. Vi povas uzi ĉi tion por provi forigi kopiojn de aspekto, kvankam tio ne ĉiam funkcias. Rimarku ke tio povas malrapidigi informpetojn, do uzu ĝin zorgeme." - -#: includes/plugins.inc:1113 -msgid "Access restrictions" -msgstr "Aliraj limigoj" - -#: includes/plugins.inc:1130 -msgid "By role" -msgstr "De rolo" - -#: includes/plugins.inc:1130 -msgid "By permission" -msgstr "De permeso" - -#: includes/plugins.inc:1139 -msgid "Role" -msgstr "Rolo" - -#: includes/plugins.inc:1142 -msgid "Only the checked roles will be able to access this display. Note that users with \"access all views\" can see any view, regardless of role." -msgstr "Nur la elektitaj roloj eblos aliri ĉi tiun montron. Rimarku ke uzantoj kun \"aliri ĉiujn aspektojn\" povas vidi ĉiujn aspektojn, egale de la rolo." - -#: includes/plugins.inc:1159 -msgid "Permission" -msgstr "Permeso" - -#: includes/plugins.inc:1161 -msgid "Only users with the selected permission flag will be able to access this display. Note that users with \"access all views\" can see any view, regardless of other permissions." -msgstr "Nur uzantoj kun la elektita permeso povos aliri ĉi tiun montron. Rimarku ke uzantoj kun la permeso \"aliri ĉiujn aspektojn\" povas vidi ĉiujn aspektojn, egale de aliaj permesoj." - -#: includes/plugins.inc:1172 -msgid "Display even if view has no result" -msgstr "Montru eĉ se la aspekto ne havas rezulton" - -#: includes/plugins.inc:1179 -msgid "Text to display at the top of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Teksto por montri supre de la aspekto. Eble enhavas klarigon aŭ ligilojn aŭ kion ajn vi volas. Nedeviga." - -#: includes/plugins.inc:1195 -msgid "Text to display beneath the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Teksto por montri sub la aspekto. Eblas enhavas klarigon aŭ ligiloj aŭ kion ajn vi volas. Nedeviga." - -#: includes/plugins.inc:1206 -msgid "Text to display if the view has no results. Optional." -msgstr "Teksto por montri se la aspekto ne havas rezultojn. Nedeviga." - -#: includes/plugins.inc:1212 -msgid "How should this view be styled" -msgstr "Kiel ĉi tiu aspekto devas esti stilita." - -#: includes/plugins.inc:1218 -msgid "If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary." -msgstr "Se la stilo vi elektis havas agordojn, certe klaku la butonon de agordoj kiu aperos apud ĝi en la resumo de la Aspekto." - -#: includes/plugins.inc:1226 -msgid "You may also adjust the !settings for the currently selected style by clicking on the icon." -msgstr "Vi ankaŭ povas ŝanĝi la !settings por la nune elektita stilo klakante sur la bildsimbolo." - -#: includes/plugins.inc:1226 -msgid "settings" -msgstr "agordoj" - -#: includes/plugins.inc:1232 -msgid "Style options" -msgstr "Stilaj opcioj" - -#: includes/plugins.inc:1244 -msgid "Row style options" -msgstr "Stilaj opcioj de vico" - -#: includes/plugins.inc:1256 -msgid "How should each row in this view be styled" -msgstr "Kiel ĉiu vico en ĉi tiu aspekto devas esti stilita" - -#: includes/plugins.inc:1269 -msgid "You may also adjust the !settings for the currently selected row style by clicking on the icon." -msgstr "Vi ankaŭ povas ŝanĝi la agordojn por la nune elektita vica stilo klakante la ikonon." - -#: includes/plugins.inc:1275 -msgid "Which display to use for path" -msgstr "Kiun montron por uzi kiel vojo" - -#: includes/plugins.inc:1284 -msgid "Which display to use to get this display's path for things like summary links, rss feed links, more links, etc." -msgstr "Kiun montron por uzi por preni la vojon de la montro por aferoj kiel resumaj ligiloj, rss-fluaj ligiloj, pliaj ligiloj ktp." - -#: includes/plugins.inc:1289 -msgid "Theming information" -msgstr "Haŭtaj informoj" - -#: includes/plugins.inc:1297 -msgid "Display output" -msgstr "Eligo de montro" - -#: includes/plugins.inc:1301 -msgid "Alternative display output" -msgstr "Alternativa eligo de montro" - -#: includes/plugins.inc:1308 -msgid "Style output" -msgstr "Eligo de stilo" - -#: includes/plugins.inc:1312 -msgid "Alternative style" -msgstr "Alternative stilo" - -#: includes/plugins.inc:1319 -msgid "Row style output" -msgstr "Eligo de vica stilo" - -#: includes/plugins.inc:1323 -msgid "Alternative row style" -msgstr "Alternativa vica stilo" - -#: includes/plugins.inc:1331 -msgid "Field @field (ID: @id)" -msgstr "Kampo @field (ID: @id)" - -#: includes/plugins.inc:1339 -msgid "This section lists all possible templates for the display plugin and for the style plugins, ordered roughly from the least specific to the most specific. The active template for each plugin -- which is the most specific template found on the system -- is highlighted in bold." -msgstr "Ĉi tiu sekcio listigas ĉiujn eblajn ŝablonojn por la montra kromprogramo kaj por la stilaj kromprogramoj, ordigitaj pli malpli de la malplej specifaj ĝis la plej specifaj. La aktiva ŝablono por ĉiu kromprogramo -- kiu estas la plej specifa ŝablonon trovita en la sistemo -- estas markita grase." - -#: includes/plugins.inc:1354 -msgid "Rescan template files" -msgstr "Reskani ŝablonajn dosierojn" - -#: includes/plugins.inc:1360 -msgid "<strong>Important!</strong> When adding, removing, or renaming template files, it is necessary to make Drupal aware of the changes by making it rescan the files on your system. By clicking this button you clear Drupal's theme registry and thereby trigger this rescanning process. The highlighted templates above will then reflect the new state of your system." -msgstr "<strong>Grave!</strong> Kiam aldonante, forigante, aŭ renomante ŝablonajn dosierojn, necesas atentigi Drupalon de la ŝanĝoj per reskanado de la dosieroj en via sistemo. Klakante ĉi tiun butonon, vi malplenigas la registrejon de la Drupala haŭto kaj tiel ekigas la reskanan procezon. La markitaj ŝablonoj supre tiam reflektos la novan staton de via sistemo." - -#: includes/plugins.inc:1366 -msgid "Theming information (display)" -msgstr "Haŭtaj informoj (montro)" - -#: includes/plugins.inc:1367 -msgid "Back to !info." -msgstr "Reen al !info." - -#: includes/plugins.inc:1367 -msgid "theming information" -msgstr "haŭtaj informoj" - -#: includes/plugins.inc:1370 -msgid "This display has no theming information" -msgstr "Ĉi tiu ŝablono ne havas haŭtajn informojn" - -#: includes/plugins.inc:1373 -msgid "This is the default theme template used for this display." -msgstr "Tio estas la defaŭlta haŭta ŝablono uzata por ĉi tiu montro." - -#: includes/plugins.inc:1379 -msgid "This is an alternative template for this display." -msgstr "Tio estas alternativa ŝablono por ĉi tiu montro." - -#: includes/plugins.inc:1393 -msgid "Theming information (style)" -msgstr "Haŭtaj informoj (stilo)" - -#: includes/plugins.inc:1399 -msgid "This display has no style theming information" -msgstr "Ĉi tiu montro ne havas informojn de stila haŭtado" - -#: includes/plugins.inc:1402 -msgid "This is the default theme template used for this style." -msgstr "Tio estas la defaŭlta haŭta ŝablono uzata por ĉi tiu stilo." - -#: includes/plugins.inc:1408 -msgid "This is an alternative template for this style." -msgstr "Tio estas alternative ŝablono por ĉi tiu stilo." - -#: includes/plugins.inc:1422 -msgid "Theming information (row style)" -msgstr "Haŭtaj informoj (vica stilo)" - -#: includes/plugins.inc:1428 -msgid "This display has no row style theming information" -msgstr "Ĉi tiu montro ne havas informojn de vica stila haŭtado" - -#: includes/plugins.inc:1431 -msgid "This is the default theme template used for this row style." -msgstr "Tio estas la defaŭlta haŭta ŝablono uzata por ĉi tiu vica stilo." - -#: includes/plugins.inc:1437 -msgid "This is an alternative template for this row style." -msgstr "Tio estas alternativa ŝablono por ĉi tiu vica stilo." - -#: includes/plugins.inc:1494 -msgid "File found in folder @template-path" -msgstr "Dosiero trovita en dosierujo @template-path" - -#: includes/plugins.inc:1498 -msgid "(File not found, in folder @template-path)" -msgstr "(Dosiero ne trovita, en dosierujo @template-path)" - -#: includes/plugins.inc:1525 -msgid "You must select at least one role if type is \"by role\"" -msgstr "Vi devas elektia almenaŭ unu rolon se speco estas \"de rolo\"" - -#: includes/plugins.inc:1633 -msgid "Override" -msgstr "Anstataŭigi" - -#: includes/plugins.inc:1638 -msgid "Status: using default values." -msgstr "Stato: uzante defaŭltajn valorojn." - -#: includes/plugins.inc:1642 -msgid "Update default display" -msgstr "Ĝisdatigi defaŭltan montron" - -#: includes/plugins.inc:1647 -msgid "Use default" -msgstr "Uzu defaŭltan" - -#: includes/plugins.inc:1652 -msgid "Status: using overridden values." -msgstr "Stato: uzante anstataŭigitajn valorojn." - -#: includes/plugins.inc:1842 -msgid "Display @display uses fields but there are none defined for it." -msgstr "Montro @display uzas kampojn, sed ne estas iuj difinitaj por ĝi." - -#: includes/plugins.inc:1846 -msgid "Display @display uses path but path is undefined." -msgstr "Montro @display uzas vojon, sed vojo estas nedifinita." - -#: includes/plugins.inc:1851 -msgid "Display @display has an invalid style plugin." -msgstr "Montro @display havas nevalidan stilan kromprogramon." - -#: includes/plugins.inc:2084 -msgid "Page settings" -msgstr "Paĝaj agordoj" - -#: includes/plugins.inc:2109 -msgid "No menu" -msgstr "Neniu menuo" - -#: includes/plugins.inc:2112 -msgid "Normal: @title" -msgstr "Normala: @title" - -#: includes/plugins.inc:2116 -msgid "Tab: @title" -msgstr "Langeto: @title" - -#: includes/plugins.inc:2126 -msgid "Menu" -msgstr "Menuo" - -#: includes/plugins.inc:2132 -msgid "Change settings for the parent menu" -msgstr "Ŝanĝi agordojn por la patra menuo" - -#: includes/plugins.inc:2145 -msgid "The menu path or URL of this view" -msgstr "La menua vojo aŭ URL de ĉi tiu aspekto" - -#: includes/plugins.inc:2149 -msgid "This view will be displayed by visiting this path on your site. You may use \"%\" in your URL to represent values that will be used for arguments: For example, \"node/%/feed\"." -msgstr "Ĉi tiu aspekto montriĝos vizitante ĉi tiun vojon en via retejo. Vi povas uzi \"%\" en via URL por reprezenti valorojn kiuj estos uzataj por argumentoj: Ekzemple, \"node/%f/feed\"." - -#: includes/plugins.inc:2155 -msgid "Menu item entry" -msgstr "Menuera enskribo" - -#: includes/plugins.inc:2172 -msgid "No menu entry" -msgstr "Neniu menua enskribo" - -#: includes/plugins.inc:2173 -msgid "Normal menu entry" -msgstr "Normala menua enskribo" - -#: includes/plugins.inc:2174 -msgid "Menu tab" -msgstr "Menua langeto" - -#: includes/plugins.inc:2175 -msgid "Default menu tab" -msgstr "Defaŭlta menua langeto" - -#: includes/plugins.inc:2184 -msgid "If set to normal or tab, enter the text to use for the menu item." -msgstr "Se agordita al normala aŭ langeto, enmetu la tekston por uzi por la menuero." - -#: includes/plugins.inc:2193 -msgid "If set to tab, enter the weight of the item. The lower the weight the higher/further left it will appear." -msgstr "Se agordita al langeto, enmetu la pezon de la ero. Ju pli malalta la pezo, des pli alta/pli dekstre ĝi aperos." - -#: includes/plugins.inc:2199 -msgid "Default tab options" -msgstr "Defaŭltaj langetaj opcioj" - -#: includes/plugins.inc:2208 -msgid "When providing a menu item as a tab, Drupal needs to know what the parent menu item of that tab will be. Sometimes the parent will already exist, but other times you will need to have one created. The path of a parent item will always be the same path with the last part left off. i.e, if the path to this view is <em>foo/bar/baz</em>, the parent path would be <em>foo/bar</em>." -msgstr "Kiam provizante menueron kiel langeto, Drupalo devas scii kio estos la gepatra menuero de tiu langeto. Kelkfoje la gepatro jam ekzistos, sed alifoje vi devos krei ĝin. La vojo de gepatra ero ĉiam estos la sama vojo kun la lasta parto for. Ekz, se la vojo de ĉi tiu vojo estas <em>foo/bar/baz</em>, la patra vojo estos <em>foo/bar</em>" - -#: includes/plugins.inc:2219 -msgid "Parent menu item" -msgstr "Patra menuero" - -#: includes/plugins.inc:2221 -msgid "Already exists" -msgstr "Jam ekzistas" - -#: includes/plugins.inc:2221 -msgid "Normal menu item" -msgstr "Normala menuero" - -#: includes/plugins.inc:2229 -msgid "If creating a parent menu item, enter the title of the item." -msgstr "Se kreante patran menueron, enmetu la titolon de la ero." - -#: includes/plugins.inc:2235 -msgid "Tab weight" -msgstr "Langeta pezo" - -#: includes/plugins.inc:2239 -msgid "If the parent menu item is a tab, enter the weight of the tab. The lower the number, the more to the left it will be." -msgstr "Se la patra menuero estas langeto, enmetu la pezon de la langeto. Ju pli malalta la numero, des pli dekstre ĝi estos." - -#: includes/plugins.inc:2253 -msgid "\"$arg\" is no longer supported. Use % instead." -msgstr "\"$arg\" ne plu estas subtenata. Anstataŭe uzu %." - -#: includes/plugins.inc:2263 -msgid "Views cannot create normal menu items for paths with a % in them." -msgstr "Aspektoj ne povas krei normalajn menuerojn por vojoj kun % en ili." - -#: includes/plugins.inc:2270 -msgid "A display whose path ends with a % cannot be a tab." -msgstr "Montro kies vojo finiĝas per % ne povas esti langeto." - -#: includes/plugins.inc:2275 -msgid "Title is required for this menu type." -msgstr "Titolo estas bezonata por ĉi tiu speco de menuo." - -#: includes/plugins.inc:2306 -msgid "Display @display is set to use a menu but the menu title is not set." -msgstr "Montro @display estas agordita por uzi menuon, sed ne ekzistas titolo de la menuo." - -#: includes/plugins.inc:2312 -msgid "Display @display is set to use a parent menu but the parent menu title is not set." -msgstr "Montro @display estas agordi por uzi gepatran menuon, sed ne ekzistas gepatra titolo de la menuo." - -#: includes/plugins.inc:2378 -msgid "Block settings" -msgstr "Agordoj de bloko" - -#: includes/plugins.inc:2392 -msgid "Admin" -msgstr "Admin" - -#: includes/plugins.inc:2416 -msgid "Do not cache" -msgstr "Ne kaŝmemorigu" - -#: includes/plugins.inc:2417 -msgid "Cache once for everything (global)" -msgstr "Kaŝmemorigu unufoje por ĉio (globala)" - -#: includes/plugins.inc:2418 -msgid "Per page" -msgstr "Por paĝo" - -#: includes/plugins.inc:2419 -msgid "Per role" -msgstr "Por rolo" - -#: includes/plugins.inc:2420 -msgid "Per role per page" -msgstr "Por rolo por paĝo" - -#: includes/plugins.inc:2421 -msgid "Per user" -msgstr "Por uzanto" - -#: includes/plugins.inc:2422 -msgid "Per user per page" -msgstr "Por uzanto por paĝo" - -#: includes/plugins.inc:2447 -msgid "Block admin description" -msgstr "Priskribo de bloka administranto" - -#: includes/plugins.inc:2450 -msgid "This will appear as the name of this block in administer >> site building >> blocks." -msgstr "Tio aperos kiel la nomo de ĉi tiu bloko en administri >> reteja konstruado >> blokoj." - -#: includes/plugins.inc:2455 -msgid "Block caching type" -msgstr "Bloka speco de kaŝmemorado" - -#: includes/plugins.inc:2459 -msgid "This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed." -msgstr "Tio agordas la defaŭltan staton por la enkonstruita blokokaŝada metodo de Drupalo; tio bezonatas ke kaŝmemorado estu ŝaltita en bloka administrado, kaj zorgi ĉar vi havas malmulte da rego super kiam tiu kaŝmemoro estas malplenigita." - -#: includes/plugins.inc:2511 -msgid "Before" -msgstr "Antaŭ" - -#: includes/plugins.inc:2512 -msgid "After" -msgstr "Post" - -#: includes/plugins.inc:2513 -msgid "Both" -msgstr "Ambaŭ" - -#: includes/plugins.inc:2533 -msgid "Attachment settings" -msgstr "Alkroĉaj agordoj" - -#: includes/plugins.inc:2538 -msgid "Inherit arguments" -msgstr "Heredaj argumentoj" - -#: includes/plugins.inc:2544 -msgid "Inherit exposed filters" -msgstr "Heredi montratajn filtrilojn" - -#: includes/plugins.inc:2550 -msgid "Position" -msgstr "Pozicio" - -#: includes/plugins.inc:2556 -msgid "Multiple displays" -msgstr "Multajn montrojn" - -#: includes/plugins.inc:2571 -msgid "Attach to" -msgstr "Alkroĉi al" - -#: includes/plugins.inc:2588 -msgid "Inherit" -msgstr "Heredi" - -#: includes/plugins.inc:2589 -msgid "Should this display inherit its arguments from the parent display to which it is attached?" -msgstr "Ĉu ĉi tiu montro heredu ĝiajn argumentojn de la patra montro al kiu ĝi estas alkroĉita?" - -#: includes/plugins.inc:2598 -msgid "Should this display inherit its exposed filter values from the parent display to which it is attached?" -msgstr "Ĉu ĉi tiu montro heredu ĝiajn montratajn filtrajn valorojn de la patra montro al kiu ĝi estas alkroĉita?" - -#: includes/plugins.inc:2606 -msgid "Attach before or after the parent display?" -msgstr "Alkroĉi antaŭ aŭ post la patra montro?" - -#: includes/plugins.inc:2621 -msgid "Select which display or displays this should attach to." -msgstr "Elektu kiun montron aŭ montrojn al kiu ĝi devas alkroĉi." - -#: includes/plugins.inc:2776 -msgid "Feed settings" -msgstr "Fluaj agordoj" - -#: includes/plugins.inc:2780 -msgid "Using the site name" -msgstr "Uzante la retejan nomon" - -#: includes/plugins.inc:2822 -msgid "Use the site name for the title" -msgstr "Uzi la retejan nomon por la titolo" - -#: includes/plugins.inc:2845 -msgid "This view will be displayed by visiting this path on your site. It is recommended that the path be something like \"path/%/%/feed\" or \"path/%/%/rss.xml\", putting one % in the path for each argument you have defined in the view." -msgstr "Ĉi tiu aspekto montriĝos per vizito de ĉi tiu vojo en via retejo. Estas rekomentia ke la vojo estu kiel \"vojo/%/%/fluo\" aŭ "\vojo/%/%/rss.xml\", metante unu % en la vojo por ĉiu argumento kiun vi difinis en la aspekto. " - -#: includes/plugins.inc:2990 -msgid "Grouping field" -msgstr "Grupigi kampon" - -#: includes/plugins.inc:2993 -msgid "You may optionally specify a field by which to group the records. Leave blank to not group." -msgstr "Vi povas nedevige indiki kampon per kiu grupigi la rikordojn. Lasu malplena por ne grupigi." - -#: includes/plugins.inc:3081 -msgid "Style @style requires a row style but the row plugin is invalid." -msgstr "Stilo @style bezonas vican stilon, sed la vica kromprogramo estas nevalida." - -#: includes/plugins.inc:3128 -msgid "List type" -msgstr "Lista speco" - -#: includes/plugins.inc:3158 -msgid "Number of columns" -msgstr "Nombro da kolumnoj" - -#: includes/plugins.inc:3163 -msgid "Alignment" -msgstr "Ĝisrandigo" - -#: includes/plugins.inc:3164 -msgid "Horizontal" -msgstr "Horizontale" - -#: includes/plugins.inc:3164 -msgid "Vertical" -msgstr "Vertikale" - -#: includes/plugins.inc:3166 -msgid "Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down." -msgstr "Horizontala ĝisrandigo lokigos erojn komencante en la supra maldesktra angulo kaj iras dekstren. Vertikala ĝisrandigo lokigos erojn en la supra maldekstra angulo kaj subiras." - -#: includes/plugins.inc:3285 -msgid "You need at least one field before you can configure your table settings" -msgstr "Vi bezonas almenaŭ unu kampon antaŭ ol vi povas agordi vian tabelon." - -#: includes/plugins.inc:3294 -msgid "Override normal sorting if click sorting is used" -msgstr "Anstataŭigi normalan ordigon se klaka ordigo estas uzata" - -#: includes/plugins.inc:3300 -msgid "Enable Drupal style \"sticky\" table headers (Javascript)" -msgstr "Ŝalti Drupal-stilan \"fiksa\" tabelaj kaplinioj (JavaSkripto)" - -#: includes/plugins.inc:3302 -msgid "(Sticky header effects will not be active for preview below, only on live output.)" -msgstr "(Fiksita kapliniaj efikoj ne aktivos por la antaŭvido sube, nur en viva eligo.)" - -#: includes/plugins.inc:3307 -msgid "Default sort order" -msgstr "Defaŭlta ordiga sinsekvo" - -#: includes/plugins.inc:3308 -#: includes/sort.handlers.inc:60 -msgid "Ascending" -msgstr "Kreskante" - -#: includes/plugins.inc:3308 -#: includes/sort.handlers.inc:60 -msgid "Descending" -msgstr "Malkreskante" - -#: includes/plugins.inc:3310 -msgid "If a default sort order is selected, what order should it use by default." -msgstr "Se defaŭlta ordiga sinsekvo estas elektita, kiun ordigon ĝi uzu defaŭlte." - -#: includes/plugins.inc:3396 -msgid "Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column click sortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section." -msgstr "Lokigi kampojn en kolumnojn; vi povas kombini multajn kampojn en la saman kolumnon. Se vi faras, la disigilo en la kolumno indikita estos uzata por disigi la kampojn. Kontrolu la ordigeblan skatolon por certigi ke tiu kolumo ordigeblos, kaj ŝaltu la defaŭltan ordigan radion por determini kiun kolumnon ordiĝos defaŭlte, se iun. Vi povas regi kolumnan sinsekvon kaj kampajn enketojn en la kampa sekcio." - -#: includes/plugins.inc:3421 -#: includes/view.inc:1769 -msgid "Field" -msgstr "Kampo" - -#: includes/plugins.inc:3422 -msgid "Column" -msgstr "Propra" - -#: includes/plugins.inc:3425 -msgid "Sortable" -msgstr "Ordigebla" - -#: includes/plugins.inc:3429 -msgid "Default sort" -msgstr "Defaŭlta ordigo" - -#: includes/plugins.inc:3488 -msgid "Display record count with link" -msgstr "Montri rikordan kalkulon kun ligilo" - -#: includes/plugins.inc:3493 -msgid "Override number of items to display" -msgstr "Anstataŭigi nombron da eroj por montri" - -#: includes/plugins.inc:3530 -msgid "Display items inline" -msgstr "Montri erojn entekste" - -#: includes/plugins.inc:3580 -msgid "Use the site mission for the description" -msgstr "Uzu la retejan mision por la priskribo" - -#: includes/plugins.inc:3584 -msgid "RSS description" -msgstr "RSS-priskribo" - -#: includes/plugins.inc:3586 -msgid "This will appear in the RSS feed itself." -msgstr "Ĉi tio aperos en la RSS-fluo mem." - -#: includes/plugins.inc:3709 -msgid "Inline fields" -msgstr "Entekstaj kampoj" - -#: includes/plugins.inc:3712 -msgid "Inline fields will be displayed next to each other rather than one after another." -msgstr "Entekstaj kampoj montriĝos apud unu la alia anstataŭ unu post la alia." - -#: includes/plugins.inc:3720 -msgid "The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field." -msgstr "La disigilo povas lokiĝi inter entekstaj kampoj por certigi ke ili ne aperas tuj apud unu la alia. Vi povas uzi HTML-n en ĉi tiu kampo." - -#: includes/plugins.inc:3770 -msgid "Default argument" -msgstr "Defaŭlta argumento" - -#: includes/plugins.inc:3792 -msgid "Note: you do not have permission to modify this. If you change the default argument type, this setting will be lost and you will NOT be able to get it back." -msgstr "Notu: vi ne havas permeson modifi ĉi tion. Se vi ŝanĝas la defaŭltan argumentan specon, ĉi tiu agordo estos perdita kaj vi NE povos rehavi ĝin." - -#: includes/plugins.inc:3813 -msgid "PHP argument code" -msgstr "Argumenta kodo de PHP" - -#: includes/plugins.inc:3816 -msgid "Enter PHP code that returns a value to use for this argument. Do not use <?php ?>. You must return only a single value for just this argument." -msgstr "Enmetu PHP-kodon kiu revenigas valoron por uzi por ĉi tiu argumento. Ne uzu <?php ?> Vi devas revenigi nur unu valoron por precize ĉi tiu argumento." - -#: includes/plugins.inc:3896 -msgid "Note: you do not have permission to modify this. If you change the validator, this setting will be lost and you will NOT be able to get it back." -msgstr "Rimarku: vi ne havas permeson modifi ĉi tion. Se vi ŝanĝas la validigilon, ĉi tiu agordo estos perdita kaj vi NE povos rehavi ĝin." - -#: includes/plugins.inc:3921 -msgid "PHP validate code" -msgstr "Validigi kodon de PHP" - -#: includes/plugins.inc:3923 -msgid "Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be \"$argument\" and the view will be \"$view\". You may change the argument by setting \"$handler->argument\"." -msgstr "Enmetu PHP-kodon kiu revenas TRUE aŭ FALSE. Neniu reveno estas la sama kiel FALSE, do CERTE revenigu ion se vi volas volas deklari la argumenton nevalida. Ne uzu <?php ?>. La argumento por validigi estos \"$argument\" kaj la montro estos \"$view\". Vi rajtas ŝanĝi la argumenton agordante \"$handler->argument\"." - -#: includes/relationship.handlers.inc:80 -msgid "The label for this relationship that will be displayed only administratively." -msgstr "La enketo por ĉi tiu rilato kiu montriĝos nur administre." - -#: includes/relationship.handlers.inc:85 -msgid "Require this relationship" -msgstr "Bezoni ĉi tiun rilaton" - -#: includes/relationship.handlers.inc:86 -msgid "If required, items that do not contain this relationship will not appear." -msgstr "Se bezonata, eroj kiuj ne enhavas ĉi tiun rilaton ne aperos." - -#: includes/sort.handlers.inc:43 -msgid "asc" -msgstr "kresk" - -#: includes/sort.handlers.inc:47 -msgid "desc" -msgstr "malkresk" - -#: includes/sort.handlers.inc:59 -msgid "Sort order" -msgstr "Ordiga sinsekvo" - -#: includes/sort.handlers.inc:108 -msgid "views_handler_sort_formula missing default: @formula" -msgstr "views_handler_sort_formula mankante defaŭlto: @formula" - -#: includes/sort.handlers.inc:148 -msgid "Granularity" -msgstr "Granuleco" - -#: includes/sort.handlers.inc:150 -msgid "Second" -msgstr "Sekundo" - -#: includes/sort.handlers.inc:151 -msgid "Minute" -msgstr "Minuto" - -#: includes/sort.handlers.inc:152 -msgid "Hour" -msgstr "Horo" - -#: includes/sort.handlers.inc:153 -msgid "Day" -msgstr "Tago" - -#: includes/sort.handlers.inc:154 -msgid "Month" -msgstr "Monato" - -#: includes/sort.handlers.inc:155 -msgid "Year" -msgstr "Jaro" - -#: includes/sort.handlers.inc:157 -msgid "The granularity is the smallest unit to use when determining whether two dates are the same; for example, if the granularity is \"Year\" then all dates in 1999, regardless of when they fall in 1999, will be considered the same date." -msgstr "La granuleco estas la plej malgranda unuo por uzi kiam determinante ĉu du datoj estas la samaj; ekzemple, se la granuleco estas \"Jaro\" tiam ĉiuj datoj en 1999, egale de kiam ili estas en 1999, estos konsiderataj la sama dato." - -#: includes/view.inc:255 -msgid "set_display called with invalid display id @display" -msgstr "set_display vokita kun nevalida montra id @display" - -#: includes/view.inc:995 -msgid "Home" -msgstr "Hejmo" - -#: includes/view.inc:1768 -msgid "fields" -msgstr "kampoj" - -#: includes/view.inc:1770 -msgid "field" -msgstr "kampo" - -#: includes/view.inc:1775 -msgid "arguments" -msgstr "argumentoj" - -#: includes/view.inc:1776 -msgid "Argument" -msgstr "Argumento" - -#: includes/view.inc:1781 -msgid "Sort criteria" -msgstr "Ordiga kriterioj" - -#: includes/view.inc:1782 -msgid "sort criteria" -msgstr "ordiga kriterioj" - -#: includes/view.inc:1783 -msgid "Sort criterion" -msgstr "Ordiga kriterio" - -#: includes/view.inc:1784 -msgid "sort criterion" -msgstr "ordiga kriterio" - -#: includes/view.inc:1788 -msgid "Filters" -msgstr "Filtriloj" - -#: includes/view.inc:1789 -msgid "filters" -msgstr "filtriloj" - -#: includes/view.inc:1790 -msgid "Filter" -msgstr "Filtrilo" - -#: includes/view.inc:1791 -msgid "filter" -msgstr "filtrilo" - -#: includes/view.inc:1796 -msgid "Relationships" -msgstr "Rilatoj" - -#: includes/view.inc:1797 -msgid "relationships" -msgstr "rilatoj" - -#: js/ajax.js:0 -#: js/ajax_view.js:0 -msgid "An error occurred at " -msgstr "Eraro okazis ĉe" - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Mismatching fragment identifier." -msgstr "jQuery UI Langetoj: Miskongrua fragmenta identigilo." - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Not enough arguments to add tab." -msgstr "jQuery UI Langetoj: Ne sufiĉe da argumentoj por aldoni langeton." - -#: modules/book.views.inc:21 -msgid "Book" -msgstr "Libro" - -#: modules/book.views.inc:30 -msgid "Top level book" -msgstr "Plej altnivela libro" - -#: modules/book.views.inc:31 -msgid "The book the node is in." -msgstr "La libro en kiu la nodo estas." - -#: modules/book.views.inc:58 -msgid "The weight of the book page." -msgstr "La pezo de la libra paĝo." - -#: modules/book.views.inc:69 -#: modules/comment.views.inc:202 -#: modules/taxonomy.views.inc:310 -msgid "Depth" -msgstr "Profundeco" - -#: modules/book.views.inc:70 -msgid "The depth of the book page in the hierarchy; top level books have a depth of 1." -msgstr "La profundeco de la libra paĝo en la hierarkio; plej altnivelaj libroj havas profundecon de 1." - -#: modules/book.views.inc:87 -msgid "Hierarchy" -msgstr "Hierarkio" - -#: modules/book.views.inc:88 -msgid "The order of pages in the book hierarchy. Remember to sort by weight too if you want exactly the right order." -msgstr "La sinsekvo de paĝoj en la libra hierarkio. Memoru ordigi ankaŭ laŭ pezo se vi volas precize la ĝustan sinsekvon." - -#: modules/book.views.inc:110 -msgid "Parent" -msgstr "Gepatra" - -#: modules/book.views.inc:111 -msgid "The parent book node." -msgstr "La gepatra libra nodo." - -#: modules/book.views.inc:116 -msgid "Book parent" -msgstr "Libra gepatro" - -#: modules/comment.views.inc:22 -msgid "Comment" -msgstr "Komento" - -#: modules/comment.views.inc:27 -msgid "Comments are responses to node content." -msgstr "Komentoj estas respondoj al noda enhavo." - -#: modules/comment.views.inc:45 -msgid "The title of the comment." -msgstr "La titolo de la komento." - -#: modules/comment.views.inc:63 -#: modules/node.views.inc:366 -msgid "Body" -msgstr "Korpo" - -#: modules/comment.views.inc:64 -msgid "The text of the comment." -msgstr "La teksto de la komento." - -#: modules/comment.views.inc:76 -msgid "ID" -msgstr "ID" - -#: modules/comment.views.inc:77 -msgid "The comment ID of the field" -msgstr "La komenta ID de la kampo" - -#: modules/comment.views.inc:95 -msgid "Author" -msgstr "Aŭtoro" - -#: modules/comment.views.inc:96 -msgid "The name of the poster." -msgstr "La nomo de la afiŝinto." - -#: modules/comment.views.inc:114 -msgid "Author's website" -msgstr "Aŭtora retejo" - -#: modules/comment.views.inc:115 -msgid "The website address of the comment's author. Can be a link. The homepage can also be linked with the Name field. Will be empty if posted by a registered user." -msgstr "La reteja adreso de la komenta aŭtoro. Povas esti ligilo. La hejmpaĝo ankaŭ povas esti ligita kun la Noma kampo. Malplenos se afiŝita de registrita uzanto." - -#: modules/comment.views.inc:133 -#: modules/node.views.inc:107 -msgid "Post date" -msgstr "Afiŝa dato" - -#: modules/comment.views.inc:134 -msgid "Date and time of when the comment was posted." -msgstr "Dato kaj tempo kiam la komento estis afiŝita." - -#: modules/comment.views.inc:149 -msgid "In moderation" -msgstr "Prizorgata" - -#: modules/comment.views.inc:150 -msgid "Whether or not the comment is currently in moderation." -msgstr "Ĉu aŭ ne la komento estas nun en moderado." - -#: modules/comment.views.inc:157 -#: modules/node.views.inc:203 -msgid "Moderated" -msgstr "Prizorgita" - -#: modules/comment.views.inc:167 -msgid "View link" -msgstr "Vidi ligilon" - -#: modules/comment.views.inc:168 -msgid "Provide a simple link to view the comment." -msgstr "Provizi simplan ligilon por vidi la komenton." - -#: modules/comment.views.inc:176 -#: modules/node.views.inc:249 -#: modules/user.views.inc:204 -msgid "Edit link" -msgstr "Redakti ligilon" - -#: modules/comment.views.inc:177 -msgid "Provide a simple link to edit the comment." -msgstr "Provizi simplan ligilon por redakti la komenton." - -#: modules/comment.views.inc:185 -#: modules/node.views.inc:257 -#: modules/user.views.inc:212 -msgid "Delete link" -msgstr "Forigi ligilon" - -#: modules/comment.views.inc:186 -msgid "Provide a simple link to delete the comment." -msgstr "Provizi simplan ligilon por forigi la komenton." - -#: modules/comment.views.inc:194 -msgid "Reply-to link" -msgstr "Respondi-al ligilo" - -#: modules/comment.views.inc:195 -msgid "Provide a simple link to reply to the comment." -msgstr "Provizi simplan ligilon por respondi al la komento." - -#: modules/comment.views.inc:203 -msgid "Display the depth of the comment if it is threaded." -msgstr "Montri la profundecon de la komento se ĝi estas fadenita." - -#: modules/comment.views.inc:207 -msgid "Thread" -msgstr "Fadeno" - -#: modules/comment.views.inc:208 -msgid "Sort by the threaded order. This will keep child comments together with their parents." -msgstr "Ordigi laŭ la fadena sinsekvo. Tio tenos idajn komentojn kune kun siaj patroj." - -#: modules/comment.views.inc:214 -#: modules/node.views.inc:24 -#: modules/upload.views.inc:43 -msgid "Node" -msgstr "Nodo" - -#: modules/comment.views.inc:215 -msgid "The node the comment is a reply to." -msgstr "La nodo al kiu komento estas respondo." - -#: modules/comment.views.inc:225 -#: modules/node.views.inc:353 -#: modules/statistics.views.inc:201 -#: modules/user.views.inc:23 -msgid "User" -msgstr "Uzanto" - -#: modules/comment.views.inc:226 -msgid "The user who wrote the comment." -msgstr "La uzanto kiu skribis la komenton." - -#: modules/comment.views.inc:236 -msgid "Parent CID" -msgstr "Patra CID" - -#: modules/comment.views.inc:237 -msgid "The Comment ID of the parent comment." -msgstr "La komenta ID de la patra komento." - -#: modules/comment.views.inc:242 -msgid "Parent comment" -msgstr "Patra komento" - -#: modules/comment.views.inc:243 -msgid "The parent comment." -msgstr "La gepatra komento." - -#: modules/comment.views.inc:268 -msgid "Last comment time" -msgstr "Lasta komenta tempo" - -#: modules/comment.views.inc:269 -msgid "Date and time of when the last comment was posted." -msgstr "Dato kaj tempo de kiam la lasta komento estis afiŝita." - -#: modules/comment.views.inc:284 -msgid "Last comment author" -msgstr "Lasta komento de aŭtoro" - -#: modules/comment.views.inc:285 -msgid "The name of the author of the last posted comment." -msgstr "La nomo de la aŭtoro de la laste afiŝita komento." - -#: modules/comment.views.inc:297 -msgid "Comment count" -msgstr "Kvanto da komentoj" - -#: modules/comment.views.inc:298 -msgid "The number of comments a node has." -msgstr "La nombro da komentoj kiun nodo havas." - -#: modules/comment.views.inc:316 -msgid "Updated/commented date" -msgstr "Ĝisdatigita/komentita dato" - -#: modules/comment.views.inc:317 -msgid "The most recent of last comment posted or node updated time." -msgstr "La plej lasta de lasta komento afiŝita aŭ nodo ĝisdatigita tempo." - -#: modules/comment.views.inc:340 -msgid "New comments" -msgstr "Novaj komentoj" - -#: modules/comment.views.inc:341 -msgid "The number of new comments on the node." -msgstr "La nombro da novaj komentoj en la nodo." - -#: modules/comment.views.inc:349 -msgid "Comment status" -msgstr "Komenta stato" - -#: modules/comment.views.inc:350 -msgid "Whether comments are enabled or disabled on the node." -msgstr "Ĉu komentoj estas ŝaltitaj aŭ malŝaltitaj en la nodo." - -#: modules/comment.views.inc:364 -msgid "User posted or commented" -msgstr "Uzanto afiŝis aŭ komentis" - -#: modules/comment.views.inc:365 -msgid "Display comments only if a user posted the node or commented on the node." -msgstr "Montri komentojn nur se uzanto afiŝis la nodon aŭ komentis en la nodo." - -#: modules/comment.views.inc:385 -msgid "Display the comment with standard comment view." -msgstr "Montri la komenton kun norma komenta montro." - -#: modules/comment.views.inc:394 -msgid "Display the comment as RSS." -msgstr "Montri la komenton kiel RSS." - -#: modules/comment.views.inc:462 -msgid "Link this field to its comment" -msgstr "Ligi ĉi tiun kampon al ĝia komento" - -#: modules/comment.views.inc:504 -msgid "Link this field to its user or an author's homepage" -msgstr "Ligi ĉi tiun kampon al ĝia uzanto aŭ aŭtora hejmpaĝo" - -#: modules/comment.views.inc:549 -#: modules/node.views.inc:611 -#: modules/user.views.inc:452 -msgid "Text to display" -msgstr "Teksto por montri" - -#: modules/comment.views.inc:560 -#: modules/node.views.inc:622 -#: modules/user.views.inc:468 -msgid "view" -msgstr "vidi" - -#: modules/comment.views.inc:583 -#: modules/node.views.inc:651 -#: modules/user.views.inc:484 -msgid "edit" -msgstr "redakti" - -#: modules/comment.views.inc:597 -#: modules/node.views.inc:679 -#: modules/user.views.inc:500 -msgid "delete" -msgstr "forigi" - -#: modules/comment.views.inc:611 -msgid "reply" -msgstr "respondi" - -#: modules/comment.views.inc:742 -msgid "Link this field to new comments" -msgstr "Ligi ĉi tiun kampon al novaj komentoj" - -#: modules/comment.views.inc:747 -msgid "Display nothing if no new comments" -msgstr "Montri nenion se neniuj novaj komentoj" - -#: modules/comment.views.inc:812 -#: modules/user.views.inc:599 -msgid "Anonymous" -msgstr "Anonima" - -#: modules/comment.views.inc:818 -msgid "No user" -msgstr "Neniu uzanto" - -#: modules/comment.views.inc:852 -msgid "Disabled" -msgstr "Malŝaltita" - -#: modules/comment.views.inc:854 -msgid "Read only" -msgstr "Nur-legi" - -#: modules/comment.views.inc:856 -msgid "Read/Write" -msgstr "Legi/Modifi" - -#: modules/comment.views.inc:887 -#: modules/node.views.inc:1207 -msgid "Display links" -msgstr "Montri ligilojn" - -#: modules/node.views.inc:30 -msgid "Nodes are a Drupal site's primary content." -msgstr "Nodoj estas ĉefa enhavo de Drupala retejo." - -#: modules/node.views.inc:57 -msgid "Nid" -msgstr "Nid" - -#: modules/node.views.inc:58 -msgid "The node ID of the node." -msgstr "La noda ID de la nodo." - -#: modules/node.views.inc:85 -msgid "The title of the node." -msgstr "La titolo de la nodo." - -#: modules/node.views.inc:108 -msgid "The date the node was posted." -msgstr "La dato kiam la nodo estis afiŝita." - -#: modules/node.views.inc:123 -msgid "Updated date" -msgstr "Ĝisdatigita dato" - -#: modules/node.views.inc:124 -msgid "The date the node was last updated." -msgstr "La dato kiam la nodo estis laste ĝisdatigita." - -#: modules/node.views.inc:140 -msgid "The type of a node (for example, \"blog entry\", \"forum post\", \"story\", etc)." -msgstr "La speco de nodo (ekzemple, \"blog-enskribo\", \"forum-afiŝo\", \"rakonto\", ktp)" - -#: modules/node.views.inc:158 -#: modules/upload.views.inc:82 -msgid "Published" -msgstr "Publikigita" - -#: modules/node.views.inc:159 -msgid "The published status of the node." -msgstr "La eldona stato de la nodo." - -#: modules/node.views.inc:175 -msgid "Published or admin" -msgstr "Eldonita aŭ admin" - -#: modules/node.views.inc:176 -msgid "Filters out unpublished nodes if the current user cannot view them." -msgstr "Elfiltras neeldonitajn nodojn se la nuna uzanto ne povas vidi ilin." - -#: modules/node.views.inc:186 -msgid "Promoted to front page" -msgstr "Promociita al ĉefpaĝo" - -#: modules/node.views.inc:187 -msgid "The front page of the node." -msgstr "La ĉefpaĝo de la nodo." - -#: modules/node.views.inc:204 -msgid "Whether or not the node is moderated." -msgstr "Ĉu aŭ ne la nodo estas moderata." - -#: modules/node.views.inc:221 -msgid "Sticky" -msgstr "Fiksita" - -#: modules/node.views.inc:222 -msgid "Whether or not the node is sticky." -msgstr "Ĉu aŭ ne la nodo estas fiksita." - -#: modules/node.views.inc:241 -msgid "Link" -msgstr "Ligilo" - -#: modules/node.views.inc:242 -msgid "Provide a simple link to the node." -msgstr "Provizi simplan ligilon al la nodo." - -#: modules/node.views.inc:250 -msgid "Provide a simple link to edit the node." -msgstr "Provizi simplan ligilon por redakti la nodon." - -#: modules/node.views.inc:258 -msgid "Provide a simple link to delete the node." -msgstr "Provizi simplan ligilon por forigi la nodon." - -#: modules/node.views.inc:266 -msgid "Language" -msgstr "Lingvo" - -#: modules/node.views.inc:267 -msgid "The language the content is in." -msgstr "La lingvo de la enhavo." - -#: modules/node.views.inc:284 -#: modules/user.views.inc:125 -msgid "Created date" -msgstr "Kreita dato" - -#: modules/node.views.inc:285 -msgid "In the form of CCYYMMDD." -msgstr "en la formo de CCYYMMDD." - -#: modules/node.views.inc:293 -msgid "Created year + month" -msgstr "Kreita jaro + monato" - -#: modules/node.views.inc:294 -msgid "In the form of YYYYMM." -msgstr "En la formo de YYYYMM." - -#: modules/node.views.inc:302 -msgid "Created year" -msgstr "Kreita jaro" - -#: modules/node.views.inc:303 -msgid "In the form of YYYY." -msgstr "En la formo de YYYY." - -#: modules/node.views.inc:311 -msgid "Created month" -msgstr "Kreita monato" - -#: modules/node.views.inc:312 -msgid "In the form of MM (01 - 12)." -msgstr "En la formo de MM (01 - 12)." - -#: modules/node.views.inc:320 -msgid "Created week" -msgstr "Kreita semajno" - -#: modules/node.views.inc:321 -msgid "In the form of WW (01 - 53)." -msgstr "En la formo de WW (01 - 53)." - -#: modules/node.views.inc:333 -msgid "Node revision" -msgstr "Noda revizio" - -#: modules/node.views.inc:339 -msgid "Node revisions are a history of changes to nodes." -msgstr "Nodaj revizioj estas historio de ŝanĝoj al nodoj." - -#: modules/node.views.inc:354 -msgid "Relate a node revision to the user who created the revision." -msgstr "Rilatu nodan rivizion al la uzanto kiu kreis la revizion." - -#: modules/node.views.inc:359 -msgid "user" -msgstr "uzanto" - -#: modules/node.views.inc:367 -msgid "The actual, full data in the body field; this may not be valid data on all node types." -msgstr "La veraj, plenaj datumoj en la korpa kampo; tio eble ne estas validaj datumoj por ĉiuj nodaj specoj." - -#: modules/node.views.inc:381 -msgid "Teaser" -msgstr "Resumo" - -#: modules/node.views.inc:382 -msgid "The stored teaser field. This may not be valid or useful data on all node types." -msgstr "La konservita resuma kampo. Tio eble ne estas validaj aŭ utilaj datumoj por ĉiuj nodaj specoj. " - -#: modules/node.views.inc:395 -msgid "Vid" -msgstr "Vid" - -#: modules/node.views.inc:396 -msgid "The revision ID of the node revision." -msgstr "La revizia ID de la noda revizio." - -#: modules/node.views.inc:441 -msgid "Log message" -msgstr "Protokola mesaĝo" - -#: modules/node.views.inc:442 -msgid "The log message entered when the revision was created." -msgstr "La protokola mesaĝo enmetita kiam la revizio estis kreita." - -#: modules/node.views.inc:456 -msgid "The date the node revision was created." -msgstr "La dato kiam la noda revizio estis kreita." - -#: modules/node.views.inc:471 -msgid "Revert link" -msgstr "Ligilo por malfari ŝanĝojn" - -#: modules/node.views.inc:472 -msgid "Provide a simple link to revert to the revision." -msgstr "Provizi simplan ligilon por malfari ŝanĝojn al la revizio." - -#: modules/node.views.inc:480 -msgid "Provide a simple link to delete the node revision." -msgstr "Provizi simplan ligilon por forigi la nodan revizion." - -#: modules/node.views.inc:507 -msgid "Has new content" -msgstr "Havas novan enhavon" - -#: modules/node.views.inc:510 -msgid "Show a marker if the node has new or updated content." -msgstr "Montri markilon se la nodo havas novan aŭ ĝisdatigitan enhavon." - -#: modules/node.views.inc:513 -msgid "Show only nodes that have new content." -msgstr "Montri nur nodojn kiuj havas novan enhavon." - -#: modules/node.views.inc:544 -msgid "Link this field to its node" -msgstr "Ligi ĉi tiun kampon al ĝia nodo" - -#: modules/node.views.inc:717 -msgid "revert" -msgstr "malfari ŝanĝojn" - -#: modules/node.views.inc:788 -msgid "Check for new comments as well" -msgstr "Kontrolu ankaŭ por novaj komentoj" - -#: modules/node.views.inc:858 -msgid "Unknown node type" -msgstr "Nekonata noda speco" - -#: modules/node.views.inc:1027 -msgid "Week @week" -msgstr "Semajno @week" - -#: modules/node.views.inc:1037 -msgid "Node type" -msgstr "Noda speco" - -#: modules/node.views.inc:1094 -msgid "Current user's language" -msgstr "Lingvo de nuna uzanto" - -#: modules/node.views.inc:1094 -msgid "No language" -msgstr "Neniu lingvo" - -#: modules/node.views.inc:1140 -msgid "Unknown language" -msgstr "Nekonata lingvo" - -#: modules/node.views.inc:1153 -msgid "Display the node with standard node view." -msgstr "Montri la nodon kun norma noda montro." - -#: modules/node.views.inc:1177 -msgid "Node ID from URL" -msgstr "Noda ID de URL" - -#: modules/node.views.inc:1202 -msgid "Display only teaser" -msgstr "Montri nur resumon" - -#: modules/node.views.inc:1261 -msgid "Full text" -msgstr "Plena teksto" - -#: modules/node.views.inc:1262 -msgid "Title plus teaser" -msgstr "Titolo plus resumo" - -#: modules/node.views.inc:1263 -msgid "Title only" -msgstr "Nur titolo" - -#: modules/node.views.inc:1264 -msgid "Use default RSS settings" -msgstr "Uzi defaŭltajn RSS-agordojn" - -#: modules/node.views.inc:1330 -msgid "read more" -msgstr "legi pli" - -#: modules/node.views.inc:1363 -msgid "Types" -msgstr "Specoj" - -#: modules/node.views.inc:1366 -msgid "If you wish to validate for specific node types, check them; if none are checked, all nodes will pass." -msgstr "Se vi deziras validigi specifajn nodajn specojn, kontrolu ilin; se neniu estas ŝaltita, ĉiuj nodoj sukcesos." - -#: modules/node.views.inc:1373 -msgid "Validate user has access to the node" -msgstr "Validiga uzanto povas aliri la nodon" - -#: modules/node.views.inc:1381 -#: modules/taxonomy.views.inc:1015 -msgid "Argument type" -msgstr "Argumenta speco" - -#: modules/node.views.inc:1383 -msgid "Node ID" -msgstr "Noda ID" - -#: modules/node.views.inc:1384 -msgid "Node IDs separated by , or +" -msgstr "Nodaj ID-oj disigitaj per , aŭ +" - -#: modules/node.views.inc:1507 -msgid "Display %display has no access control but does not contain a filter for published nodes." -msgstr "Montro %display ne havas aliran regadon, sed ne enhavas filtrilon por eldonitaj nodoj." - -#: modules/poll.views.inc:23 -msgid "Poll" -msgstr "Enketo" - -#: modules/poll.views.inc:38 -#: modules/user.views.inc:173 -msgid "Active" -msgstr "Aktiva" - -#: modules/poll.views.inc:39 -msgid "Whether the poll is open for voting." -msgstr "Ĉu la enketo estas malfermita por voĉdonado." - -#: modules/profile.views.inc:20 -msgid "Profile" -msgstr "Profilo" - -#: modules/profile.views.inc:100 -msgid "@field-name" -msgstr "@field-name" - -#: modules/profile.views.inc:107 -msgid "Profile textfield" -msgstr "Profila tekstkampo" - -#: modules/profile.views.inc:126 -msgid "Profile textarea" -msgstr "Profila tekstareo" - -#: modules/profile.views.inc:142 -msgid "Profile checkbox" -msgstr "Profila markobutono" - -#: modules/profile.views.inc:159 -msgid "Profile URL" -msgstr "Profila URL" - -#: modules/profile.views.inc:175 -msgid "Profile selection" -msgstr "Profila elektado" - -#: modules/profile.views.inc:195 -msgid "Profile freeform list %field-name." -msgstr "Profila liberforma listo %field-name." - -#: modules/profile.views.inc:207 -msgid "Profile date %field-name." -msgstr "Profila dato %field-name." - -#: modules/search.views.inc:23 -msgid "Search" -msgstr "Serĉi" - -#: modules/search.views.inc:72 -msgid "Score" -msgstr "Poentaro" - -#: modules/search.views.inc:73 -msgid "The score of the search item." -msgstr "La poentaro de la serĉero." - -#: modules/search.views.inc:95 -msgid "Links from" -msgstr "Ligiloj de" - -#: modules/search.views.inc:96 -msgid "Nodes that link from the node." -msgstr "Nodoj kiuj ligas de la nodo." - -#: modules/search.views.inc:113 -msgid "Links to" -msgstr "Ligiloj al" - -#: modules/search.views.inc:114 -msgid "Nodes that link to the node." -msgstr "Nodoj kiuj ligas al la nodo." - -#: modules/search.views.inc:125 -msgid "Search Terms" -msgstr "Serĉaj Terminoj" - -#: modules/search.views.inc:126 -msgid "The terms to search for." -msgstr "La terminoj por serĉi." - -#: modules/search.views.inc:155 -msgid "On empty input" -msgstr "Per malplena enmeto" - -#: modules/search.views.inc:158 -msgid "Show All" -msgstr "Montri ĉiujn" - -#: modules/search.views.inc:159 -msgid "Show None" -msgstr "Montri nenion" - -#: modules/search.views.inc:173 -msgid "Enter the terms you wish to search for." -msgstr "Enmetu la terminojn kiujn vi deziras serĉi." - -#: modules/search.views.inc:188 -msgid "You must include at least one positive keyword with @count characters or more." -msgstr "Vi devas inkluzivi almenaŭ unu pozitivan ŝlosilvorton kun @count signoj aŭ pli." - -#: modules/search.views.inc:192 -msgid "Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>." -msgstr "Serĉi por unu el la du terminoj kun majuskla <strong>OR</strong>. Ekzemple, <strong>katoj OR hundoj</strong>." - -#: modules/search.views.inc:245 -msgid "Display the results with standard search view." -msgstr "Montri la rezultojn per norma serĉa montro." - -#: modules/search.views.inc:269 -msgid "Display score" -msgstr "Montri poentaron" - -#: modules/statistics.views.inc:24 -msgid "Node statistics" -msgstr "Noda statistiko" - -#: modules/statistics.views.inc:36 -msgid "Total views" -msgstr "Ĉiuj vidoj" - -#: modules/statistics.views.inc:37 -msgid "The total number of times the node has been viewed." -msgstr "La tuta nombro da fojoj la nodo estas vidita." - -#: modules/statistics.views.inc:53 -msgid "Views today" -msgstr "Vidoj hodiaŭ" - -#: modules/statistics.views.inc:54 -msgid "The total number of times the node has been viewed today." -msgstr "La tuta nombro da fojoj la nodo estas vidita hodiaŭ." - -#: modules/statistics.views.inc:70 -msgid "Most recent view" -msgstr "Plej lasta vido" - -#: modules/statistics.views.inc:71 -msgid "The most recent time the node has been viewed." -msgstr "La plej lasta fojo kiam la nodo estas vidita." - -#: modules/statistics.views.inc:86 -msgid "Access log" -msgstr "Alira protokolo" - -#: modules/statistics.views.inc:92 -msgid "Stores site access information." -msgstr "Konservas alirajn informojn de la retejo." - -#: modules/statistics.views.inc:106 -msgid "Session ID" -msgstr "Seanca ID" - -#: modules/statistics.views.inc:107 -msgid "Browser session ID of user that visited page." -msgstr "Retumila seanca ID de uzanto kiu vizitis paĝon." - -#: modules/statistics.views.inc:126 -msgid "Page title" -msgstr "Paĝa titolo" - -#: modules/statistics.views.inc:127 -msgid "Title of page visited." -msgstr "Titolo de paĝo vizitita." - -#: modules/statistics.views.inc:147 -msgid "Internal path to page visited (relative to Drupal root.)" -msgstr "Interna vojo al paĝo vizitita (relativa al Drupala radiko.)" - -#: modules/statistics.views.inc:166 -msgid "Referrer" -msgstr "Referanto" - -#: modules/statistics.views.inc:167 -msgid "Referrer URI." -msgstr "Referanta URI." - -#: modules/statistics.views.inc:182 -msgid "Hostname" -msgstr "Gastiga nomo" - -#: modules/statistics.views.inc:183 -msgid "Hostname of user that visited the page." -msgstr "Gastiga nomo de uzanto kiu vizitis la paĝon." - -#: modules/statistics.views.inc:202 -msgid "The user who visited the site." -msgstr "La uzanto kiu vizitis la retejon." - -#: modules/statistics.views.inc:212 -msgid "Timer" -msgstr "Horloĝo" - -#: modules/statistics.views.inc:213 -msgid "Time in milliseconds that the page took to load." -msgstr "Tempo en milisekundoj dum kiam la paĝo ŝargiĝis." - -#: modules/statistics.views.inc:228 -msgid "Timestamp" -msgstr "Tempindiko" - -#: modules/statistics.views.inc:229 -msgid "Timestamp of when the page was visited." -msgstr "Tempindiko kiam la paĝo estis vizitita." - -#: modules/system.views.inc:25 -msgid "File" -msgstr "Dosiero" - -#: modules/system.views.inc:31 -msgid "Files maintained by Drupal and various modules." -msgstr "Dosieroj administrataj de Drupalo kaj diversaj moduloj." - -#: modules/system.views.inc:49 -msgid "File ID" -msgstr "Dosiera ID" - -#: modules/system.views.inc:50 -msgid "The ID of the file." -msgstr "La ID de la dosiero." - -#: modules/system.views.inc:70 -msgid "The name of the file." -msgstr "La nomo de la dosiero." - -#: modules/system.views.inc:89 -msgid "The path of the file." -msgstr "La vojo de la dosiero." - -#: modules/system.views.inc:107 -msgid "Mime type" -msgstr "MIME-speco" - -#: modules/system.views.inc:108 -msgid "The mime type of the file." -msgstr "La MIME-speco de la dosiero." - -#: modules/system.views.inc:126 -msgid "Size" -msgstr "Grandeco" - -#: modules/system.views.inc:127 -msgid "The size of the file." -msgstr "La grandeco de la dosiero." - -#: modules/system.views.inc:142 -msgid "Status" -msgstr "Stato" - -#: modules/system.views.inc:143 -msgid "The status of the file." -msgstr "La stato de la dosiero." - -#: modules/system.views.inc:158 -msgid "Upload date" -msgstr "Alŝutita dato" - -#: modules/system.views.inc:159 -msgid "The date the file was uploaded." -msgstr "La dato kiam la dosiero estis alŝutita." - -#: modules/system.views.inc:202 -#: modules/upload.views.inc:152 -msgid "Link this field to download the file" -msgstr "Ligu ĉi tiun kampon por elŝuti la dosieron." - -#: modules/system.views.inc:229 -msgid "Temporary" -msgstr "Provizora" - -#: modules/system.views.inc:230 -msgid "Permanent" -msgstr "Daŭra" - -#: modules/system.views.inc:270 -msgid "No title" -msgstr "Neniu titolo" - -#: modules/taxonomy.views.inc:24 -msgid "Taxonomy" -msgstr "Taksonomio" - -#: modules/taxonomy.views.inc:48 -msgid "Vocabulary name" -msgstr "Vortproviza nomo" - -#: modules/taxonomy.views.inc:50 -msgid "Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the \"Taxonomy: Term\" field is; and can similarly cause duplicates." -msgstr "Nomo de la vortprovizo kiun termino estas membro. Tio estos la vortprovizo kiu ajn termino la \"Taksonomio: Termino\" kampo estas; kaj povas simile kaŭzi kopiojn." - -#: modules/taxonomy.views.inc:56 -msgid "Vocabulary ID" -msgstr "Vortproviza ID" - -#: modules/taxonomy.views.inc:57 -msgid "The taxonomy vocabulary ID" -msgstr "La taksonomia vortproviza ID" - -#: modules/taxonomy.views.inc:70 -msgid "Term" -msgstr "Termino" - -#: modules/taxonomy.views.inc:71 -msgid "Taxonomy terms are attached to nodes." -msgstr "Taksonomiaj terminoj estas alkroĉitaj al nodoj." - -#: modules/taxonomy.views.inc:97 -msgid "Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the result set." -msgstr "Taksonomiaj terminoj. Rimarku ke uzante ĉi tion povas kaŭzi ke kopiaj nodoj aperu en montroj; vi devas aldoni filtrilojn por redukti la rezultaron. " - -#: modules/taxonomy.views.inc:107 -msgid "Taxonomy term name" -msgstr "Nomo de taksonomia termino" - -#: modules/taxonomy.views.inc:116 -msgid "The term weight field" -msgstr "Peza kampo de la termino" - -#: modules/taxonomy.views.inc:128 -msgid "Term description" -msgstr "Priskribo de la termino" - -#: modules/taxonomy.views.inc:129 -msgid "The description associated with a taxonomy term." -msgstr "La priskribo asociita kun taksonomia termino." - -#: modules/taxonomy.views.inc:140 -msgid "Vocabulary" -msgstr "Vortprovizo" - -#: modules/taxonomy.views.inc:141 -msgid "Filter the results of \"Taxonomy: Term\" to a particular vocabulary." -msgstr "Filtri la rezultojn de \"Taksonomio: Termino\" al specifa vortprovizo." - -#: modules/taxonomy.views.inc:176 -msgid "Term ID" -msgstr "Termina ID" - -#: modules/taxonomy.views.inc:177 -msgid "The taxonomy term ID" -msgstr "La taksonomia termina ID" - -#: modules/taxonomy.views.inc:179 -msgid "All terms" -msgstr "Ĉiuj terminoj" - -#: modules/taxonomy.views.inc:180 -msgid "Display all taxonomy terms associated with a node." -msgstr "Montri ĉiujn taksonomiajn terminojn asociitaj kun nodo." - -#: modules/taxonomy.views.inc:253 -msgid "Term synonym" -msgstr "Sinonimo de termino" - -#: modules/taxonomy.views.inc:254 -msgid "Term synonyms may be used to find terms by alternate names." -msgstr "Sinonimoj de termino povas esti uzata por trovi terminojn per alternativaj nomoj." - -#: modules/taxonomy.views.inc:270 -msgid "Term ID (with depth)" -msgstr "Termina ID (kun profundeco)" - -#: modules/taxonomy.views.inc:271 -msgid "The depth filter is more complex, so provides fewer options." -msgstr "La profunda filtrilo estas pli kompleksa, do provizas malpli da opcioj." - -#: modules/taxonomy.views.inc:281 -msgid "Term ID depth modifier" -msgstr "Profunda modifilo de termina ID" - -#: modules/taxonomy.views.inc:282 -msgid "Allows the \"depth\" for Taxonomy: Term ID (with depth) to be modified via an additional argument." -msgstr "Ebligas ke la \"profundeco\" por Taksonomio: Termina ID (kun profundeco) estu modifebla per aldona argumento." - -#: modules/taxonomy.views.inc:312 -msgid "The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term \"fruit\" and a child term \"apple\", with a depth of 1 (or higher) then filtering for the term \"fruit\" will get nodes that are tagged with \"apple\" as well as \"fruit\". If negative, the reverse is true; searching for \"apple\" will also pick up nodes tagged with \"fruit\" if depth is -1 (or lower)." -msgstr "La profundeco kongruos kun nodoj etikeditaj kun terminoj en la hierarkio. Ekzemple, se oni havas la terminon \"frukto\" kaj ida termino \"pomo\", kun profundeco de 1 (aŭ pli) tiam filtrado por la termino \"frukto\" kongruos kun nodoj kiuj estas etiketitaj kun \"pomo\" kaj \"frukto\". Se negativa, la inverso veras, serĉante por \"pomo\" ankaŭ kongruos kun nodoj etiketitaj kun \"frukto\" se profundeco estas -1 (aŭ malpli)." - -#: modules/taxonomy.views.inc:317 -msgid "Allow multiple terms per argument" -msgstr "Ebligi multajn erojn por ĉiu argumento" - -#: modules/taxonomy.views.inc:318 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this argument." -msgstr "Se elektita, uzantoj povas enmeti multajn argumentojn en la formo de 1+2+3. Pro la nombro da JOIN-oj kiujn tiu bezonatus, AND estos traktata kiel OR kun tiu argumento." - -#: modules/taxonomy.views.inc:324 -msgid "Set the breadcrumb for the term parents" -msgstr "Agordu la paĝnivelan navigo por la gepatra termino" - -#: modules/taxonomy.views.inc:325 -msgid "If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received." -msgstr "Se elektita, la paĝnivela navigo inkluzivos ĉiujn patrajn terminojn, ĉiu ligante al ĉi tiu montro. Rimarku ke tio funkcias nur se nur unu termino estis ricevita." - -#: modules/taxonomy.views.inc:411 -msgid "No name" -msgstr "Neniu nomo" - -#: modules/taxonomy.views.inc:520 -msgid "Link this field to its term page" -msgstr "Ligi ĉi tiun kampon al ĝia termina paĝo" - -#: modules/taxonomy.views.inc:527 -msgid "Limit terms by vocabulary" -msgstr "Limigi terminojn per vortprovizo" - -#: modules/taxonomy.views.inc:541 -msgid "Vocabularies" -msgstr "Vortprovizoj" - -#: modules/taxonomy.views.inc:612 -msgid "Link this field to its taxonomy term page" -msgstr "Ligi ĉi tiun kampon al ĝia taksonomia termina paĝo" - -#: modules/taxonomy.views.inc:684 -msgid "No vocabulary" -msgstr "Neniu vortprovizo" - -#: modules/taxonomy.views.inc:726 -msgid "Select which vocabulary to show terms for in the regular options." -msgstr "Elekti kiun vortprovizon por montri terminojn en la regulaj opcioj." - -#: modules/taxonomy.views.inc:736 -msgid "Selection type" -msgstr "Elekta speco" - -#: modules/taxonomy.views.inc:737 -msgid "Dropdown" -msgstr "Falmenuo" - -#: modules/taxonomy.views.inc:737 -msgid "Autocomplete" -msgstr "Aŭtokompletigi" - -#: modules/taxonomy.views.inc:743 -msgid "Show hierarchy in dropdown" -msgstr "Montri hierarkion en falmenuo" - -#: modules/taxonomy.views.inc:760 -msgid "An invalid vocabulary is selected. Please change it in the options." -msgstr "Nevalida vortprovizo estis elektita. Bonvolu ŝanĝi ĝin en la opcioj." - -#: modules/taxonomy.views.inc:778 -msgid "Select terms from vocabulary @voc" -msgstr "Elekti terminojn el vortprovizo @voc" - -#: modules/taxonomy.views.inc:983 -msgid "Taxonomy term" -msgstr "Taksonomia termino" - -#: modules/taxonomy.views.inc:1008 -msgid "If you wish to validate for specific vocabularies, check them; if none are checked, all nodes will pass." -msgstr "Se vi deziras validigi speciajn vortprovizojn, kontrolu ilin; se neniu estas ŝaltita, ĉiuj nodoj sukcesos." - -#: modules/taxonomy.views.inc:1018 -msgid "Term IDs separated by , or +" -msgstr "Terminaj ID-oj disigita per , aŭ +" - -#: modules/taxonomy.views.inc:1019 -msgid "Term name or synonym" -msgstr "Termina nomo aŭ sinonimo" - -#: modules/taxonomy.views.inc:1020 -msgid "Term name/synonym converted to Term ID" -msgstr "Termina nomo/sinonimo konvertita al Termina ID" - -#: modules/taxonomy.views.inc:1023 -msgid "Select the form of this argument; if using term name, it is generally more efficient to convert it to a term ID and use Taxonomy: Term ID rather than Taxonomy: Term Name\" as an argument." -msgstr "Elekti la formon de ĉi tiu argumento; se uzante la terminan nomon, estas ĝenerale pli efika konverti ĝin al termina ID kaj uzi Taksonomion; Termina ID anstataŭ ol Taksonomio; Termina Nomo\" kiel argumento." - -#: modules/taxonomy.views.inc:910 -msgid "Unable to find term: @terms" -msgid_plural "Unable to find terms: @terms" -msgstr[0] "Ne eblas trovi terminon: @terms" -msgstr[1] "Ne eblas trovi terminojn: @terms" - -#: modules/upload.views.inc:25 -msgid "Upload" -msgstr "Alŝuti" - -#: modules/upload.views.inc:44 -msgid "The node the uploaded file is attached to" -msgstr "La nodo al kiu la alŝutita dosiero estas alkroĉita" - -#: modules/upload.views.inc:46 -msgid "upload" -msgstr "alŝuti" - -#: modules/upload.views.inc:57 -msgid "The description of the uploaded file." -msgstr "La priskribo de la alŝutita dosiero" - -#: modules/upload.views.inc:74 -msgid "Listed" -msgstr "Listita" - -#: modules/upload.views.inc:75 -msgid "Whether or not the file is marked to be listed." -msgstr "Ĉu aŭ ne la dosiero estas markita kiel listita." - -#: modules/upload.views.inc:91 -msgid "The weight, used for sorting." -msgstr "La pezo, uzita por ordigi." - -#: modules/upload.views.inc:110 -msgid "Attached files" -msgstr "Alkroĉitaj dosieroj" - -#: modules/upload.views.inc:111 -msgid "All files attached to a node with upload.module." -msgstr "Ĉiuj dosieroj alkroĉitaj al nodo kun alŝuta modulo." - -#: modules/upload.views.inc:118 -msgid "Has attached files" -msgstr "Havas alkroĉitajn dosierojn" - -#: modules/upload.views.inc:119 -msgid "Only display items with attached files. This can cause duplicates if there are multiple attached files." -msgstr "Nur montri erojn kun alkroĉitaj dosieroj. Tio povas kaŭzi kopiojn se estas multaj alkroĉitaj dosieroj." - -#: modules/upload.views.inc:123 -msgid "Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node." -msgstr "Aldoni rilaton por ekaliron pli da dosieraj datumoj por dosieroj alŝutitaj de upload.module. Rimarku ke ĉi tiu rilato kaŭzos kopiitajn nodojn se estas multaj dosieroj alkroĉitaj al la nodo." - -#: modules/upload.views.inc:129 -msgid "Files" -msgstr "Dosieroj" - -#: modules/upload.views.inc:158 -msgid "Only show \"listed\" file attachments" -msgstr "Nur montri \"listitaj\" dosier-alkroĉaĵoj" - -#: modules/user.views.inc:28 -msgid "Users who have created accounts on your site." -msgstr "Uzantoj kiuj kreis konton en via retejo." - -#: modules/user.views.inc:48 -msgid "Uid" -msgstr "Uid" - -#: modules/user.views.inc:49 -msgid "The user ID" -msgstr "La ID de uzanto" - -#: modules/user.views.inc:70 -msgid "Current" -msgstr "Aktuala" - -#: modules/user.views.inc:71 -msgid "Filter the view to the currently logged in user." -msgstr "Filtri la montron al la nune ensalutinta uzanto." - -#: modules/user.views.inc:80 -msgid "The user or author name." -msgstr "La uzanto aŭ aŭtora nomo." - -#: modules/user.views.inc:96 -msgid "E-mail" -msgstr "Retpoŝto" - -#: modules/user.views.inc:97 -msgid "Email address for a given user. Only accessible to users with <em>administer users</em> permission" -msgstr "Retpoŝtadreso por uzanto. Nur alirebla al uzantoj kun permeso de <em>administri uzantoj</em>" - -#: modules/user.views.inc:114 -msgid "Picture" -msgstr "Bildo" - -#: modules/user.views.inc:115 -msgid "The user's picture, if allowed." -msgstr "La bildo de uzanto, se permesata." - -#: modules/user.views.inc:126 -msgid "The date the user was created." -msgstr "La dato kiam la uzanto estis kreita." - -#: modules/user.views.inc:141 -msgid "Last access" -msgstr "Lasta aliro" - -#: modules/user.views.inc:142 -msgid "The user's last access date." -msgstr "Lasta alira dato de la uzanto." - -#: modules/user.views.inc:157 -msgid "Last login" -msgstr "Lasta ensaluto" - -#: modules/user.views.inc:158 -msgid "The user's last login date." -msgstr "Lasta ensaluta dato de la uzanto." - -#: modules/user.views.inc:174 -msgid "Whether a user is active or blocked." -msgstr "Ĉu uzanto estas aktiva aŭ blokita." - -#: modules/user.views.inc:191 -msgid "Signature" -msgstr "Subskribo" - -#: modules/user.views.inc:192 -msgid "The user's signature." -msgstr "Subskribo de la uzanto." - -#: modules/user.views.inc:205 -msgid "Provide a simple link to edit the user." -msgstr "Provizi simplan ligilon por redakti la uzanton." - -#: modules/user.views.inc:213 -msgid "Provide a simple link to delete the user." -msgstr "Provizi simplan ligilon por forigi la uzanton." - -#: modules/user.views.inc:242 -msgid "Roles" -msgstr "Roloj" - -#: modules/user.views.inc:243 -msgid "Roles that a user belongs to." -msgstr "Roloj kiuj apertenas al uzanto." - -#: modules/user.views.inc:255 -msgid "No role" -msgstr "Neniu rolo" - -#: modules/user.views.inc:306 -msgid "User ID from URL" -msgstr "ID de uzanto de URL" - -#: modules/user.views.inc:322 -msgid "Also look for a node and use the node author" -msgstr "Ankaŭ serĉu por nodo kaj uzu la nodan aŭtoron" - -#: modules/user.views.inc:396 -msgid "Link this field to its user" -msgstr "Ligi ĉi tiun kampon al ĝia uzanto" - -#: modules/user.views.inc:519 -msgid "Link this field" -msgstr "Ligi ĉi tiun kampon" - -#: modules/user.views.inc:522 -msgid "No link" -msgstr "Neniu ligilo" - -#: modules/user.views.inc:523 -msgid "To the user" -msgstr "Al la uzanto" - -#: modules/user.views.inc:524 -msgid "With a mailto:" -msgstr "Kun mailto:" - -#: modules/user.views.inc:634 -msgid "Usernames" -msgstr "Uzantnomoj" - -#: modules/user.views.inc:635 -msgid "Enter a comma separated list of user names." -msgstr "Enmetu koman disigitan liston de uzantnomoj." - -#: modules/user.views.inc:754 -msgid "Is the logged in user" -msgstr "Estas la ensalutinta uzanto" - -#: modules/user.views.inc:714 -msgid "Unable to find user: @users" -msgid_plural "Unable to find users: @users" -msgstr[0] "Ne eblas trovi uzanton: @users" -msgstr[1] "Ne eblas trovi uzantojn: @users" - -#: modules/views.views.inc:18 -msgid "Global" -msgstr "Globala" - -#: modules/views.views.inc:23 -msgid "Random" -msgstr "Hazarda" - -#: modules/views.views.inc:24 -msgid "Randomize the display order." -msgstr "Hazardigu la montran sinsekvon." - -#: modules/views.views.inc:31 -msgid "Null" -msgstr "Nulo" - -#: modules/views.views.inc:32 -msgid "Allow an argument to be ignored. The query will not be altered by this argument." -msgstr "Ebligas ke argumento estu ignorata. La informpeto ne ŝanĝiĝos pro ĉi tiu argumento." - -#: modules/views.views.inc:84 -msgid "Fail basic validation if any argument is given" -msgstr "Malsukcesigu bazan validigon se argumento estas donita." - -#: modules/views.views.inc:86 -msgid "By checking this field, you can use this to make sure views with more arguments than necessary fail validation." -msgstr "Ŝaltante ĉi tiun kampon, vi povas uzi ĝin por certigi ke montroj kun pliaj argumentoj ol necese malsukcesas validigon." - -#: theme/views-more.tpl.php:15 -msgid "more" -msgstr "pli" - -#: theme/views-ui-edit-item.tpl.php:18 -msgid "None defined" -msgstr "Neniuj difinitaj" - -#: theme/views-ui-edit-tab.tpl.php:31 -msgid "View settings" -msgstr "Montraj agordoj" - -#: theme/views-ui-edit-view.tpl.php:11 -msgid "This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to !break." -msgstr "Ĉi tiu montro estas redaktata de uzanto !uzanto kaj tiel ŝlosita de redaktado de aliaj. Tiu ŝloso estas !age malnova. Alklaku ĉi tie por !break." - -#: theme/views-ui-edit-view.tpl.php:16 -msgid "New view" -msgstr "Nova montro" - -#: theme/views-ui-edit-view.tpl.php:18 -msgid "Changed view" -msgstr "Ŝanĝita montro" - -#: theme/views-ui-edit-view.tpl.php:23 -msgid "View %name, displaying items of type <strong>@base</strong>." -msgstr "Montro %name, montrante erojn de speco <strong>@base</strong>." - -#: theme/views-ui-edit-view.tpl.php:42 -msgid "Live preview" -msgstr "Viva antaŭvido" - -#: theme/views-ui-list-views.tpl.php:17 -msgid "<em>@type</em> @base view: <strong>@view</strong>" -msgstr "<em>@type</em> @base montro: <strong>@view</strong>" - -#: theme/views-ui-list-views.tpl.php:27 -msgid "Title: @title" -msgstr "Titolo: @title" - -#: theme/views-ui-list-views.tpl.php:30 -msgid "Path: !path" -msgstr "Vojo: !path" - -#: theme/theme.inc:90 -msgid "Edit this view" -msgstr "Redakti ĉi tiun montron" - -#: theme/theme.inc:290 -msgid "sort by @s" -msgstr "ordigi laŭ @s" - -#: theme/theme.inc:500 -msgid "‹‹" -msgstr "‹‹" - -#: theme/theme.inc:501 -msgid "››" -msgstr "››" - -#: theme/theme.inc:511 -msgid "@current of @max" -msgstr "@current de @max" - -#: views_export/views_export.module:76 -msgid "There are no views to be exported at this time." -msgstr "Estas neniuj montroj por eksporti momente." - -#: views_export/views_export.module:108 -msgid "Show only these tags" -msgstr "Montri nur ĉi tiujn etikedojn" - -#: views_export/views_export.module:122 -msgid "Module name" -msgstr "Modula nomo" - -#: views_export/views_export.module:123 -msgid "Enter the module name to export code to." -msgstr "Enmeti la modulan nomon al kiu vi volas eksporti kodon." - -#: views_export/views_export.module:190 -msgid "Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory" -msgstr "Meti ĉi tion en @module.views_default.inc en via dosierujo de modules/@module aŭ modules/@module/includes." - -#: views_export/views_export.module:44 -msgid "use views exporter" -msgstr "uzi montro-eksportilon" - -#: views_export/views_export.module:17 -msgid "Bulk export" -msgstr "Amas-eksporti" - -#: views_export/views_export.module:0 -msgid "views_export" -msgstr "views_export" - -#: views_export/views_export.info:0 -msgid "Views exporter" -msgstr "Montro-eksportilo" - -#: views_export/views_export.info:0 -msgid "Allows exporting multiple views at once." -msgstr "Ebligas eksportadon de multaj montroj samtempe." diff --git a/sites/all/modules/views/translations/fr.po b/sites/all/modules/views/translations/fr.po deleted file mode 100644 index 7417dfe3d..000000000 --- a/sites/all/modules/views/translations/fr.po +++ /dev/null @@ -1,3951 +0,0 @@ -# translation of SB-views-6.x-2.x-dev.po to -# translation of views-6.x-2.x-dev.po to -msgid "" -msgstr "" -"Project-Id-Version: SB-views-6.x-2.x-dev\n" -"POT-Creation-Date: 2008-07-01 05:39+0200\n" -"PO-Revision-Date: 2008-07-07 02:33+0200\n" -"Last-Translator: sandrine\n" -"Language-Team: <fr@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-Language: French\n" -"X-Poedit-Country: France\n" -"X-Poedit-SourceCharset: utf-8\n" -"X-Generator: KBabel 1.11.4\n" - -#: views.module:625 -msgid "Skipping broken view @view" -msgstr "Vue brisée @view sautée" - -#: views.module:672;712 -#: includes/admin.inc:92;253;253;599 -msgid "Overridden" -msgstr "Supplantée" - -#: views.module:675;708 -#: views_ui.module:284 -#: includes/admin.inc:91;252;252;566;738 -msgid "Default" -msgstr "Par défaut" - -#: views.module:824 -#: includes/admin.inc:286 -#: views_export/views_export.module:116 -msgid "Apply" -msgstr "Appliquer" - -#: views.module:109 -#: views_ui.module:23 -#: views.info:0;0 -#: views_ui.info:0 -#: views_export/views_export.info:0 -msgid "Views" -msgstr "Views" - -#: views.module:114 -msgid "Ajax callback for view loading." -msgstr "Procédure de rappel Ajax pour le chargement de la vue." - -#: views.module:0 -msgid "views" -msgstr "vues" - -#: views_ui.module:158 -msgid "The converter will make a best-effort attempt to convert a Views 1 view to Views 2. This conversion is not reliable; you will very likely have to make adjustments to your view to get it to match. You can import Views 1 views through the normal Import tab." -msgstr "Le convertisseur tente au mieux de convertir une vue Views 1 vers Views 2. Cette conversion n'est pas fiable et vous devrez très probablement ajuster votre vue pour la faire correspondre exactement. Vous pouvez importer les vues Views 1 par le biais de l'onglet habituel Importer." - -#: views_ui.module:25 -msgid "Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented." -msgstr "Les vues sont des listes personnalisées de contenus présents sur votre système. Elles sont hautement configurables et vous donnent le contrôle sur la présentation des listes de contenus." - -#: views_ui.module:29 -#: includes/plugins.inc:88;116 -msgid "List" -msgstr "Liste" - -#: views_ui.module:35 -#: includes/admin.inc:1081;1081;2093 -msgid "Add" -msgstr "Ajouter" - -#: views_ui.module:40 -#: includes/admin.inc:702 -msgid "Import" -msgstr "Importer" - -#: views_ui.module:46 -msgid "Tools" -msgstr "Outils" - -#: views_ui.module:52 -msgid "Basic" -msgstr "Basique" - -#: views_ui.module:60 -#: includes/convert.inc:30 -msgid "Convert" -msgstr "Convertir" - -#: views_ui.module:61 -msgid "Convert stored Views 1 views." -msgstr "Convertir les vues Views 1 enregistrées." - -#: views_ui.module:67;80;85 -msgid "Delete view" -msgstr "Supprimer la vue" - -#: views_ui.module:73 -msgid "Convert view" -msgstr "Convertir la vue" - -#: views_ui.module:110 -#: includes/admin.inc:87 -#: theme/theme.inc:89 -msgid "Edit" -msgstr "Éditer" - -#: views_ui.module:0 -msgid "views_ui" -msgstr "views_ui" - -#: views.install:31 -msgid "Stores the general data for a view." -msgstr "Enregistre les données générales d'une vue." - -#: views.install:37 -msgid "The view ID of the field, defined by the database." -msgstr "Identifiant de vue du champ, défini par la base de données." - -#: views.install:45 -msgid "The unique name of the view. This is the primary field views are loaded from, and is used so that views may be internal and not necessarily in the database. May only be alphanumeric characters plus underscores." -msgstr "Nom unique de la vue. Il s'agit du champ primaire à partir duquel les vues sont chargées et il est utilisé de manière à ce que les vues puissent être internes et non nécessairement dans la base de données. Ne peut contenir que des caractères alphanumériques et des espaces soulignés." - -#: views.install:51 -msgid "A description of the view for the admin interface." -msgstr "Description de la vue pour l'interface d'administration." - -#: views.install:57 -msgid "A tag used to group/sort views in the admin interface" -msgstr "Étiquette utilisée pour grouper/trier les vues dans l'interface d'administration" - -#: views.install:61 -msgid "A chunk of PHP code that can be used to provide modifications to the view prior to building." -msgstr "Extrait de code PHP pouvant être utilisé pour modifier la vue avant sa construction." - -#: views.install:68 -msgid "What table this view is based on, such as node, user, comment, or term." -msgstr "Table sur laquelle est basée la vue, par exemple nœud, utilisateur, commentaire ou terme." - -#: views.install:74 -msgid "A boolean to indicate whether or not this view may have its query cached." -msgstr "Valeur booléenne indiquant si la requête de la vue peut être mise en cache ou non." - -#: views.install:82 -msgid "Stores information about each display attached to a view." -msgstr "Enregistre des informations sur chaque affichage attaché à la vue." - -#: views.install:89 -msgid "The view this display is attached to." -msgstr "La vue à laquelle est attaché cet affichage." - -#: views.install:97 -msgid "An identifier for this display; usually generated from the display_plugin, so should be something like page or page_1 or block_2, etc." -msgstr "Un identifiant pour cet affichage ; habituellement généré par le display_plugin, il devrait donc ressembler à page, page_1, block_2, etc." - -#: views.install:104 -msgid "The title of the display, viewable by the administrator." -msgstr "Le titre de l'affichage, visible par l'administrateur." - -#: views.install:111 -msgid "The type of the display. Usually page, block or embed, but is pluggable so may be other things." -msgstr "Le type d'affichage. Généralement, page, bloc ou embed, mais il peut être greffé et donc prendre d'autres valeurs." - -#: views.install:116 -msgid "The order in which this display is loaded." -msgstr "L'ordre de chargement de cet affichage." - -#: views.install:120 -msgid "A serialized array of options for this display; it contains options that are generally only pertinent to that display plugin type." -msgstr "Tableau sérialisé d'options pour cet affichage ; il contient des options qui ne sont généralement pertinentes que pour le type de plugin de cet affichage." - -#: views.install:131 -msgid "A special cache used to store objects that are being edited; it serves to save state in an ordinarily stateless environment." -msgstr "Cache spécial utilisé pour enregistrer les objets en cours d'édition ; il sert à enregistrer l'état dans un environnement normalement sans état." - -#: views.install:136 -msgid "The session ID this cache object belongs to." -msgstr "L'identifiant de session auquel cet objet de cache appartient." - -#: views.install:141 -msgid "The name of the view this cache is attached to." -msgstr "Le nom de la vue à laquelle ce cache est rattaché." - -#: views.install:146 -msgid "The name of the object this cache is attached to; this essentially represents the owner so that several sub-systems can use this cache." -msgstr "Le nom de l'objet auquel ce cache est rattaché ; il représente essentiellement le propritéaire, de sorte que plusieurs sous-systèmes peuvent utiliser ce cache." - -#: views.install:153 -msgid "The time this cache was created or updated." -msgstr "Date de création ou de mise à jour de ce cache." - -#: views.install:157 -msgid "Serialized data being stored." -msgstr "Données sérialisées en cours d'enregistrement." - -#: views.info:0 -msgid "Create customized lists and queries from your database." -msgstr "Créez des listes et requêtes personnalisées à partir de votre base de données." - -#: views_ui.info:0 -msgid "Views UI" -msgstr "Views UI" - -#: views_ui.info:0 -msgid "Administrative interface to views. Without this module, you cannot create or edit your views." -msgstr "Interface d'administration des vues. Sans ce module, vous ne pouvez pas créer ou éditer de vue." - -#: docs/docs.php:106 -msgid "Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page." -msgstr "Émule la page d'accueil par défaut de Drupal ; vous pouvez faire pointer le chemin de votre page d'accueil par défaut vers cette vue pour en faire votre page d'accueil." - -#: docs/docs.php:107 -msgid "default" -msgstr "par défaut" - -#: docs/docs.php:116 -#: includes/plugins.inc:18 -msgid "Defaults" -msgstr "Paramètres par défaut" - -#: docs/docs.php:205 -#: includes/plugins.inc:32;40 -msgid "Page" -msgstr "Page" - -#: docs/docs.php:260 -#: includes/plugins.inc:65;72 -msgid "Feed" -msgstr "Flux" - -#: docs/docs.php:328 -msgid "Front page feed" -msgstr "Flux de la page d'accueil" - -#: includes/admin.inc:34 -msgid "If you install the advanced help module from !href, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Si vous installez le module d'aide avancé de !href, Views vous proposera une aide plus conséquente et plus détaillée. <a href=\"@hide\">Cacher ce message.</a>" - -#: includes/admin.inc:88;900 -#: theme/theme.inc:96 -#: views_export/views_export.module:128 -msgid "Export" -msgstr "Exporter" - -#: includes/admin.inc:89;905 -#: theme/theme.inc:101 -msgid "Clone" -msgstr "Dupliquer" - -#: includes/admin.inc:92 -msgid "Revert" -msgstr "Revenir" - -#: includes/admin.inc:92;612;774 -#: includes/convert.inc:35;109 -msgid "Delete" -msgstr "Supprimer" - -#: includes/admin.inc:97 -msgid "Disable" -msgstr "Désactiver" - -#: includes/admin.inc:100 -msgid "Enable" -msgstr "Activer" - -#: includes/admin.inc:106 -msgid "Warning! Broken view!" -msgstr "Attention ! Vue brisée !" - -#: includes/admin.inc:121 -msgid "Broken" -msgstr "Brisé" - -#: includes/admin.inc:180 -msgid "Install the advanced help module for the getting started" -msgstr "Installez le module d'aide avancée pour démarrer" - -#: includes/admin.inc:183 -msgid "Not sure what to do? Try the \"!getting-started\" page." -msgstr "Vous n'êtes pas sûr de ce que vous devez faire ? Essayez de commencer par la page \"!getting-started\"." - -#: includes/admin.inc:197;250;2059 -msgid "<All>" -msgstr "<Tous>" - -#: includes/admin.inc:198 -#: includes/plugins.inc:2820 -msgid "<None>" -msgstr "<Aucun>" - -#: includes/admin.inc:213;264;985 -#: views_export/views_export.module:146 -msgid "Tag" -msgstr "Étiquette" - -#: includes/admin.inc:229 -msgid "Displays" -msgstr "Affichage" - -#: includes/admin.inc:241;266 -#: includes/plugins.inc:1102;2079 -#: modules/node.views.inc:139 -msgid "Type" -msgstr "Type" - -#: includes/admin.inc:248 -msgid "Storage" -msgstr "Enregistrement" - -#: includes/admin.inc:251;251 -#: includes/view.inc:993;1043 -msgid "Normal" -msgstr "Normal" - -#: includes/admin.inc:260 -msgid "Sort by" -msgstr "Trier par" - -#: includes/admin.inc:262 -#: includes/plugins.inc:805 -#: modules/system.views.inc:69 -#: modules/user.views.inc:59;79 -msgid "Name" -msgstr "Nom" - -#: includes/admin.inc:263;361 -#: includes/argument.handlers.inc:111 -#: includes/plugins.inc:817;2091;2136 -#: modules/comment.views.inc:44 -#: modules/node.views.inc:84;402 -msgid "Title" -msgstr "Titre" - -#: includes/admin.inc:265;369 -#: includes/plugins.inc:2008 -#: modules/statistics.views.inc:146 -#: modules/system.views.inc:88 -msgid "Path" -msgstr "Chemin" - -#: includes/admin.inc:267 -#: includes/convert.inc:21 -#: modules/upload.views.inc:48 -#: views_export/views_export.module:146 -msgid "Description" -msgstr "Description" - -#: includes/admin.inc:274 -msgid "Order" -msgstr "Ordre" - -#: includes/admin.inc:276 -msgid "Up" -msgstr "Haut" - -#: includes/admin.inc:277 -msgid "Down" -msgstr "Bas" - -#: includes/admin.inc:360;379 -msgid "Query" -msgstr "Requête" - -#: includes/admin.inc:366 -msgid "This display has no path." -msgstr "Cet affichage n'a pas de chemin" - -#: includes/admin.inc:371 -msgid "Query build time" -msgstr "Durée de construction de la requête" - -#: includes/admin.inc:371;372;373 -msgid "@time ms" -msgstr "@time ms" - -#: includes/admin.inc:372 -msgid "Query execute time" -msgstr "Durée d'exécution de la requête" - -#: includes/admin.inc:373 -msgid "View render time" -msgstr "Durée de rendu de la vue" - -#: includes/admin.inc:379 -msgid "No query was run" -msgstr "Aucune requête n'a été exécutée" - -#: includes/admin.inc:386 -msgid "Unable to preview due to validation errors." -msgstr "Impossible de prévisualiser à cause d'erreurs de validation." - -#: includes/admin.inc:437 -msgid "Display" -msgstr "Affichage" - -#: includes/admin.inc:445 -#: includes/view.inc:1670 -msgid "Arguments" -msgstr "Arguments" - -#: includes/admin.inc:447 -msgid "Separate arguments with a / as though they were a URL path." -msgstr "Séparez les arguments par un / comme s'il s'agissait d'URL." - -#: includes/admin.inc:453 -msgid "Preview" -msgstr "Aperçu" - -#: includes/admin.inc:491 -msgid "Clone view @view" -msgstr "Dupliquer la vue @view" - -#: includes/admin.inc:504;691 -#: includes/convert.inc:20 -msgid "View name" -msgstr "Nom de la vue" - -#: includes/admin.inc:505 -msgid "This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If overriding a module provided view, the name must not be changed or instead a new view will be created." -msgstr "Il s'agit du nom unique de la vue. Il ne doit comporter que des caractères alphanumériques et des espaces soulignés. Il sert à identifier la vue en interne et à générer des noms uniques pour les templates de thèmes pour cette vue. Si la vue supplante une vue fournie par un module, le nom ne doit pas être modifié sous peine de créer une nouvelle vue." - -#: includes/admin.inc:513;1769 -msgid "View description" -msgstr "Description de la vue" - -#: includes/admin.inc:514;1770 -msgid "This description will appear on the Views administrative UI to tell you what the view is about." -msgstr "Cette description apparaîtra dans l'interface utilisateur d'administration de Views pour vous indiquer l'objet de cette vue." - -#: includes/admin.inc:520;1776 -msgid "View tag" -msgstr "Étiquette de la vue" - -#: includes/admin.inc:521;1777 -msgid "Enter an optional tag for this view; it is used only to help sort views on the administrative page." -msgstr "Saisissez une étiquette optionnelle pour cette vue ; elle sert uniquement à faciliter le tri des vues sur la page d'administration." - -#: includes/admin.inc:533 -msgid "View type" -msgstr "Type de vue" - -#: includes/admin.inc:534 -msgid "The view type is the primary table for which information is being retrieved. The view type controls what arguments, fields, sort criteria and filters are available, so once this is set it <strong>cannot be changed</strong>." -msgstr "Le type de vue est la table primaire pour laquelle les informations sont récupérées. Le type de vue contrôle quels arguments, champs, critères de tri et filtres sont disponibles ; par conséquent, une fois qu'il est fixé, il ne <strong>peut plus être modifié</strong>." - -#: includes/admin.inc:545 -msgid "Next" -msgstr "Suivant" - -#: includes/admin.inc:561 -msgid "View name must be alphanumeric or underscores only." -msgstr "Le nom de la vue n peut contenir que des caractères alphanumériques et des espaces soulignés." - -#: includes/admin.inc:567 -msgid "You must use a unique name for this view." -msgstr "Vous devez utiliser un nom unique pour cette vue." - -#: includes/admin.inc:600 -msgid "Are you sure you want to revert the view %name?" -msgstr "Êtes-vous sûr(e) de vouloir revenir en arrière pour la vue %name ?" - -#: includes/admin.inc:601 -msgid "Reverting the view will delete the view that is in the database, reverting it to the original default view. Any changes you have made will be lost and cannot be recovered." -msgstr "Revenir en arrière pour une vue supprime la vue enregistrée dans la base de données pour revenir à la vue par défaut d'origine. Toutes les modifications que vous aviez apportées seront perdues et ne pourront être récupérées." - -#: includes/admin.inc:604 -#: includes/convert.inc:105 -msgid "Are you sure you want to delete the view %name?" -msgstr "Êtes-vous sûr(e) de vouloir supprimer la vue %name ?" - -#: includes/admin.inc:605 -msgid "Deleting a view cannot be undone." -msgstr "Supprimer une vue est irréversible." - -#: includes/admin.inc:613;649;767;1225 -#: includes/convert.inc:110 -msgid "Cancel" -msgstr "Annuler" - -#: includes/admin.inc:622 -msgid "The view has been deleted." -msgstr "La vue a été supprimée." - -#: includes/admin.inc:634 -msgid "There is no lock on view %view to break." -msgstr "Il n'y a aucun verrou à faire sauter sur la vue %view." - -#: includes/admin.inc:644 -msgid "Are you sure you want to break the lock on view %name?" -msgstr "Êtes-vous sûr(e) de vouloir faire sauter le verrou sur la vue %name ?" - -#: includes/admin.inc:647 -msgid "By breaking this lock, any unsaved changes made by !user will be lost!" -msgstr "En faisant sauter ce verrou, toutes les modifications réalisées par !user et non encore enregistrées seront perdues !" - -#: includes/admin.inc:648 -msgid "Break lock" -msgstr "Faire sauter le verrou" - -#: includes/admin.inc:665 -msgid "Edit view \"%view\"" -msgstr "Éditer la vue \"%view\"" - -#: includes/admin.inc:692 -msgid "Enter the name to use for this view if it is different from the source view. Leave blank to use the name of the view." -msgstr "Saisissez le nom à utiliser pour cette vue s'il diffère de la vue source. Laissez la valeur à blanc pour utiliser le nom de la vue." - -#: includes/admin.inc:697 -msgid "Paste view code here" -msgstr "Copiez le code de la vue ici" - -#: includes/admin.inc:719 -msgid "Unable to interpret view code." -msgstr "Impossible d'interpréter le code de la vue." - -#: includes/admin.inc:726 -msgid "You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2." -msgstr "Vous importez une vue créée dans Views version 1. Vous pourrez être amené à ajuster certains paramètres pour que la vue fonctionne correctement dans Views version 2." - -#: includes/admin.inc:729 -msgid "That view is not compatible with this version of Views." -msgstr "Cette vue n'est pas compatible avec cette version de Views." - -#: includes/admin.inc:739 -msgid "A view by that name already exists; please choose a different name" -msgstr "Une vue portant ce nom existe déjà ; merci de choisir un nom différent." - -#: includes/admin.inc:760;788 -msgid "Save" -msgstr "Enregistrer" - -#: includes/admin.inc:812 -msgid "The view has been saved." -msgstr "La vue a été enregistrée." - -#: includes/admin.inc:851 -msgid "Unknown or missing table name" -msgstr "Nom de table inconnu ou manquant" - -#: includes/admin.inc:856 -msgid "Click on an item to edit that item's details." -msgstr "Cliquez sur un élément pour modifier ses détails." - -#: includes/admin.inc:859 -msgid "This view has a broken default display and cannot be used." -msgstr "Cette vue possède un affichage par défaut défectueux et ne peut donc être utilisée." - -#: includes/admin.inc:895 -msgid "break this lock" -msgstr "faire sauter ce verrou" - -#: includes/admin.inc:901 -#: theme/theme.inc:97 -msgid "Export this view" -msgstr "Exporter cette vue" - -#: includes/admin.inc:906 -#: theme/theme.inc:102 -msgid "Create a copy of this view" -msgstr "Créer une copie de cette vue" - -#: includes/admin.inc:917 -msgid "View \"!display\"" -msgstr "Voir \"!display\"" - -#: includes/admin.inc:918 -msgid "Go to the real page for this display" -msgstr "Aller à la vraie page de cet affichage" - -#: includes/admin.inc:984 -#: includes/plugins.inc:812;943;955;1999;2293;2467;2659;3299 -msgid "None" -msgstr "Aucun" - -#: includes/admin.inc:1058 -msgid "Invalid" -msgstr "Invalide" - -#: includes/admin.inc:1058 -msgid "Error: Display @display refers to a plugin named '@plugin', but that plugin doesn't exist!" -msgstr "Erreur : l'affichage @display se réfère à un plugin nommé '@plugin', mais ce plugin n'existe pas !" - -#: includes/admin.inc:1079;1079 -msgid "Rearrange" -msgstr "Réordonner" - -#: includes/admin.inc:1112;2144;2323;2391;2476 -msgid "Error: handler for @table > @field doesn't exist!" -msgstr "Erreur : le gestionnaire pour @table > @field n'existe pas !" - -#: includes/admin.inc:1131;1131;1140 -msgid "Settings" -msgstr "Paramètres" - -#: includes/admin.inc:1136 -#: includes/plugins.inc:823;841 -msgid "Missing style plugin" -msgstr "Plugin de style manquant" - -#: includes/admin.inc:1140 -#: includes/plugins.inc:836;851 -msgid "Change settings for this style" -msgstr "Modifier les paramètres pour ce style" - -#: includes/admin.inc:1143 -msgid " Style: !style" -msgstr " Style : !style" - -#: includes/admin.inc:1174 -msgid "Invalid display id while regenerating tabs" -msgstr "Identifiant d'affichage invalide à la regénération des onglets" - -#: includes/admin.inc:1207 -msgid "Update" -msgstr "Mise à jour" - -#: includes/admin.inc:1225 -msgid "Ok" -msgstr "Ok" - -#: includes/admin.inc:1494 -msgid "Unable to initialize default display" -msgstr "Impossible d'initialiser l'affichage par défaut" - -#: includes/admin.inc:1526 -msgid "Add display" -msgstr "Nouvel affichage" - -#: includes/admin.inc:1566 -msgid "Remove display" -msgstr "Supprimer un affichage" - -#: includes/admin.inc:1577 -msgid "Restore display" -msgstr "Restaurer un affichage" - -#: includes/admin.inc:1649 -msgid "Analyze" -msgstr "Analyser" - -#: includes/admin.inc:1669 -msgid "This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display." -msgstr "Cette vue ne possède qu'un affichage par défaut et, par conséquent, n'apparaîtra nulle part sur votre site ; peut-être devrez-vous ajouter un affichage de page ou de bloc." - -#: includes/admin.inc:1681 -msgid "View analysis" -msgstr "Analyse de la vue" - -#: includes/admin.inc:1690 -msgid "View analysis can find nothing to report." -msgstr "L'analyse de la vue n'a rien trouvé à signaler." - -#: includes/admin.inc:1764 -msgid "View details" -msgstr "Détails de la vue" - -#: includes/admin.inc:1805;1854;1904;2045;2137;2316;2384;2469 -msgid "Invalid display id @display" -msgstr "Identifiant d'affichage @display invalide" - -#: includes/admin.inc:1858 -msgid "Configure @type" -msgstr "Configurer @type" - -#: includes/admin.inc:1908 -msgid "Rearrange @type" -msgstr "Réarranger @type" - -#: includes/admin.inc:1951 -msgid "Broken field @id" -msgstr "Champ brisé @id" - -#: includes/admin.inc:1986;1995;2232;2341 -msgid "Remove" -msgstr "Supprimer" - -#: includes/admin.inc:1986;1986 -msgid "Remove this item" -msgstr "Supprimer cet élément" - -#: includes/admin.inc:1992 -msgid "No fields available." -msgstr "Aucun champ disponible." - -#: includes/admin.inc:1995 -#: includes/plugins.inc:2100 -#: modules/book.views.inc:57 -#: modules/taxonomy.views.inc:126 -#: modules/upload.views.inc:82 -msgid "Weight" -msgstr "Poids" - -#: includes/admin.inc:2051 -msgid "Add @type" -msgstr "Ajouter @type" - -#: includes/admin.inc:2062 -msgid "Groups" -msgstr "Groupes" - -#: includes/admin.inc:2081 -msgid "!group: !field" -msgstr "!group : !field" - -#: includes/admin.inc:2090 -msgid "There are no @types available to add." -msgstr "Il n'y a aucun @types disponible à ajouter." - -#: includes/admin.inc:2155 -#: includes/plugins.inc:1556 -msgid "Status: using default values." -msgstr "Statut : utilisation des valeurs par défaut." - -#: includes/admin.inc:2162 -#: includes/plugins.inc:1568 -msgid "Status: using overridden values." -msgstr "Statut : utilisation des valeurs supplantées." - -#: includes/admin.inc:2200 -msgid "Do not use a relationship" -msgstr "Ne pas utiliser de relation" - -#: includes/admin.inc:2209 -#: includes/view.inc:1694;1695 -msgid "Relationship" -msgstr "Relation" - -#: includes/admin.inc:2222 -msgid "Configure @type \"@item\"" -msgstr "Configurer @type \"@item\"" - -#: includes/admin.inc:2331 -msgid "Configure extra settings for @type \"@item\"" -msgstr "Configurer les paramètres supplémentaires pour @type \"@item\"" - -#: includes/admin.inc:2396 -msgid "Change summary style for @type \"@item\"" -msgstr "Changer le style de résumé pour @type \"@item\"" - -#: includes/admin.inc:2419;2433 -msgid "Internal error: broken plugin." -msgstr "Erreur interne : plugin défectueux." - -#: includes/admin.inc:2483 -msgid "Configure summary style for @type \"@item\"" -msgstr "Configurer le style de résumé pour @type \"@item\"" - -#: includes/admin.inc:2575 -msgid "Clear Views' cache" -msgstr "Vider le cache de Views" - -#: includes/admin.inc:2581 -msgid "Add Views signature to all SQL queries" -msgstr "Ajouter la signature Views à toutes les requêtes SQL" - -#: includes/admin.inc:2582 -msgid "All Views-generated queries will include a special 'VIEWS' = 'VIEWS' string in the WHERE clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting." -msgstr "Toutes les requêtes générées par Views incluront une chaîne spéciale 'VIEWS' = 'VIEWS' dans la clause WHERE. Ceci facilite grandement l'identification des requêtes Views dans les fichier journaux du serveur de base de données, mais ne devrait être utilisé que pour le dépannage." - -#: includes/admin.inc:2588 -msgid "Disable views data caching" -msgstr "Désactiver la mise en cache des données Views" - -#: includes/admin.inc:2589 -msgid "Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site." -msgstr "Views met en cache des données relatives aux tables, aux modules et aux vues disponibles afin d'améliorer les performances. En cochant cette case, vous obligez Views à sauter cette mise en cache et à reconstruire systématiquement la base de données dès que nécessaire. Cela peut avoir un impact important sur les performances de votre site." - -#: includes/admin.inc:2595 -msgid "Ignore missing advanced help module" -msgstr "Ignorer le module d'aide avancée manquant" - -#: includes/admin.inc:2596 -msgid "Views uses the advanced help module to provide help text; if this module is not present Views will complain, unless this setting is checked." -msgstr "Views utilise le module d'aide avancée pour proposer des textes d'aide ; si ce module est absent, Views le signalera sauf si ce paramètre est coché." - -#: includes/admin.inc:2602 -msgid "Show query above live preview" -msgstr "Afficher la requête au dessus de la prévisualisation en direct" - -#: includes/admin.inc:2603 -msgid "The live preview feature will show you the output of the view you're creating, as well as the view. Check here to show the query and other information above the view; leave this unchecked to show that information below the view." -msgstr "La prévisualisation en direct vous montrera le résultat de la vue que vous êtes en train de créer, ainsi que la vue. Cochez cette case pour voir apparaître la requête et les autres informations au dessus de la vue ; laissez la case non cochée pour conserver ces informations sous la vue." - -#: includes/admin.inc:2609 -msgid "Do not show hover links over views" -msgstr "Ne pas montrer les liens flottants sur les vues" - -#: includes/admin.inc:2610 -msgid "To make it easier to administrate your views, Views provides 'hover' links to take you to the edit and export screen of a view whenever the view is used. This can be distracting on some themes, though; if it is problematic, you can turn it off here." -msgstr "Pour faciliter l'administration de vos vues, Views propose des liens 'flottants' pour vous conduire aux écrans d'édition et d'export d'une vue, lorsque celle-ci est utilisée. Cela peut toutefois se révéler gênant sur certains thèmes ; si ces liens posent des problèmes, vous pouvez les désactiver ici." - -#: includes/admin.inc:2616 -msgid "Enable views performance statistics via the Devel module" -msgstr "Activer les statistiques de performances de Views via le module Devel" - -#: includes/admin.inc:2617 -msgid "Check this to enable some Views query and performance statistics <em>if Devel is installed</em>." -msgstr "Cochez cette case pour activer certaines statistiques sur les performances et requêtes de Views, <em>à condition que Devel soit installé</em>." - -#: includes/admin.inc:2623 -msgid "Disable javascript with Views" -msgstr "Désactiver le JavaScript avec Views" - -#: includes/admin.inc:2624 -msgid "If you are having problems with the javascript, you can disable it here; the Views UI should degrade and still be usable without javascript, it just not as good." -msgstr "Si vous rencontrez des problèmes avec JavaScript, vous pouvez le désactiver ici ; l'interface graphique de Views devrait s'adapter mais rester utilisable sans JavaScript, simplement sa qualité s'en ressentira." - -#: includes/admin.inc:2632 -msgid "Page region to output performance statistics" -msgstr "Région de la page où afficher les statistiques de performance" - -#: includes/admin.inc:2645 -msgid "The cache has been cleared." -msgstr "Le cache a été vidé." - -#: includes/admin.inc:2809 -msgid "Error: missing @component" -msgstr "Erreur : @component manquant" - -#: includes/ajax.inc:73 -msgid "Server reports invalid input error." -msgstr "Le serveur signale une erreur de saisie invalide." - -#: includes/ajax.inc:74 -msgid "Error" -msgstr "Erreur" - -#: includes/argument.handlers.inc:91 -msgid "All" -msgstr "Tous / Toutes" - -#: includes/argument.handlers.inc:113 -msgid "The title to use when this argument is present; it will override the title of the view and titles from previous arguments. You can use percent substitution here to replace with argument titles. Use \"%1\" for the first argument, \"%2\" for the second, etc." -msgstr "Titre à utiliser lorsque cet argument est présent ; il supplante le titre de la vue et les titres des arguments précédents. Vous pouvez utiliser le caractère pourcent pour réaliser des substitutions ici et remplacer par les titres des arguments. Utilisez \"%1\" pour le premier argument, \"%2\" pour le deuxième, etc." - -#: includes/argument.handlers.inc:126 -msgid "Action to take if argument is not present" -msgstr "Action à mener si l'argument est absent" - -# ~fuzzy -#: includes/argument.handlers.inc:138 -msgid "Wildcard" -msgstr "Joker" - -#: includes/argument.handlers.inc:141 -msgid "If this value is received as an argument, the argument will be ignored; i.e, \"all values\"" -msgstr "Si cette valeur est reçue comme argument, l'argument sera ignoré ; correspond à \"toutes les valeurs\"" - -#: includes/argument.handlers.inc:147 -msgid "Wildcard title" -msgstr "Titre joker" - -#: includes/argument.handlers.inc:150 -msgid "The title to use for the wildcard in substitutions elsewhere." -msgstr "Titre à utiliser pour le joker dans les substitutions réalisées ailleurs." - -#: includes/argument.handlers.inc:173 -msgid "Validator" -msgstr "Validateur" - -#: includes/argument.handlers.inc:177 -msgid "<Basic validation>" -msgstr "<Validation de base>" - -#: includes/argument.handlers.inc:213 -msgid "Action to take if argument does not validate" -msgstr "Actions à mener sur l'argument ne passe pas la validation" - -#: includes/argument.handlers.inc:228 -msgid "Display all values" -msgstr "Afficher toutes les valeurs" - -#: includes/argument.handlers.inc:233 -msgid "Hide view / Page not found (404)" -msgstr "Cacher la vue / Page non trouvée (404)" - -#: includes/argument.handlers.inc:237 -msgid "Display empty text" -msgstr "Afficher le texte vide" - -#: includes/argument.handlers.inc:242 -msgid "Summary, sorted ascending" -msgstr "Sommaire, classement ascendant" - -#: includes/argument.handlers.inc:249 -msgid "Summary, sorted descending" -msgstr "Sommaire, classement descendant" - -#: includes/argument.handlers.inc:256 -msgid "Provide default argument" -msgstr "Fournir l'argument par défaut" - -#: includes/argument.handlers.inc:287 -msgid "Default argument type" -msgstr "Type d'argument par défaut" - -#: includes/argument.handlers.inc:702 -msgid "Current date" -msgstr "Date actuelle" - -#: includes/argument.handlers.inc:757 -msgid "Glossary mode" -msgstr "Mode glossaire" - -#: includes/argument.handlers.inc:758 -msgid "Glossary mode applies a limit to the number of characters used in the argument, which allows the summary view to act as a glossary." -msgstr "Le mode glossaire applique une limite au nombre de caractères utilisés dans l'argument, ce qui permet à la vue sommaire de se comporter comme un glossaire." - -#: includes/argument.handlers.inc:764 -msgid "Character limit" -msgstr "Limite de caractères" - -#: includes/argument.handlers.inc:765 -msgid "How many characters of the argument to filter against. If set to 1, all fields starting with the letter in the argument would be matched." -msgstr "Nombre de caractères de l'argument à utiliser pour le filtrage. Si la valeur est fixée à 1, tous les champs commençant par la lettre saisie en argument correspondront." - -#: includes/argument.handlers.inc:773 -msgid "Case" -msgstr "Casse" - -#: includes/argument.handlers.inc:774 -msgid "When printing the argument result, how to transform the case." -msgstr "À l'affichage du résultat de l'argument, définit la transformation à appliquer à la casse." - -#: includes/argument.handlers.inc:776;790 -msgid "No transform" -msgstr "Aucune transformation" - -#: includes/argument.handlers.inc:777;791 -msgid "Upper case" -msgstr "Majuscules" - -#: includes/argument.handlers.inc:778;792 -msgid "Lower case" -msgstr "Minuscules" - -#: includes/argument.handlers.inc:779;793 -msgid "Capitalize first letter" -msgstr "Mettre la première lettre en majuscule" - -#: includes/argument.handlers.inc:780;794 -msgid "Capitalize each word" -msgstr "Mettre chaque mot en majuscules" - -#: includes/argument.handlers.inc:787 -msgid "Case in path" -msgstr "Casse dans les chemins" - -#: includes/argument.handlers.inc:788 -msgid "When printing url paths, how to transform the of the argument. Do not use this unless with Postgres as it uses case sensitive comparisons." -msgstr "À l'affichage d'URL, indique comment transformer la casse de l'argument. À ne pas utiliser sauf avec Postgres car il y a utilisation de comparaisons sensibles à la casse." - -#: includes/argument.handlers.inc:801 -msgid "Transform spaces to dashes in URL" -msgstr "Dans les URL, transforme les espaces en tirets" - -#: includes/argument.handlers.inc:808;1046 -msgid "Allow multiple arguments to work together." -msgstr "Permettre à plusieurs arguments de collaborer." - -#: includes/argument.handlers.inc:809;1047 -msgid "If selected, multiple instances of this argument can work together, as though multiple terms were supplied to the same argument. This setting is not compatible with the \"Reduce duplicates\" setting." -msgstr "Si cette option est sélectionnée, plusieurs instances de cet argument peuvent collaborer comme si l'on avait fourni plusieurs termes pour le même argument. Ce paramétrage n'est pas compatible avec le paramètre \"Supprimer les doublons\"." - -#: includes/argument.handlers.inc:815;1053 -msgid "Do not display items with no value in summary" -msgstr "Ne pas afficher les éléments sans valeur dans le sommaire" - -#: includes/argument.handlers.inc:936;1038 -msgid "Allow multiple terms per argument." -msgstr "Autoriser plusieurs termes par argument." - -#: includes/argument.handlers.inc:937 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." -msgstr "Si cette option est sélectionnée, les utilisateurs peuvent saisir plusieurs arguments sous la forme 1+2+3 ou 1,2,3." - -#: includes/argument.handlers.inc:943 -msgid "Exclude the argument" -msgstr "Exclure l'argument" - -#: includes/argument.handlers.inc:944 -msgid "If selected, the numbers entered in the argument will be excluded rather than limiting the view." -msgstr "Si cette option est sélectionnée, les nombres saisis dans l'argument seront exclus plutôt que de limiter la vue." - -#: includes/argument.handlers.inc:951;963;1088;1102 -#: modules/taxonomy.views.inc:120;204;287 -msgid "Uncategorized" -msgstr "Sans catégorie" - -#: includes/argument.handlers.inc:967;1106 -msgid "Invalid input" -msgstr "Saisie invalide" - -#: includes/argument.handlers.inc:1039 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 (for OR) or 1,2,3 (for AND)." -msgstr "Si cette option est sélectionnée, les utilisateurs peuvent saisir plusieurs arguments sous la forme 1+2+3 (pour OU) ou 1,2,3 (pour ET)." - -#: includes/convert.inc:14 -msgid "There are no Views 1 views stored in the database to convert." -msgstr "Il n'y a aucune vue Views 1 enregistrée dans la base de données à convertir." - -#: includes/convert.inc:22 -msgid "Operations" -msgstr "Opérations" - -#: includes/convert.inc:33 -msgid "Converted" -msgstr "Converti" - -#: includes/convert.inc:68 -msgid "The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name." -msgstr "Le tableau ci-dessous dresse la liste des vues Views version 1 enregistrées dans la base de données. Vous pouvez, soit les convertir pour fonctionner avec Views version 2, soit les supprimer. Les vues ne peuvent être converties que s'il n'existe pas de vue Views 2 possédant le même nom." - -#: includes/convert.inc:79 -msgid "Unable to find view." -msgstr "Impossible de trouver la vue." - -#: includes/convert.inc:89 -msgid "Unable to convert view." -msgstr "Impossible de convertir la vue." - -#: includes/convert.inc:108 -msgid "This action cannot be undone." -msgstr "Cette action est irréversible." - -#: includes/convert.inc:118 -msgid "The view has been deleted" -msgstr "La vue a été supprimée" - -#: includes/field.handlers.inc:130 -#: includes/filter.handlers.inc:304 -#: includes/relationship.handlers.inc:60 -msgid "Label" -msgstr "Étiquette" - -#: includes/field.handlers.inc:132 -msgid "The label for this field that will be displayed to end users if the style requires it." -msgstr "L'étiquette de ce champ, qui sera affichée aux utilisateurs finaux si le style l'exige." - -#: includes/field.handlers.inc:136 -msgid "Exclude from display" -msgstr "Exclure de l'affichage" - -#: includes/field.handlers.inc:138 -msgid "Check this box to not display this field, but still load it in the view. Use this option to not show a grouping field in each record, or when doing advanced theming." -msgstr "Cochez cette case pour ne pas afficher ce champ mais le charger néanmoins dans la vue. Utilisez cette option pour ne pas montrer un champ de groupement dans chaque enregistrement ou lorsque vous travaillez sur des thèmes avancés." - -#: includes/field.handlers.inc:223 -msgid "Date format" -msgstr "Format de date" - -#: includes/field.handlers.inc:228 -msgid "Custom" -msgstr "Personnalisé" - -#: includes/field.handlers.inc:229 -msgid "Time ago" -msgstr "Il y a" - -#: includes/field.handlers.inc:235 -msgid "Custom date format" -msgstr "Format de date personnalisé" - -#: includes/field.handlers.inc:236 -msgid "If \"Custom\", see <a href=\"http://us.php.net/manual/en/function.date.php\">the PHP docs</a> for date formats. If \"Time ago\" this is the the number of different units to display, which defaults to two." -msgstr "Si \"Personnalisé\", référez-vous à <a href=\"http://fr.php.net/manual/fr/function.date.php\">la documentation PHP</a> relative aux formats de dates. Si \"Il y a\", il s'agit du nombre d'unités différentes à afficher, fixé par défaut à deux." - -#: includes/field.handlers.inc:252 -msgid "%time ago" -msgstr "Il y a %time" - -#: includes/field.handlers.inc:280 -msgid "Output format" -msgstr "Format de sortie" - -#: includes/field.handlers.inc:282 -msgid "Yes/No" -msgstr "Oui/Non" - -#: includes/field.handlers.inc:283 -msgid "True/False" -msgstr "Vrai/Faux" - -#: includes/field.handlers.inc:284 -msgid "On/Off" -msgstr "Activé/Désactivé" - -#: includes/field.handlers.inc:290 -msgid "Reverse" -msgstr "Inversé" - -#: includes/field.handlers.inc:291 -msgid "If checked, true will be displayed as false." -msgstr "Si cette option est cochée, Vrai apparaîtra comme Faux." - -#: includes/field.handlers.inc:305 -#: includes/filter.handlers.inc:853;898 -#: includes/plugins.inc:858;867;884;892;1035;2446 -msgid "Yes" -msgstr "Oui" - -#: includes/field.handlers.inc:305 -#: includes/filter.handlers.inc:853;898 -#: includes/plugins.inc:858;867;884;892;1035;1043;2446 -msgid "No" -msgstr "Non" - -#: includes/field.handlers.inc:307 -#: includes/filter.handlers.inc:822;863 -msgid "True" -msgstr "Vrai" - -#: includes/field.handlers.inc:307 -#: includes/filter.handlers.inc:863 -msgid "False" -msgstr "Faux" - -#: includes/field.handlers.inc:309 -msgid "On" -msgstr "Activé" - -#: includes/field.handlers.inc:309 -msgid "Off" -msgstr "Désactivé" - -#: includes/field.handlers.inc:368 -#: modules/statistics.views.inc:276 -msgid "Display as link" -msgstr "Afficher comme lien" - -#: includes/field.handlers.inc:410 -#: modules/node.views.inc:1289 -msgid "Display type" -msgstr "Type d'affichage" - -#: includes/field.handlers.inc:412 -#: includes/plugins.inc:2971 -msgid "Unordered list" -msgstr "Liste non ordonnée" - -#: includes/field.handlers.inc:413 -#: includes/plugins.inc:2971 -msgid "Ordered list" -msgstr "Liste ordonnée" - -#: includes/field.handlers.inc:414 -msgid "Simple separator" -msgstr "Séparateur simple" - -#: includes/field.handlers.inc:421 -#: includes/plugins.inc:3265;3376;3557 -msgid "Separator" -msgstr "Séparateur" - -#: includes/field.handlers.inc:429 -msgid "Empty list text" -msgstr "Texte de liste vide" - -#: includes/field.handlers.inc:431 -msgid "If the list is empty, you may enter text here that will be displayed." -msgstr "Si la liste est vide, vous pouvez saisir ici le texte qui devra être affiché." - -#: includes/field.handlers.inc:480 -msgid "Round" -msgstr "Arrondi" - -#: includes/field.handlers.inc:481 -msgid "If checked, the number will be rounded." -msgstr "Si cette option est coché, le nombre sera arrondi." - -#: includes/field.handlers.inc:486 -msgid "Precision" -msgstr "Précision" - -#: includes/field.handlers.inc:488 -msgid "Specify how many digits to print after the decimal point." -msgstr "Précisez le nombre de chiffres à afficher après le marqueur décimal." - -#: includes/field.handlers.inc:495 -msgid "Decimal point" -msgstr "Marqueur décimal" - -#: includes/field.handlers.inc:497 -msgid "What single character to use as a decimal point." -msgstr "Caractère à utiliser comme marqueur décimal" - -#: includes/field.handlers.inc:503 -msgid "Thousands separator" -msgstr "Séparateur de milliers" - -#: includes/field.handlers.inc:505 -msgid "What single character to use as the thousands separator." -msgstr "Caractère à utiliser pour séparer les milliers." - -#: includes/field.handlers.inc:510 -msgid "Prefix" -msgstr "Préfixe" - -#: includes/field.handlers.inc:512 -msgid "Text to put before the number, such as currency symbol." -msgstr "Texte à faire figurer avant le nombre, par exemple une unité monétaire." - -#: includes/field.handlers.inc:516 -msgid "Suffix" -msgstr "Suffixe" - -#: includes/field.handlers.inc:518 -msgid "Text to put after the number, such as currency symbol." -msgstr "Texte à faire figurer après le nombre, par exemple une unité monétaire." - -#: includes/filter.handlers.inc:119 -msgid "Operator" -msgstr "Opérateur" - -#: includes/filter.handlers.inc:183 -msgid "Expose" -msgstr "Exposer" - -#: includes/filter.handlers.inc:188 -msgid "This item is currently not exposed. If you <strong>expose</strong> it, users will be able to change the filter as they view it." -msgstr "Cet élément n'est pour le moment pas exposé. Si vous l'<strong>exposez</strong>, les utilisateurs pourront changer le filtre lorsqu'ils l'affichent." - -#: includes/filter.handlers.inc:195 -msgid "Hide" -msgstr "Cacher" - -#: includes/filter.handlers.inc:200 -msgid "This item is currently exposed. If you <strong>hide</strong> it, users will not able to change the filter as they view it." -msgstr "Cet élément est actuellement exposé. Si vous le <strong>cachez</strong>, les utilisateurs ne pourront pas changer le filtre lorsqu'ils l'affichent." - -#: includes/filter.handlers.inc:271 -msgid "Unlock operator" -msgstr "Déverrouiller l'opérateur" - -#: includes/filter.handlers.inc:272 -msgid "When checked, the operator will be exposed to the user" -msgstr "Si cette option est cochée, l'opérateur apparaîtra à l'utilisateur." - -#: includes/filter.handlers.inc:278 -msgid "Operator identifier" -msgstr "Identifiant de l'opérateur" - -#: includes/filter.handlers.inc:280 -msgid "This will appear in the URL after the ? to identify this operator." -msgstr "Ceci apparaîtra dans l'URL après le point d'interrogation ? pour identifier cet opérateur." - -#: includes/filter.handlers.inc:297 -msgid "Filter identifier" -msgstr "Identifiant du filtre" - -#: includes/filter.handlers.inc:299 -msgid "This will appear in the URL after the ? to identify this filter. Cannot be blank." -msgstr "Ceci apparaîtra dans l'URL après le point d'interrogation ? pour identifier ce filtre. Ne peut être laissé à blanc." - -#: includes/filter.handlers.inc:315 -msgid "Optional" -msgstr "Facultatif" - -#: includes/filter.handlers.inc:316 -msgid "This exposed filter is optional and will have added options to allow it not to be set." -msgstr "Ce filtre exposé est facultatif et proposera des options supplémentaires pour permettre de ne pas le paramétrer." - -#: includes/filter.handlers.inc:322 -msgid "Force single" -msgstr "Forcer l'unicité" - -#: includes/filter.handlers.inc:323 -msgid "Force this exposed filter to accept only one option." -msgstr "Forcer ce filtre exposé à n'accepter qu'une seule option." - -#: includes/filter.handlers.inc:329 -msgid "Remember" -msgstr "Mémoriser" - -#: includes/filter.handlers.inc:330 -msgid "Remember the last setting the user gave this filter." -msgstr "Mémoriser le dernier paramétrage utilisé par l'utilisateur pour ce filtre." - -#: includes/filter.handlers.inc:341 -msgid "" -"The identifier is required if the filter is\n" -" exposed." -msgstr "" -"L'identifiant est obligatoire si le filtre est\n" -" exposé." - -#: includes/filter.handlers.inc:347 -msgid "This identifier is not allowed." -msgstr "Cet identifiant n'est pas autorisé." - -#: includes/filter.handlers.inc:448 -msgid "<Any>" -msgstr "<N'importe lequel>" - -#: includes/filter.handlers.inc:540;582;1089 -msgid "Is equal to" -msgstr "Est égal à " - -#: includes/filter.handlers.inc:541;588;1095 -msgid "Is not equal to" -msgstr "N'est pas égal à" - -#: includes/filter.handlers.inc:551;714;1197 -msgid "Value" -msgstr "Valeur" - -#: includes/filter.handlers.inc:583;589;1091 -msgid "=" -msgstr "=" - -#: includes/filter.handlers.inc:594 -msgid "Contains" -msgstr "Contient" - -#: includes/filter.handlers.inc:595 -msgid "contains" -msgstr "contient" - -#: includes/filter.handlers.inc:600 -msgid "Contains any word" -msgstr "Contient n'importe quel mot" - -#: includes/filter.handlers.inc:601 -msgid "has word" -msgstr "contient le mot" - -#: includes/filter.handlers.inc:606 -msgid "Contains all words" -msgstr "Contient tous les mots" - -#: includes/filter.handlers.inc:607 -msgid "has all" -msgstr "contient tous" - -#: includes/filter.handlers.inc:612 -msgid "Starts with" -msgstr "Commence par" - -#: includes/filter.handlers.inc:613 -msgid "begins" -msgstr "commence" - -#: includes/filter.handlers.inc:618 -msgid "Ends with" -msgstr "Finit par" - -#: includes/filter.handlers.inc:619 -msgid "ends" -msgstr "finit" - -#: includes/filter.handlers.inc:624 -msgid "Does not contain" -msgstr "Ne contient pas" - -#: includes/filter.handlers.inc:625 -msgid "!has" -msgstr "!has" - -#: includes/filter.handlers.inc:634;1130 -msgid "Is empty (NULL)" -msgstr "Est vide (NULL)" - -#: includes/filter.handlers.inc:636;1132 -msgid "empty" -msgstr "vide" - -#: includes/filter.handlers.inc:640;1136 -msgid "Is not empty (NULL)" -msgstr "N'est pas vide (NULL)" - -#: includes/filter.handlers.inc:642;1138 -msgid "not empty" -msgstr "non vide" - -#: includes/filter.handlers.inc:665 -msgid "exposed>" -msgstr "exposé>" - -#: includes/filter.handlers.inc:672 -msgid "Case sensitive" -msgstr "Sensible à la casse" - -#: includes/filter.handlers.inc:674 -msgid "Case sensitive filters may be faster; MySQL might ignore case sensitivity." -msgstr "Les filtres sensibles à la casse peuvent être plus rapides ; MySQL peut ignorer la sensibilité à la casse." - -#: includes/filter.handlers.inc:860;1009 -msgid "exposed" -msgstr "exposé" - -#: includes/filter.handlers.inc:888 -msgid "Options" -msgstr "Options" - -#: includes/filter.handlers.inc:910 -msgid "Limit list to selected items" -msgstr "Limiter la liste aux éléments sélectionnés" - -#: includes/filter.handlers.inc:911 -msgid "If checked, the selected items presented to the user will be the only ones selected here." -msgstr "Si cette option est cochée, les éléments sélectionnés présentés à l'utilisateur seront uniquement ceux sélectionnés ici." - -#: includes/filter.handlers.inc:930;1459 -msgid "Is one of" -msgstr "Fait partie de" - -#: includes/filter.handlers.inc:931 -msgid "Is not one of" -msgstr "Ne fait pas partie de " - -#: includes/filter.handlers.inc:1022 -#: modules/system.views.inc:236 -msgid "Unknown" -msgstr "Inconnu" - -#: includes/filter.handlers.inc:1077 -msgid "Is less than" -msgstr "Est inférieur à" - -#: includes/filter.handlers.inc:1079 -msgid "<" -msgstr "<" - -#: includes/filter.handlers.inc:1083 -msgid "Is less than or equal to" -msgstr "Est inférieur ou égal à" - -#: includes/filter.handlers.inc:1085 -msgid "<=" -msgstr "<=" - -#: includes/filter.handlers.inc:1097 -msgid "!=" -msgstr "!=" - -#: includes/filter.handlers.inc:1101 -msgid "Is greater than or equal to" -msgstr "Est supérieur ou égal à" - -#: includes/filter.handlers.inc:1103 -msgid ">=" -msgstr ">=" - -#: includes/filter.handlers.inc:1107 -msgid "Is greater than" -msgstr "Est supérieur à" - -#: includes/filter.handlers.inc:1109 -msgid ">" -msgstr ">" - -#: includes/filter.handlers.inc:1113 -msgid "Is between" -msgstr "Est compris entre" - -#: includes/filter.handlers.inc:1115 -msgid "between" -msgstr "entre" - -#: includes/filter.handlers.inc:1119 -msgid "Is not between" -msgstr "N'est pas compris entre" - -#: includes/filter.handlers.inc:1121 -msgid "not between" -msgstr "pas entre" - -#: includes/filter.handlers.inc:1212 -msgid "Min" -msgstr "Min" - -#: includes/filter.handlers.inc:1218 -msgid "And max" -msgstr "Et max" - -#: includes/filter.handlers.inc:1218 -msgid "And" -msgstr "Et" - -#: includes/filter.handlers.inc:1275 -msgid "@min and @max" -msgstr "@min et @max" - -#: includes/filter.handlers.inc:1301 -msgid "Value type" -msgstr "Type de valeur" - -#: includes/filter.handlers.inc:1303 -msgid "A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred." -msgstr "Date dans n'importe quel format machine. AAAA-MM-JJ HH:MM:SS est préférable" - -#: includes/filter.handlers.inc:1304 -msgid "An offset from the current time such as \"+1 day\" or \"-2 hours -30 minutes\"" -msgstr "Décalage à partir de l'heure courante, par exemple \"+1 jour\" ou \"-2 heures -30 minutes\"" - -#: includes/filter.handlers.inc:1354;1360;1364 -msgid "Invalid date format." -msgstr "Format de date invalide." - -#: includes/filter.handlers.inc:1460 -msgid "Is all of" -msgstr "Tout parmi" - -#: includes/filter.handlers.inc:1461 -msgid "Is none of" -msgstr "Aucun parmi" - -#: includes/handlers.inc:136 -msgid "!group: !title" -msgstr "!group : !title" - -#: includes/handlers.inc:336 -msgid "Broken/missing handler" -msgstr "Gestionnaire défectueux/manquant" - -#: includes/handlers.inc:344 -msgid "The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item." -msgstr "Le gestionnaire de cet élément est défectueux ou absent, et ne peut donc être utilisé. Si un module a fourni le gestionnaire puis a été désactivé, réactiver le module peut permettre de le restaurer. Sinon, vous devriez probablement supprimer cet élément." - -#: includes/handlers.inc:380 -msgid "Reduce duplicates" -msgstr "Supprimer les doublons" - -#: includes/handlers.inc:381 -msgid "This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution." -msgstr "Ce filtre peut causer l'apparition de doublons pour les éléments possédant plusieurs des options sélectionnées. Si ce filtre provoque l'apparition de doublons, cette case peut supprimer les doublons en question. Toutefois, plus il y a de termes à rechercher, plus les performances de la requête diminueront : utilisez-la donc avec précautions." - -#: includes/plugins.inc:19 -msgid "Default settings for this view." -msgstr "Paramètres par défaut pour cette vue." - -#: includes/plugins.inc:33 -msgid "Display the view as a page, with a URL and menu links." -msgstr "Afficher la vue en tant que page, avec une URL et des liens de menu." - -#: includes/plugins.inc:44;53 -msgid "Block" -msgstr "Bloc" - -#: includes/plugins.inc:45 -msgid "Display the view as a block." -msgstr "Afficher la vue en tant que bloc." - -#: includes/plugins.inc:57 -msgid "Attachment" -msgstr "Fichier attaché" - -#: includes/plugins.inc:58 -msgid "Attachments added to other displays to achieve multiple views in the same view." -msgstr "Fichiers attachés à d'autres affichages pour parvenir à plusieurs vues à l'intérieur de la même vue." - -#: includes/plugins.inc:66 -msgid "Display the view as a feed, such as an RSS feed." -msgstr "Afficher la vue en tant que flux, par exemple un flux RSS." - -#: includes/plugins.inc:78;124 -msgid "Unformatted" -msgstr "Non mis en forme" - -#: includes/plugins.inc:79 -msgid "Displays rows one after another." -msgstr "Afficher les lignes les unes après les autres." - -#: includes/plugins.inc:89 -msgid "Displays rows as an HTML list." -msgstr "Afficher les lignes dans une liste HTML." - -#: includes/plugins.inc:97 -msgid "Grid" -msgstr "Grille" - -#: includes/plugins.inc:98 -msgid "Displays rows in a grid." -msgstr "Afficher les lignes dans une grille." - -#: includes/plugins.inc:106 -msgid "Table" -msgstr "Tableau" - -#: includes/plugins.inc:107 -msgid "Displays rows in a table." -msgstr "Afficher les lignes dans un tableau." - -#: includes/plugins.inc:117 -msgid "Displays the default summary summary as a list." -msgstr "Afficher le sommaire du sommaire par défaut en tant que liste." - -#: includes/plugins.inc:125 -msgid "Displays the summary unformatted, with option for one after another or inline." -msgstr "Affiche le sommaire sans mise en forme, les informations apparaissant, soit les unes après les autres, soit en ligne." - -#: includes/plugins.inc:132 -msgid "RSS Feed" -msgstr "Flux RSS" - -#: includes/plugins.inc:133 -msgid "Generates an RSS feed from a view." -msgstr "Génère un flux RSS à partir d'une vue." - -#: includes/plugins.inc:143 -#: includes/view.inc:1663 -msgid "Fields" -msgstr "Champs" - -#: includes/plugins.inc:144 -msgid "Displays the fields with an optional template." -msgstr "Affiche les champs avec un template facultatif." - -#: includes/plugins.inc:154 -msgid "Fixed entry" -msgstr "Entrée fixe" - -#: includes/plugins.inc:158;164 -msgid "PHP Code" -msgstr "Code PHP" - -#: includes/plugins.inc:168 -msgid "Numeric" -msgstr "Numérique" - -#: includes/plugins.inc:783 -msgid "Broken field" -msgstr "Champ brisé" - -#: includes/plugins.inc:800 -msgid "Basic settings" -msgstr "Paramètres de base" - -#: includes/plugins.inc:807 -msgid "Change the name of this display." -msgstr "Changer le nom de l'affichage." - -#: includes/plugins.inc:819 -msgid "Change the title that this display will use." -msgstr "Changer le titre que cet affichage utilisera." - -#: includes/plugins.inc:829 -msgid "Style" -msgstr "Style" - -#: includes/plugins.inc:831 -msgid "Change the style plugin." -msgstr "Changer le plugin de style." - -#: includes/plugins.inc:845 -msgid "Row style" -msgstr "Style de ligne" - -#: includes/plugins.inc:847 -msgid "Change the row plugin." -msgstr "Changer le plugin de ligne." - -#: includes/plugins.inc:857 -msgid "Use AJAX" -msgstr "Utiliser AJAX" - -#: includes/plugins.inc:859 -msgid "Change whether or not this display will use AJAX." -msgstr "Modifier si cet affichage utilisera ou non AJAX." - -#: includes/plugins.inc:866 -msgid "Use pager" -msgstr "Utiliser la pagination" - -#: includes/plugins.inc:867 -msgid "Mini" -msgstr "Mini" - -#: includes/plugins.inc:868 -msgid "Change this display's pager setting." -msgstr "Modifier les paramètres de pagination de cet affichage." - -#: includes/plugins.inc:875;1054 -msgid "Items per page" -msgstr "Éléments par page" - -#: includes/plugins.inc:875;1054;3339 -msgid "Items to display" -msgstr "Éléments à afficher" - -#: includes/plugins.inc:876 -msgid "Unlimited" -msgstr "Illimité" - -#: includes/plugins.inc:877 -msgid "Change how many items to display." -msgstr "Changer le nombre d'éléments à afficher." - -#: includes/plugins.inc:883 -msgid "More link" -msgstr "Lien \"plus\"" - -#: includes/plugins.inc:885 -msgid "Specify whether this display will provide a \"more\" link." -msgstr "Spécifie si cet affichage proposera un lien \"plus\"." - -#: includes/plugins.inc:891;1081 -msgid "Distinct" -msgstr "Distinct" - -#: includes/plugins.inc:893;1078 -msgid "Display only distinct items, without duplicates." -msgstr "Afficher uniquement les éléments distincts, sans doublon." - -#: includes/plugins.inc:904;1104 -msgid "Unrestricted" -msgstr "Illimité" - -#: includes/plugins.inc:912 -msgid "Multiple roles" -msgstr "Rôles multiples" - -#: includes/plugins.inc:924 -msgid "Access" -msgstr "Accès" - -#: includes/plugins.inc:926 -msgid "Specify access control settings for this display." -msgstr "Précise les paramètres de contrôle d'accès pour cet affichage." - -#: includes/plugins.inc:946 -msgid "Link display" -msgstr "Affichage de lien" - -#: includes/plugins.inc:948 -msgid "Specify which display this display will link to." -msgstr "Indique vers quel affichage conduit le lien de cet affichage." - -#: includes/plugins.inc:953;1143 -msgid "Header" -msgstr "Entête" - -#: includes/plugins.inc:953;1159 -msgid "Footer" -msgstr "Pied de page" - -#: includes/plugins.inc:953;1175 -msgid "Empty text" -msgstr "Texte de page vide" - -#: includes/plugins.inc:969 -msgid "Unknown/missing filter" -msgstr "Filtre inconnu/manquant" - -#: includes/plugins.inc:977 -msgid "Change this display's !name." -msgstr "Changer le !name de cet affichage." - -#: includes/plugins.inc:983 -msgid "Theme" -msgstr "Thème" - -#: includes/plugins.inc:984 -msgid "Information" -msgstr "Informations" - -#: includes/plugins.inc:985 -msgid "Get information on how to theme this display" -msgstr "Obtenir des informations sur comment créer un thème pour cet affichage" - -#: includes/plugins.inc:1011 -msgid "The name of this display" -msgstr "Nom de cet affichage" - -#: includes/plugins.inc:1014 -msgid "This title will appear only in the administrative interface for the View." -msgstr "Ce titre apparaîtra uniquement dans l'interface d'administration de la vue." - -#: includes/plugins.inc:1019 -msgid "The title of this view" -msgstr "Titre de cette vue" - -#: includes/plugins.inc:1022 -msgid "This title will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc." -msgstr "Ce titre sera affiché avec la vue, partout où des titres sont normalement affichés (par exemple titre de page, titre de bloc, etc.)." - -#: includes/plugins.inc:1027 -msgid "Use AJAX when available to load this view" -msgstr "Utiliser AJAX lorsque c'est possible pour charger cette vue" - -#: includes/plugins.inc:1031 -msgid "If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This means the entire page will not refresh. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content." -msgstr "Si cette option est sélectionnée, cette vue utilisera un mécanisme Ajax pour la pagination, le tri des tables et les filtres exposés. Cela signifie que la page n'aura pas à se rafraîchir entièrement. Il n'est pas recommandé d'utiliser cette option si cette vue constitue le contenu principal de la page, car elle empêche les liens profonds vers des pages spécifiques ; c'est toutefois très utile pour les contenus accessoires." - -#: includes/plugins.inc:1040 -msgid "Use a pager for this view" -msgstr "Utiliser une pagination pour cette vue" - -#: includes/plugins.inc:1043 -msgid "Full pager" -msgstr "Pagination complète" - -#: includes/plugins.inc:1043 -msgid "Mini pager" -msgstr "Mini-pagination" - -#: includes/plugins.inc:1048 -msgid "Pager element" -msgstr "Élément de pagination" - -#: includes/plugins.inc:1049 -msgid "Unless you're experiencing problems with pagers related to this view, you should leave this at 0. If using multiple pagers on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add a lot of commas to your URLs, so avoid if possible." -msgstr "À moins que vous ne rencontriez des difficultés avec la pagination associée à cette vue, vous devriez laisser cette option à 0. Si vous utilisez plusieurs une pagination sur plusieurs pages, vous pouvez être amené à choisir une valeur plus élevée pour ce nombre afin d'éviter tout conflit avec ?page=array. Les valeurs importantes ajouteront un grand nombre de virgules à vos URL, c'est donc à éviter autant que possible." - -#: includes/plugins.inc:1058 -msgid "The number of items to display per page. Enter 0 for no limit." -msgstr "Nombre d'éléments à afficher par page. Choisissez 0 pour un nombre illimité." - -#: includes/plugins.inc:1063 -msgid "Offset" -msgstr "Décalage" - -#: includes/plugins.inc:1064 -msgid "The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed. Offset can not be used if items to display is 0; instead use a very large number there." -msgstr "Nombre d'éléments à sauter. Si, par exemple, ce champ vaut 3, les trois premiers éléments seront sautés et non affichés. Le décalage ne peut pas être utilisé si le nombre d'éléments à afficher vaut 0 ; vous devez au contraire utiliser un très grand nombre pour cette dernière valeur." - -#: includes/plugins.inc:1069 -msgid "Add a more link to the bottom of the display." -msgstr "Ajouter un lien \"plus\" en bas de l'affichage." - -#: includes/plugins.inc:1072 -msgid "Create more link" -msgstr "Créer un lien \"plus\"" - -#: includes/plugins.inc:1073 -msgid "This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above." -msgstr "Ceci ajoute un lien \"plus\" en bas de la vue, qui conduit à la vue de la page. SI vous avez plusieurs vues de la page, le lien pointe vers l'affichage spécifié dans l'option 'Affichage de lien' ci-dessus." - -#: includes/plugins.inc:1082 -msgid "This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution." -msgstr "Ceci contraint la vue à ne présenter que des éléments distincts. S'il existe plusieurs éléments identiques, chacun n'apparaîtra qu'une seule fois. Vous pouvez utiliser cette option pour essayer de supprimer les doublons d'une vue, bien que cela ne fonctionne pas toujours. Notez que cela peut ralentir les requêtes, c'est donc une option à utiliser avec précautions." - -#: includes/plugins.inc:1087 -msgid "Access restrictions" -msgstr "Restrictions d'accès" - -#: includes/plugins.inc:1104 -msgid "By role" -msgstr "Par rôle" - -#: includes/plugins.inc:1104 -msgid "By permission" -msgstr "Par droits d'accès" - -#: includes/plugins.inc:1113 -msgid "If by role" -msgstr "Si par rôle" - -#: includes/plugins.inc:1116 -msgid "Only the checked roles will be able to access this display. Note that users with \"access all views\" can see any view, regardless of role." -msgstr "Seuls les rôles cochés seront en mesure d'accéder à cet affichage. Notez que les utilisateurs disposant des droits \"accéder à toutes les vues\" pourront consulter toutes les vues, quel que soit leur rôle." - -#: includes/plugins.inc:1133 -msgid "If by permission" -msgstr "Si par droits d'accès" - -#: includes/plugins.inc:1135 -msgid "Only users with the selected permission flag will be able to access this display. Note that users with \"access all views\" can see any view, regardless of other permissions." -msgstr "Seuls les utilisateurs disposant du droit d'accès approprié pourront accéder à cet affichage. Notez que les utilisateurs disposant des droits \"accéder à toutes les vues\" pourront consulter toutes les vues, indépendamment des autres droits." - -#: includes/plugins.inc:1146;1162 -msgid "Display even if view has no result" -msgstr "Afficher même si la vue n'a pas de résultat" - -#: includes/plugins.inc:1153 -msgid "Text to display at the top of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Texte à montrer en haut de la vue. Ceci peut contenir des explications, des liens ou tout ce que vous désirez. Optionnel." - -#: includes/plugins.inc:1169 -msgid "Text to display beneath the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Texte à montrer sous la vue. Ceci peut contenir des explications, des liens ou tout ce que vous désirez. Optionnel." - -#: includes/plugins.inc:1180 -msgid "Text to display if the view has no results. Optional." -msgstr "Texte à afficher si la vue n'a pas de résultat. Optionnel." - -#: includes/plugins.inc:1186 -msgid "How should this view be styled" -msgstr "Style à appliquer à cette vue" - -#: includes/plugins.inc:1192 -msgid "If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary." -msgstr "Si le style de votre choix possède des paramètres, veillez à cliquer sur le bouton de paramétrage qui apparaîtra à son côté dans le résumé de la vue." - -#: includes/plugins.inc:1200 -msgid "You may also adjust the !settings for the currently selected style by clicking on the icon." -msgstr "Vous pouvez également adapter les !settings pour le style en cours en cliquant sur l'icône." - -#: includes/plugins.inc:1200;1242 -msgid "settings" -msgstr "paramètres" - -#: includes/plugins.inc:1206 -msgid "Style options" -msgstr "Options de style" - -#: includes/plugins.inc:1218 -msgid "Row style options" -msgstr "Options de style de ligne" - -#: includes/plugins.inc:1230 -msgid "How should each row in this view be styled" -msgstr "Comment les lignes de cette vue doivent être stylées" - -#: includes/plugins.inc:1242 -msgid "You may also adjust the !settings for the currently selected row style by clicking on the icon." -msgstr "Vous pouvez également adapter les !settings pour le style de la ligne en cours en cliquant sur l'icône." - -#: includes/plugins.inc:1248 -msgid "Which display to use for path" -msgstr "Affichage à utiliser pour le chemin" - -#: includes/plugins.inc:1257 -msgid "Which display to use to get this display's path for things like summary links, rss feed links, more links, etc." -msgstr "Quel affichage utiliser pour obtenir le chemin de cet affichage pour des éléments du type liens de résumé, liens de flux RSS, liens \"plus\", etc." - -#: includes/plugins.inc:1262 -msgid "Theming information" -msgstr "Informations de thème" - -#: includes/plugins.inc:1270 -msgid "Display output" -msgstr "Sortie de l'affichage" - -#: includes/plugins.inc:1275 -msgid "Style output" -msgstr "Sortie du style" - -#: includes/plugins.inc:1280 -msgid "Row style output" -msgstr "Sortie du style de ligne" - -#: includes/plugins.inc:1286 -msgid "Field @field" -msgstr "Champ @field" - -#: includes/plugins.inc:1294 -msgid "<strong>Important!</strong> When you add a new template to your theme, be sure to clear the theme registry cache. You can do this by visiting administer >> site building >> themes -- just loading the page should clear the cache." -msgstr "<strong>Important !</strong> Lorsque vous ajoutez un nouveau template à votre thème, veillez à bien vider le cache de registre du thème. Vous pouvez procéder en consultant la page administrer >> construction du site >> thèmes : le simple fait de charger la page devrait vider le cache." - -#: includes/plugins.inc:1306 -msgid "Theming information (display)" -msgstr "Informations de thème (affichage)" - -#: includes/plugins.inc:1307;1326;1347;1368 -msgid "Back to !info." -msgstr "Revenir à !info." - -#: includes/plugins.inc:1307;1326;1347;1368 -msgid "theming information" -msgstr "informations de thème" - -#: includes/plugins.inc:1310 -msgid "This display has no theming information" -msgstr "Cet affichage n'a aucune information de thème" - -#: includes/plugins.inc:1313 -msgid "This is the default theme template used for this display." -msgstr "Ceci est le template de thème par défaut utilisé pour cet affichage." - -#: includes/plugins.inc:1325 -msgid "Theming information (style)" -msgstr "Informations de thème (style)" - -#: includes/plugins.inc:1331 -msgid "This display has no style theming information" -msgstr "Cet affichage n'a aucune information de thème de style" - -#: includes/plugins.inc:1334 -msgid "This is the default theme template used for this style." -msgstr "Ceci est le template de thème par défaut utilisé pour ce style." - -#: includes/plugins.inc:1346;1367 -msgid "Theming information (row style)" -msgstr "Informations de thème (style de ligne)" - -#: includes/plugins.inc:1352 -msgid "This display has no row style theming information" -msgstr "Cet affichage n'a aucune information de thème de style de ligne" - -#: includes/plugins.inc:1355;1370 -msgid "This is the default theme template used for this row style." -msgstr "Ceci est le template de thème par défaut utilisé pour ce style de ligne." - -#: includes/plugins.inc:1434 -msgid "You must select at least one role if type is \"by role\"" -msgstr "Vous devez sélectionner au moins un rôle si le type est \"par rôle\"" - -#: includes/plugins.inc:1551 -msgid "Override" -msgstr "Supplanter" - -#: includes/plugins.inc:1563 -msgid "Use default" -msgstr "Utiliser la valeur par défaut" - -#: includes/plugins.inc:1756 -msgid "Display @display uses fields but there are none defined for it." -msgstr "L'affichage @display utilise des champs mais aucun champ n'est défini pour cet affichage." - -#: includes/plugins.inc:1760 -msgid "Display @display uses path but path is undefined." -msgstr "L'affichage @display utilise un chemin mais le chemin n'est pas défini." - -#: includes/plugins.inc:1765 -msgid "Display @display has an invalid style plugin." -msgstr "L'affichage @display présente un plugin de style invalide." - -#: includes/plugins.inc:1994 -msgid "Page settings" -msgstr "Paramètres de la page" - -#: includes/plugins.inc:2019 -msgid "No menu" -msgstr "Pas de menu" - -#: includes/plugins.inc:2022 -msgid "Normal: @title" -msgstr "Normal : @title" - -#: includes/plugins.inc:2026 -msgid "Tab: @title" -msgstr "Onglet : @title" - -#: includes/plugins.inc:2036 -msgid "Menu" -msgstr "Menu" - -#: includes/plugins.inc:2042 -msgid "Change settings for the parent menu" -msgstr "Changer les paramètres pour le menu parent" - -#: includes/plugins.inc:2055 -msgid "The menu path or URL of this view" -msgstr "Le chemin ou l'URL de menu pour cette vue" - -#: includes/plugins.inc:2059 -msgid "This view will be displayed by visiting this path on your site. You may use \"%\" in your URL to represent values that will be used for arguments: For example, \"node/%/feed\"." -msgstr "Cette vue sera affichée en visitant ce chemin sur votre site. Vous pouvez utiliser \"%\" dans votre URL pour représenter les valeurs qui seront utilisées comme arguments : par exemple \"node/%/feed\"." - -#: includes/plugins.inc:2065 -msgid "Menu item entry" -msgstr "Entrée d'élément de menu" - -#: includes/plugins.inc:2082 -msgid "No menu entry" -msgstr "Aucune entrée de menu" - -#: includes/plugins.inc:2083 -msgid "Normal menu entry" -msgstr "Entrée de menu normale" - -#: includes/plugins.inc:2084;2131 -msgid "Menu tab" -msgstr "Onglet de menu" - -#: includes/plugins.inc:2085 -msgid "Default menu tab" -msgstr "Onglet de menu par défaut" - -#: includes/plugins.inc:2094 -msgid "If set to normal or tab, enter the text to use for the menu item." -msgstr "Si positionné à normal ou onglet, saisissez le texte à utiliser pour l'élément de menu." - -#: includes/plugins.inc:2103 -msgid "If set to tab, enter the weight of the item. The lower th weight the higher/further left it will appear." -msgstr "Si positionné à onglet, saisissez le poids de l'élément. Plus le poids est faible, plus il apparaîtra haut ou à gauche." - -#: includes/plugins.inc:2109 -msgid "Default tab options" -msgstr "Options d'onglet par défaut" - -#: includes/plugins.inc:2118 -msgid "When providing a menu item as a tab, Drupal needs to know what the parent menu item of that tab will be. Sometimes the parent will already exist, but other times you will need to have one created. The path of a parent item will always be the same path with the last part left off. i.e, if the path to this view is <em>foo/bar/baz</em>, the parent path would be <em>foo/bar</em>." -msgstr "Lorsque l'on fournit un élément de menu en tant qu'onglet, Drupal a besoin de savoir quel sera l'élément de menu parent de cet onglet. Parfois le parent existe déjà, mais vous pouvez également être amené à en créer un. Le chemin d'un élément parent sera toujours le même chemin, dont la dernière partie est supprimée. Par exemple, si le chemin vers cette vue est <em>foo/bar/baz</em>, le chemin parent sera alors <em>foo/bar</em>." - -#: includes/plugins.inc:2129 -msgid "Parent menu item" -msgstr "Élément de menu parent" - -#: includes/plugins.inc:2131 -msgid "Already exists" -msgstr "Existe déjà" - -#: includes/plugins.inc:2131 -msgid "Normal menu item" -msgstr "Élément de menu normal" - -#: includes/plugins.inc:2139 -msgid "If creating a parent menu item, enter the title of the item." -msgstr "Si vous créez un élément de menu parent, saisissez le titre de l'élément." - -#: includes/plugins.inc:2145 -msgid "Tab weight" -msgstr "Poids de l'onglet" - -#: includes/plugins.inc:2149 -msgid "If the parent menu item is a tab, enter the weight of the tab. The lower the number, the more to the left it will be." -msgstr "Si l'élément de menu parent est un onglet, saisissez le poids de l'onglet. Plus le nombre est faible, plus l'élément apparaîtra à gauche." - -#: includes/plugins.inc:2163 -msgid "\"$arg\" is no longer supported. Use % instead." -msgstr "\"$arg\" n'est plus pris en charge. Utilisez plutôt %." - -#: includes/plugins.inc:2173 -msgid "Views cannot create normal menu items for paths with a % in them." -msgstr "Views ne peut pas créer d'élément de menu normal pour les chemins comportant un %." - -#: includes/plugins.inc:2180 -msgid "A display whose path ends with a % cannot be a tab." -msgstr "Un affichage dont le chemin se termine par un % ne peut être un onglet." - -#: includes/plugins.inc:2185 -msgid "Title is required for this menu type." -msgstr "Le titre est obligatoire pour ce type de menu." - -#: includes/plugins.inc:2216 -msgid "Display @display is set to use a menu but the menu title is not set." -msgstr "L'affichage @display est configuré pour utiliser un menu mais le titre du menu n'est pas renseigné." - -#: includes/plugins.inc:2222 -msgid "Display @display is set to use a parent menu but the parent menu title is not set." -msgstr "L'affichage @display est configuré pour utiliser un menu parent mais le titre du menu parent n'est pas renseigné." - -#: includes/plugins.inc:2288 -msgid "Block settings" -msgstr "Paramètres des blocs" - -#: includes/plugins.inc:2302 -msgid "Admin" -msgstr "Admin" - -#: includes/plugins.inc:2314 -msgid "Caching" -msgstr "Mise en cache" - -#: includes/plugins.inc:2324 -msgid "Do not cache" -msgstr "Ne pas mettre en cache" - -#: includes/plugins.inc:2325 -msgid "Cache once for everything (global)" -msgstr "Mettre en cache une fois pour tout (global)" - -#: includes/plugins.inc:2326 -msgid "Per page" -msgstr "Par page" - -#: includes/plugins.inc:2327 -msgid "Per role" -msgstr "Par rôle" - -#: includes/plugins.inc:2328 -msgid "Per role per page" -msgstr "Par rôle par page" - -#: includes/plugins.inc:2329 -msgid "Per user" -msgstr "Par utilisateur" - -#: includes/plugins.inc:2330 -msgid "Per user per page" -msgstr "Par utilisateur par page" - -#: includes/plugins.inc:2355 -msgid "Block admin description" -msgstr "Description pour l'administration des blocs" - -#: includes/plugins.inc:2358 -msgid "This will appear as the name of this block in administer >> site building >> blocks." -msgstr "Ceci apparaîtra comme le nom de ce bloc dans administrer >> construction du site >> blocs." - -#: includes/plugins.inc:2363 -msgid "Block caching type" -msgstr "Type de mise en cache des blocs" - -#: includes/plugins.inc:2367 -msgid "This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed." -msgstr "Ceci positionne l'état par défaut pour la méthode de mise en cache de blocs intégrée à Drupal. Ceci nécessite d'activer la mise en cache dans l'administration des blocs. Attention car vous n'avez que très peu de contrôle sur la fréquence de vidage du cache." - -#: includes/plugins.inc:2418 -msgid "Before" -msgstr "Avant" - -#: includes/plugins.inc:2419 -msgid "After" -msgstr "Après" - -#: includes/plugins.inc:2420 -msgid "Both" -msgstr "Les deux" - -#: includes/plugins.inc:2440 -msgid "Attachment settings" -msgstr "Paramètres de fichiers attachés" - -#: includes/plugins.inc:2445;2486 -msgid "Inherit arguments" -msgstr "Hériter les arguments" - -#: includes/plugins.inc:2451;2495 -msgid "Position" -msgstr "Position" - -#: includes/plugins.inc:2457;2649 -msgid "Multiple displays" -msgstr "Affichages multiples" - -#: includes/plugins.inc:2472;2504;2664;2678 -msgid "Attach to" -msgstr "Attacher à" - -#: includes/plugins.inc:2489 -msgid "Inherit" -msgstr "Hériter" - -#: includes/plugins.inc:2490 -msgid "Should this display inherit its arguments from the parent display to which it is attached?" -msgstr "Cet affichage doit-il hériter ses arguments de l'affichage parent auquel il est attaché ?" - -#: includes/plugins.inc:2498;2687 -msgid "Attach before or after the parent display?" -msgstr "Attacher avant ou après l'affichage parent ?" - -#: includes/plugins.inc:2513 -msgid "Select which display or displays this should attach to." -msgstr "Sélectionnez à quel(s) affichage(s) ceci doit s'attacher." - -#: includes/plugins.inc:2641 -msgid "Feed settings" -msgstr "Paramètres de flux" - -#: includes/plugins.inc:2693 -msgid "This view will be displayed by visiting this path on your site. It is recommended that the path be something like \"path/%/%/feed\" or \"path/%/%/rss.xml\", putting one % in the path for each argument you have defined in the view." -msgstr "Cette vue sera affichée en visitant ce chemin sur votre site. Il est recommandé que le chemin soit du type \"path/%/%/feed\" ou \"path/%/%/rss.xml\" et de placer un caractère % dans le chemin pour chaque argument que vous avez défini dans la vue." - -#: includes/plugins.inc:2835 -msgid "Grouping field" -msgstr "Champ de regroupement" - -#: includes/plugins.inc:2838 -msgid "You may optionally specify a field by which to group the records. Leave blank to not group." -msgstr "Vous pouvez optionnellement spécifier un champ grâce au quel regrouper les enregistrements. Laisser à blanc pour ne rien regrouper." - -#: includes/plugins.inc:2923 -msgid "Style @style requires a row style but the row plugin is invalid." -msgstr "Le style @style nécessite un style de ligne mais le plugin de ligne est invalide." - -#: includes/plugins.inc:2970 -msgid "List type" -msgstr "Type de liste" - -#: includes/plugins.inc:3000 -msgid "Number of columns" -msgstr "Nombre de colonnes" - -#: includes/plugins.inc:3005 -msgid "Alignment" -msgstr "Alignement" - -#: includes/plugins.inc:3006 -msgid "Horizontal" -msgstr "Horizontal" - -#: includes/plugins.inc:3006 -msgid "Vertical" -msgstr "Vertical" - -#: includes/plugins.inc:3008 -msgid "Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down." -msgstr "L'alighement horizontal place les éléments depuis le coin supérieur gauche et en allant vers la droite. L'alignement vertical positionne les éléments depuis le coin supérieur gauche et en allant vers le bas." - -#: includes/plugins.inc:3127 -msgid "You need at least one field before you can configure your table settings" -msgstr "Vous avez besoin d'au moins un champ avant de pouvoir configurer vos paramètres de tableau" - -#: includes/plugins.inc:3136 -msgid "Override normal sorting if click sorting is used" -msgstr "Supplanter le tri normal si le tri par clic est utilisé" - -#: includes/plugins.inc:3142 -msgid "Enable Drupal style \"sticky\" table headers (Javascript)" -msgstr "Activer les entêtes de tableau \"collants\" de Drupal (JavaScript)" - -#: includes/plugins.inc:3144 -msgid "(Sticky header effects will not be active for preview below, only on live output.)" -msgstr "(Les effets d'entêtes collants ne seront pas actifs pour la prévisualisation ci-dessous, uniquement pour une sortie réelle)." - -#: includes/plugins.inc:3149 -msgid "Default sort order" -msgstr "Ordre de tri par défaut" - -#: includes/plugins.inc:3150 -#: includes/sort.handlers.inc:60 -msgid "Ascending" -msgstr "Ascendant" - -#: includes/plugins.inc:3150 -#: includes/sort.handlers.inc:60 -msgid "Descending" -msgstr "Descendant" - -#: includes/plugins.inc:3152 -msgid "If a default sort order is selected, what order should it use by default." -msgstr "Si un ordre de tri par défaut est sélectionné, quel ordre celui-ci doit-il utiliser par défaut." - -#: includes/plugins.inc:3238 -msgid "Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column clicksortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section." -msgstr "Placez les champs dans des colonnes. Vous pouvez combiner plusieurs champs dans une même colonne. Si c'est le cas, le séparateur de la colonne spécifiée sera utilisé pour séparer les champs. Cochez la case classable pour rendre cette colonne classable par clic et cochez le bouton radio tri par défaut pour déterminer quelle colonne sera triée par défaut (s'il doit y en avoir une). Vous pouvez contrôler l'ordre des colonnes et les libellés des champs dans la section champs." - -#: includes/plugins.inc:3263 -#: includes/view.inc:1665 -msgid "Field" -msgstr "Champ" - -#: includes/plugins.inc:3264 -msgid "Column" -msgstr "Colonne" - -#: includes/plugins.inc:3267 -msgid "Sortable" -msgstr "Classable" - -#: includes/plugins.inc:3271 -msgid "Default sort" -msgstr "Tri par défaut" - -#: includes/plugins.inc:3330 -msgid "Display record count with link" -msgstr "Afficher le décompte d'enregistrements avec lien" - -#: includes/plugins.inc:3335 -msgid "Override number of items to display" -msgstr "Supplanter le nombre d'éléments à afficher" - -#: includes/plugins.inc:3372 -msgid "Display items inline" -msgstr "Afficher les éléments en ligne" - -#: includes/plugins.inc:3421 -msgid "Use the site mission for the description" -msgstr "Utiliser l'énoncé de mission du site pour la description" - -#: includes/plugins.inc:3425 -msgid "RSS description" -msgstr "Description RSS" - -#: includes/plugins.inc:3427 -msgid "This will appear in the RSS feed itself." -msgstr "Ceci apparaîtra dans le flux RSS lui-même." - -#: includes/plugins.inc:3550 -msgid "Inline fields" -msgstr "Champs en ligne" - -#: includes/plugins.inc:3553 -msgid "Inline fields will be displayed next to each other rather than one after another." -msgstr "Les champs en ligne seront affichés l'un à côté de l'autre plutôt que l'un après l'autre." - -#: includes/plugins.inc:3561 -msgid "The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field." -msgstr "Le séparateur peut être placé entre les champs en ligne pour éviter qu'ils ne s'entassent les uns sur les autres. Vous pouvez utiliser du HTML pour ce champ." - -#: includes/plugins.inc:3611 -msgid "Default argument" -msgstr "Argument par défaut" - -#: includes/plugins.inc:3653 -msgid "PHP argument code" -msgstr "Code d'argument PHP" - -#: includes/plugins.inc:3656 -msgid "Enter PHP code that returns a value to use for this argument. Do not use <?php ?>. You must return only a single value for just this argument." -msgstr "Saisissez un code PHP renvoyant la valeur à utiliser pour cet argument. N'utilisez pas <?php ?>. vous ne devez renvoyer qu'une seule valeur pour cet argument seul." - -#: includes/plugins.inc:3760 -msgid "PHP validate code" -msgstr "Code de validation PHP" - -#: includes/plugins.inc:3762 -msgid "Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be \"$argument\" and the view will be \"$view\". You may change the argument by setting \"$handler->argument\"." -msgstr "Saisissez un code PHP renvoyant TRUE ou FALSE. Si le code ne renvoie aucune valeur, c'est équivalent à FALSE : vous DEVEZ donc vous assurer que le code renvoie quelque chose si vous ne voulez pas déclarer un argument invalide. N'utilisez pas <?php ?>. L'argument à valider sera \"$argument\" et la vue \"$view\". Vous pouvez changer l'argument en positionnant \"$handler->argument\"." - -#: includes/relationship.handlers.inc:62 -msgid "The label for this relationship that will be displayed only administratively." -msgstr "Intitulé pour cette relation, qui ne sera affiché qu'à des fins d'administration." - -#: includes/relationship.handlers.inc:67 -msgid "Require this relationship" -msgstr "Exiger cette relation" - -#: includes/relationship.handlers.inc:68 -msgid "If required, items that do not contain this relationship will not appear." -msgstr "Si la relation est exigée, les éléments qui ne présentent pas cette relation n'apparaîtront pas." - -#: includes/sort.handlers.inc:43 -msgid "asc" -msgstr "asc" - -#: includes/sort.handlers.inc:47 -msgid "desc" -msgstr "desc" - -#: includes/sort.handlers.inc:59 -msgid "Sort order" -msgstr "Ordre de tri" - -#: includes/sort.handlers.inc:76 -msgid "views_handler_sort_formula missing default: @formula" -msgstr "Manque la valeur par défaut pour views_handler_sort_formula : @formula" - -#: includes/sort.handlers.inc:116 -msgid "Granularity" -msgstr "Granularité" - -#: includes/sort.handlers.inc:118 -msgid "Second" -msgstr "Seconde" - -#: includes/sort.handlers.inc:119 -msgid "Minute" -msgstr "Minute" - -#: includes/sort.handlers.inc:120 -msgid "Hour" -msgstr "Heure" - -#: includes/sort.handlers.inc:121 -msgid "Day" -msgstr "Jour" - -#: includes/sort.handlers.inc:122 -msgid "Month" -msgstr "Mois" - -#: includes/sort.handlers.inc:123 -msgid "Year" -msgstr "Année" - -#: includes/sort.handlers.inc:125 -msgid "The granularity is the smallest unit to use when determining whether two dates are the same; for example, if the granularity is \"Year\" then all dates in 1999, regardless of when they fall in 1999, will be considered the same date." -msgstr "La granularité est la plus petite unité à utiliser pour déterminer si deux dates sont identiques ; par exemple, si la granularité est \"Année\", toutes les dates de l'année 1999, indépendamment du mois et du jour, seront considérées comme identiques." - -#: includes/view.inc:224 -msgid "set_display called with invalid display id @display" -msgstr "set_display appelé avec un identifiant d'affichage @display invalide" - -#: includes/view.inc:946 -msgid "Home" -msgstr "Accueil" - -#: includes/view.inc:1664 -msgid "fields" -msgstr "champs" - -#: includes/view.inc:1666 -msgid "field" -msgstr "champ" - -#: includes/view.inc:1671 -msgid "arguments" -msgstr "arguments" - -#: includes/view.inc:1672;1673 -msgid "Argument" -msgstr "Argument" - -#: includes/view.inc:1677 -msgid "Sort criteria" -msgstr "Critères de tri" - -#: includes/view.inc:1678 -msgid "sort criteria" -msgstr "critères de tri" - -#: includes/view.inc:1679 -msgid "Sort criterion" -msgstr "Critère de tri" - -#: includes/view.inc:1680 -msgid "sort criterion" -msgstr "critère de tri" - -#: includes/view.inc:1684 -msgid "Filters" -msgstr "Filtres" - -#: includes/view.inc:1685 -msgid "filters" -msgstr "filtres" - -#: includes/view.inc:1686 -msgid "Filter" -msgstr "Filtre" - -#: includes/view.inc:1687 -msgid "filter" -msgstr "filtre" - -#: includes/view.inc:1692 -msgid "Relationships" -msgstr "Relations" - -#: includes/view.inc:1693 -msgid "relationships" -msgstr "relations" - -#: js/ajax.js:0;0;0;0;0;0;0 -#: js/ajax_view.js:0;0;0 -msgid "An error occurred at " -msgstr "Une erreur s'est produite à" - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Mismatching fragment identifier." -msgstr "Onglets d'interface jQuery : identifiant de fragment ne correspondant pas." - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Not enough arguments to add tab." -msgstr "Onglets d'interface jQuery : pas assez d'arguments pour ajouter l'onglet." - -#: modules/book.views.inc:21;36;46;99 -msgid "Book" -msgstr "Livre" - -#: modules/book.views.inc:30 -msgid "Top level book" -msgstr "Livre de plus haut niveau" - -#: modules/book.views.inc:31 -msgid "The book the node is in" -msgstr "Le livre dans lequel se trouve le nœud" - -#: modules/book.views.inc:58 -msgid "The weight of the book page." -msgstr "Le poids de la page de livre." - -#: modules/book.views.inc:69 -#: modules/comment.views.inc:202 -#: modules/taxonomy.views.inc:339 -msgid "Depth" -msgstr "Profondeur" - -#: modules/book.views.inc:70 -msgid "The depth of the book page in the hierarchy; top level books have a depth of 1." -msgstr "La profondeur de la page de livre dans la hiérarchie ; les livres de plus haut niveau ont une profondeur de 1." - -#: modules/book.views.inc:87 -msgid "Hierarchy" -msgstr "Hiérarchie" - -#: modules/book.views.inc:88 -msgid "The order of pages in the book hierarchy. Remember to sort by weight too if you want exactly the right order." -msgstr "L'ordre des pages dans la hiérarchie du livre. N'oubliez pas de trier aussi par poids si vous souhaitez exactement le bon ordre." - -#: modules/book.views.inc:110 -msgid "Parent" -msgstr "Parent" - -#: modules/book.views.inc:111 -msgid "The parent book node" -msgstr "Le nœud de livre parent" - -#: modules/book.views.inc:116 -msgid "Book parent" -msgstr "Parent de livre" - -#: modules/comment.views.inc:22;26;382;391 -msgid "Comment" -msgstr "Commentaire" - -#: modules/comment.views.inc:27 -msgid "Comments are responses to node content." -msgstr "Les commentaires sont des réponses au contenu des nœuds." - -#: modules/comment.views.inc:45 -msgid "The title of the comment." -msgstr "Le titre du commentaire." - -#: modules/comment.views.inc:63 -#: modules/node.views.inc:348 -msgid "Body" -msgstr "Corps" - -#: modules/comment.views.inc:64 -msgid "The text of the comment." -msgstr "Le texte du commentaire." - -#: modules/comment.views.inc:76 -msgid "ID" -msgstr "Identifiant" - -#: modules/comment.views.inc:77 -msgid "The commment ID of the field" -msgstr "L'identifiant de commentaire du champ" - -#: modules/comment.views.inc:95 -msgid "Author" -msgstr "Auteur" - -#: modules/comment.views.inc:96 -msgid "The name of the poster." -msgstr "Le nom du rédacteur." - -#: modules/comment.views.inc:114 -msgid "Author's website" -msgstr "Site web de l'auteur" - -#: modules/comment.views.inc:115 -msgid "The website address of the comment's author. Can be a link. The homepage can also be linked with the Name field. Will be empty if posted by a registered user." -msgstr "L'adresse du site web de l'auteur du commentaire. Peut être un lien. Le champ Name peut également servir à créer le lien vers la page d'accueil. Sera vide si le commentaire est publié par un utilisateur enregistré." - -#: modules/comment.views.inc:133 -#: modules/node.views.inc:107 -msgid "Post date" -msgstr "Date de publication" - -#: modules/comment.views.inc:134 -msgid "Date and time of when the comment was posted." -msgstr "Date et heure de publication du commentaire." - -#: modules/comment.views.inc:149 -msgid "In moderation" -msgstr "En cours de modération" - -#: modules/comment.views.inc:150 -msgid "Whether or not the comment is currently in moderation." -msgstr "Indique si le commentaire est en cours de modération ou non." - -#: modules/comment.views.inc:157 -msgid "Moderated" -msgstr "Modéré" - -#: modules/comment.views.inc:167 -msgid "View link" -msgstr "Lien d'affichage" - -#: modules/comment.views.inc:168 -msgid "Provide a simple link to view the comment." -msgstr "Fournit un lien simple pour afficher le commentaire." - -#: modules/comment.views.inc:176 -#: modules/node.views.inc:231 -#: modules/user.views.inc:204 -msgid "Edit link" -msgstr "Lien d'édition" - -#: modules/comment.views.inc:177 -msgid "Provide a simple link to edit the comment." -msgstr "Fournit un lien simple pour modifier le commentaire." - -#: modules/comment.views.inc:185 -#: modules/node.views.inc:239;461 -#: modules/user.views.inc:212 -msgid "Delete link" -msgstr "Lien de suppression" - -#: modules/comment.views.inc:186 -msgid "Provide a simple link to delete the comment." -msgstr "Fournit un lien simple pour supprimer le commentaire." - -#: modules/comment.views.inc:194 -msgid "Reply-to link" -msgstr "Lien de réponse" - -#: modules/comment.views.inc:195 -msgid "Provide a simple link to reply to the comment." -msgstr "Fournit un lien simple pour répondre au commentaire." - -#: modules/comment.views.inc:203 -msgid "Display the depth of the comment if it is threaded." -msgstr "Afficher la profondeur du commentaire s'il apparaît dans un fil." - -#: modules/comment.views.inc:207 -msgid "Thread" -msgstr "Fil" - -#: modules/comment.views.inc:208 -msgid "Sort by the threaded order. This will keep child comments together with their parents." -msgstr "Trier suivant l'ordre du fil. Ceci maintient les commentaires enfants avec leurs parents." - -#: modules/comment.views.inc:214 -#: modules/node.views.inc:1413 -msgid "Node ID" -msgstr "Identifiant de nœud" - -#: modules/comment.views.inc:215 -msgid "The node the comment is a reply to." -msgstr "Le nœud auquel répond le commentaire." - -#: modules/comment.views.inc:220;253 -#: modules/node.views.inc:24;29;89;347;362;473;1178;1187;1197 -msgid "Node" -msgstr "Node" - -#: modules/comment.views.inc:225 -msgid "User ID" -msgstr "Identifiant utilisateur" - -#: modules/comment.views.inc:226 -msgid "The user who wrote the comment." -msgstr "L'utilisateur ayant rédigé le commentaire." - -#: modules/comment.views.inc:231 -#: modules/node.views.inc:335 -#: modules/statistics.views.inc:201 -#: modules/user.views.inc:23;27;221 -msgid "User" -msgstr "Utilisateur" - -#: modules/comment.views.inc:236 -msgid "Parent CID" -msgstr "Identifiant du commentaire parent" - -#: modules/comment.views.inc:237 -msgid "The Comment ID of the parent comment." -msgstr "L'identifiant du commentaire parent." - -#: modules/comment.views.inc:245 -msgid "Parent comment" -msgstr "Commentaire parent" - -#: modules/comment.views.inc:266 -msgid "Last comment time" -msgstr "Heure du dernier commentaire" - -#: modules/comment.views.inc:267 -msgid "Date and time of when the last comment was posted." -msgstr "Date et heure de publication du dernier commentaire." - -#: modules/comment.views.inc:282 -msgid "Last comment author" -msgstr "Auteur du dernier commentaire" - -#: modules/comment.views.inc:283 -msgid "The name of the author of the last posted comment." -msgstr "Le nom de l'auteur ayant rédigé le dernier commentaire." - -#: modules/comment.views.inc:295 -msgid "Comment count" -msgstr "Décompte de commentaires" - -#: modules/comment.views.inc:296 -msgid "The number of comments a node has." -msgstr "Le nombre de commentaires que présente un nœud." - -#: modules/comment.views.inc:314 -msgid "Updated/commented date" -msgstr "Date de mise à jour/commentaire" - -#: modules/comment.views.inc:315 -msgid "The most recent of last comment posted or node updated time." -msgstr "L'information la plus récente entre le dernier commentaire publié et la date de dernière mise à jour du nœud." - -#: modules/comment.views.inc:338 -msgid "New comments" -msgstr "Nouveau commentaires" - -#: modules/comment.views.inc:339 -msgid "The number of new comments on the node." -msgstr "Le nombre de nouveaux commentaires au sein du nœud." - -#: modules/comment.views.inc:347 -msgid "Comment status" -msgstr "Statut des commentaires" - -#: modules/comment.views.inc:348 -msgid "Whether comments are enabled or disabled on the node." -msgstr "Indique si les commentaires sont activés ou désactivés sur le nœud." - -#: modules/comment.views.inc:362 -msgid "User posted or commented" -msgstr "Publié ou commenté par l'utilisateur" - -#: modules/comment.views.inc:363 -msgid "Display comments only if a user posted the node or commented on the node." -msgstr "Afficher les commentaires uniquement si un utilisateur a publié le nœud ou rédigé des commentaires à son sujet" - -#: modules/comment.views.inc:383 -msgid "Display the comment with standard comment view." -msgstr "Afficher le commentaire avec la vue de commentaire standard." - -#: modules/comment.views.inc:392 -msgid "Display the comment as RSS." -msgstr "Afficher le commentaire en tant que RSS." - -#: modules/comment.views.inc:462 -msgid "Link this field to its comment" -msgstr "Lier ce champ à son commentaire" - -#: modules/comment.views.inc:506 -msgid "Link this field to its user or an author's homepage" -msgstr "Lier ce champ à son utilisateur ou à la page d'accueil d'un auteur" - -#: modules/comment.views.inc:553 -#: modules/node.views.inc:601 -#: modules/user.views.inc:447 -msgid "Text to display" -msgstr "Texte à afficher" - -#: modules/comment.views.inc:564 -#: modules/node.views.inc:612 -#: modules/user.views.inc:463 -msgid "view" -msgstr "voir" - -#: modules/comment.views.inc:589 -#: modules/node.views.inc:643 -#: modules/user.views.inc:481 -msgid "edit" -msgstr "éditer" - -#: modules/comment.views.inc:605 -#: modules/node.views.inc:673;752 -#: modules/user.views.inc:499 -msgid "delete" -msgstr "supprimer" - -#: modules/comment.views.inc:621 -msgid "reply" -msgstr "répondre" - -#: modules/comment.views.inc:764 -msgid "Link this field to new comments" -msgstr "Lier ce champ aux nouveaux commentaires" - -#: modules/comment.views.inc:769 -msgid "Display nothing if no new comments" -msgstr "Ne rien afficher s'il n'y a pas de nouveau commentaire" - -#: modules/comment.views.inc:836 -#: modules/user.views.inc:606 -msgid "Anonymous" -msgstr "Anonyme" - -#: modules/comment.views.inc:842 -msgid "No user" -msgstr "Aucun utilisateur" - -#: modules/comment.views.inc:878;895 -msgid "Disabled" -msgstr "Désactivé" - -#: modules/comment.views.inc:880;896 -msgid "Read only" -msgstr "Lecture uniquement" - -#: modules/comment.views.inc:882;897 -msgid "Read/Write" -msgstr "Lecture/Écriture" - -#: modules/comment.views.inc:917 -#: modules/node.views.inc:1235 -msgid "Display links" -msgstr "Afficher les liens" - -#: modules/node.views.inc:30 -msgid "Nodes are a Drupal site's primary content." -msgstr "Les nœuds constituent le contenu primaire d'un site Drupal." - -#: modules/node.views.inc:57 -msgid "Nid" -msgstr "Nid" - -#: modules/node.views.inc:58 -msgid "The node ID of the node." -msgstr "Identifiant du nœud." - -#: modules/node.views.inc:85;403 -msgid "The title of the node." -msgstr "Titre du nœud." - -#: modules/node.views.inc:108 -msgid "The date the node was posted." -msgstr "Date de publication du nœud." - -#: modules/node.views.inc:123 -msgid "Updated date" -msgstr "Date de mise à jour" - -#: modules/node.views.inc:124 -msgid "The date the node was last updated." -msgstr "Date de dernière mise à jour du nœud." - -#: modules/node.views.inc:140 -msgid "The type of a node (for example, \"blog entry\", \"forum post\", \"story\", etc)." -msgstr "Type d'un nœud (par exemple, \"billet de blog\", \"discussion de forum\", \"article\", etc.)." - -#: modules/node.views.inc:158;166;180 -#: modules/upload.views.inc:74 -msgid "Published" -msgstr "Publié" - -#: modules/node.views.inc:159 -msgid "The published status of the node." -msgstr "Statut de publication du nœud." - -#: modules/node.views.inc:175 -msgid "Published or admin" -msgstr "Publié ou admin" - -#: modules/node.views.inc:176 -msgid "Filters out unpublished nodes if the current user cannot view them." -msgstr "Filtre et exclut les nœuds non publiés si l'utilisateur courant ne peut pas les voir." - -#: modules/node.views.inc:186;194 -msgid "Promoted to front page" -msgstr "Promu en page d'accueil" - -#: modules/node.views.inc:187 -msgid "The front page of the node." -msgstr "Page d'accueil du nœud." - -#: modules/node.views.inc:203;212 -msgid "Sticky" -msgstr "Collant" - -#: modules/node.views.inc:204 -msgid "Whether or not the node is sticky." -msgstr "Indique si le nœud est collant ou non." - -#: modules/node.views.inc:223 -msgid "Link" -msgstr "Lien" - -#: modules/node.views.inc:224 -msgid "Provide a simple link to the node." -msgstr "Fournit un lien simple vers le nœud." - -#: modules/node.views.inc:232 -msgid "Provide a simple link to edit the node." -msgstr "Fournit un lien simple pour éditer le nœud." - -#: modules/node.views.inc:240 -msgid "Provide a simple link to delete the node." -msgstr "Fournit un lien simple pour supprimer le nœud." - -#: modules/node.views.inc:248;1115 -msgid "Language" -msgstr "Langue" - -#: modules/node.views.inc:249 -msgid "The language the content is in." -msgstr "Langue de rédaction du contenu." - -#: modules/node.views.inc:266;437 -#: modules/user.views.inc:125 -msgid "Created date" -msgstr "Date de création" - -#: modules/node.views.inc:267 -msgid "In the form of CCYYMMDD." -msgstr "Sous la forme AAAAMMJJ." - -#: modules/node.views.inc:275 -msgid "Created year + month" -msgstr "Année + mois de création" - -#: modules/node.views.inc:276 -msgid "In the form of YYYYMM." -msgstr "Sous la forme AAAAMM." - -#: modules/node.views.inc:284 -msgid "Created year" -msgstr "Année de création" - -#: modules/node.views.inc:285 -msgid "In the form of YYYY." -msgstr "Sous la forme AAAA." - -#: modules/node.views.inc:293 -msgid "Created month" -msgstr "Mois de création" - -#: modules/node.views.inc:294 -msgid "In the form of MM (01 - 12)." -msgstr "Sous la forme MM (01 - 12)." - -#: modules/node.views.inc:302 -msgid "Created week" -msgstr "Semaine de création" - -#: modules/node.views.inc:303 -msgid "In the form of WW (01 - 53)." -msgstr "Sous la forme SS (01 - 53)." - -#: modules/node.views.inc:315;320 -msgid "Node revision" -msgstr "Révision du nœud" - -#: modules/node.views.inc:321 -msgid "Node revisions are a history of changes to nodes." -msgstr "Les révisions du nœud représente l'historique des modifications de ce nœud." - -#: modules/node.views.inc:336 -msgid "Relate a node revision to the user who created the revision." -msgstr "Associer une révision à l'utilisateur qui en est l'auteur." - -#: modules/node.views.inc:341 -msgid "user" -msgstr "utilisateur" - -#: modules/node.views.inc:349 -msgid "The actual, full data in the body field; this may not be valid data on all node types." -msgstr "Les données effectives et complètes du champ corps ; ces données peuvent n'être pas valides sur tous les types de nœuds." - -#: modules/node.views.inc:363 -msgid "Teaser" -msgstr "Résumé" - -#: modules/node.views.inc:364 -msgid "The stored teaser field. This may not be valid or useful data on all node types." -msgstr "Le champ du résumé enregistré. Ceci peut ne pas être valide ou utile pour tous les types de nœuds." - -#: modules/node.views.inc:377 -msgid "Vid" -msgstr "Vid" - -#: modules/node.views.inc:378 -msgid "The revision ID of the node revision." -msgstr "Identifiant de révision du nœud." - -#: modules/node.views.inc:423 -msgid "Log message" -msgstr "Message de journal" - -#: modules/node.views.inc:424 -msgid "The log message entered when the revision was created." -msgstr "Le message enregistré dans le journal à la création de la révision." - -#: modules/node.views.inc:438 -msgid "The date the node revision was created." -msgstr "La date de création de la révision du nœud." - -#: modules/node.views.inc:453 -msgid "Revert link" -msgstr "Lien de retour arrière" - -#: modules/node.views.inc:454 -msgid "Provide a simple link to revert to the revision." -msgstr "Fournit un lien simple pour revenir à une révision antérieure." - -#: modules/node.views.inc:462 -msgid "Provide a simple link to delete the node revision." -msgstr "Fournit un lien simple pour supprimer la révision du nœud." - -#: modules/node.views.inc:489 -msgid "Has new content" -msgstr "Présente des contenus nouveaux" - -#: modules/node.views.inc:492 -msgid "Show a marker if the node has new or updated content." -msgstr "Affiche un marqueur si le nœud présente des contenus nouveaux ou mis à jour." - -#: modules/node.views.inc:495 -msgid "Show only nodes that have new content." -msgstr "Afficher uniquement les nœuds présentant des contenus nouveaux" - -#: modules/node.views.inc:528 -msgid "Link this field to its node" -msgstr "Lier ce champ à son nœud" - -#: modules/node.views.inc:713 -msgid "revert" -msgstr "revenir" - -#: modules/node.views.inc:788 -msgid "Check for new comments as well" -msgstr "Vérifier aussi la présence de nouveaux commentaires" - -#: modules/node.views.inc:860 -msgid "Unknown node type" -msgstr "Type de nœud inconnu" - -#: modules/node.views.inc:1043 -msgid "Week @week" -msgstr "Semaine @week" - -#: modules/node.views.inc:1055 -msgid "Node type" -msgstr "Type de nœud" - -#: modules/node.views.inc:1116 -msgid "Current user's language" -msgstr "Langue de l'utilisateur courant" - -#: modules/node.views.inc:1116 -msgid "No language" -msgstr "Pas de langue" - -#: modules/node.views.inc:1166 -msgid "Unknown language" -msgstr "Langue inconnue" - -#: modules/node.views.inc:1179;1188 -msgid "Display the node with standard node view." -msgstr "Afficher le nœud avec une vue de nœud standard." - -#: modules/node.views.inc:1203 -msgid "Node ID from URL" -msgstr "Identifiant du nœud à partir de l'URL" - -#: modules/node.views.inc:1230 -msgid "Display only teaser" -msgstr "Afficher uniquement le résumé" - -#: modules/node.views.inc:1291 -msgid "Full text" -msgstr "Texte entier" - -#: modules/node.views.inc:1292 -msgid "Title plus teaser" -msgstr "Titre et résumé" - -#: modules/node.views.inc:1293 -msgid "Title only" -msgstr "Titre seulement" - -#: modules/node.views.inc:1294 -msgid "Use default RSS settings" -msgstr "Utiliser le paramétrage RSS par défaut" - -#: modules/node.views.inc:1360 -msgid "read more" -msgstr "en lire plus" - -#: modules/node.views.inc:1393 -msgid "Types" -msgstr "Types" - -#: modules/node.views.inc:1396 -msgid "If you wish to validate for specific node types, check them; if none are checked, all nodes will pass." -msgstr "Si vous souhaitez une validation pour certains types de nœuds spécifiques, cochez-les ; si aucun nœud n'est coché, tous les nœuds seront acceptés." - -#: modules/node.views.inc:1403 -msgid "Validate user has access to the node" -msgstr "L'utilisateur de validation a accès au nœud" - -#: modules/node.views.inc:1411 -#: modules/taxonomy.views.inc:1044 -msgid "Argument type" -msgstr "Type d'argument" - -#: modules/node.views.inc:1414 -msgid "Node IDs separated by , or +" -msgstr "Identifiants des nœuds séparés par des virgules ou des +" - -#: modules/node.views.inc:1533 -msgid "Display %display has no access control but does not contain a filter for published nodes." -msgstr "L'affichage @display ne présente aucun contrôle d'accès mais il ne contient pas de filtre pour les nœuds publiés." - -#: modules/poll.views.inc:23 -msgid "Poll" -msgstr "Sondage" - -#: modules/poll.views.inc:38;47 -#: modules/user.views.inc:173;182 -msgid "Active" -msgstr "Actif" - -#: modules/poll.views.inc:39 -msgid "Whether the poll is open for voting." -msgstr "Indique si le sondage enregistre toujours les votes." - -#: modules/profile.views.inc:20;40 -msgid "Profile" -msgstr "Profil" - -#: modules/profile.views.inc:100 -msgid "@field-name" -msgstr "@field-name" - -#: modules/profile.views.inc:107 -msgid "Profile textfield" -msgstr "Champ de texte de profil" - -#: modules/profile.views.inc:126 -msgid "Profile textarea" -msgstr "Zone de texte de profil" - -#: modules/profile.views.inc:142 -msgid "Profile checkbox" -msgstr "Case à cocher de profil" - -#: modules/profile.views.inc:159 -msgid "Profile URL" -msgstr "URL de profil" - -#: modules/profile.views.inc:175 -msgid "Profile selection" -msgstr "Sélection de profil" - -#: modules/profile.views.inc:195 -msgid "Profile freeform list %field-name." -msgstr "Liste libre de profil %field-name." - -#: modules/profile.views.inc:207 -msgid "Profile date %field-name." -msgstr "Date de profil %field-name." - -#: modules/search.views.inc:23;77;88;106;172;247 -msgid "Search" -msgstr "Recherche" - -#: modules/search.views.inc:72 -msgid "Score" -msgstr "Score" - -#: modules/search.views.inc:73 -msgid "The score of the search item." -msgstr "Score de l'élément de recherche." - -#: modules/search.views.inc:95 -msgid "Links from" -msgstr "Liens en provenance de" - -#: modules/search.views.inc:96 -msgid "Nodes that link from the node." -msgstr "Nœuds vers lesquels pointe le nœud." - -#: modules/search.views.inc:113 -msgid "Links to" -msgstr "Liens vers" - -#: modules/search.views.inc:114 -msgid "Nodes that link to the node." -msgstr "Nœuds pointant vers le nœud." - -#: modules/search.views.inc:125 -msgid "Search Terms" -msgstr "Termes de recherche" - -#: modules/search.views.inc:126 -msgid "The terms to search for." -msgstr "Termes à rechercher." - -#: modules/search.views.inc:156 -msgid "On empty input" -msgstr "En cas de saisie vide" - -#: modules/search.views.inc:159 -msgid "Show All" -msgstr "Montrer tous" - -#: modules/search.views.inc:160 -msgid "Show None" -msgstr "Montrer aucun" - -#: modules/search.views.inc:175 -msgid "Enter the terms you wish to search for." -msgstr "Entrez les termes que vous voulez rechercher." - -#: modules/search.views.inc:190 -msgid "You must include at least one positive keyword with @count characters or more." -msgstr "Vous devez inclure au moins un mot-clé positif de @count caractères ou plus." - -#: modules/search.views.inc:194 -msgid "Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>." -msgstr "Cherche l'un ou l'autre termes avec <strong>OR</strong> en majuscule. Par exemple : <strong>chats OR chiens</strong>." - -#: modules/search.views.inc:248 -msgid "Display the results with standard search view." -msgstr "Afficher les résultats avec la vue de recherche standard." - -#: modules/search.views.inc:274 -msgid "Display score" -msgstr "Afficher le score" - -#: modules/statistics.views.inc:24 -msgid "Node statistics" -msgstr "Statistiques du nœud" - -#: modules/statistics.views.inc:36 -msgid "Total views" -msgstr "Nombre total d'affichages" - -#: modules/statistics.views.inc:37 -msgid "The total number of times the node has been viewed." -msgstr "Le nombre total d'affichages du nœud." - -#: modules/statistics.views.inc:53 -msgid "Views today" -msgstr "Affichages aujourd'hui" - -#: modules/statistics.views.inc:54 -msgid "The total number of times the node has been viewed today." -msgstr "Le nombre total d'affichage du nœud aujourd'hui." - -#: modules/statistics.views.inc:70 -msgid "Most recent view" -msgstr "Dernier affichage" - -#: modules/statistics.views.inc:71 -msgid "The most recent time the node has been viewed." -msgstr "Date de dernier affichage du nœud." - -#: modules/statistics.views.inc:86;91 -msgid "Access log" -msgstr "Journal d'accès" - -#: modules/statistics.views.inc:92 -msgid "Stores site access information." -msgstr "Enregistre les informations relatives à l'accès au site." - -#: modules/statistics.views.inc:106 -msgid "Session ID" -msgstr "Identifiant de session" - -#: modules/statistics.views.inc:107 -msgid "Browser session ID of user that visited page." -msgstr "Identifiant de session du navigateur pour l'utilisateur ayant consulté cette page." - -#: modules/statistics.views.inc:126 -msgid "Page title" -msgstr "Titre de la page" - -#: modules/statistics.views.inc:127 -msgid "Title of page visited." -msgstr "Titre de la page consultée." - -#: modules/statistics.views.inc:147 -msgid "Internal path to page visited (relative to Drupal root.)" -msgstr "Chemin interne vers la page visitée (relatif à la racine de Drupal)." - -#: modules/statistics.views.inc:166 -msgid "Referrer" -msgstr "Référent" - -#: modules/statistics.views.inc:167 -msgid "Referrer URI." -msgstr "URI référent." - -#: modules/statistics.views.inc:182 -msgid "Hostname" -msgstr "Nom d'hôte" - -#: modules/statistics.views.inc:183 -msgid "Hostname of user that visited the page." -msgstr "Nom d'hôte de l'utilisateur ayant consulté la page." - -#: modules/statistics.views.inc:202 -msgid "The user who visited the site." -msgstr "L'utilisateur ayant visité le site." - -#: modules/statistics.views.inc:212 -msgid "Timer" -msgstr "Chronomètre" - -#: modules/statistics.views.inc:213 -msgid "Time in milliseconds that the page took to load." -msgstr "Temps de chargement de la page en millisecondes." - -#: modules/statistics.views.inc:228 -msgid "Timestamp" -msgstr "Horodatage" - -#: modules/statistics.views.inc:229 -msgid "Timestamp of when the page was visited." -msgstr "Tampon d'horodatage de la dernière visite de la page." - -#: modules/system.views.inc:25;30 -msgid "File" -msgstr "Fichier" - -#: modules/system.views.inc:31 -msgid "Files maintained by Drupal and various modules." -msgstr "Fichiers maintenus par Drupal et différents modules." - -#: modules/system.views.inc:49 -msgid "File ID" -msgstr "Identifiant de fichier" - -#: modules/system.views.inc:50 -msgid "The ID of the file." -msgstr "Identifiant du fichier." - -#: modules/system.views.inc:70 -msgid "The name of the file." -msgstr "Nom du fichier." - -#: modules/system.views.inc:89 -msgid "The path of the file." -msgstr "Chemin du fichier." - -#: modules/system.views.inc:107 -msgid "Mime type" -msgstr "Type MIME" - -#: modules/system.views.inc:108 -msgid "The mime type of the file." -msgstr "Le type MIME du fichier." - -#: modules/system.views.inc:126 -msgid "Size" -msgstr "Taille" - -#: modules/system.views.inc:127 -msgid "The size of the file." -msgstr "La taille du fichier." - -#: modules/system.views.inc:142 -msgid "Status" -msgstr "Statut" - -#: modules/system.views.inc:143 -msgid "The status of the file." -msgstr "Le statut du fichier." - -#: modules/system.views.inc:158 -msgid "Upload date" -msgstr "Date de transfert" - -#: modules/system.views.inc:159 -msgid "The date the file was uploaded." -msgstr "La date de transfert du fichier." - -#: modules/system.views.inc:204 -#: modules/upload.views.inc:145;216 -msgid "Link this field to download the file" -msgstr "Liez ce champ pour télécharger le fichier" - -#: modules/system.views.inc:231 -msgid "Temporary" -msgstr "Temporaire" - -#: modules/system.views.inc:232 -msgid "Permanent" -msgstr "Permanent" - -#: modules/system.views.inc:278 -msgid "No title" -msgstr "Sans titre" - -#: modules/taxonomy.views.inc:24;73;143;161;219;255;298;309 -msgid "Taxonomy" -msgstr "Taxonomie" - -#: modules/taxonomy.views.inc:54 -msgid "Vocabulary name" -msgstr "Nom du vocabulaire" - -#: modules/taxonomy.views.inc:56 -msgid "Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the \"Taxonomy: Term\" field is; and can similarly cause duplicates." -msgstr "Nom du vocabulaire dont le terme fait partie. C'est le vocabulaire correspondant au terme du champ \"Taxonomie : Terme\" et peut, de façon similaire, générer des doublons." - -#: modules/taxonomy.views.inc:62 -msgid "Vocabulary ID" -msgstr "Identifiant de vocabulaire" - -#: modules/taxonomy.views.inc:63 -msgid "The taxonomy vocabulary ID" -msgstr "L'identifiant du vocabulaire taxonomique" - -#: modules/taxonomy.views.inc:76;107 -msgid "Term" -msgstr "Terme" - -#: modules/taxonomy.views.inc:77 -msgid "Taxonomy terms are attached to nodes." -msgstr "Les termes de taxonomie sont rattachés aux nœuds." - -#: modules/taxonomy.views.inc:108 -msgid "Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the resultset." -msgstr "Termes de taxonomie. Notez que leur utilisation peut causer l'apparition de doublons parmi les nœuds dans les vues, vous devez donc ajouter des filtres pour limiter l'ensemble des résultats." - -#: modules/taxonomy.views.inc:118 -msgid "Taxonomy term name" -msgstr "Nom du terme de classification" - -#: modules/taxonomy.views.inc:127 -msgid "The term weight field" -msgstr "Champ du poids du terme" - -#: modules/taxonomy.views.inc:139 -msgid "Term description" -msgstr "Description du terme" - -#: modules/taxonomy.views.inc:140 -msgid "The description associated with a taxonomy term." -msgstr "La description associée à un terme de classification." - -#: modules/taxonomy.views.inc:151;763 -msgid "Vocabulary" -msgstr "Vocabulaire" - -#: modules/taxonomy.views.inc:152 -msgid "Filter the results of \"Taxonomy: Term\" to a particular vocabulary." -msgstr "Filtrer les résultats de \"Taxonomie : Terme\" dans un vocabulaire spécifique." - -#: modules/taxonomy.views.inc:193;1046 -msgid "Term ID" -msgstr "Identifiant de terme" - -#: modules/taxonomy.views.inc:194 -msgid "The taxonomy term ID" -msgstr "L'identifiant du terme de classification." - -#: modules/taxonomy.views.inc:196 -msgid "All terms" -msgstr "Tous les termes" - -#: modules/taxonomy.views.inc:197 -msgid "Display all taxonomy terms associated with a node." -msgstr "Afficher tous les termes de taxonomie associés à un nœud." - -#: modules/taxonomy.views.inc:282 -msgid "Term synonym" -msgstr "Synonome du terme" - -#: modules/taxonomy.views.inc:283 -msgid "Term synonyms may be used to find terms by alternate names." -msgstr "Les synonymes de termes peuvent être utilisés pour trouver des termes par d'autres appellations." - -#: modules/taxonomy.views.inc:299 -msgid "Term ID (with depth)" -msgstr "Identifiant de terme (avec profondeur)" - -#: modules/taxonomy.views.inc:300 -msgid "The depth filter is more complex, so provides fewer options." -msgstr "Le filtre de profondeur est plus complexe et propose donc moins d'options." - -#: modules/taxonomy.views.inc:310 -msgid "Term ID depth modifier" -msgstr "Modificateur de la profondeur de l'identifiant de terme" - -#: modules/taxonomy.views.inc:311 -msgid "Allows the \"depth\" for Taxonomy: Term ID (with depth) to be modified via an additional argument." -msgstr "Permet de modifier à l'aide d'un argument supplémentaire la \"profondeur\" pour Taxonomie : Identifiant de terme (avec profondeur)." - -#: modules/taxonomy.views.inc:341 -msgid "The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term \"fruit\" and a child term \"apple\", with a depth of 1 (or higher) then filtering for the term \"fruit\" will get nodes that are tagged with \"apple\" as well as \"fruit\". If negative, the reverse is true; searching for \"apple\" will also pick up nodes tagged with \"fruit\" if depth is -1 (or lower)." -msgstr "La profondeur assurera la correspondance avec les nœuds étiquetés par des termes de la hiérarchie. Si, par exemple, vous avez le terme \"fruit\" et le terme enfant \"pomme\", avec une profondeur de 1 ou plus, alors un filtrage sur le terme \"fruit\" renverra des nœuds étiquetés par \"pomme\" aussi bien que par \"fruit\". Si la profondeur est négative, l'inverse est également vrai : rechercher \"pomme\" avec une profondeur de -1 (ou moins) renverra également les nœuds étiquetés par \"fruit\"." - -#: modules/taxonomy.views.inc:346 -msgid "Allow multiple terms per argument" -msgstr "Autoriser plusieurs termes par argument" - -#: modules/taxonomy.views.inc:347 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this argument." -msgstr "Si cette option est sélectionnée, les utilisateurs peuvent saisir plusieurs arguments sous la forme 1+2+3. Du fait du nombre de JOIN que cela représenterait, les requêtes AND seront traitées comme des OR avec cet argument." - -#: modules/taxonomy.views.inc:353;978 -msgid "Set the breadcrumb for the term parents" -msgstr "Faire apparaître les parents du terme dans le fil d'Ariane" - -#: modules/taxonomy.views.inc:354;979 -msgid "If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received." -msgstr "Si cette option est sélectionnée, le fil d'Ariane inclura tous les termes parents, chacun comportant un lien vers cette vue. Notez que cela fonctionne uniquement si un seul terme a été reçu." - -#: modules/taxonomy.views.inc:440;685 -msgid "No name" -msgstr "Aucun nom" - -#: modules/taxonomy.views.inc:551 -msgid "Link this field to its term page" -msgstr "Lier ce champ vers la page de terme correspondante" - -#: modules/taxonomy.views.inc:558 -msgid "Limit terms by vocabulary" -msgstr "Limiter les termes par vocabulaire" - -#: modules/taxonomy.views.inc:572;1034 -msgid "Vocabularies" -msgstr "Vocabulaires" - -#: modules/taxonomy.views.inc:645 -msgid "Link this field to its taxonomy term page" -msgstr "Lier ce champ vers la page de terme de classification correspondante" - -#: modules/taxonomy.views.inc:721 -msgid "No vocabulary" -msgstr "Aucun vocabulaire" - -#: modules/taxonomy.views.inc:765 -msgid "Select which vocabulary to show terms for in the regular options." -msgstr "Sélectionnez le vocabulaire pour lequel montrer les termes dans les options normales." - -#: modules/taxonomy.views.inc:775 -msgid "Selection type" -msgstr "Type de sélection" - -#: modules/taxonomy.views.inc:776 -msgid "Dropdown" -msgstr "Liste déroulante" - -#: modules/taxonomy.views.inc:776 -msgid "Autocomplete" -msgstr "Auto-complètement" - -#: modules/taxonomy.views.inc:782 -msgid "Show hierarchy in dropdown" -msgstr "Montrer la hiérarchie dans la liste déroulante" - -#: modules/taxonomy.views.inc:799 -msgid "An invalid vocabulary is selected. Please change it in the options." -msgstr "Un vocabulaire invalide a été sélectionné. Merci de le modifier dans les options." - -#: modules/taxonomy.views.inc:817;851 -msgid "Select terms from vocabulary @voc" -msgstr "Sélectionner les termes dans le vocabulaire @voc" - -#: modules/taxonomy.views.inc:1012 -msgid "Taxonomy term" -msgstr "Terme de classification" - -#: modules/taxonomy.views.inc:1037 -msgid "If you wish to validate for specific vocabularies, check them; if none are checked, all nodes will pass." -msgstr "Si vous souhaitez une validation pour certains vocabulaires spécifiques, cochez-les. Si aucun n'est coché, tous les nœuds seront acceptés." - -#: modules/taxonomy.views.inc:1047 -msgid "Term IDs separated by , or +" -msgstr "Identifiants de termes, séparés par des virgules ou des +" - -#: modules/taxonomy.views.inc:1048 -msgid "Term name or synonym" -msgstr "Nom ou synonyme de terme" - -#: modules/taxonomy.views.inc:1049 -msgid "Term name/synonym converted to Term ID" -msgstr "Nom/synonyme du terme converti en identifiant de terme" - -#: modules/taxonomy.views.inc:1052 -msgid "Select the form of this argument; if using term name, it is generally more efficient to convert it to a term ID and use Taxonomy: Term ID rather than Taxonomy: Term Name\" as an argument." -msgstr "Sélectionnez la forme de cet argument ; si l'on utilise le nom du terme, il est généralement plus efficace de le convertir vers un identifiant de terme et d'utiliser \"Taxonomie : Identifiant de terme\" plutôt que \"Taxonomie : Nom du terme\" en tant qu'argument." - -#: modules/taxonomy.views.inc:937 -msgid "Unable to find term: @terms" -msgid_plural "Unable to find terms: @terms" -msgstr[0] "Impossible de trouver le terme @terms" -msgstr[1] "Impossible de trouver les termes @terms" - -#: modules/upload.views.inc:25 -msgid "Upload" -msgstr "Transfert de fichiers" - -#: modules/upload.views.inc:49 -msgid "The description of the uploaded file." -msgstr "La description du fichier transféré." - -#: modules/upload.views.inc:66 -msgid "Listed" -msgstr "Listé" - -#: modules/upload.views.inc:67 -msgid "Whether or not the file is marked to be listed." -msgstr "Indique si le fichier est marqué pour être listé." - -#: modules/upload.views.inc:83 -msgid "The weight, used for sorting." -msgstr "Le poids, utilisé pour le tri." - -#: modules/upload.views.inc:101;113 -msgid "Attached files" -msgstr "Fichiers attachés" - -#: modules/upload.views.inc:102 -msgid "All files attached to a node with upload.module." -msgstr "Tous les fichiers attachés à un nœud avec upload.module." - -#: modules/upload.views.inc:109;274 -msgid "Has attached files" -msgstr "Possède des fichiers attachés" - -#: modules/upload.views.inc:110 -msgid "Only display items with attached files. This can cause duplicates if there are multiple attached files." -msgstr "Affiche uniquement les éléments présentant des fichiers attachés. Ceci peut causer des doublons s'il y a plusieurs fichiers attachés." - -#: modules/upload.views.inc:114 -msgid "Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node." -msgstr "Ajouter une relation pour accéder à davantage de données fichiers pour les fichiers transférés par upload.module. Notez que cette relation provoquera l'apparition de doublons s'il y a plusieurs fichiers attachés à un nœud." - -#: modules/upload.views.inc:120 -msgid "Files" -msgstr "Fichiers" - -#: modules/upload.views.inc:151 -msgid "Only show \"listed\" file attachments" -msgstr "Montrer uniquement les fichiers attachés \"listés\"" - -#: modules/user.views.inc:28 -msgid "Users who have created accounts on your site." -msgstr "Utilisateurs ayant créé un compte sur votre site." - -#: modules/user.views.inc:48 -msgid "Uid" -msgstr "Uid" - -#: modules/user.views.inc:49 -msgid "The user ID" -msgstr "Identifiant de l'utilisateur" - -#: modules/user.views.inc:70 -msgid "Current" -msgstr "Courant" - -#: modules/user.views.inc:71 -msgid "Filter the view to the currently logged in user." -msgstr "Filtre la vue pour montrer les utilisateurs actuellement connectés." - -#: modules/user.views.inc:80 -msgid "The user or author name." -msgstr "Le nom de l'utilisateur ou de l'auteur." - -#: modules/user.views.inc:96 -msgid "E-mail" -msgstr "E-mail" - -#: modules/user.views.inc:97 -msgid "Email address for a given user. Only accessible to users with <em>administer users</em> permission" -msgstr "Adresse e-mail d'un utilisateur donné. N'est accessible qu'aux utilisateurs ayant le droit d'<em>administrer les utilisateurs</em>" - -#: modules/user.views.inc:114 -msgid "Picture" -msgstr "Portrait" - -#: modules/user.views.inc:115 -msgid "The user's picture, if allowed." -msgstr "Portrait de l'utilisateur, si autorisé." - -#: modules/user.views.inc:126 -msgid "The date the user was created." -msgstr "Date de création de l'utilisateur." - -#: modules/user.views.inc:141 -msgid "Last access" -msgstr "Dernier accès" - -#: modules/user.views.inc:142 -msgid "The user's last access date." -msgstr "La date de dernier accès de l'utilisateur." - -#: modules/user.views.inc:157 -msgid "Last login" -msgstr "Dernière connexion" - -#: modules/user.views.inc:158 -msgid "The user's last login date." -msgstr "La date de dernière connexion de l'utilisateur." - -#: modules/user.views.inc:174 -msgid "Whether a user is active or blocked." -msgstr "Indique si un utilisateur est actif ou bloqué." - -#: modules/user.views.inc:191 -msgid "Signature" -msgstr "Signature" - -#: modules/user.views.inc:192 -msgid "The user's signature." -msgstr "La signature de l'utilisateur." - -#: modules/user.views.inc:205 -msgid "Provide a simple link to edit the user." -msgstr "Fournit un lien simple pour éditer l'utilisateur." - -#: modules/user.views.inc:213 -msgid "Provide a simple link to delete the user." -msgstr "Fournit un lien simple pour supprimer l'utilisateur." - -#: modules/user.views.inc:242 -msgid "Roles" -msgstr "Rôles" - -#: modules/user.views.inc:243 -msgid "Roles that a user belongs to." -msgstr "Rôles auxquels appartient un utilisateur." - -#: modules/user.views.inc:255 -msgid "No role" -msgstr "Aucun rôle" - -#: modules/user.views.inc:306 -msgid "User ID from URL" -msgstr "Identifiant utilisateur dans l'URL" - -#: modules/user.views.inc:322 -msgid "Also look for a node and use the node author" -msgstr "Rechercher aussi un nœud et utiliser l'auteur du nœud" - -#: modules/user.views.inc:387 -msgid "Link this field to its user" -msgstr "Lier ce champ à l'utilisateur correspondant" - -#: modules/user.views.inc:520 -msgid "Link this field" -msgstr "Lier ce champ" - -#: modules/user.views.inc:523 -msgid "No link" -msgstr "Aucun lien" - -#: modules/user.views.inc:524 -msgid "To the user" -msgstr "Vers l'utilisateur" - -#: modules/user.views.inc:525 -msgid "With a mailto:" -msgstr "Avec un mailto:" - -#: modules/user.views.inc:643 -msgid "Usernames" -msgstr "Noms d'utilisateurs" - -#: modules/user.views.inc:644 -msgid "Enter a comma separated list of user names." -msgstr "Saisissez une liste de noms d'utilisateurs séparés par des virgules." - -#: modules/user.views.inc:752 -msgid "Is the logged in user" -msgstr "Est l'utilisateur connecté" - -#: modules/user.views.inc:710 -msgid "Unable to find user: @users" -msgid_plural "Unable to find users: @users" -msgstr[0] "Impossible de trouver l'utilisateur @users" -msgstr[1] "Impossible de trouver les utilisateurs @users" - -#: modules/views.views.inc:18 -msgid "Global" -msgstr "Global" - -#: modules/views.views.inc:23 -msgid "Random" -msgstr "Au hasard" - -#: modules/views.views.inc:24 -msgid "Randomize the display order." -msgstr "Rendre l'ordre d'affichage aléatoire." - -#: modules/views.views.inc:31 -msgid "Null" -msgstr "Vide" - -#: modules/views.views.inc:32 -msgid "Allow an argument to be ignored. The query will not be altered by this argument." -msgstr "Autoriser un argument à être ignoré. La requête ne sera pas modifiée par cet argument." - -#: modules/views.views.inc:88 -msgid "Fail basic validation if any argument is given" -msgstr "Faire échouer la validation de base si un argument est fourni" - -#: modules/views.views.inc:90 -msgid "By checking this field, you can use this to make sure views with more arguments than necessary fail validation." -msgstr "En cochant cette case, vous pouvez utiliser ceci pour vérifier que la validation des vues présentant plus d'arguments que nécessaire échoue." - -#: theme/views-more.tpl.php:15 -msgid "more" -msgstr "plus" - -#: theme/views-ui-edit-item.tpl.php:18 -msgid "None defined" -msgstr "Aucun défini" - -#: theme/views-ui-edit-tab.tpl.php:31 -msgid "View settings" -msgstr "Paramétrage de la vue" - -#: theme/views-ui-edit-view.tpl.php:11 -msgid "This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to !break." -msgstr "Cette vue est en cours de modification par l'utilisateur !user et elle est par conséquent verrouillée en modification pour tout autre utilisateur. Ce verrou dure depuis !age. Cliquez ici pour le !break." - -#: theme/views-ui-edit-view.tpl.php:16 -msgid "New view" -msgstr "Nouvelle vue" - -#: theme/views-ui-edit-view.tpl.php:18 -msgid "Changed view" -msgstr "Vue changée" - -#: theme/views-ui-edit-view.tpl.php:23 -msgid "View %name, displaying items of type <strong>@base</strong>." -msgstr "Voir %name en affichant les éléments de type <strong>@base</strong>." - -#: theme/views-ui-edit-view.tpl.php:42 -msgid "Live preview" -msgstr "Prévisualisation en direct" - -#: theme/views-ui-list-views.tpl.php:17 -msgid "<em>@type</em> @base view: <strong>@view</strong>" -msgstr "Vue <em>@type</em> @base : <strong>@view</strong>" - -#: theme/views-ui-list-views.tpl.php:27 -msgid "Title: @title" -msgstr "Titre : @title" - -#: theme/views-ui-list-views.tpl.php:30 -msgid "Path: !path" -msgstr "Chemin : !path" - -#: theme/theme.inc:90 -msgid "Edit this view" -msgstr "Éditer cette vue" - -#: theme/theme.inc:289 -msgid "sort by @s" -msgstr "trier par @s" - -#: theme/theme.inc:490 -msgid "‹‹" -msgstr "‹‹" - -#: theme/theme.inc:491 -msgid "››" -msgstr "››" - -#: theme/theme.inc:501 -msgid "@current of @max" -msgstr "@current de @max" - -#: views_export/views_export.module:17 -msgid "Bulk export" -msgstr "Export par lot" - -#: views_export/views_export.module:76 -msgid "There are no views to be exported at this time." -msgstr "Il n'y a pas de vue à exporter pour le moment." - -#: views_export/views_export.module:108 -msgid "Show only these tags" -msgstr "Montrer uniquement ces étiquettes" - -#: views_export/views_export.module:122 -msgid "Module name" -msgstr "Nom du module" - -#: views_export/views_export.module:123 -msgid "Enter the module name to export code to." -msgstr "Saisissez le nom du module vers lequel exporter le code." - -#: views_export/views_export.module:190 -msgid "Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory" -msgstr "Placez ceci dans @module.views_default.inc dans votre répertoire modules/@module ou modules/@module/includes" - -#: views_export/views_export.module:44 -msgid "use views exporter" -msgstr "utiliser l'exportateur de vues" - -#: views_export/views_export.module:0 -msgid "views_export" -msgstr "views_export" - -#: views_export/views_export.info:0 -msgid "Views exporter" -msgstr "Exportateur de vues" - -#: views_export/views_export.info:0 -msgid "Allows exporting multiple views at once." -msgstr "Permet d'exporter plusieurs vues à la fois" - diff --git a/sites/all/modules/views/translations/it.po b/sites/all/modules/views/translations/it.po deleted file mode 100644 index bf598988d..000000000 --- a/sites/all/modules/views/translations/it.po +++ /dev/null @@ -1,4233 +0,0 @@ -msgid "" -msgstr "" -"Suggerimento: \n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Drupalitalia <infoATTAPdrupalitalia.org>\n" -"Language-Team: Italian\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" - -#: modules/upload.views.inc:56; -#: includes/convert.inc:21; -#: includes/admin.inc:273; -#: views_export/views_export.module:146 -msgid "Description" -msgstr "Descrizione" - -#: includes/admin.inc:2346,2113,2104 -msgid "Remove" -msgstr "Elimina" - -#: handlers/views_handler_filter_in_operator.inc:25; -#: handlers/views_handler_filter_boolean_operator.inc:47; -#: handlers/views_handler_field_boolean.inc:49; -#: plugins/views_plugin_display.inc:1207,803,717,667,659,642,633; -#: plugins/views_plugin_display_attachment.inc:69,63 -msgid "Yes" -msgstr "Si" - -#: handlers/views_handler_filter_in_operator.inc:25; -#: handlers/views_handler_filter_boolean_operator.inc:47; -#: handlers/views_handler_field_boolean.inc:49; -#: plugins/views_plugin_display.inc:1207,811,803,717,667,659,642,633; -#: plugins/views_plugin_display_attachment.inc:69,63 -msgid "No" -msgstr "No" - -#: modules/node/views_handler_field_node_link_edit.inc:26; -#: modules/comment/views_handler_field_comment_link_edit.inc:21; -#: modules/user/views_handler_field_user_link_edit.inc:13 -msgid "edit" -msgstr "modifica" - -#: modules/node/views_handler_field_node_revision_link_delete.inc:35; -#: modules/node/views_handler_field_node_link_delete.inc:26; -#: modules/comment/views_handler_field_comment_link_delete.inc:12; -#: modules/user/views_handler_field_user_link_delete.inc:13 -msgid "delete" -msgstr "elimina" - -#: includes/admin.inc:1308 -msgid "Update" -msgstr "Aggiorna" - -#: includes/admin.inc:564 -msgid "Next" -msgstr "Avanti" - -#: modules/user.views.inc:219,27,23; -#: modules/statistics.views.inc:201; -#: modules/node.views.inc:345; -#: modules/comment.views.inc:231,225 -msgid "User" -msgstr "Utente" - -#: includes/view.inc:1212,1162; -#: includes/admin.inc:211 -msgid "Normal" -msgstr "Normale" - -#: modules/comment/views_handler_filter_node_comment.inc:10; -#: modules/comment/views_handler_field_node_comment.inc:12 -msgid "Disabled" -msgstr "Disattivato" - -#: includes/convert.inc:108,35; -#: includes/admin.inc:844,631,98 -msgid "Delete" -msgstr "Elimina" - -#: includes/admin.inc:2211,1175 -msgid "Add" -msgstr "Aggiungi" - -#: handlers/views_handler_filter_in_operator.inc:15 -msgid "Options" -msgstr "Opzioni" - -#: includes/plugins.inc:135,104 -msgid "List" -msgstr "Elenco" - -#: includes/admin.inc:93; -#: theme/theme.inc:89 -msgid "Edit" -msgstr "Modifica" - -#: handlers/views_handler_filter.inc:136 -msgid "Operator" -msgstr "Operatore" - -#: modules/user.views.inc:240 -msgid "Roles" -msgstr "Ruoli" - -#: modules/system.views.inc:142 -msgid "Status" -msgstr "Status" - -#: modules/user.views.inc:79,59; -#: modules/system.views.inc:69; -#: includes/admin.inc:268; -#: plugins/views_plugin_display.inc:580 -msgid "Name" -msgstr "Nome" - -#: includes/convert.inc:22 -msgid "Operations" -msgstr "Operazioni" - -#: modules/node/views_handler_field_node_link.inc:35; -#: modules/comment/views_handler_field_comment_link.inc:34; -#: modules/user/views_handler_field_user_link.inc:38 -msgid "view" -msgstr "mostra" - -#: modules/comment/views_handler_argument_comment_user_uid.inc:11; -#: modules/user/views_handler_argument_user_uid.inc:17 -msgid "Anonymous" -msgstr "Anonimo" - -#: plugins/views_plugin_display.inc:651 -msgid "Unlimited" -msgstr "Nessun limite" - -#: includes/admin.inc:763,585,212,97; -#: views.module:830,797; -#: views_ui.module:289 -msgid "Default" -msgstr "Predefinito" - -#: includes/convert.inc:109; -#: includes/admin.inc:1326,837,668,632 -msgid "Cancel" -msgstr "Annulla" - -#: modules/node.views.inc:351 -msgid "user" -msgstr "utente" - -#: includes/plugins.inc:224; -#: plugins/views_plugin_access_role.inc:40 -msgid "Role" -msgstr "Ruolo" - -#: includes/admin.inc:1241,1232 -msgid "Settings" -msgstr "Impostazioni" - -#: modules/node.views.inc:140; -#: includes/admin.inc:272,225; -#: plugins/views_plugin_display_page.inc:273 -msgid "Type" -msgstr "Tipo" - -#: modules/upload.views.inc:90; -#: modules/taxonomy.views.inc:135; -#: modules/book.views.inc:57; -#: includes/admin.inc:2113; -#: plugins/views_plugin_display_page.inc:312 -msgid "Weight" -msgstr "Peso" - -#: includes/convert.inc:107 -msgid "This action cannot be undone." -msgstr "Questa azione non può essere annullata." - -#: modules/node.views.inc:358; -#: modules/comment.views.inc:63 -msgid "Body" -msgstr "Corpo" - -#: includes/admin.inc:472 -msgid "Preview" -msgstr "Anteprima" - -#: handlers/views_handler_filter.inc:333 -msgid "Optional" -msgstr "Opzionale" - -#: includes/admin.inc:858,830 -msgid "Save" -msgstr "Salva" - -#: handlers/views_handler_field_numeric.inc:55 -msgid "Thousands separator" -msgstr "Separatore delle migliaia" - -#: modules/search.views.inc:163,106,88,77,23 -msgid "Search" -msgstr "Cerca" - -#: modules/node.views.inc:413,85; -#: modules/comment.views.inc:44; -#: includes/admin.inc:380,269; -#: handlers/views_handler_argument.inc:119; -#: plugins/views_plugin_display.inc:592; -#: plugins/views_plugin_display_page.inc:348,285 -msgid "Title" -msgstr "Titolo" - -#: modules/comment.views.inc:76 -msgid "ID" -msgstr "ID" - -#: plugins/views_plugin_style_list.inc:32 -msgid "List type" -msgstr "Tipo di elenco" - -#: modules/system.views.inc:209; -#: handlers/views_handler_filter_in_operator.inc:193; -#: plugins/views_plugin_access.inc:55 -msgid "Unknown" -msgstr "Sconosciuto" - -#: modules/comment.views.inc:395,384,26,22 -msgid "Comment" -msgstr "Commento" - -#: includes/admin.inc:280 -msgid "Order" -msgstr "Ordine" - -#: plugins/views_plugin_display_block.inc:82 -msgid "Admin" -msgstr "Amministrazione" - -#: modules/user.views.inc:189 -msgid "Signature" -msgstr "Firma" - -#: modules/statistics.views.inc:126 -msgid "Page title" -msgstr "Titolo della pagina" - -#: includes/admin.inc:106 -msgid "Enable" -msgstr "Attiva" - -#: modules/user.views.inc:96 -msgid "E-mail" -msgstr "E-mail" - -#: includes/view.inc:1060 -msgid "Home" -msgstr "Home" - -#: includes/view.inc:1870,1869 -msgid "Argument" -msgstr "Argomento" - -#: modules/upload.views.inc:132 -msgid "Files" -msgstr "Files" - -#: modules/system.views.inc:30,25 -msgid "File" -msgstr "File" - -#: modules/upload.views.inc:112,25 -msgid "Upload" -msgstr "Upload" - -#: includes/admin.inc:721 -msgid "Import" -msgstr "Importa" - -#: includes/admin.inc:975,94; -#: theme/theme.inc:96; -#: views_export/views_export.module:128 -msgid "Export" -msgstr "Esporta" - -#: includes/admin.inc:292; -#: views.module:935; -#: views_export/views_export.module:116 -msgid "Apply" -msgstr "Applica" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:37; -#: modules/taxonomy.views.inc:160 -msgid "Vocabulary" -msgstr "Vocabolario" - -#: includes/plugins.inc:218; -#: includes/admin.inc:3054,1059; -#: plugins/views_plugin_display.inc:723,704,587; -#: plugins/views_plugin_display_attachment.inc:90; -#: plugins/views_plugin_display_block.inc:73; -#: plugins/views_plugin_display_feed.inc:108; -#: plugins/views_plugin_display_page.inc:193 -msgid "None" -msgstr "Nessuno" - -#: plugins/views_plugin_display.inc:897,721 -msgid "Header" -msgstr "Intestazione" - -#: handlers/views_handler_field_date.inc:24 -msgid "Date format" -msgstr "Formato data" - -#: includes/view.inc:1862; -#: includes/admin.inc:3018 -msgid "Field" -msgstr "Campo" - -#: handlers/views_handler_sort_date.inc:31 -msgid "Day" -msgstr "Giorno" - -#: handlers/views_handler_sort_date.inc:32 -msgid "Month" -msgstr "Mese" - -#: handlers/views_handler_sort_date.inc:33 -msgid "Year" -msgstr "Anno" - -#: handlers/views_handler_relationship.inc:78; -#: handlers/views_handler_filter.inc:322; -#: handlers/views_handler_field.inc:146 -msgid "Label" -msgstr "Etichetta" - -#: modules/node.views.inc:373 -msgid "Teaser" -msgstr "Anteprima" - -#: includes/view.inc:1860; -#: includes/plugins.inc:173 -msgid "Fields" -msgstr "Campi" - -#: modules/node/views_plugin_argument_validate_node.inc:29 -msgid "Types" -msgstr "Tipi" - -#: includes/admin.inc:2180 -msgid "Groups" -msgstr "Gruppi" - -#: plugins/views_plugin_display.inc:604 -msgid "Style" -msgstr "Stile" - -#: handlers/views_handler_field_numeric.inc:62 -msgid "Prefix" -msgstr "Prefisso" - -#: handlers/views_handler_field_numeric.inc:68 -msgid "Suffix" -msgstr "Suffisso" - -#: modules/translation/views_handler_filter_node_language.inc:9; -#: modules/node/views_handler_filter_node_language.inc:9; -#: modules/translation.views.inc:32 -msgid "Language" -msgstr "Lingua" - -#: includes/ajax.inc:83 -msgid "Error" -msgstr "Errore" - -#: theme/views-more.tpl.php:15 -msgid "more" -msgstr "leggi tutto" - -#: modules/node/views_plugin_row_node_rss.inc:95 -msgid "read more" -msgstr "leggi tutto" - -#: includes/plugins.inc:60,51 -msgid "Block" -msgstr "Blocco" - -#: modules/taxonomy.views.inc:259; -#: modules/book.views.inc:110 -msgid "Parent" -msgstr "Genitore" - -#: modules/node.views.inc:434 -msgid "Log message" -msgstr "Messaggio di log" - -#: modules/book.views.inc:99,46,36,21 -msgid "Book" -msgstr "Book" - -#: handlers/views_handler_field_date.inc:29 -msgid "Custom" -msgstr "Personalizzato" - -#: modules/comment/views_handler_filter_node_comment.inc:11; -#: modules/comment/views_handler_field_node_comment.inc:14 -msgid "Read only" -msgstr "Sola lettura" - -#: modules/comment/views_handler_filter_node_comment.inc:12; -#: modules/comment/views_handler_field_node_comment.inc:16 -msgid "Read/Write" -msgstr "Lettura/Scrittura" - -#: modules/comment/views_handler_field_comment_link_reply.inc:13 -msgid "reply" -msgstr "rispondi" - -#: modules/comment.views.inc:95 -msgid "Author" -msgstr "Autore" - -#: modules/translation.views.inc:106; -#: modules/upload.views.inc:82; -#: modules/node.views.inc:181,167,159 -msgid "Published" -msgstr "Pubblicato" - -#: includes/admin.inc:1173 -msgid "Rearrange" -msgstr "Riorganizza" - -#: includes/plugins.inc:124 -msgid "Table" -msgstr "Tabella" - -#: includes/view.inc:1881 -msgid "Filters" -msgstr "Filtri" - -#: includes/view.inc:1884 -msgid "filter" -msgstr "filtro" - -#: modules/taxonomy.views.inc:314,303,266,226,170,152,67,24 -msgid "Taxonomy" -msgstr "Tassonomia" - -#: modules/system.views.inc:88; -#: modules/statistics.views.inc:146; -#: includes/admin.inc:388,271; -#: plugins/views_plugin_display_page.inc:202 -msgid "Path" -msgstr "Path" - -#: includes/admin.inc:103 -msgid "Disable" -msgstr "Disabilita" - -#: modules/node.views.inc:195,187 -msgid "Promoted to front page" -msgstr "Promosso in prima pagina" - -#: includes/view.inc:1883 -msgid "Filter" -msgstr "Filtra" - -#: modules/node/views_handler_field_node_revision_link_revert.inc:36 -msgid "revert" -msgstr "ripristina" - -#: includes/admin.inc:98 -msgid "Revert" -msgstr "Ripristina" - -#: modules/poll.views.inc:23 -msgid "Poll" -msgstr "Poll" - -#: modules/user.views.inc:180,171; -#: modules/poll.views.inc:47,38 -msgid "Active" -msgstr "Attivo" - -#: modules/search/views_handler_filter_search.inc:62 -msgid "You must include at least one positive keyword with @count characters or more." -msgstr "Devi inserire almeno una parola-chiave con @count caratteri o più." - -#: modules/search/views_handler_filter_search.inc:42 -msgid "Enter the terms you wish to search for." -msgstr "Inserisci i termini da cercare." - -#: modules/statistics.views.inc:166 -msgid "Referrer" -msgstr "Referrer" - -#: modules/statistics.views.inc:182 -msgid "Hostname" -msgstr "Nome host" - -#: modules/statistics.views.inc:228 -msgid "Timestamp" -msgstr "Data e ora" - -#: includes/plugins.inc:47,39; -#: docs/docs.php:226 -msgid "Page" -msgstr "Pagina" - -#: modules/node/views_plugin_row_node_rss.inc:26 -msgid "Full text" -msgstr "Testo completo" - -#: handlers/views_handler_filter_string.inc:170; -#: handlers/views_handler_filter_numeric.inc:163,148; -#: handlers/views_handler_filter_equality.inc:26 -msgid "Value" -msgstr "Valore" - -#: modules/taxonomy.views.inc:372 -msgid "Taxonomy term" -msgstr "Termine della tassonomia" - -#: modules/taxonomy.views.inc:48 -msgid "Vocabulary name" -msgstr "Nome del vocabolario" - -#: modules/book.views.inc:87 -msgid "Hierarchy" -msgstr "Gerarchia" - -#: modules/taxonomy.views.inc:254 -msgid "Parent term" -msgstr "Termine padre" - -#: docs/docs.php:128 -msgid "default" -msgstr "predefinito" - -#: includes/plugins.inc:64 -msgid "Attachment" -msgstr "Allegato" - -#: modules/system.views.inc:126 -msgid "Size" -msgstr "Dimensione" - -#: modules/upload.views.inc:46 -msgid "upload" -msgstr "caricamento" - -#: modules/user.views.inc:112 -msgid "Picture" -msgstr "Ritratto" - -#: includes/plugins.inc:231; -#: plugins/views_plugin_access_perm.inc:35 -msgid "Permission" -msgstr "Permesso" - -#: modules/user.views.inc:139 -msgid "Last access" -msgstr "Ultimo accesso" - -#: includes/admin.inc:2177,210,203 -msgid "<All>" -msgstr "<Tutto>" - -#: handlers/views_handler_field_date.inc:53 -msgid "%time ago" -msgstr "%time fa" - -#: handlers/views_handler_filter_string.inc:40 -msgid "Contains" -msgstr "Contiene" - -#: views_ui.info:0; -#: views.info:0; -#: views_export/views_export.info:0 -msgid "Views" -msgstr "Viste" - -#: plugins/views_plugin_display.inc:1399 -msgid "Override" -msgstr "Sovrascrivi" - -#: includes/admin.inc:980,95; -#: theme/theme.inc:101 -msgid "Clone" -msgstr "Clona" - -#: includes/admin.inc:618,213,98; -#: views.module:834,794 -msgid "Overridden" -msgstr "Modificato (overridden)" - -#: plugins/views_plugin_display_page.inc:302,230 -msgid "Menu" -msgstr "Menu" - -#: handlers/views_handler_argument.inc:263 -msgid "Summary, sorted ascending" -msgstr "Sommario, ordinato in modo crescente" - -#: handlers/views_handler_argument.inc:270 -msgid "Summary, sorted descending" -msgstr "Sommario, ordinato in modo decrescente" - -#: handlers/views_handler_sort.inc:55; -#: plugins/views_plugin_style_table.inc:149 -msgid "Ascending" -msgstr "Crescente" - -#: handlers/views_handler_sort.inc:55; -#: plugins/views_plugin_style_table.inc:149 -msgid "Descending" -msgstr "Decrescente" - -#: plugins/views_plugin_display.inc:681 -msgid "Access" -msgstr "Accesso" - -#: plugins/views_plugin_display.inc:907 -msgid "Text to display at the top of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Testo da visualizzare in cima alla vista. Può contenere maggiori informazioni, links o altro a tua discrezione. Questo campo è opzionale." - -#: plugins/views_plugin_display.inc:913,721 -msgid "Footer" -msgstr "Piè di pagina" - -#: plugins/views_plugin_display_page.inc:343 -msgid "Normal menu item" -msgstr "Voce del menu (Normal menu item)" - -#: plugins/views_plugin_display.inc:929,721 -msgid "Empty text" -msgstr "Testo vuoto" - -#: handlers/views_handler_filter.inc:201 -msgid "Expose" -msgstr "Visualizza all'utente" - -#: includes/admin.inc:282 -msgid "Up" -msgstr "Su" - -#: includes/admin.inc:283 -msgid "Down" -msgstr "Giù" - -#: includes/admin.inc:3022 -msgid "Sortable" -msgstr "Ordinabile" - -#: handlers/views_handler_argument.inc:146 -msgid "Wildcard" -msgstr "Caratteri jolly" - -#: includes/view.inc:1867; -#: includes/admin.inc:464 -msgid "Arguments" -msgstr "Argomenti" - -#: includes/admin.inc:755,580 -msgid "View name must be alphanumeric or underscores only." -msgstr "Il nome della vista deve contenere caratteri alfabetici o il simbolo \"_\"" - -#: modules/views.views.inc:23 -msgid "Random" -msgstr "Casuale" - -#: modules/taxonomy.views.inc:292,208,129; -#: handlers/views_handler_argument_numeric.inc:57,45; -#: handlers/views_handler_argument_many_to_one.inc:109,95 -msgid "Uncategorized" -msgstr "Non categorizzato" - -#: modules/translation/views_handler_relationship_translation.inc:23; -#: handlers/views_handler_argument.inc:102 -msgid "All" -msgstr "Tutti" - -#: includes/view.inc:1882 -msgid "filters" -msgstr "filtri" - -#: plugins/views_plugin_display.inc:575 -msgid "Basic settings" -msgstr "Impostazioni di base" - -#: modules/profile.views.inc:40,20 -msgid "Profile" -msgstr "Profilo" - -#: handlers/views_handler_filter.inc:213 -msgid "Hide" -msgstr "Nascondi" - -#: modules/node/views_plugin_argument_validate_node.inc:49 -msgid "Node ID" -msgstr "ID nodo" - -#: handlers/views_handler_filter_boolean_operator.inc:61,16; -#: handlers/views_handler_field_boolean.inc:51 -msgid "True" -msgstr "Vero" - -#: handlers/views_handler_filter_boolean_operator.inc:61; -#: handlers/views_handler_field_boolean.inc:51 -msgid "False" -msgstr "Falso" - -#: plugins/views_plugin_style_grid.inc:33 -msgid "Number of columns" -msgstr "Numero di colonne" - -#: modules/node.views.inc:242 -msgid "Link" -msgstr "Link" - -#: includes/admin.inc:204; -#: plugins/views_plugin_style.inc:76 -msgid "<None>" -msgstr "<Nessuno>" - -#: includes/admin.inc:3020; -#: handlers/views_handler_field_prerender_list.inc:40; -#: plugins/views_plugin_row_fields.inc:47; -#: plugins/views_plugin_style_summary_unformatted.inc:30 -msgid "Separator" -msgstr "Separatore" - -#: modules/upload.views.inc:43; -#: modules/node.views.inc:639,627,616,484,372,357,90,29,24; -#: modules/comment.views.inc:255,220,214 -msgid "Node" -msgstr "Node" - -#: modules/node.views.inc:213,204; -#: modules/comment.views.inc:157 -msgid "Moderated" -msgstr "Moderato" - -#: plugins/views_plugin_style_grid.inc:38 -msgid "Alignment" -msgstr "Allineamento" - -#: includes/convert.inc:30 -msgid "Convert" -msgstr "Conversione" - -#: includes/admin.inc:456 -msgid "Display" -msgstr "Mostra" - -#: handlers/views_handler_filter_string.inc:35,29; -#: handlers/views_handler_filter_numeric.inc:40 -msgid "=" -msgstr "=" - -#: plugins/views_plugin_display.inc:751 -msgid "Theme" -msgstr "Tema" - -#: modules/node/views_plugin_row_node_rss.inc:28 -msgid "Title only" -msgstr "Solo il titolo" - -#: includes/plugins.inc:114 -msgid "Grid" -msgstr "Griglia" - -#: modules/node.views.inc:231,222 -msgid "Sticky" -msgstr "In rilievo" - -#: plugins/views_plugin_display_attachment.inc:37 -msgid "Both" -msgstr "Entrambi" - -#: includes/plugins.inc:25; -#: docs/docs.php:137 -msgid "Defaults" -msgstr "Predefinite" - -#: includes/plugins.inc:80,72; -#: docs/docs.php:281 -msgid "Feed" -msgstr "Feed" - -#: handlers/views_handler_sort_date.inc:30 -msgid "Hour" -msgstr "Ora" - -#: handlers/views_handler_sort_date.inc:29 -msgid "Minute" -msgstr "Minuto" - -#: handlers/views_handler_sort_date.inc:28 -msgid "Second" -msgstr "Secondo" - -#: handlers/views_handler_sort_date.inc:26 -msgid "Granularity" -msgstr "Granularità" - -#: includes/form.inc:249 -msgid "Validation error, please try again. If this error persists, please contact the site administrator." -msgstr "Errore di validazione, riprovare. Se l'errore persiste, contattare l'amministratore del sito." - -#: theme/theme.inc:307 -msgid "sort by @s" -msgstr "ordina per @s" - -#: views_ui.info:0 -msgid "Views UI" -msgstr "Viste UI" - -#: handlers/views_handler_argument_string.inc:60 -msgid "Case" -msgstr "Maiuscole/minuscole" - -#: modules/comment.views.inc:207 -msgid "Thread" -msgstr "Thread" - -#: plugins/views_plugin_display.inc:999,954,874 -msgid "settings" -msgstr "impostazioni" - -#: modules/translation.views.inc:91,84,81 -msgid "Translations" -msgstr "Traduzioni" - -#: modules/translation.views.inc:98 -msgid "Translation status" -msgstr "Stato della traduzione" - -#: modules/node/views_plugin_row_node_view.inc:32; -#: modules/comment/views_plugin_row_comment_view.inc:21 -msgid "Display links" -msgstr "Link della visualizzazione" - -#: includes/admin.inc:552 -msgid "View type" -msgstr "Tipo di vista" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:33; -#: modules/node/views_plugin_argument_validate_node.inc:47 -msgid "Argument type" -msgstr "Tipo di argomento" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:35; -#: modules/taxonomy.views.inc:196,96 -msgid "Term ID" -msgstr "ID Termine" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:23; -#: modules/taxonomy/views_handler_field_term_node_tid.inc:55 -msgid "Vocabularies" -msgstr "Vocabolari" - -#: modules/taxonomy.views.inc:56 -msgid "Vocabulary ID" -msgstr "ID vocabolario" - -#: plugins/views_plugin_display_block.inc:68 -msgid "Block settings" -msgstr "Impostazioni blocco" - -#: modules/upload.views.inc:125,113 -msgid "Attached files" -msgstr "File allegati" - -#: modules/taxonomy.views.inc:148 -msgid "Term description" -msgstr "Descrizione del termine" - -#: modules/taxonomy.views.inc:213,116,70 -msgid "Term" -msgstr "Termine" - -#: plugins/views_plugin_display.inc:641 -msgid "Use pager" -msgstr "Usa paginatore" - -#: plugins/views_plugin_display.inc:831 -msgid "Offset" -msgstr "Slittamento" - -#: modules/node/views_handler_filter_node_type.inc:9 -msgid "Node type" -msgstr "Tipo di nodo" - -#: includes/view.inc:1889 -msgid "Relationships" -msgstr "Relazioni" - -#: includes/admin.inc:2104 -msgid "Remove this item" -msgstr "Rimuovi questa voce" - -#: modules/system/views_handler_argument_file_fid.inc:13 -msgid "No title" -msgstr "Nessun titolo" - -#: plugins/views_plugin_display_page.inc:188 -msgid "Page settings" -msgstr "Impostazioni pagina" - -#: modules/book.views.inc:116 -msgid "Book parent" -msgstr "Libro genitore" - -#: modules/book.views.inc:30 -msgid "Top level book" -msgstr "Libro top level" - -#: includes/admin.inc:1060,270,243; -#: views_export/views_export.module:146 -msgid "Tag" -msgstr "Etichetta" - -#: handlers/views_handler_filter_string.inc:70 -msgid "Does not contain" -msgstr "Non contiene" - -#: handlers/views_handler_filter_numeric.inc:26 -msgid "Is less than" -msgstr "È meno di" - -#: handlers/views_handler_filter_numeric.inc:32 -msgid "Is less than or equal to" -msgstr "È minore o uguale a" - -#: handlers/views_handler_filter_string.inc:28; -#: handlers/views_handler_filter_numeric.inc:38; -#: handlers/views_handler_filter_equality.inc:15 -msgid "Is equal to" -msgstr "È uguale a" - -#: handlers/views_handler_filter_numeric.inc:50 -msgid "Is greater than or equal to" -msgstr "È maggiore o uguale a" - -#: handlers/views_handler_filter_numeric.inc:56 -msgid "Is greater than" -msgstr "È maggiore di" - -#: handlers/views_handler_filter_string.inc:34; -#: handlers/views_handler_filter_numeric.inc:44; -#: handlers/views_handler_filter_equality.inc:16 -msgid "Is not equal to" -msgstr "Non è uguale a" - -#: includes/view.inc:1892,1891; -#: includes/admin.inc:2319 -msgid "Relationship" -msgstr "Relazione" - -#: modules/search.views.inc:72 -msgid "Score" -msgstr "Punteggio" - -#: includes/admin.inc:398,367 -msgid "Query" -msgstr "Query" - -#: includes/admin.inc:2110 -msgid "No fields available." -msgstr "Nessun campo disponibile." - -#: modules/search/views_handler_filter_search.inc:66 -msgid "Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>." -msgstr "Cerca ognuno dei due termini con <strong>OR</strong> maiuscolo. Per esempio, <strong>gatti OR cani</strong>." - -#: modules/statistics.views.inc:107 -msgid "Browser session ID of user that visited page." -msgstr "Sfoglia la sessione ID dell'utente che ha visitato la pagina." - -#: modules/statistics.views.inc:127 -msgid "Title of page visited." -msgstr "Titolo della pagina visitata" - -#: modules/statistics.views.inc:147 -msgid "Internal path to page visited (relative to Drupal root.)" -msgstr "Percorso interno della pagina visitata (relativo al percorso principale di Drupal)." - -#: modules/statistics.views.inc:167 -msgid "Referrer URI." -msgstr "Referrer URI." - -#: modules/statistics.views.inc:183 -msgid "Hostname of user that visited the page." -msgstr "Nome host dell'utente che ha visitato la pagina." - -#: modules/statistics.views.inc:213 -msgid "Time in milliseconds that the page took to load." -msgstr "Tempo (in millisecondi) di caricamento della pagina." - -#: modules/statistics.views.inc:229 -msgid "Timestamp of when the page was visited." -msgstr "Data e ora (timestamp) di quando la pagina è stata visitata." - -#: views.install:31 -msgid "Stores the general data for a view." -msgstr "Memorizza i dati generali di una vista." - -#: views.install:37 -msgid "The view ID of the field, defined by the database." -msgstr "L'ID vista del campo, definito dal database." - -#: views.install:45 -msgid "The unique name of the view. This is the primary field views are loaded from, and is used so that views may be internal and not necessarily in the database. May only be alphanumeric characters plus underscores." -msgstr "Il nome univoco di una vista. Questo è il campo primario dal quale sono caricate le viste e viene usato in modo che le viste possano essere interne e non necessariamente nel database. Può contenere solo caratteri alfanumerici e underscore (_)." - -#: views.install:51 -msgid "A description of the view for the admin interface." -msgstr "Una descrizione della vista nell'interfaccia di amministrazione." - -#: views.install:61 -msgid "A chunk of PHP code that can be used to provide modifications to the view prior to building." -msgstr "Un pezzo di codice PHP che può essere usato per fornire modifiche alla vista prima della costruzione." - -#: views.install:68 -msgid "What table this view is based on, such as node, user, comment, or term." -msgstr "Su quale tabella si basa questa vista, tipo nodo, utente, commento o termine." - -#: views.install:74 -msgid "A boolean to indicate whether or not this view may have its query cached." -msgstr "Un booleano per indicare se questa vista può avere la sua query memorizzata in cache o no." - -#: views.install:82 -msgid "Stores information about each display attached to a view." -msgstr "Memorizza informazioni su ogni visualizzazione allegata a una vista." - -#: views.install:89 -msgid "The view this display is attached to." -msgstr "La vista alla quale è allegata questa visualizzazione." - -#: views.install:111 -msgid "The type of the display. Usually page, block or embed, but is pluggable so may be other things." -msgstr "Il tipo di visualizzazione. In genere pagina, blocco o integrato, ma è inseribile per cui può essere oltre cose." - -#: views.install:97 -msgid "An identifier for this display; usually generated from the display_plugin, so should be something like page or page_1 or block_2, etc." -msgstr "Un identificatore per questa visualizzazione; di solito generato dal display_plugin, quindi dovrebbe essere qualcosa tipo pagina o page_1 o block_2, ecc." - -#: views.install:116 -msgid "The order in which this display is loaded." -msgstr "L'ordine in cui viene caricata questa visualizzazione." - -#: views.install:120 -msgid "A serialized array of options for this display; it contains options that are generally only pertinent to that display plugin type." -msgstr "Un array serializzato di opzioni per questa visualizzazione; contiene opzioni che in genere sono pertinenti solo a quel tipo di visualizzazione." - -#: views.info:0 -msgid "Create customized lists and queries from your database." -msgstr "Crea elenchi personalizzati di query dal tuo database." - -#: handlers/views_handler_field_date.inc:30 -msgid "Time ago" -msgstr "Tempo fa" - -#: handlers/views_handler_field_date.inc:36 -msgid "Custom date format" -msgstr "Formato della data paersonalizzato" - -#: handlers/views_handler_sort_formula.inc:24 -msgid "views_handler_sort_formula missing default: @formula" -msgstr "views_handler_sort_formula manca predefinito: @formula" - -#: handlers/views_handler_argument.inc:248 -msgid "Display all values" -msgstr "Mostra tutti i valori" - -#: handlers/views_handler_argument.inc:258 -msgid "Display empty text" -msgstr "Mostra testo vuoto" - -#: includes/plugins.inc:94 -msgid "Displays rows one after another." -msgstr "Visualizza le righe una dopo l'altra." - -#: includes/plugins.inc:105 -msgid "Displays rows as an HTML list." -msgstr "Visualizza le righe come in una lista HTML." - -#: includes/plugins.inc:125 -msgid "Displays rows in a table." -msgstr "Visualizza le righe in una tabella." - -#: includes/plugins.inc:174 -msgid "Displays the fields with an optional template." -msgstr "Visualizza i campi con un template opzionale." - -#: modules/node.views.inc:628,617 -msgid "Display the node with standard node view." -msgstr "Visualizza il nodo con la standard node view." - -#: modules/node.views.inc:57 -msgid "Nid" -msgstr "Nid" - -#: modules/node.views.inc:108; -#: modules/comment.views.inc:133 -msgid "Post date" -msgstr "Data di inserimento" - -#: modules/node.views.inc:124 -msgid "Updated date" -msgstr "Data di aggiornamento" - -#: modules/node/views_handler_field_node.inc:32 -msgid "Link this field to its node" -msgstr "Collega questo campo al suo nodo" - -#: handlers/views_handler_field_boolean.inc:53 -msgid "On" -msgstr "On" - -#: handlers/views_handler_field_boolean.inc:53 -msgid "Off" -msgstr "Off" - -#: includes/view.inc:1861 -msgid "fields" -msgstr "campi" - -#: modules/system.views.inc:49 -msgid "File ID" -msgstr "ID file" - -#: handlers/views_handler_filter.inc:465 -msgid "<Any>" -msgstr "<Qualsiasi>" - -#: modules/node/views_plugin_row_node_rss.inc:24; -#: handlers/views_handler_field_prerender_list.inc:29 -msgid "Display type" -msgstr "Tipo di visualizzazione" - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:125; -#: modules/taxonomy/views_handler_argument_taxonomy.inc:18 -msgid "No name" -msgstr "Nessun nome" - -#: handlers/views_handler_filter_string.inc:41 -msgid "contains" -msgstr "contiene" - -#: plugins/views_plugin_display.inc:752 -msgid "Information" -msgstr "Informazioni" - -#: includes/admin.inc:266 -msgid "Sort by" -msgstr "Ordina per" - -#: includes/plugins.inc:144,93 -msgid "Unformatted" -msgstr "Non formattato" - -#: modules/user/views_handler_field_user_mail.inc:19 -msgid "No link" -msgstr "Nessun link" - -#: theme/views-ui-edit-tab.tpl.php:31 -msgid "View settings" -msgstr "Impostazioni vista" - -#: handlers/views_handler_field_boolean.inc:24 -msgid "Output format" -msgstr "Formato di output" - -#: handlers/views_handler_filter_string.inc:58 -msgid "Starts with" -msgstr "Inizia con" - -#: handlers/views_handler_field_numeric.inc:38 -msgid "Precision" -msgstr "Precisione" - -#: views.module:629 -msgid "Broken handler @table.@field" -msgstr "Errato gestore @table.@field" - -#: views.module:747 -msgid "Skipping broken view @view" -msgstr "Salta la vista @view errata" - -#: views_ui.module:159 -msgid "The converter will make a best-effort attempt to convert a Views 1 view to Views 2. This conversion is not reliable; you will very likely have to make adjustments to your view to get it to match. You can import Views 1 views through the normal Import tab." -msgstr "Il convertitore farà del suo meglio per convertire una vista Views 1 a Views 2. Tale conversione non è affidabile; molto probabilmente si dovranno apportare degli aggiustamenti alla vista per farla corrispondere. È possibile importare una vista Views 1 tramite la scheda Importa normale." - -#: views_ui.module:265 -msgid "Changes cannot be made to a locked view." -msgstr "Non possono essere fatte modifiche a una vista bloccata." - -#: views.install:57 -msgid "A tag used to group/sort views in the admin interface" -msgstr "Un contrassegno usato per raggruppare/ordinare le viste nell'interfaccia di amministrazione" - -#: views.install:104 -msgid "The title of the display, viewable by the administrator." -msgstr "Il titolo della visualizzazione, visibile dall'amministratore." - -#: views.install:131 -msgid "A special cache used to store objects that are being edited; it serves to save state in an ordinarily stateless environment." -msgstr "Una cache speciale usata per memorizzare gli oggetti che vengono modificati; serve per salvare lo stato in un ambiente generalmente privo di stato." - -#: views.install:136 -msgid "The session ID this cache object belongs to." -msgstr "L'ID di sessione a cui appartiene questo oggetto cache." - -#: views.install:141 -msgid "The name of the view this cache is attached to." -msgstr "Il nome della vista alla quale è allegata questa cache." - -#: views.install:146 -msgid "The name of the object this cache is attached to; this essentially represents the owner so that several sub-systems can use this cache." -msgstr "Il nome dell'oggetto al quale è allegata questa cache; essenzialmente questo rappresenta il proprietario così che diversi sotto-sistemi possono usare questa cache." - -#: views.install:153 -msgid "The time this cache was created or updated." -msgstr "L'ora in cui questa cache è stata creata o aggiornata." - -#: views.install:157 -msgid "Serialized data being stored." -msgstr "I dati serializzati sono in memorizzazione." - -#: views_ui.info:0 -msgid "Administrative interface to views. Without this module, you cannot create or edit your views." -msgstr "Interfaccia di amministrazione delle viste. Senza questo modulo non si possono creare o modificare le viste." - -#: docs/docs.php:127 -msgid "Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page." -msgstr "Emula la prima pagina predefinita di Drupal; si può impostare il percorso della home page predefinita a questa vista per renderla la propria prima pagina." - -#: docs/docs.php:349 -msgid "Front page feed" -msgstr "Feed prima pagina" - -#: handlers/views_handler_argument.inc:121 -msgid "The title to use when this argument is present. It will override the title of the view and titles from previous arguments. You can use percent substitution here to replace with argument titles. Use \"%1\" for the first argument, \"%2\" for the second, etc." -msgstr "Il titolo da usare quando questo argomento è presente. Modificherà il titolo della vista e i titoli degli argomenti precedenti. Qui è possibile usare un simbolo percentuale di sostituzione da rimpiazzare con i titoli degli argomenti. Usare \"%1\" per il primo argomento, \"%2\" per il secondo, ecc." - -#: handlers/views_handler_argument.inc:134 -msgid "Action to take if argument is not present" -msgstr "Azione da intraprendere se l'argomento non è presente" - -#: handlers/views_handler_argument.inc:149 -msgid "If this value is received as an argument, the argument will be ignored; i.e, \"all values\"" -msgstr "Se questo valore viene ricevuto come argomento, l'argomento sarà ignorato; vale a dire, \"tutti i valori\"" - -#: handlers/views_handler_argument.inc:155 -msgid "Wildcard title" -msgstr "Titolo jolly" - -#: handlers/views_handler_argument.inc:158 -msgid "The title to use for the wildcard in substitutions elsewhere." -msgstr "Il titolo da usare come jolly nelle sostituzioni altrove." - -#: handlers/views_handler_argument.inc:181 -msgid "Validator options" -msgstr "Opzioni del validatore" - -#: handlers/views_handler_argument.inc:186 -msgid "Validator" -msgstr "Validatore" - -#: handlers/views_handler_argument.inc:190 -msgid "<Basic validation>" -msgstr "<Validazione di base>" - -#: handlers/views_handler_argument.inc:229 -msgid "Action to take if argument does not validate" -msgstr "Azione da intraprendere se l'argomento non valida" - -#: handlers/views_handler_argument.inc:253 -msgid "Hide view / Page not found (404)" -msgstr "Nascondi vista / Pagina non trovata (404)" - -#: handlers/views_handler_argument.inc:277 -msgid "Provide default argument" -msgstr "Stabilire l'argomento predefinito" - -#: handlers/views_handler_argument.inc:310 -msgid "Provide default argument options" -msgstr "Stabilire le opzioni dell'argomento predefinito" - -#: handlers/views_handler_argument.inc:320 -msgid "Default argument type" -msgstr "Tipo di argomento predefinito" - -#: handlers/views_handler_sort.inc:66; -#: handlers/views_handler_relationship.inc:133; -#: handlers/views_handler_filter.inc:592; -#: handlers/views_handler_field.inc:227; -#: handlers/views_handler_argument.inc:708 -msgid "Broken/missing handler" -msgstr "Gestore rotto/mancante" - -#: handlers/views_handler_sort.inc:74; -#: handlers/views_handler_relationship.inc:141; -#: handlers/views_handler_filter.inc:600; -#: handlers/views_handler_field.inc:235; -#: handlers/views_handler_argument.inc:716 -msgid "The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item." -msgstr "Il gestore di questa voce è rotto o mancante e non può essere usato. Se un modulo che ha fornito un gestore viene disattivato, riattivandolo può ripristinarlo. Altrimenti si dovrà probabilmente eliminare questa voce." - -#: handlers/views_handler_argument_date.inc:29 -msgid "Current date" -msgstr "Data corrente" - -#: handlers/views_handler_argument_date.inc:30 -msgid "Current node's creation time" -msgstr "Data di inserimento del nodo corrente" - -#: handlers/views_handler_argument_date.inc:31 -msgid "Current node's update time" -msgstr "Data di aggiornamento del nodo corrente" - -#: handlers/views_handler_argument_numeric.inc:30; -#: handlers/views_handler_argument_many_to_one.inc:45 -msgid "Allow multiple terms per argument." -msgstr "Consente termini multipli per argomento." - -#: handlers/views_handler_argument_many_to_one.inc:46 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 (for OR) or 1,2,3 (for AND)." -msgstr "Se selezioato, gli utenti possono inserire nel form argomenti multipli nella forma di 1+2+3 (per OR) oppure 1,2,3 (per AND)." - -#: handlers/views_handler_argument_string.inc:95; -#: handlers/views_handler_argument_many_to_one.inc:53 -msgid "Allow multiple arguments to work together." -msgstr "Consenti agli argomenti multipli di funzionare insieme." - -#: handlers/views_handler_argument_string.inc:96; -#: handlers/views_handler_argument_many_to_one.inc:54 -msgid "If selected, multiple instances of this argument can work together, as though multiple terms were supplied to the same argument. This setting is not compatible with the \"Reduce duplicates\" setting." -msgstr "Se selezionato, le istanze multiple di questo argomento possono funzionare insieme, come se dei termini multipli fossero forniti allo stesso argomento. Questa impostazione non è compatibile con l'impostazione \"Riduci i duplicati\"." - -#: handlers/views_handler_argument_string.inc:102; -#: handlers/views_handler_argument_many_to_one.inc:60 -msgid "Do not display items with no value in summary" -msgstr "Non visualizzare le voci che non hanno alcun valore nel sommario" - -#: handlers/views_handler_argument_numeric.inc:61; -#: handlers/views_handler_argument_many_to_one.inc:113 -msgid "Invalid input" -msgstr "Inserimento non valido" - -#: handlers/views_handler_argument_null.inc:21 -msgid "Fail basic validation if any argument is given" -msgstr "Boccia la validazione di base se non viene dato alcun argomento" - -#: handlers/views_handler_argument_null.inc:23 -msgid "By checking this field, you can use this to make sure views with more arguments than necessary fail validation." -msgstr "Selezionando questo campo, lo si può usare per assicurarsi che le viste con più argomenti del necessario non superino la validazione." - -#: handlers/views_handler_argument_numeric.inc:31 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." -msgstr "Se selezionato gli utenti possono inserire argomenti multipli nella forma di 1+2+3 o 1,2,3." - -#: handlers/views_handler_argument_numeric.inc:37 -msgid "Exclude the argument" -msgstr "Escludi l'argomento" - -#: handlers/views_handler_argument_numeric.inc:38 -msgid "If selected, the numbers entered in the argument will be excluded rather than limiting the view." -msgstr "Se selezionato i numeri inseriti nell'argomento saranno esclusi anziché limitare la vista." - -#: handlers/views_handler_argument_string.inc:44 -msgid "Glossary mode" -msgstr "Modalità glossario" - -#: handlers/views_handler_argument_string.inc:45 -msgid "Glossary mode applies a limit to the number of characters used in the argument, which allows the summary view to act as a glossary." -msgstr "La modalitù glossario applica un limite al numero di caratteri usati nell'argomento, il che permette alla vista sommario di agire come un glossario." - -#: handlers/views_handler_argument_string.inc:51 -msgid "Character limit" -msgstr "Limite caratteri" - -#: handlers/views_handler_argument_string.inc:52 -msgid "How many characters of the argument to filter against. If set to 1, all fields starting with the letter in the argument would be matched." -msgstr "Quanti sono i caratteri dell'argomento con cui filtrare. Se impostato a 1, tutti i campi che iniziano con la lettera nell'argomento corrisponderanno." - -#: handlers/views_handler_argument_string.inc:61 -msgid "When printing the argument result, how to transform the case." -msgstr "Nello scrivere il risultato dell'argomento, come trasformare i caratteri." - -#: handlers/views_handler_argument_string.inc:77,63 -msgid "No transform" -msgstr "Nessuna trasformazione" - -#: handlers/views_handler_argument_string.inc:78,64 -msgid "Upper case" -msgstr "Maiuscole" - -#: handlers/views_handler_argument_string.inc:79,65 -msgid "Lower case" -msgstr "Minuscole" - -#: handlers/views_handler_argument_string.inc:80,66 -msgid "Capitalize first letter" -msgstr "Prima lettera maiuscola" - -#: handlers/views_handler_argument_string.inc:81,67 -msgid "Capitalize each word" -msgstr "Ogni parola in maiuscolo" - -#: handlers/views_handler_argument_string.inc:74 -msgid "Case in path" -msgstr "Caratteri nel percorso" - -#: handlers/views_handler_argument_string.inc:75 -msgid "When printing url paths, how to transform the of the argument. Do not use this unless with Postgres as it uses case sensitive comparisons." -msgstr "Nello scrivere i percorsi degli url, come trasformare il \"dell'argomento\". Non usare se non con Postgres, poiché esso utilizza la comparazione delle maiuscole/minuscole." - -#: handlers/views_handler_argument_string.inc:88 -msgid "Transform spaces to dashes in URL" -msgstr "Trasforma gli spazi negli URL in trattini" - -#: handlers/views_handler_field.inc:148 -msgid "The label for this field that will be displayed to end users if the style requires it." -msgstr "L'etichetta per questo campo che sarà mostrata agli utenti finali se lo stile lo richiede." - -#: handlers/views_handler_field.inc:152 -msgid "Exclude from display" -msgstr "Escludi dalla visualizzazione" - -#: handlers/views_handler_field.inc:154 -msgid "Check this box to not display this field, but still load it in the view. Use this option to not show a grouping field in each record, or when doing advanced theming." -msgstr "Selezionare questa casella per non mostrare questo campo, caricandolo comunque nella vista. Usare questa opzione per non mostrare un campo raggruppato in ogni documento, o quando si fa della temizzazione avanzata." - -#: handlers/views_handler_field_boolean.inc:26 -msgid "Yes/No" -msgstr "Sì/No" - -#: handlers/views_handler_field_boolean.inc:27 -msgid "True/False" -msgstr "True/False" - -#: handlers/views_handler_field_boolean.inc:28 -msgid "On/Off" -msgstr "On/Off" - -#: handlers/views_handler_field_boolean.inc:34 -msgid "Reverse" -msgstr "Inverti" - -#: handlers/views_handler_field_boolean.inc:35 -msgid "If checked, true will be displayed as false." -msgstr "Se selezionato, true verrà mostrato come false." - -#: handlers/views_handler_field_date.inc:37 -msgid "If \"Custom\", see <a href=\"http://us.php.net/manual/en/function.date.php\" target=\"_blank\">the PHP docs</a> for date formats. If \"Time ago\" this is the the number of different units to display, which defaults to two." -msgstr "Se è \"Personalizzato\", consultare <a href=\"http://us.php.net/manual/it/function.date.php\" target=\"_blank\">i documenti PHP</a> per i formati della data. Se è \"Tempo fa\", questo è il numero di unità differenti da mostrare, che si riduce a due." - -#: handlers/views_handler_field_numeric.inc:32 -msgid "Round" -msgstr "Arrotonda" - -#: handlers/views_handler_field_numeric.inc:33 -msgid "If checked, the number will be rounded." -msgstr "Se selezionato, il numero verrà arrotondato." - -#: handlers/views_handler_field_numeric.inc:40 -msgid "Specify how many digits to print after the decimal point." -msgstr "Specificare quante cifre scrivere dopo la virgola decimale." - -#: handlers/views_handler_field_numeric.inc:47 -msgid "Decimal point" -msgstr "Virgola decimale" - -#: handlers/views_handler_field_numeric.inc:49 -msgid "What single character to use as a decimal point." -msgstr "Il carattere singolo da utilizzare come virgola decimale." - -#: handlers/views_handler_field_numeric.inc:57 -msgid "What single character to use as the thousands separator." -msgstr "Il carattere singolo da utilizzare come separatore delle migliaia." - -#: handlers/views_handler_field_numeric.inc:64 -msgid "Text to put before the number, such as currency symbol." -msgstr "Testo da inserire prima del numero, tipo il simbolo della valuta." - -#: handlers/views_handler_field_numeric.inc:70 -msgid "Text to put after the number, such as currency symbol." -msgstr "Testo da inserire dopo il numero, tipo il simbolo della valuta." - -#: handlers/views_handler_field_prerender_list.inc:31; -#: plugins/views_plugin_style_list.inc:33 -msgid "Unordered list" -msgstr "Elenco non ordinato" - -#: handlers/views_handler_field_prerender_list.inc:32; -#: plugins/views_plugin_style_list.inc:33 -msgid "Ordered list" -msgstr "Elenco ordinato" - -#: handlers/views_handler_field_prerender_list.inc:33 -msgid "Simple separator" -msgstr "Separatore semplice" - -#: handlers/views_handler_field_prerender_list.inc:48 -msgid "Empty list text" -msgstr "Elenco di testo vuoto" - -#: handlers/views_handler_field_prerender_list.inc:50 -msgid "If the list is empty, you may enter text here that will be displayed." -msgstr "Se l'elenco è vuoto, qui si può inserire del testo da visualizzare." - -#: modules/statistics/views_handler_field_accesslog_path.inc:31; -#: handlers/views_handler_field_url.inc:24 -msgid "Display as link" -msgstr "Visualizza come link" - -#: handlers/views_handler_filter.inc:206 -msgid "This item is currently not exposed. If you <strong>expose</strong> it, users will be able to change the filter as they view it." -msgstr "Questa voce attualmente non è esposta. Se la si <strong>espone</strong>, gli utenti potranno cambiare il filtro quando la visualizzano." - -#: handlers/views_handler_filter.inc:218 -msgid "This item is currently exposed. If you <strong>hide</strong> it, users will not be able to change the filter as they view it." -msgstr "Questa voce attualmente è esposta. Se la si <strong>nasconde</strong> gli utenti non potranno modificare il filtro quando lo vedono." - -#: handlers/views_handler_filter.inc:289 -msgid "Unlock operator" -msgstr "Sblocca operatore" - -#: handlers/views_handler_filter.inc:290 -msgid "When checked, the operator will be exposed to the user" -msgstr "Quando selezionato, l'operatore sarà esposto all'utente" - -#: handlers/views_handler_filter.inc:296 -msgid "Operator identifier" -msgstr "Identificatore operatore" - -#: handlers/views_handler_filter.inc:298 -msgid "This will appear in the URL after the ? to identify this operator." -msgstr "Questo apparirà nell'URL dopo il ? per identificare questo operatore." - -#: handlers/views_handler_filter.inc:315 -msgid "Filter identifier" -msgstr "Identificatore filtro" - -#: handlers/views_handler_filter.inc:317 -msgid "This will appear in the URL after the ? to identify this filter. Cannot be blank." -msgstr "Questo apparirà nell'URL dopo il ? per identificare questo filtro. Non può essere vuoto." - -#: handlers/views_handler_filter.inc:334 -msgid "This exposed filter is optional and will have added options to allow it not to be set." -msgstr "Questo filtro esposto è opzionale e avrà aggiunte delle opzioni per consentirgli di non essere impostato." - -#: handlers/views_handler_filter.inc:340 -msgid "Force single" -msgstr "Forza singolo" - -#: handlers/views_handler_filter.inc:341 -msgid "Force this exposed filter to accept only one option." -msgstr "Forza questo filtro esposta ad accettare solo un'opzione." - -#: handlers/views_handler_filter.inc:347 -msgid "Remember" -msgstr "Ricorda" - -#: handlers/views_handler_filter.inc:348 -msgid "Remember the last setting the user gave this filter." -msgstr "Ricorda l'ultima impostazione data dall'utente a questo filtro." - -#: handlers/views_handler_filter.inc:359 -msgid "The identifier is required if the filter is exposed." -msgstr "Se il filtro è esposto, è richiesto l'identificatore." - -#: handlers/views_handler_filter.inc:364 -msgid "This identifier is not allowed." -msgstr "Questo identificatore non è consentito." - -#: handlers/views_handler_filter_string.inc:111; -#: handlers/views_handler_filter_numeric.inc:251; -#: handlers/views_handler_filter_in_operator.inc:175; -#: handlers/views_handler_filter_boolean_operator.inc:58 -msgid "exposed" -msgstr "esposto" - -#: handlers/views_handler_filter_date.inc:24 -msgid "Value type" -msgstr "Tipo di valore" - -#: handlers/views_handler_filter_date.inc:26 -msgid "A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred." -msgstr "Una data in qualsiasi formato leggibile dal computer. È preferibile CCYY-MM-DD HH:MM:SS." - -#: handlers/views_handler_filter_date.inc:27 -msgid "An offset from the current time such as \"+1 day\" or \"-2 hours -30 minutes\"" -msgstr "Una deviazione dall'ora corrente, tipo \"+1 giorno\" o \"-2 ore -30 minuti\"" - -#: handlers/views_handler_filter_date.inc:87,83,77 -msgid "Invalid date format." -msgstr "Formato data non corretto." - -#: handlers/views_handler_filter_in_operator.inc:37 -msgid "Limit list to selected items" -msgstr "Limita l'elenco alle voci selezionate" - -#: handlers/views_handler_filter_in_operator.inc:38 -msgid "If checked, the selected items presented to the user will be the only ones selected here." -msgstr "Se attivato, le voci selezionate presentate all'utente saranno solamente quelle selezionate qui." - -#: handlers/views_handler_filter_many_to_one.inc:32; -#: handlers/views_handler_filter_in_operator.inc:57 -msgid "Is one of" -msgstr "È uno di" - -#: handlers/views_handler_filter_in_operator.inc:58 -msgid "Is not one of" -msgstr "Non è uno di" - -#: handlers/views_handler_filter_many_to_one.inc:33 -msgid "Is all of" -msgstr "È tutto di" - -#: handlers/views_handler_filter_many_to_one.inc:34 -msgid "Is none of" -msgstr "Non è nessuno di" - -#: handlers/views_handler_filter_numeric.inc:28 -msgid "<" -msgstr "<" - -#: handlers/views_handler_filter_numeric.inc:34 -msgid "<=" -msgstr "<=" - -#: handlers/views_handler_filter_numeric.inc:46 -msgid "!=" -msgstr "!=" - -#: handlers/views_handler_filter_numeric.inc:52 -msgid ">=" -msgstr ">=" - -#: handlers/views_handler_filter_numeric.inc:58 -msgid ">" -msgstr ">" - -#: handlers/views_handler_filter_numeric.inc:62 -msgid "Is between" -msgstr "È tra" - -#: handlers/views_handler_filter_numeric.inc:64 -msgid "between" -msgstr "tra" - -#: handlers/views_handler_filter_numeric.inc:68 -msgid "Is not between" -msgstr "Non è tra" - -#: handlers/views_handler_filter_numeric.inc:70 -msgid "not between" -msgstr "non tra" - -#: handlers/views_handler_filter_string.inc:80; -#: handlers/views_handler_filter_numeric.inc:79 -msgid "Is empty (NULL)" -msgstr "È vuoto (NULL)" - -#: handlers/views_handler_filter_string.inc:82; -#: handlers/views_handler_filter_numeric.inc:81 -msgid "empty" -msgstr "vuoto" - -#: handlers/views_handler_filter_string.inc:86; -#: handlers/views_handler_filter_numeric.inc:85 -msgid "Is not empty (NULL)" -msgstr "Non è vuoto (NULL)" - -#: handlers/views_handler_filter_string.inc:88; -#: handlers/views_handler_filter_numeric.inc:87 -msgid "not empty" -msgstr "non vuoto" - -#: handlers/views_handler_filter_numeric.inc:175 -msgid "Min" -msgstr "Min" - -#: handlers/views_handler_filter_numeric.inc:181 -msgid "And max" -msgstr "E max" - -#: handlers/views_handler_filter_numeric.inc:181 -msgid "And" -msgstr "E" - -#: handlers/views_handler_filter_numeric.inc:257 -msgid "@min and @max" -msgstr "@min e @max" - -#: handlers/views_handler_filter_string.inc:46 -msgid "Contains any word" -msgstr "Contiene ogni parola" - -#: handlers/views_handler_filter_string.inc:47 -msgid "has word" -msgstr "ha la parola" - -#: handlers/views_handler_filter_string.inc:52 -msgid "Contains all words" -msgstr "Contiene tutte le parole" - -#: handlers/views_handler_filter_string.inc:53 -msgid "has all" -msgstr "ha tutte" - -#: handlers/views_handler_filter_string.inc:59 -msgid "begins" -msgstr "inizia" - -#: handlers/views_handler_filter_string.inc:64 -msgid "Ends with" -msgstr "Termina con" - -#: handlers/views_handler_filter_string.inc:65 -msgid "ends" -msgstr "termina" - -#: handlers/views_handler_filter_string.inc:71 -msgid "!has" -msgstr "!has" - -#: handlers/views_handler_filter_string.inc:126 -msgid "Case sensitive" -msgstr "Maiuscole/minuscole" - -#: handlers/views_handler_filter_string.inc:128 -msgid "Case sensitive filters may be faster. MySQL might ignore case sensitivity." -msgstr "I filtri sensibili a maiuscole/minuscole possono essere più v eloci. MySQL potrebbe ignorare le maiuscole/minuscole." - -#: handlers/views_handler_relationship.inc:80 -msgid "The label for this relationship that will be displayed only administratively." -msgstr "L'etichetta per questa relazione che verrà mostrata solo in amministrazione." - -#: handlers/views_handler_relationship.inc:85 -msgid "Require this relationship" -msgstr "Richiedi questa relazione" - -#: handlers/views_handler_relationship.inc:86 -msgid "If required, items that do not contain this relationship will not appear." -msgstr "Se richiesta, le voci che non contengono questa relazione non compariranno." - -#: handlers/views_handler_sort.inc:38 -msgid "asc" -msgstr "asc" - -#: handlers/views_handler_sort.inc:42 -msgid "desc" -msgstr "disc" - -#: handlers/views_handler_sort.inc:54 -msgid "Sort order" -msgstr "Ordina per" - -#: handlers/views_handler_sort_date.inc:35 -msgid "The granularity is the smallest unit to use when determining whether two dates are the same; for example, if the granularity is \"Year\" then all dates in 1999, regardless of when they fall in 1999, will be considered the same date." -msgstr "La granularità è la più piccola unità usata quando si determina se due date sono uguali; per esempio, se la granularità è \"Anno\" allora tutte le date in 1999, indipendentemente da quando cadono nel 1999, saranno considerate la stessa data." - -#: includes/admin.inc:36 -msgid "If you <a href=\"@modules\">enable the advanced help module</a>, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Se si <a href=\"@modules\">attiva il modulo di aiuto avanzato</a>, Views fornirà un aiuto ulteriore e migliore. <a href=\"@hide\">Nascondi questo messaggio.</a>" - -#: includes/admin.inc:39 -msgid "If you install the advanced help module from !href, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Se si installa il modulo advanced help module da !href, Viste fornirà maggior e miglior aiuto. <a href=\"@hide\">Nascondi questo messaggio.</a>" - -#: includes/admin.inc:112 -msgid "Warning! Broken view!" -msgstr "Attenzione! Vista non funzionante!" - -#: includes/view.inc:1663; -#: includes/admin.inc:127 -msgid "Broken" -msgstr "Corrotto" - -#: includes/admin.inc:186 -msgid "Install the advanced help module for the getting started" -msgstr "Installare il modulo advanced help per iniziare" - -#: includes/admin.inc:189 -msgid "Not sure what to do? Try the \"!getting-started\" page." -msgstr "Non sai fare? Consulta la pagina \"!getting-started\"." - -#: includes/admin.inc:208 -msgid "Storage" -msgstr "Memoria" - -#: includes/admin.inc:259 -msgid "Displays" -msgstr "Visualizzazioni" - -#: includes/admin.inc:369 -msgid "These queries were run during view rendering:" -msgstr "Queste query sono state eseguite durante il rendering della vista:" - -#: includes/admin.inc:374 -msgid "[@time ms]" -msgstr "[@time ms]" - -#: includes/admin.inc:377 -msgid "Other queries" -msgstr "Altre query" - -#: includes/admin.inc:385 -msgid "This display has no path." -msgstr "Questa visualizzazione non ha un percorso." - -#: includes/admin.inc:390 -msgid "Query build time" -msgstr "Tempo di costruzione query" - -#: includes/admin.inc:392,391,390 -msgid "@time ms" -msgstr "@time ms" - -#: includes/admin.inc:391 -msgid "Query execute time" -msgstr "Tempo di esecuzione query" - -#: includes/admin.inc:392 -msgid "View render time" -msgstr "Tempo di resa della vista" - -#: includes/admin.inc:398 -msgid "No query was run" -msgstr "Non è stato eseguita alcuna query" - -#: includes/admin.inc:405 -msgid "Unable to preview due to validation errors." -msgstr "Non è possibile creare l'anteprima a causa di un errore di validazione." - -#: includes/admin.inc:466 -msgid "Separate arguments with a / as though they were a URL path." -msgstr "Separare gli argomenti con / come se fossero un percorso URL." - -#: includes/admin.inc:510 -msgid "Clone view %view" -msgstr "Clona la vista %view" - -#: includes/convert.inc:20; -#: includes/admin.inc:710,523 -msgid "View name" -msgstr "Nome della vista" - -#: includes/admin.inc:524 -msgid "This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If overriding a module provided view, the name must not be changed or instead a new view will be created." -msgstr "Questo è il nome univoco della vista. Può contenere solo caratteri alfanumerici e underscore (_); viene usato per identificare la vista internamente e per generare nomi di modelli di temi univoci per questa vista. Se si modifica la vista fornita da un modulo, il nome non deve essere cambiato altrimenti verrà creata una nuova vista." - -#: includes/admin.inc:1872,532 -msgid "View description" -msgstr "Descrizione vista" - -#: includes/admin.inc:1873,533 -msgid "This description will appear on the Views administrative UI to tell you what the view is about." -msgstr "La descrizione che comparirà nella UI di amministrazione di Viste per dare informazioni sulla vista." - -#: includes/admin.inc:1879,539 -msgid "View tag" -msgstr "Etichetta vista" - -#: includes/admin.inc:1880,540 -msgid "Enter an optional tag for this view; it is used only to help sort views on the administrative page." -msgstr "Inserire un'etichetta opzionale per questa vista; viene usata solo per ordinare le viste nella pagina di amministrazione." - -#: includes/admin.inc:553 -msgid "The view type is the primary table for which information is being retrieved. The view type controls what arguments, fields, sort criteria and filters are available, so once this is set it <strong>cannot be changed</strong>." -msgstr "Il tipo di vista è la tabella primaria per la quale l'informazione viene ricuperata. Il tipo di vista regola quali argomenti, campi, criteri di ordinamento sono disponibili, per cui una volta che ciò è impostato <strong>non può essere modificato</strong>." - -#: includes/admin.inc:586 -msgid "You must use a unique name for this view." -msgstr "Bisogna usare un nome univoco per questa vista." - -#: includes/admin.inc:619 -msgid "Are you sure you want to revert the view %name?" -msgstr "Sicuro di voler tornare alla vista %name?" - -#: includes/admin.inc:620 -msgid "Reverting the view will delete the view that is in the database, reverting it to the original default view. Any changes you have made will be lost and cannot be recovered." -msgstr "Tornando alla vista eliminerà la vista nel database, riportandola alla vista originale predefinita. Qualsiasi modifica fatta sarà persa e non potrà essere recuperata." - -#: includes/convert.inc:105; -#: includes/admin.inc:623 -msgid "Are you sure you want to delete the view %name?" -msgstr "Sicuro di voler eliminare la vista %name?" - -#: includes/admin.inc:624 -msgid "Deleting a view cannot be undone." -msgstr "L'eliminazione di una vista non può essere annullata." - -#: includes/admin.inc:641 -msgid "The view has been deleted." -msgstr "La vista è stata eliminata." - -#: includes/admin.inc:653 -msgid "There is no lock on view %view to break." -msgstr "Non ci sono <a href=\"http://it.wikipedia.org/wiki/Lock\">lock</a> nella vista %view da interrompere." - -#: includes/admin.inc:663 -msgid "Are you sure you want to break the lock on view %name?" -msgstr "Si è sicuri di voler interrompere il <a href=\"http://it.wikipedia.org/wiki/Lock\">blocco</a> sulla vista %name?" - -#: includes/admin.inc:666 -msgid "By breaking this lock, any unsaved changes made by !user will be lost!" -msgstr "Se si interrompe questo <a href=\"http://it.wikipedia.org/wiki/Lock\">blocco</a>, qualsiasi modifica non salvata fatta da !user andrà persa." - -#: includes/admin.inc:667 -msgid "Break lock" -msgstr "Interrompi il blocco" - -#: includes/admin.inc:677 -msgid "The lock has been broken and you may now edit this view." -msgstr "Il blocco è stato rimosso e ora è possibile modificare questa vista." - -#: includes/admin.inc:684 -msgid "Edit view %view" -msgstr "Modifica la vista %view" - -#: includes/admin.inc:711 -msgid "Enter the name to use for this view if it is different from the source view. Leave blank to use the name of the view." -msgstr "Inserire il nome da usare per questa vista, se è diverso dalla vista sorgente. Lasciare vuoto per usare il nome della vista." - -#: includes/admin.inc:716 -msgid "Paste view code here" -msgstr "Incollare qui il codice della vista" - -#: includes/admin.inc:738 -msgid "Unable to interpret view code." -msgstr "Impossibile interpretare il codice della vista." - -#: includes/admin.inc:746 -msgid "You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2." -msgstr "Si sta importando una vista creata con Views versione 1. Può essere necessario regolare alcuni parametri per funzionare correttamente nella versione 2." - -#: includes/admin.inc:749 -msgid "That view is not compatible with this version of Views." -msgstr "La vista non è compatibile con questa versione di Viste." - -#: includes/admin.inc:764 -msgid "A view by that name already exists; please choose a different name" -msgstr "Una vista con quel nome esiste già; si prega di scegliere un nome differente" - -#: includes/admin.inc:773 -msgid "Display plugin @plugin is not available." -msgstr "Il plugin della visualizzazione @plugin non è disponibile." - -#: includes/admin.inc:780 -msgid "Style plugin @plugin is not available." -msgstr "Il plugin dello stile @plugin non è disponibile." - -#: includes/admin.inc:786 -msgid "Row plugin @plugin is not available." -msgstr "Il plugin della riga @plugin non è disponibile." - -#: includes/admin.inc:796 -msgid "@type handler @table.@field is not available." -msgstr "Il gestore di @type @table.@field non è disponibile." - -#: includes/admin.inc:809 -msgid "Unable to import view." -msgstr "Impossibile importare la vista." - -#: includes/admin.inc:882 -msgid "The view has been saved." -msgstr "La vista è stata salvata." - -#: includes/admin.inc:926 -msgid "Unknown or missing table name" -msgstr "Nome della tabella sconosciuto o mancante" - -#: includes/admin.inc:931 -msgid "Click on an item to edit that item's details." -msgstr "Selezionare una voce per modificarne i dettagli." - -#: includes/admin.inc:934 -msgid "This view has a broken default display and cannot be used." -msgstr "Questa vista ha una visualizzazione predefinita guasta e non può essere usata." - -#: includes/admin.inc:976; -#: theme/theme.inc:97 -msgid "Export this view" -msgstr "Esporta questa vista" - -#: includes/admin.inc:981; -#: theme/theme.inc:102 -msgid "Create a copy of this view" -msgstr "Crea una copia di questa vista" - -#: includes/admin.inc:992 -msgid "View \"!display\"" -msgstr "Visualizza \"!display\"" - -#: includes/admin.inc:993 -msgid "Go to the real page for this display" -msgstr "Vai alla pagina effettiva di questa vista" - -#: includes/admin.inc:1137 -msgid "Invalid" -msgstr "Scorretto" - -#: includes/admin.inc:1138 -msgid "Error: Display @display refers to a plugin named '@plugin', but that plugin doesn't exist!" -msgstr "Errore: La visualizzazione @display fa riferimento a un plugin denominato '@plugin', ma quel plugin non esiste!" - -#: includes/admin.inc:2590,2505,2437,2262,1213 -msgid "Error: handler for @table > @field doesn't exist!" -msgstr "Errore: il gestore per @table > @field non esiste!" - -#: includes/admin.inc:1237; -#: plugins/views_plugin_display.inc:616,598 -msgid "Missing style plugin" -msgstr "Plugin stile mancante" - -#: includes/admin.inc:1241; -#: plugins/views_plugin_display.inc:626,611 -msgid "Change settings for this style" -msgstr "Modifica le impostazioni per questo stile" - -#: includes/admin.inc:1244 -msgid " Style: !style" -msgstr " Stile: !style" - -#: includes/admin.inc:1275 -msgid "Invalid display id found while regenerating tabs" -msgstr "Trovato id visualizzazione non corretto mentre le schede venivano rigenerate" - -#: includes/admin.inc:1326 -msgid "Ok" -msgstr "Ok" - -#: includes/admin.inc:1597 -msgid "Unable to initialize default display" -msgstr "Impossibile inizializzare la visualizzazione predefinita" - -#: includes/admin.inc:1629 -msgid "Add display" -msgstr "Aggiungi" - -#: includes/admin.inc:1669 -msgid "Remove display" -msgstr "Rimuovi visualizzazione" - -#: includes/admin.inc:1680 -msgid "Restore display" -msgstr "Ripristina visualizzazione" - -#: includes/admin.inc:1752 -msgid "Analyze" -msgstr "Analizza" - -#: includes/admin.inc:1772 -msgid "This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display." -msgstr "Questa vista ha solamente una visualizzazione predefinita per cui non sarà collocata da nessuna parte nel sito; si consiglia di aggiungere una visualizzazione pagina o blocco." - -#: includes/admin.inc:1784 -msgid "View analysis" -msgstr "Analisi vista" - -#: includes/admin.inc:1793 -msgid "View analysis can find nothing to report." -msgstr "L'analisi vista non ha trovato niente da riferire." - -#: includes/admin.inc:1867 -msgid "View details" -msgstr "Dettagli vista" - -#: includes/admin.inc:2583,2498,2430,2255,2163,2017,1962,1908 -msgid "Invalid display id @display" -msgstr "Scorretto id visualizzazione @display" - -#: includes/admin.inc:1966 -msgid "Configure @type" -msgstr "Configura @type" - -#: includes/admin.inc:2021 -msgid "Rearrange @type" -msgstr "Riordina @type" - -#: includes/admin.inc:2064 -msgid "Broken field @id" -msgstr "field @id guasto" - -#: includes/admin.inc:2169 -msgid "Add @type" -msgstr "Aggiungi @type" - -#: includes/admin.inc:2199 -msgid "!group: !field" -msgstr "!group: !field" - -#: includes/admin.inc:2208 -msgid "There are no @types available to add." -msgstr "Non ci sono @types disponibili da aggiungere." - -#: includes/admin.inc:2305 -msgid "Do not use a relationship" -msgstr "Non usare una relazione" - -#: includes/admin.inc:2332 -msgid "Configure @type %item" -msgstr "Configura @type %item" - -#: includes/admin.inc:2445 -msgid "Configure extra settings for @type %item" -msgstr "Configurare le impostazioni extra per @type %item" - -#: includes/admin.inc:2510 -msgid "Change summary style for @type %item" -msgstr "Modificare lo stile dommario per @type %item" - -#: includes/admin.inc:2547,2533 -msgid "Internal error: broken plugin." -msgstr "Errore interno: plugin guasto." - -#: includes/admin.inc:2597 -msgid "Configure summary style for @type %item" -msgstr "Configurare lo stile sommario per @type %item" - -#: includes/admin.inc:2689 -msgid "Clear Views' cache" -msgstr "Azzera la cache di Viste" - -#: includes/admin.inc:2695 -msgid "Add Views signature to all SQL queries" -msgstr "Aggiungere la firma di Viste a tutte le query SQL" - -#: includes/admin.inc:2696 -msgid "All Views-generated queries will include a special 'VIEWS' = 'VIEWS' string in the WHERE clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting." -msgstr "Tutte le query generate da Viste includeranno una stringa speciale 'VIEWS' = 'VIEWS' nella clausola WHERE. Ciò rende semplice l'identificazione delle query di Viste nei registri del database del server, ma dovrebbe essere usata solo nella risoluzione di problemi." - -#: includes/admin.inc:2702 -msgid "Disable views data caching" -msgstr "Disattiva il caching dei dati delle viste" - -#: includes/admin.inc:2703 -msgid "Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site." -msgstr "Viste memorizza in cache i dati sulle tabelle, sui moduli e sulle viste disponibili per incrementare le prestazioni. Selezionando questa casella, Viste salterà questa cache e ricostruirà sempre questi dati quando necessario. Ciò può avere un forte impatto sulle prestazioni del sito." - -#: includes/admin.inc:2709 -msgid "Ignore missing advanced help module" -msgstr "Ignora il modulo mancante advanced help" - -#: includes/admin.inc:2710 -msgid "Views uses the advanced help module to provide help text; if this module is not present Views will complain, unless this setting is checked." -msgstr "Viste usa il modulo advanced help per fornire un testo di aiuto; se questo modulo non è presente Viste protesterà, a meno che questa impostazione sia selezionata." - -#: includes/admin.inc:2716 -msgid "Show query above live preview" -msgstr "Mostra la query sopra l'anteprima in diretta" - -#: includes/admin.inc:2717 -msgid "The live preview feature will show you the output of the view you're creating, as well as the view. Check here to show the query and other information above the view; leave this unchecked to show that information below the view." -msgstr "La funzione anteprima in diretta mostrerà il risultato della vista che si sta creando, come pure la vista. Selezionare qui per mostrare la query e altre informazioni sopra la vista; lasciare deselezionato per mostrare quelle informazioni sotto la vista." - -#: includes/admin.inc:2723 -msgid "Show other queries run during render during live preview" -msgstr "Mostra altre esecuzioni di query durante il rendering dell'anteprima in diretta" - -#: includes/admin.inc:2724 -msgid "Drupal has the potential to run many queries while a view is being rendered. Checking this box will display every query run during view render as part of the live preview." -msgstr "Drupal ha la capacità di eseguire molte query mentre viene fatto il rendering di una vista. Selezionando questa casella si visualizzeranno tutte le query durante il rendering della vista come parte dell'anteprima in diretta." - -#: includes/admin.inc:2730 -msgid "Do not show hover links over views" -msgstr "Non mostrare i link hover nelle viste." - -#: includes/admin.inc:2731 -msgid "To make it easier to administrate your views, Views provides 'hover' links to take you to the edit and export screen of a view whenever the view is used. This can be distracting on some themes, though; if it is problematic, you can turn it off here." -msgstr "Per facilitare l'amministrazione delle viste, Viste fornisce i link 'hover' per andare alle videate di modifica ed esportazione di una vista ogniqualvolta essa viene usata. In alcuni temi ciò può distrarre; se è un problema si possono si può disattivare l'hover." - -#: includes/admin.inc:2737 -msgid "Enable views performance statistics via the Devel module" -msgstr "Attiva le statistiche delle prestazioni delle viste tramite il modulo Devel" - -#: includes/admin.inc:2738 -msgid "Check this to enable some Views query and performance statistics <em>if Devel is installed</em>." -msgstr "Selezionarlo per attivare alcune statistiche delle query e delle prestazioni di Viste, <em>nel caso sia installato Devel</em>." - -#: includes/admin.inc:2744 -msgid "Disable javascript with Views" -msgstr "Disattiva javascript con Viste" - -#: includes/admin.inc:2745 -msgid "If you are having problems with the javascript, you can disable it here; the Views UI should degrade and still be usable without javascript, it just not as good." -msgstr "Se si hanno problemi con javascript, è possibile disattivarlo qui; L'interfaccia Views UI dovrebbe degradare ed essere ancora funzionante senza javascript, semplicemente non è altrettanto bella." - -#: includes/admin.inc:2753 -msgid "Page region to output performance statistics" -msgstr "Area della pagina in cui riprodurre le statistiche delle prestazioni" - -#: includes/admin.inc:2766 -msgid "The cache has been cleared." -msgstr "La memoria cache è stata azzerata." - -#: includes/admin.inc:2932 -msgid "Error: missing @component" -msgstr "Errore: @component mancante" - -#: includes/admin.inc:3019 -msgid "Column" -msgstr "Colonna" - -#: includes/admin.inc:3026 -msgid "Default sort" -msgstr "Ordine predefinito" - -#: includes/ajax.inc:82 -msgid "Server reports invalid input error." -msgstr "Il server riporta un errore di inserimento scorretto." - -#: includes/convert.inc:14 -msgid "There are no Views 1 views stored in the database to convert." -msgstr "Nel database non ci sono viste Views 1 da convertire." - -#: includes/convert.inc:33 -msgid "Converted" -msgstr "Convertita" - -#: includes/convert.inc:68 -msgid "The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name." -msgstr "La tabella seguente elenca le viste di Views versione 1 memorizzatre nel database. È possibile sia convertirle per funzionare con Views versione 2, sia eliminarle. Le viste sono convertibili solo se non ci sono viste Views 2 con lo stesso nome." - -#: includes/convert.inc:79 -msgid "Unable to find view." -msgstr "Impossibile trovare la vista." - -#: includes/convert.inc:89 -msgid "Unable to convert view." -msgstr "Impossibile convertire la vista" - -#: includes/convert.inc:117 -msgid "The view has been deleted" -msgstr "La vista è stata eliminata" - -#: includes/handlers.inc:43 -msgid "Handler @handler include tried to loop infinitely!" -msgstr "Il gestore incluso @handler ha provato troppi loop all'infinito!" - -#: includes/handlers.inc:269 -msgid "!group: !title" -msgstr "!group: !title" - -#: includes/handlers.inc:507 -msgid "Reduce duplicates" -msgstr "Riduci duplicati" - -#: includes/handlers.inc:508 -msgid "This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution." -msgstr "Questo filtro può causare che le voci con più di un'opzione selezionata compaiano come risultati duplicati. Se con questo filtro si verificano dei risultati duplicati, selezionando questa casella si possono ridurre quei duplicati; tuttavia, con più termini la query deve cercare, minore sarà la sua prestazione, quindi usare il filtro con cautela." - -#: includes/plugins.inc:26 -msgid "Default settings for this view." -msgstr "Impostazioni predefinite per questa vista." - -#: includes/plugins.inc:40 -msgid "Display the view as a page, with a URL and menu links." -msgstr "Visualizza la vista come una pagina, con un URL e i link del menu." - -#: includes/plugins.inc:52 -msgid "Display the view as a block." -msgstr "Visualizza la vista come blocco." - -#: includes/plugins.inc:65 -msgid "Attachments added to other displays to achieve multiple views in the same view." -msgstr "Allegati aggiunti ad altre visualizzazione per ottenere viste multiple nella stessa vista." - -#: includes/plugins.inc:73 -msgid "Display the view as a feed, such as an RSS feed." -msgstr "Visualizza la vista come feed, tipo un feed RSS." - -#: includes/plugins.inc:115 -msgid "Displays rows in a grid." -msgstr "Visualizza le righe in una griglia." - -#: includes/plugins.inc:136 -msgid "Displays the default summary as a list." -msgstr "Visualizza il sommario predefinito come un elenco." - -#: includes/plugins.inc:145 -msgid "Displays the summary unformatted, with option for one after another or inline." -msgstr "Visualizza il sommario non formattato, con le opzioni una dopo l'altra o allineate." - -#: includes/plugins.inc:154 -msgid "RSS Feed" -msgstr "Feed RSS" - -#: includes/plugins.inc:155 -msgid "Generates an RSS feed from a view." -msgstr "Genera un feed RSS da una vista." - -#: includes/plugins.inc:187 -msgid "Fixed entry" -msgstr "Voce fissa" - -#: includes/plugins.inc:203,191 -msgid "PHP Code" -msgstr "Codice PHP" - -#: includes/plugins.inc:207 -msgid "Numeric" -msgstr "Numerico" - -#: includes/plugins.inc:219 -msgid "Will be available to all users." -msgstr "Sarà disponibile a tutti gli utenti." - -#: includes/plugins.inc:225 -msgid "Access will be granted to users with any of the specified roles." -msgstr "L'accesso sarà garantito agli utenti con uno dei ruoli specificati." - -#: includes/plugins.inc:232 -msgid "Access will be granted to users with the specified permission string." -msgstr "L'accesso sarà garantito agli utenti con la stringa di permesso specificata." - -#: includes/view.inc:261 -msgid "set_display() called with invalid display id @display." -msgstr "set_display() chiamato con l'id di visualizzazione @display non corretto." - -#: includes/view.inc:1863 -msgid "field" -msgstr "campo" - -#: includes/view.inc:1868 -msgid "arguments" -msgstr "argomenti" - -#: includes/view.inc:1874 -msgid "Sort criteria" -msgstr "Criteri di ordinamento" - -#: includes/view.inc:1875 -msgid "sort criteria" -msgstr "criteri di ordinamento" - -#: includes/view.inc:1876 -msgid "Sort criterion" -msgstr "Criterio di ordinamento" - -#: includes/view.inc:1877 -msgid "sort criterion" -msgstr "criterio di ordinamento" - -#: includes/view.inc:1890 -msgid "relationships" -msgstr "relazioni" - -#: js/ajax_view.js:0; -#: js/ajax.js:0 -msgid "An error occurred at @path." -msgstr "Si è verificato un errore in @path." - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Mismatching fragment identifier." -msgstr "UI Schede jQuery: indentificatore frammenti discrepanti." - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Not enough arguments to add tab." -msgstr "UI Schede jQuery: non ci sono argomenti a sufficienza per aggiungere una scheda." - -#: modules/book.views.inc:31 -msgid "The book the node is in." -msgstr "Il libro in cui si trova il nodo." - -#: modules/book.views.inc:58 -msgid "The weight of the book page." -msgstr "Il peso della pagina del libro." - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:24; -#: modules/comment.views.inc:202; -#: modules/book.views.inc:69 -msgid "Depth" -msgstr "Profondità" - -#: modules/book.views.inc:70 -msgid "The depth of the book page in the hierarchy; top level books have a depth of 1." -msgstr "La profondità della pagina del libro nella gerarchia; i libri top level hanno una profondità 1." - -#: modules/book.views.inc:88 -msgid "The order of pages in the book hierarchy. Remember to sort by weight too if you want exactly the right order." -msgstr "L'ordine delle pagine nella gerarchia del libro. Ricordarsi di ordinare anche per peso se si vuole proprio l'ordine corretto." - -#: modules/book.views.inc:111 -msgid "The parent book node." -msgstr "Il nodo del libro genitore." - -#: modules/comment.views.inc:27 -msgid "Comments are responses to node content." -msgstr "I commenti sono risposte al contenuto del nodo." - -#: modules/comment.views.inc:45 -msgid "The title of the comment." -msgstr "Il titolo del commento." - -#: modules/comment.views.inc:64 -msgid "The text of the comment." -msgstr "Il testo del commento." - -#: modules/comment.views.inc:77 -msgid "The comment ID of the field" -msgstr "L'ID commento del campo" - -#: modules/comment.views.inc:96 -msgid "The name of the poster." -msgstr "Il nome dell'autore." - -#: modules/comment.views.inc:114 -msgid "Author's website" -msgstr "Sito web dell'autore" - -#: modules/comment.views.inc:115 -msgid "The website address of the comment's author. Can be a link. The homepage can also be linked with the Name field. Will be empty if posted by a registered user." -msgstr "L'indirizzo del sito web dell'autore del commento. Può essere un link. Anche la homepage può essere collegata con il campo Nome. Sarà vuoto se inserito da un utente registrato." - -#: modules/comment.views.inc:134 -msgid "Date and time of when the comment was posted." -msgstr "Data e ora di quando è stato inserito il commento." - -#: modules/comment.views.inc:149 -msgid "In moderation" -msgstr "In moderazione" - -#: modules/comment.views.inc:150 -msgid "Whether or not the comment is currently in moderation." -msgstr "Se al momento il commento è o non è in moderazione." - -#: modules/comment.views.inc:167 -msgid "View link" -msgstr "Link guarda" - -#: modules/comment.views.inc:168 -msgid "Provide a simple link to view the comment." -msgstr "Fornisce un link semplice per vedere il commento." - -#: modules/user.views.inc:202; -#: modules/node.views.inc:250; -#: modules/comment.views.inc:176 -msgid "Edit link" -msgstr "Link modifica" - -#: modules/comment.views.inc:177 -msgid "Provide a simple link to edit the comment." -msgstr "Fornisce un link semplice per modificare il commento." - -#: modules/user.views.inc:210; -#: modules/node.views.inc:472,258; -#: modules/comment.views.inc:185 -msgid "Delete link" -msgstr "Link elimina" - -#: modules/comment.views.inc:186 -msgid "Provide a simple link to delete the comment." -msgstr "Fornisce un link semplice per eliminare il commento." - -#: modules/comment.views.inc:194 -msgid "Reply-to link" -msgstr "Link rispondi" - -#: modules/comment.views.inc:195 -msgid "Provide a simple link to reply to the comment." -msgstr "Fornisce un link semplice per rispondere al commento." - -#: modules/comment.views.inc:203 -msgid "Display the depth of the comment if it is threaded." -msgstr "Visualizza la profondità del commento se questo è in una sequenza (thread)." - -#: modules/comment.views.inc:208 -msgid "Sort by the threaded order. This will keep child comments together with their parents." -msgstr "Ordina per sequenza (thread). Ciò terrà i commenti figli assieme ai loro genitori." - -#: modules/comment.views.inc:215 -msgid "The node the comment is a reply to." -msgstr "Il nodo del quale il commento è una risposta." - -#: modules/comment.views.inc:226 -msgid "The user who wrote the comment." -msgstr "L'utente che ha scritto il commento." - -#: modules/comment.views.inc:236 -msgid "Parent CID" -msgstr "CID genitore" - -#: modules/comment.views.inc:237 -msgid "The Comment ID of the parent comment." -msgstr "Il Comment ID del commento genitore." - -#: modules/comment.views.inc:247,242 -msgid "Parent comment" -msgstr "Commento genitore" - -#: modules/comment.views.inc:243 -msgid "The parent comment." -msgstr "Il commento genitore." - -#: modules/comment.views.inc:268 -msgid "Last comment time" -msgstr "Ora dell'ultimo commento" - -#: modules/comment.views.inc:269 -msgid "Date and time of when the last comment was posted." -msgstr "Data e ora di quando è stato inserito l'ultimo commento." - -#: modules/comment.views.inc:284 -msgid "Last comment author" -msgstr "L'autore dell'ultimo commento" - -#: modules/comment.views.inc:285 -msgid "The name of the author of the last posted comment." -msgstr "Il nome dell'autore che ha inserito l'ultimo commento." - -#: modules/comment.views.inc:297 -msgid "Comment count" -msgstr "Numero commenti" - -#: modules/comment.views.inc:298 -msgid "The number of comments a node has." -msgstr "Il numero dei commenti di un nodo." - -#: modules/comment.views.inc:316 -msgid "Updated/commented date" -msgstr "Data di aggiornamento/inserimento commento" - -#: modules/comment.views.inc:317 -msgid "The most recent of last comment posted or node updated time." -msgstr "L'ora del più recente degli ultimi commenti inseriti o dell'ultimo aggiornamento del nodo." - -#: modules/comment.views.inc:340 -msgid "New comments" -msgstr "Nuovi commenti" - -#: modules/comment.views.inc:341 -msgid "The number of new comments on the node." -msgstr "Il numero di nuovi commenti al nodo." - -#: modules/comment.views.inc:349 -msgid "Comment status" -msgstr "Stato commenti" - -#: modules/comment.views.inc:350 -msgid "Whether comments are enabled or disabled on the node." -msgstr "Se i commenti sono attivati o disattivati per il nodo." - -#: modules/comment.views.inc:364 -msgid "User posted or commented" -msgstr "Utente che ha inserito o commentato" - -#: modules/comment.views.inc:365 -msgid "Display comments only if a user posted the node or commented on the node." -msgstr "Visualizza i commenti solo se un utente ha inserito il nodo o ha commentato il nodo." - -#: modules/comment.views.inc:385 -msgid "Display the comment with standard comment view." -msgstr "Visualizza il commento con una vista commento standard." - -#: modules/comment.views.inc:396 -msgid "Display the comment as RSS." -msgstr "Visualizza il commento come RSS." - -#: modules/node.views.inc:30 -msgid "Nodes are a Drupal site's primary content." -msgstr "I nodi sono i contenuti principali dei siti Drupal." - -#: modules/node.views.inc:58 -msgid "The node ID of the node." -msgstr "L'ID del nodo." - -#: modules/node.views.inc:414,86 -msgid "The title of the node." -msgstr "Il titolo del nodo." - -#: modules/node.views.inc:109 -msgid "The date the node was posted." -msgstr "La data in cui il nodo è stato inserito." - -#: modules/node.views.inc:125 -msgid "The date the node was last updated." -msgstr "La data in cui il nodo è stato aggiornato l'ultima volta." - -#: modules/node.views.inc:141 -msgid "The type of a node (for example, \"blog entry\", \"forum post\", \"story\", etc)." -msgstr "Il tipo di nodo (per esempio \"voce blog\", \"messaggio forum\", \"storia\", ecc)." - -#: modules/node.views.inc:160 -msgid "The published status of the node." -msgstr "Lo stato di pubblicazione del nodo." - -#: modules/node.views.inc:176 -msgid "Published or admin" -msgstr "Pubblicato o in amministrazione" - -#: modules/node.views.inc:177 -msgid "Filters out unpublished nodes if the current user cannot view them." -msgstr "Filtra i nodi nascosti se l'utente corrente non può vederli." - -#: modules/node.views.inc:188 -msgid "The front page of the node." -msgstr "La prima pagina del nodo." - -#: modules/node.views.inc:205 -msgid "Whether or not the node is moderated." -msgstr "Se il nodo è o no moderato." - -#: modules/node.views.inc:223 -msgid "Whether or not the node is sticky." -msgstr "Se il nodo debba essere fisso in cima." - -#: modules/node.views.inc:243 -msgid "Provide a simple link to the node." -msgstr "Fornire un link semplice al nodo." - -#: modules/node.views.inc:251 -msgid "Provide a simple link to edit the node." -msgstr "Fornire un link semplice per modificare il nodo." - -#: modules/node.views.inc:259 -msgid "Provide a simple link to delete the node." -msgstr "Fornire un link semplice per eliminare il nodo." - -#: modules/user.views.inc:123; -#: modules/node.views.inc:448,267 -msgid "Created date" -msgstr "Data di creazione" - -#: modules/node.views.inc:268 -msgid "In the form of CCYYMMDD." -msgstr "Nella forma di CCYYMMDD." - -#: modules/node.views.inc:276 -msgid "Created year + month" -msgstr "Creato anno + mese" - -#: modules/node.views.inc:277 -msgid "In the form of YYYYMM." -msgstr "Nella forma di YYYYMM." - -#: modules/node.views.inc:285 -msgid "Created year" -msgstr "Creato anno" - -#: modules/node.views.inc:286 -msgid "In the form of YYYY." -msgstr "Nella forma di YYYY." - -#: modules/node.views.inc:294 -msgid "Created month" -msgstr "Creato mese" - -#: modules/node.views.inc:295 -msgid "In the form of MM (01 - 12)." -msgstr "Nella forma di MM(01 - 12)" - -#: modules/node.views.inc:303 -msgid "Created day" -msgstr "Creato giorno" - -#: modules/node.views.inc:304 -msgid "In the form of DD (01 - 31)." -msgstr "Nella forma di DD(01 - 31)." - -#: modules/node.views.inc:312 -msgid "Created week" -msgstr "Creato settimana" - -#: modules/node.views.inc:313 -msgid "In the form of WW (01 - 53)." -msgstr "Nella forma di WW(01 - 53)." - -#: modules/node.views.inc:330,325 -msgid "Node revision" -msgstr "Revisione nodo" - -#: modules/node.views.inc:331 -msgid "Node revisions are a history of changes to nodes." -msgstr "Le revisioni del nodo sono una cronologia di modifiche ai nodi." - -#: modules/node.views.inc:346 -msgid "Relate a node revision to the user who created the revision." -msgstr "Collega la revisione di un nodo all'utente che ha creato la revisione." - -#: modules/node.views.inc:359 -msgid "The actual, full data in the body field; this may not be valid data on all node types." -msgstr "Gli effettivi dati completi nel campo corpo (o testo); ciò potrebbero non essere dei dati validi per tutti i tipi di nodo." - -#: modules/node.views.inc:374 -msgid "The stored teaser field. This may not be valid or useful data on all node types." -msgstr "Il campo anteprima memorizzato. Potrebbero non essere dei dati validi o utili per tutti i tipi di nodo." - -#: modules/node.views.inc:387 -msgid "Vid" -msgstr "Vid" - -#: modules/node.views.inc:388 -msgid "The revision ID of the node revision." -msgstr "L'ID revisione della revisione del nodo." - -#: modules/node.views.inc:435 -msgid "The log message entered when the revision was created." -msgstr "Il messaggio di log inserito quando la revisione è stata creata." - -#: modules/node.views.inc:449 -msgid "The date the node revision was created." -msgstr "Il data in cui la revisione del nodo è stata creata." - -#: modules/node.views.inc:464 -msgid "Revert link" -msgstr "Link Versione precedente" - -#: modules/node.views.inc:465 -msgid "Provide a simple link to revert to the revision." -msgstr "Fornisce un link semplice per tornare alla revisione." - -#: modules/node.views.inc:473 -msgid "Provide a simple link to delete the node revision." -msgstr "Fornisce un link semplice per eliminare la revisione del nodo." - -#: modules/node.views.inc:500 -msgid "Has new content" -msgstr "Ha nuovo contenuto" - -#: modules/node.views.inc:503 -msgid "Show a marker if the node has new or updated content." -msgstr "Mostra un segnale se il nodo ha un contenuto nuovo o aggiornato." - -#: modules/node.views.inc:506 -msgid "Show only nodes that have new content." -msgstr "Mostra solo i nodi che hanno del nuovo contenuto." - -#: modules/node.views.inc:646 -msgid "Node ID from URL" -msgstr "ID nodo dall'URL" - -#: modules/node.views.inc:708 -msgid "Display %display has no access control but does not contain a filter for published nodes." -msgstr "La visualizzazione %display non ha un controllo di accesso e non contiene filtri per i nodi pubblicati." - -#: modules/poll.views.inc:39 -msgid "Whether the poll is open for voting." -msgstr "Se il sondaggio è aperto alla votazione." - -#: modules/profile.views.inc:100 -msgid "@field-name" -msgstr "@field-name" - -#: modules/profile.views.inc:107 -msgid "Profile textfield" -msgstr "Campo di testo profilo" - -#: modules/profile.views.inc:126 -msgid "Profile textarea" -msgstr "Area di testo del profilo" - -#: modules/profile.views.inc:142 -msgid "Profile checkbox" -msgstr "Casella del profilo" - -#: modules/profile.views.inc:159 -msgid "Profile URL" -msgstr "URL del profilo" - -#: modules/profile.views.inc:175 -msgid "Profile selection" -msgstr "Selezione del profilo" - -#: modules/profile.views.inc:195 -msgid "Profile freeform list %field-name." -msgstr "Elenco libero %field-name del profilo." - -#: modules/profile.views.inc:207 -msgid "Profile date %field-name." -msgstr "Data del %field-name del profilo." - -#: modules/search.views.inc:73 -msgid "The score of the search item." -msgstr "Il punteggio della voce cerca." - -#: modules/search.views.inc:95 -msgid "Links from" -msgstr "Link da" - -#: modules/search.views.inc:96 -msgid "Nodes that link from the node." -msgstr "Nodi con link dal nodo." - -#: modules/search.views.inc:113 -msgid "Links to" -msgstr "Link a" - -#: modules/search.views.inc:114 -msgid "Nodes that link to the node." -msgstr "Nodi con link al nodo" - -#: modules/search.views.inc:125 -msgid "Search Terms" -msgstr "Termini per la ricerca" - -#: modules/search.views.inc:126 -msgid "The terms to search for." -msgstr "I termini da cercare." - -#: modules/search.views.inc:164 -msgid "Display the results with standard search view." -msgstr "Visualizza i risultati con una vista ricerca standard." - -#: modules/statistics.views.inc:24 -msgid "Node statistics" -msgstr "Statistiche nodo" - -#: modules/statistics.views.inc:36 -msgid "Total views" -msgstr "Visualizzazioni totali" - -#: modules/statistics.views.inc:37 -msgid "The total number of times the node has been viewed." -msgstr "Il numero totale di volte in cui il nodo è stato visualizzato." - -#: modules/statistics.views.inc:53 -msgid "Views today" -msgstr "Visualizzazioni oggi" - -#: modules/statistics.views.inc:54 -msgid "The total number of times the node has been viewed today." -msgstr "Il numero totale di volte in cui il nodo è stato visualizzato oggi." - -#: modules/statistics.views.inc:70 -msgid "Most recent view" -msgstr "Ultima visualizzazione" - -#: modules/statistics.views.inc:71 -msgid "The most recent time the node has been viewed." -msgstr "L'ultima volta che il nodo è stato visualizzato." - -#: modules/statistics.views.inc:91,86 -msgid "Access log" -msgstr "Registro degli accessi" - -#: modules/statistics.views.inc:92 -msgid "Stores site access information." -msgstr "Memorizza le informazioni sugli accessi al sito." - -#: modules/statistics.views.inc:106 -msgid "Session ID" -msgstr "ID sessione" - -#: modules/statistics.views.inc:202 -msgid "The user who visited the site." -msgstr "L'utente che ha visitato il sito." - -#: modules/statistics.views.inc:212 -msgid "Timer" -msgstr "Cronometro" - -#: modules/system.views.inc:31 -msgid "Files maintained by Drupal and various modules." -msgstr "File mantenuti da Drupal e da moduli vari." - -#: modules/system.views.inc:50 -msgid "The ID of the file." -msgstr "L'ID del file." - -#: modules/system.views.inc:70 -msgid "The name of the file." -msgstr "Il nome del file." - -#: modules/system.views.inc:89 -msgid "The path of the file." -msgstr "Il percorso del file." - -#: modules/system.views.inc:107 -msgid "Mime type" -msgstr "Tipo di mime" - -#: modules/system.views.inc:108 -msgid "The mime type of the file." -msgstr "Il tipo di mime del file." - -#: modules/system.views.inc:127 -msgid "The size of the file." -msgstr "La dimensione del file." - -#: modules/system.views.inc:143 -msgid "The status of the file." -msgstr "Lo stato del file." - -#: modules/system.views.inc:158 -msgid "Upload date" -msgstr "Data di caricamento" - -#: modules/system.views.inc:159 -msgid "The date the file was uploaded." -msgstr "La data in cui il file è stato caricato." - -#: modules/system.views.inc:204 -msgid "Temporary" -msgstr "Temporaneo" - -#: modules/system.views.inc:205 -msgid "Permanent" -msgstr "Permanente" - -#: modules/taxonomy.views.inc:50 -msgid "Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the \"Taxonomy: Term\" field is; and can similarly cause duplicates." -msgstr "Il nome del vocabolario di cui fa parte un termine. Questo sarà il vocabolario che conterrà qualsiasi termine del campo \"Tassonomia: Termine\"; allo stesso modo può creare duplicati." - -#: modules/taxonomy.views.inc:57 -msgid "The taxonomy vocabulary ID" -msgstr "L'ID del vocabolario della tassonomia" - -#: modules/taxonomy.views.inc:71 -msgid "Taxonomy terms are attached to nodes." -msgstr "I termini della tassonomia sono allegati ai nodi." - -#: modules/taxonomy.views.inc:197,97 -msgid "The taxonomy term ID" -msgstr "L'ID del termine della tassonomia" - -#: modules/taxonomy.views.inc:117 -msgid "Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the result set." -msgstr "Termini della tassonomia. Notare che usandoli può dar luogo alla comparsa di nodi duplicati nelle viste; è necessario aggiungere dei filtri per ridurre i duplicati." - -#: modules/taxonomy.views.inc:127 -msgid "Taxonomy term name." -msgstr "Nome del termine della tassonomia." - -#: modules/taxonomy.views.inc:136 -msgid "The term weight field" -msgstr "Campo del peso del termine della tassonomia" - -#: modules/taxonomy.views.inc:149 -msgid "The description associated with a taxonomy term." -msgstr "La descrizione associata con un termine della tassonomia." - -#: modules/taxonomy.views.inc:161 -msgid "Filter the results of \"Taxonomy: Term\" to a particular vocabulary." -msgstr "Filtra i risultati di \"Tassonomia: Termine\" di un vocabolario particolare." - -#: modules/taxonomy.views.inc:199 -msgid "All terms" -msgstr "Tutti i termini" - -#: modules/taxonomy.views.inc:200 -msgid "Display all taxonomy terms associated with a node from specified vocabularies." -msgstr "Visualizzare tutti i termini della tassonomia associati con un nodo da vocabolari specifici." - -#: modules/taxonomy.views.inc:255 -msgid "The parent term of the term. This can produce duplicate entries if you are using a vocabulary that allows multiple parents." -msgstr "Il termine genitore del termine. Può produrre voci duplicate nel caso si stia usando un vocabolario che contente genitori multipli." - -#: modules/taxonomy.views.inc:287 -msgid "Term synonym" -msgstr "Sinonimo termine" - -#: modules/taxonomy.views.inc:288 -msgid "Term synonyms may be used to find terms by alternate names." -msgstr "I sinonimi dei termini possono essere usati per trovare i termini tramite nomi alternativi." - -#: modules/taxonomy.views.inc:304 -msgid "Term ID (with depth)" -msgstr "ID termine (con profondità)" - -#: modules/taxonomy.views.inc:305 -msgid "The depth filter is more complex, so provides fewer options." -msgstr "Il filtro profondità è più complesso, per cui fornisce meno opzioni." - -#: modules/taxonomy.views.inc:315 -msgid "Term ID depth modifier" -msgstr "Modificatore della profondità dell'ID termine" - -#: modules/taxonomy.views.inc:316 -msgid "Allows the \"depth\" for Taxonomy: Term ID (with depth) to be modified via an additional argument." -msgstr "Permette che la \"profondità\" della Tassonomia: ID termine (con profondità) sia modificata tramite un argomento aggiunto." - -#: modules/translation.views.inc:97,80,48,31 -msgid "Node translation" -msgstr "Traduzione nodo" - -#: modules/translation.views.inc:33 -msgid "The language the content is in." -msgstr "La lingua del contenuto." - -#: modules/translation.views.inc:49 -msgid "Translation set node ID" -msgstr "ID del gruppo di traduzione del nodo" - -#: modules/translation.views.inc:50 -msgid "The ID of the translation set the content belongs to." -msgstr "L'ID del gruppo di traduzione al quale appartiene il contenuto." - -#: modules/translation.views.inc:74,69 -msgid "Source translation" -msgstr "Sorgente della traduzione" - -#: modules/translation.views.inc:70 -msgid "The source that this content was translated from." -msgstr "La sorgente dalloa quale è stato tradotto questo contenuto." - -#: modules/translation.views.inc:85,82 -msgid "Versions of content in different languages." -msgstr "Versioni del contenuto in lingue differenti." - -#: modules/translation.views.inc:99 -msgid "The translation status of the node--whether or not the translation needs to be updated." -msgstr "Lo stato della traduzione del nodo - Se la traduzione deve essere tradotta o meno." - -#: modules/upload.views.inc:44 -msgid "The node the uploaded file is attached to" -msgstr "Il nodo a cui è allegato il file caricato" - -#: modules/upload.views.inc:57 -msgid "The description of the uploaded file." -msgstr "La descrizione del file allegato." - -#: modules/upload.views.inc:74 -msgid "Listed" -msgstr "Elencato" - -#: modules/upload.views.inc:75 -msgid "Whether or not the file is marked to be listed." -msgstr "Se il file deve essere elencato o meno." - -#: modules/upload.views.inc:91 -msgid "The weight, used for sorting." -msgstr "Il peso, usato nell'ordinamento." - -#: modules/upload.views.inc:114 -msgid "All files attached to a node with upload.module." -msgstr "Tutti i file allegati a un nodo con il modulo upload.module." - -#: modules/upload.views.inc:121; -#: modules/upload/views_handler_filter_upload_fid.inc:10 -msgid "Has attached files" -msgstr "Ha file allegati" - -#: modules/upload.views.inc:122 -msgid "Only display items with attached files. This can cause duplicates if there are multiple attached files." -msgstr "Visualizza solo le voci con file allegati. Questo può creare duplicati se ci sono file allegati multipli." - -#: modules/upload.views.inc:126 -msgid "Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node." -msgstr "Aggiungi una relazione per avere accesso a più file di dati caricati con il modulo upload.module. Notare che questa relazione creerà nodi duplicati se ci sono file multipli allegati al nodo." - -#: modules/user.views.inc:28 -msgid "Users who have created accounts on your site." -msgstr "Utenti che hanno creato un profilo nel sito." - -#: modules/user.views.inc:48 -msgid "Uid" -msgstr "Uid" - -#: modules/user.views.inc:49 -msgid "The user ID" -msgstr "L'ID dell'utente" - -#: modules/user.views.inc:70 -msgid "Current" -msgstr "Corrente" - -#: modules/user.views.inc:71 -msgid "Filter the view to the currently logged in user." -msgstr "Filtra la vista con l'utente attualmente autenticato." - -#: modules/user.views.inc:80 -msgid "The user or author name." -msgstr "Il nome dell'utente o dell'autore." - -#: modules/user.views.inc:97 -msgid "Email address for a given user. This field is not normally shown to users, so be cautious when using it." -msgstr "Indirizzo email di un dato utente. Questo campo normalmente non viene mostrato agli utenti, quindi usarlo con cautela." - -#: modules/user.views.inc:113 -msgid "The user's picture, if allowed." -msgstr "Il ritratto dell'utente, se consentito." - -#: modules/user.views.inc:124 -msgid "The date the user was created." -msgstr "Il data in cui è stato creato l'utente." - -#: modules/user.views.inc:140 -msgid "The user's last access date." -msgstr "La data dell'ultima accesso dell'utente." - -#: modules/user.views.inc:155 -msgid "Last login" -msgstr "Ultimo login" - -#: modules/user.views.inc:156 -msgid "The user's last login date." -msgstr "La data dell'ultimo login dell'utente." - -#: modules/user.views.inc:172 -msgid "Whether a user is active or blocked." -msgstr "Se un utente è attivo o bloccato." - -#: modules/user.views.inc:190 -msgid "The user's signature." -msgstr "La firma dell'utente." - -#: modules/user.views.inc:203 -msgid "Provide a simple link to edit the user." -msgstr "Fornisci un link semplice per modificare l'utente." - -#: modules/user.views.inc:211 -msgid "Provide a simple link to delete the user." -msgstr "Fornisci un link semplice per eliminare l'utente." - -#: modules/user.views.inc:241 -msgid "Roles that a user belongs to." -msgstr "I ruoli a cui l'utente appartiene." - -#: modules/user.views.inc:253 -msgid "No role" -msgstr "Nessun ruolo" - -#: modules/user.views.inc:296 -msgid "User ID from URL" -msgstr "ID utente dall'URL" - -#: modules/user.views.inc:302 -msgid "User ID from logged in user" -msgstr "ID Utente degli utenti autenticati" - -#: modules/views.views.inc:18 -msgid "Global" -msgstr "Globale" - -#: modules/views.views.inc:24 -msgid "Randomize the display order." -msgstr "Randomizzare l'ordine di visualizzazione." - -#: modules/views.views.inc:31 -msgid "Null" -msgstr "Null" - -#: modules/views.views.inc:32 -msgid "Allow an argument to be ignored. The query will not be altered by this argument." -msgstr "Consenti che l'argomento sia ignorato. La query non sarà alterata da questo argomento." - -#: modules/comment/views_handler_argument_comment_user_uid.inc:17 -msgid "No user" -msgstr "Nessun utente" - -#: modules/comment/views_handler_field_comment.inc:30 -msgid "Link this field to its comment" -msgstr "Collega questo campo al suo commento" - -#: modules/node/views_handler_field_node_link.inc:24; -#: modules/comment/views_handler_field_comment_link.inc:23; -#: modules/user/views_handler_field_user_link.inc:22 -msgid "Text to display" -msgstr "Testo da visualizzare" - -#: modules/comment/views_handler_field_comment_username.inc:25 -msgid "Link this field to its user or an author's homepage" -msgstr "Collega questo campo al suo utente o a una homepage dell'autore" - -#: modules/comment/views_handler_field_node_new_comments.inc:25 -msgid "Link this field to new comments" -msgstr "Collega questo campo ai nuovi commenti" - -#: modules/comment/views_handler_field_node_new_comments.inc:30 -msgid "Display nothing if no new comments" -msgstr "Non visualizzare nient'altro che i nuovi commenti" - -#: modules/node/views_handler_argument_dates_various.inc:167 -msgid "Week @week" -msgstr "Settimana @week" - -#: modules/translation/views_handler_argument_node_language.inc:29; -#: modules/node/views_handler_argument_node_language.inc:29 -msgid "Unknown language" -msgstr "Lingua sconosciuta" - -#: modules/node/views_handler_argument_node_type.inc:30 -msgid "Unknown node type" -msgstr "Tipo di nodo sconosciuto" - -#: modules/node/views_handler_field_history_user_timestamp.inc:32 -msgid "Check for new comments as well" -msgstr "Verifica anche per nuovi commenti" - -#: modules/translation/views_handler_filter_node_language.inc:10; -#: modules/node/views_handler_filter_node_language.inc:10 -msgid "Current user's language" -msgstr "Lingua corrente dell'utente" - -#: modules/translation/views_handler_filter_node_language.inc:10; -#: modules/node/views_handler_filter_node_language.inc:10 -msgid "No language" -msgstr "Nessuna lingua" - -#: modules/node/views_plugin_argument_validate_node.inc:32 -msgid "If you wish to validate for specific node types, check them; if none are checked, all nodes will pass." -msgstr "Se si desidera convalidare tipi di nodo specifici, selezionarli; se non ne viene selezionato alcuno, tutti i nodi passeranno." - -#: modules/node/views_plugin_argument_validate_node.inc:39 -msgid "Validate user has access to the node" -msgstr "L'utente convalidato ha accesso al nodo" - -#: modules/node/views_plugin_argument_validate_node.inc:50 -msgid "Node IDs separated by , or +" -msgstr "ID dei nodi separati da , o +" - -#: modules/node/views_plugin_row_node_rss.inc:27 -msgid "Title plus teaser" -msgstr "Titolo più anteprima" - -#: modules/node/views_plugin_row_node_rss.inc:29 -msgid "Use default RSS settings" -msgstr "Usa le impostazioni RSS predefinite" - -#: modules/node/views_plugin_row_node_view.inc:27 -msgid "Display only teaser" -msgstr "Visualizza solo l'anteprima" - -#: modules/node/views_plugin_row_node_view.inc:37 -msgid "Display node comments" -msgstr "Visualizza i commenti del nodo" - -#: modules/search/views_handler_filter_search.inc:23 -msgid "On empty input" -msgstr "Su inserimento vuoto" - -#: modules/search/views_handler_filter_search.inc:26 -msgid "Show All" -msgstr "Mostra tutto" - -#: modules/search/views_handler_filter_search.inc:27 -msgid "Show None" -msgstr "Non mostrare nulla" - -#: modules/search/views_plugin_row_search_view.inc:23 -msgid "Display score" -msgstr "Mostra punteggio" - -#: modules/system/views_handler_field_file.inc:29; -#: modules/upload/views_handler_field_upload_description.inc:24; -#: modules/upload/views_handler_field_upload_fid.inc:21 -msgid "Link this field to download the file" -msgstr "Collega questo campo per download il file" - -#: modules/taxonomy/views_handler_argument_term_node_tid.inc:17; -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:38 -msgid "Set the breadcrumb for the term parents" -msgstr "Imposta il breadcrumb dei termini genitori" - -#: modules/taxonomy/views_handler_argument_term_node_tid.inc:18; -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:39 -msgid "If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received." -msgstr "Se selezionato, il breadcrumb includerà i termini genitori, ognuno collegato alla propria vista. Nota che questo funziona solo se è stato ricevuto solo un termine." - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:26 -msgid "The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term \"fruit\" and a child term \"apple\", with a depth of 1 (or higher) then filtering for the term \"fruit\" will get nodes that are tagged with \"apple\" as well as \"fruit\". If negative, the reverse is true; searching for \"apple\" will also pick up nodes tagged with \"fruit\" if depth is -1 (or lower)." -msgstr "La profondità combacerà con i nodi etichettati con i termini nella gerarchia. Per esempio, se si ha il termine \"frutta\" e un termine figlio \"mela\", con una profondità di 1 (o maggiore) allora il filtraggio del termine \"frutta\" otterrà i nodi etichettati con \"mela\" come pure quelli etichettati con \"frutta\". Se negativo, è vero il contrario; se la profondità è -1 (o inferiore) cercando \"mela\" si troveranno anche i nodi etichettati con \"frutta\"." - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:31 -msgid "Allow multiple terms per argument" -msgstr "Consenti termini multipli per argomento" - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:32 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this argument." -msgstr "Se selezionato, gli utenti possono inserire argomenti multipli nel formato 1+2+3. A causa del numero di JOIN che ciò richiede, con questo argomento AND verrà trattato come OR." - -#: modules/taxonomy/views_handler_argument_vocabulary_vid.inc:15 -msgid "No vocabulary" -msgstr "Nessun vocabolario" - -#: modules/taxonomy/views_handler_field_taxonomy.inc:33 -msgid "Link this field to its taxonomy term page" -msgstr "Collega questo campo alla pagina del suo termine tassonomico" - -#: modules/taxonomy/views_handler_field_term_node_tid.inc:34 -msgid "Link this field to its term page" -msgstr "Collega questo termine alla pagina del suo termine" - -#: modules/taxonomy/views_handler_field_term_node_tid.inc:41 -msgid "Limit terms by vocabulary" -msgstr "Limita i termini nel vocabolario" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:39 -msgid "Select which vocabulary to show terms for in the regular options." -msgstr "Selezionare per quale vocabolario mostrare i termini nelle opzioni regolari." - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:49 -msgid "Selection type" -msgstr "Tipo di selezione" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:50 -msgid "Dropdown" -msgstr "Menu a discesa" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:50 -msgid "Autocomplete" -msgstr "Autocompletamento" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:56 -msgid "Show hierarchy in dropdown" -msgstr "Mostra la gerarchia nel menu a discesa" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:73 -msgid "An invalid vocabulary is selected. Please change it in the options." -msgstr "È stato selezionato un vocabolario non valido. Si prega di modificarlo nelle opzioni." - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:147,91 -msgid "Select terms from vocabulary @voc" -msgstr "Selezionare i termini dal vocabolario @voc" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:255 -msgid "Unable to find term: @terms" -msgid_plural "Unable to find terms: @terms" -msgstr[0] "Impossibile trovare il termine: @terms" -msgstr[1] "Impossibile trovare i termini: @terms" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:26 -msgid "If you wish to validate for specific vocabularies, check them; if none are checked, all terms will pass." -msgstr "Se si desidera validare vocabolari specifici, selezionarli; se nessuno viene selezionato, tutti i termini passeranno." - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:36 -msgid "Term IDs separated by , or +" -msgstr "ID dei termini separati da , o +" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:37 -msgid "Term name or synonym" -msgstr "Nome del termine o sinonimo" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:38 -msgid "Term name/synonym converted to Term ID" -msgstr "Nome/sinonimo del termine convertito in ID del termine" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:41 -msgid "Select the form of this argument; if using term name, it is generally more efficient to convert it to a term ID and use Taxonomy: Term ID rather than Taxonomy: Term Name\" as an argument." -msgstr "Selezionare la forma di questo argomento; se si usa il nome del termine, in genere è più efficace convertirlo in ID del termine e usare come argomento \"Tassonomia: ID del Termine\" anziché \"Tassonomia: Nome del Termine\"." - -#: modules/translation/views_handler_filter_node_language.inc:10 -msgid "Default site language" -msgstr "Lingua predefinita del sito" - -#: modules/translation/views_handler_relationship_translation.inc:24 -msgid "Current language" -msgstr "Lingua attuale" - -#: modules/translation/views_handler_relationship_translation.inc:25 -msgid "Default language" -msgstr "Lingua predefinita" - -#: modules/translation/views_handler_relationship_translation.inc:32 -msgid "Translation option" -msgstr "Opzioni di traduzione" - -#: modules/translation/views_handler_relationship_translation.inc:33 -msgid "The translation options allows you to select which translation or translations in a translation set join on. Select \"Current language\" or \"Default language\" to join on the translation in the current or default language respectively. Select a specific language to join on a translation in that language. If you select \"All\", each translation will create a new row, which may appear to cause duplicates." -msgstr "Le opzioni di traduzione consentono di selezionare a quale traduzione o traduzioni unirsi in un gruppo di traduzione. Selezionare \"Lingua attuale\" per unirsi alla traduzione nella lingua attuale oppure o \"Lingua predefinita\" per unirsi alla lingua predefinita. Selezionare una lingua specifica per unirsi alla traduzione in quella lingua. Se si seleziona \"Tutte\", ogni traduzione creerà una nuova riga, che può sembrare essere la causa di duplicati." - -#: modules/upload/views_handler_field_upload_fid.inc:27 -msgid "Only show \"listed\" file attachments" -msgstr "Mostra solo i file allegati \"elencati\"" - -#: modules/user/views_handler_field_user.inc:30 -msgid "Link this field to its user" -msgstr "Collega questo campo al suo utente" - -#: modules/user/views_handler_field_user_mail.inc:16 -msgid "Link this field" -msgstr "Collega questo campo" - -#: modules/user/views_handler_field_user_mail.inc:20 -msgid "To the user" -msgstr "All'utente" - -#: modules/user/views_handler_field_user_mail.inc:21 -msgid "With a mailto:" -msgstr "Con un mailto:" - -#: modules/user/views_handler_filter_user_current.inc:10 -msgid "Is the logged in user" -msgstr "È l'utente autenticato" - -#: modules/user/views_handler_filter_user_name.inc:28 -msgid "Usernames" -msgstr "Nomi utente" - -#: modules/user/views_handler_filter_user_name.inc:29 -msgid "Enter a comma separated list of user names." -msgstr "Inserire un elenco di nome utente separati da una virgola." - -#: modules/user/views_handler_filter_user_name.inc:112 -msgid "Unable to find user: @users" -msgid_plural "Unable to find users: @users" -msgstr[0] "Impossibile trovare l'utente: @users" -msgstr[1] "Impossibile trovare gli utenti: @users" - -#: modules/user/views_plugin_argument_default_user.inc:17 -msgid "Also look for a node and use the node author" -msgstr "Cercare anche un nodo e usare l'autore del nodo" - -#: plugins/views_plugin_access_none.inc:9 -msgid "Unrestricted" -msgstr "Senza restrizioni" - -#: plugins/views_plugin_access_perm.inc:37 -msgid "Only users with the selected permission flag will be able to access this display. Note that users with \"access all views\" can see any view, regardless of other permissions." -msgstr "Solo gli utenti con l'indicatore del permesso selezionato potranno accedere a questa visualizzazione. Notare che gli utenti con il permesso \"accesso a tutte le viste\" possono vedere qualsiasi vista, indipendentemente dagli altri permessi." - -#: plugins/views_plugin_access_role.inc:21 -msgid "No role(s) selected" -msgstr "Nessun ruolo selezionato" - -#: plugins/views_plugin_access_role.inc:24 -msgid "Multiple roles" -msgstr "Ruoli multipli" - -#: plugins/views_plugin_access_role.inc:43 -msgid "Only the checked roles will be able to access this display. Note that users with \"access all views\" can see any view, regardless of role." -msgstr "Solo i ruoli selezionati potranno accedere a questa visualizzazione. Notare che gli utenti con il permesso \"accesso a tutte le viste\" possono vedere qualsiasi vista, a dispetto del ruolo." - -#: plugins/views_plugin_access_role.inc:49 -msgid "You must select at least one role if type is \"by role\"" -msgstr "Se il tipo è \"per ruolo\", bisogna selezionare almeno un ruolo" - -#: plugins/views_plugin_argument_default.inc:32 -msgid "Default argument" -msgstr "Argomento predefinito" - -#: plugins/views_plugin_argument_default.inc:54 -msgid "Note: you do not have permission to modify this. If you change the default argument type, this setting will be lost and you will NOT be able to get it back." -msgstr "Nota: non hai il permesso per modificarlo. Se modifichi il tipo di argomento predefinito, questa impostazione andrà persa e NON potrai tornare indietro." - -#: plugins/views_plugin_argument_default_php.inc:17 -msgid "PHP argument code" -msgstr "Codice PHP dell'argomento" - -#: plugins/views_plugin_argument_default_php.inc:20 -msgid "Enter PHP code that returns a value to use for this argument. Do not use <?php ?>. You must return only a single value for just this argument." -msgstr "Inserire il codice PHP che restituisce un valore da usare per questo argomento" - -#: plugins/views_plugin_argument_validate.inc:43 -msgid "Note: you do not have permission to modify this. If you change the validator, this setting will be lost and you will NOT be able to get it back." -msgstr "Nota: non hai il permesso per modificarlo. Se modifichi il validatore, questa impostazione andrà persa e NON potrai tornare indietro." - -#: plugins/views_plugin_argument_validate_php.inc:19 -msgid "PHP validate code" -msgstr "Codice PHP di validazione" - -#: plugins/views_plugin_argument_validate_php.inc:21 -msgid "Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be \"$argument\" and the view will be \"$view\". You may change the argument by setting \"$handler->argument\"." -msgstr "Inserire il codice PHP che restituisce TRUE o FALSE. Nessuna restituzione corrisponde a FALSE, per cui assicurarsi che qualcosa venga restituito se non si vuole dichiarare invalido l'argomento. Non usare <?php ?>. L'argomento da validre sarà \"$argument\" e la vista sarà \"$view\". Si può modificare l'argomento impostando \"$handler->argument\"." - -#: plugins/views_plugin_display.inc:558 -msgid "Broken field" -msgstr "Campo guasto" - -#: plugins/views_plugin_display.inc:582 -msgid "Change the name of this display." -msgstr "Cambia il nome di questa vista." - -#: plugins/views_plugin_display.inc:594 -msgid "Change the title that this display will use." -msgstr "Cambia il titolo che questa vista userà." - -#: plugins/views_plugin_display.inc:606 -msgid "Change the style plugin." -msgstr "Cambia il plugin stile." - -#: plugins/views_plugin_display.inc:620 -msgid "Row style" -msgstr "Stile riga" - -#: plugins/views_plugin_display.inc:622 -msgid "Change the row plugin." -msgstr "Cambia il plugin riga." - -#: plugins/views_plugin_display.inc:632 -msgid "Use AJAX" -msgstr "Usa AJAX" - -#: plugins/views_plugin_display.inc:634 -msgid "Change whether or not this display will use AJAX." -msgstr "Modifica se questa visualizzazione userà o meno AJAX." - -#: plugins/views_plugin_display.inc:642 -msgid "Mini" -msgstr "Mini" - -#: plugins/views_plugin_display.inc:643 -msgid "Change this display's pager setting." -msgstr "Modifica le impostazioni del paginatore di questa visualizzazione." - -#: plugins/views_plugin_display.inc:822,650 -msgid "Items per page" -msgstr "Voci per pagina" - -#: plugins/views_plugin_display.inc:822,650; -#: plugins/views_plugin_style_summary.inc:43 -msgid "Items to display" -msgstr "Voci da visualizzare" - -#: plugins/views_plugin_display.inc:652 -msgid "Change how many items to display." -msgstr "Modifica quante voci visualizzare." - -#: plugins/views_plugin_display.inc:658 -msgid "More link" -msgstr "Link altro" - -#: plugins/views_plugin_display.inc:660 -msgid "Specify whether this display will provide a \"more\" link." -msgstr "Specificare se questa visualizzazione deve fornire un link \"altro\"." - -#: plugins/views_plugin_display.inc:849,666 -msgid "Distinct" -msgstr "Distinta" - -#: plugins/views_plugin_display.inc:846,668 -msgid "Display only distinct items, without duplicates." -msgstr "Visualizza solo voci distinte, senza duplicati." - -#: plugins/views_plugin_display.inc:683 -msgid "Specify access control type for this display." -msgstr "Specifica il tipo di controllo di accesso per questa visualizzazione." - -#: plugins/views_plugin_display.inc:687 -msgid "Change settings for this access type." -msgstr "Modifica le impostazioni per questo tipo di accesso." - -#: plugins/views_plugin_display.inc:707 -msgid "Link display" -msgstr "Collega visualizzazione" - -#: plugins/views_plugin_display.inc:709 -msgid "Specify which display this display will link to." -msgstr "Specifica a quale visualizzazione questa visualizzazione sarà collegata." - -#: plugins/views_plugin_display.inc:716 -msgid "Exposed form in block" -msgstr "Form esposto nel blocco" - -#: plugins/views_plugin_display.inc:718 -msgid "Allow the exposed form to appear in a block instead of the view." -msgstr "Consente al form esposto di apparire in un blocco anziché nella vista." - -#: plugins/views_plugin_display.inc:737 -msgid "Unknown/missing format" -msgstr "Formato sconosciuto/mancante" - -#: plugins/views_plugin_display.inc:745 -msgid "Change this display's !name." -msgstr "Cambiare !name di questa visualizzazione." - -#: plugins/views_plugin_display.inc:753 -msgid "Get information on how to theme this display" -msgstr "Informazioni su come temizzare questa visualizzazione" - -#: plugins/views_plugin_display.inc:779 -msgid "The name of this display" -msgstr "Il nome di questa visualizzazione" - -#: plugins/views_plugin_display.inc:782 -msgid "This title will appear only in the administrative interface for the View." -msgstr "Questo titolo comparirà nell'interfaccia di amministrazione di Viste." - -#: plugins/views_plugin_display.inc:787 -msgid "The title of this view" -msgstr "Il titolo di questa vista" - -#: plugins/views_plugin_display.inc:790 -msgid "This title will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc." -msgstr "Questo titolo sarà visualizzato con la vista, dovunque vengono visualizzati normalmente i titoli; cioè, come il titolo della pagina, titolo del blocco, ecc." - -#: plugins/views_plugin_display.inc:795 -msgid "Use AJAX when available to load this view" -msgstr "Quando disponibile, usare AJAX per caricare questa vista" - -#: plugins/views_plugin_display.inc:799 -msgid "If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This means the entire page will not refresh. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content." -msgstr "Se impostato, questa vista userà un meccanismo AJAX per la paginazione, l'ordinamento della tabella e i filtri esposti. Ciò significa che la pagina intera non si aggiornerà. Non ne è raccomandato l'uso se questa vista è il contenuto principale della pagina poiché impedirà il collegamento diretto (deep linking) a pagine specifiche, ma è molto utile per i contenuti laterali." - -#: plugins/views_plugin_display.inc:808 -msgid "Use a pager for this view" -msgstr "Usa un paginatore per questa vista" - -#: plugins/views_plugin_display.inc:811 -msgid "Full pager" -msgstr "Paginatore completo" - -#: plugins/views_plugin_display.inc:811 -msgid "Mini pager" -msgstr "Mini paginatore" - -#: plugins/views_plugin_display.inc:816 -msgid "Pager element" -msgstr "Elemento paginatore" - -#: plugins/views_plugin_display.inc:817 -msgid "Unless you're experiencing problems with pagers related to this view, you should leave this at 0. If using multiple pagers on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add a lot of commas to your URLs, so avoid if possible." -msgstr "A meno che non si stia sperimentando problemi con i paginatori collegati a questa vista, si dovrebbe lasciarlo a 0. Se si stanno usando dei multi-paginatori su una pagina potrebbe essere necessario impostare questo numero a un valore maggiore in modo che non vada in conflitto con ?page= array. I valori ampi aggiungeranno molte virgole agli URL, per cui evitarli se possibile." - -#: plugins/views_plugin_display.inc:826 -msgid "The number of items to display per page. Enter 0 for no limit." -msgstr "Il numero di voci da mostrare per pagina. Inserire 0 per nessun limite." - -#: plugins/views_plugin_display.inc:832 -msgid "The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed. Offset can not be used if items to display is 0; instead use a very large number there." -msgstr "Il numero di voci da saltare. Per esempio, se questo campo è 3, le prime 3 voci verranno saltate e non mostrate. Lo slittamento (<a href=\"http://it.wikipedia.org/wiki/Offset\">offset</a>) non può essere usato se le voci da mostrare sono 0; in questo caso usare invece un numero molto grande." - -#: plugins/views_plugin_display.inc:837 -msgid "Add a more link to the bottom of the display." -msgstr "Aggiungere un link altro in fondo alla visualizzazione." - -#: plugins/views_plugin_display.inc:840 -msgid "Create more link" -msgstr "Crea un link altro" - -#: plugins/views_plugin_display.inc:841 -msgid "This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above." -msgstr "Aggiungerà un link altro in fondo a questa vista, che si collegherà alla vista pagina. Se ci sono più di una vista pagina, il link punterà alla visualizzazione specificata in 'Link display' sopra" - -#: plugins/views_plugin_display.inc:850 -msgid "This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution." -msgstr "Questo farà sì che la vista visualizzi solo voci distinte. Se ci sono voci multiple identiche, ognuna verrà visualizzata solo una volta. Si può usare questo per cercare e rimuovere i duplicati da una vista, sebbene non sempre funzioni. Notare che questo può rallentare le query, quindi usarlo con cautela." - -#: plugins/views_plugin_display.inc:855 -msgid "Access restrictions" -msgstr "Restrizioni accesso" - -#: plugins/views_plugin_display.inc:954,874 -msgid "You may also adjust the !settings for the currently selected style by clicking on the icon." -msgstr "È anche possibile regolare le !settings dello stile attualmente selezionato cliccando sull'icona." - -#: plugins/views_plugin_display.inc:882 -msgid "Access options" -msgstr "Opzioni accesso" - -#: plugins/views_plugin_display.inc:916,900 -msgid "Display even if view has no result" -msgstr "Visualizza anche se la vista non da risultati" - -#: plugins/views_plugin_display.inc:923 -msgid "Text to display beneath the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Testo da visualizzare sotto la vista. Può contenere una spiegazione o dei link o qualsiasi cosa si desidera. Opzionale." - -#: plugins/views_plugin_display.inc:934 -msgid "Text to display if the view has no results. Optional." -msgstr "Testo da visualizzare se la vista non ha risultati. Opzionale." - -#: plugins/views_plugin_display.inc:940 -msgid "How should this view be styled" -msgstr "Come deve essere stilizzata questa vista" - -#: plugins/views_plugin_display.inc:946 -msgid "If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary." -msgstr "Se lo stile scelto ha delle impostazioni, assicurarsi di selezionare il pulsante impostazioni che comparirà vicino ad esso nel sommario Vista." - -#: plugins/views_plugin_display.inc:960 -msgid "Style options" -msgstr "Opzioni stile" - -#: plugins/views_plugin_display.inc:971 -msgid "Row style options" -msgstr "Opzioni stile riga" - -#: plugins/views_plugin_display.inc:986 -msgid "How should each row in this view be styled" -msgstr "Come deve essere stilizzata ogni riga di questa vista" - -#: plugins/views_plugin_display.inc:999 -msgid "You may also adjust the !settings for the currently selected row style by clicking on the icon." -msgstr "Si possono anche regolare le !settings della riga correntemente selezionata cliccando sull'icona." - -#: plugins/views_plugin_display.inc:1005 -msgid "Which display to use for path" -msgstr "Quale visualizzazione usare per il percorso" - -#: plugins/views_plugin_display.inc:1014 -msgid "Which display to use to get this display's path for things like summary links, rss feed links, more links, etc." -msgstr "Quale visualizzazione usare per avere il percorso di questa visualizzazione in cose come link del sommario, link dei feed rss, link altro, ecc." - -#: plugins/views_plugin_display.inc:1019 -msgid "Theming information" -msgstr "Informazioni sul tema" - -#: plugins/views_plugin_display.inc:1027 -msgid "Display output" -msgstr "Output della visualizzazione" - -#: plugins/views_plugin_display.inc:1031 -msgid "Alternative display output" -msgstr "Output alternativo della visualizzazione" - -#: plugins/views_plugin_display.inc:1038 -msgid "Style output" -msgstr "Output dello stile" - -#: plugins/views_plugin_display.inc:1042 -msgid "Alternative style" -msgstr "Output alternativo dello stile" - -#: plugins/views_plugin_display.inc:1049 -msgid "Row style output" -msgstr "Output dello stile di riga" - -#: plugins/views_plugin_display.inc:1053 -msgid "Alternative row style" -msgstr "Output alternativo dello stile di riga" - -#: plugins/views_plugin_display.inc:1061 -msgid "Field @field (ID: @id)" -msgstr "Campo @field (ID: @id)" - -#: plugins/views_plugin_display.inc:1069 -msgid "This section lists all possible templates for the display plugin and for the style plugins, ordered roughly from the least specific to the most specific. The active template for each plugin -- which is the most specific template found on the system -- is highlighted in bold." -msgstr "Questa sezione elenca tutti i possibili modelli per il plugin visualizzazione e per i plugin stile, ordinati grosso modo dal meno specifico al più specifico. Il modello attivo per ciascun plugin -- che è il modello più specifico trovato nel sistema -- è evidenziato in grassetto." - -#: plugins/views_plugin_display.inc:1084 -msgid "Rescan template files" -msgstr "Rianalizza i file modello" - -#: plugins/views_plugin_display.inc:1090 -msgid "<strong>Important!</strong> When adding, removing, or renaming template files, it is necessary to make Drupal aware of the changes by making it rescan the files on your system. By clicking this button you clear Drupal's theme registry and thereby trigger this rescanning process. The highlighted templates above will then reflect the new state of your system." -msgstr "<strong>Importante!</strong> Quando si aggiungono, rimuovono o rinominano i file modello, è necessario rendere Drupal consapevole delle modifiche facendogli rianalizzare i file del sistema. Cliccando questo pulsante si azzera il registro del tema di Drupal avviando perciò il processo di rianalisi. I modelli evidenziati sopra rifletteranno quindi il nuovo stato del sistema." - -#: plugins/views_plugin_display.inc:1096 -msgid "Theming information (display)" -msgstr "Informazioni sulla temizzazione (visualizzazione)" - -#: plugins/views_plugin_display.inc:1182,1153,1124,1097 -msgid "Back to !info." -msgstr "Torna a !info." - -#: plugins/views_plugin_display.inc:1182,1153,1124,1097 -msgid "theming information" -msgstr "informazioni sulla temizzazione" - -#: plugins/views_plugin_display.inc:1100 -msgid "This display has no theming information" -msgstr "La visualizzazione non ha informazioni sulla temizzazione" - -#: plugins/views_plugin_display.inc:1103 -msgid "This is the default theme template used for this display." -msgstr "Questo è il modello di tema predefinito usato per questa visualizzazione." - -#: plugins/views_plugin_display.inc:1109 -msgid "This is an alternative template for this display." -msgstr "Questo è un modello alternativo per questa visualizzazione." - -#: plugins/views_plugin_display.inc:1123 -msgid "Theming information (style)" -msgstr "Informazioni temizzazione (stile)" - -#: plugins/views_plugin_display.inc:1129 -msgid "This display has no style theming information" -msgstr "Questa visualizzazione non ha informazioni sulla temizzazione dello stile" - -#: plugins/views_plugin_display.inc:1132 -msgid "This is the default theme template used for this style." -msgstr "Questo è il modello di tema predefinito usato per questo stile." - -#: plugins/views_plugin_display.inc:1138 -msgid "This is an alternative template for this style." -msgstr "Questo è un modello alternativo per questo stile." - -#: plugins/views_plugin_display.inc:1181,1152 -msgid "Theming information (row style)" -msgstr "Informazioni temizzazione (stile riga)" - -#: plugins/views_plugin_display.inc:1158 -msgid "This display has no row style theming information" -msgstr "Questa visualizzazione non ha informazioni sulla temizzazione dello stile riga" - -#: plugins/views_plugin_display.inc:1184,1161 -msgid "This is the default theme template used for this row style." -msgstr "Questo è il modello del tema predefinito usato per questo stile riga." - -#: plugins/views_plugin_display.inc:1167 -msgid "This is an alternative template for this row style." -msgstr "Questo è un modello alternativo per questo stile riga." - -#: plugins/views_plugin_display.inc:1199 -msgid "Put the exposed form in a block" -msgstr "Metti il form esposto in un blocco" - -#: plugins/views_plugin_display.inc:1203 -msgid "If set, any exposed widgets will not appear with this view. Instead, a block will be made available to the Drupal block administration system, and the exposed form will appear there. Note that this block must be enabled manually, Views will not enable it for you." -msgstr "Se impostato, qualsiasi widget esposto non apparirà in questa vista. Sarà invece reso disponibile un blocco nel sistema di amministrazione blocchi di Drupal e il form esposto comparirà lì. Notare che questo blocco deve essere attivato manualmente, Viste non lo attiverà in automatico." - -#: plugins/views_plugin_display.inc:1238 -msgid "File found in folder @template-path" -msgstr "(File trovato nella cartella @template-path)" - -#: plugins/views_plugin_display.inc:1242 -msgid "(File not found, in folder @template-path)" -msgstr "(File non trovato nella cartella @template-path)" - -#: plugins/views_plugin_display.inc:1404 -msgid "Status: using default values." -msgstr "Stato: utilizzazione valori predefiniti." - -#: plugins/views_plugin_display.inc:1408 -msgid "Update default display" -msgstr "Aggiorna visualizzazione predefinita" - -#: plugins/views_plugin_display.inc:1413 -msgid "Use default" -msgstr "Usa predefinito" - -#: plugins/views_plugin_display.inc:1418 -msgid "Status: using overridden values." -msgstr "Stato: utilizzo di valori modificati." - -#: plugins/views_plugin_display.inc:1633 -msgid "Display @display uses fields but there are none defined for it or all are excluded." -msgstr "La visualizzazione @display usa dei campi ma non ci sono campi definiti per essa oppure sono tutti esclusi." - -#: plugins/views_plugin_display.inc:1638 -msgid "Display @display uses path but path is undefined." -msgstr "La visualizzazione @display usa il percorso ma il percorso non è definito." - -#: plugins/views_plugin_display.inc:1643 -msgid "Display @display has an invalid style plugin." -msgstr "La visualizzazione @display ha un plugin stile non valido." - -#: plugins/views_plugin_display.inc:1659 -msgid "Exposed form: @view-@display_id" -msgstr "Form esposto: @view-@display_id" - -#: plugins/views_plugin_display_attachment.inc:35 -msgid "Before" -msgstr "Prima" - -#: plugins/views_plugin_display_attachment.inc:36 -msgid "After" -msgstr "Dopo" - -#: plugins/views_plugin_display_attachment.inc:57 -msgid "Attachment settings" -msgstr "Impostazioni allegati" - -#: plugins/views_plugin_display_attachment.inc:109,62 -msgid "Inherit arguments" -msgstr "Eredita argomenti" - -#: plugins/views_plugin_display_attachment.inc:118,68 -msgid "Inherit exposed filters" -msgstr "Eredita filtri esposti" - -#: plugins/views_plugin_display_attachment.inc:127,74 -msgid "Position" -msgstr "Posizione" - -#: plugins/views_plugin_display_attachment.inc:80; -#: plugins/views_plugin_display_feed.inc:98 -msgid "Multiple displays" -msgstr "Visualizzazioni multiple" - -#: plugins/views_plugin_display_attachment.inc:136,95; -#: plugins/views_plugin_display_feed.inc:140,113 -msgid "Attach to" -msgstr "Allega a" - -#: plugins/views_plugin_display_attachment.inc:121,112 -msgid "Inherit" -msgstr "Eredita" - -#: plugins/views_plugin_display_attachment.inc:113 -msgid "Should this display inherit its arguments from the parent display to which it is attached?" -msgstr "Questa visualizzazione deve ereditare i propri argomenti dalla visualizzazione genitore a cui è allegata?" - -#: plugins/views_plugin_display_attachment.inc:122 -msgid "Should this display inherit its exposed filter values from the parent display to which it is attached?" -msgstr "Questa visualizzazione deve ereditare i valori dei filtri esposti nella visualizzazione genitore a cui è allegata?" - -#: plugins/views_plugin_display_attachment.inc:130 -msgid "Attach before or after the parent display?" -msgstr "Allegare prima o dopo la visualizzazione genitore?" - -#: plugins/views_plugin_display_attachment.inc:145 -msgid "Select which display or displays this should attach to." -msgstr "Selezionare la visualizzazione / le visualizzazioni a cui questa deve essere allegata." - -#: plugins/views_plugin_display_block.inc:106 -msgid "Do not cache" -msgstr "Non mettere i cache" - -#: plugins/views_plugin_display_block.inc:107 -msgid "Cache once for everything (global)" -msgstr "Metti in cache una volta per tutto (globale)" - -#: plugins/views_plugin_display_block.inc:108 -msgid "Per page" -msgstr "Per pagina" - -#: plugins/views_plugin_display_block.inc:109 -msgid "Per role" -msgstr "Per ruolo" - -#: plugins/views_plugin_display_block.inc:110 -msgid "Per role per page" -msgstr "Per ruolo per pagina" - -#: plugins/views_plugin_display_block.inc:111 -msgid "Per user" -msgstr "Per utente" - -#: plugins/views_plugin_display_block.inc:112 -msgid "Per user per page" -msgstr "Per utente per pagina" - -#: plugins/views_plugin_display_block.inc:137 -msgid "Block admin description" -msgstr "Descrizione amministrazione blocco" - -#: plugins/views_plugin_display_block.inc:140 -msgid "This will appear as the name of this block in administer >> site building >> blocks." -msgstr "Verrà mostrato come nome di questo blocco in amministrazione >> struttura del sito >> blocchi." - -#: plugins/views_plugin_display_block.inc:145 -msgid "Block caching type" -msgstr "Tipo di cache del blocco" - -#: plugins/views_plugin_display_block.inc:149 -msgid "This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed." -msgstr "Questo imposta lo stato predefinito del metodo integrato di caching del blocco in Drupal; richiede che il caching sia attivato in amministrazione blocchi. Prestare attenzione poiché si ha poco controllo quando questa cache viene svuotata." - -#: plugins/views_plugin_display_feed.inc:86 -msgid "Feed settings" -msgstr "Impostazioni feed" - -#: plugins/views_plugin_display_feed.inc:90 -msgid "Using the site name" -msgstr "Usa il nome del sito" - -#: plugins/views_plugin_display_feed.inc:132 -msgid "Use the site name for the title" -msgstr "Per il titolo usa il nome del sito" - -#: plugins/views_plugin_display_feed.inc:149 -msgid "The feed icon will be available only to the selected displays." -msgstr "L'icona feed sarà disponibile solo nella visualizzazione selezionata." - -#: plugins/views_plugin_display_feed.inc:155 -msgid "This view will be displayed by visiting this path on your site. It is recommended that the path be something like \"path/%/%/feed\" or \"path/%/%/rss.xml\", putting one % in the path for each argument you have defined in the view." -msgstr "Questa vista sarà visualizzata visitando questo percorso sul sito. Si raccomanda che il percorso sia qualcosa del tipo \"percorso/%/%/feed\" oppure \"percorso/%/%/rss.xml\", mettendo un % nel percorso per ogni argomento definito nella vista." - -#: plugins/views_plugin_display_page.inc:213 -msgid "No menu" -msgstr "Nessun menu" - -#: plugins/views_plugin_display_page.inc:216 -msgid "Normal: @title" -msgstr "Normale: @title" - -#: plugins/views_plugin_display_page.inc:220 -msgid "Tab: @title" -msgstr "Scheda: @title" - -#: plugins/views_plugin_display_page.inc:236 -msgid "Change settings for the parent menu" -msgstr "Impostazioni cache per il menu genitore" - -#: plugins/views_plugin_display_page.inc:249 -msgid "The menu path or URL of this view" -msgstr "Il percorso del menu o URL di questa vista" - -#: plugins/views_plugin_display_page.inc:253 -msgid "This view will be displayed by visiting this path on your site. You may use \"%\" in your URL to represent values that will be used for arguments: For example, \"node/%/feed\"." -msgstr "Questa vista verrà visualizzata visitando questo percorso del sito. Negli URL si può usare \"%\" per rappresentare i valori che saranno utilizzati come argomenti. Per esempio, \"node/%/feed\"." - -#: plugins/views_plugin_display_page.inc:259 -msgid "Menu item entry" -msgstr "Inserimento voce di menu" - -#: plugins/views_plugin_display_page.inc:276 -msgid "No menu entry" -msgstr "Nessuna voce di menu" - -#: plugins/views_plugin_display_page.inc:277 -msgid "Normal menu entry" -msgstr "Voce di menu normale" - -#: plugins/views_plugin_display_page.inc:343,278 -msgid "Menu tab" -msgstr "Scheda menu" - -#: plugins/views_plugin_display_page.inc:279 -msgid "Default menu tab" -msgstr "Scheda menu predefinita" - -#: plugins/views_plugin_display_page.inc:288 -msgid "If set to normal or tab, enter the text to use for the menu item." -msgstr "Se impostato a normale o scheda, inserire il testo da usare per la voce del menu." - -#: plugins/views_plugin_display_page.inc:295 -msgid "Warning: Changing this item's menu will not work reliably in Drupal 6.4 or earlier. Please upgrade your copy of Drupal at !url." -msgstr "Attenzione: La modifica di questa voce del menu non funzionarà con attendibilità in Drupal 6.4 o precedente. Aggiornare Drupal a !url." - -#: plugins/views_plugin_display_page.inc:306 -msgid "Insert item into an available menu." -msgstr "Inserire la voce in un menu disponibile." - -#: plugins/views_plugin_display_page.inc:315 -msgid "The lower the weight the higher/further left it will appear." -msgstr "Minore è il peso, più in alto o più a sinistra sarà mostrato." - -#: plugins/views_plugin_display_page.inc:321 -msgid "Default tab options" -msgstr "Opzioni predefinite scheda" - -#: plugins/views_plugin_display_page.inc:330 -msgid "When providing a menu item as a tab, Drupal needs to know what the parent menu item of that tab will be. Sometimes the parent will already exist, but other times you will need to have one created. The path of a parent item will always be the same path with the last part left off. i.e, if the path to this view is <em>foo/bar/baz</em>, the parent path would be <em>foo/bar</em>." -msgstr "Quando si crea una voce di menu come scheda, Drupal ha bisogno di sapere quale sarà la voce di menu genitore di quella scheda. Alcune volte il genitore esiste già, mentre altre volte si deve crearne uno. Il percorso di una voce genitore sarà sempre lo stesso percorso con l'esclusione dell'ultima parte, cioè, se il percorso di questa vista è <em>foo/bar/baz</em>, il percorso genitore sarà <em>foo/bar</em>." - -#: plugins/views_plugin_display_page.inc:341 -msgid "Parent menu item" -msgstr "Voce genitore del menu" - -#: plugins/views_plugin_display_page.inc:343 -msgid "Already exists" -msgstr "Esiste già" - -#: plugins/views_plugin_display_page.inc:351 -msgid "If creating a parent menu item, enter the title of the item." -msgstr "Se si crea una voce genitore del menu, inserire il titolo della voce." - -#: plugins/views_plugin_display_page.inc:357 -msgid "Tab weight" -msgstr "Peso della scheda" - -#: plugins/views_plugin_display_page.inc:361 -msgid "If the parent menu item is a tab, enter the weight of the tab. The lower the number, the more to the left it will be." -msgstr "Se la voce genitore del menu è una scheda, inserire il peso della scheda. più basso è il numero, più a sinistra sarà la scheda." - -#: plugins/views_plugin_display_page.inc:375 -msgid "\"$arg\" is no longer supported. Use % instead." -msgstr "\"$arg\" non è più supportato. Usare invece %." - -#: plugins/views_plugin_display_page.inc:379 -msgid "\"%\" may not be used for the first segment of a path." -msgstr "\"%\" non può essere usato nel primo segmento di un percorso." - -#: plugins/views_plugin_display_page.inc:389 -msgid "Views cannot create normal menu items for paths with a % in them." -msgstr "Le viste non possono creare voci di menu normali per i percorsi che contengono un %." - -#: plugins/views_plugin_display_page.inc:396 -msgid "A display whose path ends with a % cannot be a tab." -msgstr "Una visualizzazione il cui percorso termina con un % non può essere una scheda." - -#: plugins/views_plugin_display_page.inc:401 -msgid "Title is required for this menu type." -msgstr "È richiesto il titolo per questo tipo di menu." - -#: plugins/views_plugin_display_page.inc:432 -msgid "Display @display is set to use a menu but the menu title is not set." -msgstr "La visualizzazione @display è impostata per usare un menu ma il titolo del menu non è specificato." - -#: plugins/views_plugin_display_page.inc:438 -msgid "Display @display is set to use a parent menu but the parent menu title is not set." -msgstr "La visualizzazione @display è impostata per usare un menu genitore ma il titolo del menu genitore non è specificato." - -#: plugins/views_plugin_row_fields.inc:40 -msgid "Inline fields" -msgstr "Campi allineati" - -#: plugins/views_plugin_row_fields.inc:43 -msgid "Inline fields will be displayed next to each other rather than one after another." -msgstr "I campi allineati saranno visualizzati uno in fianco all'altro anziché uno dopo l'altro." - -#: plugins/views_plugin_row_fields.inc:51 -msgid "The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field." -msgstr "Il separatore può essere posizionato tra i campi allineati per impedirgli di schiacciarsi uno sull'altro. In questo campo si può usare l'HTML." - -#: plugins/views_plugin_style.inc:91 -msgid "Grouping field" -msgstr "Raggruppamento campi" - -#: plugins/views_plugin_style.inc:94 -msgid "You may optionally specify a field by which to group the records. Leave blank to not group." -msgstr "Si può specificare in via facoltativa un campo tramite il quale raggruppare le registrazioni. Lasciare vuoto per non raggruppare." - -#: plugins/views_plugin_style.inc:191 -msgid "Style @style requires a row style but the row plugin is invalid." -msgstr "Lo stile @style richiede uno stile riga ma il plugin riga non è valido." - -#: plugins/views_plugin_style_grid.inc:39 -msgid "Horizontal" -msgstr "Orizzontale" - -#: plugins/views_plugin_style_grid.inc:39 -msgid "Vertical" -msgstr "Verticale" - -#: plugins/views_plugin_style_grid.inc:41 -msgid "Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down." -msgstr "L'allineamento orizzontale posizionerà le voci iniziando dalla parte superiore sinistra e spostandosi a destra. L'allineamento verticale posizionerà le voci iniziando dalla parte superiore sinistra e spostandosi in giù." - -#: plugins/views_plugin_style_rss.inc:56 -msgid "Use the site mission for the description" -msgstr "Usare la mission del sito per la descrizione" - -#: plugins/views_plugin_style_rss.inc:60 -msgid "RSS description" -msgstr "Descrizione RSS" - -#: plugins/views_plugin_style_rss.inc:62 -msgid "This will appear in the RSS feed itself." -msgstr "Comparirà nel feed RSS." - -#: plugins/views_plugin_style_summary.inc:34 -msgid "Display record count with link" -msgstr "Visualizza il conteggio dei record con un link" - -#: plugins/views_plugin_style_summary.inc:39 -msgid "Override number of items to display" -msgstr "Modifica il numero di voci da visualizzare" - -#: plugins/views_plugin_style_summary_unformatted.inc:26 -msgid "Display items inline" -msgstr "Visualizza le voci allineate" - -#: plugins/views_plugin_style_table.inc:126 -msgid "You need at least one field before you can configure your table settings" -msgstr "È necessario almeno un campo prima di poter configurare le impostazioni della tabella" - -#: plugins/views_plugin_style_table.inc:135 -msgid "Override normal sorting if click sorting is used" -msgstr "Modifica l'ordinamento normale se viene usato l'ordinamento tramite click" - -#: plugins/views_plugin_style_table.inc:141 -msgid "Enable Drupal style \"sticky\" table headers (Javascript)" -msgstr "Attiva lo stile di Drupal intestazioni tabelle \"fisse in cima\" (Javascript)" - -#: plugins/views_plugin_style_table.inc:143 -msgid "(Sticky header effects will not be active for preview below, only on live output.)" -msgstr "(L'effetto intestazioni fisse in cima non sarà attivo per l'anteprima sotto, ma solo nell'output vero e prorio.)" - -#: plugins/views_plugin_style_table.inc:148 -msgid "Default sort order" -msgstr "Ordinamento predefinito" - -#: plugins/views_plugin_style_table.inc:151 -msgid "If a default sort order is selected, what order should it use by default." -msgstr "Se viene selezionato un ordinamento predefinito, quale ordine deve essere usato in modo predefinito" - -#: plugins/views_plugin_style_table.inc:237 -msgid "Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column click sortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section." -msgstr "Inserire i campi nelle colonne; si possono combinare campi multipli nella stessa colonna. Se lo si fa, il separatore nella colonna specificata sarà usato per separare i campi. Selezionare la casella ordinabile per rendere la colonna ordinabile tramite click e selezionare il bottone radio predefinito ordina per determinare quale colonna verrà ordinata in modo predefinito. È possibile gestire l'ordine delle colonne e le etichette dei campi nella sezione campi." - -#: theme/views-ui-edit-item.tpl.php:32 -msgid "The style selected does not utilize fields." -msgstr "Lo stile selezionato non utilizza i campi." - -#: theme/views-ui-edit-item.tpl.php:34 -msgid "None defined" -msgstr "Non definito" - -#: theme/views-ui-edit-view.tpl.php:11 -msgid "This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a href=\"!break\">break this lock</a>." -msgstr "Questa vista sta venendo modificata dall'utente !user ed è perciò bloccata alle modifiche di altri. Questo blocco è vecchio di !age. Cliccare qui per <a href=\"!break\">interrompere il blocco</a>." - -#: theme/views-ui-edit-view.tpl.php:16 -msgid "New view" -msgstr "Nuova vista" - -#: theme/views-ui-edit-view.tpl.php:18 -msgid "Changed view" -msgstr "Vista modificata" - -#: theme/views-ui-edit-view.tpl.php:23 -msgid "View %name, displaying items of type <strong>@base</strong>." -msgstr "Vista %name, visualizza voci del tipo <strong>@base</strong>." - -#: theme/views-ui-edit-view.tpl.php:42 -msgid "Live preview" -msgstr "Anteprima in diretta" - -#: theme/views-ui-list-views.tpl.php:17 -msgid "<em>@type</em> @base view: <strong>@view</strong>" -msgstr "<em>@type</em> @base vista: <strong>@view</strong>" - -#: theme/views-ui-list-views.tpl.php:27 -msgid "Title: @title" -msgstr "Titolo: @title" - -#: theme/views-ui-list-views.tpl.php:30 -msgid "Path: !path" -msgstr "Percorso: !path" - -#: theme/theme.inc:90 -msgid "Edit this view" -msgstr "Modifica questa vista" - -#: theme/theme.inc:559 -msgid "‹‹" -msgstr "‹‹" - -#: theme/theme.inc:560 -msgid "››" -msgstr "››" - -#: theme/theme.inc:570 -msgid "@current of @max" -msgstr "@current di @max" - -#: views_export/views_export.module:76 -msgid "There are no views to be exported at this time." -msgstr "Al momento non ci sono viste da esportare." - -#: views_export/views_export.module:108 -msgid "Show only these tags" -msgstr "Mostra solo questi tag" - -#: views_export/views_export.module:122 -msgid "Module name" -msgstr "Nome modulo" - -#: views_export/views_export.module:123 -msgid "Enter the module name to export code to." -msgstr "Inserire il nome del modulo per il quale si esporta il codice." - -#: views_export/views_export.module:190 -msgid "Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory" -msgstr "Metterlo in @module.views_default.inc nella cartella modules/@module oppure nella cartella modules/@module/includes" - -#: views_export/views_export.info:0 -msgid "Views exporter" -msgstr "Esportatore Viste" - diff --git a/sites/all/modules/views/translations/pl.po b/sites/all/modules/views/translations/pl.po deleted file mode 100644 index 25bd69428..000000000 --- a/sites/all/modules/views/translations/pl.po +++ /dev/null @@ -1,3994 +0,0 @@ -# $Id: pl.po,v 1.2.4.2 2010/03/10 20:27:33 merlinofchaos Exp $ -# -# LANGUAGE translation of Drupal (general) -# Copyright YEAR NAME <EMAIL@ADDRESS> -# Generated from files: -# views.module,v 1.294 2008/06/11 19:32:46 merlinofchaos -# admin.inc,v 1.115 2008/06/11 19:32:47 merlinofchaos -# views_ui.module,v 1.99 2008/06/04 00:09:53 merlinofchaos -# views_export.module,v 1.1 2008/06/12 16:17:25 merlinofchaos -# views.info,v 1.7 2007/08/12 06:52:14 merlinofchaos -# views_ui.info,v 1.10 2008/01/09 00:05:08 merlinofchaos -# views_export.info,v 1.1 2008/06/12 16:17:25 merlinofchaos -# plugins.inc,v 1.118 2008/06/13 15:50:00 merlinofchaos -# convert.inc,v 1.9 2008/06/11 18:42:11 merlinofchaos -# theme.inc,v 1.50 2008/06/10 22:10:20 merlinofchaos -# views.install,v 1.41 2008/06/03 23:50:44 merlinofchaos -# docs.php,v 1.7 2008/06/07 00:12:11 merlinofchaos -# node.views.inc,v 1.72 2008/06/11 01:22:03 merlinofchaos -# view.inc,v 1.108 2008/06/10 22:10:20 merlinofchaos -# system.views.inc,v 1.5 2008/06/03 22:34:46 merlinofchaos -# user.views.inc,v 1.44 2008/06/03 22:34:46 merlinofchaos -# argument.handlers.inc,v 1.25 2008/06/03 22:36:55 merlinofchaos -# comment.views.inc,v 1.16 2008/06/03 22:34:46 merlinofchaos -# statistics.views.inc,v 1.6 2008/06/03 22:34:46 merlinofchaos -# upload.views.inc,v 1.8 2008/06/03 22:34:46 merlinofchaos -# book.views.inc,v 1.3 2008/04/10 20:23:30 merlinofchaos -# taxonomy.views.inc,v 1.31 2008/06/10 18:35:26 merlinofchaos -# ajax.inc,v 1.14 2008/06/03 22:34:46 merlinofchaos -# field.handlers.inc,v 1.12 2008/06/03 22:34:46 merlinofchaos -# filter.handlers.inc,v 1.20 2008/06/03 23:34:39 merlinofchaos -# relationship.handlers.inc,v 1.5 2008/06/03 22:34:46 merlinofchaos -# handlers.inc,v 1.84 2008/06/10 18:35:26 merlinofchaos -# sort.handlers.inc,v 1.5 2008/06/03 22:34:46 merlinofchaos -# ajax.js,v 1.21 2008/05/27 22:31:59 merlinofchaos -# ajax_view.js,v 1.5 2008/05/27 22:31:59 merlinofchaos -# tabs.js,v 1.3 2008/03/30 15:58:26 merlinofchaos -# poll.views.inc,v 1.2 2008/03/12 04:32:07 merlinofchaos -# profile.views.inc,v 1.6 2008/04/21 17:52:10 merlinofchaos -# search.views.inc,v 1.7 2008/06/03 23:53:05 merlinofchaos -# views.views.inc,v 1.3 2008/06/03 22:34:46 merlinofchaos -# views-more.tpl.php,v 1.2 2008/04/11 08:46:26 merlinofchaos -# views-ui-edit-item.tpl.php,v 1.7 2008/05/09 19:32:12 merlinofchaos -# views-ui-edit-tab.tpl.php,v 1.10 2008/05/14 00:30:25 merlinofchaos -# views-ui-edit-view.tpl.php,v 1.8 2008/05/14 00:52:10 merlinofchaos -# views-ui-list-views.tpl.php,v 1.5 2008/05/08 05:29:30 merlinofchaos -# -msgid "" -msgstr "" -"Project-Id-Version: 1.0\n" -"POT-Creation-Date: 2008-06-15 10:44+0200\n" -"PO-Revision-Date: 2008-10-07 13:02+0100\n" -"Last-Translator: Bartlomiej Opajdowski <bopajdowski@gmail.com>\n" -"Language-Team: Polish <bopajdowski@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==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Poedit-Language: Polish\n" -"X-Poedit-Country: POLAND\n" - -#: views.module:625 -msgid "Skipping broken view @view" -msgstr "Pomiń uszkodzony widok @view" - -#: views.module:672;712 -#: includes/admin.inc:92;253;253;599 -msgid "Overridden" -msgstr "Nadpisany" - -#: views.module:675;708 -#: views_ui.module:284 -#: includes/admin.inc:91;252;252;566;738 -msgid "Default" -msgstr "Domyślny" - -#: views.module:824 -#: includes/admin.inc:286 -#: views_export/views_export.module:116 -msgid "Apply" -msgstr "Zastosuj" - -#: views.module:109 -#: views_ui.module:23 -#: views.info:0;0 -#: views_ui.info:0 -#: views_export/views_export.info:0 -msgid "Views" -msgstr "Widoki" - -#: views.module:114 -msgid "Ajax callback for view loading." -msgstr "funkcja zwrotna dla asynchronicznego ładowania widoku." - -#: views.module:0 -msgid "views" -msgstr "widoki" - -#: views_ui.module:158 -msgid "The converter will make a best-effort attempt to convert a Views 1 view to Views 2. This conversion is not reliable; you will very likely have to make adjustments to your view to get it to match. You can import Views 1 views through the normal Import tab." -msgstr "Konwerter próbuje przetworzyć widoki Views 1 na Views 2. Konwersja nie jest niezawodna; Być może będzie trzeba coś dopasować. Możesz importować widoki Views 1 używając zakładki Import." - -#: views_ui.module:25 -msgid "Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented." -msgstr "Widoki są spersonalizowaną listą zawartości; Są wysoce konfigurowywalne i dają kontrolę nad prezentowaną listą zawartości." - -#: views_ui.module:29 -#: includes/plugins.inc:88;116 -msgid "List" -msgstr "Lista" - -#: views_ui.module:35 -#: includes/admin.inc:1081;1081;2093 -msgid "Add" -msgstr "Dodaj" - -#: views_ui.module:40 -#: includes/admin.inc:702 -msgid "Import" -msgstr "Importuj" - -#: views_ui.module:46 -msgid "Tools" -msgstr "Narzędzia" - -#: views_ui.module:52 -msgid "Basic" -msgstr "Podstawowy" - -#: views_ui.module:60 -#: includes/convert.inc:30 -msgid "Convert" -msgstr "Konweruj" - -#: views_ui.module:61 -msgid "Convert stored Views 1 views." -msgstr "Konwertuj widok Views 1" - -#: views_ui.module:67;80;85 -msgid "Delete view" -msgstr "Usuń widok" - -#: views_ui.module:73 -msgid "Convert view" -msgstr "Konwertuj widok" - -#: views_ui.module:110 -#: includes/admin.inc:87 -#: theme/theme.inc:89 -msgid "Edit" -msgstr "Edytuj" - -#: views_ui.module:0 -msgid "views_ui" -msgstr "views_ui" - -#: views.install:31 -msgid "Stores the general data for a view." -msgstr "Przechowuje główne dane dla widoku." - -#: views.install:37 -msgid "The view ID of the field, defined by the database." -msgstr "ID widoku definiowane przez bazę danych." - -#: views.install:45 -msgid "The unique name of the view. This is the primary field views are loaded from, and is used so that views may be internal and not necessarily in the database. May only be alphanumeric characters plus underscores." -msgstr "Unikalna nazwa widoku. To " - -#: views.install:51 -msgid "A description of the view for the admin interface." -msgstr "Opis widoku dla interfejsu administracyjnego." - -#: views.install:57 -msgid "A tag used to group/sort views in the admin interface" -msgstr "Tag używany do grupowania/sortowania interfejsu administracyjnego" - -#: views.install:61 -msgid "A chunk of PHP code that can be used to provide modifications to the view prior to building." -msgstr "Kawałek kodu PHP do modyfikacjimodyfikacji widoku zanim ten zostanie zbudowany." - -#: views.install:68 -msgid "What table this view is based on, such as node, user, comment, or term." -msgstr "Na jakiej tabeli bazuje widok: segment, użytkownik, komentarz, wyrażenie." - -#: views.install:74 -msgid "A boolean to indicate whether or not this view may have its query cached." -msgstr "Wartość boolean oznaczająca czy zapytania powinny używać pamięci podręcznej czy też nie." - -#: views.install:82 -msgid "Stores information about each display attached to a view." -msgstr "Przechowuje informację o każdym podglądzie dołączonym do widoku." - -#: views.install:89 -msgid "The view this display is attached to." -msgstr "Widok dołączonego podglądu." - -#: views.install:97 -msgid "An identifier for this display; usually generated from the display_plugin, so should be something like page or page_1 or block_2, etc." -msgstr "Identyfikator tego podglądu; zwykle generowany z display_plugin, więc powinien wyglądać mniej sięcej jak: page_1 albo block_2 itp." - -#: views.install:104 -msgid "The title of the display, viewable by the administrator." -msgstr "Tytuł podglądu, widoczny dla administratora." - -#: views.install:111 -msgid "The type of the display. Usually page, block or embed, but is pluggable so may be other things." -msgstr "Typ podglądu. Zwykle strona, blok lub osadzony fragment, ma charakter pluginu, więc może być czymkolwiek." - -#: views.install:116 -msgid "The order in which this display is loaded." -msgstr "Kolejność ładowania podglądów." - -#: views.install:120 -msgid "A serialized array of options for this display; it contains options that are generally only pertinent to that display plugin type." -msgstr "Zserializowana tablica opcji dla tego podglądu; zawiera tylko opcje które są właściwe do wyświetlania typu plugina." - -#: views.install:131 -msgid "A special cache used to store objects that are being edited; it serves to save state in an ordinarily stateless environment." -msgstr "Specjalna pamięć podręczna używana do przechowywania obiektów będących w trakcie edycji; " - -#: views.install:136 -msgid "The session ID this cache object belongs to." -msgstr "ID sesji do której należy obiekt pamięci podręcznej." - -#: views.install:141 -msgid "The name of the view this cache is attached to." -msgstr "Nazwa widoku do którego dołączona jest ta pamięć podręczna." - -#: views.install:146 -msgid "The name of the object this cache is attached to; this essentially represents the owner so that several sub-systems can use this cache." -msgstr "Nazwa obiektu do którego dołączona jest ta pamięć podręczna. Określa dokładnie właścicela, tak więc klika podsystemów może jej używać." - -#: views.install:153 -msgid "The time this cache was created or updated." -msgstr "Czas utworzenia lub uaktualnienia pamięci podręcznej." - -#: views.install:157 -msgid "Serialized data being stored." -msgstr "Zserializowane dane będą zachowane." - -#: views.info:0 -msgid "Create customized lists and queries from your database." -msgstr "Tworzy własną listę zapytań z Twojej bazy danych." - -#: views_ui.info:0 -msgid "Views UI" -msgstr "Panel administracyjny widoków" - -#: views_ui.info:0 -msgid "Administrative interface to views. Without this module, you cannot create or edit your views." -msgstr "Administrowalny interfejs widoków. Bez tego modułu nie będzie możliwe tworzenie i edytowanie własnych widoków." - -#: docs/docs.php:106 -msgid "Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page." -msgstr "Emuluje domyślną główną strone Drupala; możesz ustawić ścieżkę domyślnej strony domowej na ten widok aby była stroną główną" - -#: docs/docs.php:107 -msgid "default" -msgstr "domyślny" - -#: docs/docs.php:116 -#: includes/plugins.inc:18 -msgid "Defaults" -msgstr "Ustawienia domyślne" - -#: docs/docs.php:205 -#: includes/plugins.inc:32;40 -msgid "Page" -msgstr "Strona" - -#: docs/docs.php:260 -#: includes/plugins.inc:65;72 -msgid "Feed" -msgstr "Kanał" - -#: docs/docs.php:328 -msgid "Front page feed" -msgstr "Kanał strony głównej" - -#: includes/admin.inc:34 -msgid "If you install the advanced help module from !href, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Obszerniejsza pomoc dla modułu widoków znajduje się tutaj: !href . <a href=\"@hide\">Ukryj tą wiadomość.</a>" - -#: includes/admin.inc:88;900 -#: theme/theme.inc:96 -#: views_export/views_export.module:128 -msgid "Export" -msgstr "Eksportuj" - -#: includes/admin.inc:89;905 -#: theme/theme.inc:101 -msgid "Clone" -msgstr "Klonuj" - -#: includes/admin.inc:92 -msgid "Revert" -msgstr "Odwróć" - -#: includes/admin.inc:92;612;774 -#: includes/convert.inc:35;109 -msgid "Delete" -msgstr "Usuń" - -#: includes/admin.inc:97 -msgid "Disable" -msgstr "Wyłącz" - -#: includes/admin.inc:100 -msgid "Enable" -msgstr "Włącz" - -#: includes/admin.inc:106 -msgid "Warning! Broken view!" -msgstr "Ostrzeżenie! Uszkodzony widok!" - -#: includes/admin.inc:121 -msgid "Broken" -msgstr "Uszkodzony" - -#: includes/admin.inc:180 -msgid "Install the advanced help module for the getting started" -msgstr "Instalacja dodatkowego modułu pomocy" - -#: includes/admin.inc:183 -msgid "Not sure what to do? Try the \"!getting-started\" page." -msgstr "Nie jesteś pewien co zrobić? Spróbuj na stronie \"!getting-started\"." - -#: includes/admin.inc:197;250;2059 -msgid "<All>" -msgstr "<Wszystko>" - -#: includes/admin.inc:198 -#: includes/plugins.inc:2820 -msgid "<None>" -msgstr "<Nic>" - -#: includes/admin.inc:213;264;985 -#: views_export/views_export.module:146 -msgid "Tag" -msgstr "Tag" - -#: includes/admin.inc:229 -msgid "Displays" -msgstr "Podglądy" - -#: includes/admin.inc:241;266 -#: includes/plugins.inc:1102;2079 -#: modules/node.views.inc:139 -msgid "Type" -msgstr "Typ" - -#: includes/admin.inc:248 -msgid "Storage" -msgstr "Magazyn(storage)" - -#: includes/admin.inc:251;251 -#: includes/view.inc:993;1043 -msgid "Normal" -msgstr "Normalny" - -#: includes/admin.inc:260 -msgid "Sort by" -msgstr "Sortuj po" - -#: includes/admin.inc:262 -#: includes/plugins.inc:805 -#: modules/system.views.inc:69 -#: modules/user.views.inc:59;79 -msgid "Name" -msgstr "Nazwa" - -#: includes/admin.inc:263;361 -#: includes/argument.handlers.inc:111 -#: includes/plugins.inc:817;2091;2136 -#: modules/comment.views.inc:44 -#: modules/node.views.inc:84;402 -msgid "Title" -msgstr "Tytuł" - -#: includes/admin.inc:265;369 -#: includes/plugins.inc:2008 -#: modules/statistics.views.inc:146 -#: modules/system.views.inc:88 -msgid "Path" -msgstr "Ścieżka" - -#: includes/admin.inc:267 -#: includes/convert.inc:21 -#: modules/upload.views.inc:48 -#: views_export/views_export.module:146 -msgid "Description" -msgstr "Opis" - -#: includes/admin.inc:274 -msgid "Order" -msgstr "Kolejność" - -#: includes/admin.inc:276 -msgid "Up" -msgstr "Rosnąco" - -#: includes/admin.inc:277 -msgid "Down" -msgstr "Malejąco" - -#: includes/admin.inc:360;379 -msgid "Query" -msgstr "Zapytanie(query)" - -#: includes/admin.inc:366 -msgid "This display has no path." -msgstr "Ten podgląd nie ma podanej ścieżki." - -#: includes/admin.inc:371 -msgid "Query build time" -msgstr "Czas budowania zapytania" - -#: includes/admin.inc:371;372;373 -msgid "@time ms" -msgstr "@time ms" - -#: includes/admin.inc:372 -msgid "Query execute time" -msgstr "Czas wykonywania zapytania" - -#: includes/admin.inc:373 -msgid "View render time" -msgstr "Czas tworzenia widoku" - -#: includes/admin.inc:379 -msgid "No query was run" -msgstr "Żadne zapytanie nie zostało wykonane" - -#: includes/admin.inc:386 -msgid "Unable to preview due to validation errors." -msgstr "Nie mogę podejrzeć prawidłowego sprawdzania błędów." - -#: includes/admin.inc:437 -msgid "Display" -msgstr "Podgląd" - -#: includes/admin.inc:445 -#: includes/view.inc:1670 -msgid "Arguments" -msgstr "Argumenty" - -#: includes/admin.inc:447 -msgid "Separate arguments with a / as though they were a URL path." -msgstr "Argumenty oddzielamy / tak jak by były ścieżką w URLu." - -#: includes/admin.inc:453 -msgid "Preview" -msgstr "Podgląd" - -#: includes/admin.inc:491 -msgid "Clone view @view" -msgstr "Sklonuj widok @view" - -#: includes/admin.inc:504;691 -#: includes/convert.inc:20 -msgid "View name" -msgstr "Nazwa widoku" - -#: includes/admin.inc:505 -msgid "This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If overriding a module provided view, the name must not be changed or instead a new view will be created." -msgstr "To jest unikalna nazwa widoku. Może zawierać tylko znaki alfanumeryczne i podkreślenia; używana jest do identyfikowania widoku wewnętrznie i do generowania unikalnych nazw wzorów dla tego widoku. Jeśli nadpisujemy dostarczony wraz z modułem widok, nazwa nie może zostać zmieniona albo zostanie utworzony nowy widok." - -#: includes/admin.inc:513;1769 -msgid "View description" -msgstr "Opis widoku" - -#: includes/admin.inc:514;1770 -msgid "This description will appear on the Views administrative UI to tell you what the view is about." -msgstr "Ten opis ukaże się w panelu administracyjnym użytkownika, abyś wiedział do czego ten widok służy" - -#: includes/admin.inc:520;1776 -msgid "View tag" -msgstr "Tag widoku" - -#: includes/admin.inc:521;1777 -msgid "Enter an optional tag for this view; it is used only to help sort views on the administrative page." -msgstr "Wprowadź opcjonalny tag dla tego widoku; Będzie on używany by pomóc w ich sortowaniu na stronie administracyjnej." - -#: includes/admin.inc:533 -msgid "View type" -msgstr "Typ widoku" - -#: includes/admin.inc:534 -msgid "The view type is the primary table for which information is being retrieved. The view type controls what arguments, fields, sort criteria and filters are available, so once this is set it <strong>cannot be changed</strong>." -msgstr "Typ widoku jest pierwszą tabelą dla której informacje zostaną odzyskane. Typ widoku kontroluje jakie argumenty, pola, kryteria sortowania i filtry są dostępne, więc raz ustawione <strong> nie mogą być zmieniane<strong>." - -#: includes/admin.inc:545 -msgid "Next" -msgstr "Następne" - -#: includes/admin.inc:561 -msgid "View name must be alphanumeric or underscores only." -msgstr "Nazwa widoku może zawierać tylko znaki alfanumeryczne albo podkreślenia." - -#: includes/admin.inc:567 -msgid "You must use a unique name for this view." -msgstr "Musisz użyć unikalnej nazwy dla tego widoku." - -#: includes/admin.inc:600 -msgid "Are you sure you want to revert the view %name?" -msgstr "Jesteś pewny że chcesz powrócić do nazwy widoku %name?" - -#: includes/admin.inc:601 -msgid "Reverting the view will delete the view that is in the database, reverting it to the original default view. Any changes you have made will be lost and cannot be recovered." -msgstr "Przywracanie widoku spowoduje skasowanie widoku z bazy danych i przywrócenie oryginalnie dostarczonego widoku. Wszystkie zmiany które zrobiłeś będą utracone i nie będą mogły być odtworzone." - -#: includes/admin.inc:604 -#: includes/convert.inc:105 -msgid "Are you sure you want to delete the view %name?" -msgstr "Jesteś pewien że chcesz skasować widok %name?" - -#: includes/admin.inc:605 -msgid "Deleting a view cannot be undone." -msgstr "Kasowanie nie może być cofnięte." - -#: includes/admin.inc:613;649;767;1225 -#: includes/convert.inc:110 -msgid "Cancel" -msgstr "Anuluj" - -#: includes/admin.inc:622 -msgid "The view has been deleted." -msgstr "Widok został skasowany." - -#: includes/admin.inc:634 -msgid "There is no lock on view %view to break." -msgstr "Nie ma blokad do złamania na widoku %view." - -#: includes/admin.inc:644 -msgid "Are you sure you want to break the lock on view %name?" -msgstr "Jesteś pewien, że chcesz złamać blokadę na widoku %name?" - -#: includes/admin.inc:647 -msgid "By breaking this lock, any unsaved changes made by !user will be lost!" -msgstr "Przez złamanie tej blokady wszystkie niezapisane zmiany zrobione przez !user będą utracone!" - -#: includes/admin.inc:648 -msgid "Break lock" -msgstr "Złam blokadę" - -#: includes/admin.inc:665 -msgid "Edit view \"%view\"" -msgstr "Edytuj widok \"%view\"" - -#: includes/admin.inc:692 -msgid "Enter the name to use for this view if it is different from the source view. Leave blank to use the name of the view." -msgstr "Wprowadź nazwę używaną dla tego widoku jeśli jest inna niż źródłowa. Pozostaw puste aby użyć oryginalnej nazwy widoku." - -#: includes/admin.inc:697 -msgid "Paste view code here" -msgstr "Wklej kod widoku tutaj" - -#: includes/admin.inc:719 -msgid "Unable to interpret view code." -msgstr "Nie można zinterpretować kodu widoku." - -#: includes/admin.inc:726 -msgid "You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2." -msgstr "Importujesz widok utworzony w Views 1. Prawdopodobnie trzeba będzie poprawić część parametrów aby widok działał z wersją widoków View 2." - -#: includes/admin.inc:729 -msgid "That view is not compatible with this version of Views." -msgstr "Ten widok nie jest kompatybilny z tą wersją Widoków." - -#: includes/admin.inc:739 -msgid "A view by that name already exists; please choose a different name" -msgstr "Widok o takiej nazwie juz istnieje; nazwij go inaczej" - -#: includes/admin.inc:760;788 -msgid "Save" -msgstr "Zachowaj" - -#: includes/admin.inc:812 -msgid "The view has been saved." -msgstr "Widok został zachowany." - -#: includes/admin.inc:851 -msgid "Unknown or missing table name" -msgstr "Nieznana lub utracona nazwa tabeli" - -#: includes/admin.inc:856 -msgid "Click on an item to edit that item's details." -msgstr "Kliknij na pozycję aby edytować jej szczegóły." - -#: includes/admin.inc:859 -msgid "This view has a broken default display and cannot be used." -msgstr "Ten widok nie może być użyty, gdyż został uszkodzony podgląd domyślny." - -#: includes/admin.inc:895 -msgid "break this lock" -msgstr "złam tą blokadę" - -#: includes/admin.inc:901 -#: theme/theme.inc:97 -msgid "Export this view" -msgstr "Eksportuj ten widok" - -#: includes/admin.inc:906 -#: theme/theme.inc:102 -msgid "Create a copy of this view" -msgstr "Stwórz kopię tych widoków" - -#: includes/admin.inc:917 -msgid "View \"!display\"" -msgstr "Podgląd \"!display\"" - -#: includes/admin.inc:918 -msgid "Go to the real page for this display" -msgstr "Idź do właściwej strony podglądu." - -#: includes/admin.inc:984 -#: includes/plugins.inc:812;943;955;1999;2293;2467;2659;3299 -msgid "None" -msgstr "Nic" - -#: includes/admin.inc:1058 -msgid "Invalid" -msgstr "Nieprawidłowy" - -#: includes/admin.inc:1058 -msgid "Error: Display @display refers to a plugin named '@plugin', but that plugin doesn't exist!" -msgstr "Błąd: Podgląd @display odwołuje się do nieistniejącego pluginu '@plugin'" - -#: includes/admin.inc:1079;1079 -msgid "Rearrange" -msgstr "Popraw" - -#: includes/admin.inc:1112;2144;2323;2391;2476 -msgid "Error: handler for @table > @field doesn't exist!" -msgstr "Błąd: uchwyt dla @table > @field nie istnieje!" - -#: includes/admin.inc:1131;1131;1140 -msgid "Settings" -msgstr "Ustawienia" - -#: includes/admin.inc:1136 -#: includes/plugins.inc:823;841 -msgid "Missing style plugin" -msgstr "Utracony styl pluginu" - -#: includes/admin.inc:1140 -#: includes/plugins.inc:836;851 -msgid "Change settings for this style" -msgstr "Zmień ustawienia dla tego stylu" - -#: includes/admin.inc:1143 -msgid " Style: !style" -msgstr " Styl: !style" - -#: includes/admin.inc:1174 -msgid "Invalid display id while regenerating tabs" -msgstr "Niepoprawne ID podglądu przy odtwarzaniu zakładek" - -#: includes/admin.inc:1207 -msgid "Update" -msgstr "Uaktualnij" - -#: includes/admin.inc:1225 -msgid "Ok" -msgstr "Ok" - -#: includes/admin.inc:1494 -msgid "Unable to initialize default display" -msgstr "Nie można zainicjować domyślnego podglądu" - -#: includes/admin.inc:1526 -msgid "Add display" -msgstr "Dodaj podgląd" - -#: includes/admin.inc:1566 -msgid "Remove display" -msgstr "Usuń podgląd" - -#: includes/admin.inc:1577 -msgid "Restore display" -msgstr "Odtwórz podgląd" - -#: includes/admin.inc:1649 -msgid "Analyze" -msgstr "Analizuj" - -#: includes/admin.inc:1669 -msgid "This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display." -msgstr "Ten widok posiada tylko podgląd domyślny dlatego nie będzie umieszczony nigdzie na Twojej stronie; prawdopodobnie chcesz dodać stronę albo blok podglądu." - -#: includes/admin.inc:1681 -msgid "View analysis" -msgstr "Analiza widoku" - -#: includes/admin.inc:1690 -msgid "View analysis can find nothing to report." -msgstr "Analiza widoku przebiegła poprawnie." - -#: includes/admin.inc:1764 -msgid "View details" -msgstr "Szczegóły widoku" - -#: includes/admin.inc:1805;1854;1904;2045;2137;2316;2384;2469 -msgid "Invalid display id @display" -msgstr "Niewłąsciwe ID podglądu @display" - -#: includes/admin.inc:1858 -msgid "Configure @type" -msgstr "Konfiguruj @type" - -#: includes/admin.inc:1908 -msgid "Rearrange @type" -msgstr "Popraw @type" - -#: includes/admin.inc:1951 -msgid "Broken field @id" -msgstr "Uszkodzone pole @id" - -#: includes/admin.inc:1986;1995;2232;2341 -msgid "Remove" -msgstr "Usuń" - -#: includes/admin.inc:1986;1986 -msgid "Remove this item" -msgstr "Usuń tą pozycję" - -#: includes/admin.inc:1992 -msgid "No fields available." -msgstr "Brak dostępnych pól" - -#: includes/admin.inc:1995 -#: includes/plugins.inc:2100 -#: modules/book.views.inc:57 -#: modules/taxonomy.views.inc:126 -#: modules/upload.views.inc:82 -msgid "Weight" -msgstr "Waga" - -#: includes/admin.inc:2051 -msgid "Add @type" -msgstr "Dodaj @type" - -#: includes/admin.inc:2062 -msgid "Groups" -msgstr "Grupy" - -#: includes/admin.inc:2081 -msgid "!group: !field" -msgstr "!group: !field" - -#: includes/admin.inc:2090 -msgid "There are no @types available to add." -msgstr "Brak dostępnych @types do dodania." - -#: includes/admin.inc:2155 -#: includes/plugins.inc:1556 -msgid "Status: using default values." -msgstr "Status: użyto domyślnych wartości." - -#: includes/admin.inc:2162 -#: includes/plugins.inc:1568 -msgid "Status: using overridden values." -msgstr "Status: nadpisano wartości." - -#: includes/admin.inc:2200 -msgid "Do not use a relationship" -msgstr "Nie używaj zależności" - -#: includes/admin.inc:2209 -#: includes/view.inc:1694;1695 -msgid "Relationship" -msgstr "Zależność" - -#: includes/admin.inc:2222 -msgid "Configure @type \"@item\"" -msgstr "Konfiguruj @type\"@item\"" - -#: includes/admin.inc:2331 -msgid "Configure extra settings for @type \"@item\"" -msgstr "Konfiuruj dodatkowe ustawienia dla @type \"@item\"" - -#: includes/admin.inc:2396 -msgid "Change summary style for @type \"@item\"" -msgstr "Zmien zbiorczy styl dla @type \"@item\"" - -#: includes/admin.inc:2419;2433 -msgid "Internal error: broken plugin." -msgstr "Wewnętrzny błąd: uszkodzony plugin." - -#: includes/admin.inc:2483 -msgid "Configure summary style for @type \"@item\"" -msgstr "Konfiguruj zmiorczy styl dla @type \"@item\"" - -#: includes/admin.inc:2575 -msgid "Clear Views' cache" -msgstr "Wyczyść pamięć podręczną widoków." - -#: includes/admin.inc:2581 -msgid "Add Views signature to all SQL queries" -msgstr "Dodaj sygnature widoku dla wszystkich zapytań SQL" - -#: includes/admin.inc:2582 -msgid "All Views-generated queries will include a special 'VIEWS' = 'VIEWS' string in the WHERE clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting." -msgstr "Wszystkie wygenerowane zapytania będą zawierały 'VIEWS' = 'VIEWS' w sekcji WHERE. Pomoże to w identyfikacji zapytań wysyłanych przez widoki w logach ale powinno być używane tylko w momencie gdy szukamy błędów." - -#: includes/admin.inc:2588 -msgid "Disable views data caching" -msgstr "Wyłącz pamięć podręczną dla danych zawartych w widokach" - -#: includes/admin.inc:2589 -msgid "Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site." -msgstr "Pamięć podręczna widoków przechowuje w pamięci podręcznej dane o tabelach, modułach i dostępności widoków aby zwiększyć wydajność. Zaznaczając to pole, widoki będą pomijać przechowywanie danych i będą zawsze odbudowywać dane kiedy zajdzie taka potrzeba. To może spowodować poważny spadek wydajności twojej witryny." - -#: includes/admin.inc:2595 -msgid "Ignore missing advanced help module" -msgstr "Ignoruj brak dodatkowy modułów pomocy" - -#: includes/admin.inc:2596 -msgid "Views uses the advanced help module to provide help text; if this module is not present Views will complain, unless this setting is checked." -msgstr "Widoki używają dodatkowych modułów pomocy; jeśli brak tego modułu Widoki będą to zgłaszały do momentu zaznaczenia." - -#: includes/admin.inc:2602 -msgid "Show query above live preview" -msgstr "Wyświetl zapytanie powyżej podglądu na żywo" - -#: includes/admin.inc:2603 -msgid "The live preview feature will show you the output of the view you're creating, as well as the view. Check here to show the query and other information above the view; leave this unchecked to show that information below the view." -msgstr "Podgląd na żywo pokazuje jak będzie wyglądał widok nad którym właśnie pracujesz. Zaznacz aby wyświetlać zapytania i inne informację powyżej widoku; gdy niezaznaczone, informację będą pojawiać się poniżej widoku." - -#: includes/admin.inc:2609 -msgid "Do not show hover links over views" -msgstr "Nie wyświetlaj \"fruwających\" odnośników do widoków" - -#: includes/admin.inc:2610 -msgid "To make it easier to administrate your views, Views provides 'hover' links to take you to the edit and export screen of a view whenever the view is used. This can be distracting on some themes, though; if it is problematic, you can turn it off here." -msgstr "Aby ułatwić administrowanie widokami, widoki dostarczają \"fruwające\" odnośniki aby dać możliwość edytowania czy eksportowania kiedy widok jest używany. Może to wprowadząć bałagan w niektórych skórkach, Jeśli tak się dzieje, można to wyłączyć własnie tutaj." - -#: includes/admin.inc:2616 -msgid "Enable views performance statistics via the Devel module" -msgstr "Włącz wydajność statystyk widoków przez moduł Devel" - -#: includes/admin.inc:2617 -msgid "Check this to enable some Views query and performance statistics <em>if Devel is installed</em>." -msgstr "Zaznacz by włączyć zapytania Widoków i statystyki wydajności <em>gdy moduł Devel jest zainstalowany</em>." - -#: includes/admin.inc:2623 -msgid "Disable javascript with Views" -msgstr "Wyłącz JavaStript w Widokach" - -#: includes/admin.inc:2624 -msgid "If you are having problems with the javascript, you can disable it here; the Views UI should degrade and still be usable without javascript, it just not as good." -msgstr "Jeśli masz problem z JavaScript, możesz wyłączyćto tutaj; Panel administracyjny Widoków powinien zachować funkcjonalność bez JavaScript, lecz nie pełną." - -#: includes/admin.inc:2632 -msgid "Page region to output performance statistics" -msgstr "Obszar strony do umieszczania statystyk wydajności" - -#: includes/admin.inc:2645 -msgid "The cache has been cleared." -msgstr "Pamięć podręczna została wyczyszczona." - -#: includes/admin.inc:2809 -msgid "Error: missing @component" -msgstr "Error: brak @component" - -#: includes/ajax.inc:73 -msgid "Server reports invalid input error." -msgstr "Serwer zwrócił błąd wejścia." - -#: includes/ajax.inc:74 -msgid "Error" -msgstr "Błąd" - -#: includes/argument.handlers.inc:91 -msgid "All" -msgstr "Wszystko" - -#: includes/argument.handlers.inc:113 -msgid "The title to use when this argument is present; it will override the title of the view and titles from previous arguments. You can use percent substitution here to replace with argument titles. Use \"%1\" for the first argument, \"%2\" for the second, etc." -msgstr "Tytuł używany kiedy argument istnieje; Nadpisze tytuł widoku obecnego i poprzednich argumentów. Możesz użyć '%n' aby zastąpić argument w tytule. Na przykład \"%1\" dla pierwszego argumentu itd." - -#: includes/argument.handlers.inc:126 -msgid "Action to take if argument is not present" -msgstr "Działanie podjęte gdy brak argumentu" - -#: includes/argument.handlers.inc:138 -msgid "Wildcard" -msgstr "Wildcard" - -#: includes/argument.handlers.inc:141 -msgid "If this value is received as an argument, the argument will be ignored; i.e, \"all values\"" -msgstr "Jeśli wartośc została otrzymana jako argument, argument zostanie zignorowany; Na przykład \"all values\" (wszystkie wartości)" - -#: includes/argument.handlers.inc:147 -msgid "Wildcard title" -msgstr "Tytuł dla Wildcard" - -#: includes/argument.handlers.inc:150 -msgid "The title to use for the wildcard in substitutions elsewhere." -msgstr "Tytuł używny dla zastąpienia gdzie indziej." - -#: includes/argument.handlers.inc:173 -msgid "Validator" -msgstr "Validator" - -#: includes/argument.handlers.inc:177 -msgid "<Basic validation>" -msgstr "<Sprawdzanie podstaw>" - -#: includes/argument.handlers.inc:213 -msgid "Action to take if argument does not validate" -msgstr "Działanie podjęte gdy sprawdzanie nie powiodło się" - -#: includes/argument.handlers.inc:228 -msgid "Display all values" -msgstr "Wyświetl wszystkie wartości" - -#: includes/argument.handlers.inc:233 -msgid "Hide view / Page not found (404)" -msgstr "Ukryj widok / Nie odnaleziono strony (404)" - -#: includes/argument.handlers.inc:237 -msgid "Display empty text" -msgstr "Wyświetl pusty tekst" - -#: includes/argument.handlers.inc:242 -msgid "Summary, sorted ascending" -msgstr "Podsumowanie, posortowane rosnąco" - -#: includes/argument.handlers.inc:249 -msgid "Summary, sorted descending" -msgstr "Podsumowanie, posortowane malejąco" - -#: includes/argument.handlers.inc:256 -msgid "Provide default argument" -msgstr "Dostarcz domyślny argument" - -#: includes/argument.handlers.inc:287 -msgid "Default argument type" -msgstr "Domyślny typ argumentu" - -#: includes/argument.handlers.inc:702 -msgid "Current date" -msgstr "Dzisiejsza data" - -#: includes/argument.handlers.inc:757 -msgid "Glossary mode" -msgstr "Tryb Słownika" - -#: includes/argument.handlers.inc:758 -msgid "Glossary mode applies a limit to the number of characters used in the argument, which allows the summary view to act as a glossary." -msgstr "Ten tryb ustawia limit znaków użytych w argumencie w podsumowaniach Słownika." - -#: includes/argument.handlers.inc:764 -msgid "Character limit" -msgstr "Limit znaków" - -#: includes/argument.handlers.inc:765 -msgid "How many characters of the argument to filter against. If set to 1, all fields starting with the letter in the argument would be matched." -msgstr "Ile znaków w argumencie ma być filtrowanych. Jeśli ustawimy to na 1, wszystkie pola zaczynające się na 1 literę dostarczona w argumencie będą pasować" - -#: includes/argument.handlers.inc:773 -msgid "Case" -msgstr "w przypadku" - -#: includes/argument.handlers.inc:774 -msgid "When printing the argument result, how to transform the case." -msgstr "Jak przekształcić w przypadku kiedy wyświetlamy wynik dla argumentu." - -#: includes/argument.handlers.inc:776;790 -msgid "No transform" -msgstr "Nie przekształcaj" - -#: includes/argument.handlers.inc:777;791 -msgid "Upper case" -msgstr "Dużymi literami" - -#: includes/argument.handlers.inc:778;792 -msgid "Lower case" -msgstr "Małymi literami" - -#: includes/argument.handlers.inc:779;793 -msgid "Capitalize first letter" -msgstr "Pierwsza litera duża" - -#: includes/argument.handlers.inc:780;794 -msgid "Capitalize each word" -msgstr "Każde słowo zaczynaj wielką literą" - -#: includes/argument.handlers.inc:787 -msgid "Case in path" -msgstr "Przypadki w ścieżkach" - -#: includes/argument.handlers.inc:788 -msgid "When printing url paths, how to transform the of the argument. Do not use this unless with Postgres as it uses case sensitive comparisons." -msgstr "Jak przekształcić argument w URLu. Nie używaj dopóki Postgres jest wrażliwy na porównywanie wielkości znaków." - -#: includes/argument.handlers.inc:801 -msgid "Transform spaces to dashes in URL" -msgstr "Zmieniaj znaki spacji na _ w URL" - -#: includes/argument.handlers.inc:808;1046 -msgid "Allow multiple arguments to work together." -msgstr "Pozwól na pracę wielu argumentów razem." - -#: includes/argument.handlers.inc:809;1047 -msgid "If selected, multiple instances of this argument can work together, as though multiple terms were supplied to the same argument. This setting is not compatible with the \"Reduce duplicates\" setting." -msgstr "Jeśli pole jest zaznaczone wiele instancji argumentu może pracować razem, jak gdyby wiele wyrażeń było dostarczonych dla jednego argumentu. To ustawienie nie jest kompatybilne z \"Reduce duplicates\"(redukuj duplikaty)" - -#: includes/argument.handlers.inc:815;1053 -msgid "Do not display items with no value in summary" -msgstr "Nie wyświetlaj pozycji bez wartości w podsumowaniu" - -#: includes/argument.handlers.inc:936;1038 -msgid "Allow multiple terms per argument." -msgstr "Pozwól na wiele wyrażeń dla argumentu." - -#: includes/argument.handlers.inc:937 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." -msgstr "Jeśli pole jest zaznaczone, użytkownik może wprowadzić wiele argumentów w postaci 1+2+3 lub 1,2,3." - -#: includes/argument.handlers.inc:943 -msgid "Exclude the argument" -msgstr "Wyklucz argument" - -#: includes/argument.handlers.inc:944 -msgid "If selected, the numbers entered in the argument will be excluded rather than limiting the view." -msgstr "Jeśli pole jest zaznaczone, wartości argumentów zostaną wykluczone." - -#: includes/argument.handlers.inc:951;963;1088;1102 -#: modules/taxonomy.views.inc:120;204;287 -msgid "Uncategorized" -msgstr "Nieskategoryzowany" - -#: includes/argument.handlers.inc:967;1106 -msgid "Invalid input" -msgstr "Nieprawidłowe wejscie" - -#: includes/argument.handlers.inc:1039 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 (for OR) or 1,2,3 (for AND)." -msgstr "Jeśli pole jest zaznaczone, użytkownik może wprowadzić wiele argumentów 1+2+3 (dla OR) albo 1,2,3 (dla AND)." - -#: includes/convert.inc:14 -msgid "There are no Views 1 views stored in the database to convert." -msgstr "Brak widoków typu Views 1 do konwersji w bazie." - -#: includes/convert.inc:22 -msgid "Operations" -msgstr "Operacje" - -#: includes/convert.inc:33 -msgid "Converted" -msgstr "Skonwertowano" - -#: includes/convert.inc:68 -msgid "The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name." -msgstr "Tabela poniżej jest listą widoków Views 1 przechowywanych w bazie. Możesz je skonwertować do Views 2 lub je skasować. Widoki te są konwertowalne tylko jeśli nie istnieją widoki w wersji 2 o takiej samej nazwie." - -#: includes/convert.inc:79 -msgid "Unable to find view." -msgstr "Nie można znaleźć widoku." - -#: includes/convert.inc:89 -msgid "Unable to convert view." -msgstr "Nie można skonwertować widoku." - -#: includes/convert.inc:108 -msgid "This action cannot be undone." -msgstr "Tej akcji nie można cofnąć." - -#: includes/convert.inc:118 -msgid "The view has been deleted" -msgstr "Widok został skasowany" - -#: includes/field.handlers.inc:130 -#: includes/filter.handlers.inc:304 -#: includes/relationship.handlers.inc:60 -msgid "Label" -msgstr "Etykieta" - -#: includes/field.handlers.inc:132 -msgid "The label for this field that will be displayed to end users if the style requires it." -msgstr " Jeśli styl tego wymaga, etykieta dla tego pola zostanie wyświetlona użytkownikowi końcowemu." - -#: includes/field.handlers.inc:136 -msgid "Exclude from display" -msgstr "Wyklucz z podglądu" - -#: includes/field.handlers.inc:138 -msgid "Check this box to not display this field, but still load it in the view. Use this option to not show a grouping field in each record, or when doing advanced theming." -msgstr "Zaznacz jeśli nie chcesz aby podgląd był wyświetlany, ale wciąż ładowany do widoku. Użyj tej opcji aby nie pokazywać grup pól w każdym rekordzie, lub kiedy tworzysz zaawansowane motywy." - -#: includes/field.handlers.inc:223 -msgid "Date format" -msgstr "Format daty" - -#: includes/field.handlers.inc:228 -msgid "Custom" -msgstr "Własny" - -#: includes/field.handlers.inc:229 -msgid "Time ago" -msgstr "Time ago" - -#: includes/field.handlers.inc:235 -msgid "Custom date format" -msgstr "Własny format daty" - -#: includes/field.handlers.inc:236 -msgid "If \"Custom\", see <a href=\"http://us.php.net/manual/en/function.date.php\">the PHP docs</a> for date formats. If \"Time ago\" this is the the number of different units to display, which defaults to two." -msgstr "Gdy chcesz użyć własnego formatu daty przeczytaj <a href=\"http://us.php.net/manual/en/function.date.php\">dokumentacje PHP</a>. Jeżeli \"Time ago\" jest liczbą w innych jednostkach, domyślnie - dwa." - -#: includes/field.handlers.inc:252 -msgid "%time ago" -msgstr "%time ago" - -#: includes/field.handlers.inc:280 -msgid "Output format" -msgstr "Format wyjściowy" - -#: includes/field.handlers.inc:282 -msgid "Yes/No" -msgstr "Tak/Nie" - -#: includes/field.handlers.inc:283 -msgid "True/False" -msgstr "Prawda/Fałsz" - -#: includes/field.handlers.inc:284 -msgid "On/Off" -msgstr "Włącz/Wyłącz" - -#: includes/field.handlers.inc:290 -msgid "Reverse" -msgstr "Odwrotnie" - -#: includes/field.handlers.inc:291 -msgid "If checked, true will be displayed as false." -msgstr "Gdy zaznaczone, Prawda wyświetlana jest jako Fałsz." - -#: includes/field.handlers.inc:305 -#: includes/filter.handlers.inc:853;898 -#: includes/plugins.inc:858;867;884;892;1035;2446 -msgid "Yes" -msgstr "Tak" - -#: includes/field.handlers.inc:305 -#: includes/filter.handlers.inc:853;898 -#: includes/plugins.inc:858;867;884;892;1035;1043;2446 -msgid "No" -msgstr "Nie" - -#: includes/field.handlers.inc:307 -#: includes/filter.handlers.inc:822;863 -msgid "True" -msgstr "Prawda" - -#: includes/field.handlers.inc:307 -#: includes/filter.handlers.inc:863 -msgid "False" -msgstr "Fałsz" - -#: includes/field.handlers.inc:309 -msgid "On" -msgstr "Włącz" - -#: includes/field.handlers.inc:309 -msgid "Off" -msgstr "Wyłącz" - -#: includes/field.handlers.inc:368 -#: modules/statistics.views.inc:276 -msgid "Display as link" -msgstr "Wyświetlaj jako odnośnik" - -#: includes/field.handlers.inc:410 -#: modules/node.views.inc:1289 -msgid "Display type" -msgstr "Wyświetl typ" - -#: includes/field.handlers.inc:412 -#: includes/plugins.inc:2971 -msgid "Unordered list" -msgstr "Nieuporządkowana lista" - -#: includes/field.handlers.inc:413 -#: includes/plugins.inc:2971 -msgid "Ordered list" -msgstr "Uporządkowana lista" - -#: includes/field.handlers.inc:414 -msgid "Simple separator" -msgstr "Prosty separator" - -#: includes/field.handlers.inc:421 -#: includes/plugins.inc:3265;3376;3557 -msgid "Separator" -msgstr "Separator" - -#: includes/field.handlers.inc:429 -msgid "Empty list text" -msgstr "Puste pole tekstowe" - -#: includes/field.handlers.inc:431 -msgid "If the list is empty, you may enter text here that will be displayed." -msgstr "Jeśli lista jest pusta, możesz wprowadzić tekst który będzie wyświetlony." - -#: includes/field.handlers.inc:480 -msgid "Round" -msgstr "Zaokrąglaj" - -#: includes/field.handlers.inc:481 -msgid "If checked, the number will be rounded." -msgstr "Jesli pole jest zaznaczone, liczby będą zaokrąglane." - -#: includes/field.handlers.inc:486 -msgid "Precision" -msgstr "Dokładność" - -#: includes/field.handlers.inc:488 -msgid "Specify how many digits to print after the decimal point." -msgstr "Określa dokładnośc z jaka będą wyświetlane liczby po przecinku." - -#: includes/field.handlers.inc:495 -msgid "Decimal point" -msgstr "Separator dziesiętny" - -#: includes/field.handlers.inc:497 -msgid "What single character to use as a decimal point." -msgstr "Znak oddzielający liczbę od jej częsci dziesiętnej." - -#: includes/field.handlers.inc:503 -msgid "Thousands separator" -msgstr "Separator setek" - -#: includes/field.handlers.inc:505 -msgid "What single character to use as the thousands separator." -msgstr "Znak oddzielający setki w liczbie. np. 1000 ze spacją jako separatorem będzie wyglądać tak: 1 000" - -#: includes/field.handlers.inc:510 -msgid "Prefix" -msgstr "Prefix" - -#: includes/field.handlers.inc:512 -msgid "Text to put before the number, such as currency symbol." -msgstr "Tekst poprzedzający liczbę, taki jak na przykład $." - -#: includes/field.handlers.inc:516 -msgid "Suffix" -msgstr "Suffix" - -#: includes/field.handlers.inc:518 -msgid "Text to put after the number, such as currency symbol." -msgstr "Tekst dołączany na końcu liczby np. zł" - -#: includes/filter.handlers.inc:119 -msgid "Operator" -msgstr "Operator" - -#: includes/filter.handlers.inc:183 -msgid "Expose" -msgstr "Ujawnij" - -#: includes/filter.handlers.inc:188 -msgid "This item is currently not exposed. If you <strong>expose</strong> it, users will be able to change the filter as they view it." -msgstr "Ta pozycja nie jest obecnie pokazywana. Gdy wybierzesz <strong>Ujawnij</strong> użytkownik będzie w stanie zmieniać filtr." - -#: includes/filter.handlers.inc:195 -msgid "Hide" -msgstr "Ukryj" - -#: includes/filter.handlers.inc:200 -msgid "This item is currently exposed. If you <strong>hide</strong> it, users will not able to change the filter as they view it." -msgstr "Ta pozycja jest obecnie pokazywana. Gdy wybierzesz <strong>Ukryj</strong> użytkownik nie będzie w stanie zmienić filtra." - -#: includes/filter.handlers.inc:271 -msgid "Unlock operator" -msgstr "Odblokuj operator" - -#: includes/filter.handlers.inc:272 -msgid "When checked, the operator will be exposed to the user" -msgstr "Gdy zaznaczone, operator będzie widoczny dla użytkownika" - -#: includes/filter.handlers.inc:278 -msgid "Operator identifier" -msgstr "Identyfikator operatora" - -#: includes/filter.handlers.inc:280 -msgid "This will appear in the URL after the ? to identify this operator." -msgstr "Włącza ukazywanie się identyfikatora operatora po ? w URLu." - -#: includes/filter.handlers.inc:297 -msgid "Filter identifier" -msgstr "Identyfikator filtra" - -#: includes/filter.handlers.inc:299 -msgid "This will appear in the URL after the ? to identify this filter. Cannot be blank." -msgstr "Włącza ukazywanie się identyfikatora filtra po ? w URLu. Nie może być puste." - -#: includes/filter.handlers.inc:315 -msgid "Optional" -msgstr "Opcjonalnie" - -#: includes/filter.handlers.inc:316 -msgid "This exposed filter is optional and will have added options to allow it not to be set." -msgstr "Ujawnienie filtra jest opcjonalne." - -#: includes/filter.handlers.inc:322 -msgid "Force single" -msgstr "Wymuś pojedyncze" - -#: includes/filter.handlers.inc:323 -msgid "Force this exposed filter to accept only one option." -msgstr "Pozwala filtrowi na akceptowanie tylko jednej opcji." - -#: includes/filter.handlers.inc:329 -msgid "Remember" -msgstr "Pamiętaj" - -#: includes/filter.handlers.inc:330 -msgid "Remember the last setting the user gave this filter." -msgstr "Pamięta ostatnie ustawienienie filtra użytkownika." - -#: includes/filter.handlers.inc:341 -msgid "" -"The identifier is required if the filter is\n" -" exposed." -msgstr "" -"Identyfikator jest wymagany jesli filtr jest\n" -" ujawniony." - -#: includes/filter.handlers.inc:347 -msgid "This identifier is not allowed." -msgstr "Ten identyfikator nie jest dozwolony" - -#: includes/filter.handlers.inc:448 -msgid "<Any>" -msgstr "<Dowolny>" - -#: includes/filter.handlers.inc:540;582;1089 -msgid "Is equal to" -msgstr "Jest równy" - -#: includes/filter.handlers.inc:541;588;1095 -msgid "Is not equal to" -msgstr "Nie jest równy" - -#: includes/filter.handlers.inc:551;714;1197 -msgid "Value" -msgstr "Wartość" - -#: includes/filter.handlers.inc:583;589;1091 -msgid "=" -msgstr "=" - -#: includes/filter.handlers.inc:594 -msgid "Contains" -msgstr "Zawiera" - -#: includes/filter.handlers.inc:595 -msgid "contains" -msgstr "zawiera" - -#: includes/filter.handlers.inc:600 -msgid "Contains any word" -msgstr "Zawiera tylko słowo" - -#: includes/filter.handlers.inc:601 -msgid "has word" -msgstr "ma słowo" - -#: includes/filter.handlers.inc:606 -msgid "Contains all words" -msgstr "Zawiera wszystkie słowa" - -#: includes/filter.handlers.inc:607 -msgid "has all" -msgstr "ma wszystkie" - -#: includes/filter.handlers.inc:612 -msgid "Starts with" -msgstr "Rozpoczyna się od" - -#: includes/filter.handlers.inc:613 -msgid "begins" -msgstr "rozpoczyna" - -#: includes/filter.handlers.inc:618 -msgid "Ends with" -msgstr "Kończy sie na" - -#: includes/filter.handlers.inc:619 -msgid "ends" -msgstr "kończy" - -#: includes/filter.handlers.inc:624 -msgid "Does not contain" -msgstr "Nie zawiera" - -#: includes/filter.handlers.inc:625 -msgid "!has" -msgstr "!has" - -#: includes/filter.handlers.inc:634;1130 -msgid "Is empty (NULL)" -msgstr "Jest pusty (NULL)" - -#: includes/filter.handlers.inc:636;1132 -msgid "empty" -msgstr "pusty" - -#: includes/filter.handlers.inc:640;1136 -msgid "Is not empty (NULL)" -msgstr "Nie jest pusty (NULL)" - -#: includes/filter.handlers.inc:642;1138 -msgid "not empty" -msgstr "nie pusty" - -#: includes/filter.handlers.inc:665 -msgid "exposed>" -msgstr "ujawniony>" - -#: includes/filter.handlers.inc:672 -msgid "Case sensitive" -msgstr "Wrażliwy na wielkość liter" - -#: includes/filter.handlers.inc:674 -msgid "Case sensitive filters may be faster; MySQL might ignore case sensitivity." -msgstr "Filtry wrażliwe na wielkość liter mogą być szybsze; MySQL moze ignorować rozróżnianie wielkości liter." - -#: includes/filter.handlers.inc:860;1009 -msgid "exposed" -msgstr "ujawniony" - -#: includes/filter.handlers.inc:888 -msgid "Options" -msgstr "Opcje" - -#: includes/filter.handlers.inc:910 -msgid "Limit list to selected items" -msgstr "Ogranicz listę do wybranych elementów" - -#: includes/filter.handlers.inc:911 -msgid "If checked, the selected items presented to the user will be the only ones selected here." -msgstr "Jeśli zaznaczysz to pole, wybrane elementy prezentowane użytkownikowi będą tylko raz zaznaczone tutaj." - -#: includes/filter.handlers.inc:930;1459 -msgid "Is one of" -msgstr "Jeden z" - -#: includes/filter.handlers.inc:931 -msgid "Is not one of" -msgstr "Żaden z" - -#: includes/filter.handlers.inc:1022 -#: modules/system.views.inc:236 -msgid "Unknown" -msgstr "Nieznany" - -#: includes/filter.handlers.inc:1077 -msgid "Is less than" -msgstr "Mniej niż" - -#: includes/filter.handlers.inc:1079 -msgid "<" -msgstr "<" - -#: includes/filter.handlers.inc:1083 -msgid "Is less than or equal to" -msgstr "Mniejszy bądź równy" - -#: includes/filter.handlers.inc:1085 -msgid "<=" -msgstr "<=" - -#: includes/filter.handlers.inc:1097 -msgid "!=" -msgstr "!=" - -#: includes/filter.handlers.inc:1101 -msgid "Is greater than or equal to" -msgstr "Większy bądź równy" - -#: includes/filter.handlers.inc:1103 -msgid ">=" -msgstr ">=" - -#: includes/filter.handlers.inc:1107 -msgid "Is greater than" -msgstr "Większy niż" - -#: includes/filter.handlers.inc:1109 -msgid ">" -msgstr ">" - -#: includes/filter.handlers.inc:1113 -msgid "Is between" -msgstr "W przedziale" - -#: includes/filter.handlers.inc:1115 -msgid "between" -msgstr "pomiędzy" - -#: includes/filter.handlers.inc:1119 -msgid "Is not between" -msgstr "Poza przedziałem" - -#: includes/filter.handlers.inc:1121 -msgid "not between" -msgstr "poza" - -#: includes/filter.handlers.inc:1212 -msgid "Min" -msgstr "Min" - -#: includes/filter.handlers.inc:1218 -msgid "And max" -msgstr "i max" - -#: includes/filter.handlers.inc:1218 -msgid "And" -msgstr "i" - -#: includes/filter.handlers.inc:1275 -msgid "@min and @max" -msgstr "@min and @max" - -#: includes/filter.handlers.inc:1301 -msgid "Value type" -msgstr "Typ wartości" - -#: includes/filter.handlers.inc:1303 -msgid "A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred." -msgstr "Data w formacie maszynowym (machine redable format). Preferowana CCYY-MM-DD HH:MM:SS ." - -#: includes/filter.handlers.inc:1304 -msgid "An offset from the current time such as \"+1 day\" or \"-2 hours -30 minutes\"" -msgstr "Przesunięcie od obecnego czasu takie jak \"+1 dzień\" albo \"-2 godziny -30 minut\"" - -#: includes/filter.handlers.inc:1354;1360;1364 -msgid "Invalid date format." -msgstr "Niewłaściwy format daty." - -#: includes/filter.handlers.inc:1460 -msgid "Is all of" -msgstr "Należy do" - -#: includes/filter.handlers.inc:1461 -msgid "Is none of" -msgstr "Nie należy do" - -#: includes/handlers.inc:136 -msgid "!group: !title" -msgstr "!group: !title" - -#: includes/handlers.inc:336 -msgid "Broken/missing handler" -msgstr "Uszkodzony/utracony uchwyt(handler)" - -#: includes/handlers.inc:344 -msgid "The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item." -msgstr "Uchwyt do tego elementu jest uszkodzony lub nie istnieje i nie może zostać użyty. Jeśli moduł dostarcza uchwyt i został wyłączony ponowne włączenie modułu może pomóc. Jeśli nie pomoże prawdopodobnie trzeba skasować ten element." - -#: includes/handlers.inc:380 -msgid "Reduce duplicates" -msgstr "Usuń duplikaty" - -#: includes/handlers.inc:381 -msgid "This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution." -msgstr "Zaznaczenie więcej niż jednej opcji w tym filtrze może powodować pojawienie się duplikatów w wynikach. Jeśli wystąpią duplikaty, zaznaczenie tej opcji wyeliminuje je; Czym więcej wyrażeń szukamy, tym mniej wydajne będą zapytania więc należy używać z rozwagą." - -#: includes/plugins.inc:19 -msgid "Default settings for this view." -msgstr "Domyślne ustawienia dla tego widoku." - -#: includes/plugins.inc:33 -msgid "Display the view as a page, with a URL and menu links." -msgstr "Wyświetl widok jako stronę, z URLem i menu." - -#: includes/plugins.inc:44;53 -msgid "Block" -msgstr "Blok" - -#: includes/plugins.inc:45 -msgid "Display the view as a block." -msgstr "Wyświetl widok jako blok." - -#: includes/plugins.inc:57 -msgid "Attachment" -msgstr "Załącznik" - -#: includes/plugins.inc:58 -msgid "Attachments added to other displays to achieve multiple views in the same view." -msgstr "Załączniki dołączone do tego podglądu tworzą wiele widoków w jednym." - -#: includes/plugins.inc:66 -msgid "Display the view as a feed, such as an RSS feed." -msgstr "Wyświetl widok jako kanał, np. RSS." - -#: includes/plugins.inc:78;124 -msgid "Unformatted" -msgstr "Niesformatowany" - -#: includes/plugins.inc:79 -msgid "Displays rows one after another." -msgstr "Wyświetl rzędy jeden po drugim." - -#: includes/plugins.inc:89 -msgid "Displays rows as an HTML list." -msgstr "Wyświetl rzędy jako liste HTML." - -#: includes/plugins.inc:97 -msgid "Grid" -msgstr "Siatka" - -#: includes/plugins.inc:98 -msgid "Displays rows in a grid." -msgstr "Wyświetl rzędy na siatce." - -#: includes/plugins.inc:106 -msgid "Table" -msgstr "Tabela" - -#: includes/plugins.inc:107 -msgid "Displays rows in a table." -msgstr "Wyświetl rzędy w tabeli." - -#: includes/plugins.inc:117 -msgid "Displays the default summary summary as a list." -msgstr "Wyświetl domyślnie podumowanie jako listę." - -#: includes/plugins.inc:125 -msgid "Displays the summary unformatted, with option for one after another or inline." -msgstr "Wyświetl podsumowanie nie formatując, z opcją \"jeden po drugim\" lub wyrównane." - -#: includes/plugins.inc:132 -msgid "RSS Feed" -msgstr "Kanał RSS" - -#: includes/plugins.inc:133 -msgid "Generates an RSS feed from a view." -msgstr "Generuje kanały RSS z widoku." - -#: includes/plugins.inc:143 -#: includes/view.inc:1663 -msgid "Fields" -msgstr "Pola" - -#: includes/plugins.inc:144 -msgid "Displays the fields with an optional template." -msgstr "Wyświetl pola w opcjonalnym szablonie." - -#: includes/plugins.inc:154 -msgid "Fixed entry" -msgstr "Stały wpis" - -#: includes/plugins.inc:158;164 -msgid "PHP Code" -msgstr "Kod PHP" - -#: includes/plugins.inc:168 -msgid "Numeric" -msgstr "Numeryczny" - -#: includes/plugins.inc:783 -msgid "Broken field" -msgstr "Uszkodzone pole" - -#: includes/plugins.inc:800 -msgid "Basic settings" -msgstr "Ustawienia podstawowe" - -#: includes/plugins.inc:807 -msgid "Change the name of this display." -msgstr "Zmień nazwę podglądu." - -#: includes/plugins.inc:819 -msgid "Change the title that this display will use." -msgstr "Zmień na tytuł którego podgląd będzie używał." - -#: includes/plugins.inc:829 -msgid "Style" -msgstr "Styl" - -#: includes/plugins.inc:831 -msgid "Change the style plugin." -msgstr "Zmień plugin stylu." - -#: includes/plugins.inc:845 -msgid "Row style" -msgstr "Styl rzędu" - -#: includes/plugins.inc:847 -msgid "Change the row plugin." -msgstr "Zmień plugin rzędu." - -#: includes/plugins.inc:857 -msgid "Use AJAX" -msgstr "Użyj AJAXa" - -#: includes/plugins.inc:859 -msgid "Change whether or not this display will use AJAX." -msgstr "Wybierz czy podgląd ma używać AJAXa czy nie." - -#: includes/plugins.inc:866 -msgid "Use pager" -msgstr "Użyj podziału na strony" - -#: includes/plugins.inc:867 -msgid "Mini" -msgstr "Mini" - -#: includes/plugins.inc:868 -msgid "Change this display's pager setting." -msgstr "Zmień ustawienia podziału na strony dla podglądu." - -#: includes/plugins.inc:875;1054 -msgid "Items per page" -msgstr "Elementów na stronę" - -#: includes/plugins.inc:875;1054;3339 -msgid "Items to display" -msgstr "Elementy do wyświetlenia" - -#: includes/plugins.inc:876 -msgid "Unlimited" -msgstr "Nieograniczone" - -#: includes/plugins.inc:877 -msgid "Change how many items to display." -msgstr "Zmień ile elementów wyświetlać." - -#: includes/plugins.inc:883 -msgid "More link" -msgstr "Więcej odnosników" - -#: includes/plugins.inc:885 -msgid "Specify whether this display will provide a \"more\" link." -msgstr "Określa, czy podgląd ma wyświetlać \"więcej...\" odnośników" - -#: includes/plugins.inc:891;1081 -msgid "Distinct" -msgstr "Niepowtarzalne" - -#: includes/plugins.inc:893;1078 -msgid "Display only distinct items, without duplicates." -msgstr "Wyświetla liste elementów bez duplikatów." - -#: includes/plugins.inc:904;1104 -msgid "Unrestricted" -msgstr "Nieograniczone" - -#: includes/plugins.inc:912 -msgid "Multiple roles" -msgstr "Wiele ról" - -#: includes/plugins.inc:924 -msgid "Access" -msgstr "Dostęp" - -#: includes/plugins.inc:926 -msgid "Specify access control settings for this display." -msgstr "Określa, sposób dostępu do ustawień dla tego podglądu." - -#: includes/plugins.inc:946 -msgid "Link display" -msgstr "Powiąż z podglądem" - -#: includes/plugins.inc:948 -msgid "Specify which display this display will link to." -msgstr "Określa, który podgląd odnosi się do tego podglądu." - -#: includes/plugins.inc:953;1143 -msgid "Header" -msgstr "Nagłówek" - -#: includes/plugins.inc:953;1159 -msgid "Footer" -msgstr "Stopka" - -#: includes/plugins.inc:953;1175 -msgid "Empty text" -msgstr "Pusty tekst" - -#: includes/plugins.inc:969 -msgid "Unknown/missing filter" -msgstr "Nieznany/Utracony filtr" - -#: includes/plugins.inc:977 -msgid "Change this display's !name." -msgstr "Zmień nazwe podglądu !name." - -#: includes/plugins.inc:983 -msgid "Theme" -msgstr "Skórka" - -#: includes/plugins.inc:984 -msgid "Information" -msgstr "Informacja" - -#: includes/plugins.inc:985 -msgid "Get information on how to theme this display" -msgstr "Pobiera informację jak skórka ma wyświetlać ten podgląd" - -#: includes/plugins.inc:1011 -msgid "The name of this display" -msgstr "Nazwa podglądu" - -#: includes/plugins.inc:1014 -msgid "This title will appear only in the administrative interface for the View." -msgstr "Ten tytuł ukaże się tylko w panelu administracyjnym Widoków." - -#: includes/plugins.inc:1019 -msgid "The title of this view" -msgstr "Tytuł tego widoku" - -#: includes/plugins.inc:1022 -msgid "This title will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc." -msgstr "Ten tytuł będzie wyświetlany z widokiem wszędzie tam, gdzie tytuły sa normalnie wyświetlane; Na przykład Tytuł strony czy Tytuł bloku." - -#: includes/plugins.inc:1027 -msgid "Use AJAX when available to load this view" -msgstr "Użyj AJAXa do ładowania tego widoku jeśli dostępny" - -#: includes/plugins.inc:1031 -msgid "If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This means the entire page will not refresh. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content." -msgstr "Jeśli zaznaczysz to pole, widok będzie używał AJAXa do dzielenia widoku na strony, sortowania tabel i pokazywania filtrów. Oznacza to, że strona nie będzie kompletnie odświeżana. Nie poleca się używania dla głównej treści strony, może zapobiegać głębokiemu linkowaniu specyficznych stron, ale jest bardzo użyteczne dla zawartości strony." - -#: includes/plugins.inc:1040 -msgid "Use a pager for this view" -msgstr "Użyj podziału na strony dla tego widoku" - -#: includes/plugins.inc:1043 -msgid "Full pager" -msgstr "Wszystkie opcje" - -#: includes/plugins.inc:1043 -msgid "Mini pager" -msgstr "Podstawowe opcje" - -#: includes/plugins.inc:1048 -msgid "Pager element" -msgstr "Pager element" - -#: includes/plugins.inc:1049 -msgid "Unless you're experiencing problems with pagers related to this view, you should leave this at 0. If using multiple pagers on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add a lot of commas to your URLs, so avoid if possible." -msgstr "Dopóki podział na strony działa, powinieneś ustawić wartośc na 0. Jeśli używasz wielu podziałów stron na jednej stronie, powinienes ustawić wartość na większą nie kolidującą z ?page= array. Duża wartośc doda wiele przecinków w Twoim URLu, więc unikaj takiego rozwiązania jeśli to możliwe." - -#: includes/plugins.inc:1058 -msgid "The number of items to display per page. Enter 0 for no limit." -msgstr "Liczba elementów wyświetlanych na stronie. 0 - bez limitu." - -#: includes/plugins.inc:1063 -msgid "Offset" -msgstr "Przesunięcie" - -#: includes/plugins.inc:1064 -msgid "The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed. Offset can not be used if items to display is 0; instead use a very large number there." -msgstr "Liczba elementów do pominięcia. Dla przykładu jeśli pole jest ustawione na 3, to 3 pierwsze elementy będa pominięte i nie będą wyświetlone. Przesunięcie nie może byc użyte jeżeli elementów nie ma; zamiast używania wielkich liczb tutaj. " - -#: includes/plugins.inc:1069 -msgid "Add a more link to the bottom of the display." -msgstr "Dodaj więcej odnośników w dolnej częsci podglądu." - -#: includes/plugins.inc:1072 -msgid "Create more link" -msgstr "Utwórz więcej odnosników" - -#: includes/plugins.inc:1073 -msgid "This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above." -msgstr "Dodaje więcej odnosników w dolnej częsci widoku, które odnoszą się do strony widoku. Jeśli masz więcej niż jedną stronę widoków, odnośnik będzie się odnosił do podglądu określonego w 'Powiąż z podglądem' powyżej." - -#: includes/plugins.inc:1082 -msgid "This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution." -msgstr "Tworzy widok podglądu elementów niepowtarzających się. Jeśli masz wiele elementów identycznych, każdy zostanie wyświetlony tylko raz. Możesz tego użyć do usuwania powtarzających się widoków jednakże nie zawsze sie udaje. Uwaga operacja może spowolnić wykonywanie się zapytań, proszę używać ostrożnie." - -#: includes/plugins.inc:1087 -msgid "Access restrictions" -msgstr "Ograniczenie dostępu" - -#: includes/plugins.inc:1104 -msgid "By role" -msgstr "Przez rolę" - -#: includes/plugins.inc:1104 -msgid "By permission" -msgstr "Przez uprawnienia" - -#: includes/plugins.inc:1113 -msgid "If by role" -msgstr "Jeśli przez role" - -#: includes/plugins.inc:1116 -msgid "Only the checked roles will be able to access this display. Note that users with \"access all views\" can see any view, regardless of role." -msgstr "Tylko zaznaczone rolę będą miały dostęp do podglądu. Uwaga, użytkownicy z \"dostępem do wszystkich widoków\" będą mogli zobaczyć dowolny widok bez względu na rolę." - -#: includes/plugins.inc:1133 -msgid "If by permission" -msgstr "Jeśli przez uprzenienia" - -#: includes/plugins.inc:1135 -msgid "Only users with the selected permission flag will be able to access this display. Note that users with \"access all views\" can see any view, regardless of other permissions." -msgstr "Dostęp do podglądu będą mieć tylko użytkownicy z zaznaczonym dostępem. Uwaga, użytkownicy z \"Dostęp do wszystkich widoków\" będą widzieć wszystkie widoki bez względu na inne ustawienia dostępu. " - -#: includes/plugins.inc:1146;1162 -msgid "Display even if view has no result" -msgstr "Wyświetl nawet gdy widok nie zawiera danych" - -#: includes/plugins.inc:1153 -msgid "Text to display at the top of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Tekst wyświetlany na górze widoku. Może zawierać opis albo odnośniki, co tylko chcesz. Ustawienie opcjonalne." - -#: includes/plugins.inc:1169 -msgid "Text to display beneath the view. May contain an explanation or links or whatever you like. Optional." -msgstr "Tekst wyświetlany poniżej widoku. Może zawierać opis albo odnośniki, co tylko chcesz. Ustawienie opcjonalne." - -#: includes/plugins.inc:1180 -msgid "Text to display if the view has no results. Optional." -msgstr "Tekst wyświetlany w przypadku braku danych w widoku. Ustawienie opcjonalne." - -#: includes/plugins.inc:1186 -msgid "How should this view be styled" -msgstr "Jakiego stylu powinieneś użyć dla tego widoku" - -#: includes/plugins.inc:1192 -msgid "If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary." -msgstr "Jeśli styl który wybrałes ma ustawienia, upewnij się że przycisk ustawień pojawił się obok Widoku podsumowań." - -#: includes/plugins.inc:1200 -msgid "You may also adjust the !settings for the currently selected style by clicking on the icon." -msgstr "Powinieneś również dostosować !settings obecnie wybrany styl poprzez klinięcie na ikonkę." - -#: includes/plugins.inc:1200;1242 -msgid "settings" -msgstr "ustawienia" - -#: includes/plugins.inc:1206 -msgid "Style options" -msgstr "Opcje stylów" - -#: includes/plugins.inc:1218 -msgid "Row style options" -msgstr "Opcje stylu rzędów" - -#: includes/plugins.inc:1230 -msgid "How should each row in this view be styled" -msgstr "Jakiego stylu każdy rząd danych ma używać" - -#: includes/plugins.inc:1242 -msgid "You may also adjust the !settings for the currently selected row style by clicking on the icon." -msgstr "Powinieneś również dostosować !settings obecnie wybrany styl rzędu danych poprzez klinięcie na ikonkę." - -#: includes/plugins.inc:1248 -msgid "Which display to use for path" -msgstr "Którego podglądu użyć dla ściezki" - -#: includes/plugins.inc:1257 -msgid "Which display to use to get this display's path for things like summary links, rss feed links, more links, etc." -msgstr "Którego podglądu użyć aby otrzymać scieżkę podglądu dla odnośników do danych takich jak : podsumowanie, kanały RSS, więcej odnośników itd." - -#: includes/plugins.inc:1262 -msgid "Theming information" -msgstr "Informacje o skórkach" - -#: includes/plugins.inc:1270 -msgid "Display output" -msgstr "Wygląd podglądu" - -#: includes/plugins.inc:1275 -msgid "Style output" -msgstr "Wygląd stylu" - -#: includes/plugins.inc:1280 -msgid "Row style output" -msgstr "Wygląd lini tekstu" - -#: includes/plugins.inc:1286 -msgid "Field @field" -msgstr "Pole @field" - -#: includes/plugins.inc:1294 -msgid "<strong>Important!</strong> When you add a new template to your theme, be sure to clear the theme registry cache. You can do this by visiting administer >> site building >> themes -- just loading the page should clear the cache." -msgstr "<strong>Ważne!</strong> Kiedy dodajesz nowy szablon do skórki, upewnij się że wyczyściłes pamięć podręczną skórki. Możesz tego dokonać wchodząć w ustawienia >> Zarządzaj >> Budowa witryny >> Skórki -- właściwe łądowanie strony powinno oczyścić pamięć podręczną." - -#: includes/plugins.inc:1306 -msgid "Theming information (display)" -msgstr "Informacje o skórce (podgląd)" - -#: includes/plugins.inc:1307;1326;1347;1368 -msgid "Back to !info." -msgstr "Wróć do !info" - -#: includes/plugins.inc:1307;1326;1347;1368 -msgid "theming information" -msgstr "informacje o tworzeniu skórek" - -#: includes/plugins.inc:1310 -msgid "This display has no theming information" -msgstr "Ten podgląd nie posiada informacji o tworzeniu skórek" - -#: includes/plugins.inc:1313 -msgid "This is the default theme template used for this display." -msgstr "To jest domyslny szablon skórki używanej w tym podglądzie." - -#: includes/plugins.inc:1325 -msgid "Theming information (style)" -msgstr "Informację o tworzeniu skórki (styl)" - -#: includes/plugins.inc:1331 -msgid "This display has no style theming information" -msgstr "Ten podgląd nie posiada informacji o stylach skórek" - -#: includes/plugins.inc:1334 -msgid "This is the default theme template used for this style." -msgstr "Domyslna skórka używana w tym szablonie dla tego stylu." - -#: includes/plugins.inc:1346;1367 -msgid "Theming information (row style)" -msgstr "Informacje o tworzeniu skórki (styl lini tekstu)" - -#: includes/plugins.inc:1352 -msgid "This display has no row style theming information" -msgstr "Ten podgląd nie ma informacji o tworzeniu skórek dla wierszy tabel" - -#: includes/plugins.inc:1355;1370 -msgid "This is the default theme template used for this row style." -msgstr "To jest domyślny szablon skórki dla tego stylu lini danych" - -#: includes/plugins.inc:1434 -msgid "You must select at least one role if type is \"by role\"" -msgstr "Musisz wybrać przynajmniej jedną rolę gdy typ jest \"przez rolę\"" - -#: includes/plugins.inc:1551 -msgid "Override" -msgstr "Nadpisz" - -#: includes/plugins.inc:1563 -msgid "Use default" -msgstr "Użyj domślnych" - -#: includes/plugins.inc:1756 -msgid "Display @display uses fields but there are none defined for it." -msgstr "Podgląd @display używa pól, ale żadne nie jest zdefiniowane." - -#: includes/plugins.inc:1760 -msgid "Display @display uses path but path is undefined." -msgstr "Podgląd @display używa ścieżki ale żadna nie jest zdefiniowana." - -#: includes/plugins.inc:1765 -msgid "Display @display has an invalid style plugin." -msgstr "Podgląd @display ma nieprawidłowy plugin stylu." - -#: includes/plugins.inc:1994 -msgid "Page settings" -msgstr "Ustawienia strony" - -#: includes/plugins.inc:2019 -msgid "No menu" -msgstr "Brak menu" - -#: includes/plugins.inc:2022 -msgid "Normal: @title" -msgstr "Zwykły: @title" - -#: includes/plugins.inc:2026 -msgid "Tab: @title" -msgstr "Zakładka: @tab" - -#: includes/plugins.inc:2036 -msgid "Menu" -msgstr "Menu" - -#: includes/plugins.inc:2042 -msgid "Change settings for the parent menu" -msgstr "Zmień ustawienia dla nadrzędnego menu" - -#: includes/plugins.inc:2055 -msgid "The menu path or URL of this view" -msgstr "Ścieżka menu albo URL tego widoku" - -#: includes/plugins.inc:2059 -msgid "This view will be displayed by visiting this path on your site. You may use \"%\" in your URL to represent values that will be used for arguments: For example, \"node/%/feed\"." -msgstr "Widok będzie wyświetlony przez odwiedzenie tej ścieżki na Twojej stronie. Możesz użyć \"%\" w URLu reprezentując wartości użyte dla argumentów: Na przykład, \"node/%/feed\"." - -#: includes/plugins.inc:2065 -msgid "Menu item entry" -msgstr "Lista elementów menu" - -#: includes/plugins.inc:2082 -msgid "No menu entry" -msgstr "Brak listy elementów menu" - -#: includes/plugins.inc:2083 -msgid "Normal menu entry" -msgstr "Zwykły wpis w menu" - -#: includes/plugins.inc:2084;2131 -msgid "Menu tab" -msgstr "Zakładka menu" - -#: includes/plugins.inc:2085 -msgid "Default menu tab" -msgstr "Domyslna zakładka menu" - -#: includes/plugins.inc:2094 -msgid "If set to normal or tab, enter the text to use for the menu item." -msgstr "Wprowadź tekst by użyć elementu menu, gdy menu jest zwykłe lub gdy jest zakładką." - -#: includes/plugins.inc:2103 -msgid "If set to tab, enter the weight of the item. The lower th weight the higher/further left it will appear." -msgstr "Wpisz wagę elementu gdy przypisujesz zakładce. Im mniejsza waga tym zakładka pojawi się bardziej z lewej strony." - -#: includes/plugins.inc:2109 -msgid "Default tab options" -msgstr "Domyślne opcje zakładek" - -#: includes/plugins.inc:2118 -msgid "When providing a menu item as a tab, Drupal needs to know what the parent menu item of that tab will be. Sometimes the parent will already exist, but other times you will need to have one created. The path of a parent item will always be the same path with the last part left off. i.e, if the path to this view is <em>foo/bar/baz</em>, the parent path would be <em>foo/bar</em>." -msgstr "Kiedy dostarczamy menu jako zakłądki, Drupal musi wiedzieć jaki będzie element nadrzędny menu zakładki. Czasami element nadrzędny istnieje, ale czasami będzie trzeba go utworzyć. Ścieżką elementu nadrzędnego zawsze będzie częścią powstałą przez odłączenie ostatniego fragmentu ścieżki podrzędnej. Na przykład ścieżka do widoku jest: </em>foo/bar/baz</em> nadrzędną ścieżka będzie <em>foo/bar</em>." - -#: includes/plugins.inc:2129 -msgid "Parent menu item" -msgstr "Nadrzędny element menu" - -#: includes/plugins.inc:2131 -msgid "Already exists" -msgstr "Już istnieje" - -#: includes/plugins.inc:2131 -msgid "Normal menu item" -msgstr "Standardowy element menu" - -#: includes/plugins.inc:2139 -msgid "If creating a parent menu item, enter the title of the item." -msgstr "Gdy dodajesz element nadrzędny menu, wprowadź jego tytuł." - -#: includes/plugins.inc:2145 -msgid "Tab weight" -msgstr "Waga zakładki" - -#: includes/plugins.inc:2149 -msgid "If the parent menu item is a tab, enter the weight of the tab. The lower the number, the more to the left it will be." -msgstr "Gdy element nadrzędny menu jest zakładką, wprowadź jej wagę. Im mniejszy numer, tym bardziej będzie z lewej." - -#: includes/plugins.inc:2163 -msgid "\"$arg\" is no longer supported. Use % instead." -msgstr "\"$arg\" już nie używamy. Użyj w zamian %. " - -#: includes/plugins.inc:2173 -msgid "Views cannot create normal menu items for paths with a % in them." -msgstr "Widok nie może tworzyć standardowych elementów menu dla ścieżek z % w nich." - -#: includes/plugins.inc:2180 -msgid "A display whose path ends with a % cannot be a tab." -msgstr "Wyświetla które ścieżki kończące się % nie mogą być zakładką." - -#: includes/plugins.inc:2185 -msgid "Title is required for this menu type." -msgstr "Tytuł jest wymagany dla tego typu menu" - -#: includes/plugins.inc:2216 -msgid "Display @display is set to use a menu but the menu title is not set." -msgstr "Podgląd @display jest ustawiony tak, by używać tytułu menu ale tytuł nie został ustawiony." - -#: includes/plugins.inc:2222 -msgid "Display @display is set to use a parent menu but the parent menu title is not set." -msgstr "Podgląd @display jest ustawiony by używać nadrzędnego menu, ale tytuł elementu menu nie został ustawiony." - -#: includes/plugins.inc:2288 -msgid "Block settings" -msgstr "Ustawienia Bloków" - -#: includes/plugins.inc:2302 -msgid "Admin" -msgstr "Admin" - -#: includes/plugins.inc:2314 -msgid "Caching" -msgstr "Zapis do pamięci podręcznej" - -#: includes/plugins.inc:2324 -msgid "Do not cache" -msgstr "Nie zapisuj w pamięci podręcznej" - -#: includes/plugins.inc:2325 -msgid "Cache once for everything (global)" -msgstr "Jedna pamięć podręczna dla wszystkiego (globalna)" - -#: includes/plugins.inc:2326 -msgid "Per page" -msgstr "Na stronę" - -#: includes/plugins.inc:2327 -msgid "Per role" -msgstr "Na rolę" - -#: includes/plugins.inc:2328 -msgid "Per role per page" -msgstr "Na rolę na stronę" - -#: includes/plugins.inc:2329 -msgid "Per user" -msgstr "Na użytkownika" - -#: includes/plugins.inc:2330 -msgid "Per user per page" -msgstr "Na użytkownika na stronę" - -#: includes/plugins.inc:2355 -msgid "Block admin description" -msgstr "Opis bloku administracyjnego" - -#: includes/plugins.inc:2358 -msgid "This will appear as the name of this block in administer >> site building >> blocks." -msgstr "To ukaże się jako nazwa bloku w Zarządzaj >> Konfiguracja witryny >> Bloki." - -#: includes/plugins.inc:2363 -msgid "Block caching type" -msgstr "Typ pamięci podręcznej dla bloku" - -#: includes/plugins.inc:2367 -msgid "This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed." -msgstr "To ustawia domyslny status dla wbudowanej metody blokowego cache'owania; to wymaga by cache'owanie bylo wlaczone w bloku administracyjnym, i badz ostrozny poniewaz masz mala kontrole na tym kiedy cache jest opróżniany." - -#: includes/plugins.inc:2418 -msgid "Before" -msgstr "Przed" - -#: includes/plugins.inc:2419 -msgid "After" -msgstr "Po" - -#: includes/plugins.inc:2420 -msgid "Both" -msgstr "Oba" - -#: includes/plugins.inc:2440 -msgid "Attachment settings" -msgstr "Ustawienia załączników" - -#: includes/plugins.inc:2445;2486 -msgid "Inherit arguments" -msgstr "Dziedziczenie argumentów" - -#: includes/plugins.inc:2451;2495 -msgid "Position" -msgstr "Pozycja" - -#: includes/plugins.inc:2457;2649 -msgid "Multiple displays" -msgstr "Wiele podglądów" - -#: includes/plugins.inc:2472;2504;2664;2678 -msgid "Attach to" -msgstr "Dołącz do" - -#: includes/plugins.inc:2489 -msgid "Inherit" -msgstr "Dziedzicz" - -#: includes/plugins.inc:2490 -msgid "Should this display inherit its arguments from the parent display to which it is attached?" -msgstr "Czy podgląd ma dziedziczyć argumenty z nadrzędnego podglądu do którego jest dołączony?" - -#: includes/plugins.inc:2498;2687 -msgid "Attach before or after the parent display?" -msgstr "Dołączyć przed czy po nadrzędnym podglądzie?" - -#: includes/plugins.inc:2513 -msgid "Select which display or displays this should attach to." -msgstr "Wybierz, który lub które podglądy powinny być dołączone." - -#: includes/plugins.inc:2641 -msgid "Feed settings" -msgstr "Ustawienia kanału" - -#: includes/plugins.inc:2693 -msgid "This view will be displayed by visiting this path on your site. It is recommended that the path be something like \"path/%/%/feed\" or \"path/%/%/rss.xml\", putting one % in the path for each argument you have defined in the view." -msgstr "Ten widok będzie wyświetlany odwiedzającym tą ścieżkę w adresie Twojej strony. Poleca się by ścieżka wyglądała \"path/%/%/feed\" albo \"path/%/%/rss.xml\", umieszczamy JEDEN % w ścieżce dla każdego ze zdefiniowanych argumentów w widoku." - -#: includes/plugins.inc:2835 -msgid "Grouping field" -msgstr "Pole grupujące" - -#: includes/plugins.inc:2838 -msgid "You may optionally specify a field by which to group the records. Leave blank to not group." -msgstr "Opcjonalnie możesz okreslić pole grupujące dane. Pozostaw puste by nie grupować. " - -#: includes/plugins.inc:2923 -msgid "Style @style requires a row style but the row plugin is invalid." -msgstr "Styl @style wymaga stylu wiersza tabeli, a plugin wiersza tabeli jest niewłaściwy." - -#: includes/plugins.inc:2970 -msgid "List type" -msgstr "Typ listy" - -#: includes/plugins.inc:3000 -msgid "Number of columns" -msgstr "Liczba kolumn" - -#: includes/plugins.inc:3005 -msgid "Alignment" -msgstr "Wyrównanie" - -#: includes/plugins.inc:3006 -msgid "Horizontal" -msgstr "Poziomo" - -#: includes/plugins.inc:3006 -msgid "Vertical" -msgstr "Pionowo" - -#: includes/plugins.inc:3008 -msgid "Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down." -msgstr "Wyrównanie poziome umieści elementy zaczynając od części lewej górnej w strone prawej. Pionowe zaś umieśi je od części lewej górnej w dół." - -#: includes/plugins.inc:3127 -msgid "You need at least one field before you can configure your table settings" -msgstr "Potrzebujesz przynajmniej jednego pola zanim zaczniesz konfigurować ustawienia tabel" - -#: includes/plugins.inc:3136 -msgid "Override normal sorting if click sorting is used" -msgstr "Nadpisz normalne sortowanie jeśli ktoś kliknął \"sortuj\"" - -#: includes/plugins.inc:3142 -msgid "Enable Drupal style \"sticky\" table headers (Javascript)" -msgstr "Włącz styl \"przyklejony\" do nagłówków tabel (JavaScript)" - -#: includes/plugins.inc:3144 -msgid "(Sticky header effects will not be active for preview below, only on live output.)" -msgstr "(Przyklejone nagłówki nie będą aktywne przy podglądzie poniżej tylko w podglądzie na żywo.)" - -#: includes/plugins.inc:3149 -msgid "Default sort order" -msgstr "Domyślne sortowanie" - -#: includes/plugins.inc:3150 -#: includes/sort.handlers.inc:60 -msgid "Ascending" -msgstr "Rosnąco" - -#: includes/plugins.inc:3150 -#: includes/sort.handlers.inc:60 -msgid "Descending" -msgstr "Malejąco" - -#: includes/plugins.inc:3152 -msgid "If a default sort order is selected, what order should it use by default." -msgstr "Jakie sortowanie ma być stosowane domyślnie gdy zaznaczymy sorotwanie domyślne." - -#: includes/plugins.inc:3238 -msgid "Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column clicksortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section." -msgstr "Umieść pola w kolumnach; możesz ustawić wiele pól w tej samej kolumnie. Separator w wybranych kolumnach będzie oddzielał pola. Zaznacz pole sortowania, aby wybrać jak domyślnie dana kolumna ma być sortowana. Porządek sortowania i opisy etykiet pól możesz kontrolować w sekcji pól." - -#: includes/plugins.inc:3263 -#: includes/view.inc:1665 -msgid "Field" -msgstr "Pole" - -#: includes/plugins.inc:3264 -msgid "Column" -msgstr "Kolumna" - -#: includes/plugins.inc:3267 -msgid "Sortable" -msgstr "Sortowalny" - -#: includes/plugins.inc:3271 -msgid "Default sort" -msgstr "Standardowe sortowanie" - -#: includes/plugins.inc:3330 -msgid "Display record count with link" -msgstr "Wyświetl ilośc rekordów z odnośnikiem" - -#: includes/plugins.inc:3335 -msgid "Override number of items to display" -msgstr "Nadpisz liczbę elementów do wyświetlenia" - -#: includes/plugins.inc:3372 -msgid "Display items inline" -msgstr "Wyświetl elementy \"inline\"" - -#: includes/plugins.inc:3421 -msgid "Use the site mission for the description" -msgstr "Używaj misji strony do opisu" - -#: includes/plugins.inc:3425 -msgid "RSS description" -msgstr "Opis kanału RSS" - -#: includes/plugins.inc:3427 -msgid "This will appear in the RSS feed itself." -msgstr "To pojawi się samo w kanale RSS." - -#: includes/plugins.inc:3550 -msgid "Inline fields" -msgstr "Pola \"inline\"" - -#: includes/plugins.inc:3553 -msgid "Inline fields will be displayed next to each other rather than one after another." -msgstr "Pola \"inline\" będą wyświetlone obok siebie względnie jedno pod drugim." - -#: includes/plugins.inc:3561 -msgid "The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field." -msgstr "Separator może być umiejscowiony pomiędzy polami \"inline\" by trzymać je ściśnięte razem. W tym polu możesz użyć HTMLa." - -#: includes/plugins.inc:3611 -msgid "Default argument" -msgstr "Domyślny argument" - -#: includes/plugins.inc:3653 -msgid "PHP argument code" -msgstr "Kod argumentu PHP (PHP argument code)" - -#: includes/plugins.inc:3656 -msgid "Enter PHP code that returns a value to use for this argument. Do not use <?php ?>. You must return only a single value for just this argument." -msgstr "Wprowadź kod PHP który zwróci wartość użytą dla tego argumentu. Nie używaj <?php ?>. Musisz zwrócić tylko jedną wartość dla jednego argumentu." - -#: includes/plugins.inc:3760 -msgid "PHP validate code" -msgstr "Kod poprawności PHP" - -#: includes/plugins.inc:3762 -msgid "Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be \"$argument\" and the view will be \"$view\". You may change the argument by setting \"$handler->argument\"." -msgstr "Ten kod zwraca PRAWDĘ (true) lub FAŁSZ(false). Brak zwróconej wartości jest równoznaczny z FAŁSZem więć upewnij się że zwracasz coś by deklarować argument właściwie. Nie używaj <?php ?>. Argument mozna sprawdzić wpisując \"$argument\" , widok \"$view\". Możesz zmienić argument poprzez ustawienie \"$handler->argument\"." - -#: includes/relationship.handlers.inc:62 -msgid "The label for this relationship that will be displayed only administratively." -msgstr "Etykieta dla tego powiązania, która będzie wyświetlana tylko w trybie administracji." - -#: includes/relationship.handlers.inc:67 -msgid "Require this relationship" -msgstr "Wymaga zalezności" - -#: includes/relationship.handlers.inc:68 -msgid "If required, items that do not contain this relationship will not appear." -msgstr "Gdy wymagane, elementy niezawierające tej relacji nie ukażą się." - -#: includes/sort.handlers.inc:43 -msgid "asc" -msgstr "asc" - -#: includes/sort.handlers.inc:47 -msgid "desc" -msgstr "desc" - -#: includes/sort.handlers.inc:59 -msgid "Sort order" -msgstr "Kolejność sortowania" - -#: includes/sort.handlers.inc:76 -msgid "views_handler_sort_formula missing default: @formula" -msgstr "views_handler_sort_formula utracona domyślnie: @formula" - -#: includes/sort.handlers.inc:116 -msgid "Granularity" -msgstr "Ziarnistość" - -#: includes/sort.handlers.inc:118 -msgid "Second" -msgstr "Drugi" - -#: includes/sort.handlers.inc:119 -msgid "Minute" -msgstr "Minuta" - -#: includes/sort.handlers.inc:120 -msgid "Hour" -msgstr "Godzina" - -#: includes/sort.handlers.inc:121 -msgid "Day" -msgstr "Dzień" - -#: includes/sort.handlers.inc:122 -msgid "Month" -msgstr "Miesiąc" - -#: includes/sort.handlers.inc:123 -msgid "Year" -msgstr "Rok" - -#: includes/sort.handlers.inc:125 -msgid "The granularity is the smallest unit to use when determining whether two dates are the same; for example, if the granularity is \"Year\" then all dates in 1999, regardless of when they fall in 1999, will be considered the same date." -msgstr "Ziarnistość jest najmniejszą jednostką używaną do określenia czy dwie daty są takie same; na przykład gdy ziarnistością jest \"Rok\" to wszystkie daty zawierające 1999 będą traktowane jako jedna data." - -#: includes/view.inc:224 -msgid "set_display called with invalid display id @display" -msgstr "set_display wołany z nieprawidłowym ID Podglądu @display" - -#: includes/view.inc:946 -msgid "Home" -msgstr "Start" - -#: includes/view.inc:1664 -msgid "fields" -msgstr "pola" - -#: includes/view.inc:1666 -msgid "field" -msgstr "pole" - -#: includes/view.inc:1671 -msgid "arguments" -msgstr "argumenty" - -#: includes/view.inc:1672;1673 -msgid "Argument" -msgstr "Argument" - -#: includes/view.inc:1677 -msgid "Sort criteria" -msgstr "Kryteria sortowania" - -#: includes/view.inc:1678 -msgid "sort criteria" -msgstr "kryteria sortowania" - -#: includes/view.inc:1679 -msgid "Sort criterion" -msgstr "Kryterium sortowania" - -#: includes/view.inc:1680 -msgid "sort criterion" -msgstr "kryterium sortowania" - -#: includes/view.inc:1684 -msgid "Filters" -msgstr "Filtry" - -#: includes/view.inc:1685 -msgid "filters" -msgstr "filtry" - -#: includes/view.inc:1686 -msgid "Filter" -msgstr "Filtr" - -#: includes/view.inc:1687 -msgid "filter" -msgstr "filtr" - -#: includes/view.inc:1692 -msgid "Relationships" -msgstr "Zależności" - -#: includes/view.inc:1693 -msgid "relationships" -msgstr "zależności" - -#: js/ajax.js:0;0;0;0;0;0;0 -#: js/ajax_view.js:0;0;0 -msgid "An error occurred at " -msgstr "Błąd wystąpił w " - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Mismatching fragment identifier." -msgstr "jQuery UI Tabs: Niepasujący fragment identyfikatora." - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Not enough arguments to add tab." -msgstr "jQuery UI Tabs: Za mało argumentów by dodać zakładkę." - -#: modules/book.views.inc:21;36;46;99 -msgid "Book" -msgstr "Książka" - -#: modules/book.views.inc:30 -msgid "Top level book" -msgstr "Najwyższy poziom książki" - -#: modules/book.views.inc:31 -msgid "The book the node is in" -msgstr "Książka w której jest segment" - -#: modules/book.views.inc:58 -msgid "The weight of the book page." -msgstr "Waga strony książki" - -#: modules/book.views.inc:69 -#: modules/comment.views.inc:202 -#: modules/taxonomy.views.inc:339 -msgid "Depth" -msgstr "Głębokość" - -#: modules/book.views.inc:70 -msgid "The depth of the book page in the hierarchy; top level books have a depth of 1." -msgstr "Głębokość strony książki w hierarchi; książki najwyższego poziomu mają głębokość 1." - -#: modules/book.views.inc:87 -msgid "Hierarchy" -msgstr "Hierarchia" - -#: modules/book.views.inc:88 -msgid "The order of pages in the book hierarchy. Remember to sort by weight too if you want exactly the right order." -msgstr "Kolejność stron w hierarchi książki. Pamiętaj by sortować po wadze również jeśli chcesz mieć właściwie posortowane." - -#: modules/book.views.inc:110 -msgid "Parent" -msgstr "Nadrzędny" - -#: modules/book.views.inc:111 -msgid "The parent book node" -msgstr "Nadrzędny segment książki" - -#: modules/book.views.inc:116 -msgid "Book parent" -msgstr "Rodzic książki" - -#: modules/comment.views.inc:22;26;382;391 -msgid "Comment" -msgstr "Komentarz" - -#: modules/comment.views.inc:27 -msgid "Comments are responses to node content." -msgstr "Komentarze są odpowiedziami na zawartość segmentów." - -#: modules/comment.views.inc:45 -msgid "The title of the comment." -msgstr "Tytuł komentarza" - -#: modules/comment.views.inc:63 -#: modules/node.views.inc:348 -msgid "Body" -msgstr "Treść" - -#: modules/comment.views.inc:64 -msgid "The text of the comment." -msgstr "Tekst komentarza" - -#: modules/comment.views.inc:76 -msgid "ID" -msgstr "ID" - -#: modules/comment.views.inc:77 -msgid "The commment ID of the field" -msgstr "ID komentarza pola" - -#: modules/comment.views.inc:95 -msgid "Author" -msgstr "Autor" - -#: modules/comment.views.inc:96 -msgid "The name of the poster." -msgstr "Imie nadsyłającego." - -#: modules/comment.views.inc:114 -msgid "Author's website" -msgstr "Adres strony nadsyłającego" - -#: modules/comment.views.inc:115 -msgid "The website address of the comment's author. Can be a link. The homepage can also be linked with the Name field. Will be empty if posted by a registered user." -msgstr "Adres strony domowej autora. Może być odnośnikiem. Pole nazwy użytkownika również może być odnośnikiem do strony domowej. Pozostanie puste w przypadku gdy nadsyłającym jest użytkownik zarejestrowany." - -#: modules/comment.views.inc:133 -#: modules/node.views.inc:107 -msgid "Post date" -msgstr "Data nadesłania" - -#: modules/comment.views.inc:134 -msgid "Date and time of when the comment was posted." -msgstr "Data i czas wysłania komentarza." - -#: modules/comment.views.inc:149 -msgid "In moderation" -msgstr "W moderacji" - -#: modules/comment.views.inc:150 -msgid "Whether or not the comment is currently in moderation." -msgstr "Czy ten komentarz jest obecnie moderowany czy nie." - -#: modules/comment.views.inc:157 -msgid "Moderated" -msgstr "Moderowane" - -#: modules/comment.views.inc:167 -msgid "View link" -msgstr "Podgląd" - -#: modules/comment.views.inc:168 -msgid "Provide a simple link to view the comment." -msgstr "Dostarcza prosty odnośnik do podglądania komentarzy." - -#: modules/comment.views.inc:176 -#: modules/node.views.inc:231 -#: modules/user.views.inc:204 -msgid "Edit link" -msgstr "Edytuj" - -#: modules/comment.views.inc:177 -msgid "Provide a simple link to edit the comment." -msgstr "Dostarcza prosty odnośnik do edycji komentarzy" - -#: modules/comment.views.inc:185 -#: modules/node.views.inc:239;461 -#: modules/user.views.inc:212 -msgid "Delete link" -msgstr "Usuń" - -#: modules/comment.views.inc:186 -msgid "Provide a simple link to delete the comment." -msgstr "Dostarcza prosty odnośnik do usuwania komentarzy." - -#: modules/comment.views.inc:194 -msgid "Reply-to link" -msgstr "link Odpowiedz" - -#: modules/comment.views.inc:195 -msgid "Provide a simple link to reply to the comment." -msgstr "Dostarcza prosty odnośnik do odpowiedzi na komentarze." - -#: modules/comment.views.inc:203 -msgid "Display the depth of the comment if it is threaded." -msgstr "Wyświetl głebokość komentarzy gdy są w wątku." - -#: modules/comment.views.inc:207 -msgid "Thread" -msgstr "Wątek" - -#: modules/comment.views.inc:208 -msgid "Sort by the threaded order. This will keep child comments together with their parents." -msgstr "Sortuj w kolejności wątków. To pomoże trzymać podrzędne komentarze wraz z nadrzędnymi razem." - -#: modules/comment.views.inc:214 -#: modules/node.views.inc:1413 -msgid "Node ID" -msgstr "ID segmentu (Node ID)" - -#: modules/comment.views.inc:215 -msgid "The node the comment is a reply to." -msgstr "Segment do którego ten komentarz jest odpowiedzią." - -#: modules/comment.views.inc:220;253 -#: modules/node.views.inc:24;29;89;347;362;473;1178;1187;1197 -msgid "Node" -msgstr "Segment" - -#: modules/comment.views.inc:225 -msgid "User ID" -msgstr "ID użytkownika (User ID)" - -#: modules/comment.views.inc:226 -msgid "The user who wrote the comment." -msgstr "Użytkownik który napisał komentarz." - -#: modules/comment.views.inc:231 -#: modules/node.views.inc:335 -#: modules/statistics.views.inc:201 -#: modules/user.views.inc:23;27;221 -msgid "User" -msgstr "Użytkownik" - -#: modules/comment.views.inc:236 -msgid "Parent CID" -msgstr "CID rodzica (Parent CID)" - -#: modules/comment.views.inc:237 -msgid "The Comment ID of the parent comment." -msgstr "ID komentarza (Comment ID) nadrzędnego komentarza." - -#: modules/comment.views.inc:245 -msgid "Parent comment" -msgstr "Poprzednia odpowiedź" - -#: modules/comment.views.inc:266 -msgid "Last comment time" -msgstr "Ostatnio komentowane" - -#: modules/comment.views.inc:267 -msgid "Date and time of when the last comment was posted." -msgstr "Data i czas ostatniego komentarza." - -#: modules/comment.views.inc:282 -msgid "Last comment author" -msgstr "Autor ostatniego komentarza" - -#: modules/comment.views.inc:283 -msgid "The name of the author of the last posted comment." -msgstr "Dane autora ostatniego komentarza." - -#: modules/comment.views.inc:295 -msgid "Comment count" -msgstr "Liczba komentarzy" - -#: modules/comment.views.inc:296 -msgid "The number of comments a node has." -msgstr "Liczba komentarzy dla segmentu." - -#: modules/comment.views.inc:314 -msgid "Updated/commented date" -msgstr "Data aktualizacji/komentarza" - -#: modules/comment.views.inc:315 -msgid "The most recent of last comment posted or node updated time." -msgstr "Ostatni czas modyfikacji segmentu lub nadesłania komentarza." - -#: modules/comment.views.inc:338 -msgid "New comments" -msgstr "Nowe komentarze" - -#: modules/comment.views.inc:339 -msgid "The number of new comments on the node." -msgstr "Liczba nowych komentarzy w segmencie." - -#: modules/comment.views.inc:347 -msgid "Comment status" -msgstr "Status komentarza" - -#: modules/comment.views.inc:348 -msgid "Whether comments are enabled or disabled on the node." -msgstr "Czy komentarze w segmencie mają być włączone czy też nie." - -#: modules/comment.views.inc:362 -msgid "User posted or commented" -msgstr "Użytkownik nadesłał lub komentował" - -#: modules/comment.views.inc:363 -msgid "Display comments only if a user posted the node or commented on the node." -msgstr "Wyświetl komentarze jedynie gdy użytkownik wysłał lub komentował segment." - -#: modules/comment.views.inc:383 -msgid "Display the comment with standard comment view." -msgstr "Wyświetl komentarz w standardowym widoku komentarza." - -#: modules/comment.views.inc:392 -msgid "Display the comment as RSS." -msgstr "Wyświetl komentarz jako kanał RSS." - -#: modules/comment.views.inc:462 -msgid "Link this field to its comment" -msgstr "Podlinkuj to pole do jego komentarza" - -#: modules/comment.views.inc:506 -msgid "Link this field to its user or an author's homepage" -msgstr "Podlinkuj to pole do jego użytkownika lub strony domowej autora" - -#: modules/comment.views.inc:553 -#: modules/node.views.inc:601 -#: modules/user.views.inc:447 -msgid "Text to display" -msgstr "Tekst do wyświetlenia" - -#: modules/comment.views.inc:564 -#: modules/node.views.inc:612 -#: modules/user.views.inc:463 -msgid "view" -msgstr "przeglądaj" - -#: modules/comment.views.inc:589 -#: modules/node.views.inc:643 -#: modules/user.views.inc:481 -msgid "edit" -msgstr "edytuj" - -#: modules/comment.views.inc:605 -#: modules/node.views.inc:673;752 -#: modules/user.views.inc:499 -msgid "delete" -msgstr "usuń" - -#: modules/comment.views.inc:621 -msgid "reply" -msgstr "powtórz" - -#: modules/comment.views.inc:764 -msgid "Link this field to new comments" -msgstr "Podlinkuj to pole do \"nowe komentarze\"" - -#: modules/comment.views.inc:769 -msgid "Display nothing if no new comments" -msgstr "Nie wyświetlaj nic, gdy nie ma odpowiedzi" - -#: modules/comment.views.inc:836 -#: modules/user.views.inc:606 -msgid "Anonymous" -msgstr "Anonimowy" - -#: modules/comment.views.inc:842 -msgid "No user" -msgstr "Brak użytkownika" - -#: modules/comment.views.inc:878;895 -msgid "Disabled" -msgstr "Wyłączone" - -#: modules/comment.views.inc:880;896 -msgid "Read only" -msgstr "Tylko do odczytu" - -#: modules/comment.views.inc:882;897 -msgid "Read/Write" -msgstr "Odczyt/Zapis" - -#: modules/comment.views.inc:917 -#: modules/node.views.inc:1235 -msgid "Display links" -msgstr "Wyświetlaj odnosniki" - -#: modules/node.views.inc:30 -msgid "Nodes are a Drupal site's primary content." -msgstr "Segmenty są główną zawartością stron w Drupalu." - -#: modules/node.views.inc:57 -msgid "Nid" -msgstr "Nid" - -#: modules/node.views.inc:58 -msgid "The node ID of the node." -msgstr "ID segmentu" - -#: modules/node.views.inc:85;403 -msgid "The title of the node." -msgstr "Tytuł segmentu." - -#: modules/node.views.inc:108 -msgid "The date the node was posted." -msgstr "Data wysłania segmentu." - -#: modules/node.views.inc:123 -msgid "Updated date" -msgstr "Data uaktualnienia" - -#: modules/node.views.inc:124 -msgid "The date the node was last updated." -msgstr "Data ostatniej aktualizacji segmentu." - -#: modules/node.views.inc:140 -msgid "The type of a node (for example, \"blog entry\", \"forum post\", \"story\", etc)." -msgstr "Typ segmentu (np. \"blog entry\", \"forum post\", \"story\", etc)." - -#: modules/node.views.inc:158;166;180 -#: modules/upload.views.inc:74 -msgid "Published" -msgstr "Opublikowany" - -#: modules/node.views.inc:159 -msgid "The published status of the node." -msgstr "Opublikowany status segmentu." - -#: modules/node.views.inc:175 -msgid "Published or admin" -msgstr "Opublikowany albo tryb administracji" - -#: modules/node.views.inc:176 -msgid "Filters out unpublished nodes if the current user cannot view them." -msgstr "Filtruje nieopublikowane segmenty jeśli dany użytkownik nie może ich przeglądać." - -#: modules/node.views.inc:186;194 -msgid "Promoted to front page" -msgstr "Promowany na stronie głównej" - -#: modules/node.views.inc:187 -msgid "The front page of the node." -msgstr "Strona główna segmentu." - -#: modules/node.views.inc:203;212 -msgid "Sticky" -msgstr "Przyklejony" - -#: modules/node.views.inc:204 -msgid "Whether or not the node is sticky." -msgstr "Czy segment ma być przyklejony czy nie." - -#: modules/node.views.inc:223 -msgid "Link" -msgstr "Odnośnik" - -#: modules/node.views.inc:224 -msgid "Provide a simple link to the node." -msgstr "Dostarcza prosty odnosnik do segmentu." - -#: modules/node.views.inc:232 -msgid "Provide a simple link to edit the node." -msgstr "Dostarcza prosty odnośnik do edytowania segmentu." - -#: modules/node.views.inc:240 -msgid "Provide a simple link to delete the node." -msgstr "Dostarcza prosty odnosnik do kasowania segmentu." - -#: modules/node.views.inc:248;1115 -msgid "Language" -msgstr "Język" - -#: modules/node.views.inc:249 -msgid "The language the content is in." -msgstr "Język w jakim jest treść." - -#: modules/node.views.inc:266;437 -#: modules/user.views.inc:125 -msgid "Created date" -msgstr "Data utworzenia" - -#: modules/node.views.inc:267 -msgid "In the form of CCYYMMDD." -msgstr "Format danych: CCYYMMDD" - -#: modules/node.views.inc:275 -msgid "Created year + month" -msgstr "Rok i miesiąc utworzenia" - -#: modules/node.views.inc:276 -msgid "In the form of YYYYMM." -msgstr "Format danych: YYYYMM." - -#: modules/node.views.inc:284 -msgid "Created year" -msgstr "Rok utworzenia" - -#: modules/node.views.inc:285 -msgid "In the form of YYYY." -msgstr "Format danych YYYY" - -#: modules/node.views.inc:293 -msgid "Created month" -msgstr "Miesiąc utworzenia" - -#: modules/node.views.inc:294 -msgid "In the form of MM (01 - 12)." -msgstr "Format danych MM (01 - 12)." - -#: modules/node.views.inc:302 -msgid "Created week" -msgstr "Tydzień utworzenia" - -#: modules/node.views.inc:303 -msgid "In the form of WW (01 - 53)." -msgstr "Format danych WW(01 - 53)." - -#: modules/node.views.inc:315;320 -msgid "Node revision" -msgstr "Wersja segmentu" - -#: modules/node.views.inc:321 -msgid "Node revisions are a history of changes to nodes." -msgstr "Wersje segmentu są historią zmian w nich." - -#: modules/node.views.inc:336 -msgid "Relate a node revision to the user who created the revision." -msgstr "Powiązuje wersje segmentu z użytkownikiem który stworzył wersje." - -#: modules/node.views.inc:341 -msgid "user" -msgstr "użytkownik" - -#: modules/node.views.inc:349 -msgid "The actual, full data in the body field; this may not be valid data on all node types." -msgstr "Faktyczna, pełne dane w polu treści; Mogą nie być właściwe dla wszystkich segmentów." - -#: modules/node.views.inc:363 -msgid "Teaser" -msgstr "Skrót" - -#: modules/node.views.inc:364 -msgid "The stored teaser field. This may not be valid or useful data on all node types." -msgstr "Pole przechowywania skrótu. Nie poleca się przechowywania pożytecznych danych we wszystkich segmentach." - -#: modules/node.views.inc:377 -msgid "Vid" -msgstr "Vid" - -#: modules/node.views.inc:378 -msgid "The revision ID of the node revision." -msgstr "ID wersji wersji segmentu." - -#: modules/node.views.inc:423 -msgid "Log message" -msgstr "Dziennik wiadomości" - -#: modules/node.views.inc:424 -msgid "The log message entered when the revision was created." -msgstr "Wiadomość wprowadzona do dziennika w momencie utworzenia wersji." - -#: modules/node.views.inc:438 -msgid "The date the node revision was created." -msgstr "Data stworzenia wersji dla segmentu." - -#: modules/node.views.inc:453 -msgid "Revert link" -msgstr "Powrót" - -#: modules/node.views.inc:454 -msgid "Provide a simple link to revert to the revision." -msgstr "Dostarcza prosty odnośnik do powrotu do poprzedniej wersji." - -#: modules/node.views.inc:462 -msgid "Provide a simple link to delete the node revision." -msgstr "Dostarcza prosty odnośnik do kasowania wersji segmentu." - -#: modules/node.views.inc:489 -msgid "Has new content" -msgstr "Ma nową zawartość" - -#: modules/node.views.inc:492 -msgid "Show a marker if the node has new or updated content." -msgstr "Oznacza, jeśli segment jest nowy lub zawiera nową treść." - -#: modules/node.views.inc:495 -msgid "Show only nodes that have new content." -msgstr "Pokazuj tylko te segmenty, które maja nową zawartość." - -#: modules/node.views.inc:528 -msgid "Link this field to its node" -msgstr "Odnieś to pole do segmentu" - -#: modules/node.views.inc:713 -msgid "revert" -msgstr "powrót" - -#: modules/node.views.inc:788 -msgid "Check for new comments as well" -msgstr "Sprawdzaj również dla nowych odpowiedzi" - -#: modules/node.views.inc:860 -msgid "Unknown node type" -msgstr "Nieznany typ segmentu" - -#: modules/node.views.inc:1043 -msgid "Week @week" -msgstr "Tydzień @week" - -#: modules/node.views.inc:1055 -msgid "Node type" -msgstr "Typ segmentu" - -#: modules/node.views.inc:1116 -msgid "Current user's language" -msgstr "Bieżący język użytkownika." - -#: modules/node.views.inc:1116 -msgid "No language" -msgstr "Brak języka" - -#: modules/node.views.inc:1166 -msgid "Unknown language" -msgstr "Nieznany język" - -#: modules/node.views.inc:1179;1188 -msgid "Display the node with standard node view." -msgstr "Wyświetlaj segment widokiem standardowym." - -#: modules/node.views.inc:1203 -msgid "Node ID from URL" -msgstr "ID segmentu z URLa" - -#: modules/node.views.inc:1230 -msgid "Display only teaser" -msgstr "Wyświetlaj tylko skrót" - -#: modules/node.views.inc:1291 -msgid "Full text" -msgstr "Pełen tekst" - -#: modules/node.views.inc:1292 -msgid "Title plus teaser" -msgstr "Tytuł i skrót" - -#: modules/node.views.inc:1293 -msgid "Title only" -msgstr "Tylko tytuł" - -#: modules/node.views.inc:1294 -msgid "Use default RSS settings" -msgstr "Użyj domyślnych ustawień RSS" - -#: modules/node.views.inc:1360 -msgid "read more" -msgstr "czytaj więcej" - -#: modules/node.views.inc:1393 -msgid "Types" -msgstr "Typy" - -#: modules/node.views.inc:1396 -msgid "If you wish to validate for specific node types, check them; if none are checked, all nodes will pass." -msgstr "Zaznacz, jeśli chcesz sprawdzać poprawność dla konkretnego typu segmentu. Gdy nie znaznaczysz - wszystkie segmenty będą sprawdzane." - -#: modules/node.views.inc:1403 -msgid "Validate user has access to the node" -msgstr "Sprawdza czy użytkownik ma dostęp do segmentu" - -#: modules/node.views.inc:1411 -#: modules/taxonomy.views.inc:1044 -msgid "Argument type" -msgstr "Typ argumentu" - -#: modules/node.views.inc:1414 -msgid "Node IDs separated by , or +" -msgstr "ID Segmentów oddzielone przez , lub + " - -#: modules/node.views.inc:1533 -msgid "Display %display has no access control but does not contain a filter for published nodes." -msgstr "Podgląd %display nie ma dostępu ale i nie zawiera filtrów do publikacji segmentów." - -#: modules/poll.views.inc:23 -msgid "Poll" -msgstr "Ankieta" - -#: modules/poll.views.inc:38;47 -#: modules/user.views.inc:173;182 -msgid "Active" -msgstr "Aktywny/e" - -#: modules/poll.views.inc:39 -msgid "Whether the poll is open for voting." -msgstr "Czy ankieta jest otwarta do głosowania." - -#: modules/profile.views.inc:20;40 -msgid "Profile" -msgstr "Profil" - -#: modules/profile.views.inc:100 -msgid "@field-name" -msgstr "@firld-name" - -#: modules/profile.views.inc:107 -msgid "Profile textfield" -msgstr "Profil pola tekstowego" - -#: modules/profile.views.inc:126 -msgid "Profile textarea" -msgstr "Profil obszaru tekstowego" - -#: modules/profile.views.inc:142 -msgid "Profile checkbox" -msgstr "Profil checkboxa" - -#: modules/profile.views.inc:159 -msgid "Profile URL" -msgstr "Profil URLa" - -#: modules/profile.views.inc:175 -msgid "Profile selection" -msgstr "Profil wyboru" - -#: modules/profile.views.inc:195 -msgid "Profile freeform list %field-name." -msgstr "Lista profilu %field-name." - -#: modules/profile.views.inc:207 -msgid "Profile date %field-name." -msgstr "Data profilu %field-name." - -#: modules/search.views.inc:23;77;88;106;172;247 -msgid "Search" -msgstr "Szukaj" - -#: modules/search.views.inc:72 -msgid "Score" -msgstr "Punkty" - -#: modules/search.views.inc:73 -msgid "The score of the search item." -msgstr "Ilość trafień " - -#: modules/search.views.inc:95 -msgid "Links from" -msgstr "Odnośniki z" - -#: modules/search.views.inc:96 -msgid "Nodes that link from the node." -msgstr "segmenty odnoszące z segmentu." - -#: modules/search.views.inc:113 -msgid "Links to" -msgstr "Odnosniki do" - -#: modules/search.views.inc:114 -msgid "Nodes that link to the node." -msgstr "segmenty odnoszące się do segmentu." - -#: modules/search.views.inc:125 -msgid "Search Terms" -msgstr "Szukane wyrażenia" - -#: modules/search.views.inc:126 -msgid "The terms to search for." -msgstr "Lista szukanych wyrażeń" - -#: modules/search.views.inc:156 -msgid "On empty input" -msgstr "Na puste wejście" - -#: modules/search.views.inc:159 -msgid "Show All" -msgstr "Pokaż wszystko" - -#: modules/search.views.inc:160 -msgid "Show None" -msgstr "Nic nie pokazuj" - -#: modules/search.views.inc:175 -msgid "Enter the terms you wish to search for." -msgstr "Wpisz terminy których szukasz." - -#: modules/search.views.inc:190 -msgid "You must include at least one positive keyword with @count characters or more." -msgstr "Musisz wstawić przynajmniej jedno właściwe słowo z @count znakami lub więcej. " - -#: modules/search.views.inc:194 -msgid "Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>." -msgstr "Wyszukiwanie dla obu wyrażeń wpisujemy wielkimi literami <strong>OR</strong>. Na przykład, <strong> koty OR psy</strong>." - -#: modules/search.views.inc:248 -msgid "Display the results with standard search view." -msgstr "Wyświetl wyniki za pomocą widoku standardowego wyszukiwania." - -#: modules/search.views.inc:274 -msgid "Display score" -msgstr "Wyświetl wynik" - -#: modules/statistics.views.inc:24 -msgid "Node statistics" -msgstr "Statystyki segmentu" - -#: modules/statistics.views.inc:36 -msgid "Total views" -msgstr "Wszystkie odwiedziny" - -#: modules/statistics.views.inc:37 -msgid "The total number of times the node has been viewed." -msgstr "Ogolna liczba wizyt dla segmentu." - -#: modules/statistics.views.inc:53 -msgid "Views today" -msgstr "Wizyt dzisiaj" - -#: modules/statistics.views.inc:54 -msgid "The total number of times the node has been viewed today." -msgstr "Całkowita liczba wyświetleń segmentu dzisiaj." - -#: modules/statistics.views.inc:70 -msgid "Most recent view" -msgstr "Najczęściej odwiedzane" - -#: modules/statistics.views.inc:71 -msgid "The most recent time the node has been viewed." -msgstr "Ostatni czas kiedy segment był przeglądany." - -#: modules/statistics.views.inc:86;91 -msgid "Access log" -msgstr "Dziennik dostępu" - -#: modules/statistics.views.inc:92 -msgid "Stores site access information." -msgstr "Przechowuje informacje o dostępie do strony." - -#: modules/statistics.views.inc:106 -msgid "Session ID" -msgstr "ID Sesji (Session ID)" - -#: modules/statistics.views.inc:107 -msgid "Browser session ID of user that visited page." -msgstr "ID Sesji przeglądarki użytkownika odwiedzającego stronę." - -#: modules/statistics.views.inc:126 -msgid "Page title" -msgstr "Tytuł strony" - -#: modules/statistics.views.inc:127 -msgid "Title of page visited." -msgstr "Tytuł odwiedzonej strony." - -#: modules/statistics.views.inc:147 -msgid "Internal path to page visited (relative to Drupal root.)" -msgstr "Wewnetrzna scieżka strony (relatywna do głównej Drupala)." - -#: modules/statistics.views.inc:166 -msgid "Referrer" -msgstr "Odwołuje się" - -#: modules/statistics.views.inc:167 -msgid "Referrer URI." -msgstr "Odwołuje się do URLa" - -#: modules/statistics.views.inc:182 -msgid "Hostname" -msgstr "Hostname" - -#: modules/statistics.views.inc:183 -msgid "Hostname of user that visited the page." -msgstr "Nazwy hostów użytkowników którzy odwiedzili stronę." - -#: modules/statistics.views.inc:202 -msgid "The user who visited the site." -msgstr "Użytkownik który odwiedził witrynę." - -#: modules/statistics.views.inc:212 -msgid "Timer" -msgstr "Czasomierz (Timer)" - -#: modules/statistics.views.inc:213 -msgid "Time in milliseconds that the page took to load." -msgstr "Czas ładowania strony w milisekundach." - -#: modules/statistics.views.inc:228 -msgid "Timestamp" -msgstr "Timestamp" - -#: modules/statistics.views.inc:229 -msgid "Timestamp of when the page was visited." -msgstr "Znacznik czasu wizyty strony." - -#: modules/system.views.inc:25;30 -msgid "File" -msgstr "Plik" - -#: modules/system.views.inc:31 -msgid "Files maintained by Drupal and various modules." -msgstr "Pliki zarządzane przez Drupala i różne moduły." - -#: modules/system.views.inc:49 -msgid "File ID" -msgstr "ID pliku (File ID)" - -#: modules/system.views.inc:50 -msgid "The ID of the file." -msgstr "ID pliku" - -#: modules/system.views.inc:70 -msgid "The name of the file." -msgstr "Nazwa pliku." - -#: modules/system.views.inc:89 -msgid "The path of the file." -msgstr "Ścieżka pliku." - -#: modules/system.views.inc:107 -msgid "Mime type" -msgstr "Mime type" - -#: modules/system.views.inc:108 -msgid "The mime type of the file." -msgstr "\"mime type\" pliku." - -#: modules/system.views.inc:126 -msgid "Size" -msgstr "Rozmiar" - -#: modules/system.views.inc:127 -msgid "The size of the file." -msgstr "Rozmiar pliku." - -#: modules/system.views.inc:142 -msgid "Status" -msgstr "Status" - -#: modules/system.views.inc:143 -msgid "The status of the file." -msgstr "Status pliku." - -#: modules/system.views.inc:158 -msgid "Upload date" -msgstr "Data dodania" - -#: modules/system.views.inc:159 -msgid "The date the file was uploaded." -msgstr "Data dodania pliku." - -#: modules/system.views.inc:204 -#: modules/upload.views.inc:145;216 -msgid "Link this field to download the file" -msgstr "Podlinkuj to pole do \"pobierz plik\"" - -#: modules/system.views.inc:231 -msgid "Temporary" -msgstr "Stały/e" - -#: modules/system.views.inc:232 -msgid "Permanent" -msgstr "Stały/e" - -#: modules/system.views.inc:278 -msgid "No title" -msgstr "Brak tytułu" - -#: modules/taxonomy.views.inc:24;73;143;161;219;255;298;309 -msgid "Taxonomy" -msgstr "Taxonomia" - -#: modules/taxonomy.views.inc:54 -msgid "Vocabulary name" -msgstr "Nazwa słownika" - -#: modules/taxonomy.views.inc:56 -msgid "Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the \"Taxonomy: Term\" field is; and can similarly cause duplicates." -msgstr "Nazwa słownika w którym znajduje się wyrażenie. To będzie słownik dla któregokolwiek wyrażenia pola \"Taksonomia: wyrażenie\"; i może powodować powstawanie duplikatów." - -#: modules/taxonomy.views.inc:62 -msgid "Vocabulary ID" -msgstr "ID Słownika (Vocabluary ID)" - -#: modules/taxonomy.views.inc:63 -msgid "The taxonomy vocabulary ID" -msgstr "ID słownika w taksonomi" - -#: modules/taxonomy.views.inc:76;107 -msgid "Term" -msgstr "Wyrażenie" - -#: modules/taxonomy.views.inc:77 -msgid "Taxonomy terms are attached to nodes." -msgstr "Wyrażenia Taxonomi dołączone do segmentów." - -#: modules/taxonomy.views.inc:108 -msgid "Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the resultset." -msgstr "Wyrażenia z taksonomi. Uwaga może to powodować duplikaty segmentów pojawiające się w widokach; Musisz dodać filtry by zredukować ilość wyników tamże." - -#: modules/taxonomy.views.inc:118 -msgid "Taxonomy term name" -msgstr "Nazwa wyrażenia w taxonomi" - -#: modules/taxonomy.views.inc:127 -msgid "The term weight field" -msgstr "Pole wagi wyrażenia" - -#: modules/taxonomy.views.inc:139 -msgid "Term description" -msgstr "Opis wyrażenia" - -#: modules/taxonomy.views.inc:140 -msgid "The description associated with a taxonomy term." -msgstr "Opis powiązany z wyrażeniem taxonomi." - -#: modules/taxonomy.views.inc:151;763 -msgid "Vocabulary" -msgstr "Słownik" - -#: modules/taxonomy.views.inc:152 -msgid "Filter the results of \"Taxonomy: Term\" to a particular vocabulary." -msgstr "Ogranicza wyniki \"Taksonomia: wyrażenie\" do konkretnego słownika." - -#: modules/taxonomy.views.inc:193;1046 -msgid "Term ID" -msgstr "ID Wyrażenia" - -#: modules/taxonomy.views.inc:194 -msgid "The taxonomy term ID" -msgstr "ID wyrażenia w taxonomi" - -#: modules/taxonomy.views.inc:196 -msgid "All terms" -msgstr "Wszystkie wyrażenia" - -#: modules/taxonomy.views.inc:197 -msgid "Display all taxonomy terms associated with a node." -msgstr "Wyświetl wszystkie wyrażenia Taxonomi powiązane z segmentem." - -#: modules/taxonomy.views.inc:282 -msgid "Term synonym" -msgstr "Synonim wyrażenia" - -#: modules/taxonomy.views.inc:283 -msgid "Term synonyms may be used to find terms by alternate names." -msgstr "Synonimy mogą być używane do znajdowania wyrażenia jako alternatywa." - -#: modules/taxonomy.views.inc:299 -msgid "Term ID (with depth)" -msgstr "ID Wyrażenia (z głębokością)" - -#: modules/taxonomy.views.inc:300 -msgid "The depth filter is more complex, so provides fewer options." -msgstr "Filtr głębokości jest bardziej kompleksowy (complex), dlatego udostępnia mniej opcji." - -#: modules/taxonomy.views.inc:310 -msgid "Term ID depth modifier" -msgstr "Modyfikator głębokości Identyfikatora wyrażenia" - -#: modules/taxonomy.views.inc:311 -msgid "Allows the \"depth\" for Taxonomy: Term ID (with depth) to be modified via an additional argument." -msgstr "Zezwala na modyfikowanie \"głębokość\" dla Taksonomi: ID wyrażenia (z głębokością) poprzez dodatkowy argument." - -#: modules/taxonomy.views.inc:341 -msgid "The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term \"fruit\" and a child term \"apple\", with a depth of 1 (or higher) then filtering for the term \"fruit\" will get nodes that are tagged with \"apple\" as well as \"fruit\". If negative, the reverse is true; searching for \"apple\" will also pick up nodes tagged with \"fruit\" if depth is -1 (or lower)." -msgstr "Głębokość dopasuje segmenty oznaczone w hierarchi. Na przykład, jeśli masz wyrażenie \"owoc\" i jego dziecko - wyrażenie \"jabłko\", z głębokością 1 (lub wyższą) wtedy filtrowanie dla wyrażenia \"owoc\" zbierze razem segmenty oznaczone zarówno jako \"jabłko\" jak i \"owoc\". Działa to również w drugą stronę; jeśli głębokość jest -1 (lub niższa) szukając \"jabłko\" zbierzemy razem segmenty oznaczone jako \"owoc\" " - -#: modules/taxonomy.views.inc:346 -msgid "Allow multiple terms per argument" -msgstr "Pozwól na wiele wyrażeń przypadających na argument" - -#: modules/taxonomy.views.inc:347 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this argument." -msgstr "Gdy zaznaczone, użytkownicy będą mogli wprowadzać wiele argumentów w postaci 1+2+3. W związku z wymaganą przez to liczbą złączeń (JOINs), \"'oraz\" (AND) będą traktowane jako \"lub\" (OR)." - -#: modules/taxonomy.views.inc:353;978 -msgid "Set the breadcrumb for the term parents" -msgstr " Ustaw trop dla wyrażeń nadrzędnych" - -#: modules/taxonomy.views.inc:354;979 -msgid "If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received." -msgstr "Jeśli zaznaczone, trop będzie zawierał wszystkie wyrażenia nadrzędne (parents), każde odnoszące się do tego widoku. Uwaga, działa gdy otrzymano tylko jedno wyrażenie." - -#: modules/taxonomy.views.inc:440;685 -msgid "No name" -msgstr "Brak nazwy" - -#: modules/taxonomy.views.inc:551 -msgid "Link this field to its term page" -msgstr "Podlinkuj to pole do jego strony wyrażeń" - -#: modules/taxonomy.views.inc:558 -msgid "Limit terms by vocabulary" -msgstr "Ogranicz wyrażenia do słownika" - -#: modules/taxonomy.views.inc:572;1034 -msgid "Vocabularies" -msgstr "Słowniki" - -#: modules/taxonomy.views.inc:645 -msgid "Link this field to its taxonomy term page" -msgstr "Odnosnik do strony z listą wyrażeń taksonomi" - -#: modules/taxonomy.views.inc:721 -msgid "No vocabulary" -msgstr "Brak słownika" - -#: modules/taxonomy.views.inc:765 -msgid "Select which vocabulary to show terms for in the regular options." -msgstr "Wybierz, który ze słowników ma wyświetlać wyrażenia" - -#: modules/taxonomy.views.inc:775 -msgid "Selection type" -msgstr "Typ wyboru" - -#: modules/taxonomy.views.inc:776 -msgid "Dropdown" -msgstr "Rozwiń" - -#: modules/taxonomy.views.inc:776 -msgid "Autocomplete" -msgstr "Autouzupełnianie" - -#: modules/taxonomy.views.inc:782 -msgid "Show hierarchy in dropdown" -msgstr "Pokaż hierarchie jako menu rozwijane." - -#: modules/taxonomy.views.inc:799 -msgid "An invalid vocabulary is selected. Please change it in the options." -msgstr "Wybrano niewłaściwy słownik. Wybierz inny." - -#: modules/taxonomy.views.inc:817;851 -msgid "Select terms from vocabulary @voc" -msgstr "Wybierz wyrażenia ze słownika @voc " - -#: modules/taxonomy.views.inc:1012 -msgid "Taxonomy term" -msgstr "Wyrażenia taksonomi" - -#: modules/taxonomy.views.inc:1037 -msgid "If you wish to validate for specific vocabularies, check them; if none are checked, all nodes will pass." -msgstr "Jeśli chcesz sprawdzać poprawność dla określonych słowników - zaznacz; jeśli nie, nie zaznaczaj, wtedy wszystkie segmenty będą sprawdzane." - -#: modules/taxonomy.views.inc:1047 -msgid "Term IDs separated by , or +" -msgstr "ID wrażeń oddzielone , lub +" - -#: modules/taxonomy.views.inc:1048 -msgid "Term name or synonym" -msgstr "Nazwa wyrazenia lub synonim" - -#: modules/taxonomy.views.inc:1049 -msgid "Term name/synonym converted to Term ID" -msgstr "Wyrażenie/synonim skonwertowany do ID Wyrażenia (Term ID)" - -#: modules/taxonomy.views.inc:1052 -msgid "Select the form of this argument; if using term name, it is generally more efficient to convert it to a term ID and use Taxonomy: Term ID rather than Taxonomy: Term Name\" as an argument." -msgstr " " - -#: modules/taxonomy.views.inc:937 -msgid "Unable to find term: @terms" -msgid_plural "Unable to find terms: @terms" -msgstr[0] "Nie znaleziono wyrażenia: @terms" -msgstr[1] "Nie znaleziono wyrażeń: @terms" -msgstr[2] "Nie znaleziono wyrażeń: @terms" - -#: modules/upload.views.inc:25 -msgid "Upload" -msgstr "Dodaj plik" - -#: modules/upload.views.inc:49 -msgid "The description of the uploaded file." -msgstr "Opis wgranego pliku." - -#: modules/upload.views.inc:66 -msgid "Listed" -msgstr "Wylistowany" - -#: modules/upload.views.inc:67 -msgid "Whether or not the file is marked to be listed." -msgstr "Czy pliki mają być wylistowane czy też nie." - -#: modules/upload.views.inc:83 -msgid "The weight, used for sorting." -msgstr "Waga użytego sortowania." - -#: modules/upload.views.inc:101;113 -msgid "Attached files" -msgstr "Dołączone pliki" - -#: modules/upload.views.inc:102 -msgid "All files attached to a node with upload.module." -msgstr "Wszystkie pliki dołączone do segmentu z upload.module." - -#: modules/upload.views.inc:109;274 -msgid "Has attached files" -msgstr "Ma dołączone pliki" - -#: modules/upload.views.inc:110 -msgid "Only display items with attached files. This can cause duplicates if there are multiple attached files." -msgstr "Wyświetla tylko elementy z dołączonymi plikami. To może powodować powstawanie duplikatów jeśli jest wiele dołączonych plików." - -#: modules/upload.views.inc:114 -msgid "Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node." -msgstr "Dodaj zależności zyskujące dostęp do plików danych załadowanych przez upload.module. Uwaga, ta zalezność może spowodować pojawienie się duplikatów wielu plików dołączonych do segmentu." - -#: modules/upload.views.inc:120 -msgid "Files" -msgstr "Pliki" - -#: modules/upload.views.inc:151 -msgid "Only show \"listed\" file attachments" -msgstr "Pokazuj tylko załączniki \"listed\"" - -#: modules/user.views.inc:28 -msgid "Users who have created accounts on your site." -msgstr "Użytkownicy którzy założyli konto na Twojej witrynie." - -#: modules/user.views.inc:48 -msgid "Uid" -msgstr "Uid" - -#: modules/user.views.inc:49 -msgid "The user ID" -msgstr "ID użytkownika" - -#: modules/user.views.inc:70 -msgid "Current" -msgstr "Bieżący" - -#: modules/user.views.inc:71 -msgid "Filter the view to the currently logged in user." -msgstr "Filtr do przeglądania obecnie zalogowanych użytkowników." - -#: modules/user.views.inc:80 -msgid "The user or author name." -msgstr "Użytkownik lub dane autora" - -#: modules/user.views.inc:96 -msgid "E-mail" -msgstr "E-mail" - -#: modules/user.views.inc:97 -msgid "Email address for a given user. Only accessible to users with <em>administer users</em> permission" -msgstr "Adres e-mail dla danego użytkownika. Dostępne tylko dla użytkowników z prawami administratora." - -#: modules/user.views.inc:114 -msgid "Picture" -msgstr "Obraz" - -#: modules/user.views.inc:115 -msgid "The user's picture, if allowed." -msgstr "Obrzy użytkownika, jeśli dozwolone." - -#: modules/user.views.inc:126 -msgid "The date the user was created." -msgstr "Data stworzenia użytkownika." - -#: modules/user.views.inc:141 -msgid "Last access" -msgstr "Ostatni dostęp" - -#: modules/user.views.inc:142 -msgid "The user's last access date." -msgstr "Data ostatniego dostępu użytkownika." - -#: modules/user.views.inc:157 -msgid "Last login" -msgstr "Ostatni login" - -#: modules/user.views.inc:158 -msgid "The user's last login date." -msgstr "Data ostatniego loginu użytkownika." - -#: modules/user.views.inc:174 -msgid "Whether a user is active or blocked." -msgstr "Czy użytkownik jest aktywny, czy zablokowany." - -#: modules/user.views.inc:191 -msgid "Signature" -msgstr "Podpis" - -#: modules/user.views.inc:192 -msgid "The user's signature." -msgstr "Podpis użytkownika" - -#: modules/user.views.inc:205 -msgid "Provide a simple link to edit the user." -msgstr "Dostarcza prosty odnośnik do edycji użytkownika." - -#: modules/user.views.inc:213 -msgid "Provide a simple link to delete the user." -msgstr "Dostarcza prosty odnośnik do usunięcia użytkownika." - -#: modules/user.views.inc:242 -msgid "Roles" -msgstr "Role" - -#: modules/user.views.inc:243 -msgid "Roles that a user belongs to." -msgstr "Role do których należy użytkownik" - -#: modules/user.views.inc:255 -msgid "No role" -msgstr "Brak roli" - -#: modules/user.views.inc:306 -msgid "User ID from URL" -msgstr "ID użytkownika z URL" - -#: modules/user.views.inc:322 -msgid "Also look for a node and use the node author" -msgstr "Patrz również na segment i użyj jego autora." - -#: modules/user.views.inc:387 -msgid "Link this field to its user" -msgstr "Podlinkuj to pole do użytkownika" - -#: modules/user.views.inc:520 -msgid "Link this field" -msgstr "Podlinkuj to pole" - -#: modules/user.views.inc:523 -msgid "No link" -msgstr "Brak odnośnika" - -#: modules/user.views.inc:524 -msgid "To the user" -msgstr "Dla użytkownika" - -#: modules/user.views.inc:525 -msgid "With a mailto:" -msgstr "Z \"wyślij do:\" (mailto:)" - -#: modules/user.views.inc:643 -msgid "Usernames" -msgstr "Lista użytkowników" - -#: modules/user.views.inc:644 -msgid "Enter a comma separated list of user names." -msgstr "Wprowadź liste użytkowników oddzieloną przecinkami." - -#: modules/user.views.inc:752 -msgid "Is the logged in user" -msgstr "Zalogowany użytkownik" - -#: modules/user.views.inc:710 -msgid "Unable to find user: @users" -msgid_plural "Unable to find users: @users" -msgstr[0] "Nie mogę znaleźć użytkownika: @users" -msgstr[1] "Nie mogę znaleźć użytkowników: @users" -msgstr[2] "Nie mogę znaleźć użytkowników: @users" - -#: modules/views.views.inc:18 -msgid "Global" -msgstr "Globalne" - -#: modules/views.views.inc:23 -msgid "Random" -msgstr "Losowy" - -#: modules/views.views.inc:24 -msgid "Randomize the display order." -msgstr "Losowa kolejność wyświetlania." - -#: modules/views.views.inc:31 -msgid "Null" -msgstr "Null" - -#: modules/views.views.inc:32 -msgid "Allow an argument to be ignored. The query will not be altered by this argument." -msgstr "Zezwól na ignorowanie argumentu. Ten argument nie będzie miał wpływu na zapytanie." - -#: modules/views.views.inc:88 -msgid "Fail basic validation if any argument is given" -msgstr "Zawodzi podstawowe sprawdzanie poprawności jeśli podamy jakikolwiek argument." - -#: modules/views.views.inc:90 -msgid "By checking this field, you can use this to make sure views with more arguments than necessary fail validation." -msgstr "Zaznaczając to pole, używając tego możesz wymusić błąd poprawności dla widoków z większą niż wymaganą liczbą argumentów." - -#: theme/views-more.tpl.php:15 -msgid "more" -msgstr "więcej" - -#: theme/views-ui-edit-item.tpl.php:18 -msgid "None defined" -msgstr "Niezdefiniowane" - -#: theme/views-ui-edit-tab.tpl.php:31 -msgid "View settings" -msgstr "Ustawienia widoków" - -#: theme/views-ui-edit-view.tpl.php:11 -msgid "This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to !break." -msgstr "Ten widok jest edytowany przez !user, dlatego nikt inny w tej chwili nie może go edytować. Blokadę założono !age temu. Kliknij !break aby zlikwidować blokadę." - -#: theme/views-ui-edit-view.tpl.php:16 -msgid "New view" -msgstr "Nowy widok" - -#: theme/views-ui-edit-view.tpl.php:18 -msgid "Changed view" -msgstr "Zmień widok" - -#: theme/views-ui-edit-view.tpl.php:23 -msgid "View %name, displaying items of type <strong>@base</strong>." -msgstr "Widok %name, wyświetlający typy elementów <strong>@base</strong>." - -#: theme/views-ui-edit-view.tpl.php:42 -msgid "Live preview" -msgstr "Podgląd" - -#: theme/views-ui-list-views.tpl.php:17 -msgid "<em>@type</em> @base view: <strong>@view</strong>" -msgstr "<em>@type</em> @base widok: <strong>@view</strong>" - -#: theme/views-ui-list-views.tpl.php:27 -msgid "Title: @title" -msgstr "Tytuł: @title" - -#: theme/views-ui-list-views.tpl.php:30 -msgid "Path: !path" -msgstr "Śćiezka: !path" - -#: theme/theme.inc:90 -msgid "Edit this view" -msgstr "Edytuj widok" - -#: theme/theme.inc:289 -msgid "sort by @s" -msgstr "Sortuj po @s" - -#: theme/theme.inc:490 -msgid "‹‹" -msgstr "‹‹" - -#: theme/theme.inc:491 -msgid "››" -msgstr "››" - -#: theme/theme.inc:501 -msgid "@current of @max" -msgstr "@current z @max" - -#: views_export/views_export.module:76 -msgid "There are no views to be exported at this time." -msgstr "W tym momencie nie ma widoków do eksportu." - -#: views_export/views_export.module:108 -msgid "Show only these tags" -msgstr "Pokazuj tylko te tagi" - -#: views_export/views_export.module:122 -msgid "Module name" -msgstr "Nazwa modułu" - -#: views_export/views_export.module:123 -msgid "Enter the module name to export code to." -msgstr "Wprowadź nazwe modułu dla którego kod ma byś wyeksportowany." - -#: views_export/views_export.module:190 -msgid "Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory" -msgstr "Umieść @module.views_default.inc w swoim katalogu modules/@module lub modules/@module/includes" - -#: views_export/views_export.module:44 -msgid "use views exporter" -msgstr "Użyj eksportera widoków" - -#: views_export/views_export.module:17 -msgid "Bulk export" -msgstr "Hurtowy eksport" - -#: views_export/views_export.module:0 -msgid "views_export" -msgstr "views_export" - -#: views_export/views_export.info:0 -msgid "Views exporter" -msgstr "Eksporter Widoków" - -#: views_export/views_export.info:0 -msgid "Allows exporting multiple views at once." -msgstr "Zezwala na eksportowanie wielu widoków na raz" - diff --git a/sites/all/modules/views/translations/uk.po b/sites/all/modules/views/translations/uk.po deleted file mode 100644 index 3d4697ba8..000000000 --- a/sites/all/modules/views/translations/uk.po +++ /dev/null @@ -1,4863 +0,0 @@ -# Ukrainian translation of Views (all releases) -# Copyright (c) 2009 by the Ukrainian translation team -# -msgid "" -msgstr "" -"Project-Id-Version: Views (all releases)\n" -"POT-Creation-Date: 2009-10-08 19:03+0000\n" -"PO-Revision-Date: 2009-10-08 22:04+0200\n" -"Language-Team: Ukrainian <podarok@ua.fm>\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)!=11))?(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(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 "Home" -msgstr "Головна" - -msgid "Title" -msgstr "Назва" - -msgid "Body" -msgstr "Тіло" - -msgid "Next" -msgstr "Наступний" - -msgid "user" -msgstr "користувач" - -msgid "delete" -msgstr "видалити" - -msgid "Status" -msgstr "Статус" - -msgid "Prefix" -msgstr "Префікс" - -msgid "Suffix" -msgstr "Суфікс" - -msgid "E-mail" -msgstr "Адреса електронної пошти" - -msgid "Delete" -msgstr "Видалити" - -msgid "Submit" -msgstr "Надіслати" - -msgid "Operations" -msgstr "Дії" - -msgid "Value" -msgstr "Значення" - -msgid "Groups" -msgstr "Групи" - -msgid "Group" -msgstr "Група" - -msgid "Type" -msgstr "Тип" - -msgid "Author" -msgstr "Автор" - -msgid "Replies" -msgstr "Відповіді" - -msgid "Last Post" -msgstr "Останнє повідомлення" - -msgid "List" -msgstr "Список" - -msgid "Actions" -msgstr "Дії" - -msgid "Cancel" -msgstr "Скасувати" - -msgid "Remove" -msgstr "Вилучити" - -msgid "Description" -msgstr "Опис" - -msgid "Language" -msgstr "Мова" - -msgid "more" -msgstr "більше" - -msgid "Enable" -msgstr "Ввімкнути" - -msgid "Disable" -msgstr "Вимкнено" - -msgid "Disabled" -msgstr "Вимкнено" - -msgid "Enabled" -msgstr "Ввімкнено" - -msgid "On" -msgstr "Увімкнути" - -msgid "Taxonomy" -msgstr "Таксономія" - -msgid "Yes" -msgstr "Так" - -msgid "No" -msgstr "Ні" - -msgid "Version" -msgstr "Версія" - -msgid "view" -msgstr "переглянути" - -msgid "File" -msgstr "Файл" - -msgid "Tag" -msgstr "Таг" - -msgid "Edit" -msgstr "Редагувати" - -msgid "Size" -msgstr "Розмір" - -msgid "Search" -msgstr "Пошук" - -msgid "Reset" -msgstr "Скинути" - -msgid "None" -msgstr "Жодного" - -msgid "default" -msgstr "типовий" - -msgid "This action cannot be undone." -msgstr "Цю дію не можна буде скасувати." - -msgid "Block settings" -msgstr "Параметри Блоку" - -msgid "Weight" -msgstr "Вага" - -msgid "Link" -msgstr "Посилання" - -msgid "Types" -msgstr "Типи" - -msgid "Hierarchy" -msgstr "Ієрархія" - -msgid "Parent" -msgstr "Попередник" - -msgid "Depth" -msgstr "Глибина" - -msgid "Category" -msgstr "Категорія" - -msgid "Settings" -msgstr "Налаштування" - -msgid "Feed" -msgstr "RSS стрічка" - -msgid "Name" -msgstr "Назва" - -msgid "edit" -msgstr "редагувати" - -msgid "Import" -msgstr "Імпорт" - -msgid "Book" -msgstr "Книга" - -msgid "Export" -msgstr "Експорт" - -msgid "Taxonomy term" -msgstr "Термін таксономії" - -msgid "settings" -msgstr "налаштування" - -msgid "Node ID" -msgstr "Ідентифікатор ноди" - -msgid "Field" -msgstr "Поле" - -msgid "Label" -msgstr "Заголовок" - -msgid "Preview" -msgstr "Перегляд" - -msgid "Save" -msgstr "Зберегти" - -msgid "True" -msgstr "Так" - -msgid "False" -msgstr "Ні" - -msgid "Default" -msgstr "Типовий" - -msgid "Update" -msgstr "Оновити" - -msgid "Top" -msgstr "Вгору" - -msgid "As Link" -msgstr "" - -msgid "Without Link" -msgstr "" - -msgid "Icon" -msgstr "Значок" - -msgid "Views" -msgstr "Views" - -msgid "Access" -msgstr "Доступ" - -msgid "Add" -msgstr "Додати" - -msgid "View" -msgstr "Перегляд" - -msgid "URL" -msgstr "URL" - -msgid "Path" -msgstr "Шлях" - -msgid "Vocabularies" -msgstr "Словники" - -msgid "Display" -msgstr "Відображення" - -msgid "Node type" -msgstr "Тип ноди" - -msgid "Menu" -msgstr "Меню" - -msgid "Teaser" -msgstr "Анонс" - -msgid "never" -msgstr "ніколи" - -msgid "Text" -msgstr "Текст" - -msgid "Theme" -msgstr "Шаблон" - -msgid "read more" -msgstr "докладніше" - -msgid "Timestamp" -msgstr "Мітка часу" - -msgid "ID" -msgstr "Ідентифікатор" - -msgid "Unknown" -msgstr "Невідомо" - -msgid "Attachment" -msgstr "Долучення" - -msgid "Upload" -msgstr "Вивантажити" - -msgid "Picture" -msgstr "Зображення" - -msgid "Before" -msgstr "До" - -msgid "After" -msgstr "Після" - -msgid "User" -msgstr "Користувач" - -msgid "Files" -msgstr "Файли" - -msgid "Error" -msgstr "Помилка" - -msgid "Options" -msgstr "Параметри" - -msgid "Created" -msgstr "Створено" - -msgid "Node" -msgstr "Матеріал" - -msgid "Number of columns" -msgstr "Кількість колонок" - -msgid "Separator" -msgstr "Розділювач" - -msgid "Horizontal" -msgstr "Горизонтально" - -msgid "Vertical" -msgstr "Вертикально" - -msgid "Are you sure you want to delete %title?" -msgstr "Ви дійсно бажаєте стерти %title?" - -msgid "All" -msgstr "Все" - -msgid "Access log" -msgstr "Лоґ доступу" - -msgid "Active" -msgstr "Діючий" - -msgid "Year" -msgstr "Рік" - -msgid "Date format" -msgstr "Формат дати" - -msgid "Page title" -msgstr "Назва сторінки" - -msgid "Block" -msgstr "Блок" - -msgid "Display links" -msgstr "Відображення посилань" - -msgid "View type" -msgstr "Тип Вигляду" - -msgid "Page" -msgstr "Сторінка" - -msgid "Bottom" -msgstr "Донизу" - -msgid "Breadcrumb" -msgstr "" - -msgid "Off" -msgstr "Вимкнено" - -msgid "Header" -msgstr "Заголовок" - -msgid "Footer" -msgstr "Нижній колонтитул" - -msgid "Aggregator category" -msgstr "" - -msgid "Aggregator feed" -msgstr "Стрічка збиральника" - -msgid "Aggregator item" -msgstr "Агрегатор пункту" - -msgid "Custom" -msgstr "Власний" - -msgid "Roles" -msgstr "Ролі" - -msgid "Comment" -msgstr "Коментар" - -msgid "Hostname" -msgstr "Сервер:" - -msgid "Score" -msgstr "Вага" - -msgid "Published" -msgstr "Опубліковано" - -msgid "Input format" -msgstr "Формат вводу" - -msgid "Signature" -msgstr "Підпис" - -msgid "Filter" -msgstr "Фільтр" - -msgid "Location" -msgstr "Адреса" - -msgid "Promoted to front page" -msgstr "Розміщене на першій сторінці" - -msgid "Log message" -msgstr "Повідомлення в системний журнал" - -msgid "Session ID" -msgstr "ID сесії" - -msgid "File ID" -msgstr "ID файлу" - -msgid "Vocabulary" -msgstr "Словник" - -msgid "Vocabulary ID" -msgstr "ID словника" - -msgid "Vocabulary name" -msgstr "Назва словника" - -msgid "Term" -msgstr "Термін" - -msgid "Term ID" -msgstr "ID терміну" - -msgid "Last access" -msgstr "Останній вхід" - -msgid "Last login" -msgstr "Останній вхід" - -msgid "Fields" -msgstr "Поля" - -msgid "Contains" -msgstr "Містить" - -msgid "Does not contain" -msgstr "Не містить" - -msgid "Is less than" -msgstr "Є меншим, ніж" - -msgid "Is less than or equal to" -msgstr "Є меншим або рівним, ніж" - -msgid "Is equal to" -msgstr "Є рівним" - -msgid "Is greater than or equal to" -msgstr "Є більшим або рівним за" - -msgid "Is greater than" -msgstr "Є більшим, ніж" - -msgid "Is not equal to" -msgstr "Не є рівним" - -msgid "Overridden" -msgstr "Пріоритетно" - -msgid "Watchdog" -msgstr "Вартовий" - -msgid "Normal" -msgstr "Нормально" - -msgid "%time ago" -msgstr "%time тому" - -msgid "Sort order" -msgstr "Сортування" - -msgid "Up" -msgstr "Вгору" - -msgid "Sortable" -msgstr "Сортується" - -msgid "Caching" -msgstr "" - -msgid "Month" -msgstr "Місяць" - -msgid "Basic Information" -msgstr "" - -msgid "Unlimited" -msgstr "Необмежено" - -msgid "Current" -msgstr "Поточна" - -msgid "Recent posts" -msgstr "Останні повідомлення" - -msgid "Day" -msgstr "День" - -msgid "Table" -msgstr "Таблиця" - -msgid "Basic" -msgstr "Базовий" - -msgid "List type" -msgstr "Тип списку" - -msgid "Role" -msgstr "Роль" - -msgid "Case" -msgstr "Вибір" - -msgid "Referrer" -msgstr "Джерело" - -msgid "Exists" -msgstr "Існує" - -msgid "Both" -msgstr "Все" - -msgid "Maximum length" -msgstr "Максимальна довжина" - -msgid "Argument" -msgstr "Аргумент" - -msgid "Anonymous" -msgstr "Гість" - -msgid "The views module creates customized views of node lists. You may need to activate the Views UI module to get to the user administration pages." -msgstr "Модуль Види створює керовані види списків матеріалів. Вам потрібно задіяти модуль Інтерфейса Видів для доступу до сторінок керування" - -msgid "<All>" -msgstr "<Всі>" - -msgid "As Short Date" -msgstr "Коротка дата" - -msgid "As Medium Date" -msgstr "Середня дата" - -msgid "As Long Date" -msgstr "Довга дата" - -msgid "As Custom Date" -msgstr "Власна дата" - -msgid "As Time Ago" -msgstr "" - -msgid "Granularity: minute" -msgstr "Деталізація: хвилина" - -msgid "Granularity: hour" -msgstr "Деталізація: година" - -msgid "Granularity: day" -msgstr "Деталізація: день" - -msgid "Granularity: month" -msgstr "Деталізація: місяць" - -msgid "Granularity: year" -msgstr "Деталізація: рік" - -msgid "Is All Of" -msgstr "Все з" - -msgid "Is One Of" -msgstr "Одне з" - -msgid "Is None Of" -msgstr "Жодне з" - -msgid "Is Equal To" -msgstr "Дорівнює" - -msgid "Is Not Equal To" -msgstr "Не дорівнює" - -msgid "Is Greater Than" -msgstr "Більше за" - -msgid "Is Greater Than Or Equals" -msgstr "Більше чи дорінює" - -msgid "Is Less Than Or Equals" -msgstr "Менеше чи дорінює" - -msgid "Is Less Than" -msgstr "Менше за" - -msgid "List View" -msgstr "Списком" - -msgid "Table View" -msgstr "Таблицею" - -msgid "Teaser List" -msgstr "" - -msgid "Full Nodes" -msgstr "" - -msgid "Contains Any Word" -msgstr "Не містить жодного слова" - -msgid "Contains All Words" -msgstr "Містить всі слова" - -msgid "Starts With" -msgstr "Починається з" - -msgid "Ends With" -msgstr "Закінчується з" - -msgid "Does Not Contain" -msgstr "Не містить" - -msgid "Save and edit" -msgstr "Зберегти і відредагувати" - -msgid "@filter must have a value!" -msgstr "@filter мусить містити значення!" - -msgid "The \"Value\" can either be a date in the format: CCYY-MM-DD HH:MM:SS or the word \"now\" to use the current time. You may enter a positive or negative number in the \"Option\" field that will represent the amount of seconds that will be added or substracted to the time; this is most useful when combined with \"now\". If you have the jscalendar module from jstools installed, you can use a popup date picker here." -msgstr "" - -msgid "access all views" -msgstr "доступ до всіх видів" - -msgid "Views RSS: RSS feed" -msgstr "" - -msgid "RSS: RSS Feed Selector" -msgstr "" - -msgid "This argument specifies a specific RSS feed selector; it will only select RSS feeds, unlike the built-in selector which can select pluggable feeds. You may enter the title the feed will advertise in the title field here, and the description of the feed in the option field here." -msgstr "" - -msgid "Theme wizard" -msgstr "Майстер шаблонів" - -msgid "<p>The views theming wizard generates code that you can use in your phptemplate theme to help you customize the output of a view. Simply select a theme and it will generate code for your template.php as well as template files for the individual views.</p><p>At this time this code assumes your view is a <b>list type view</b>! It may not generate effective code for other types of views. Future versions of this program will be smarter, and give more options, but this wizard is still a huge start.</p>" -msgstr "<p>Майстер шаблонів створює код, який ви можете використати у вашому phptemplate шаблоні щоб допомогти вам змінити вигляд виводу. Просто виберіть шаблон і він створить код для вашого template.php так само як файли шаблонів для окремих виглядів.</p><p>Зараз цей код припускає, що ваш вид<b>список</b>! Він може генерувати не ефективний код для інших типів вигляду. Наступні версії цього додатку будуть кмітливіші і даватимуть змогу більше налаштовувати його, але цей майстер це лише величезний початок.</p>" - -msgid "Select a view" -msgstr "Вибір виду" - -msgid "Select Theme Type" -msgstr "Вибір типу шаблону" - -msgid "List Theme Fields" -msgstr "" - -msgid "This is a list of all the theme functions you can use to override individual field displays" -msgstr "" - -msgid "This is a basic theme function" -msgstr "" - -msgid "Generate Theme" -msgstr "Генерувати шаблон" - -msgid "This code goes in your template.php file" -msgstr "" - -msgid "This code goes in a file named views-list-@s.tpl.php" -msgstr "" - -msgid "This code goes in a file named views-list-@s.css" -msgstr "" - -msgid "Simple List" -msgstr "Простий список" - -msgid "Grouped List" -msgstr "Групований список" - -msgid "Nested Tree" -msgstr "Вкладене дерево" - -msgid "Select the field on which to group" -msgstr "Виберіть поле за яким групувати" - -msgid "Select the field to use as the ID for each row (usually nid)" -msgstr "" - -msgid "Select the field that refers to the parent node by the ID field" -msgstr "" - -msgid "You may import a view by cut-and-pasting the results of an export view. If the import is successful you will be taken to the Add View page with all of the settings of the imported view.." -msgstr "" - -msgid "This screen shows all of the views that are currently defined in your system. The default views are provided by Views and other modules and are automatically available. If a customized view of the same name exists, it will be used in place of a default view." -msgstr "" - -msgid "Please see !s or the views documentation on drupal.org for help here." -msgstr "" - -msgid "the views help page" -msgstr "довідник видів" - -msgid "You may cut & paste this view into an import function on another system. The view will only work if all modules required by the view are installed on the target location." -msgstr "" - -msgid "<p>A view retrieves some number of nodes from the database and displays them in a variety of formats.</p>" -msgstr "" - -msgid "" -"<h3>View Types</h3>\n" -" <dl>\n" -" <dt><em>List View</em></dt><dd>A List View provides the data for each node retrieved in the form of an unordered list. Each item in the Fields section will be displayed; the Title will be displayed as a label. The order the items appear in the Fields list is the order the items will appear in the output. Leaving the title blank will cause the field to appear with no label (which is desirable in lists that just display titles, for example).</dd>\n" -" <dt><em>Table View</em></dt><dd>A Table View provides the data for each node as one row of a table. The Fields selected in the Fields list will be displayed in the order they are listed. The title column will be shown in the header. If you set the field to 'sortable' then the header will be click-sortable; be careful here as click-sorts will be processed after built-in sort criteria, and built-in sort criteria can easily make click-sorts invalid. If using click-sorts, choose a field to be the default sort; otherwise the first field presented will be the default sort.</dd>\n" -" <dt><em>Teaser List</em></dt><dd>A Teaser List will simply present the teaser of each node retrieved.</dd>\n" -" <dt><em>Full Nodes</em></dt><dd>This will show the full content of each node retrieved.</dd>\n" -" <dt><em>Random Teaser</em></dt><dd>This will show a single random teaser.</dd>\n" -" <dt><em>Random Node</em></dt><dd>This will show a single random node's full view.</dd>\n" -" </dl>" -msgstr "" - -msgid "<h3>Fields</h3>\n" -msgstr "" - -msgid "<p>When using List or Table view, it is necessary to choose which fields will be displayed to the user.</p><dl>\n" -msgstr "" - -msgid "<h3>Arguments</h3>\n" -msgstr "<h3>Аргументи</h3>\n" - -msgid "<p>Arguments can be passed to the View through the URL, in order to create views that are configurable by the user. This is very useful to create views for taxonomy, or to sort by user. When using arguments, substitution is performed on the title. %1 will represent argument 1, %2 will represent argument 2. Each argument has a title field; this title is used if providing a summary view (which can matter because the argument is missing which could result in confusing phrases such as 'view for')</p><dl>\n" -msgstr "" - -msgid "<h3>Filters</h3>\n" -msgstr "<h3>Фільтри</h3>\n" - -msgid "<p>Views may be filtered to restrict the view on a number of criteria.</p><dl>\n" -msgstr "" - -msgid "<h3>Sorting Critera</h3>\n" -msgstr "<h3>Правило сортування</h3>\n" - -msgid "<p>The result set may be sorted on any of the following criteria.</p><dl>\n" -msgstr "" - -msgid "Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented." -msgstr "Види - це особливі списки матеріалу в Вашій системі; вони глибоко модифікуються і дають можливість керувати виглядом відображених матеріалів" - -msgid "Tools" -msgstr "Інструменти" - -msgid "Edit view" -msgstr "Правка виду" - -msgid "Override" -msgstr "Переназначити" - -msgid "Clone" -msgstr "Клонування" - -msgid "Administer views" -msgstr "Керування видами" - -msgid "No Page View" -msgstr "" - -msgid "Provides" -msgstr "Надає" - -msgid "Existing Views" -msgstr "Доступні види" - -msgid "<p>No views have currently been defined.</p>" -msgstr "" - -msgid "<p>Below are system default views; if you edit one of these, a view will be created that will override any system use of the view.</p>" -msgstr "" - -msgid "Default view" -msgstr "Базовий вид" - -msgid "Default Views" -msgstr "Базові види" - -msgid "<p>Occasionally, something or other can cause the Views cache to contain stale data; this is particularly true after module updates and sometimes true after taxonomy and profile updates. If you are having problems with Views creating malformed queries, the first thing you should always do is clear the Views cache to see if that is the problem.</p>" -msgstr "" - -msgid "Clear views cache" -msgstr "" - -msgid "Import View Code" -msgstr "Втягнути код виду" - -msgid "Cut and paste the results of an Export View here." -msgstr "" - -msgid "Add a View" -msgstr "Додати вид" - -msgid "You don't seem to have the following requirements: " -msgstr "" - -msgid "Unable to get a view out of that." -msgstr "" - -msgid "Edit view %n" -msgstr "" - -msgid "Return Page Not Found" -msgstr "" - -msgid "Display All Values" -msgstr "" - -msgid "Summary, unsorted" -msgstr "" - -msgid "Summary, sorted ascending" -msgstr "Сумарно, сортування пряме" - -msgid "Summary, sorted descending" -msgstr "Сумарно, сортування зворотнє" - -msgid "Summary, sorted as view" -msgstr "" - -msgid "Use Empty Text" -msgstr "" - -msgid "Ascending" -msgstr "Зростання" - -msgid "Descending" -msgstr "Спадання" - -msgid "Add Filter" -msgstr "Додати фільтр" - -msgid "Add Criteria" -msgstr "" - -msgid "Add Argument" -msgstr "" - -msgid "Add Field" -msgstr "" - -msgid "Expose Filter" -msgstr "" - -msgid "You have modified this view; changes will not be recorded until you Save the form." -msgstr "" - -msgid "The unique identifier of the view; it is only important for overridden views and views that modules or themes will need to use. Only alphanumeric and _ allowed here" -msgstr "" - -msgid "Only the checked roles will be able to see this view in any form; if no roles are checked, access will not be restricted." -msgstr "" - -msgid "A description of the view for the admin list." -msgstr "" - -msgid "Provide Page View" -msgstr "" - -msgid "If checked this view will be provided as a page. If not checked, the fields in this group will be ignored." -msgstr "" - -msgid "Enter the URL to use for this view in the form of 'dir/dir'. Do not begin or end the URL with a /. Example: 'view/tracker'. This is required if providing a page view. You can also add $arg as a placeholder for arguments passed in the URL, for example 'user/$arg/tracker' or 'node/$arg/related'. Note that any arguments listed here will be required, even if they are listed as optional below. You do not need to list arguments at the end of the path. Do not try to use URLs such as taxonomy/term/$arg." -msgstr "" - -msgid "View Type" -msgstr "Тип Перегляду" - -msgid "How the nodes should be displayed to the user." -msgstr "" - -msgid "The title that be shown at the top of the view. May be blank. This title ignores arguments; if you want your title to take arguments into account, use the \"title\" field in the arguments section." -msgstr "" - -msgid "Use Pager" -msgstr "Сторінка Користувача" - -msgid "If checked this query may be multiple pages. If not checked this query will be one page." -msgstr "" - -msgid "Breadcrumb trail should not include \"Home\"" -msgstr "" - -msgid "If checked the breadcrumb trail for this page will discard \"Home\". Usually you will not set this, but this is used for the Front Page View, where it IS Home and should not leave a trail to itself." -msgstr "" - -msgid "Nodes per Page" -msgstr "" - -msgid "The number of nodes to display per page. If 0, all nodes will be displayed. If not using a pager, this will be the maximum number of nodes in the list." -msgstr "" - -msgid "Text to display at the top of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "" - -msgid "Text to display at the bottom of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "" - -msgid "Empty Text" -msgstr "" - -msgid "Text to display if a view returns no nodes. Optional." -msgstr "" - -msgid "Provide Menu" -msgstr "" - -msgid "If checked this view be given a menu entry in the Drupal menu system. If not checked the data in this group will be ignored." -msgstr "" - -msgid "Provide Menu as Tab" -msgstr "" - -msgid "If checked this view's menu entry will be provided as a tab rather than in the main menu system." -msgstr "" - -msgid "Tab Weight" -msgstr "" - -msgid "If this is a menu tab, select the weight; lower numbers will be further to the left." -msgstr "" - -msgid "Menu Title" -msgstr "" - -msgid "Enter the title to use for the menu entry or tab. If blank, the page title will be used." -msgstr "" - -msgid "Default Menu Tab" -msgstr "" - -msgid "Make Default Menu Tab" -msgstr "" - -msgid "If checked this view's menu entry will be provided as a tab, and will be the default tab for that URL path. For example, if the URL is 'tracker/all' and it is set as the default menu tab, it will be put into the menu as 'tracker' and 'tracker/all' will be the default tab. The following settings allow you to customize the parent item, for example 'tracker'. For tabs to work properly, one tab in the group must be set as the default." -msgstr "" - -msgid "Parent Menu Item Type" -msgstr "" - -msgid "Tab" -msgstr "Закладка" - -msgid "Normal menu item" -msgstr "Нормальний елемент меню" - -msgid "Already exists (don't create)" -msgstr "" - -msgid "Select type of parent item to use for this default menu tab. You can either specify the parent should be a tab (the default), a normal menu item, or to use the menu item that already exists at the specified URL. For example, if the URL for the default tab is 'tracker/all', then 'tracker' would already have to be a valid menu item to use this final choice." -msgstr "" - -msgid "If the parent menu item is a tab, select the weight; lower numbers will be further to the left." -msgstr "" - -msgid "Parent Menu Item Title" -msgstr "" - -msgid "If the Parent Menu Item is being defined by this view (if you set the %type_field to either %tab or %menu), you can specify its title here. If blank, the menu title will be used if that is defined, or the page title if not." -msgstr "" - -msgid "Provide Block" -msgstr "" - -msgid "If checked this view will be provided as a block. If checked title may not be blank." -msgstr "" - -msgid "The title that will be shown at the top of the block. May be blank." -msgstr "" - -msgid "Nodes per Block" -msgstr "" - -msgid "If using a block, the maximum number of items to display in the block. Pagers are not used in blocks." -msgstr "" - -msgid "[More] Link?" -msgstr "" - -msgid "If using a view as both a page and a block, display a more link in the block that links to the view URL?" -msgstr "" - -msgid "Use Page Header" -msgstr "" - -msgid "If checked, use the Page Header for block view instead. If so, you should leave the Block Header blank." -msgstr "" - -msgid "Use Page Footer" -msgstr "" - -msgid "If checked, use the page footer for block view instead. If so, you should leave the block footer blank." -msgstr "" - -msgid "Empty text" -msgstr "Пустий текст" - -msgid "Use Page empty" -msgstr "" - -msgid "If checked, use the Page Empty Text for block view instead. If so, you should leave the block empty text blank." -msgstr "" - -msgid "Text to display if a view results in no nodes. Optional." -msgstr "" - -msgid "Argument Handling Code" -msgstr "" - -msgid "Argument Code" -msgstr "" - -msgid "Advanced Usage Only: PHP code that returns a custom array of arguments for the view. Should not include <?php ?> delimiters." -msgstr "" - -msgid "For more information, please see the <a href=\"!arg\">Argument Handling Code documentation</a> in the Drupal handbook." -msgstr "" - -msgid "Expose" -msgstr "Виставляти" - -msgid "Delete this item." -msgstr "" - -msgid "Move this item up." -msgstr "" - -msgid "Down" -msgstr "Вниз" - -msgid "Move this item down." -msgstr "" - -msgid "Move this item to the top." -msgstr "" - -msgid "Move this item to the bottom." -msgstr "" - -msgid "Handler" -msgstr "Обробник" - -msgid "Option" -msgstr "Параметр" - -msgid "Default Sort" -msgstr "" - -msgid "Fields are only meaningful with List view and Table View; they allow you to choose which fields are presented and in what order." -msgstr "" - -msgid "Argument Type" -msgstr "" - -msgid "Wildcard" -msgstr "Джокер" - -msgid "Wildcard Sub" -msgstr "" - -msgid "Arguments are parsed directly from the URL. They are not necessary to any given view, but allow flexibility." -msgstr "" - -msgid "Arguments" -msgstr "Аргументи" - -msgid "Operator" -msgstr "Оператор" - -msgid "Filters allow you to select a subset of all the nodes to display. All Filters are ANDed together." -msgstr "" - -msgid "Filters" -msgstr "Фільтри" - -msgid "Optional" -msgstr "Необов'язкове" - -msgid "Filter settings Default" -msgstr "" - -msgid "Force Single" -msgstr "" - -msgid "Lock Operator" -msgstr "" - -msgid "Exposed filters will be presented to the viewer. If not set required, then filters will include a \"<None>\" Value if possible. If set default, filters will default as set here, otherwise filter settings will be ignored. If Lock Operator is set, no operator will be made available to the user." -msgstr "" - -msgid "Exposed Filters" -msgstr "" - -msgid "Order" -msgstr "Замовлення" - -msgid "Add criteria" -msgstr "Додати критерій" - -msgid "Sort Criteria" -msgstr "Критерії впорядкування" - -msgid "This view currently has no %s defined." -msgstr "" - -msgid "Ops" -msgstr "" - -msgid "Another user has modified this view, unable to save. You can get this error by using the Back button to re-edit a view after saving one; if you do this, be sure to Reload before making any changes!" -msgstr "" - -msgid "View name is required." -msgstr "" - -msgid "View name must be alphanumeric or underscores only." -msgstr "" - -msgid "View name already in use." -msgstr "" - -msgid "Nodes per page cannot be 0 if using the pager." -msgstr "" - -msgid "If being used as a block, Nodes Per Block must be positive." -msgstr "" - -msgid "View successfully saved." -msgstr "" - -msgid "View successfully added." -msgstr "" - -msgid "List and Table types require at least one field." -msgstr "" - -msgid "You can only set on Default Sort on one field." -msgstr "" - -msgid "View '%vid' not found." -msgstr "" - -msgid "administer views" -msgstr "адмініструвати види" - -msgid "Views module installed tables successfully." -msgstr "" - -msgid "The installation of views module was unsuccessful." -msgstr "" - -msgid "The views module creates customized views of node lists." -msgstr "" - -msgid "Views RSS" -msgstr "" - -msgid "RSS plugin for the views feed selector argument." -msgstr "" - -msgid "Views Theme Wizard" -msgstr "" - -msgid "The views theme wizard helps create stub theming for views." -msgstr "" - -msgid "Views UI" -msgstr "Views UI" - -msgid "The Views UI module allows you to create and edit views." -msgstr "" - -msgid "Book: Parent Node" -msgstr "" - -msgid "This allows you to filter books based on parent node." -msgstr "" - -msgid "Book: Weight" -msgstr "" - -msgid "This will sort the view by book weight, if that is applicable." -msgstr "" - -msgid "Book: Parent Title" -msgstr "" - -msgid "Display the title of the parent node" -msgstr "" - -msgid "Sort by the title of the parent node" -msgstr "" - -msgid "Book: Parent Node ID" -msgstr "" - -msgid "Comment: Subject" -msgstr "Коментар: Тема" - -msgid "With updated mark" -msgstr "" - -msgid "Comment: Comment" -msgstr "" - -msgid "Display the content of a comment." -msgstr "" - -msgid "Comment: Comment ID" -msgstr "" - -msgid "Display the CID of a comment." -msgstr "" - -msgid "Comment: Created Time" -msgstr "" - -msgid "Display the post time of the comment." -msgstr "" - -msgid "Comment: Author Name" -msgstr "" - -msgid "This will display the author of the node." -msgstr "" - -msgid "Comment: Add link" -msgstr "" - -msgid "Display a link to add a comment to the node. Enter the text of this link into the option field; if blank the default \"Comment\" will be used." -msgstr "" - -msgid "Comment: Pending approval" -msgstr "" - -msgid "Equals" -msgstr "Рівне" - -msgid "Sort by the created time of comments." -msgstr "" - -msgid "Comment: Last Comment Time" -msgstr "" - -msgid "This will display the last comment time." -msgstr "" - -msgid "Comment: Last Comment Author" -msgstr "" - -msgid "This will display the name of the last user to comment on the post." -msgstr "" - -msgid "Comment: Count" -msgstr "" - -msgid "With New Count" -msgstr "" - -msgid "This will display the comment count." -msgstr "" - -msgid "Comment: Last Changed Time" -msgstr "" - -msgid "This will display the time of the last comment or node edit." -msgstr "" - -msgid "Comment: Comment Count" -msgstr "" - -msgid "This filter allows you to filter by the amount of comments." -msgstr "" - -msgid "This filter allows nodes to be filtered by the timestamp for the last comment or node edit." -msgstr "" - -msgid "Comment: Last Comment Date" -msgstr "" - -msgid "This will allow you to sort by the date of the most recent comment on a node." -msgstr "" - -msgid "This filter allows you to sort by the number of comments." -msgstr "" - -msgid "Comment: Last Changed" -msgstr "" - -msgid "Sort based on the most recent comment or edit for the node." -msgstr "" - -msgid "@num new" -msgstr "" - -msgid "Display recent comments block" -msgstr "" - -msgid "Recent comments" -msgstr "Останні коментарі" - -msgid "Node: Title" -msgstr "" - -msgid "Display the title of the node." -msgstr "" - -msgid "Node: ID" -msgstr "" - -msgid "Display the NID of a node." -msgstr "" - -msgid "Node: Created Time" -msgstr "" - -msgid "Display the post time of the node." -msgstr "" - -msgid "The option field may be used to specify the custom date format as it's required by the date() function or if \"as time ago\" has been chosen to customize the granularity of the time interval." -msgstr "" - -msgid "Node: Updated Time" -msgstr "" - -msgid "Display the last time the node was updated." -msgstr "" - -msgid "Node: Type" -msgstr "" - -msgid "The Node Type field will display the type of a node (for example, 'blog entry', 'forum post', 'story', etc)" -msgstr "" - -msgid "Node: Link to node" -msgstr "" - -msgid "This will create a link to the node; fill the option field with the text for the link. If you want titles that link to the node, use Node: Title instead." -msgstr "" - -msgid "Node: Body" -msgstr "" - -msgid "Full Text" -msgstr "Повний текст" - -msgid "Display the Main Content." -msgstr "" - -msgid "Node: View link" -msgstr "" - -msgid "Display a link to view the node. Enter the text of this link into the option field; if blank the default \"View\" will be used." -msgstr "" - -msgid "Node: Edit link" -msgstr "" - -msgid "Return To View" -msgstr "" - -msgid "Return to Node" -msgstr "" - -msgid "Display a link to edit the node. Enter the text of this link into the option field; if blank the default \"Edit\" will be used." -msgstr "" - -msgid "Node: Delete link" -msgstr "" - -msgid "Return To The Frontpage" -msgstr "" - -msgid "Display a link to delete the node. Enter the text of this link into the option field; if blank the default \"Delete\" will be used." -msgstr "" - -msgid "Sort by the database ID of the node." -msgstr "" - -msgid "Sort by the submission date of the node." -msgstr "" - -msgid "Sort by the last update date of the node." -msgstr "" - -msgid "Node: Sticky" -msgstr "" - -msgid "Sort by whether or not the node is sticky. Choose descending to put sticky nodes at the top." -msgstr "" - -msgid "Sort by the node title, alphabetically" -msgstr "" - -msgid "Sort by the node type, alphabetically" -msgstr "" - -msgid "Random" -msgstr "Випадково" - -msgid "By choosing random, nodes will be ordered completely randomly. This is a good way to choose X random nodes from a group of nodes." -msgstr "" - -msgid "Node: Published" -msgstr "" - -msgid "Filter by whether or not the node is published. This is recommended for most Views!" -msgstr "" - -msgid "Node: Front Page" -msgstr "" - -msgid "Filter by whether or not the node has been promoted to Front Page." -msgstr "" - -msgid "Filter by whether or not the node is set sticky." -msgstr "" - -msgid "Node: Moderated" -msgstr "" - -msgid "Filter by whether or not the node is moderated." -msgstr "" - -msgid "Include or exclude nodes of the selected types." -msgstr "" - -msgid "Node: Author is Anonymous" -msgstr "" - -msgid "This allows you to filter by whether or not the node author is anonymous." -msgstr "" - -msgid "Node: Author is Current User" -msgstr "" - -msgid "This allows you to filter by whether or not the node was authored by the logged in user of the view." -msgstr "" - -msgid "Node: Current User Authored or Commented" -msgstr "" - -msgid "This allows you to filter by whether or not the logged in user authored or commented on the node." -msgstr "" - -msgid "Node: Distinct" -msgstr "" - -msgid "This filter ensures that each node may only be listed once, even if it matches multiple criteria. Use this if multiple taxonomy matches return duplicated nodes." -msgstr "" - -msgid "This filter allows nodes to be filtered by their title." -msgstr "" - -msgid "This filter allows nodes to be filtered by their creation date." -msgstr "" - -msgid "This filter allows nodes to be filtered by the time they were updated." -msgstr "" - -msgid "This filter allows nodes to be filtered by their body." -msgstr "" - -msgid "Node: Has New Content" -msgstr "" - -msgid "Including this filter will reduce the node set to nodes that have been updated or have new content since the user last read the node, as well as unread nodes." -msgstr "" - -msgid "The node type argument allows users to filter a view by specifying the type of node." -msgstr "" - -msgid "The argument will filter by the node title. For this argument, set the option to the number of characters, using 0 for full term; use 1 for an A/B/C style glossary." -msgstr "" - -msgid "Node: Posted Year" -msgstr "" - -msgid "This argument allows users to filter by what year the node was posted, in the form of CCYY." -msgstr "" - -msgid "Node: Posted Month" -msgstr "" - -msgid "Months are specified by the numbers 1-12. Since this argument does not specify a year, it is recommended that it usually follow a 'Year' argument." -msgstr "" - -msgid "Node: Posted Week" -msgstr "" - -msgid "This allows the user to filter a view by the week number from 1-52. It is recommended this argument follow a 'Year' argument." -msgstr "" - -msgid "Node: Posted Month + Year" -msgstr "" - -msgid "This argument combines Month and Year into a single argument, specified in the form CCYYMM." -msgstr "" - -msgid "Node: Posted Full Date" -msgstr "" - -msgid "This argument is a complete date in the form of CCYYMMDD." -msgstr "" - -msgid "This argument is a single Node ID." -msgstr "" - -msgid "Node: Feed Selector" -msgstr "" - -msgid "This argument allows pluggable \"feed\" selectors. If using views_rss module, \"feed\" will turn the view into an RSS feed. Other modules may provide their own feeds. You may enter the title the feed will advertise in the title field here. If the feed type offers a description, enter the description of the feed in the option field here." -msgstr "" - -msgid "The basic front page view." -msgstr "" - -msgid "Untitled" -msgstr "Без назви" - -msgid "Profile: @field-name" -msgstr "" - -msgid "This will display all options of the profile field %field-name. " -msgstr "" - -msgid "Display the date of the %field-name field." -msgstr "" - -msgid "Checkbox based profile field help" -msgstr "" - -msgid "Other types based profile field help" -msgstr "" - -msgid "This allows you to sort by vocabulary terms" -msgstr "" - -msgid "This allows you to sort by selection options" -msgstr "" - -msgid "This allows you to sort by date" -msgstr "" - -msgid "This allows you to sort yes/no" -msgstr "" - -msgid "Taxonomy based profile field help" -msgstr "" - -msgid "Selection based profile field help" -msgstr "" - -msgid "Search: Index" -msgstr "" - -msgid "Node: Total Hits" -msgstr "" - -msgid "This will display the number of times a node has been read." -msgstr "" - -msgid "Node: Recent Hits" -msgstr "" - -msgid "This will display the number of times a node has been read recently." -msgstr "" - -msgid "Node: Last Hit Time" -msgstr "" - -msgid "Display the time the node was last read." -msgstr "" - -msgid "This allows you to sort by the number of times a node has been read." -msgstr "" - -msgid "This allows you to sort by the number of times a node has been read recently." -msgstr "" - -msgid "This allows you to sort by the time a node was last read." -msgstr "" - -msgid "Nodes sorted by recent page-views" -msgstr "" - -msgid "Recent popular content" -msgstr "Популярне останнім часом" - -msgid "Recent hits" -msgstr "Останні хіти" - -msgid "Nodes sorted by total page-views" -msgstr "" - -msgid "All-time popular content" -msgstr "Популярне за весь час" - -msgid "Reads" -msgstr "" - -msgid "Taxonomy: Terms for @voc-name" -msgstr "" - -msgid "This will display all taxonomy terms associated with the node that are members of %voc-name. Note that this causes one extra query per row displayed, and might have a minor performance impact." -msgstr "" - -msgid "Only terms associated with %voc-name will appear in the select box for this filter. When filtering by taxonomy term you may specify the 'depth' as an option. Please see the taxonomy help for more information." -msgstr "" - -msgid "Taxonomy: Term" -msgstr "" - -msgid "This will display one of the taxonomy terms associated with the node; if taxonomy terms were used to filter or sort, it will be the one that triggered the sort or filter." -msgstr "" - -msgid "Taxonomy: Term Description" -msgstr "" - -msgid "This will display the description associated with a taxonomy term." -msgstr "" - -msgid "Taxonomy: Term Name" -msgstr "" - -msgid "This will sort nodes by taxonomy weight and name, as defined in the category administration." -msgstr "" - -msgid "Taxonomy: Vocabulary Name" -msgstr "" - -msgid "This will filter a view to only nodes that contain a term in the associated vocabulary." -msgstr "" - -msgid "Taxonomy: Term ID" -msgstr "" - -msgid "The argument will filter by a taxonomy term ID. For this argument, set the option to the depth to search. See taxonomy for more information." -msgstr "" - -msgid "The argument will filter by a taxonomy term name. For this argument, set the option to the number of characters, using 0 for full term; use 1 for an A/B/C style glossary." -msgstr "" - -msgid "Taxonomy: Vocabulary ID" -msgstr "" - -msgid "The argument will filter to nodes with terms in a vocabulary." -msgstr "" - -msgid "The taxonomy view with a depth of 0." -msgstr "" - -msgid "Uncategorized" -msgstr "Без категорії" - -msgid "Uncatgorized" -msgstr "" - -msgid "File: Id" -msgstr "" - -msgid "File Id which represents the file." -msgstr "Файл Id, який представляє файл." - -msgid "Sort by File Id" -msgstr "" - -msgid "File: Has file downloads" -msgstr "" - -msgid "Filter whether the node has files for download" -msgstr "" - -msgid "File: Listed in file downloads" -msgstr "" - -msgid "Filter whether the file is listed in downloads" -msgstr "" - -msgid "File: All files" -msgstr "" - -msgid "All files" -msgstr "Всі файли" - -msgid "Listed files" -msgstr "" - -msgid "File names with links" -msgstr "" - -msgid "File names without links" -msgstr "" - -msgid "File descriptions with links" -msgstr "" - -msgid "File descriptions without links" -msgstr "" - -msgid "Display all attached files in one field." -msgstr "" - -msgid "File: Name" -msgstr "" - -msgid "Plain" -msgstr "Простий" - -msgid "With download link" -msgstr "З посиланням завантаження" - -msgid "Display file name" -msgstr "Відобразити ім'я файлу" - -msgid "File: Path" -msgstr "" - -msgid "Display Path to File." -msgstr "Показати шлях до файлу." - -msgid "File: Size" -msgstr "" - -msgid "Display the size of the associated file." -msgstr "" - -msgid "File: Mime type" -msgstr "" - -msgid "This filter allows nodes to be filtered by mime type." -msgstr "Цей фільтр дозволяє повідомлення фільтруватися типом MIME." - -msgid "File: Filename" -msgstr "" - -msgid "This filter allows nodes to be filtered by the name of attached files." -msgstr "" - -msgid "This filter allows nodes to be filtered by file size." -msgstr "" - -msgid "File: Sort by Filename" -msgstr "" - -msgid "Sort by file name" -msgstr "" - -msgid "File: File size" -msgstr "" - -msgid "Sort by file size." -msgstr "" - -msgid "Sort by mime type." -msgstr "" - -msgid "Node: Author Name" -msgstr "" - -msgid "User: Author Picture" -msgstr "" - -msgid "Display the user picture of the author." -msgstr "Показати зображення автора." - -msgid "This allows you to sort alphabetically by author." -msgstr "" - -msgid "This allows you to filter by a particular user. You might not find this useful if you have a lot of users." -msgstr "" - -msgid "Node: Authors in role %role-name" -msgstr "" - -msgid "Only users in role %role-name will appear in the select box for this filter." -msgstr "" - -msgid "Role: Author Role" -msgstr "" - -msgid "Include the node only if the author is a member of the selected role." -msgstr "" - -msgid "User: UID is Author" -msgstr "" - -msgid "The User ID argument allows users to filter to nodes authored by the specified user ID." -msgstr "" - -msgid "User: UID Authored or Commented" -msgstr "" - -msgid "The User ID argument allows users to filter a to nodes authored or commented on the specified user ID." -msgstr "" - -msgid "User: Username is Author" -msgstr "" - -msgid "views_handler_arg_username" -msgstr "" - -msgid "The Username argument allows users to file to a nodes authored by the specified username." -msgstr "" - -msgid "Shows all new activity on system." -msgstr "" - -msgid "recent posts for %1" -msgstr "" - -msgid "Currently Logged In User" -msgstr "" - -msgid "Position" -msgstr "Розташування" - -msgid "Basic settings" -msgstr "Базові параметри" - -msgid "Last checked" -msgstr "Востаннє перевірено" - -msgid "Profile" -msgstr "Профіль" - -msgid "filters" -msgstr "фільтри" - -msgid "Term description" -msgstr "Опис терміна" - -msgid "fields" -msgstr "поля" - -msgid "reply" -msgstr "відповісти" - -msgid "Defaults" -msgstr "Типово" - -msgid "=" -msgstr "=" - -msgid "Sort by" -msgstr "Сортувати за" - -msgid "Created date" -msgstr "Дата створення" - -msgid "Updated date" -msgstr "Дата оновлення" - -msgid "Default language" -msgstr "Базова мова" - -msgid "Other queries" -msgstr "Інші запити" - -msgid "Timer" -msgstr "Таймер" - -msgid "in" -msgstr "в" - -msgid "Full text" -msgstr "Повний текст" - -msgid "Feed settings" -msgstr "Налаштування вибірок" - -msgid "Source" -msgstr "Джерело" - -msgid "Replacement patterns" -msgstr "Шаблони заміни" - -msgid "Query" -msgstr "Запит" - -msgid "Hour" -msgstr "Година" - -msgid "Minute" -msgstr "Хвилина" - -msgid "Second" -msgstr "Секунда" - -msgid "Granularity" -msgstr "Деталізація" - -msgid "Moderated" -msgstr "Модеровано" - -msgid "Alignment" -msgstr "Вирівнювання" - -msgid "Link label" -msgstr "" - -msgid "Revert" -msgstr "Відновити" - -msgid "or" -msgstr "або" - -msgid "Convert" -msgstr "Перетворити" - -msgid "Parent term" -msgstr "Терм-попередник" - -msgid "Style" -msgstr "Стиль" - -msgid "revert" -msgstr "повернути" - -msgid "Last modified" -msgstr "Востаннє змінено" - -msgid "Reverse" -msgstr "Зворотній" - -msgid "Thousands separator" -msgstr "Розділювач тисяч" - -msgid "Unformatted" -msgstr "Неформатоване" - -msgid "RSS Feed" -msgstr "RSS потік" - -msgid "New comments" -msgstr "Новий коментар" - -msgid "Relationships" -msgstr "Зв'язки" - -msgid "Plural" -msgstr "Множина" - -msgid "Relationship" -msgstr "Зв'язок" - -msgid "relationships" -msgstr "зв'язки" - -msgid "Sort criteria" -msgstr "Критерій сортування" - -msgid "Parent menu item" -msgstr "Батьківський елемент меню" - -msgid "Translations" -msgstr "Переклади" - -msgid "Sticky" -msgstr "Приліпити" - -msgid "Read only" -msgstr "Тільки для читання" - -msgid "Ok" -msgstr "Гаразд" - -msgid "Output format" -msgstr "Вихідний формат" - -msgid "Storage" -msgstr "Накопичувач" - -msgid "Apply" -msgstr "Застосувати" - -msgid "Enter the terms you wish to search for." -msgstr "Впишіть слова для пошуку." - -msgid "Information" -msgstr "Інформація" - -msgid "PHP Code" -msgstr "Код PHP" - -msgid "Translation" -msgstr "Переклад" - -msgid "Translation status" -msgstr "Статус перекладу" - -msgid "@min and @max" -msgstr "@min та @max" - -msgid "Full node" -msgstr "Повний матеріал" - -msgid "Precision" -msgstr "Точність" - -msgid "Permission" -msgstr "Повноваження" - -msgid "Grid" -msgstr "Ґратка" - -msgid "Hide" -msgstr "Сховати" - -msgid "Read/Write" -msgstr "Читати/Писати" - -msgid "Global" -msgstr "Глобальне" - -msgid "arguments" -msgstr "аргументи" - -msgid "Thread" -msgstr "Гілки" - -msgid "You must include at least one positive keyword with @count characters or more." -msgstr "Вам необхідно вказати хоча б одне ключове слово, що містить не менше @count символів." - -msgid "Distinct" -msgstr "Окремий" - -msgid "<None>" -msgstr "<Нічого>" - -msgid "Node access" -msgstr "" - -msgid "<Any>" -msgstr "<любе>" - -msgid "Rearrange" -msgstr "Пересортувати" - -msgid "empty" -msgstr "пусто" - -msgid "Aggregator" -msgstr "Підбірка новин" - -msgid "Attach to" -msgstr "Приєднати до" - -msgid "Argument type" -msgstr "Тип аргументу" - -msgid "Attached files" -msgstr "Вкладені файли" - -msgid "Remove this item" -msgstr "Видалити цей елемент" - -msgid "No title" -msgstr "Без заголовку" - -msgid "Module name" -msgstr "Ім'я модуля" - -msgid "Enter the module name to export code to." -msgstr "" - -msgid "Page settings" -msgstr "Параметри сторінки" - -msgid "Use pager" -msgstr "Використовувати сторінковість" - -msgid "Items to display" -msgstr "Відображати елементів" - -msgid "Offset" -msgstr "Зміщення" - -msgid "More link" -msgstr "Посилання \"ще(далі)\"" - -msgid "More link text" -msgstr "" - -msgid "Edit this view" -msgstr "Правити вид" - -msgid "Book parent" -msgstr "" - -msgid "Top level book" -msgstr "" - -msgid "contains" -msgstr "містить" - -msgid "Selection type" -msgstr "Тип вибору" - -msgid "No name" -msgstr "Без назви" - -msgid "Validation error, please try again. If this error persists, please contact the site administrator." -msgstr "Помилка при перевірці значення, будь-ласка, спробуйте ще. Якщо помилка повториться, повідомте адміністратора сайту." - -msgid "In moderation" -msgstr "В модерації" - -msgid "Ordered list" -msgstr "Нумерований список" - -msgid "Unordered list" -msgstr "Ненумерований список" - -msgid "Case sensitive" -msgstr "Враховувати регістр" - -msgid "Link class" -msgstr "" - -msgid "Column" -msgstr "Стовпець" - -msgid "Default sort" -msgstr "Базове сортування" - -msgid "sort by @s" -msgstr "сортувати за @s" - -msgid "and" -msgstr "і" - -msgid "Add @type" -msgstr "Додати @type" - -msgid "Nid" -msgstr "Nid" - -msgid "Parent comment" -msgstr "Батьківський коментар" - -msgid "The parent comment." -msgstr "Батьківський коментар." - -msgid "Author's website" -msgstr "Сайт автора" - -msgid "Display the depth of the comment if it is threaded." -msgstr "" - -msgid "Sort by the threaded order. This will keep child comments together with their parents." -msgstr "" - -msgid "Reply-to link" -msgstr "Посилання відповіді" - -msgid "Provide a simple link to reply to the comment." -msgstr "" - -msgid "Text to display" -msgstr "Текст для виду" - -msgid "Link this field to its user or an author's homepage" -msgstr "" - -msgid "field" -msgstr "поле" - -msgid "The node the uploaded file is attached to" -msgstr "" - -msgid "View settings" -msgstr "Параметри видів" - -msgid "Week @week" -msgstr "Тиждень @week" - -msgid "Delete view" -msgstr "Стерти вид" - -msgid "Time ago" -msgstr "Часу назад" - -msgid "The taxonomy vocabulary ID" -msgstr "" - -msgid "The taxonomy term ID" -msgstr "" - -msgid "Force single" -msgstr "Примусово одиничний" - -msgid "The language the content is in." -msgstr "" - -msgid "Title only" -msgstr "Тільки назва" - -msgid "Validator" -msgstr "Перевірка" - -msgid "Inherit" -msgstr "Залежність" - -msgid "Mime type" -msgstr "MIME Тип" - -msgid "Use default" -msgstr "Використовувати базове" - -msgid "The weight, used for sorting." -msgstr "" - -msgid "The date the node was last updated." -msgstr "" - -msgid "In the form of WW (01 - 53)." -msgstr "У форматі ТТ (01 - 53)." - -msgid "Category ID" -msgstr "" - -msgid "!group: !field" -msgstr "!group: !field" - -msgid "Invalid display id @display" -msgstr "" - -msgid "Error: handler for @table > @field doesn't exist!" -msgstr "" - -msgid "Do not use a relationship" -msgstr "" - -msgid "Display type" -msgstr "Тип виду" - -msgid "The cache has been cleared." -msgstr "Кеш - очищено!" - -msgid "Default sort order" -msgstr "Базове сортування" - -msgid "An error occurred at @path." -msgstr "Помилка на @path." - -msgid "No link" -msgstr "Без посилання" - -msgid "Path: !path" -msgstr "Шлях: !path" - -msgid "Is not one of" -msgstr "Жоден з" - -msgid "Analyze" -msgstr "Аналіз" - -msgid "Admin" -msgstr "Адмін" - -msgid "Starts with" -msgstr "Починається з" - -msgid "Autocomplete" -msgstr "Автодоповнення" - -msgid "Decimal point" -msgstr "Десяткова кома" - -msgid "Permanent" -msgstr "Постійна" - -msgid "Temporary" -msgstr "Тимчасово" - -msgid "Custom date format" -msgstr "Власний формат дати" - -msgid "Is one of" -msgstr "Один з" - -msgid "Access will be granted to users with the specified permission string." -msgstr "Доступ буде надано користувачам вказаного рядка повноважень" - -msgid "Show All" -msgstr "Показати все" - -msgid "Nodes are a Drupal site's primary content." -msgstr "Матеріал є основним вмістом сайтів на Drupal." - -msgid "Comments are responses to node content." -msgstr "Коментарі є відгуками на матеріал вмісту." - -msgid "Users who have created accounts on your site." -msgstr "" - -msgid "!group: !title" -msgstr "!group: !title" - -msgid "!=" -msgstr "!=" - -msgid "Is empty (NULL)" -msgstr "Пусто (NULL)" - -msgid "Is not empty (NULL)" -msgstr "Не пусто (NOT NULL)" - -msgid "not empty" -msgstr "не пусто" - -msgid "Theming information" -msgstr "Інформація для розробки шаблонів" - -msgid "Ends with" -msgstr "Закінчується на" - -msgid "Upload date" -msgstr "Дата завантаження" - -msgid "Do not cache" -msgstr "Не кешувати" - -msgid "Action to take if argument is not present" -msgstr "" - -msgid "If this value is received as an argument, the argument will be ignored; i.e, \"all values\"" -msgstr "" - -msgid "Wildcard title" -msgstr "Джокер назви" - -msgid "The title to use for the wildcard in substitutions elsewhere." -msgstr "" - -msgid "<Basic validation>" -msgstr "<Базова перевірка>" - -msgid "Action to take if argument does not validate" -msgstr "" - -msgid "Link this field to its user" -msgstr "" - -msgid "This will override any other link you have set." -msgstr "" - -msgid "Overwrite the value to display for anonymous users" -msgstr "" - -msgid "If selected, you will see a field to enter the text to use for anonymous users." -msgstr "" - -msgid "Text to display for anonymous users" -msgstr "" - -msgid "Use default RSS settings" -msgstr "Використовувати стандартні налаштування RSS" - -msgid "Title plus teaser" -msgstr "Назва плюс анонс" - -msgid "Front page feed" -msgstr "Стрічка головної сторінки" - -msgid "This will appear as the name of this block in administer >> site building >> blocks." -msgstr "" - -msgid "The node ID of the node." -msgstr "Ідентифікатор матеріалу" - -msgid "Tab weight" -msgstr "Вага закладки" - -msgid "No role" -msgstr "Без ролі" - -msgid "View link" -msgstr "Показати посилання" - -msgid "The size of the file." -msgstr "Розмір файлу" - -msgid "Link this field" -msgstr "" - -msgid "Only show \"listed\" file attachments" -msgstr "" - -msgid "Link this field to its node" -msgstr "" - -msgid "Delete link" -msgstr "Посилання на видалення" - -msgid "Filter the view to the currently logged in user." -msgstr "" - -msgid "Cache once for everything (global)" -msgstr "Кеш разово для всього (глобально)" - -msgid "Per page" -msgstr "Для сторінки" - -msgid "Per role" -msgstr "Для ролі" - -msgid "Per role per page" -msgstr "Для ролі і для сторінки" - -msgid "Per user" -msgstr "Для користувача" - -msgid "Per user per page" -msgstr "Для користувача і для сторінки" - -msgid "Has Avatar" -msgstr "Має Аватар" - -msgid "Display the node with standard node view." -msgstr "Показує матеріал з стандартним видом." - -msgid "Capitalize first letter" -msgstr "Виправлення першої букви" - -msgid "Uid" -msgstr "Uid" - -msgid "Custom text" -msgstr "Свій текст" - -msgid "Default argument" -msgstr "Базовий аргумент" - -msgid "Yes/No" -msgstr "Так/Ні" - -msgid "No fields available." -msgstr "Недоступні поля" - -msgid "Numeric" -msgstr "Числовий" - -msgid "Alt text" -msgstr "Альтернативний текст" - -msgid "Edit link" -msgstr "Посилання на редагування" - -msgid "Broken handler @table.@field" -msgstr "Втрачено handler @table.@field" - -msgid "Skipping broken view @view" -msgstr "Пропущено поломаний вид @view" - -msgid "Ajax callback for view loading." -msgstr "Ajax callback для завантаження вида." - -msgid "The converter will make a best-effort attempt to convert a Views 1 view to Views 2. This conversion is not reliable; you will very likely have to make adjustments to your view to get it to match. You can import Views 1 views through the normal Import tab." -msgstr "" - -msgid "Changes cannot be made to a locked view." -msgstr "Зміни не можуть бути зроблені до заблокованого виду." - -msgid "Convert stored Views 1 views." -msgstr "Конвертувати збережений View 1 view." - -msgid "Convert view" -msgstr "Конвертація виду" - -msgid "Create customized lists and queries from your database." -msgstr "Створення видозмінених видів і запитів з Вашої Бази Даних" - -msgid "Administrative interface to views. Without this module, you cannot create or edit your views." -msgstr "Адміністративний інтерфейс для видів. Без цього модуля Ви не зможете створювати або змінювати Ваші види." - -msgid "Example table" -msgstr "Таблиця приклад" - -msgid "Example table contains example content and can be related to nodes." -msgstr "Таблиця прикладів відображає варіанти і може бути застосована для матеріалів." - -msgid "Example content" -msgstr "Матеріал приклад" - -msgid "Some example content that references a node." -msgstr "Деякі приклади, пов'язані з матеріалами" - -msgid "Example node" -msgstr "Матеріал приклад" - -msgid "Plain text field" -msgstr "Поле чистого тексту" - -msgid "Just a plain text field." -msgstr "Просто поле з просто текстом." - -msgid "Numeric field" -msgstr "Цифрове поле" - -msgid "Just a numeric field." -msgstr "Просто поле з просто цифр." - -msgid "Boolean field" -msgstr "Булеве поле" - -msgid "Just an on/off field." -msgstr "Просто поле так/ні, 1/0, ввімкнено/вимкнено" - -msgid "Timestamp field" -msgstr "Поле моменту часу" - -msgid "Just a timestamp field." -msgstr "Просто поле для часу" - -msgid "Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page." -msgstr "Емулює базову головну сторінку Друпал; Ви можете встановити базовою сторінкою сайту цей вид, щоб спробувати різні модифікації головної сторінки" - -msgid "The title to use when this argument is present. It will override the title of the view and titles from previous arguments. You can use percent substitution here to replace with argument titles. Use \"%1\" for the first argument, \"%2\" for the second, etc." -msgstr "" - -msgid "The Breadcrumb title to use when this argument is present. If no breadcrumb is setted here, default Title values will be used, see \"Title\" for percent substitutions." -msgstr "" - -msgid "Validator options" -msgstr "Параметри перевірки" - -msgid "Display all values" -msgstr "Показувати всі значення" - -msgid "Hide view / Page not found (404)" -msgstr "Сховати вид / Сторінку не знайдено (404)" - -msgid "Display empty text" -msgstr "Відображати пустий текст" - -msgid "Provide default argument" -msgstr "Вказати аргумент по замовчуванню" - -msgid "Provide default argument options" -msgstr "" - -msgid "Default argument type" -msgstr "Базовий тип аргумента" - -msgid "Broken/missing handler" -msgstr "Пошкоджена/відсутня оболонка" - -msgid "The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item." -msgstr "" - -msgid "Current date" -msgstr "Поточна дата" - -msgid "Current node's creation time" -msgstr "" - -msgid "Current node's update time" -msgstr "" - -msgid "Allow multiple terms per argument." -msgstr "Дозволити багато термінів на аргумент" - -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 (for OR) or 1,2,3 (for AND)." -msgstr "" - -msgid "Allow multiple arguments to work together." -msgstr "Дозволити багато аргументів в спільній роботі" - -msgid "If selected, multiple instances of this argument can work together, as though multiple terms were supplied to the same argument. This setting is not compatible with the \"Reduce duplicates\" setting." -msgstr "" - -msgid "Do not display items with no value in summary" -msgstr "" - -msgid "Invalid input" -msgstr "Некоректний ввід" - -msgid "Fail basic validation if any argument is given" -msgstr "" - -msgid "By checking this field, you can use this to make sure views with more arguments than necessary fail validation." -msgstr "" - -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." -msgstr "" - -msgid "Exclude the argument" -msgstr "Пропук аргумента" - -msgid "If selected, the numbers entered in the argument will be excluded rather than limiting the view." -msgstr "" - -msgid "Glossary mode" -msgstr "Режим глосарію" - -msgid "Glossary mode applies a limit to the number of characters used in the argument, which allows the summary view to act as a glossary." -msgstr "" - -msgid "Character limit" -msgstr "Лімит символа" - -msgid "How many characters of the argument to filter against. If set to 1, all fields starting with the letter in the argument would be matched." -msgstr "" - -msgid "When printing the argument result, how to transform the case." -msgstr "" - -msgid "No transform" -msgstr "Без перетворення" - -msgid "Upper case" -msgstr "Великі літери" - -msgid "Lower case" -msgstr "Малі літери" - -msgid "Capitalize each word" -msgstr "Виправлення першої літери в кожному слові" - -msgid "Case in path" -msgstr "Вибір в шляху" - -msgid "When printing url paths, how to transform the of the argument. Do not use this unless with Postgres as it uses case sensitive comparisons." -msgstr "" - -msgid "Transform spaces to dashes in URL" -msgstr "" - -msgid "The label for this field that will be displayed to end users if the style requires it." -msgstr "" - -msgid "Exclude from display" -msgstr "Прибрати з показу" - -msgid "Check this box to not display this field, but still load it in the view. Use this option to not show a grouping field in each record, or when doing advanced theming." -msgstr "" - -msgid "Rewrite the output of this field" -msgstr "" - -msgid "If checked, you can alter the output of this field by specifying a string of text with replacement tokens that can use any existing field output." -msgstr "" - -msgid "The text to display for this field. You may include HTML. You may enter data from this view as per the \"Replacement patterns\" below." -msgstr "" - -msgid "Output this field as a link" -msgstr "Вивід даного поля посиланням" - -msgid "If checked, this field will be made into a link. The destination must be given below." -msgstr "" - -msgid "Link path" -msgstr "Шлях посилання" - -msgid "The Drupal path or absolute URL for this link. You may enter data from this view as per the \"Replacement patterns\" below." -msgstr "" - -msgid "The CSS class to apply to the link." -msgstr "" - -msgid "Text to place as \"alt\" text which most browsers display as a tooltip when hovering over the link." -msgstr "" - -msgid "Prefix text" -msgstr "Текст-префікс" - -msgid "Any text to display before this link. You may include HTML." -msgstr "" - -msgid "Suffix text" -msgstr "Текст-суфікс" - -msgid "Any text to display after this link. You may include HTML." -msgstr "" - -msgid "<p>You must add some additional fields to this display before using this field. These fields may be marked as <em>Exclude from display</em> if you prefer. Note that due to rendering order, you cannot use fields that come after this field; if you need a field not listed here, rearrange your fields.</p>" -msgstr "" - -msgid "<p>The following substitution patterns are available for this display. Use the pattern shown on the left to display the value indicated on the right. Note that due to rendering order, you cannot use fields that come after this field; if you need a field not listed here, rearrange your fields.</p>" -msgstr "" - -msgid "Trim this field to a maximum length" -msgstr "Скоротити це поле до максимальної довжини" - -msgid "If checked, this field be trimmed to a maximum length in characters." -msgstr "" - -msgid "The maximum number of characters his field can be." -msgstr "Максимальна кількість символів в полі." - -msgid "Trim only on a word boundary" -msgstr "Обрізати тільки слова на межі" - -msgid "If checked, this field be trimmed only on a word boundary. This is guaranteed to be the maximum characters stated or less. If there are no word boundaries this could trim a field to nothing." -msgstr "" - -msgid "Add an ellipsis" -msgstr "Додати три крапки" - -msgid "If checked, a \"...\" will be added if a field was trimmed." -msgstr "" - -msgid "Strip HTML tags" -msgstr "Обмежувати теги HTML" - -msgid "If checked, all HTML tags will be stripped." -msgstr "" - -msgid "Field can contain HTML" -msgstr "Поле може сприймати HTML" - -msgid "If checked, HTML corrector will be run to ensure tags are properly closed after trimming." -msgstr "" - -msgid "File size display" -msgstr "" - -msgid "Formatted (in KB or MB)" -msgstr "" - -msgid "Raw bytes" -msgstr "" - -msgid "True/False" -msgstr "True/False" - -msgid "On/Off" -msgstr "Ввімкнено/Вимкнено" - -msgid "If checked, true will be displayed as false." -msgstr "Відмічене - TRUE буде відображене як FALSE" - -msgid "Time ago (with \"ago\" appended)" -msgstr "" - -msgid "Time span (future dates start with - )" -msgstr "" - -msgid "Time span (with \"ago/hence\" appended)" -msgstr "" - -msgid "If \"Custom\", see <a href=\"http://us.php.net/manual/en/function.date.php\" target=\"_blank\">the PHP docs</a> for date formats. If \"Time ago\" this is the the number of different units to display, which defaults to two." -msgstr "" - -msgid "Round" -msgstr "Округлення" - -msgid "If checked, the number will be rounded." -msgstr "" - -msgid "Specify how many digits to print after the decimal point." -msgstr "" - -msgid "What single character to use as a decimal point." -msgstr "" - -msgid "What single character to use as the thousands separator." -msgstr "" - -msgid "Text to put before the number, such as currency symbol." -msgstr "" - -msgid "Text to put after the number, such as currency symbol." -msgstr "" - -msgid "Simple separator" -msgstr "Простий розділювач" - -msgid "Empty list text" -msgstr "Текст, коли пустий список" - -msgid "If the list is empty, you may enter text here that will be displayed." -msgstr "Якщо список порожній, Ви можете ввести текст тут і його буде відображено." - -msgid "Display as link" -msgstr "Відображати як посилання" - -msgid "This item is currently not exposed. If you <strong>expose</strong> it, users will be able to change the filter as they view it." -msgstr "" - -msgid "This item is currently exposed. If you <strong>hide</strong> it, users will not be able to change the filter as they view it." -msgstr "" - -msgid "Unlock operator" -msgstr "Розблокувати оператор" - -msgid "When checked, the operator will be exposed to the user" -msgstr "" - -msgid "Operator identifier" -msgstr "Ідентифікатор оператора" - -msgid "This will appear in the URL after the ? to identify this operator." -msgstr "" - -msgid "Filter identifier" -msgstr "Ідентифікатор фільтра" - -msgid "This will appear in the URL after the ? to identify this filter. Cannot be blank." -msgstr "" - -msgid "This exposed filter is optional and will have added options to allow it not to be set." -msgstr "" - -msgid "Force this exposed filter to accept only one option." -msgstr "" - -msgid "Remember" -msgstr "Запам'ятати" - -msgid "Remember the last setting the user gave this filter." -msgstr "" - -msgid "The identifier is required if the filter is exposed." -msgstr "" - -msgid "This identifier is not allowed." -msgstr "Ідентифікатор недозволено" - -msgid "- Any -" -msgstr "- любе -" - -msgid "You must select a value unless this is an optional exposed filter." -msgstr "" - -msgid "exposed" -msgstr "відображено" - -msgid "Value type" -msgstr "Тип значення" - -msgid "A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred." -msgstr "" - -msgid "An offset from the current time such as \"+1 day\" or \"-2 hours and 30 minutes\"" -msgstr "" - -msgid "Invalid date format." -msgstr "Некоректний формат дати" - -msgid "Limit list to selected items" -msgstr "Ліміт списку обраних пунктів" - -msgid "If checked, the only items presented to the user will be the ones selected here." -msgstr "" - -msgid "not in" -msgstr "не в" - -msgid "<>" -msgstr "<>" - -msgid "Is all of" -msgstr "З всіма" - -msgid "Is none of" -msgstr "Без жодного" - -msgid "not" -msgstr "не" - -msgid "<" -msgstr "<" - -msgid "<=" -msgstr "<=" - -msgid ">=" -msgstr ">=" - -msgid ">" -msgstr ">" - -msgid "Is between" -msgstr "Між" - -msgid "between" -msgstr "між" - -msgid "Is not between" -msgstr "Поза межами" - -msgid "not between" -msgstr "оза межами" - -msgid "Min" -msgstr "Мін" - -msgid "And max" -msgstr "І макс" - -msgid "And" -msgstr "І" - -msgid "Contains any word" -msgstr "Містить будь-яке слово" - -msgid "has word" -msgstr "містить слово" - -msgid "Contains all words" -msgstr "Містить всі слова" - -msgid "has all" -msgstr "містить всі" - -msgid "begins" -msgstr "починається" - -msgid "ends" -msgstr "закінчується" - -msgid "!has" -msgstr "!has" - -msgid "Case sensitive filters may be faster. MySQL might ignore case sensitivity." -msgstr "" - -msgid "The label for this relationship that will be displayed only administratively." -msgstr "" - -msgid "Require this relationship" -msgstr "" - -msgid "If required, items that do not contain this relationship will not appear." -msgstr "" - -msgid "asc" -msgstr "зрост" - -msgid "desc" -msgstr "спад" - -msgid "The granularity is the smallest unit to use when determining whether two dates are the same; for example, if the granularity is \"Year\" then all dates in 1999, regardless of when they fall in 1999, will be considered the same date." -msgstr "" - -msgid "views_handler_sort_formula missing default: @formula" -msgstr "" - -msgid "If you <a href=\"@modules\">enable the advanced help module</a>, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "" - -msgid "If you install the advanced help module from !href, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "Проінсталювавши advanced help модуль із !href, Views буде описано краще. <a href=\"@hide\">Сховати.</a>" - -msgid "Warning! Broken view!" -msgstr "" - -msgid "Broken" -msgstr "Пошкоджено" - -msgid "Install the advanced help module for the getting started" -msgstr "Проінсталюйте модуль advanced help для початку роботи" - -msgid "Not sure what to do? Try the \"!getting-started\" page." -msgstr "Не впевнені що робити?? Спробуйте \"!getting-started\" сторінку." - -msgid "Displays" -msgstr "Відображення" - -msgid "These queries were run during view rendering:" -msgstr "" - -msgid "[@time ms]" -msgstr "[@time мсек]" - -msgid "This display has no path." -msgstr "Цей вид немає шляху" - -msgid "Query build time" -msgstr "Час побудови запиту" - -msgid "@time ms" -msgstr "@time мсек" - -msgid "Query execute time" -msgstr "Час виконання запиту" - -msgid "View render time" -msgstr "Переглянути час рендерингу" - -msgid "No query was run" -msgstr "Немає запущених запитів" - -msgid "Unable to preview due to validation errors." -msgstr "" - -msgid "Separate arguments with a / as though they were a URL path." -msgstr "" - -msgid "Clone view %view" -msgstr "Копія виду %view" - -msgid "View name" -msgstr "Ім'я Вигляду" - -msgid "This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If overriding a module provided view, the name must not be changed or instead a new view will be created." -msgstr "" - -msgid "View description" -msgstr "Опис Вигляду" - -msgid "This description will appear on the Views administrative UI to tell you what the view is about." -msgstr "" - -msgid "View tag" -msgstr "Тег Вигляду" - -msgid "Enter an optional tag for this view; it is used only to help sort views on the administrative page." -msgstr "" - -msgid "The view type is the primary table for which information is being retrieved. The view type controls what arguments, fields, sort criteria and filters are available, so once this is set it <strong>cannot be changed</strong>." -msgstr "" - -msgid "You must use a unique name for this view." -msgstr "" - -msgid "Are you sure you want to revert the view %name?" -msgstr "" - -msgid "Reverting the view will delete the view that is in the database, reverting it to the original default view. Any changes you have made will be lost and cannot be recovered." -msgstr "" - -msgid "Are you sure you want to delete the view %name?" -msgstr "" - -msgid "Deleting a view cannot be undone." -msgstr "" - -msgid "The view has been deleted." -msgstr "Вид видалено." - -msgid "There is no lock on view %view to break." -msgstr "" - -msgid "Are you sure you want to break the lock on view %name?" -msgstr "" - -msgid "By breaking this lock, any unsaved changes made by !user will be lost!" -msgstr "" - -msgid "Break lock" -msgstr "Перервати блокування" - -msgid "The lock has been broken and you may now edit this view." -msgstr "" - -msgid "Edit view %view" -msgstr "Змінити вид %view" - -msgid "Enter the name to use for this view if it is different from the source view. Leave blank to use the name of the view." -msgstr "" - -msgid "Paste view code here" -msgstr "Вставити код виду сюди" - -msgid "Unable to interpret view code." -msgstr "Неможливо інтерпретувати код виду" - -msgid "You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2." -msgstr "" - -msgid "That view is not compatible with this version of Views." -msgstr "" - -msgid "A view by that name already exists; please choose a different name" -msgstr "" - -msgid "Display plugin @plugin is not available." -msgstr "" - -msgid "Style plugin @plugin is not available." -msgstr "" - -msgid "Row plugin @plugin is not available." -msgstr "" - -msgid "@type handler @table.@field is not available." -msgstr "" - -msgid "Unable to import view." -msgstr "" - -msgid "The view has been saved." -msgstr "" - -msgid "Unknown or missing table name" -msgstr "" - -msgid "Click on an item to edit that item's details." -msgstr "" - -msgid "This view has a broken default display and cannot be used." -msgstr "" - -msgid "Export this view" -msgstr "Експортувати вид" - -msgid "Create a copy of this view" -msgstr "Створити копію даного виду" - -msgid "View \"@display\"" -msgstr "" - -msgid "Go to the real page for this display" -msgstr "" - -msgid "Invalid" -msgstr "Некоректно" - -msgid "Error: Display @display refers to a plugin named '@plugin', but that plugin doesn't exist!" -msgstr "" - -msgid "Missing style plugin" -msgstr "Загублено додаток стилю" - -msgid "Change settings for this style" -msgstr "" - -msgid " Style: !style" -msgstr " Стиль: !style" - -msgid "Invalid display id found while regenerating tabs" -msgstr "" - -msgid "Unable to initialize default display" -msgstr "" - -msgid "Add display" -msgstr "Додати вид" - -msgid "Remove display" -msgstr "Видалити вид" - -msgid "Restore display" -msgstr "Відновити вид" - -msgid "View analysis" -msgstr "Аналізування Вигляду" - -msgid "View details" -msgstr "Деталі Вигляду" - -msgid "Configure @type" -msgstr "Конфігурування @type" - -msgid "Rearrange @type" -msgstr "Пересортування @type" - -msgid "Broken field @id" -msgstr "Втрачене поле @id" - -msgid "There are no @types available to add." -msgstr "" - -msgid "Configure @type %item" -msgstr "" - -msgid "Configure extra settings for @type %item" -msgstr "" - -msgid "Change summary style for @type %item" -msgstr "" - -msgid "Internal error: broken plugin." -msgstr "" - -msgid "Configure summary style for @type %item" -msgstr "" - -msgid "Clear Views' cache" -msgstr "Очистити кеш" - -msgid "Add Views signature to all SQL queries" -msgstr "" - -msgid "All Views-generated queries will include a special 'VIEWS' = 'VIEWS' string in the WHERE clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting." -msgstr "" - -msgid "Disable views data caching" -msgstr "" - -msgid "Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site." -msgstr "" - -msgid "Ignore missing advanced help module" -msgstr "" - -msgid "Views uses the advanced help module to provide help text; if this module is not present Views will complain, unless this setting is checked." -msgstr "" - -msgid "Show query above live preview" -msgstr "" - -msgid "The live preview feature will show you the output of the view you're creating, as well as the view. Check here to show the query and other information above the view; leave this unchecked to show that information below the view." -msgstr "" - -msgid "Show other queries run during render during live preview" -msgstr "" - -msgid "Drupal has the potential to run many queries while a view is being rendered. Checking this box will display every query run during view render as part of the live preview." -msgstr "" - -msgid "Do not show hover links over views" -msgstr "" - -msgid "To make it easier to administrate your views, Views provides 'hover' links to take you to the edit and export screen of a view whenever the view is used. This can be distracting on some themes, though; if it is problematic, you can turn it off here." -msgstr "" - -msgid "Enable views performance statistics via the Devel module" -msgstr "" - -msgid "Check this to enable some Views query and performance statistics <em>if Devel is installed</em>." -msgstr "" - -msgid "Disable javascript with Views" -msgstr "" - -msgid "If you are having problems with the javascript, you can disable it here; the Views UI should degrade and still be usable without javascript, it just not as good." -msgstr "" - -msgid "Page region to output performance statistics" -msgstr "" - -msgid "Label for \"Any\" value on optional single-select exposed filters" -msgstr "" - -msgid "Error: missing @component" -msgstr "" - -msgid "Server reports invalid input error." -msgstr "" - -msgid "View analysis can find nothing to report." -msgstr "" - -msgid "This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display." -msgstr "" - -msgid "There are no Views 1 views stored in the database to convert." -msgstr "" - -msgid "Converted" -msgstr "Конвертовано" - -msgid "The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name." -msgstr "" - -msgid "Unable to find view." -msgstr "Неможливо знайти вид" - -msgid "Unable to convert view." -msgstr "Неможливо перетворити вид" - -msgid "The view has been deleted" -msgstr "Вид видалено." - -msgid "Handler @handler include tried to loop infinitely!" -msgstr "" - -msgid "Reduce duplicates" -msgstr "Зменшення дублів" - -msgid "This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution." -msgstr "" - -msgid "Default settings for this view." -msgstr "Базові налаштування для виду" - -msgid "Display the view as a page, with a URL and menu links." -msgstr "Відображення вигляду сторінкою, з адресою і елементом меню" - -msgid "Display the view as a block." -msgstr "Відображення вигляду блоком" - -msgid "Attachments added to other displays to achieve multiple views in the same view." -msgstr "Додатки додаються до інших видів для збору кількох видів в один." - -msgid "Display the view as a feed, such as an RSS feed." -msgstr "Відображення вигляду потоком, наприклад RSS" - -msgid "Displays rows one after another." -msgstr "Відображення рядків один за іншим" - -msgid "HTML List" -msgstr "Список HTML" - -msgid "Displays rows as an HTML list." -msgstr "Показувати рядки як HTML-список." - -msgid "Displays rows in a grid." -msgstr "Відображає рядків у сітці." - -msgid "Displays rows in a table." -msgstr "Показувати рядки в таблиці" - -msgid "Displays the default summary as a list." -msgstr "Відображає стандартний анонс списком" - -msgid "Displays the summary unformatted, with option for one after another or inline." -msgstr "Відображає сумарно, неформатовано, з опцією для одного за одним або в лінію." - -msgid "Generates an RSS feed from a view." -msgstr "Ґенерує RSS-стрічку з виду." - -msgid "Displays the fields with an optional template." -msgstr "Відображенян полів з необов'язковим шаблоном" - -msgid "Fixed entry" -msgstr "Фіксований запис" - -msgid "Will be available to all users." -msgstr "Буде доступно всім користувачам" - -msgid "Access will be granted to users with any of the specified roles." -msgstr "Доступ буде надано користувачам будь-якої вказаної ролі" - -msgid "No caching of Views data." -msgstr "Без кешування даних Видів" - -msgid "Time-based" -msgstr "Базовано на часі" - -msgid "Simple time-based caching of data." -msgstr "Просте кешування базоване на часі" - -msgid "set_display() called with invalid display id @display." -msgstr "" - -msgid "sort criteria" -msgstr "критерій сортування" - -msgid "Sort criterion" -msgstr "Критерій сортування" - -msgid "sort criterion" -msgstr "критерій сортування" - -msgid "filter" -msgstr "фільтр" - -msgid "jQuery UI Tabs: Mismatching fragment identifier." -msgstr "" - -msgid "jQuery UI Tabs: Not enough arguments to add tab." -msgstr "" - -msgid "Aggregator items are imported from external RSS and Atom news feeds." -msgstr "" - -msgid "The title of the aggregator item." -msgstr "" - -msgid "The link to the original source URL of the item." -msgstr "" - -msgid "The author of the original imported item." -msgstr "" - -msgid "The actual content of the imported item." -msgstr "" - -msgid "The date the original feed item was posted. (With some feeds, this will be the date it was imported.)" -msgstr "" - -msgid "Feed ID" -msgstr "Feed ID" - -msgid "The unique ID of the aggregator feed." -msgstr "" - -msgid "The title of the aggregator feed." -msgstr "Заголовок агрегатора пункту." - -msgid "The link to the source URL of the feed." -msgstr "Посилання на URL каналу." - -msgid "The date the feed was last checked for new content." -msgstr "" - -msgid "The description of the aggregator feed." -msgstr "" - -msgid "The date of the most recent new content onf the feed." -msgstr "" - -msgid "The unique ID of the aggregator category." -msgstr "" - -msgid "The title of the aggregator category." -msgstr "" - -msgid "Display the aggregator item using the data from the original source." -msgstr "" - -msgid "The book the node is in." -msgstr "" - -msgid "The weight of the book page." -msgstr "" - -msgid "The depth of the book page in the hierarchy; top level books have a depth of 1." -msgstr "" - -msgid "The order of pages in the book hierarchy. If you want the exactly right order, remember to sort by weight, too." -msgstr "" - -msgid "The parent book node." -msgstr "" - -msgid "The title of the comment." -msgstr "Тема коментаря" - -msgid "The text of the comment." -msgstr "Текст коментаря" - -msgid "The comment ID of the field" -msgstr "ID коментаря поля" - -msgid "The name of the comment's author. Can be rendered as a link to the author's homepage." -msgstr "" - -msgid "The website address of the comment's author. Can be rendered as a link. Will be empty if the author is a registered user." -msgstr "" - -msgid "Post date" -msgstr "Дата публікації" - -msgid "Date and time of when the comment was posted." -msgstr "" - -msgid "Whether or not the comment is currently in moderation." -msgstr "" - -msgid "Provide a simple link to view the comment." -msgstr "" - -msgid "Provide a simple link to edit the comment." -msgstr "" - -msgid "Provide a simple link to delete the comment." -msgstr "" - -msgid "Node link" -msgstr "Посилання матеріалу" - -msgid "Display the standard comment link used on regular nodes." -msgstr "" - -msgid "The node the comment is a reply to." -msgstr "" - -msgid "The User ID of the comment's author." -msgstr "ID користувача-автора коментаря" - -msgid "Parent CID" -msgstr "Батьківська CID" - -msgid "The Comment ID of the parent comment." -msgstr "" - -msgid "Last comment time" -msgstr "Час останнього коментаря" - -msgid "Date and time of when the last comment was posted." -msgstr "" - -msgid "Last comment author" -msgstr "Автор останнього коментаря" - -msgid "The name of the author of the last posted comment." -msgstr "" - -msgid "Comment count" -msgstr "Кількість коментарів" - -msgid "The number of comments a node has." -msgstr "" - -msgid "Updated/commented date" -msgstr "Дата оновлення/коментування" - -msgid "The most recent of last comment posted or node updated time." -msgstr "" - -msgid "The number of new comments on the node." -msgstr "" - -msgid "Comment status" -msgstr "Статус коментарів" - -msgid "Whether comments are enabled or disabled on the node." -msgstr "" - -msgid "User posted or commented" -msgstr "" - -msgid "Display nodes only if a user posted the node or commented on the node." -msgstr "" - -msgid "Display the comment with standard comment view." -msgstr "Відображення коментаря стандартним виглядом коментарів" - -msgid "Display the comment as RSS." -msgstr "Показати коментарі у форматі RSS." - -msgid "Link to contact page" -msgstr "" - -msgid "Provide a simple link to the user contact page." -msgstr "" - -msgid "Locale source" -msgstr "Локальне джерело" - -msgid "A source string for translation, in English or the default site language." -msgstr "" - -msgid "LID" -msgstr "LID" - -msgid "The ID of the source string." -msgstr "ID початкового джерела." - -msgid "A description of the location or context of the string." -msgstr "" - -msgid "The group the translation is in." -msgstr "" - -msgid "The full original string." -msgstr "Повний оригінальний текст." - -msgid "The version of Drupal core that this string is for." -msgstr "" - -msgid "Provide a simple link to edit the translations." -msgstr "" - -msgid "Locale target" -msgstr "" - -msgid "The full translation string." -msgstr "" - -msgid "The language this translation is in." -msgstr "" - -msgid "Singular LID" -msgstr "Одинична LID" - -msgid "The ID of the parent translation." -msgstr "ID батьківського перекладу." - -msgid "Whether or not the translation is plural." -msgstr "" - -msgid "The title of the node." -msgstr "Тема матеріалу" - -msgid "The date the node was posted." -msgstr "" - -msgid "The type of a node (for example, \"blog entry\", \"forum post\", \"story\", etc)." -msgstr "" - -msgid "Whether or not the node is published." -msgstr "" - -msgid "Published or admin" -msgstr "Опубліковано або адміністування" - -msgid "Filters out unpublished nodes if the current user cannot view them." -msgstr "" - -msgid "Whether or not the node is promoted to the front page." -msgstr "" - -msgid "Whether or not the node is moderated." -msgstr "" - -msgid "Whether or not the node is sticky." -msgstr "" - -msgid "Provide a simple link to the node." -msgstr "" - -msgid "Provide a simple link to edit the node." -msgstr "" - -msgid "Provide a simple link to delete the node." -msgstr "" - -msgid "In the form of CCYYMMDD." -msgstr "" - -msgid "Created year + month" -msgstr "Рік створення + місяць" - -msgid "In the form of YYYYMM." -msgstr "У форматі РРРРММ." - -msgid "Created year" -msgstr "Рік створення" - -msgid "In the form of YYYY." -msgstr "У форматі РРРР." - -msgid "Created month" -msgstr "Місяць створення" - -msgid "In the form of MM (01 - 12)." -msgstr "У форматі ММ(01 - 12)." - -msgid "Created day" -msgstr "День створення" - -msgid "In the form of DD (01 - 31)." -msgstr "У форматі ДД (01 - 31)." - -msgid "Created week" -msgstr "Тиждень створення" - -msgid "Updated year + month" -msgstr "" - -msgid "Updated year" -msgstr "" - -msgid "Updated month" -msgstr "" - -msgid "Updated day" -msgstr "" - -msgid "Updated week" -msgstr "" - -msgid "Node revision" -msgstr "Ревізія матеріалу" - -msgid "Node revisions are a history of changes to nodes." -msgstr "Ревізія матеріалів це історія змін." - -msgid "Relate a node revision to the user who created the revision." -msgstr "Відносити матеріал до користувача, який створив ревізію." - -msgid "The actual, full data in the body field; this may not be valid data on all node types." -msgstr "" - -msgid "The stored teaser field. This may not be valid or useful data on all node types." -msgstr "" - -msgid "Vid" -msgstr "Vid" - -msgid "The revision ID of the node revision." -msgstr "Ідентифікатор версії матеріалу" - -msgid "The log message entered when the revision was created." -msgstr "" - -msgid "The date the node revision was created." -msgstr "" - -msgid "Input format id" -msgstr "" - -msgid "The numeric input format of the node revision. !default means the default input format." -msgstr "" - -msgid "The name of the input format of the node revision." -msgstr "" - -msgid "Revert link" -msgstr "Посилання повернення" - -msgid "Provide a simple link to revert to the revision." -msgstr "" - -msgid "Provide a simple link to delete the node revision." -msgstr "" - -msgid "Filter by access." -msgstr "" - -msgid "Filter for nodes by view access. <strong>Not necessary if you are using node as your base table.</strong>" -msgstr "" - -msgid "Has new content" -msgstr "Має новий вміст" - -msgid "Show a marker if the node has new or updated content." -msgstr "" - -msgid "Show only nodes that have new content." -msgstr "" - -msgid "Node ID from URL" -msgstr "ID матеріалу з URL" - -msgid "Display %display has no access control but does not contain a filter for published nodes." -msgstr "" - -msgid "Poll" -msgstr "Опитування" - -msgid "Whether the poll is open for voting." -msgstr "" - -msgid "@field-name" -msgstr "@назва поля" - -msgid "Profile textfield" -msgstr "Однорядкове поле введення тексту профілю" - -msgid "Profile textarea" -msgstr "Багаторядкове поле введення тексту профілю" - -msgid "Profile checkbox" -msgstr "Чекбокс профілю" - -msgid "Profile URL" -msgstr "URL профілю" - -msgid "Profile selection" -msgstr "Вибір профілю" - -msgid "Profile freeform list %field-name." -msgstr "Profile freeform list %field-name." - -msgid "Profile date %field-name." -msgstr "Профіль датою %field-name." - -msgid "The score of the search item. This will not be used if the search filter is not also present." -msgstr "" - -msgid "Links from" -msgstr "Посилання з" - -msgid "Other nodes that are linked from the node." -msgstr "" - -msgid "Links to" -msgstr "Посилання на" - -msgid "Other nodes that link to the node." -msgstr "" - -msgid "Search Terms" -msgstr "Пошукові терміни" - -msgid "The terms to search for." -msgstr "Терміни для пошуку." - -msgid "Display the results with standard search view." -msgstr "Відображає результати пошуку з стандартним видом." - -msgid "Node statistics" -msgstr "Статистика матеріалів" - -msgid "Total views" -msgstr "Переглядів" - -msgid "The total number of times the node has been viewed." -msgstr "" - -msgid "Views today" -msgstr "Переглядів сьогодні" - -msgid "The total number of times the node has been viewed today." -msgstr "" - -msgid "Most recent view" -msgstr "Найактуальніший вид" - -msgid "The most recent time the node has been viewed." -msgstr "" - -msgid "Stores site access information." -msgstr "" - -msgid "Browser session ID of user that visited page." -msgstr "" - -msgid "Title of page visited." -msgstr "Заголовок відвідуваної сторінки." - -msgid "Internal path to page visited (relative to Drupal root.)" -msgstr "Внутрішній шлях до відвідуваної сторінки (відносно папки, де встановлено Drupal)." - -msgid "Referrer URI." -msgstr "URI реферала." - -msgid "Hostname of user that visited the page." -msgstr "" - -msgid "The user who visited the site." -msgstr "" - -msgid "Time in milliseconds that the page took to load." -msgstr "" - -msgid "Timestamp of when the page was visited." -msgstr "" - -msgid "Files maintained by Drupal and various modules." -msgstr "" - -msgid "The ID of the file." -msgstr "ID файлу." - -msgid "The name of the file." -msgstr "Ім'я файлу" - -msgid "The path of the file." -msgstr "Шлях до файлу." - -msgid "The mime type of the file." -msgstr "Mime-тип файлу." - -msgid "The status of the file." -msgstr "Статус файлу." - -msgid "The date the file was uploaded." -msgstr "Дата завантаження." - -msgid "Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the \"Taxonomy: Term\" field is; and can similarly cause duplicates." -msgstr "" - -msgid "Taxonomy terms are attached to nodes." -msgstr "" - -msgid "Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the result set." -msgstr "" - -msgid "Taxonomy term name." -msgstr "" - -msgid "The term weight field" -msgstr "Термі напівжирного поля" - -msgid "The description associated with a taxonomy term." -msgstr "" - -msgid "Filter the results of \"Taxonomy: Term\" to a particular vocabulary." -msgstr "" - -msgid "All terms" -msgstr "Всі терміни" - -msgid "Display all taxonomy terms associated with a node from specified vocabularies." -msgstr "" - -msgid "The parent term of the term. This can produce duplicate entries if you are using a vocabulary that allows multiple parents." -msgstr "" - -msgid "The parent term of the term." -msgstr "Терм-попередник" - -msgid "Term synonym" -msgstr "Термін синонім" - -msgid "Term synonyms may be used to find terms by alternate names." -msgstr "" - -msgid "Term ID (with depth)" -msgstr "" - -msgid "The depth filter is more complex, so provides fewer options." -msgstr "" - -msgid "Term ID depth modifier" -msgstr "" - -msgid "Allows the \"depth\" for Taxonomy: Term ID (with depth) to be modified via an additional argument." -msgstr "" - -msgid "Node translation" -msgstr "Переклад матеріалу" - -msgid "Translation set node ID" -msgstr "Задати ID перекладу матеріалу" - -msgid "The ID of the translation set the content belongs to." -msgstr "" - -msgid "Source translation" -msgstr "Базовий переклад" - -msgid "The source that this content was translated from." -msgstr "" - -msgid "Versions of content in different languages." -msgstr "" - -msgid "Nodes that are either untranslated or are the original versions of a translation set." -msgstr "" - -msgid "Child translation" -msgstr "Дочірній переклад" - -msgid "Nodes that are translations of a source translation." -msgstr "" - -msgid "The translation status of the node--whether or not the translation needs to be updated." -msgstr "" - -msgid "Outdated" -msgstr "Просрочений" - -msgid "upload" -msgstr "завантажити" - -msgid "The description of the uploaded file." -msgstr "" - -msgid "Listed" -msgstr "Списком" - -msgid "Whether or not the file is marked to be listed." -msgstr "" - -msgid "All files attached to a node with upload.module." -msgstr "" - -msgid "Has attached files" -msgstr "Присутні вкладені файли" - -msgid "Only display items with attached files. This can cause duplicates if there are multiple attached files." -msgstr "" - -msgid "Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node." -msgstr "" - -msgid "The user ID" -msgstr "ID користувача" - -msgid "The user or author name." -msgstr "Користувач або ім’я автора" - -msgid "Email address for a given user. This field is normally not shown to users, so be cautious when using it." -msgstr "" - -msgid "Language of the user" -msgstr "" - -msgid "The user's picture, if allowed." -msgstr "Зображення користувача. якщо дозволено." - -msgid "The date the user was created." -msgstr "Дата створення користувача." - -msgid "The user's last access date." -msgstr "Дата останнього візиту користувача." - -msgid "The user's last login date." -msgstr "Остання дата входу користувача" - -msgid "Whether a user is active or blocked." -msgstr "" - -msgid "The user's signature." -msgstr "Підпис користувача" - -msgid "Provide a simple link to edit the user." -msgstr "" - -msgid "Provide a simple link to delete the user." -msgstr "" - -msgid "Roles that a user belongs to." -msgstr "" - -msgid "User ID from URL" -msgstr "ІД користувача з Адреси" - -msgid "User ID from logged in user" -msgstr "ІД зареєстрованого користувача" - -msgid "Randomize the display order." -msgstr "Випадковість сортування виду" - -msgid "Null" -msgstr "Зеро" - -msgid "Allow an argument to be ignored. The query will not be altered by this argument." -msgstr "" - -msgid "Provide custom text or link." -msgstr "Занзачити свій текст або посилання" - -msgid "View result counter" -msgstr "Перегляд лічильника результату" - -msgid "Displays the actual position of the view result" -msgstr "" - -msgid "Link this field to its aggregator category page" -msgstr "" - -msgid "No user" -msgstr "Нема користувача" - -msgid "Link this field to its comment" -msgstr "" - -msgid "Show teaser-style link" -msgstr "" - -msgid "Link this field to new comments" -msgstr "" - -msgid "Display nothing if no new comments" -msgstr "Не відображає нічого, за відсутності коментарів" - -msgid "Type of link" -msgstr "" - -msgid "contact" -msgstr "контакт" - -msgid "Contact %user" -msgstr "" - -msgid "Unknown group" -msgstr "Невідома група" - -msgid "Unknown language" -msgstr "Невідома мова" - -msgid "Current user's language" -msgstr "Теперішня мова користувача" - -msgid "Default site language" -msgstr "Базова мова сайту" - -msgid "No language" -msgstr "Нема мови" - -msgid "Current installed version" -msgstr "Теперішня встановлена версія" - -msgid "Unknown node type" -msgstr "Невідомий тип матеріалу" - -msgid "Check for new comments as well" -msgstr "" - -msgid "If you wish to validate for specific node types, check them; if none are checked, all nodes will pass." -msgstr "" - -msgid "Validate user has access to the node" -msgstr "" - -msgid "Node IDs separated by , or +" -msgstr "" - -msgid "Build mode" -msgstr "Створення режиму" - -msgid "Display node comments" -msgstr "Відображає коментарі до матеріалу" - -msgid "No alternate" -msgstr "нема альтернативних" - -msgid "Alternative sort" -msgstr "Альтернативне сортування" - -msgid "If no search is performed and this field does not appear, pick an alternative default table sort field." -msgstr "" - -msgid "Alternate sort order" -msgstr "" - -msgid "On empty input" -msgstr "На порожньому полі" - -msgid "Show None" -msgstr "Не позувати нічого" - -msgid "Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>." -msgstr "" - -msgid "Display score" -msgstr "Відображає оцінку" - -msgid "Link this field to download the file" -msgstr "" - -msgid "Set the breadcrumb for the term parents" -msgstr "" - -msgid "If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received." -msgstr "" - -msgid "The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term \"fruit\" and a child term \"apple\", with a depth of 1 (or higher) then filtering for the term \"fruit\" will get nodes that are tagged with \"apple\" as well as \"fruit\". If negative, the reverse is true; searching for \"apple\" will also pick up nodes tagged with \"fruit\" if depth is -1 (or lower)." -msgstr "" - -msgid "Allow multiple terms per argument" -msgstr "Дозволити багато термінів на аргумент" - -msgid "If selected, users can enter multiple arguments in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this argument." -msgstr "" - -msgid "No vocabulary" -msgstr "Без словника" - -msgid "Link this field to its taxonomy term page" -msgstr "" - -msgid "Link this field to its term page" -msgstr "" - -msgid "Limit terms by vocabulary" -msgstr "Ліміт термінів словника" - -msgid "Select which vocabulary to show terms for in the regular options." -msgstr "" - -msgid "Dropdown" -msgstr "Випадання" - -msgid "Show hierarchy in dropdown" -msgstr "" - -msgid "An invalid vocabulary is selected. Please change it in the options." -msgstr "" - -msgid "Select terms from vocabulary @voc" -msgstr "" - -msgid "Select terms" -msgstr "Вибір термінів" - -msgid "Unable to find term: @terms" -msgid_plural "Unable to find terms: @terms" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "If you wish to validate for specific vocabularies, check them; if none are checked, all terms will pass." -msgstr "" - -msgid "Term IDs separated by , or +" -msgstr "" - -msgid "Term name or synonym" -msgstr "" - -msgid "Term name/synonym converted to Term ID" -msgstr "" - -msgid "Select the form of this argument; if using term name, it is generally more efficient to convert it to a term ID and use Taxonomy: Term ID rather than Taxonomy: Term Name\" as an argument." -msgstr "" - -msgid "Transform dashes in URL to spaces in term name arguments" -msgstr "" - -msgid "Include untranslated nodes" -msgstr "" - -msgid "Current language" -msgstr "Теперішня мова" - -msgid "Translation option" -msgstr "Параметри перекладу" - -msgid "The translation options allows you to select which translation or translations in a translation set join on. Select \"Current language\" or \"Default language\" to join on the translation in the current or default language respectively. Select a specific language to join on a translation in that language. If you select \"All\", each translation will create a new row, which may appear to cause duplicates." -msgstr "" - -msgid "To the user" -msgstr "До користувача" - -msgid "With a mailto:" -msgstr "З mailto:" - -msgid "Is the logged in user" -msgstr "Залоґований користувач" - -msgid "Usernames" -msgstr "Імена користувачів" - -msgid "Enter a comma separated list of user names." -msgstr "" - -msgid "Unable to find user: @users" -msgid_plural "Unable to find users: @users" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "Also look for a node and use the node author" -msgstr "" - -msgid "Type of user argument to allow" -msgstr "" - -msgid "Only allow numeric UIDs" -msgstr "" - -msgid "Only allow string usernames" -msgstr "" - -msgid "Allow both numeric UIDs and string usernames" -msgstr "" - -msgid "Restrict user based on role" -msgstr "" - -msgid "Restrict to the selected roles" -msgstr "" - -msgid "If no roles are selected, users from any role will be allowed." -msgstr "" - -msgid "Unrestricted" -msgstr "Необмежено" - -msgid "Only users with the selected permission flag will be able to access this display. Note that users with \"access all views\" can see any view, regardless of other permissions." -msgstr "" - -msgid "No role(s) selected" -msgstr "Жодної ролі(ролей не обрано)" - -msgid "Multiple roles" -msgstr "Багато ролей" - -msgid "Only the checked roles will be able to access this display. Note that users with \"access all views\" can see any view, regardless of role." -msgstr "" - -msgid "You must select at least one role if type is \"by role\"" -msgstr "" - -msgid "Note: you do not have permission to modify this. If you change the default argument type, this setting will be lost and you will NOT be able to get it back." -msgstr "" - -msgid "PHP argument code" -msgstr "" - -msgid "Enter PHP code that returns a value to use for this argument. Do not use <?php ?>. You must return only a single value for just this argument." -msgstr "" - -msgid "Note: you do not have permission to modify this. If you change the validator, this setting will be lost and you will NOT be able to get it back." -msgstr "" - -msgid "PHP validate code" -msgstr "" - -msgid "Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be \"$argument\" and the view will be \"$view\". You may change the argument by setting \"$handler->argument\"." -msgstr "" - -msgid "Never cache" -msgstr "" - -msgid "Query results" -msgstr "" - -msgid "The length of time raw query results should be cached." -msgstr "" - -msgid "Rendered output" -msgstr "" - -msgid "The length of time rendered HTML output should be cached." -msgstr "" - -msgid "Broken field" -msgstr "" - -msgid "Change the name of this display." -msgstr "" - -msgid "Change the title that this display will use." -msgstr "" - -msgid "Change the style plugin." -msgstr "Змінити додаток стилю" - -msgid "Row style" -msgstr "Рядковий стиль" - -msgid "Change the row plugin." -msgstr "" - -msgid "Use AJAX" -msgstr "Використовувати AJAX" - -msgid "Change whether or not this display will use AJAX." -msgstr "" - -msgid "Mini" -msgstr "Міні" - -msgid "Change this display's pager setting." -msgstr "" - -msgid "Items per page" -msgstr "Елементів на сторінку" - -msgid "Change how many items to display." -msgstr "" - -msgid "Specify whether this display will provide a \"more\" link." -msgstr "" - -msgid "Display only distinct items, without duplicates." -msgstr "" - -msgid "Specify access control type for this display." -msgstr "" - -msgid "Change settings for this access type." -msgstr "" - -msgid "Specify caching type for this display." -msgstr "" - -msgid "Change settings for this caching type." -msgstr "" - -msgid "Link display" -msgstr "Відображення посилання" - -msgid "Specify which display this display will link to." -msgstr "" - -msgid "Exposed form in block" -msgstr "" - -msgid "Allow the exposed form to appear in a block instead of the view." -msgstr "" - -msgid "Unknown/missing format" -msgstr "" - -msgid "Change this display's !name." -msgstr "" - -msgid "Get information on how to theme this display" -msgstr "" - -msgid "The name of this display" -msgstr "Ім'я виду" - -msgid "This title will appear only in the administrative interface for the View." -msgstr "" - -msgid "The title of this view" -msgstr "" - -msgid "This title will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc." -msgstr "" - -msgid "Use AJAX when available to load this view" -msgstr "" - -msgid "If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This means the entire page will not refresh. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content." -msgstr "" - -msgid "Use a pager for this view" -msgstr "Використовувати розбиття по сторінках для цього виду" - -msgid "Full pager" -msgstr "Повний стиль" - -msgid "Mini pager" -msgstr "Міні стиль" - -msgid "Pager element" -msgstr "Розбиття по сторінках" - -msgid "Unless you're experiencing problems with pagers related to this view, you should leave this at 0. If using multiple pagers on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add a lot of commas to your URLs, so avoid if possible." -msgstr "" - -msgid "The number of items to display per page. Enter 0 for no limit." -msgstr "" - -msgid "The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed. Offset can not be used if items to display is 0; instead use a very large number there." -msgstr "" - -msgid "Add a more link to the bottom of the display." -msgstr "" - -msgid "Create more link" -msgstr "Створити посилання \"далі(ще)\"" - -msgid "This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above." -msgstr "" - -msgid "Text to use for the more link." -msgstr "" - -msgid "The text to display for the more link." -msgstr "" - -msgid "This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution." -msgstr "" - -msgid "Access restrictions" -msgstr "Обмеження доступу" - -msgid "You may also adjust the !settings for the currently selected style by clicking on the icon." -msgstr "" - -msgid "Access options" -msgstr "Параметри доступу" - -msgid "Caching options" -msgstr "" - -msgid "Display even if view has no result" -msgstr "" - -msgid "Text to display beneath the view. May contain an explanation or links or whatever you like. Optional." -msgstr "" - -msgid "Text to display if the view has no results. Optional." -msgstr "" - -msgid "How should this view be styled" -msgstr "" - -msgid "If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary." -msgstr "" - -msgid "Style options" -msgstr "Параметри стилю" - -msgid "Row style options" -msgstr "Параметри стилю рядка" - -msgid "How should each row in this view be styled" -msgstr "" - -msgid "You may also adjust the !settings for the currently selected row style by clicking on the icon." -msgstr "" - -msgid "Which display to use for path" -msgstr "" - -msgid "Which display to use to get this display's path for things like summary links, rss feed links, more links, etc." -msgstr "" - -msgid "Display output" -msgstr "Відображення виводу" - -msgid "Alternative display output" -msgstr "Альтернативний стиль виду" - -msgid "Style output" -msgstr "Стиль виводу" - -msgid "Alternative style" -msgstr "Альтернативний стиль" - -msgid "Row style output" -msgstr "Стиль виводу - в рядок" - -msgid "Alternative row style" -msgstr "Альтернативний стиль рядка" - -msgid "Field @field (ID: @id)" -msgstr "" - -msgid "This section lists all possible templates for the display plugin and for the style plugins, ordered roughly from the least specific to the most specific. The active template for each plugin -- which is the most specific template found on the system -- is highlighted in bold." -msgstr "" - -msgid "Change theme" -msgstr "" - -msgid "Rescan template files" -msgstr "Перечитати файли шаблона" - -msgid "<strong>Important!</strong> When adding, removing, or renaming template files, it is necessary to make Drupal aware of the changes by making it rescan the files on your system. By clicking this button you clear Drupal's theme registry and thereby trigger this rescanning process. The highlighted templates above will then reflect the new state of your system." -msgstr "" - -msgid "Theming information (display)" -msgstr "" - -msgid "Back to !info." -msgstr "Повернутись до !info" - -msgid "theming information" -msgstr "Інформація для розробки тем" - -msgid "This display has no theming information" -msgstr "" - -msgid "This is the default theme template used for this display." -msgstr "" - -msgid "This is an alternative template for this display." -msgstr "" - -msgid "Theming information (style)" -msgstr "" - -msgid "This display has no style theming information" -msgstr "" - -msgid "This is the default theme template used for this style." -msgstr "" - -msgid "This is an alternative template for this style." -msgstr "" - -msgid "Theming information (row style)" -msgstr "" - -msgid "This display has no row style theming information" -msgstr "" - -msgid "This is the default theme template used for this row style." -msgstr "" - -msgid "This is an alternative template for this row style." -msgstr "" - -msgid "Put the exposed form in a block" -msgstr "" - -msgid "If set, any exposed widgets will not appear with this view. Instead, a block will be made available to the Drupal block administration system, and the exposed form will appear there. Note that this block must be enabled manually, Views will not enable it for you." -msgstr "" - -msgid "File found in folder @template-path" -msgstr "" - -msgid "(File not found, in folder @template-path)" -msgstr "" - -msgid "Status: using default values." -msgstr "" - -msgid "Update default display" -msgstr "Оновити базовий вид" - -msgid "Status: using overridden values." -msgstr "" - -msgid "Display \"@display\" uses fields but there are none defined for it or all are excluded." -msgstr "" - -msgid "Display \"@display\" uses a path but the path is undefined." -msgstr "" - -msgid "Display \"@display\" has an invalid style plugin." -msgstr "" - -msgid "Exposed form: @view-@display_id" -msgstr "Відображена форма: @view-@display_id" - -msgid "Attachment settings" -msgstr "Параметри вкладень" - -msgid "Inherit arguments" -msgstr "Залежність аргументів" - -msgid "Inherit exposed filters" -msgstr "Залежність відображених фільтрів" - -msgid "Multiple displays" -msgstr "Сукупність відображень" - -msgid "Should this display inherit its arguments from the parent display to which it is attached?" -msgstr "" - -msgid "Should this display inherit its exposed filter values from the parent display to which it is attached?" -msgstr "" - -msgid "Attach before or after the parent display?" -msgstr "" - -msgid "Select which display or displays this should attach to." -msgstr "" - -msgid "@view: @display" -msgstr "@view: @display" - -msgid "Block admin description" -msgstr "" - -msgid "Block caching type" -msgstr "" - -msgid "This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed." -msgstr "" - -msgid "Using the site name" -msgstr "" - -msgid "Use the site name for the title" -msgstr "" - -msgid "The feed icon will be available only to the selected displays." -msgstr "" - -msgid "This view will be displayed by visiting this path on your site. It is recommended that the path be something like \"path/%/%/feed\" or \"path/%/%/rss.xml\", putting one % in the path for each argument you have defined in the view." -msgstr "" - -msgid "No menu" -msgstr "Без меню" - -msgid "Normal: @title" -msgstr "Нормально: @title" - -msgid "Tab: @title" -msgstr "Закладка: @title" - -msgid "Change settings for the parent menu" -msgstr "" - -msgid "The menu path or URL of this view" -msgstr "" - -msgid "This view will be displayed by visiting this path on your site. You may use \"%\" in your URL to represent values that will be used for arguments: For example, \"node/%/feed\"." -msgstr "" - -msgid "Menu item entry" -msgstr "Пункт елемента меню" - -msgid "No menu entry" -msgstr "Без пункта меню" - -msgid "Normal menu entry" -msgstr "Нормальний пункт меню" - -msgid "Menu tab" -msgstr "Закладки меню" - -msgid "Default menu tab" -msgstr "Базові закладки меню" - -msgid "If set to normal or tab, enter the text to use for the menu item." -msgstr "" - -msgid "If set to normal or tab, enter the text to use for the menu item's description." -msgstr "" - -msgid "Warning: Changing this item's menu will not work reliably in Drupal 6.4 or earlier. Please upgrade your copy of Drupal at !url." -msgstr "" - -msgid "Insert item into an available menu." -msgstr "" - -msgid "Menu selection requires the activation of menu module." -msgstr "" - -msgid "The lower the weight the higher/further left it will appear." -msgstr "" - -msgid "Default tab options" -msgstr "Базові параметри закладки" - -msgid "When providing a menu item as a tab, Drupal needs to know what the parent menu item of that tab will be. Sometimes the parent will already exist, but other times you will need to have one created. The path of a parent item will always be the same path with the last part left off. i.e, if the path to this view is <em>foo/bar/baz</em>, the parent path would be <em>foo/bar</em>." -msgstr "" - -msgid "Already exists" -msgstr "Вже наявне" - -msgid "If creating a parent menu item, enter the title of the item." -msgstr "" - -msgid "If creating a parent menu item, enter the description of the item." -msgstr "" - -msgid "If the parent menu item is a tab, enter the weight of the tab. The lower the number, the more to the left it will be." -msgstr "" - -msgid "\"$arg\" is no longer supported. Use % instead." -msgstr "" - -msgid "\"%\" may not be used for the first segment of a path." -msgstr "" - -msgid "Views cannot create normal menu items for paths with a % in them." -msgstr "" - -msgid "A display whose path ends with a % cannot be a tab." -msgstr "" - -msgid "Title is required for this menu type." -msgstr "" - -msgid "Display @display is set to use a menu but the menu title is not set." -msgstr "" - -msgid "Display @display is set to use a parent menu but the parent menu title is not set." -msgstr "" - -msgid "Inline fields" -msgstr "Поля без розділювачів" - -msgid "Inline fields will be displayed next to each other rather than one after another." -msgstr "" - -msgid "The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field." -msgstr "" - -msgid "Grouping field" -msgstr "Групуюче поле" - -msgid "You may optionally specify a field by which to group the records. Leave blank to not group." -msgstr "" - -msgid "Style @style requires a row style but the row plugin is invalid." -msgstr "" - -msgid "Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down." -msgstr "" - -msgid "Use the site mission for the description" -msgstr "" - -msgid "RSS description" -msgstr "Опис RSS" - -msgid "This will appear in the RSS feed itself." -msgstr "" - -msgid "Display record count with link" -msgstr "" - -msgid "Override number of items to display" -msgstr "" - -msgid "Display items inline" -msgstr "Відображення елементів без розділювачів" - -msgid "You need at least one field before you can configure your table settings" -msgstr "" - -msgid "Override normal sorting if click sorting is used" -msgstr "" - -msgid "Enable Drupal style \"sticky\" table headers (Javascript)" -msgstr "" - -msgid "(Sticky header effects will not be active for preview below, only on live output.)" -msgstr "" - -msgid "If a default sort order is selected, what order should it use by default." -msgstr "" - -msgid "Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column click sortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section." -msgstr "" - -msgid "The style selected does not utilize fields." -msgstr "" - -msgid "None defined" -msgstr "Не зазначено" - -msgid "This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a href=\"!break\">break this lock</a>." -msgstr "" - -msgid "New view" -msgstr "Новий вид" - -msgid "Changed view" -msgstr "Змінений вид" - -msgid "View %name, displaying items of type <strong>@base</strong>." -msgstr "" - -msgid "Live preview" -msgstr "Швидкий вид" - -msgid "<em>@type</em> @base view: <strong>@view</strong>" -msgstr "<em>@type</em> @base view: <strong>@view</strong>" - -msgid "Title: @title" -msgstr "Заголовок: @title" - -msgid "‹‹" -msgstr "‹‹" - -msgid "››" -msgstr "››" - -msgid "@current of @max" -msgstr "" - -msgid "There are no views to be exported at this time." -msgstr "Наразі відсутні види для експортування" - -msgid "Show only these tags" -msgstr "Показувати лише ці теги" - -msgid "name = @module Export Module\n" -msgstr "" - -msgid "description = Exports some views of @module\n" -msgstr "" - -msgid "Put this in @module.info in your modules/@module directory" -msgstr "" - -msgid "Put this in @module.module in your modules/@module directory" -msgstr "" - -msgid "Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory" -msgstr "" - -msgid "use views exporter" -msgstr "використання експорту видів" - -msgid "Bulk export" -msgstr "Масовий експорт" - -msgid "Views exporter" -msgstr "Експорт видів" - -msgid "Allows exporting multiple views at once." -msgstr "" - diff --git a/sites/all/modules/views/translations/views.pot b/sites/all/modules/views/translations/views.pot deleted file mode 100644 index 3c1302545..000000000 --- a/sites/all/modules/views/translations/views.pot +++ /dev/null @@ -1,4268 +0,0 @@ -# $Id: views.pot,v 1.8.6.3 2010/07/27 21:51:39 merlinofchaos Exp $ -# -# LANGUAGE translation of Drupal (general) -# Copyright YEAR NAME <EMAIL@ADDRESS> -# Generated from files: -# views.module,v 1.317 2008/10/16 17:21:36 merlinofchaos -# admin.inc,v 1.146 2008/10/28 22:50:00 merlinofchaos -# views_ui.module,v 1.106 2008/10/07 22:05:28 merlinofchaos -# views_export.module,v 1.2 2008/06/25 21:42:20 merlinofchaos -# views.info,v 1.7 2007/08/12 06:52:14 merlinofchaos -# views_ui.info,v 1.10 2008/01/09 00:05:08 merlinofchaos -# views_export.info,v 1.1 2008/06/12 16:17:25 merlinofchaos -# plugins.inc,v 1.151 2008/10/28 19:23:50 merlinofchaos -# convert.inc,v 1.12 2008/10/08 00:14:01 merlinofchaos -# theme.inc,v 1.63 2008/10/28 17:46:14 merlinofchaos -# views.install,v 1.42 2008/10/14 19:51:55 merlinofchaos -# docs.php,v 1.10 2008/10/02 22:54:56 merlinofchaos -# views_handler_argument.inc,v 1.4 2008/10/08 00:14:00 merlinofchaos -# views_handler_relationship_translation.inc,v 1.1 2008/09/30 22:07:15 merlinofchaos -# comment.views.inc,v 1.25 2008/10/16 17:21:36 merlinofchaos -# node.views.inc,v 1.87 2008/10/16 17:09:52 merlinofchaos -# views_plugin_display.inc,v 1.16 2008/10/28 20:28:56 merlinofchaos -# views_plugin_display_page.inc,v 1.3 2008/10/08 22:59:59 merlinofchaos -# views_handler_field.inc,v 1.5 2008/10/16 19:38:52 merlinofchaos -# views_handler_filter.inc,v 1.4 2008/10/20 19:35:53 merlinofchaos -# views_handler_relationship.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_sort.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_argument_date.inc,v 1.2 2008/10/07 21:26:23 merlinofchaos -# views_handler_argument_many_to_one.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_argument_numeric.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_argument_string.inc,v 1.2 2008/09/25 00:09:08 merlinofchaos -# taxonomy.views.inc,v 1.49 2008/10/01 17:20:58 merlinofchaos -# views_handler_argument_null.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_field_boolean.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_filter_boolean_operator.inc,v 1.2 2008/09/10 01:08:06 merlinofchaos -# views_handler_filter_in_operator.inc,v 1.4 2008/09/24 22:28:06 merlinofchaos -# views_plugin_display_attachment.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_date.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_field_numeric.inc,v 1.4 2008/10/23 01:04:24 merlinofchaos -# views_handler_field_prerender_list.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_plugin_row_node_rss.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_plugin_style_list.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_row_fields.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_style_summary_unformatted.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_url.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_field_accesslog_path.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_filter_numeric.inc,v 1.6 2008/10/28 20:11:20 merlinofchaos -# views_handler_filter_string.inc,v 1.6 2008/10/28 20:13:34 merlinofchaos -# views_handler_filter_date.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_filter_equality.inc,v 1.2 2008/09/10 01:08:06 merlinofchaos -# views_handler_filter_many_to_one.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# system.views.inc,v 1.7 2008/09/03 19:21:29 merlinofchaos -# views_plugin_access.inc,v 1.1 2008/09/08 22:50:17 merlinofchaos -# views_plugin_style_table.inc,v 1.5 2008/10/15 22:25:36 merlinofchaos -# views_handler_sort_date.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# views_handler_sort_formula.inc,v 1.1 2008/09/03 19:21:28 merlinofchaos -# view.inc,v 1.138 2008/10/29 19:09:49 merlinofchaos -# views_plugin_style.inc,v 1.4 2008/10/08 00:14:01 merlinofchaos -# user.views.inc,v 1.52 2008/10/08 20:56:02 merlinofchaos -# statistics.views.inc,v 1.9 2008/10/28 20:21:37 merlinofchaos -# upload.views.inc,v 1.14 2008/09/10 21:29:15 merlinofchaos -# views_plugin_display_block.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_display_feed.inc,v 1.3 2008/09/30 18:52:15 merlinofchaos -# book.views.inc,v 1.4 2008/07/02 17:42:57 merlinofchaos -# ajax.inc,v 1.19 2008/09/22 20:50:58 merlinofchaos -# analyze.inc,v 1.1 2008/10/28 22:50:00 merlinofchaos -# form.inc,v 1.10 2008/06/25 21:10:10 merlinofchaos -# handlers.inc,v 1.98 2008/10/28 17:47:49 merlinofchaos -# views_plugin_access_role.inc,v 1.1 2008/09/08 22:50:17 merlinofchaos -# views_plugin_access_perm.inc,v 1.2 2008/09/17 22:26:55 merlinofchaos -# ajax.js,v 1.23 2008/10/08 00:14:01 merlinofchaos -# ajax_view.js,v 1.12 2008/10/15 22:09:19 merlinofchaos -# tabs.js,v 1.3 2008/03/30 15:58:26 merlinofchaos -# views_handler_argument_term_node_tid_depth.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# translation.views.inc,v 1.2 2008/10/01 17:20:58 merlinofchaos -# poll.views.inc,v 1.2 2008/03/12 04:32:07 merlinofchaos -# profile.views.inc,v 1.9 2008/09/24 21:21:21 merlinofchaos -# search.views.inc,v 1.14 2008/09/25 00:39:18 merlinofchaos -# views_plugin_argument_validate_taxonomy_term.inc,v 1.2 2008/09/10 16:17:54 merlinofchaos -# views_handler_filter_term_node_tid.inc,v 1.5 2008/10/20 21:32:28 merlinofchaos -# views_handler_filter_node_language.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_filter_node_language.inc,v 1.1 2008/09/30 22:07:15 merlinofchaos -# views_handler_filter_upload_fid.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views.views.inc,v 1.5 2008/09/03 19:21:29 merlinofchaos -# views_handler_argument_comment_user_uid.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_argument_user_uid.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_comment.inc,v 1.2 2008/09/10 00:16:14 merlinofchaos -# views_handler_field_comment_link.inc,v 1.2 2008/09/10 00:16:14 merlinofchaos -# views_handler_field_node_link.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_user_link.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_comment_link_delete.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_node_link_delete.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_node_revision_link_delete.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_user_link_delete.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_comment_link_edit.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_node_link_edit.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_user_link_edit.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_comment_link_reply.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_comment_username.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_node_comment.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_filter_node_comment.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_node_new_comments.inc,v 1.2 2008/09/22 21:59:39 merlinofchaos -# views_plugin_row_comment_view.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_plugin_row_node_view.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_argument_dates_various.inc,v 1.2 2008/09/30 21:30:16 merlinofchaos -# views_handler_argument_node_language.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_argument_node_language.inc,v 1.1 2008/09/30 22:07:15 merlinofchaos -# views_handler_argument_node_type.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_history_user_timestamp.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_node.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_field_node_revision_link_revert.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_filter_node_type.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_plugin_argument_validate_node.inc,v 1.1 2008/09/03 19:21:29 merlinofchaos -# views_handler_filter_search.inc,v 1.2 2008/09/10 20:15:50 merlinofchaos -# views_plugin_row_search_view.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_argument_file_fid.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_file.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_upload_description.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_upload_fid.inc,v 1.2 2008/09/10 21:02:57 merlinofchaos -# views_handler_argument_taxonomy.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_argument_term_node_tid.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_argument_vocabulary_vid.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_taxonomy.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_term_node_tid.inc,v 1.2 2008/09/22 18:13:51 merlinofchaos -# views_handler_field_user.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_field_user_mail.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_filter_user_current.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_handler_filter_user_name.inc,v 1.2 2008/09/22 23:41:14 merlinofchaos -# views_plugin_argument_default_user.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_access_none.inc,v 1.1 2008/09/08 22:50:17 merlinofchaos -# views_plugin_argument_default.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_argument_default_php.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_argument_validate.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_argument_validate_php.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_style_summary.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_style_grid.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views_plugin_style_rss.inc,v 1.1 2008/09/03 19:21:30 merlinofchaos -# views-more.tpl.php,v 1.2 2008/04/11 08:46:26 merlinofchaos -# views-ui-edit-item.tpl.php,v 1.9 2008/08/08 16:57:44 merlinofchaos -# views-ui-edit-tab.tpl.php,v 1.11 2008/08/08 16:57:44 merlinofchaos -# views-ui-edit-view.tpl.php,v 1.9 2008/10/08 00:14:01 merlinofchaos -# views-ui-list-views.tpl.php,v 1.6 2008/10/28 18:11:43 merlinofchaos -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2008-11-06 21:18+0100\n" -"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n" -"Last-Translator: NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <EMAIL@ADDRESS>\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" - -#: views.module:629 -msgid "Broken handler @table.@field" -msgstr "" - -#: views.module:747 -msgid "Skipping broken view @view" -msgstr "" - -#: views.module:794;834 includes/admin.inc:98;216;216;621 -msgid "Overridden" -msgstr "" - -#: views.module:797;830 views_ui.module:289 includes/admin.inc:97;215;215;588;766 -msgid "Default" -msgstr "" - -#: views.module:935 includes/admin.inc:295 views_export/views_export.module:116 -msgid "Apply" -msgstr "" - -#: views.module:151 views_ui.module:26 views.info:0;0 views_ui.info:0 views_export/views_export.info:0 -msgid "Views" -msgstr "" - -#: views.module:155 -msgid "Ajax callback for view loading." -msgstr "" - -#: views.module:0 -msgid "views" -msgstr "" - -#: views_ui.module:159 -msgid "The converter will make a best-effort attempt to convert a Views 1 view to Views 2. This conversion is not reliable; you will very likely have to make adjustments to your view to get it to match. You can import Views 1 views through the normal Import tab." -msgstr "" - -#: views_ui.module:265 -msgid "Changes cannot be made to a locked view." -msgstr "" - -#: views_ui.module:28 -msgid "Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented." -msgstr "" - -#: views_ui.module:32 includes/plugins.inc:135 -msgid "List" -msgstr "" - -#: views_ui.module:38 includes/admin.inc:1178;1178;2165 -msgid "Add" -msgstr "" - -#: views_ui.module:43 includes/admin.inc:724 -msgid "Import" -msgstr "" - -#: views_ui.module:49 -msgid "Tools" -msgstr "" - -#: views_ui.module:55 -msgid "Basic" -msgstr "" - -#: views_ui.module:63 includes/convert.inc:30 -msgid "Convert" -msgstr "" - -#: views_ui.module:64 -msgid "Convert stored Views 1 views." -msgstr "" - -#: views_ui.module:70;83;88 -msgid "Delete view" -msgstr "" - -#: views_ui.module:76 -msgid "Convert view" -msgstr "" - -#: views_ui.module:113 includes/admin.inc:93 theme/theme.inc:89 -msgid "Edit" -msgstr "" - -#: views_ui.module:0 -msgid "views_ui" -msgstr "" - -#: views.install:31 -msgid "Stores the general data for a view." -msgstr "" - -#: views.install:37 -msgid "The view ID of the field, defined by the database." -msgstr "" - -#: views.install:45 -msgid "The unique name of the view. This is the primary field views are loaded from, and is used so that views may be internal and not necessarily in the database. May only be alphanumeric characters plus underscores." -msgstr "" - -#: views.install:51 -msgid "A description of the view for the admin interface." -msgstr "" - -#: views.install:57 -msgid "A tag used to group/sort views in the admin interface" -msgstr "" - -#: views.install:61 -msgid "A chunk of PHP code that can be used to provide modifications to the view prior to building." -msgstr "" - -#: views.install:68 -msgid "What table this view is based on, such as node, user, comment, or term." -msgstr "" - -#: views.install:74 -msgid "A boolean to indicate whether or not this view may have its query cached." -msgstr "" - -#: views.install:82 -msgid "Stores information about each display attached to a view." -msgstr "" - -#: views.install:89 -msgid "The view this display is attached to." -msgstr "" - -#: views.install:97 -msgid "An identifier for this display; usually generated from the display_plugin, so should be something like page or page_1 or block_2, etc." -msgstr "" - -#: views.install:104 -msgid "The title of the display, viewable by the administrator." -msgstr "" - -#: views.install:111 -msgid "The type of the display. Usually page, block or embed, but is pluggable so may be other things." -msgstr "" - -#: views.install:116 -msgid "The order in which this display is loaded." -msgstr "" - -#: views.install:120 -msgid "A serialized array of options for this display; it contains options that are generally only pertinent to that display plugin type." -msgstr "" - -#: views.install:131 -msgid "A special cache used to store objects that are being edited; it serves to save state in an ordinarily stateless environment." -msgstr "" - -#: views.install:136 -msgid "The session ID this cache object belongs to." -msgstr "" - -#: views.install:141 -msgid "The name of the view this cache is attached to." -msgstr "" - -#: views.install:146 -msgid "The name of the object this cache is attached to; this essentially represents the owner so that several sub-systems can use this cache." -msgstr "" - -#: views.install:153 -msgid "The time this cache was created or updated." -msgstr "" - -#: views.install:157 -msgid "Serialized data being stored." -msgstr "" - -#: views.info:0 -msgid "Create customized lists and queries from your database." -msgstr "" - -#: views_ui.info:0 -msgid "Views UI" -msgstr "" - -#: views_ui.info:0 -msgid "Administrative interface to views. Without this module, you cannot create or edit your views." -msgstr "" - -#: docs/docs.php:127 -msgid "Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page." -msgstr "" - -#: docs/docs.php:128 -msgid "default" -msgstr "" - -#: docs/docs.php:137 includes/plugins.inc:25 -msgid "Defaults" -msgstr "" - -#: docs/docs.php:226 includes/plugins.inc:39;47 -msgid "Page" -msgstr "" - -#: docs/docs.php:281 includes/plugins.inc:72;80 -msgid "Feed" -msgstr "" - -#: docs/docs.php:349 -msgid "Front page feed" -msgstr "" - -#: handlers/views_handler_argument.inc:102 modules/translation/views_handler_relationship_translation.inc:23 -msgid "All" -msgstr "" - -#: handlers/views_handler_argument.inc:119 includes/admin.inc:272;383 modules/comment.views.inc:44 modules/node.views.inc:85;413 plugins/views_plugin_display.inc:592 plugins/views_plugin_display_page.inc:285;348 -msgid "Title" -msgstr "" - -#: handlers/views_handler_argument.inc:121 -msgid "The title to use when this argument is present. It will override the title of the view and titles from previous arguments. You can use percent substitution here to replace with argument titles. Use \"%1\" for the first argument, \"%2\" for the second, etc." -msgstr "" - -#: handlers/views_handler_argument.inc:134 -msgid "Action to take if argument is not present" -msgstr "" - -#: handlers/views_handler_argument.inc:146 -msgid "Wildcard" -msgstr "" - -#: handlers/views_handler_argument.inc:149 -msgid "If this value is received as an argument, the argument will be ignored; i.e, \"all values\"" -msgstr "" - -#: handlers/views_handler_argument.inc:155 -msgid "Wildcard title" -msgstr "" - -#: handlers/views_handler_argument.inc:158 -msgid "The title to use for the wildcard in substitutions elsewhere." -msgstr "" - -#: handlers/views_handler_argument.inc:181 -msgid "Validator options" -msgstr "" - -#: handlers/views_handler_argument.inc:186 -msgid "Validator" -msgstr "" - -#: handlers/views_handler_argument.inc:190 -msgid "<Basic validation>" -msgstr "" - -#: handlers/views_handler_argument.inc:229 -msgid "Action to take if argument does not validate" -msgstr "" - -#: handlers/views_handler_argument.inc:248 -msgid "Display all values" -msgstr "" - -#: handlers/views_handler_argument.inc:253 -msgid "Hide view / Page not found (404)" -msgstr "" - -#: handlers/views_handler_argument.inc:258 -msgid "Display empty text" -msgstr "" - -#: handlers/views_handler_argument.inc:263 -msgid "Summary, sorted ascending" -msgstr "" - -#: handlers/views_handler_argument.inc:270 -msgid "Summary, sorted descending" -msgstr "" - -#: handlers/views_handler_argument.inc:277 -msgid "Provide default argument" -msgstr "" - -#: handlers/views_handler_argument.inc:310 -msgid "Provide default argument options" -msgstr "" - -#: handlers/views_handler_argument.inc:320 -msgid "Default argument type" -msgstr "" - -#: handlers/views_handler_argument.inc:708 handlers/views_handler_field.inc:227 handlers/views_handler_filter.inc:592 handlers/views_handler_relationship.inc:133 handlers/views_handler_sort.inc:66 -msgid "Broken/missing handler" -msgstr "" - -#: handlers/views_handler_argument.inc:716 handlers/views_handler_field.inc:235 handlers/views_handler_filter.inc:600 handlers/views_handler_relationship.inc:141 handlers/views_handler_sort.inc:74 -msgid "The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item." -msgstr "" - -#: handlers/views_handler_argument_date.inc:29 -msgid "Current date" -msgstr "" - -#: handlers/views_handler_argument_date.inc:30 -msgid "Current node's creation time" -msgstr "" - -#: handlers/views_handler_argument_date.inc:31 -msgid "Current node's update time" -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:45 handlers/views_handler_argument_numeric.inc:30 -msgid "Allow multiple terms per argument." -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:46 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 (for OR) or 1,2,3 (for AND)." -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:53 handlers/views_handler_argument_string.inc:95 -msgid "Allow multiple arguments to work together." -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:54 handlers/views_handler_argument_string.inc:96 -msgid "If selected, multiple instances of this argument can work together, as though multiple terms were supplied to the same argument. This setting is not compatible with the \"Reduce duplicates\" setting." -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:60 handlers/views_handler_argument_string.inc:102 -msgid "Do not display items with no value in summary" -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:95;109 handlers/views_handler_argument_numeric.inc:45;57 modules/taxonomy.views.inc:129;208;292 -msgid "Uncategorized" -msgstr "" - -#: handlers/views_handler_argument_many_to_one.inc:113 handlers/views_handler_argument_numeric.inc:61 -msgid "Invalid input" -msgstr "" - -#: handlers/views_handler_argument_null.inc:21 -msgid "Fail basic validation if any argument is given" -msgstr "" - -#: handlers/views_handler_argument_null.inc:23 -msgid "By checking this field, you can use this to make sure views with more arguments than necessary fail validation." -msgstr "" - -#: handlers/views_handler_argument_numeric.inc:31 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3 or 1,2,3." -msgstr "" - -#: handlers/views_handler_argument_numeric.inc:37 -msgid "Exclude the argument" -msgstr "" - -#: handlers/views_handler_argument_numeric.inc:38 -msgid "If selected, the numbers entered in the argument will be excluded rather than limiting the view." -msgstr "" - -#: handlers/views_handler_argument_string.inc:44 -msgid "Glossary mode" -msgstr "" - -#: handlers/views_handler_argument_string.inc:45 -msgid "Glossary mode applies a limit to the number of characters used in the argument, which allows the summary view to act as a glossary." -msgstr "" - -#: handlers/views_handler_argument_string.inc:51 -msgid "Character limit" -msgstr "" - -#: handlers/views_handler_argument_string.inc:52 -msgid "How many characters of the argument to filter against. If set to 1, all fields starting with the letter in the argument would be matched." -msgstr "" - -#: handlers/views_handler_argument_string.inc:60 -msgid "Case" -msgstr "" - -#: handlers/views_handler_argument_string.inc:61 -msgid "When printing the argument result, how to transform the case." -msgstr "" - -#: handlers/views_handler_argument_string.inc:63;77 -msgid "No transform" -msgstr "" - -#: handlers/views_handler_argument_string.inc:64;78 -msgid "Upper case" -msgstr "" - -#: handlers/views_handler_argument_string.inc:65;79 -msgid "Lower case" -msgstr "" - -#: handlers/views_handler_argument_string.inc:66;80 -msgid "Capitalize first letter" -msgstr "" - -#: handlers/views_handler_argument_string.inc:67;81 -msgid "Capitalize each word" -msgstr "" - -#: handlers/views_handler_argument_string.inc:74 -msgid "Case in path" -msgstr "" - -#: handlers/views_handler_argument_string.inc:75 -msgid "When printing url paths, how to transform the case of the argument. Do not use this unless with Postgres as it uses case sensitive comparisons." -msgstr "" - -#: handlers/views_handler_argument_string.inc:88 -msgid "Transform spaces to dashes in URL" -msgstr "" - -#: handlers/views_handler_field.inc:146 handlers/views_handler_filter.inc:322 handlers/views_handler_relationship.inc:78 -msgid "Label" -msgstr "" - -#: handlers/views_handler_field.inc:148 -msgid "The label for this field that will be displayed to end users if the style requires it." -msgstr "" - -#: handlers/views_handler_field.inc:152 -msgid "Exclude from display" -msgstr "" - -#: handlers/views_handler_field.inc:154 -msgid "Check this box to not display this field, but still load it in the view. Use this option to not show a grouping field in each record, or when doing advanced theming." -msgstr "" - -#: handlers/views_handler_field_boolean.inc:24 -msgid "Output format" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:26 -msgid "Yes/No" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:27 -msgid "True/False" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:28 -msgid "On/Off" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:34 -msgid "Reverse" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:35 -msgid "If checked, true will be displayed as false." -msgstr "" - -#: handlers/views_handler_field_boolean.inc:49 handlers/views_handler_filter_boolean_operator.inc:47 handlers/views_handler_filter_in_operator.inc:25 plugins/views_plugin_display.inc:633;642;659;667;717;803;1207 plugins/views_plugin_display_attachment.inc:63;69 -msgid "Yes" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:49 handlers/views_handler_filter_boolean_operator.inc:47 handlers/views_handler_filter_in_operator.inc:25 plugins/views_plugin_display.inc:633;642;659;667;717;803;811;1207 plugins/views_plugin_display_attachment.inc:63;69 -msgid "No" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:51 handlers/views_handler_filter_boolean_operator.inc:16;61 -msgid "True" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:51 handlers/views_handler_filter_boolean_operator.inc:61 -msgid "False" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:53 -msgid "On" -msgstr "" - -#: handlers/views_handler_field_boolean.inc:53 -msgid "Off" -msgstr "" - -#: handlers/views_handler_field_date.inc:24 -msgid "Date format" -msgstr "" - -#: handlers/views_handler_field_date.inc:29 -msgid "Custom" -msgstr "" - -#: handlers/views_handler_field_date.inc:30 -msgid "Time ago" -msgstr "" - -#: handlers/views_handler_field_date.inc:36 -msgid "Custom date format" -msgstr "" - -#: handlers/views_handler_field_date.inc:37 -msgid "If \"Custom\", see <a href=\"http://us.php.net/manual/en/function.date.php\" target=\"_blank\">the PHP docs</a> for date formats. If \"Time ago\" this is the the number of different units to display, which defaults to two." -msgstr "" - -#: handlers/views_handler_field_date.inc:53 -msgid "%time ago" -msgstr "" - -#: handlers/views_handler_field_numeric.inc:32 -msgid "Round" -msgstr "" - -#: handlers/views_handler_field_numeric.inc:33 -msgid "If checked, the number will be rounded." -msgstr "" - -#: handlers/views_handler_field_numeric.inc:38 -msgid "Precision" -msgstr "" - -#: handlers/views_handler_field_numeric.inc:40 -msgid "Specify how many digits to print after the decimal point." -msgstr "" - -#: handlers/views_handler_field_numeric.inc:47 -msgid "Decimal point" -msgstr "" - -#: handlers/views_handler_field_numeric.inc:49 -msgid "What single character to use as a decimal point." -msgstr "" - -#: handlers/views_handler_field_numeric.inc:55 -msgid "Thousands separator" -msgstr "" - -#: handlers/views_handler_field_numeric.inc:57 -msgid "What single character to use as the thousands separator." -msgstr "" - -#: handlers/views_handler_field_numeric.inc:62 -msgid "Prefix" -msgstr "" - -#: handlers/views_handler_field_numeric.inc:64 -msgid "Text to put before the number, such as currency symbol." -msgstr "" - -#: handlers/views_handler_field_numeric.inc:68 -msgid "Suffix" -msgstr "" - -#: handlers/views_handler_field_numeric.inc:70 -msgid "Text to put after the number, such as currency symbol." -msgstr "" - -#: handlers/views_handler_field_prerender_list.inc:29 modules/node/views_plugin_row_node_rss.inc:24 -msgid "Display type" -msgstr "" - -#: handlers/views_handler_field_prerender_list.inc:31 plugins/views_plugin_style_list.inc:33 -msgid "Unordered list" -msgstr "" - -#: handlers/views_handler_field_prerender_list.inc:32 plugins/views_plugin_style_list.inc:33 -msgid "Ordered list" -msgstr "" - -#: handlers/views_handler_field_prerender_list.inc:33 -msgid "Simple separator" -msgstr "" - -#: handlers/views_handler_field_prerender_list.inc:40 includes/admin.inc:2974 plugins/views_plugin_row_fields.inc:47 plugins/views_plugin_style_summary_unformatted.inc:30 -msgid "Separator" -msgstr "" - -#: handlers/views_handler_field_prerender_list.inc:48 -msgid "Empty list text" -msgstr "" - -#: handlers/views_handler_field_prerender_list.inc:50 -msgid "If the list is empty, you may enter text here that will be displayed." -msgstr "" - -#: handlers/views_handler_field_url.inc:24 modules/statistics/views_handler_field_accesslog_path.inc:31 -msgid "Display as link" -msgstr "" - -#: handlers/views_handler_filter.inc:136 -msgid "Operator" -msgstr "" - -#: handlers/views_handler_filter.inc:201 -msgid "Expose" -msgstr "" - -#: handlers/views_handler_filter.inc:206 -msgid "This item is currently not exposed. If you <strong>expose</strong> it, users will be able to change the filter as they view it." -msgstr "" - -#: handlers/views_handler_filter.inc:213 -msgid "Hide" -msgstr "" - -#: handlers/views_handler_filter.inc:218 -msgid "This item is currently exposed. If you <strong>hide</strong> it, users will not be able to change the filter as they view it." -msgstr "" - -#: handlers/views_handler_filter.inc:289 -msgid "Unlock operator" -msgstr "" - -#: handlers/views_handler_filter.inc:290 -msgid "When checked, the operator will be exposed to the user" -msgstr "" - -#: handlers/views_handler_filter.inc:296 -msgid "Operator identifier" -msgstr "" - -#: handlers/views_handler_filter.inc:298 -msgid "This will appear in the URL after the ? to identify this operator." -msgstr "" - -#: handlers/views_handler_filter.inc:315 -msgid "Filter identifier" -msgstr "" - -#: handlers/views_handler_filter.inc:317 -msgid "This will appear in the URL after the ? to identify this filter. Cannot be blank." -msgstr "" - -#: handlers/views_handler_filter.inc:333 -msgid "Optional" -msgstr "" - -#: handlers/views_handler_filter.inc:334 -msgid "This exposed filter is optional and will have added options to allow it not to be set." -msgstr "" - -#: handlers/views_handler_filter.inc:340 -msgid "Force single" -msgstr "" - -#: handlers/views_handler_filter.inc:341 -msgid "Force this exposed filter to accept only one option." -msgstr "" - -#: handlers/views_handler_filter.inc:347 -msgid "Remember" -msgstr "" - -#: handlers/views_handler_filter.inc:348 -msgid "Remember the last setting the user gave this filter." -msgstr "" - -#: handlers/views_handler_filter.inc:359 -msgid "The identifier is required if the filter is exposed." -msgstr "" - -#: handlers/views_handler_filter.inc:364 -msgid "This identifier is not allowed." -msgstr "" - -#: handlers/views_handler_filter.inc:465 -msgid "<Any>" -msgstr "" - -#: handlers/views_handler_filter_boolean_operator.inc:58 handlers/views_handler_filter_in_operator.inc:175 handlers/views_handler_filter_numeric.inc:247 handlers/views_handler_filter_string.inc:111 -msgid "exposed" -msgstr "" - -#: handlers/views_handler_filter_date.inc:24 -msgid "Value type" -msgstr "" - -#: handlers/views_handler_filter_date.inc:26 -msgid "A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred." -msgstr "" - -#: handlers/views_handler_filter_date.inc:27 -msgid "An offset from the current time such as \"+1 day\" or \"-2 hours -30 minutes\"" -msgstr "" - -#: handlers/views_handler_filter_date.inc:77;83;87 -msgid "Invalid date format." -msgstr "" - -#: handlers/views_handler_filter_equality.inc:15 handlers/views_handler_filter_numeric.inc:38 handlers/views_handler_filter_string.inc:28 -msgid "Is equal to" -msgstr "" - -#: handlers/views_handler_filter_equality.inc:16 handlers/views_handler_filter_numeric.inc:44 handlers/views_handler_filter_string.inc:34 -msgid "Is not equal to" -msgstr "" - -#: handlers/views_handler_filter_equality.inc:26 handlers/views_handler_filter_numeric.inc:148;163 handlers/views_handler_filter_string.inc:170 -msgid "Value" -msgstr "" - -#: handlers/views_handler_filter_in_operator.inc:15 -msgid "Options" -msgstr "" - -#: handlers/views_handler_filter_in_operator.inc:37 -msgid "Limit list to selected items" -msgstr "" - -#: handlers/views_handler_filter_in_operator.inc:38 -msgid "If checked, the selected items presented to the user will be the only ones selected here." -msgstr "" - -#: handlers/views_handler_filter_in_operator.inc:57 handlers/views_handler_filter_many_to_one.inc:32 -msgid "Is one of" -msgstr "" - -#: handlers/views_handler_filter_in_operator.inc:58 -msgid "Is not one of" -msgstr "" - -#: handlers/views_handler_filter_in_operator.inc:193 modules/system.views.inc:209 plugins/views_plugin_access.inc:55 -msgid "Unknown" -msgstr "" - -#: handlers/views_handler_filter_many_to_one.inc:33 -msgid "Is all of" -msgstr "" - -#: handlers/views_handler_filter_many_to_one.inc:34 -msgid "Is none of" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:26 -msgid "Is less than" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:28 -msgid "<" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:32 -msgid "Is less than or equal to" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:34 -msgid "<=" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:40 handlers/views_handler_filter_string.inc:29 -msgid "=" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:46 handlers/views_handler_filter_string.inc:35 -msgid "!=" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:50 -msgid "Is greater than or equal to" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:52 -msgid ">=" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:56 -msgid "Is greater than" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:58 -msgid ">" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:62 -msgid "Is between" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:64 -msgid "between" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:68 -msgid "Is not between" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:70 -msgid "not between" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:79 handlers/views_handler_filter_string.inc:80 -msgid "Is empty (NULL)" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:81 handlers/views_handler_filter_string.inc:82 -msgid "empty" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:85 handlers/views_handler_filter_string.inc:86 -msgid "Is not empty (NULL)" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:87 handlers/views_handler_filter_string.inc:88 -msgid "not empty" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:175 -msgid "Min" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:181 -msgid "And max" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:181 -msgid "And" -msgstr "" - -#: handlers/views_handler_filter_numeric.inc:253 -msgid "@min and @max" -msgstr "" - -#: handlers/views_handler_filter_string.inc:40 -msgid "Contains" -msgstr "" - -#: handlers/views_handler_filter_string.inc:41 -msgid "contains" -msgstr "" - -#: handlers/views_handler_filter_string.inc:46 -msgid "Contains any word" -msgstr "" - -#: handlers/views_handler_filter_string.inc:47 -msgid "has word" -msgstr "" - -#: handlers/views_handler_filter_string.inc:52 -msgid "Contains all words" -msgstr "" - -#: handlers/views_handler_filter_string.inc:53 -msgid "has all" -msgstr "" - -#: handlers/views_handler_filter_string.inc:58 -msgid "Starts with" -msgstr "" - -#: handlers/views_handler_filter_string.inc:59 -msgid "begins" -msgstr "" - -#: handlers/views_handler_filter_string.inc:64 -msgid "Ends with" -msgstr "" - -#: handlers/views_handler_filter_string.inc:65 -msgid "ends" -msgstr "" - -#: handlers/views_handler_filter_string.inc:70 -msgid "Does not contain" -msgstr "" - -#: handlers/views_handler_filter_string.inc:71 -msgid "!has" -msgstr "" - -#: handlers/views_handler_filter_string.inc:126 -msgid "Case sensitive" -msgstr "" - -#: handlers/views_handler_filter_string.inc:128 -msgid "Case sensitive filters may be faster. MySQL might ignore case sensitivity." -msgstr "" - -#: handlers/views_handler_relationship.inc:80 -msgid "The label for this relationship that will be displayed only administratively." -msgstr "" - -#: handlers/views_handler_relationship.inc:85 -msgid "Require this relationship" -msgstr "" - -#: handlers/views_handler_relationship.inc:86 -msgid "If required, items that do not contain this relationship will not appear." -msgstr "" - -#: handlers/views_handler_sort.inc:38 -msgid "asc" -msgstr "" - -#: handlers/views_handler_sort.inc:42 -msgid "desc" -msgstr "" - -#: handlers/views_handler_sort.inc:54 -msgid "Sort order" -msgstr "" - -#: handlers/views_handler_sort.inc:55 plugins/views_plugin_style_table.inc:149 -msgid "Ascending" -msgstr "" - -#: handlers/views_handler_sort.inc:55 plugins/views_plugin_style_table.inc:149 -msgid "Descending" -msgstr "" - -#: handlers/views_handler_sort_date.inc:26 -msgid "Granularity" -msgstr "" - -#: handlers/views_handler_sort_date.inc:28 -msgid "Second" -msgstr "" - -#: handlers/views_handler_sort_date.inc:29 -msgid "Minute" -msgstr "" - -#: handlers/views_handler_sort_date.inc:30 -msgid "Hour" -msgstr "" - -#: handlers/views_handler_sort_date.inc:31 -msgid "Day" -msgstr "" - -#: handlers/views_handler_sort_date.inc:32 -msgid "Month" -msgstr "" - -#: handlers/views_handler_sort_date.inc:33 -msgid "Year" -msgstr "" - -#: handlers/views_handler_sort_date.inc:35 -msgid "The granularity is the smallest unit to use when determining whether two dates are the same; for example, if the granularity is \"Year\" then all dates in 1999, regardless of when they fall in 1999, will be considered the same date." -msgstr "" - -#: handlers/views_handler_sort_formula.inc:24 -msgid "views_handler_sort_formula missing default: @formula" -msgstr "" - -#: includes/admin.inc:36 -msgid "If you <a href=\"@modules\">enable the advanced help module</a>, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "" - -#: includes/admin.inc:39 -msgid "If you install the advanced help module from !href, Views will provide more and better help. <a href=\"@hide\">Hide this message.</a>" -msgstr "" - -#: includes/admin.inc:94;978 theme/theme.inc:96 views_export/views_export.module:128 -msgid "Export" -msgstr "" - -#: includes/admin.inc:95;983 theme/theme.inc:101 -msgid "Clone" -msgstr "" - -#: includes/admin.inc:98 -msgid "Revert" -msgstr "" - -#: includes/admin.inc:98;634;847 includes/convert.inc:35;108 -msgid "Delete" -msgstr "" - -#: includes/admin.inc:103 -msgid "Disable" -msgstr "" - -#: includes/admin.inc:106 -msgid "Enable" -msgstr "" - -#: includes/admin.inc:112 -msgid "Warning! Broken view!" -msgstr "" - -#: includes/admin.inc:127 includes/view.inc:1666 -msgid "Broken" -msgstr "" - -#: includes/admin.inc:189 -msgid "Install the advanced help module for the getting started" -msgstr "" - -#: includes/admin.inc:192 -msgid "Not sure what to do? Try the \"!getting-started\" page." -msgstr "" - -#: includes/admin.inc:206;213;2131 -msgid "<All>" -msgstr "" - -#: includes/admin.inc:207 plugins/views_plugin_style.inc:76 -msgid "<None>" -msgstr "" - -#: includes/admin.inc:211 -msgid "Storage" -msgstr "" - -#: includes/admin.inc:214;214 includes/view.inc:1165;1215 -msgid "Normal" -msgstr "" - -#: includes/admin.inc:228;275 modules/node.views.inc:140 plugins/views_plugin_display_page.inc:273 -msgid "Type" -msgstr "" - -#: includes/admin.inc:246;273;1063 views_export/views_export.module:146 -msgid "Tag" -msgstr "" - -#: includes/admin.inc:262 -msgid "Displays" -msgstr "" - -#: includes/admin.inc:269 -msgid "Sort by" -msgstr "" - -#: includes/admin.inc:271 modules/system.views.inc:69 modules/user.views.inc:59;79 plugins/views_plugin_display.inc:580 -msgid "Name" -msgstr "" - -#: includes/admin.inc:274;391 modules/statistics.views.inc:149 modules/system.views.inc:88 plugins/views_plugin_display_page.inc:202 -msgid "Path" -msgstr "" - -#: includes/admin.inc:276 includes/convert.inc:21 modules/upload.views.inc:56 views_export/views_export.module:146 -msgid "Description" -msgstr "" - -#: includes/admin.inc:283 -msgid "Order" -msgstr "" - -#: includes/admin.inc:285 -msgid "Up" -msgstr "" - -#: includes/admin.inc:286 -msgid "Down" -msgstr "" - -#: includes/admin.inc:370;401 -msgid "Query" -msgstr "" - -#: includes/admin.inc:372 -msgid "These queries were run during view rendering:" -msgstr "" - -#: includes/admin.inc:377 -msgid "[@time ms]" -msgstr "" - -#: includes/admin.inc:380 -msgid "Other queries" -msgstr "" - -#: includes/admin.inc:388 -msgid "This display has no path." -msgstr "" - -#: includes/admin.inc:393 -msgid "Query build time" -msgstr "" - -#: includes/admin.inc:393;394;395 -msgid "@time ms" -msgstr "" - -#: includes/admin.inc:394 -msgid "Query execute time" -msgstr "" - -#: includes/admin.inc:395 -msgid "View render time" -msgstr "" - -#: includes/admin.inc:401 -msgid "No query was run" -msgstr "" - -#: includes/admin.inc:408 -msgid "Unable to preview due to validation errors." -msgstr "" - -#: includes/admin.inc:459 -msgid "Display" -msgstr "" - -#: includes/admin.inc:467 includes/view.inc:1870 -msgid "Arguments" -msgstr "" - -#: includes/admin.inc:469 -msgid "Separate arguments with a / as though they were a URL path." -msgstr "" - -#: includes/admin.inc:475 -msgid "Preview" -msgstr "" - -#: includes/admin.inc:513 -msgid "Clone view %view" -msgstr "" - -#: includes/admin.inc:526;713 includes/convert.inc:20 -msgid "View name" -msgstr "" - -#: includes/admin.inc:527 -msgid "This is the unique name of the view. It must contain only alphanumeric characters and underscores; it is used to identify the view internally and to generate unique theming template names for this view. If overriding a module provided view, the name must not be changed or instead a new view will be created." -msgstr "" - -#: includes/admin.inc:535;1826 -msgid "View description" -msgstr "" - -#: includes/admin.inc:536;1827 -msgid "This description will appear on the Views administrative UI to tell you what the view is about." -msgstr "" - -#: includes/admin.inc:542;1833 -msgid "View tag" -msgstr "" - -#: includes/admin.inc:543;1834 -msgid "Enter an optional tag for this view; it is used only to help sort views on the administrative page." -msgstr "" - -#: includes/admin.inc:555 -msgid "View type" -msgstr "" - -#: includes/admin.inc:556 -msgid "The view type is the primary table for which information is being retrieved. The view type controls what arguments, fields, sort criteria and filters are available, so once this is set it <strong>cannot be changed</strong>." -msgstr "" - -#: includes/admin.inc:567 -msgid "Next" -msgstr "" - -#: includes/admin.inc:583;758 -msgid "View name must be alphanumeric or underscores only." -msgstr "" - -#: includes/admin.inc:589 -msgid "You must use a unique name for this view." -msgstr "" - -#: includes/admin.inc:622 -msgid "Are you sure you want to revert the view %name?" -msgstr "" - -#: includes/admin.inc:623 -msgid "Reverting the view will delete the view that is in the database, reverting it to the original default view. Any changes you have made will be lost and cannot be recovered." -msgstr "" - -#: includes/admin.inc:626 includes/convert.inc:105 -msgid "Are you sure you want to delete the view %name?" -msgstr "" - -#: includes/admin.inc:627 -msgid "Deleting a view cannot be undone." -msgstr "" - -#: includes/admin.inc:635;671;840;1329 includes/convert.inc:109 -msgid "Cancel" -msgstr "" - -#: includes/admin.inc:644 -msgid "The view has been deleted." -msgstr "" - -#: includes/admin.inc:656 -msgid "There is no lock on view %view to break." -msgstr "" - -#: includes/admin.inc:666 -msgid "Are you sure you want to break the lock on view %name?" -msgstr "" - -#: includes/admin.inc:669 -msgid "By breaking this lock, any unsaved changes made by !user will be lost!" -msgstr "" - -#: includes/admin.inc:670 -msgid "Break lock" -msgstr "" - -#: includes/admin.inc:680 -msgid "The lock has been broken and you may now edit this view." -msgstr "" - -#: includes/admin.inc:687 -msgid "Edit view %view" -msgstr "" - -#: includes/admin.inc:714 -msgid "Enter the name to use for this view if it is different from the source view. Leave blank to use the name of the view." -msgstr "" - -#: includes/admin.inc:719 -msgid "Paste view code here" -msgstr "" - -#: includes/admin.inc:741 -msgid "Unable to interpret view code." -msgstr "" - -#: includes/admin.inc:749 -msgid "You are importing a view created in Views version 1. You may need to adjust some parameters to work correctly in version 2." -msgstr "" - -#: includes/admin.inc:752 -msgid "That view is not compatible with this version of Views." -msgstr "" - -#: includes/admin.inc:767 -msgid "A view by that name already exists; please choose a different name" -msgstr "" - -#: includes/admin.inc:776 -msgid "Display plugin @plugin is not available." -msgstr "" - -#: includes/admin.inc:783 -msgid "Style plugin @plugin is not available." -msgstr "" - -#: includes/admin.inc:789 -msgid "Row plugin @plugin is not available." -msgstr "" - -#: includes/admin.inc:799 -msgid "@type handler @table.@field is not available." -msgstr "" - -#: includes/admin.inc:812 -msgid "Unable to import view." -msgstr "" - -#: includes/admin.inc:833;861 -msgid "Save" -msgstr "" - -#: includes/admin.inc:885 -msgid "The view has been saved." -msgstr "" - -#: includes/admin.inc:929 -msgid "Unknown or missing table name" -msgstr "" - -#: includes/admin.inc:934 -msgid "Click on an item to edit that item's details." -msgstr "" - -#: includes/admin.inc:937 -msgid "This view has a broken default display and cannot be used." -msgstr "" - -#: includes/admin.inc:979 theme/theme.inc:97 -msgid "Export this view" -msgstr "" - -#: includes/admin.inc:984 theme/theme.inc:102 -msgid "Create a copy of this view" -msgstr "" - -#: includes/admin.inc:995 -msgid "View \"!display\"" -msgstr "" - -#: includes/admin.inc:996 -msgid "Go to the real page for this display" -msgstr "" - -#: includes/admin.inc:1062;3008 includes/plugins.inc:218 plugins/views_plugin_display.inc:587;704;723 plugins/views_plugin_display_attachment.inc:90 plugins/views_plugin_display_block.inc:73 plugins/views_plugin_display_feed.inc:108 plugins/views_plugin_display_page.inc:193 -msgid "None" -msgstr "" - -#: includes/admin.inc:1140 -msgid "Invalid" -msgstr "" - -#: includes/admin.inc:1141 -msgid "Error: Display @display refers to a plugin named '@plugin', but that plugin doesn't exist!" -msgstr "" - -#: includes/admin.inc:1176;1176 -msgid "Rearrange" -msgstr "" - -#: includes/admin.inc:1216;2216;2391;2459;2544 -msgid "Error: handler for @table > @field doesn't exist!" -msgstr "" - -#: includes/admin.inc:1235;1235;1244 -msgid "Settings" -msgstr "" - -#: includes/admin.inc:1240 plugins/views_plugin_display.inc:598;616 -msgid "Missing style plugin" -msgstr "" - -#: includes/admin.inc:1244 plugins/views_plugin_display.inc:611;626 -msgid "Change settings for this style" -msgstr "" - -#: includes/admin.inc:1247 -msgid " Style: !style" -msgstr "" - -#: includes/admin.inc:1278 -msgid "Invalid display id found while regenerating tabs" -msgstr "" - -#: includes/admin.inc:1311 -msgid "Update" -msgstr "" - -#: includes/admin.inc:1329 -msgid "Ok" -msgstr "" - -#: includes/admin.inc:1600 -msgid "Unable to initialize default display" -msgstr "" - -#: includes/admin.inc:1632 -msgid "Add display" -msgstr "" - -#: includes/admin.inc:1672 -msgid "Remove display" -msgstr "" - -#: includes/admin.inc:1683 -msgid "Restore display" -msgstr "" - -#: includes/admin.inc:1755 -msgid "Analyze" -msgstr "" - -#: includes/admin.inc:1767 -msgid "View analysis" -msgstr "" - -#: includes/admin.inc:1821 -msgid "View details" -msgstr "" - -#: includes/admin.inc:1862;1916;1971;2117;2209;2384;2452;2537 -msgid "Invalid display id @display" -msgstr "" - -#: includes/admin.inc:1920 -msgid "Configure @type" -msgstr "" - -#: includes/admin.inc:1975 -msgid "Rearrange @type" -msgstr "" - -#: includes/admin.inc:2018 -msgid "Broken field @id" -msgstr "" - -#: includes/admin.inc:2058;2067;2300 -msgid "Remove" -msgstr "" - -#: includes/admin.inc:2058;2058 -msgid "Remove this item" -msgstr "" - -#: includes/admin.inc:2064 -msgid "No fields available." -msgstr "" - -#: includes/admin.inc:2067 modules/book.views.inc:57 modules/taxonomy.views.inc:135 modules/upload.views.inc:90 plugins/views_plugin_display_page.inc:312 -msgid "Weight" -msgstr "" - -#: includes/admin.inc:2123 -msgid "Add @type" -msgstr "" - -#: includes/admin.inc:2134 -msgid "Groups" -msgstr "" - -#: includes/admin.inc:2153 -msgid "!group: !field" -msgstr "" - -#: includes/admin.inc:2162 -msgid "There are no @types available to add." -msgstr "" - -#: includes/admin.inc:2259 -msgid "Do not use a relationship" -msgstr "" - -#: includes/admin.inc:2273 includes/view.inc:1894;1895 -msgid "Relationship" -msgstr "" - -#: includes/admin.inc:2286 -msgid "Configure @type %item" -msgstr "" - -#: includes/admin.inc:2399 -msgid "Configure extra settings for @type %item" -msgstr "" - -#: includes/admin.inc:2464 -msgid "Change summary style for @type %item" -msgstr "" - -#: includes/admin.inc:2487;2501 -msgid "Internal error: broken plugin." -msgstr "" - -#: includes/admin.inc:2551 -msgid "Configure summary style for @type %item" -msgstr "" - -#: includes/admin.inc:2643 -msgid "Clear Views' cache" -msgstr "" - -#: includes/admin.inc:2649 -msgid "Add Views signature to all SQL queries" -msgstr "" - -#: includes/admin.inc:2650 -msgid "All Views-generated queries will include a special 'VIEWS' = 'VIEWS' string in the WHERE clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting." -msgstr "" - -#: includes/admin.inc:2656 -msgid "Disable views data caching" -msgstr "" - -#: includes/admin.inc:2657 -msgid "Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site." -msgstr "" - -#: includes/admin.inc:2663 -msgid "Ignore missing advanced help module" -msgstr "" - -#: includes/admin.inc:2664 -msgid "Views uses the advanced help module to provide help text; if this module is not present Views will complain, unless this setting is checked." -msgstr "" - -#: includes/admin.inc:2670 -msgid "Show query above live preview" -msgstr "" - -#: includes/admin.inc:2671 -msgid "The live preview feature will show you the output of the view you're creating, as well as the view. Check here to show the query and other information above the view; leave this unchecked to show that information below the view." -msgstr "" - -#: includes/admin.inc:2677 -msgid "Show other queries run during render during live preview" -msgstr "" - -#: includes/admin.inc:2678 -msgid "Drupal has the potential to run many queries while a view is being rendered. Checking this box will display every query run during view render as part of the live preview." -msgstr "" - -#: includes/admin.inc:2684 -msgid "Do not show hover links over views" -msgstr "" - -#: includes/admin.inc:2685 -msgid "To make it easier to administrate your views, Views provides 'hover' links to take you to the edit and export screen of a view whenever the view is used. This can be distracting on some themes, though; if it is problematic, you can turn it off here." -msgstr "" - -#: includes/admin.inc:2691 -msgid "Enable views performance statistics via the Devel module" -msgstr "" - -#: includes/admin.inc:2692 -msgid "Check this to enable some Views query and performance statistics <em>if Devel is installed</em>." -msgstr "" - -#: includes/admin.inc:2698 -msgid "Disable javascript with Views" -msgstr "" - -#: includes/admin.inc:2699 -msgid "If you are having problems with the javascript, you can disable it here; the Views UI should degrade and still be usable without javascript, it just not as good." -msgstr "" - -#: includes/admin.inc:2707 -msgid "Page region to output performance statistics" -msgstr "" - -#: includes/admin.inc:2720 -msgid "The cache has been cleared." -msgstr "" - -#: includes/admin.inc:2886 -msgid "Error: missing @component" -msgstr "" - -#: includes/admin.inc:2972 includes/view.inc:1865 -msgid "Field" -msgstr "" - -#: includes/admin.inc:2973 -msgid "Column" -msgstr "" - -#: includes/admin.inc:2976 -msgid "Sortable" -msgstr "" - -#: includes/admin.inc:2980 -msgid "Default sort" -msgstr "" - -#: includes/ajax.inc:82 -msgid "Server reports invalid input error." -msgstr "" - -#: includes/ajax.inc:83 -msgid "Error" -msgstr "" - -#: includes/analyze.inc:38 -msgid "View analysis can find nothing to report." -msgstr "" - -#: includes/analyze.inc:104 -msgid "This view has only a default display and therefore will not be placed anywhere on your site; perhaps you want to add a page or a block display." -msgstr "" - -#: includes/convert.inc:14 -msgid "There are no Views 1 views stored in the database to convert." -msgstr "" - -#: includes/convert.inc:22 -msgid "Operations" -msgstr "" - -#: includes/convert.inc:33 -msgid "Converted" -msgstr "" - -#: includes/convert.inc:68 -msgid "The table below lists Views version 1 views that are stored in the database. You can either convert them to work in Views version 2, or delete them. The views are convertible only if there is no Views 2 view with the same name." -msgstr "" - -#: includes/convert.inc:79 -msgid "Unable to find view." -msgstr "" - -#: includes/convert.inc:89 -msgid "Unable to convert view." -msgstr "" - -#: includes/convert.inc:107 -msgid "This action cannot be undone." -msgstr "" - -#: includes/convert.inc:117 -msgid "The view has been deleted" -msgstr "" - -#: includes/form.inc:249 -msgid "Validation error, please try again. If this error persists, please contact the site administrator." -msgstr "" - -#: includes/handlers.inc:43 -msgid "Handler @handler include tried to loop infinitely!" -msgstr "" - -#: includes/handlers.inc:269 -msgid "!group: !title" -msgstr "" - -#: includes/handlers.inc:507 -msgid "Reduce duplicates" -msgstr "" - -#: includes/handlers.inc:508 -msgid "This filter can cause items that have more than one of the selected options to appear as duplicate results. If this filter causes duplicate results to occur, this checkbox can reduce those duplicates; however, the more terms it has to search for, the less performant the query will be, so use this with caution." -msgstr "" - -#: includes/plugins.inc:26 -msgid "Default settings for this view." -msgstr "" - -#: includes/plugins.inc:40 -msgid "Display the view as a page, with a URL and menu links." -msgstr "" - -#: includes/plugins.inc:51;60 -msgid "Block" -msgstr "" - -#: includes/plugins.inc:52 -msgid "Display the view as a block." -msgstr "" - -#: includes/plugins.inc:64 -msgid "Attachment" -msgstr "" - -#: includes/plugins.inc:65 -msgid "Attachments added to other displays to achieve multiple views in the same view." -msgstr "" - -#: includes/plugins.inc:73 -msgid "Display the view as a feed, such as an RSS feed." -msgstr "" - -#: includes/plugins.inc:93;144 -msgid "Unformatted" -msgstr "" - -#: includes/plugins.inc:94 -msgid "Displays rows one after another." -msgstr "" - -#: includes/plugins.inc:104 -msgid "HTML List" -msgstr "" - -#: includes/plugins.inc:105 -msgid "Displays rows as an HTML list." -msgstr "" - -#: includes/plugins.inc:114 -msgid "Grid" -msgstr "" - -#: includes/plugins.inc:115 -msgid "Displays rows in a grid." -msgstr "" - -#: includes/plugins.inc:124 -msgid "Table" -msgstr "" - -#: includes/plugins.inc:125 -msgid "Displays rows in a table." -msgstr "" - -#: includes/plugins.inc:136 -msgid "Displays the default summary as a list." -msgstr "" - -#: includes/plugins.inc:145 -msgid "Displays the summary unformatted, with option for one after another or inline." -msgstr "" - -#: includes/plugins.inc:154 -msgid "RSS Feed" -msgstr "" - -#: includes/plugins.inc:155 -msgid "Generates an RSS feed from a view." -msgstr "" - -#: includes/plugins.inc:173 includes/view.inc:1863 -msgid "Fields" -msgstr "" - -#: includes/plugins.inc:174 -msgid "Displays the fields with an optional template." -msgstr "" - -#: includes/plugins.inc:187 -msgid "Fixed entry" -msgstr "" - -#: includes/plugins.inc:191;203 -msgid "PHP Code" -msgstr "" - -#: includes/plugins.inc:207 -msgid "Numeric" -msgstr "" - -#: includes/plugins.inc:219 -msgid "Will be available to all users." -msgstr "" - -#: includes/plugins.inc:224 plugins/views_plugin_access_role.inc:40 -msgid "Role" -msgstr "" - -#: includes/plugins.inc:225 -msgid "Access will be granted to users with any of the specified roles." -msgstr "" - -#: includes/plugins.inc:231 plugins/views_plugin_access_perm.inc:35 -msgid "Permission" -msgstr "" - -#: includes/plugins.inc:232 -msgid "Access will be granted to users with the specified permission string." -msgstr "" - -#: includes/view.inc:261 -msgid "set_display() called with invalid display id @display." -msgstr "" - -#: includes/view.inc:1063 -msgid "Home" -msgstr "" - -#: includes/view.inc:1864 -msgid "fields" -msgstr "" - -#: includes/view.inc:1866 -msgid "field" -msgstr "" - -#: includes/view.inc:1871 -msgid "arguments" -msgstr "" - -#: includes/view.inc:1872;1873 -msgid "Argument" -msgstr "" - -#: includes/view.inc:1877 -msgid "Sort criteria" -msgstr "" - -#: includes/view.inc:1878 -msgid "sort criteria" -msgstr "" - -#: includes/view.inc:1879 -msgid "Sort criterion" -msgstr "" - -#: includes/view.inc:1880 -msgid "sort criterion" -msgstr "" - -#: includes/view.inc:1884 -msgid "Filters" -msgstr "" - -#: includes/view.inc:1885 -msgid "filters" -msgstr "" - -#: includes/view.inc:1886 -msgid "Filter" -msgstr "" - -#: includes/view.inc:1887 -msgid "filter" -msgstr "" - -#: includes/view.inc:1892 -msgid "Relationships" -msgstr "" - -#: includes/view.inc:1893 -msgid "relationships" -msgstr "" - -#: js/ajax.js:0;0;0;0;0;0;0 js/ajax_view.js:0;0;0 -msgid "An error occurred at @path." -msgstr "" - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Mismatching fragment identifier." -msgstr "" - -#: js/tabs.js:0 -msgid "jQuery UI Tabs: Not enough arguments to add tab." -msgstr "" - -#: modules/book.views.inc:21;36;46;99 -msgid "Book" -msgstr "" - -#: modules/book.views.inc:30 -msgid "Top level book" -msgstr "" - -#: modules/book.views.inc:31 -msgid "The book the node is in." -msgstr "" - -#: modules/book.views.inc:58 -msgid "The weight of the book page." -msgstr "" - -#: modules/book.views.inc:69 modules/comment.views.inc:202 modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:24 -msgid "Depth" -msgstr "" - -#: modules/book.views.inc:70 -msgid "The depth of the book page in the hierarchy; top level books have a depth of 1." -msgstr "" - -#: modules/book.views.inc:87 -msgid "Hierarchy" -msgstr "" - -#: modules/book.views.inc:88 -msgid "The order of pages in the book hierarchy. Remember to sort by weight too if you want exactly the right order." -msgstr "" - -#: modules/book.views.inc:110 modules/taxonomy.views.inc:259 -msgid "Parent" -msgstr "" - -#: modules/book.views.inc:111 -msgid "The parent book node." -msgstr "" - -#: modules/book.views.inc:116 -msgid "Book parent" -msgstr "" - -#: modules/comment.views.inc:22;26;384;395 -msgid "Comment" -msgstr "" - -#: modules/comment.views.inc:27 -msgid "Comments are responses to node content." -msgstr "" - -#: modules/comment.views.inc:45 -msgid "The title of the comment." -msgstr "" - -#: modules/comment.views.inc:63 modules/node.views.inc:358 -msgid "Body" -msgstr "" - -#: modules/comment.views.inc:64 -msgid "The text of the comment." -msgstr "" - -#: modules/comment.views.inc:76 -msgid "ID" -msgstr "" - -#: modules/comment.views.inc:77 -msgid "The comment ID of the field" -msgstr "" - -#: modules/comment.views.inc:95 -msgid "Author" -msgstr "" - -#: modules/comment.views.inc:96 -msgid "The name of the poster." -msgstr "" - -#: modules/comment.views.inc:114 -msgid "Author's website" -msgstr "" - -#: modules/comment.views.inc:115 -msgid "The website address of the comment's author. Can be a link. The homepage can also be linked with the Name field. Will be empty if posted by a registered user." -msgstr "" - -#: modules/comment.views.inc:133 modules/node.views.inc:108 -msgid "Post date" -msgstr "" - -#: modules/comment.views.inc:134 -msgid "Date and time of when the comment was posted." -msgstr "" - -#: modules/comment.views.inc:149 -msgid "In moderation" -msgstr "" - -#: modules/comment.views.inc:150 -msgid "Whether or not the comment is currently in moderation." -msgstr "" - -#: modules/comment.views.inc:157 modules/node.views.inc:204;213 -msgid "Moderated" -msgstr "" - -#: modules/comment.views.inc:167 -msgid "View link" -msgstr "" - -#: modules/comment.views.inc:168 -msgid "Provide a simple link to view the comment." -msgstr "" - -#: modules/comment.views.inc:176 modules/node.views.inc:250 modules/user.views.inc:202 -msgid "Edit link" -msgstr "" - -#: modules/comment.views.inc:177 -msgid "Provide a simple link to edit the comment." -msgstr "" - -#: modules/comment.views.inc:185 modules/node.views.inc:258;472 modules/user.views.inc:210 -msgid "Delete link" -msgstr "" - -#: modules/comment.views.inc:186 -msgid "Provide a simple link to delete the comment." -msgstr "" - -#: modules/comment.views.inc:194 -msgid "Reply-to link" -msgstr "" - -#: modules/comment.views.inc:195 -msgid "Provide a simple link to reply to the comment." -msgstr "" - -#: modules/comment.views.inc:203 -msgid "Display the depth of the comment if it is threaded." -msgstr "" - -#: modules/comment.views.inc:207 -msgid "Thread" -msgstr "" - -#: modules/comment.views.inc:208 -msgid "Sort by the threaded order. This will keep child comments together with their parents." -msgstr "" - -#: modules/comment.views.inc:214;220;255 modules/node.views.inc:24;29;90;357;372;484;616;627;639 modules/upload.views.inc:43 -msgid "Node" -msgstr "" - -#: modules/comment.views.inc:215 -msgid "The node the comment is a reply to." -msgstr "" - -#: modules/comment.views.inc:225;231 modules/node.views.inc:345 modules/statistics.views.inc:204 modules/user.views.inc:23;27;219 -msgid "User" -msgstr "" - -#: modules/comment.views.inc:226 -msgid "The user who wrote the comment." -msgstr "" - -#: modules/comment.views.inc:236 -msgid "Parent CID" -msgstr "" - -#: modules/comment.views.inc:237 -msgid "The Comment ID of the parent comment." -msgstr "" - -#: modules/comment.views.inc:242;247 -msgid "Parent comment" -msgstr "" - -#: modules/comment.views.inc:243 -msgid "The parent comment." -msgstr "" - -#: modules/comment.views.inc:268 -msgid "Last comment time" -msgstr "" - -#: modules/comment.views.inc:269 -msgid "Date and time of when the last comment was posted." -msgstr "" - -#: modules/comment.views.inc:284 -msgid "Last comment author" -msgstr "" - -#: modules/comment.views.inc:285 -msgid "The name of the author of the last posted comment." -msgstr "" - -#: modules/comment.views.inc:297 -msgid "Comment count" -msgstr "" - -#: modules/comment.views.inc:298 -msgid "The number of comments a node has." -msgstr "" - -#: modules/comment.views.inc:316 -msgid "Updated/commented date" -msgstr "" - -#: modules/comment.views.inc:317 -msgid "The most recent of last comment posted or node updated time." -msgstr "" - -#: modules/comment.views.inc:340 -msgid "New comments" -msgstr "" - -#: modules/comment.views.inc:341 -msgid "The number of new comments on the node." -msgstr "" - -#: modules/comment.views.inc:349 -msgid "Comment status" -msgstr "" - -#: modules/comment.views.inc:350 -msgid "Whether comments are enabled or disabled on the node." -msgstr "" - -#: modules/comment.views.inc:364 -msgid "User posted or commented" -msgstr "" - -#: modules/comment.views.inc:365 -msgid "Display comments only if a user posted the node or commented on the node." -msgstr "" - -#: modules/comment.views.inc:385 -msgid "Display the comment with standard comment view." -msgstr "" - -#: modules/comment.views.inc:396 -msgid "Display the comment as RSS." -msgstr "" - -#: modules/node.views.inc:30 -msgid "Nodes are a Drupal site's primary content." -msgstr "" - -#: modules/node.views.inc:57 -msgid "Nid" -msgstr "" - -#: modules/node.views.inc:58 -msgid "The node ID of the node." -msgstr "" - -#: modules/node.views.inc:86;414 -msgid "The title of the node." -msgstr "" - -#: modules/node.views.inc:109 -msgid "The date the node was posted." -msgstr "" - -#: modules/node.views.inc:124 -msgid "Updated date" -msgstr "" - -#: modules/node.views.inc:125 -msgid "The date the node was last updated." -msgstr "" - -#: modules/node.views.inc:141 -msgid "The type of a node (for example, \"blog entry\", \"forum post\", \"story\", etc)." -msgstr "" - -#: modules/node.views.inc:159;167;181 modules/translation.views.inc:106 modules/upload.views.inc:82 -msgid "Published" -msgstr "" - -#: modules/node.views.inc:160 -msgid "The published status of the node." -msgstr "" - -#: modules/node.views.inc:176 -msgid "Published or admin" -msgstr "" - -#: modules/node.views.inc:177 -msgid "Filters out unpublished nodes if the current user cannot view them." -msgstr "" - -#: modules/node.views.inc:187;195 -msgid "Promoted to front page" -msgstr "" - -#: modules/node.views.inc:188 -msgid "The front page of the node." -msgstr "" - -#: modules/node.views.inc:205 -msgid "Whether or not the node is moderated." -msgstr "" - -#: modules/node.views.inc:222;231 -msgid "Sticky" -msgstr "" - -#: modules/node.views.inc:223 -msgid "Whether or not the node is sticky." -msgstr "" - -#: modules/node.views.inc:242 -msgid "Link" -msgstr "" - -#: modules/node.views.inc:243 -msgid "Provide a simple link to the node." -msgstr "" - -#: modules/node.views.inc:251 -msgid "Provide a simple link to edit the node." -msgstr "" - -#: modules/node.views.inc:259 -msgid "Provide a simple link to delete the node." -msgstr "" - -#: modules/node.views.inc:267;448 modules/user.views.inc:123 -msgid "Created date" -msgstr "" - -#: modules/node.views.inc:268 -msgid "In the form of CCYYMMDD." -msgstr "" - -#: modules/node.views.inc:276 -msgid "Created year + month" -msgstr "" - -#: modules/node.views.inc:277 -msgid "In the form of YYYYMM." -msgstr "" - -#: modules/node.views.inc:285 -msgid "Created year" -msgstr "" - -#: modules/node.views.inc:286 -msgid "In the form of YYYY." -msgstr "" - -#: modules/node.views.inc:294 -msgid "Created month" -msgstr "" - -#: modules/node.views.inc:295 -msgid "In the form of MM (01 - 12)." -msgstr "" - -#: modules/node.views.inc:303 -msgid "Created day" -msgstr "" - -#: modules/node.views.inc:304 -msgid "In the form of DD (01 - 31)." -msgstr "" - -#: modules/node.views.inc:312 -msgid "Created week" -msgstr "" - -#: modules/node.views.inc:313 -msgid "In the form of WW (01 - 53)." -msgstr "" - -#: modules/node.views.inc:325;330 -msgid "Node revision" -msgstr "" - -#: modules/node.views.inc:331 -msgid "Node revisions are a history of changes to nodes." -msgstr "" - -#: modules/node.views.inc:346 -msgid "Relate a node revision to the user who created the revision." -msgstr "" - -#: modules/node.views.inc:351 -msgid "user" -msgstr "" - -#: modules/node.views.inc:359 -msgid "The actual, full data in the body field; this may not be valid data on all node types." -msgstr "" - -#: modules/node.views.inc:373 -msgid "Teaser" -msgstr "" - -#: modules/node.views.inc:374 -msgid "The stored teaser field. This may not be valid or useful data on all node types." -msgstr "" - -#: modules/node.views.inc:387 -msgid "Vid" -msgstr "" - -#: modules/node.views.inc:388 -msgid "The revision ID of the node revision." -msgstr "" - -#: modules/node.views.inc:434 -msgid "Log message" -msgstr "" - -#: modules/node.views.inc:435 -msgid "The log message entered when the revision was created." -msgstr "" - -#: modules/node.views.inc:449 -msgid "The date the node revision was created." -msgstr "" - -#: modules/node.views.inc:464 -msgid "Revert link" -msgstr "" - -#: modules/node.views.inc:465 -msgid "Provide a simple link to revert to the revision." -msgstr "" - -#: modules/node.views.inc:473 -msgid "Provide a simple link to delete the node revision." -msgstr "" - -#: modules/node.views.inc:500 -msgid "Has new content" -msgstr "" - -#: modules/node.views.inc:503 -msgid "Show a marker if the node has new or updated content." -msgstr "" - -#: modules/node.views.inc:506 -msgid "Show only nodes that have new content." -msgstr "" - -#: modules/node.views.inc:617;628 -msgid "Display the node with standard node view." -msgstr "" - -#: modules/node.views.inc:646 -msgid "Node ID from URL" -msgstr "" - -#: modules/node.views.inc:708 -msgid "Display %display has no access control but does not contain a filter for published nodes." -msgstr "" - -#: modules/poll.views.inc:23 -msgid "Poll" -msgstr "" - -#: modules/poll.views.inc:38;47 modules/user.views.inc:171;180 -msgid "Active" -msgstr "" - -#: modules/poll.views.inc:39 -msgid "Whether the poll is open for voting." -msgstr "" - -#: modules/profile.views.inc:20;40 -msgid "Profile" -msgstr "" - -#: modules/profile.views.inc:100 -msgid "@field-name" -msgstr "" - -#: modules/profile.views.inc:107 -msgid "Profile textfield" -msgstr "" - -#: modules/profile.views.inc:126 -msgid "Profile textarea" -msgstr "" - -#: modules/profile.views.inc:142 -msgid "Profile checkbox" -msgstr "" - -#: modules/profile.views.inc:159 -msgid "Profile URL" -msgstr "" - -#: modules/profile.views.inc:175 -msgid "Profile selection" -msgstr "" - -#: modules/profile.views.inc:195 -msgid "Profile freeform list %field-name." -msgstr "" - -#: modules/profile.views.inc:207 -msgid "Profile date %field-name." -msgstr "" - -#: modules/search.views.inc:23;77;88;106;163 -msgid "Search" -msgstr "" - -#: modules/search.views.inc:72 -msgid "Score" -msgstr "" - -#: modules/search.views.inc:73 -msgid "The score of the search item." -msgstr "" - -#: modules/search.views.inc:95 -msgid "Links from" -msgstr "" - -#: modules/search.views.inc:96 -msgid "Nodes that link from the node." -msgstr "" - -#: modules/search.views.inc:113 -msgid "Links to" -msgstr "" - -#: modules/search.views.inc:114 -msgid "Nodes that link to the node." -msgstr "" - -#: modules/search.views.inc:125 -msgid "Search Terms" -msgstr "" - -#: modules/search.views.inc:126 -msgid "The terms to search for." -msgstr "" - -#: modules/search.views.inc:164 -msgid "Display the results with standard search view." -msgstr "" - -#: modules/statistics.views.inc:24 -msgid "Node statistics" -msgstr "" - -#: modules/statistics.views.inc:36 -msgid "Total views" -msgstr "" - -#: modules/statistics.views.inc:37 -msgid "The total number of times the node has been viewed." -msgstr "" - -#: modules/statistics.views.inc:53 -msgid "Views today" -msgstr "" - -#: modules/statistics.views.inc:54 -msgid "The total number of times the node has been viewed today." -msgstr "" - -#: modules/statistics.views.inc:70 -msgid "Most recent view" -msgstr "" - -#: modules/statistics.views.inc:71 -msgid "The most recent time the node has been viewed." -msgstr "" - -#: modules/statistics.views.inc:89;94 -msgid "Access log" -msgstr "" - -#: modules/statistics.views.inc:95 -msgid "Stores site access information." -msgstr "" - -#: modules/statistics.views.inc:109 -msgid "Session ID" -msgstr "" - -#: modules/statistics.views.inc:110 -msgid "Browser session ID of user that visited page." -msgstr "" - -#: modules/statistics.views.inc:129 -msgid "Page title" -msgstr "" - -#: modules/statistics.views.inc:130 -msgid "Title of page visited." -msgstr "" - -#: modules/statistics.views.inc:150 -msgid "Internal path to page visited (relative to Drupal root.)" -msgstr "" - -#: modules/statistics.views.inc:169 -msgid "Referrer" -msgstr "" - -#: modules/statistics.views.inc:170 -msgid "Referrer URI." -msgstr "" - -#: modules/statistics.views.inc:185 -msgid "Hostname" -msgstr "" - -#: modules/statistics.views.inc:186 -msgid "Hostname of user that visited the page." -msgstr "" - -#: modules/statistics.views.inc:205 -msgid "The user who visited the site." -msgstr "" - -#: modules/statistics.views.inc:215 -msgid "Timer" -msgstr "" - -#: modules/statistics.views.inc:216 -msgid "Time in milliseconds that the page took to load." -msgstr "" - -#: modules/statistics.views.inc:231 -msgid "Timestamp" -msgstr "" - -#: modules/statistics.views.inc:232 -msgid "Timestamp of when the page was visited." -msgstr "" - -#: modules/system.views.inc:25;30 -msgid "File" -msgstr "" - -#: modules/system.views.inc:31 -msgid "Files maintained by Drupal and various modules." -msgstr "" - -#: modules/system.views.inc:49 -msgid "File ID" -msgstr "" - -#: modules/system.views.inc:50 -msgid "The ID of the file." -msgstr "" - -#: modules/system.views.inc:70 -msgid "The name of the file." -msgstr "" - -#: modules/system.views.inc:89 -msgid "The path of the file." -msgstr "" - -#: modules/system.views.inc:107 -msgid "Mime type" -msgstr "" - -#: modules/system.views.inc:108 -msgid "The mime type of the file." -msgstr "" - -#: modules/system.views.inc:126 -msgid "Size" -msgstr "" - -#: modules/system.views.inc:127 -msgid "The size of the file." -msgstr "" - -#: modules/system.views.inc:142 -msgid "Status" -msgstr "" - -#: modules/system.views.inc:143 -msgid "The status of the file." -msgstr "" - -#: modules/system.views.inc:158 -msgid "Upload date" -msgstr "" - -#: modules/system.views.inc:159 -msgid "The date the file was uploaded." -msgstr "" - -#: modules/system.views.inc:204 -msgid "Temporary" -msgstr "" - -#: modules/system.views.inc:205 -msgid "Permanent" -msgstr "" - -#: modules/taxonomy.views.inc:24;67;152;170;226;266;303;314 -msgid "Taxonomy" -msgstr "" - -#: modules/taxonomy.views.inc:48 -msgid "Vocabulary name" -msgstr "" - -#: modules/taxonomy.views.inc:50 -msgid "Name of the vocabulary a term is a member of. This will be the vocabulary that whichever term the \"Taxonomy: Term\" field is; and can similarly cause duplicates." -msgstr "" - -#: modules/taxonomy.views.inc:56 -msgid "Vocabulary ID" -msgstr "" - -#: modules/taxonomy.views.inc:57 -msgid "The taxonomy vocabulary ID" -msgstr "" - -#: modules/taxonomy.views.inc:70;116;213 -msgid "Term" -msgstr "" - -#: modules/taxonomy.views.inc:71 -msgid "Taxonomy terms are attached to nodes." -msgstr "" - -#: modules/taxonomy.views.inc:96;196 modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:35 -msgid "Term ID" -msgstr "" - -#: modules/taxonomy.views.inc:97;197 -msgid "The taxonomy term ID" -msgstr "" - -#: modules/taxonomy.views.inc:117 -msgid "Taxonomy terms. Note that using this can cause duplicate nodes to appear in views; you must add filters to reduce the result set." -msgstr "" - -#: modules/taxonomy.views.inc:127 -msgid "Taxonomy term name." -msgstr "" - -#: modules/taxonomy.views.inc:136 -msgid "The term weight field" -msgstr "" - -#: modules/taxonomy.views.inc:148 -msgid "Term description" -msgstr "" - -#: modules/taxonomy.views.inc:149 -msgid "The description associated with a taxonomy term." -msgstr "" - -#: modules/taxonomy.views.inc:160 modules/taxonomy/views_handler_filter_term_node_tid.inc:37 -msgid "Vocabulary" -msgstr "" - -#: modules/taxonomy.views.inc:161 -msgid "Filter the results of \"Taxonomy: Term\" to a particular vocabulary." -msgstr "" - -#: modules/taxonomy.views.inc:199 -msgid "All terms" -msgstr "" - -#: modules/taxonomy.views.inc:200 -msgid "Display all taxonomy terms associated with a node from specified vocabularies." -msgstr "" - -#: modules/taxonomy.views.inc:254 -msgid "Parent term" -msgstr "" - -#: modules/taxonomy.views.inc:255 -msgid "The parent term of the term. This can produce duplicate entries if you are using a vocabulary that allows multiple parents." -msgstr "" - -#: modules/taxonomy.views.inc:287 -msgid "Term synonym" -msgstr "" - -#: modules/taxonomy.views.inc:288 -msgid "Term synonyms may be used to find terms by alternate names." -msgstr "" - -#: modules/taxonomy.views.inc:304 -msgid "Term ID (with depth)" -msgstr "" - -#: modules/taxonomy.views.inc:305 -msgid "The depth filter is more complex, so provides fewer options." -msgstr "" - -#: modules/taxonomy.views.inc:315 -msgid "Term ID depth modifier" -msgstr "" - -#: modules/taxonomy.views.inc:316 -msgid "Allows the \"depth\" for Taxonomy: Term ID (with depth) to be modified via an additional argument." -msgstr "" - -#: modules/taxonomy.views.inc:372 -msgid "Taxonomy term" -msgstr "" - -#: modules/translation.views.inc:31;48;80;97 -msgid "Node translation" -msgstr "" - -#: modules/translation.views.inc:32 modules/node/views_handler_filter_node_language.inc:9 modules/translation/views_handler_filter_node_language.inc:9 -msgid "Language" -msgstr "" - -#: modules/translation.views.inc:33 -msgid "The language the content is in." -msgstr "" - -#: modules/translation.views.inc:49 -msgid "Translation set node ID" -msgstr "" - -#: modules/translation.views.inc:50 -msgid "The ID of the translation set the content belongs to." -msgstr "" - -#: modules/translation.views.inc:69;74 -msgid "Source translation" -msgstr "" - -#: modules/translation.views.inc:70 -msgid "The source that this content was translated from." -msgstr "" - -#: modules/translation.views.inc:81;84;91 -msgid "Translations" -msgstr "" - -#: modules/translation.views.inc:82;85 -msgid "Versions of content in different languages." -msgstr "" - -#: modules/translation.views.inc:98 -msgid "Translation status" -msgstr "" - -#: modules/translation.views.inc:99 -msgid "The translation status of the node--whether or not the translation needs to be updated." -msgstr "" - -#: modules/upload.views.inc:25;112 -msgid "Upload" -msgstr "" - -#: modules/upload.views.inc:44 -msgid "The node the uploaded file is attached to" -msgstr "" - -#: modules/upload.views.inc:46 -msgid "upload" -msgstr "" - -#: modules/upload.views.inc:57 -msgid "The description of the uploaded file." -msgstr "" - -#: modules/upload.views.inc:74 -msgid "Listed" -msgstr "" - -#: modules/upload.views.inc:75 -msgid "Whether or not the file is marked to be listed." -msgstr "" - -#: modules/upload.views.inc:91 -msgid "The weight, used for sorting." -msgstr "" - -#: modules/upload.views.inc:113;125 -msgid "Attached files" -msgstr "" - -#: modules/upload.views.inc:114 -msgid "All files attached to a node with upload.module." -msgstr "" - -#: modules/upload.views.inc:121 modules/upload/views_handler_filter_upload_fid.inc:10 -msgid "Has attached files" -msgstr "" - -#: modules/upload.views.inc:122 -msgid "Only display items with attached files. This can cause duplicates if there are multiple attached files." -msgstr "" - -#: modules/upload.views.inc:126 -msgid "Add a relationship to gain access to more file data for files uploaded by upload.module. Note that this relationship will cause duplicate nodes if there are multiple files attached to the node." -msgstr "" - -#: modules/upload.views.inc:132 -msgid "Files" -msgstr "" - -#: modules/user.views.inc:28 -msgid "Users who have created accounts on your site." -msgstr "" - -#: modules/user.views.inc:48 -msgid "Uid" -msgstr "" - -#: modules/user.views.inc:49 -msgid "The user ID" -msgstr "" - -#: modules/user.views.inc:70 -msgid "Current" -msgstr "" - -#: modules/user.views.inc:71 -msgid "Filter the view to the currently logged in user." -msgstr "" - -#: modules/user.views.inc:80 -msgid "The user or author name." -msgstr "" - -#: modules/user.views.inc:96 -msgid "E-mail" -msgstr "" - -#: modules/user.views.inc:97 -msgid "Email address for a given user. This field is not normally shown to users, so be cautious when using it." -msgstr "" - -#: modules/user.views.inc:112 -msgid "Picture" -msgstr "" - -#: modules/user.views.inc:113 -msgid "The user's picture, if allowed." -msgstr "" - -#: modules/user.views.inc:124 -msgid "The date the user was created." -msgstr "" - -#: modules/user.views.inc:139 -msgid "Last access" -msgstr "" - -#: modules/user.views.inc:140 -msgid "The user's last access date." -msgstr "" - -#: modules/user.views.inc:155 -msgid "Last login" -msgstr "" - -#: modules/user.views.inc:156 -msgid "The user's last login date." -msgstr "" - -#: modules/user.views.inc:172 -msgid "Whether a user is active or blocked." -msgstr "" - -#: modules/user.views.inc:189 -msgid "Signature" -msgstr "" - -#: modules/user.views.inc:190 -msgid "The user's signature." -msgstr "" - -#: modules/user.views.inc:203 -msgid "Provide a simple link to edit the user." -msgstr "" - -#: modules/user.views.inc:211 -msgid "Provide a simple link to delete the user." -msgstr "" - -#: modules/user.views.inc:240 -msgid "Roles" -msgstr "" - -#: modules/user.views.inc:241 -msgid "Roles that a user belongs to." -msgstr "" - -#: modules/user.views.inc:253 -msgid "No role" -msgstr "" - -#: modules/user.views.inc:296 -msgid "User ID from URL" -msgstr "" - -#: modules/user.views.inc:302 -msgid "User ID from logged in user" -msgstr "" - -#: modules/views.views.inc:18 -msgid "Global" -msgstr "" - -#: modules/views.views.inc:23 -msgid "Random" -msgstr "" - -#: modules/views.views.inc:24 -msgid "Randomize the display order." -msgstr "" - -#: modules/views.views.inc:31 -msgid "Null" -msgstr "" - -#: modules/views.views.inc:32 -msgid "Allow an argument to be ignored. The query will not be altered by this argument." -msgstr "" - -#: modules/comment/views_handler_argument_comment_user_uid.inc:11 modules/user/views_handler_argument_user_uid.inc:17 -msgid "Anonymous" -msgstr "" - -#: modules/comment/views_handler_argument_comment_user_uid.inc:17 -msgid "No user" -msgstr "" - -#: modules/comment/views_handler_field_comment.inc:30 -msgid "Link this field to its comment" -msgstr "" - -#: modules/comment/views_handler_field_comment_link.inc:23 modules/node/views_handler_field_node_link.inc:24 modules/user/views_handler_field_user_link.inc:22 -msgid "Text to display" -msgstr "" - -#: modules/comment/views_handler_field_comment_link.inc:34 modules/node/views_handler_field_node_link.inc:35 modules/user/views_handler_field_user_link.inc:38 -msgid "view" -msgstr "" - -#: modules/comment/views_handler_field_comment_link_delete.inc:12 modules/node/views_handler_field_node_link_delete.inc:26 modules/node/views_handler_field_node_revision_link_delete.inc:35 modules/user/views_handler_field_user_link_delete.inc:13 -msgid "delete" -msgstr "" - -#: modules/comment/views_handler_field_comment_link_edit.inc:21 modules/node/views_handler_field_node_link_edit.inc:26 modules/user/views_handler_field_user_link_edit.inc:13 -msgid "edit" -msgstr "" - -#: modules/comment/views_handler_field_comment_link_reply.inc:13 -msgid "reply" -msgstr "" - -#: modules/comment/views_handler_field_comment_username.inc:25 -msgid "Link this field to its user or an author's homepage" -msgstr "" - -#: modules/comment/views_handler_field_node_comment.inc:12 modules/comment/views_handler_filter_node_comment.inc:10 -msgid "Disabled" -msgstr "" - -#: modules/comment/views_handler_field_node_comment.inc:14 modules/comment/views_handler_filter_node_comment.inc:11 -msgid "Read only" -msgstr "" - -#: modules/comment/views_handler_field_node_comment.inc:16 modules/comment/views_handler_filter_node_comment.inc:12 -msgid "Read/Write" -msgstr "" - -#: modules/comment/views_handler_field_node_new_comments.inc:25 -msgid "Link this field to new comments" -msgstr "" - -#: modules/comment/views_handler_field_node_new_comments.inc:30 -msgid "Display nothing if no new comments" -msgstr "" - -#: modules/comment/views_plugin_row_comment_view.inc:21 modules/node/views_plugin_row_node_view.inc:32 -msgid "Display links" -msgstr "" - -#: modules/node/views_handler_argument_dates_various.inc:167 -msgid "Week @week" -msgstr "" - -#: modules/node/views_handler_argument_node_language.inc:29 modules/translation/views_handler_argument_node_language.inc:29 -msgid "Unknown language" -msgstr "" - -#: modules/node/views_handler_argument_node_type.inc:30 -msgid "Unknown node type" -msgstr "" - -#: modules/node/views_handler_field_history_user_timestamp.inc:32 -msgid "Check for new comments as well" -msgstr "" - -#: modules/node/views_handler_field_node.inc:32 -msgid "Link this field to its node" -msgstr "" - -#: modules/node/views_handler_field_node_revision_link_revert.inc:36 -msgid "revert" -msgstr "" - -#: modules/node/views_handler_filter_node_language.inc:10 modules/translation/views_handler_filter_node_language.inc:10 -msgid "Current user's language" -msgstr "" - -#: modules/node/views_handler_filter_node_language.inc:10 modules/translation/views_handler_filter_node_language.inc:10 -msgid "No language" -msgstr "" - -#: modules/node/views_handler_filter_node_type.inc:9 -msgid "Node type" -msgstr "" - -#: modules/node/views_plugin_argument_validate_node.inc:29 -msgid "Types" -msgstr "" - -#: modules/node/views_plugin_argument_validate_node.inc:32 -msgid "If you wish to validate for specific node types, check them; if none are checked, all nodes will pass." -msgstr "" - -#: modules/node/views_plugin_argument_validate_node.inc:39 -msgid "Validate user has access to the node" -msgstr "" - -#: modules/node/views_plugin_argument_validate_node.inc:47 modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:33 -msgid "Argument type" -msgstr "" - -#: modules/node/views_plugin_argument_validate_node.inc:49 -msgid "Node ID" -msgstr "" - -#: modules/node/views_plugin_argument_validate_node.inc:50 -msgid "Node IDs separated by , or +" -msgstr "" - -#: modules/node/views_plugin_row_node_rss.inc:26 -msgid "Full text" -msgstr "" - -#: modules/node/views_plugin_row_node_rss.inc:27 -msgid "Title plus teaser" -msgstr "" - -#: modules/node/views_plugin_row_node_rss.inc:28 -msgid "Title only" -msgstr "" - -#: modules/node/views_plugin_row_node_rss.inc:29 -msgid "Use default RSS settings" -msgstr "" - -#: modules/node/views_plugin_row_node_rss.inc:95 -msgid "read more" -msgstr "" - -#: modules/node/views_plugin_row_node_view.inc:27 -msgid "Display only teaser" -msgstr "" - -#: modules/node/views_plugin_row_node_view.inc:37 -msgid "Display node comments" -msgstr "" - -#: modules/search/views_handler_filter_search.inc:23 -msgid "On empty input" -msgstr "" - -#: modules/search/views_handler_filter_search.inc:26 -msgid "Show All" -msgstr "" - -#: modules/search/views_handler_filter_search.inc:27 -msgid "Show None" -msgstr "" - -#: modules/search/views_handler_filter_search.inc:42 -msgid "Enter the terms you wish to search for." -msgstr "" - -#: modules/search/views_handler_filter_search.inc:62 -msgid "You must include at least one positive keyword with @count characters or more." -msgstr "" - -#: modules/search/views_handler_filter_search.inc:66 -msgid "Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>." -msgstr "" - -#: modules/search/views_plugin_row_search_view.inc:23 -msgid "Display score" -msgstr "" - -#: modules/system/views_handler_argument_file_fid.inc:13 -msgid "No title" -msgstr "" - -#: modules/system/views_handler_field_file.inc:29 modules/upload/views_handler_field_upload_description.inc:24 modules/upload/views_handler_field_upload_fid.inc:21 -msgid "Link this field to download the file" -msgstr "" - -#: modules/taxonomy/views_handler_argument_taxonomy.inc:18 modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:125 -msgid "No name" -msgstr "" - -#: modules/taxonomy/views_handler_argument_term_node_tid.inc:17 modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:38 -msgid "Set the breadcrumb for the term parents" -msgstr "" - -#: modules/taxonomy/views_handler_argument_term_node_tid.inc:18 modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:39 -msgid "If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received." -msgstr "" - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:26 -msgid "The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term \"fruit\" and a child term \"apple\", with a depth of 1 (or higher) then filtering for the term \"fruit\" will get nodes that are tagged with \"apple\" as well as \"fruit\". If negative, the reverse is true; searching for \"apple\" will also pick up nodes tagged with \"fruit\" if depth is -1 (or lower)." -msgstr "" - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:31 -msgid "Allow multiple terms per argument" -msgstr "" - -#: modules/taxonomy/views_handler_argument_term_node_tid_depth.inc:32 -msgid "If selected, users can enter multiple arguments in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this argument." -msgstr "" - -#: modules/taxonomy/views_handler_argument_vocabulary_vid.inc:15 -msgid "No vocabulary" -msgstr "" - -#: modules/taxonomy/views_handler_field_taxonomy.inc:33 -msgid "Link this field to its taxonomy term page" -msgstr "" - -#: modules/taxonomy/views_handler_field_term_node_tid.inc:34 -msgid "Link this field to its term page" -msgstr "" - -#: modules/taxonomy/views_handler_field_term_node_tid.inc:41 -msgid "Limit terms by vocabulary" -msgstr "" - -#: modules/taxonomy/views_handler_field_term_node_tid.inc:55 modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:23 -msgid "Vocabularies" -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:39 -msgid "Select which vocabulary to show terms for in the regular options." -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:49 -msgid "Selection type" -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:50 -msgid "Dropdown" -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:50 -msgid "Autocomplete" -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:56 -msgid "Show hierarchy in dropdown" -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:73 -msgid "An invalid vocabulary is selected. Please change it in the options." -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:91;147 -msgid "Select terms from vocabulary @voc" -msgstr "" - -#: modules/taxonomy/views_handler_filter_term_node_tid.inc:255 -msgid "Unable to find term: @terms" -msgid_plural "Unable to find terms: @terms" -msgstr[0] "" -msgstr[1] "" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:26 -msgid "If you wish to validate for specific vocabularies, check them; if none are checked, all terms will pass." -msgstr "" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:36 -msgid "Term IDs separated by , or +" -msgstr "" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:37 -msgid "Term name or synonym" -msgstr "" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:38 -msgid "Term name/synonym converted to Term ID" -msgstr "" - -#: modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc:41 -msgid "Select the form of this argument; if using term name, it is generally more efficient to convert it to a term ID and use Taxonomy: Term ID rather than Taxonomy: Term Name\" as an argument." -msgstr "" - -#: modules/translation/views_handler_filter_node_language.inc:10 -msgid "Default site language" -msgstr "" - -#: modules/translation/views_handler_relationship_translation.inc:24 -msgid "Current language" -msgstr "" - -#: modules/translation/views_handler_relationship_translation.inc:25 -msgid "Default language" -msgstr "" - -#: modules/translation/views_handler_relationship_translation.inc:32 -msgid "Translation option" -msgstr "" - -#: modules/translation/views_handler_relationship_translation.inc:33 -msgid "The translation options allows you to select which translation or translations in a translation set join on. Select \"Current language\" or \"Default language\" to join on the translation in the current or default language respectively. Select a specific language to join on a translation in that language. If you select \"All\", each translation will create a new row, which may appear to cause duplicates." -msgstr "" - -#: modules/upload/views_handler_field_upload_fid.inc:27 -msgid "Only show \"listed\" file attachments" -msgstr "" - -#: modules/user/views_handler_field_user.inc:30 -msgid "Link this field to its user" -msgstr "" - -#: modules/user/views_handler_field_user_mail.inc:16 -msgid "Link this field" -msgstr "" - -#: modules/user/views_handler_field_user_mail.inc:19 -msgid "No link" -msgstr "" - -#: modules/user/views_handler_field_user_mail.inc:20 -msgid "To the user" -msgstr "" - -#: modules/user/views_handler_field_user_mail.inc:21 -msgid "With a mailto:" -msgstr "" - -#: modules/user/views_handler_filter_user_current.inc:10 -msgid "Is the logged in user" -msgstr "" - -#: modules/user/views_handler_filter_user_name.inc:28 -msgid "Usernames" -msgstr "" - -#: modules/user/views_handler_filter_user_name.inc:29 -msgid "Enter a comma separated list of user names." -msgstr "" - -#: modules/user/views_handler_filter_user_name.inc:112 -msgid "Unable to find user: @users" -msgid_plural "Unable to find users: @users" -msgstr[0] "" -msgstr[1] "" - -#: modules/user/views_plugin_argument_default_user.inc:17 -msgid "Also look for a node and use the node author" -msgstr "" - -#: plugins/views_plugin_access_none.inc:9 -msgid "Unrestricted" -msgstr "" - -#: plugins/views_plugin_access_perm.inc:37 -msgid "Only users with the selected permission flag will be able to access this display. Note that users with \"access all views\" can see any view, regardless of other permissions." -msgstr "" - -#: plugins/views_plugin_access_role.inc:21 -msgid "No role(s) selected" -msgstr "" - -#: plugins/views_plugin_access_role.inc:24 -msgid "Multiple roles" -msgstr "" - -#: plugins/views_plugin_access_role.inc:43 -msgid "Only the checked roles will be able to access this display. Note that users with \"access all views\" can see any view, regardless of role." -msgstr "" - -#: plugins/views_plugin_access_role.inc:49 -msgid "You must select at least one role if type is \"by role\"" -msgstr "" - -#: plugins/views_plugin_argument_default.inc:32 -msgid "Default argument" -msgstr "" - -#: plugins/views_plugin_argument_default.inc:54 -msgid "Note: you do not have permission to modify this. If you change the default argument type, this setting will be lost and you will NOT be able to get it back." -msgstr "" - -#: plugins/views_plugin_argument_default_php.inc:17 -msgid "PHP argument code" -msgstr "" - -#: plugins/views_plugin_argument_default_php.inc:20 -msgid "Enter PHP code that returns a value to use for this argument. Do not use <?php ?>. You must return only a single value for just this argument." -msgstr "" - -#: plugins/views_plugin_argument_validate.inc:43 -msgid "Note: you do not have permission to modify this. If you change the validator, this setting will be lost and you will NOT be able to get it back." -msgstr "" - -#: plugins/views_plugin_argument_validate_php.inc:19 -msgid "PHP validate code" -msgstr "" - -#: plugins/views_plugin_argument_validate_php.inc:21 -msgid "Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be \"$argument\" and the view will be \"$view\". You may change the argument by setting \"$handler->argument\"." -msgstr "" - -#: plugins/views_plugin_display.inc:558 -msgid "Broken field" -msgstr "" - -#: plugins/views_plugin_display.inc:575 -msgid "Basic settings" -msgstr "" - -#: plugins/views_plugin_display.inc:582 -msgid "Change the name of this display." -msgstr "" - -#: plugins/views_plugin_display.inc:594 -msgid "Change the title that this display will use." -msgstr "" - -#: plugins/views_plugin_display.inc:604 -msgid "Style" -msgstr "" - -#: plugins/views_plugin_display.inc:606 -msgid "Change the style plugin." -msgstr "" - -#: plugins/views_plugin_display.inc:620 -msgid "Row style" -msgstr "" - -#: plugins/views_plugin_display.inc:622 -msgid "Change the row plugin." -msgstr "" - -#: plugins/views_plugin_display.inc:632 -msgid "Use AJAX" -msgstr "" - -#: plugins/views_plugin_display.inc:634 -msgid "Change whether or not this display will use AJAX." -msgstr "" - -#: plugins/views_plugin_display.inc:641 -msgid "Use pager" -msgstr "" - -#: plugins/views_plugin_display.inc:642 -msgid "Mini" -msgstr "" - -#: plugins/views_plugin_display.inc:643 -msgid "Change this display's pager setting." -msgstr "" - -#: plugins/views_plugin_display.inc:650;822 -msgid "Items per page" -msgstr "" - -#: plugins/views_plugin_display.inc:650;822 plugins/views_plugin_style_summary.inc:43 -msgid "Items to display" -msgstr "" - -#: plugins/views_plugin_display.inc:651 -msgid "Unlimited" -msgstr "" - -#: plugins/views_plugin_display.inc:652 -msgid "Change how many items to display." -msgstr "" - -#: plugins/views_plugin_display.inc:658 -msgid "More link" -msgstr "" - -#: plugins/views_plugin_display.inc:660 -msgid "Specify whether this display will provide a \"more\" link." -msgstr "" - -#: plugins/views_plugin_display.inc:666;849 -msgid "Distinct" -msgstr "" - -#: plugins/views_plugin_display.inc:668;846 -msgid "Display only distinct items, without duplicates." -msgstr "" - -#: plugins/views_plugin_display.inc:681 -msgid "Access" -msgstr "" - -#: plugins/views_plugin_display.inc:683 -msgid "Specify access control type for this display." -msgstr "" - -#: plugins/views_plugin_display.inc:687 -msgid "Change settings for this access type." -msgstr "" - -#: plugins/views_plugin_display.inc:707 -msgid "Link display" -msgstr "" - -#: plugins/views_plugin_display.inc:709 -msgid "Specify which display this display will link to." -msgstr "" - -#: plugins/views_plugin_display.inc:716 -msgid "Exposed form in block" -msgstr "" - -#: plugins/views_plugin_display.inc:718 -msgid "Allow the exposed form to appear in a block instead of the view." -msgstr "" - -#: plugins/views_plugin_display.inc:721;897 -msgid "Header" -msgstr "" - -#: plugins/views_plugin_display.inc:721;913 -msgid "Footer" -msgstr "" - -#: plugins/views_plugin_display.inc:721;929 -msgid "Empty text" -msgstr "" - -#: plugins/views_plugin_display.inc:737 -msgid "Unknown/missing format" -msgstr "" - -#: plugins/views_plugin_display.inc:745 -msgid "Change this display's !name." -msgstr "" - -#: plugins/views_plugin_display.inc:751 -msgid "Theme" -msgstr "" - -#: plugins/views_plugin_display.inc:752 -msgid "Information" -msgstr "" - -#: plugins/views_plugin_display.inc:753 -msgid "Get information on how to theme this display" -msgstr "" - -#: plugins/views_plugin_display.inc:779 -msgid "The name of this display" -msgstr "" - -#: plugins/views_plugin_display.inc:782 -msgid "This title will appear only in the administrative interface for the View." -msgstr "" - -#: plugins/views_plugin_display.inc:787 -msgid "The title of this view" -msgstr "" - -#: plugins/views_plugin_display.inc:790 -msgid "This title will be displayed with the view, wherever titles are normally displayed; i.e, as the page title, block title, etc." -msgstr "" - -#: plugins/views_plugin_display.inc:795 -msgid "Use AJAX when available to load this view" -msgstr "" - -#: plugins/views_plugin_display.inc:799 -msgid "If set, this view will use an AJAX mechanism for paging, table sorting and exposed filters. This means the entire page will not refresh. It is not recommended that you use this if this view is the main content of the page as it will prevent deep linking to specific pages, but it is very useful for side content." -msgstr "" - -#: plugins/views_plugin_display.inc:808 -msgid "Use a pager for this view" -msgstr "" - -#: plugins/views_plugin_display.inc:811 -msgid "Full pager" -msgstr "" - -#: plugins/views_plugin_display.inc:811 -msgid "Mini pager" -msgstr "" - -#: plugins/views_plugin_display.inc:816 -msgid "Pager element" -msgstr "" - -#: plugins/views_plugin_display.inc:817 -msgid "Unless you're experiencing problems with pagers related to this view, you should leave this at 0. If using multiple pagers on one page you may need to set this number to a higher value so as not to conflict within the ?page= array. Large values will add a lot of commas to your URLs, so avoid if possible." -msgstr "" - -#: plugins/views_plugin_display.inc:826 -msgid "The number of items to display per page. Enter 0 for no limit." -msgstr "" - -#: plugins/views_plugin_display.inc:831 -msgid "Offset" -msgstr "" - -#: plugins/views_plugin_display.inc:832 -msgid "The number of items to skip. For example, if this field is 3, the first 3 items will be skipped and not displayed. Offset can not be used if items to display is 0; instead use a very large number there." -msgstr "" - -#: plugins/views_plugin_display.inc:837 -msgid "Add a more link to the bottom of the display." -msgstr "" - -#: plugins/views_plugin_display.inc:840 -msgid "Create more link" -msgstr "" - -#: plugins/views_plugin_display.inc:841 -msgid "This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above." -msgstr "" - -#: plugins/views_plugin_display.inc:850 -msgid "This will make the view display only distinct items. If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work. Note that this can slow queries down, so use it with caution." -msgstr "" - -#: plugins/views_plugin_display.inc:855 -msgid "Access restrictions" -msgstr "" - -#: plugins/views_plugin_display.inc:874;954 -msgid "You may also adjust the !settings for the currently selected style by clicking on the icon." -msgstr "" - -#: plugins/views_plugin_display.inc:874;954;999 -msgid "settings" -msgstr "" - -#: plugins/views_plugin_display.inc:882 -msgid "Access options" -msgstr "" - -#: plugins/views_plugin_display.inc:900;916 -msgid "Display even if view has no result" -msgstr "" - -#: plugins/views_plugin_display.inc:907 -msgid "Text to display at the top of the view. May contain an explanation or links or whatever you like. Optional." -msgstr "" - -#: plugins/views_plugin_display.inc:923 -msgid "Text to display beneath the view. May contain an explanation or links or whatever you like. Optional." -msgstr "" - -#: plugins/views_plugin_display.inc:934 -msgid "Text to display if the view has no results. Optional." -msgstr "" - -#: plugins/views_plugin_display.inc:940 -msgid "How should this view be styled" -msgstr "" - -#: plugins/views_plugin_display.inc:946 -msgid "If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary." -msgstr "" - -#: plugins/views_plugin_display.inc:960 -msgid "Style options" -msgstr "" - -#: plugins/views_plugin_display.inc:971 -msgid "Row style options" -msgstr "" - -#: plugins/views_plugin_display.inc:986 -msgid "How should each row in this view be styled" -msgstr "" - -#: plugins/views_plugin_display.inc:999 -msgid "You may also adjust the !settings for the currently selected row style by clicking on the icon." -msgstr "" - -#: plugins/views_plugin_display.inc:1005 -msgid "Which display to use for path" -msgstr "" - -#: plugins/views_plugin_display.inc:1014 -msgid "Which display to use to get this display's path for things like summary links, rss feed links, more links, etc." -msgstr "" - -#: plugins/views_plugin_display.inc:1019 -msgid "Theming information" -msgstr "" - -#: plugins/views_plugin_display.inc:1027 -msgid "Display output" -msgstr "" - -#: plugins/views_plugin_display.inc:1031 -msgid "Alternative display output" -msgstr "" - -#: plugins/views_plugin_display.inc:1038 -msgid "Style output" -msgstr "" - -#: plugins/views_plugin_display.inc:1042 -msgid "Alternative style" -msgstr "" - -#: plugins/views_plugin_display.inc:1049 -msgid "Row style output" -msgstr "" - -#: plugins/views_plugin_display.inc:1053 -msgid "Alternative row style" -msgstr "" - -#: plugins/views_plugin_display.inc:1061 -msgid "Field @field (ID: @id)" -msgstr "" - -#: plugins/views_plugin_display.inc:1069 -msgid "This section lists all possible templates for the display plugin and for the style plugins, ordered roughly from the least specific to the most specific. The active template for each plugin -- which is the most specific template found on the system -- is highlighted in bold." -msgstr "" - -#: plugins/views_plugin_display.inc:1084 -msgid "Rescan template files" -msgstr "" - -#: plugins/views_plugin_display.inc:1090 -msgid "<strong>Important!</strong> When adding, removing, or renaming template files, it is necessary to make Drupal aware of the changes by making it rescan the files on your system. By clicking this button you clear Drupal's theme registry and thereby trigger this rescanning process. The highlighted templates above will then reflect the new state of your system." -msgstr "" - -#: plugins/views_plugin_display.inc:1096 -msgid "Theming information (display)" -msgstr "" - -#: plugins/views_plugin_display.inc:1097;1124;1153;1182 -msgid "Back to !info." -msgstr "" - -#: plugins/views_plugin_display.inc:1097;1124;1153;1182 -msgid "theming information" -msgstr "" - -#: plugins/views_plugin_display.inc:1100 -msgid "This display has no theming information" -msgstr "" - -#: plugins/views_plugin_display.inc:1103 -msgid "This is the default theme template used for this display." -msgstr "" - -#: plugins/views_plugin_display.inc:1109 -msgid "This is an alternative template for this display." -msgstr "" - -#: plugins/views_plugin_display.inc:1123 -msgid "Theming information (style)" -msgstr "" - -#: plugins/views_plugin_display.inc:1129 -msgid "This display has no style theming information" -msgstr "" - -#: plugins/views_plugin_display.inc:1132 -msgid "This is the default theme template used for this style." -msgstr "" - -#: plugins/views_plugin_display.inc:1138 -msgid "This is an alternative template for this style." -msgstr "" - -#: plugins/views_plugin_display.inc:1152;1181 -msgid "Theming information (row style)" -msgstr "" - -#: plugins/views_plugin_display.inc:1158 -msgid "This display has no row style theming information" -msgstr "" - -#: plugins/views_plugin_display.inc:1161;1184 -msgid "This is the default theme template used for this row style." -msgstr "" - -#: plugins/views_plugin_display.inc:1167 -msgid "This is an alternative template for this row style." -msgstr "" - -#: plugins/views_plugin_display.inc:1199 -msgid "Put the exposed form in a block" -msgstr "" - -#: plugins/views_plugin_display.inc:1203 -msgid "If set, any exposed widgets will not appear with this view. Instead, a block will be made available to the Drupal block administration system, and the exposed form will appear there. Note that this block must be enabled manually, Views will not enable it for you." -msgstr "" - -#: plugins/views_plugin_display.inc:1238 -msgid "File found in folder @template-path" -msgstr "" - -#: plugins/views_plugin_display.inc:1242 -msgid "(File not found, in folder @template-path)" -msgstr "" - -#: plugins/views_plugin_display.inc:1399 -msgid "Override" -msgstr "" - -#: plugins/views_plugin_display.inc:1404 -msgid "Status: using default values." -msgstr "" - -#: plugins/views_plugin_display.inc:1408 -msgid "Update default display" -msgstr "" - -#: plugins/views_plugin_display.inc:1413 -msgid "Use default" -msgstr "" - -#: plugins/views_plugin_display.inc:1418 -msgid "Status: using overridden values." -msgstr "" - -#: plugins/views_plugin_display.inc:1633 -msgid "Display \"@display\" uses fields but there are none defined for it or all are excluded." -msgstr "" - -#: plugins/views_plugin_display.inc:1638 -msgid "Display \"@display\" uses a path but the path is undefined." -msgstr "" - -#: plugins/views_plugin_display.inc:1643 -msgid "Display \"@display\" has an invalid style plugin." -msgstr "" - -#: plugins/views_plugin_display.inc:1659 -msgid "Exposed form: @view-@display_id" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:35 -msgid "Before" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:36 -msgid "After" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:37 -msgid "Both" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:57 -msgid "Attachment settings" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:62;109 -msgid "Inherit arguments" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:68;118 -msgid "Inherit exposed filters" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:74;127 -msgid "Position" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:80 plugins/views_plugin_display_feed.inc:98 -msgid "Multiple displays" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:95;136 plugins/views_plugin_display_feed.inc:113;140 -msgid "Attach to" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:112;121 -msgid "Inherit" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:113 -msgid "Should this display inherit its arguments from the parent display to which it is attached?" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:122 -msgid "Should this display inherit its exposed filter values from the parent display to which it is attached?" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:130 -msgid "Attach before or after the parent display?" -msgstr "" - -#: plugins/views_plugin_display_attachment.inc:145 -msgid "Select which display or displays this should attach to." -msgstr "" - -#: plugins/views_plugin_display_block.inc:68 -msgid "Block settings" -msgstr "" - -#: plugins/views_plugin_display_block.inc:82 -msgid "Admin" -msgstr "" - -#: plugins/views_plugin_display_block.inc:106 -msgid "Do not cache" -msgstr "" - -#: plugins/views_plugin_display_block.inc:107 -msgid "Cache once for everything (global)" -msgstr "" - -#: plugins/views_plugin_display_block.inc:108 -msgid "Per page" -msgstr "" - -#: plugins/views_plugin_display_block.inc:109 -msgid "Per role" -msgstr "" - -#: plugins/views_plugin_display_block.inc:110 -msgid "Per role per page" -msgstr "" - -#: plugins/views_plugin_display_block.inc:111 -msgid "Per user" -msgstr "" - -#: plugins/views_plugin_display_block.inc:112 -msgid "Per user per page" -msgstr "" - -#: plugins/views_plugin_display_block.inc:137 -msgid "Block admin description" -msgstr "" - -#: plugins/views_plugin_display_block.inc:140 -msgid "This will appear as the name of this block in administer >> site building >> blocks." -msgstr "" - -#: plugins/views_plugin_display_block.inc:145 -msgid "Block caching type" -msgstr "" - -#: plugins/views_plugin_display_block.inc:149 -msgid "This sets the default status for Drupal's built-in block caching method; this requires that caching be turned on in block administration, and be careful because you have little control over when this cache is flushed." -msgstr "" - -#: plugins/views_plugin_display_feed.inc:86 -msgid "Feed settings" -msgstr "" - -#: plugins/views_plugin_display_feed.inc:90 -msgid "Using the site name" -msgstr "" - -#: plugins/views_plugin_display_feed.inc:132 -msgid "Use the site name for the title" -msgstr "" - -#: plugins/views_plugin_display_feed.inc:149 -msgid "The feed icon will be available only to the selected displays." -msgstr "" - -#: plugins/views_plugin_display_feed.inc:155 -msgid "This view will be displayed by visiting this path on your site. It is recommended that the path be something like \"path/%/%/feed\" or \"path/%/%/rss.xml\", putting one % in the path for each argument you have defined in the view." -msgstr "" - -#: plugins/views_plugin_display_page.inc:188 -msgid "Page settings" -msgstr "" - -#: plugins/views_plugin_display_page.inc:213 -msgid "No menu" -msgstr "" - -#: plugins/views_plugin_display_page.inc:216 -msgid "Normal: @title" -msgstr "" - -#: plugins/views_plugin_display_page.inc:220 -msgid "Tab: @title" -msgstr "" - -#: plugins/views_plugin_display_page.inc:230;302 -msgid "Menu" -msgstr "" - -#: plugins/views_plugin_display_page.inc:236 -msgid "Change settings for the parent menu" -msgstr "" - -#: plugins/views_plugin_display_page.inc:249 -msgid "The menu path or URL of this view" -msgstr "" - -#: plugins/views_plugin_display_page.inc:253 -msgid "This view will be displayed by visiting this path on your site. You may use \"%\" in your URL to represent values that will be used for arguments: For example, \"node/%/feed\"." -msgstr "" - -#: plugins/views_plugin_display_page.inc:259 -msgid "Menu item entry" -msgstr "" - -#: plugins/views_plugin_display_page.inc:276 -msgid "No menu entry" -msgstr "" - -#: plugins/views_plugin_display_page.inc:277 -msgid "Normal menu entry" -msgstr "" - -#: plugins/views_plugin_display_page.inc:278;343 -msgid "Menu tab" -msgstr "" - -#: plugins/views_plugin_display_page.inc:279 -msgid "Default menu tab" -msgstr "" - -#: plugins/views_plugin_display_page.inc:288 -msgid "If set to normal or tab, enter the text to use for the menu item." -msgstr "" - -#: plugins/views_plugin_display_page.inc:295 -msgid "Warning: Changing this item's menu will not work reliably in Drupal 6.4 or earlier. Please upgrade your copy of Drupal at !url." -msgstr "" - -#: plugins/views_plugin_display_page.inc:306 -msgid "Insert item into an available menu." -msgstr "" - -#: plugins/views_plugin_display_page.inc:315 -msgid "The lower the weight the higher/further left it will appear." -msgstr "" - -#: plugins/views_plugin_display_page.inc:321 -msgid "Default tab options" -msgstr "" - -#: plugins/views_plugin_display_page.inc:330 -msgid "When providing a menu item as a tab, Drupal needs to know what the parent menu item of that tab will be. Sometimes the parent will already exist, but other times you will need to have one created. The path of a parent item will always be the same path with the last part left off. i.e, if the path to this view is <em>foo/bar/baz</em>, the parent path would be <em>foo/bar</em>." -msgstr "" - -#: plugins/views_plugin_display_page.inc:341 -msgid "Parent menu item" -msgstr "" - -#: plugins/views_plugin_display_page.inc:343 -msgid "Already exists" -msgstr "" - -#: plugins/views_plugin_display_page.inc:343 -msgid "Normal menu item" -msgstr "" - -#: plugins/views_plugin_display_page.inc:351 -msgid "If creating a parent menu item, enter the title of the item." -msgstr "" - -#: plugins/views_plugin_display_page.inc:357 -msgid "Tab weight" -msgstr "" - -#: plugins/views_plugin_display_page.inc:361 -msgid "If the parent menu item is a tab, enter the weight of the tab. The lower the number, the more to the left it will be." -msgstr "" - -#: plugins/views_plugin_display_page.inc:375 -msgid "\"$arg\" is no longer supported. Use % instead." -msgstr "" - -#: plugins/views_plugin_display_page.inc:379 -msgid "\"%\" may not be used for the first segment of a path." -msgstr "" - -#: plugins/views_plugin_display_page.inc:389 -msgid "Views cannot create normal menu items for paths with a % in them." -msgstr "" - -#: plugins/views_plugin_display_page.inc:396 -msgid "A display whose path ends with a % cannot be a tab." -msgstr "" - -#: plugins/views_plugin_display_page.inc:401 -msgid "Title is required for this menu type." -msgstr "" - -#: plugins/views_plugin_display_page.inc:432 -msgid "Display @display is set to use a menu but the menu title is not set." -msgstr "" - -#: plugins/views_plugin_display_page.inc:438 -msgid "Display @display is set to use a parent menu but the parent menu title is not set." -msgstr "" - -#: plugins/views_plugin_row_fields.inc:40 -msgid "Inline fields" -msgstr "" - -#: plugins/views_plugin_row_fields.inc:43 -msgid "Inline fields will be displayed next to each other rather than one after another." -msgstr "" - -#: plugins/views_plugin_row_fields.inc:51 -msgid "The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field." -msgstr "" - -#: plugins/views_plugin_style.inc:91 -msgid "Grouping field" -msgstr "" - -#: plugins/views_plugin_style.inc:94 -msgid "You may optionally specify a field by which to group the records. Leave blank to not group." -msgstr "" - -#: plugins/views_plugin_style.inc:191 -msgid "Style @style requires a row style but the row plugin is invalid." -msgstr "" - -#: plugins/views_plugin_style_grid.inc:33 -msgid "Number of columns" -msgstr "" - -#: plugins/views_plugin_style_grid.inc:38 -msgid "Alignment" -msgstr "" - -#: plugins/views_plugin_style_grid.inc:39 -msgid "Horizontal" -msgstr "" - -#: plugins/views_plugin_style_grid.inc:39 -msgid "Vertical" -msgstr "" - -#: plugins/views_plugin_style_grid.inc:41 -msgid "Horizontal alignment will place items starting in the upper left and moving right. Vertical alignment will place items starting in the upper left and moving down." -msgstr "" - -#: plugins/views_plugin_style_list.inc:32 -msgid "List type" -msgstr "" - -#: plugins/views_plugin_style_rss.inc:56 -msgid "Use the site mission for the description" -msgstr "" - -#: plugins/views_plugin_style_rss.inc:60 -msgid "RSS description" -msgstr "" - -#: plugins/views_plugin_style_rss.inc:62 -msgid "This will appear in the RSS feed itself." -msgstr "" - -#: plugins/views_plugin_style_summary.inc:34 -msgid "Display record count with link" -msgstr "" - -#: plugins/views_plugin_style_summary.inc:39 -msgid "Override number of items to display" -msgstr "" - -#: plugins/views_plugin_style_summary_unformatted.inc:26 -msgid "Display items inline" -msgstr "" - -#: plugins/views_plugin_style_table.inc:126 -msgid "You need at least one field before you can configure your table settings" -msgstr "" - -#: plugins/views_plugin_style_table.inc:135 -msgid "Override normal sorting if click sorting is used" -msgstr "" - -#: plugins/views_plugin_style_table.inc:141 -msgid "Enable Drupal style \"sticky\" table headers (Javascript)" -msgstr "" - -#: plugins/views_plugin_style_table.inc:143 -msgid "(Sticky header effects will not be active for preview below, only on live output.)" -msgstr "" - -#: plugins/views_plugin_style_table.inc:148 -msgid "Default sort order" -msgstr "" - -#: plugins/views_plugin_style_table.inc:151 -msgid "If a default sort order is selected, what order should it use by default." -msgstr "" - -#: plugins/views_plugin_style_table.inc:237 -msgid "Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column click sortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section." -msgstr "" - -#: theme/views-more.tpl.php:15 -msgid "more" -msgstr "" - -#: theme/views-ui-edit-item.tpl.php:32 -msgid "The style selected does not utilize fields." -msgstr "" - -#: theme/views-ui-edit-item.tpl.php:34 -msgid "None defined" -msgstr "" - -#: theme/views-ui-edit-tab.tpl.php:31 -msgid "View settings" -msgstr "" - -#: theme/views-ui-edit-view.tpl.php:11 -msgid "This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a href=\"!break\">break this lock</a>." -msgstr "" - -#: theme/views-ui-edit-view.tpl.php:16 -msgid "New view" -msgstr "" - -#: theme/views-ui-edit-view.tpl.php:18 -msgid "Changed view" -msgstr "" - -#: theme/views-ui-edit-view.tpl.php:23 -msgid "View %name, displaying items of type <strong>@base</strong>." -msgstr "" - -#: theme/views-ui-edit-view.tpl.php:42 -msgid "Live preview" -msgstr "" - -#: theme/views-ui-list-views.tpl.php:17 -msgid "<em>@type</em> @base view: <strong>@view</strong>" -msgstr "" - -#: theme/views-ui-list-views.tpl.php:27 -msgid "Title: @title" -msgstr "" - -#: theme/views-ui-list-views.tpl.php:30 -msgid "Path: !path" -msgstr "" - -#: theme/theme.inc:90 -msgid "Edit this view" -msgstr "" - -#: theme/theme.inc:307 -msgid "sort by @s" -msgstr "" - -#: theme/theme.inc:559 -msgid "‹‹" -msgstr "" - -#: theme/theme.inc:560 -msgid "››" -msgstr "" - -#: theme/theme.inc:570 -msgid "@current of @max" -msgstr "" - -#: views_export/views_export.module:76 -msgid "There are no views to be exported at this time." -msgstr "" - -#: views_export/views_export.module:108 -msgid "Show only these tags" -msgstr "" - -#: views_export/views_export.module:122 -msgid "Module name" -msgstr "" - -#: views_export/views_export.module:123 -msgid "Enter the module name to export code to." -msgstr "" - -#: views_export/views_export.module:190 -msgid "Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory" -msgstr "" - -#: views_export/views_export.module:44 -msgid "use views exporter" -msgstr "" - -#: views_export/views_export.module:17 -msgid "Bulk export" -msgstr "" - -#: views_export/views_export.module:0 -msgid "views_export" -msgstr "" - -#: views_export/views_export.info:0 -msgid "Views exporter" -msgstr "" - -#: views_export/views_export.info:0 -msgid "Allows exporting multiple views at once." -msgstr "" - diff --git a/sites/all/modules/views/views.drush.inc b/sites/all/modules/views/views.drush.inc deleted file mode 100644 index 1cb2db1a0..000000000 --- a/sites/all/modules/views/views.drush.inc +++ /dev/null @@ -1,14 +0,0 @@ -<?php -// $Id: views.drush.inc,v 1.1.6.2 2011/01/05 00:09:12 dereine Exp $ - -/** - * @file - * Drush integration of views. - */ - -/** - * Adds a cache clear option for views. - */ -function views_drush_cache_clear(&$types) { - $types['views'] = 'views_invalidate_cache'; -} \ No newline at end of file diff --git a/sites/all/modules/views/views.info b/sites/all/modules/views/views.info index 90a983a5a..a34b6544e 100644 --- a/sites/all/modules/views/views.info +++ b/sites/all/modules/views/views.info @@ -22,10 +22,10 @@ files[] = handlers/views_handler_argument_string.inc files[] = handlers/views_handler_argument_group_by_numeric.inc files[] = handlers/views_handler_field.inc files[] = handlers/views_handler_field_counter.inc -files[] = handlers/views_handler_field_group_by_numeric.inc files[] = handlers/views_handler_field_boolean.inc files[] = handlers/views_handler_field_custom.inc files[] = handlers/views_handler_field_date.inc +files[] = handlers/views_handler_field_entity.inc files[] = handlers/views_handler_field_markup.inc files[] = handlers/views_handler_field_math.inc files[] = handlers/views_handler_field_numeric.inc @@ -34,20 +34,21 @@ files[] = handlers/views_handler_field_time_interval.inc files[] = handlers/views_handler_field_serialized.inc files[] = handlers/views_handler_field_url.inc files[] = handlers/views_handler_filter.inc -files[] = handlers/views_handler_filter_group_by_numeric.inc files[] = handlers/views_handler_filter_boolean_operator.inc files[] = handlers/views_handler_filter_boolean_operator_string.inc files[] = handlers/views_handler_filter_date.inc files[] = handlers/views_handler_filter_equality.inc +files[] = handlers/views_handler_filter_group_by_numeric.inc files[] = handlers/views_handler_filter_in_operator.inc files[] = handlers/views_handler_filter_many_to_one.inc files[] = handlers/views_handler_filter_numeric.inc files[] = handlers/views_handler_filter_string.inc files[] = handlers/views_handler_relationship.inc +files[] = handlers/views_handler_relationship_groupwise_max.inc files[] = handlers/views_handler_sort.inc -files[] = handlers/views_handler_sort_group_by_numeric.inc files[] = handlers/views_handler_sort_date.inc files[] = handlers/views_handler_sort_formula.inc +files[] = handlers/views_handler_sort_group_by_numeric.inc files[] = handlers/views_handler_sort_menu_hierarchy.inc files[] = handlers/views_handler_sort_random.inc ; Includes @@ -69,6 +70,7 @@ files[] = modules/comment/views_handler_argument_comment_user_uid.inc files[] = modules/comment/views_handler_field_comment.inc files[] = modules/comment/views_handler_field_comment_depth.inc files[] = modules/comment/views_handler_field_comment_link.inc +files[] = modules/comment/views_handler_field_comment_link_approve.inc files[] = modules/comment/views_handler_field_comment_link_delete.inc files[] = modules/comment/views_handler_field_comment_link_edit.inc files[] = modules/comment/views_handler_field_comment_link_reply.inc @@ -89,6 +91,7 @@ files[] = modules/comment/views_plugin_row_comment_rss.inc files[] = modules/comment/views_plugin_row_comment_view.inc files[] = modules/contact/views_handler_field_contact_link.inc files[] = modules/field/views_handler_field_field.inc +files[] = modules/field/views_handler_relationship_entity_reverse.inc files[] = modules/field/views_handler_filter_field_list.inc files[] = modules/filter/views_handler_field_filter_format_name.inc files[] = modules/locale/views_handler_argument_locale_group.inc @@ -104,6 +107,7 @@ files[] = modules/node/views_handler_argument_node_language.inc files[] = modules/node/views_handler_argument_node_nid.inc files[] = modules/node/views_handler_argument_node_type.inc files[] = modules/node/views_handler_argument_node_vid.inc +files[] = modules/node/views_handler_argument_node_uid_revision.inc files[] = modules/node/views_handler_field_history_user_timestamp.inc files[] = modules/node/views_handler_field_node.inc files[] = modules/node/views_handler_field_node_link.inc @@ -118,6 +122,7 @@ files[] = modules/node/views_handler_filter_history_user_timestamp.inc files[] = modules/node/views_handler_filter_node_access.inc files[] = modules/node/views_handler_filter_node_status.inc files[] = modules/node/views_handler_filter_node_type.inc +files[] = modules/node/views_handler_filter_node_uid_revision.inc files[] = modules/node/views_plugin_argument_default_node.inc files[] = modules/node/views_plugin_argument_validate_node.inc files[] = modules/node/views_plugin_row_node_rss.inc @@ -143,6 +148,7 @@ files[] = modules/taxonomy/views_handler_argument_term_node_tid.inc files[] = modules/taxonomy/views_handler_argument_term_node_tid_depth.inc files[] = modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc files[] = modules/taxonomy/views_handler_argument_vocabulary_vid.inc +files[] = modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc files[] = modules/taxonomy/views_handler_field_taxonomy.inc files[] = modules/taxonomy/views_handler_field_term_node_tid.inc files[] = modules/taxonomy/views_handler_field_term_link_edit.inc @@ -175,10 +181,12 @@ files[] = modules/user/views_handler_field_user_link_cancel.inc files[] = modules/user/views_handler_field_user_link_edit.inc files[] = modules/user/views_handler_field_user_mail.inc files[] = modules/user/views_handler_field_user_name.inc +files[] = modules/user/views_handler_field_user_permissions.inc files[] = modules/user/views_handler_field_user_picture.inc files[] = modules/user/views_handler_field_user_roles.inc files[] = modules/user/views_handler_filter_user_current.inc files[] = modules/user/views_handler_filter_user_name.inc +files[] = modules/user/views_handler_filter_user_permissions.inc files[] = modules/user/views_handler_filter_user_roles.inc files[] = modules/user/views_plugin_argument_default_current_user.inc files[] = modules/user/views_plugin_argument_default_user.inc @@ -191,6 +199,7 @@ files[] = plugins/views_plugin_access_role.inc files[] = plugins/views_plugin_argument_default.inc files[] = plugins/views_plugin_argument_default_php.inc files[] = plugins/views_plugin_argument_default_fixed.inc +files[] = plugins/views_plugin_argument_default_raw.inc files[] = plugins/views_plugin_argument_validate.inc files[] = plugins/views_plugin_argument_validate_numeric.inc files[] = plugins/views_plugin_argument_validate_php.inc @@ -201,6 +210,7 @@ files[] = plugins/views_plugin_display.inc files[] = plugins/views_plugin_display_attachment.inc files[] = plugins/views_plugin_display_block.inc files[] = plugins/views_plugin_display_default.inc +files[] = plugins/views_plugin_display_extender.inc files[] = plugins/views_plugin_display_feed.inc files[] = plugins/views_plugin_exposed_form_basic.inc files[] = plugins/views_plugin_exposed_form.inc @@ -250,6 +260,8 @@ files[] = tests/handlers/views_handler_sort_date.test files[] = tests/handlers/views_handler_sort.test files[] = tests/test_plugins/views_test_plugin_access_test_dynamic.inc files[] = tests/test_plugins/views_test_plugin_access_test_static.inc +files[] = tests/styles/views_plugin_style_jump_menu.test +files[] = tests/styles/views_plugin_style.test files[] = tests/views_access.test files[] = tests/views_analyze.test files[] = tests/views_basic.test @@ -266,15 +278,18 @@ files[] = tests/views_translatable.test files[] = tests/views_query.test files[] = tests/views_upgrade.test files[] = tests/views_test.views_default.inc +files[] = tests/comment/views_handler_argument_comment_user_uid.test +files[] = tests/comment/views_handler_filter_comment_user_uid.test files[] = tests/user/views_user_argument_default.test files[] = tests/user/views_user_argument_validate.test +files[] = tests/user/views_user.test files[] = tests/views_cache.test files[] = tests/views_view.test files[] = tests/views_ui.test -; Information added by drupal.org packaging script on 2011-03-28 -version = "7.x-3.0-beta3" +; Information added by drupal.org packaging script on 2011-12-18 +version = "7.x-3.0" core = "7.x" project = "views" -datestamp = "1301301970" +datestamp = "1324170450" diff --git a/sites/all/modules/views/views.install b/sites/all/modules/views/views.install index a999c7309..e590159e5 100644 --- a/sites/all/modules/views/views.install +++ b/sites/all/modules/views/views.install @@ -8,7 +8,7 @@ * Implements hook_install(). */ function views_install() { - if (db_driver() == 'pgsql') { + if (Database::getConnection()->databaseType() == 'pgsql') { db_query('CREATE OR REPLACE FUNCTION first(anyelement, anyelement) RETURNS anyelement AS \'SELECT COALESCE($1, $2);\' LANGUAGE \'sql\';'); db_query("DROP AGGREGATE IF EXISTS first(anyelement)"); db_query("CREATE AGGREGATE first(sfunc = first, basetype = anyelement, stype = anyelement);"); @@ -111,6 +111,8 @@ function views_schema_6000() { 'save callback' => 'views_save_view', 'delete callback' => 'views_delete_view', 'export callback' => 'views_export_view', + 'cache defaults' => TRUE, + 'default cache bin' => 'cache_views', ), 'fields' => array( 'vid' => array( @@ -259,15 +261,14 @@ function views_schema_6000() { * if you've been running a beta version or something. */ function views_update_6000() { - $ret = array(); if (db_table_exists('views_view')) { - return $ret; + return; } // This has the beneficial effect of wiping out any Views 1 cache at the // same time; not wiping that cache could easily cause problems with Views 2. if (db_table_exists('cache_views')) { - db_drop_table($ret, 'cache_views'); + db_drop_table('cache_views'); } // This is mostly the same as drupal_install_schema, but it forces @@ -277,24 +278,20 @@ function views_update_6000() { _drupal_initialize_schema('views', $schema); foreach ($schema as $name => $table) { - db_create_table($ret, $name, $table); + db_create_table($name, $table); } - return $ret; } /** * Remove '$' symbol in special blocks, as it is invalid for theming. */ function views_update_6001() { - $ret = array(); $result = db_query("SELECT * FROM {blocks} WHERE module = 'views' AND delta LIKE '\$exp%'"); foreach ($result as $block) { $new = strtr($block->delta, '$', '-'); - $ret[] = update_sql("UPDATE {blocks} SET delta = '" . db_escape_string($new) . "' WHERE module = 'views' AND delta = '" . db_escape_string($block->delta) . "'"); + update_sql("UPDATE {blocks} SET delta = '" . db_escape_string($new) . "' WHERE module = 'views' AND delta = '" . db_escape_string($block->delta) . "'"); } - $ret[] = update_sql("UPDATE {blocks} SET delta = CONCAT(delta, '-block_1') WHERE module = 'views'"); - - return $ret; + update_sql("UPDATE {blocks} SET delta = CONCAT(delta, '-block_1') WHERE module = 'views'"); } // NOTE: Update 6002 removed because it did not always work. @@ -310,9 +307,7 @@ function views_schema_6003() { return $schema; } function views_update_6003() { - $ret = array(); - db_add_unique_key($ret, 'views_view', 'name', array('name')); - return $ret; + db_add_unique_key('views_view', 'name', array('name')); } /** @@ -326,8 +321,6 @@ function views_schema_6004() { return $schema; } function views_update_6004() { - $ret = array(); - $new_field = array( 'type' => 'text', 'size' => 'big', @@ -337,10 +330,8 @@ function views_update_6004() { // Drop and re-add this field because there is a bug in // db_change_field that causes this to fail when trying to cast the data. - db_drop_field($ret, 'views_object_cache', 'data'); - db_add_field($ret, 'views_object_cache', 'data', $new_field); - - return $ret; + db_drop_field('views_object_cache', 'data'); + db_add_field('views_object_cache', 'data', $new_field); } /** @@ -352,8 +343,6 @@ function views_schema_6005() { return $schema; } function views_update_6005() { - $ret = array(); - $new_field = array( 'type' => 'varchar', 'length' => '64', @@ -361,8 +350,7 @@ function views_update_6005() { 'not null' => TRUE, 'description' => 'What table this view is based on, such as node, user, comment, or term.', ); - db_change_field($ret, 'views_view', 'base_table', 'base_table', $new_field); - return $ret; + db_change_field('views_view', 'base_table', 'base_table', $new_field); } /** @@ -376,15 +364,11 @@ function views_schema_6006() { return $schema; } function views_update_6006() { - $ret = array(); - $table = drupal_get_schema_unprocessed('system', 'cache'); $table['description'] = 'Cache table for views to store pre-rendered queries, results, and display output.'; $table['fields']['serialized']['default'] = 1; - db_create_table($ret, 'cache_views_data', $table); - - return $ret; + db_create_table('cache_views_data', $table); } /** @@ -392,13 +376,11 @@ function views_update_6006() { * one result to be returned for each item. */ function views_update_6007() { - $ret = array(); - if (db_driver() == 'pgsql') { - $ret[] = update_sql('CREATE OR REPLACE FUNCTION first(anyelement, anyelement) RETURNS anyelement AS \'SELECT COALESCE($1, $2);\' LANGUAGE \'sql\';'); - $ret[] = update_sql("DROP AGGREGATE IF EXISTS first(anyelement)"); - $ret[] = update_sql("CREATE AGGREGATE first(sfunc = first, basetype = anyelement, stype = anyelement);"); + if (Database::getConnection()->databaseType() == 'pgsql') { + db_query('CREATE OR REPLACE FUNCTION first(anyelement, anyelement) RETURNS anyelement AS \'SELECT COALESCE($1, $2);\' LANGUAGE \'sql\';'); + db_query("DROP AGGREGATE IF EXISTS first(anyelement)"); + db_query("CREATE AGGREGATE first(sfunc = first, basetype = anyelement, stype = anyelement);"); } - return $ret; } /** @@ -414,11 +396,7 @@ function views_schema_6008() { * Add the primary key to the views_display table. */ function views_update_6008() { - $ret = array(); - - db_add_primary_key($ret, 'views_display', array('vid', 'id')); - - return $ret; + db_add_primary_key('views_display', array('vid', 'id')); } /** @@ -438,29 +416,29 @@ function views_schema_6009() { } function views_update_6009() { - $ret = array(); - $schema = views_schema_6009(); - if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('ALTER TABLE {views_display} RENAME "display_options" TO "display_options_old"'); - db_add_field($ret, 'views_display', 'display_options', $schema['views_display']['fields']['display_options']); + if (Database::getConnection()->databaseType() == 'pgsql') { + db_query('ALTER TABLE {views_display} RENAME "display_options" TO "display_options_old"'); + db_add_field('views_display', 'display_options', $schema['views_display']['fields']['display_options']); $sql = "SELECT vid, id, display_options_old FROM {views_display}"; $result = db_query($sql); - while ($row = db_fetch_array($result)) { + foreach ($result as $row) { $row['display_options_old'] = db_decode_blob($row['display_options_old']); - $sql = "UPDATE {views_display} SET display_options = '%s' WHERE vid = %d AND id = '%s'"; - db_query($sql, $row['display_options_old'], $row['vid'], $row['id']); + $sql = "UPDATE {views_display} SET display_options = :display_optons WHERE vid = :vid AND id = :id"; + db_query($sql, array( + ':display_optons' => $row['display_options_old'], + ':vid' => $row['vid'], + ':id' => $row['id'], + )); } - db_drop_field($ret, 'views_display', 'display_options_old'); + db_drop_field('views_display', 'display_options_old'); } else { - db_change_field($ret, 'views_display', 'display_options', 'display_options', $schema['views_display']['fields']['display_options']); + db_change_field('views_display', 'display_options', 'display_options', $schema['views_display']['fields']['display_options']); } - - return $ret; } /** @@ -477,13 +455,8 @@ function views_schema_6010() { * Remove the view_php and is_cacheable field */ function views_update_6010() { - $ret = array(); - - db_drop_field($ret, 'views_view', 'view_php'); - db_drop_field($ret, 'views_view', 'is_cacheable'); - - - return $ret; + db_drop_field('views_view', 'view_php'); + db_drop_field('views_view', 'is_cacheable'); } /** @@ -499,15 +472,11 @@ function views_schema_6011() { * Remove views_object_cache table and move the data to ctools_object_cache. */ function views_update_6011() { - $ret = array(); - - $caches = db_query("SELECT * FROM {views_object_cache}")->fetch(); + $caches = db_query("SELECT * FROM {views_object_cache}"); foreach ($caches as $item) { drupal_write_record('ctools_object_cache', $item); } - db_drop_table($ret, 'views_object_cache'); - - return $ret; + db_drop_table('views_object_cache'); } /** @@ -516,15 +485,11 @@ function views_update_6011() { * @see http://drupal.org/node/910864 */ function views_update_6012() { - $ret = array(); - // There is only one simple query to run. $update = db_update('blocks') ->condition('module', 'views') ->condition('delta', db_like('-exp-') . '%', 'LIKE') ->fields(array('cache' => DRUPAL_NO_CACHE)); - - return $ret; } @@ -543,18 +508,18 @@ function views_schema_6013() { } function views_update_6013() { - $ret = array(); - - $new_field = array( - 'type' => 'varchar', - 'length' => '255', - 'default' => '', - 'description' => 'A human readable name used to be displayed in the admin interface', - ); + // Check because D6 installs may already have added this. + if (!db_field_exists('views_view', 'human_name')) { - db_add_field('views_view', 'human_name', $new_field); + $new_field = array( + 'type' => 'varchar', + 'length' => '255', + 'default' => '', + 'description' => 'A human readable name used to be displayed in the admin interface', + ); - return $ret; + db_add_field('views_view', 'human_name', $new_field); + } } function views_schema_6014() { @@ -571,16 +536,15 @@ function views_schema_6014() { * Add a drupal core version field. */ function views_update_6014() { - $ret = array(); - $new_field = array( - 'type' => 'int', - 'default' => 0, - 'description' => 'Stores the drupal core version of the view.', - ); - - db_add_field('views_view', 'core', $new_field); - - return $ret; + // Check because D6 installs may already have added this. + if (!db_field_exists('views_view', 'core')) { + $new_field = array( + 'type' => 'int', + 'default' => 0, + 'description' => 'Stores the drupal core version of the view.', + ); + db_add_field('views_view', 'core', $new_field); + } } /** @@ -610,3 +574,38 @@ function views_update_7000() { // Rename the unused views_no_hover_links variable. variable_del('views_no_hover_links'); } + +/** + * Fix missing items from Views administrative breadcrumb + */ +function views_update_7001() { + $depth = db_select('menu_links') + ->fields('menu_links', array('depth')) + ->condition('link_path', 'admin/structure/views/view/%') + ->execute() + ->fetchField(); + + if ($depth == 3) { + db_delete('menu_links') + ->condition('link_path', 'admin/structure/views/%', 'LIKE') + ->execute(); + cache_clear_all(NULL, 'cache_menu'); + menu_rebuild(); + } +} + +function views_schema_7300() { + return views_schema_6013(); +} +/** + * Make sure the human_name field is added to the views_view table. + * + * If you updated from 6.x-2.x-dev to 7.x-3.x you had already schema + * version 6014, so the update 6013 isn't runned, and never was. + * As a result the human_name field is missing in the database. + * + * Add the human_name field if it doesn't exists before. + */ +function views_update_7300() { + views_update_6013(); +} diff --git a/sites/all/modules/views/views.module b/sites/all/modules/views/views.module index 5b283f3fe..c9ef5cc5d 100644 --- a/sites/all/modules/views/views.module +++ b/sites/all/modules/views/views.module @@ -12,7 +12,38 @@ * Advertise the current views api version */ function views_api_version() { - return '3.0-alpha1'; + return '3.0'; +} + +/** + * Implements hook_forms(). + * + * To provide distinct form IDs for Views forms, the View name and + * specific display name are appended to the base ID, + * views_form_views_form. When such a form is built or submitted, this + * function will return the proper callback function to use for the given form. + */ +function views_forms($form_id, $args) { + if (strpos($form_id, 'views_form_') === 0) { + return array( + $form_id => array( + 'callback' => 'views_form', + ), + ); + } +} + +/** + * Returns a form ID for a Views form using the name and display of the View. + */ +function views_form_id($view) { + $parts = array( + 'views_form', + $view->name, + $view->current_display, + ); + + return implode('_', $parts); } /** @@ -41,13 +72,18 @@ function views_theme($existing, $type, $theme, $path) { 'pattern' => 'views_mini_pager__', ); - $arguments = array( + $variables = array( // For displays, we pass in a dummy array as the first parameter, since // $view is an object but the core contextual_preprocess() function only // attaches contextual links when the primary theme argument is an array. 'display' => array('view_array' => array(), 'view' => NULL), 'style' => array('view' => NULL, 'options' => NULL, 'rows' => NULL, 'title' => NULL), 'row' => array('view' => NULL, 'options' => NULL, 'row' => NULL, 'field_alias' => NULL), + 'exposed_form' => array('view' => NULL, 'options' => NULL), + 'pager' => array( + 'view' => NULL, 'options' => NULL, + 'tags' => array(), 'quantity' => 10, 'element' => 0, 'parameters' => array() + ), ); // Default view themes @@ -61,12 +97,12 @@ function views_theme($existing, $type, $theme, $path) { // Register theme functions for all style plugins foreach ($plugins as $type => $info) { foreach ($info as $plugin => $def) { - if (isset($def['theme'])) { + if (isset($def['theme']) && (!isset($def['register theme']) || !empty($def['register theme']))) { $hooks[$def['theme']] = array( 'pattern' => $def['theme'] . '__', 'file' => $def['theme file'], 'path' => $def['theme path'], - 'variables' => $arguments[$type], + 'variables' => $variables[$type], ); $include = DRUPAL_ROOT . '/' . $def['theme path'] . '/' . $def['theme file']; @@ -89,7 +125,7 @@ function views_theme($existing, $type, $theme, $path) { 'pattern' => $theme . '__', 'file' => $def['theme file'], 'path' => $def['theme path'], - 'variables' => $arguments[$theme_type], + 'variables' => $variables[$theme_type], ); if (!function_exists('theme_' . $theme)) { @@ -100,6 +136,10 @@ function views_theme($existing, $type, $theme, $path) { } } + $hooks['views_form_views_form'] = $base + array( + 'render element' => 'form', + ); + $hooks['views_exposed_form'] = $base + array( 'template' => 'views-exposed-form', 'pattern' => 'views_exposed_form__', @@ -109,7 +149,7 @@ function views_theme($existing, $type, $theme, $path) { $hooks['views_more'] = $base + array( 'template' => 'views-more', 'pattern' => 'views_more__', - 'variables' => array('more_url' => NULL, 'link_text' => 'more'), + 'variables' => array('more_url' => NULL, 'link_text' => 'more', 'view' => NULL), ); // Add theme suggestions which are part of modules. @@ -132,6 +172,7 @@ function views_theme($existing, $type, $theme, $path) { * @see drupal_find_theme_templates */ function _views_find_module_templates($cache, $path) { + $templates = array(); $regex = '/' . '\.tpl\.php' . '$' . '/'; // Because drupal_system_listing works the way it does, we check for real @@ -177,8 +218,9 @@ function _views_find_module_templates($cache, $path) { // Put the underscores back in for the hook name and register this pattern. $templates[strtr($file, '-', '_')] = array( 'template' => $file, - 'path' => dirname($files[$match]->filename), - 'variables' => $info['variables'], + 'path' => dirname($files[$match]->uri), + 'variables' => isset($info['variables']) ? $info['variables'] : NULL, + 'render element' => isset($info['render element']) ? $info['render element'] : NULL, 'base hook' => $hook, 'includes' => isset($info['includes']) ? $info['includes'] : NULL, ); @@ -199,14 +241,25 @@ function _views_find_module_templates($cache, $path) { * node portion of the theme registry. */ function views_preprocess_node(&$vars) { - // The 'view' attribute of the node is added in template_preprocess_views_view_row_node() + // The 'view' attribute of the node is added in views_preprocess_node() if (!empty($vars['node']->view) && !empty($vars['node']->view->name)) { - $vars['view'] = &$vars['node']->view; + $vars['view'] = $vars['node']->view; $vars['theme_hook_suggestions'][] = 'node__view__' . $vars['node']->view->name; if (!empty($vars['node']->view->current_display)) { $vars['theme_hook_suggestions'][] = 'node__view__' . $vars['node']->view->name . '__' . $vars['node']->view->current_display; + + // If a node is being rendered in a view, and the view does not have a path, + // prevent drupal from accidentally setting the $page variable: + if ($vars['page'] && $vars['view_mode'] == 'full' && !$vars['view']->display_handler->has_path()) { + $vars['page'] = FALSE; + } } } + + // Allow to alter comments and links based on the settings in the row plugin. + if (!empty($vars['view']->style_plugin->row_plugin) && get_class($vars['view']->style_plugin->row_plugin) == 'views_plugin_row_node_view') { + node_row_node_view_preprocess_node($vars); + } } /** @@ -251,6 +304,7 @@ function views_menu() { $items['views/ajax'] = array( 'title' => 'Views', 'page callback' => 'views_ajax', + 'theme callback' => 'ajax_base_page_theme', 'delivery callback' => 'ajax_deliver', 'access callback' => TRUE, 'description' => 'Ajax callback for view loading.', @@ -261,6 +315,7 @@ function views_menu() { // the generic ajax callback. $items['admin/views/ajax/autocomplete/user'] = array( 'page callback' => 'views_ajax_autocomplete_user', + 'theme callback' => 'ajax_base_page_theme', 'access callback' => 'user_access', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, @@ -270,6 +325,7 @@ function views_menu() { // does not support a vid a argument anymore $items['admin/views/ajax/autocomplete/taxonomy'] = array( 'page callback' => 'views_ajax_autocomplete_taxonomy', + 'theme callback' => 'ajax_base_page_theme', 'access callback' => 'user_access', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, @@ -419,6 +475,11 @@ function views_page_alter(&$page) { // next to the page title. $view = views_get_page_view(); if (!empty($view)) { + // If a module is still putting in the display like we used to, catch that. + if (is_subclass_of($view, 'views_plugin_display')) { + $view = $view->view; + } + views_add_contextual_links($page, 'page', $view, $view->current_display); } } @@ -557,7 +618,7 @@ function views_block_view($delta) { $output = $view->display_handler->view_special_blocks($type); // Before returning the block output, convert it to a renderable // array with contextual links. - views_add_block_contextual_links($output, $view, $display_id); + views_add_block_contextual_links($output, $view, $display_id, 'special_block_' . $type); $view->destroy(); return $output; } @@ -566,7 +627,12 @@ function views_block_view($delta) { } } - list($name, $display_id) = explode('-', $delta); + // If the delta doesn't contain valid data return nothing. + $explode = explode('-', $delta); + if (count($explode) != 2) { + return; + } + list($name, $display_id) = $explode; // Load the view if ($view = views_get_view($name)) { if ($view->access($display_id)) { @@ -595,8 +661,11 @@ function views_block_view($delta) { * @param $display_id * The ID of the display within the view that was used to generate the block * content. + * @param $block_type + * The type of the block. If it's block it's a regular views display, + * but 'special_block_-exp' exist as well. */ -function views_add_block_contextual_links(&$block, $view, $display_id) { +function views_add_block_contextual_links(&$block, $view, $display_id, $block_type = 'block') { // Do not add contextual links to an empty block. if (!empty($block['content'])) { // Contextual links only work on blocks whose content is a renderable @@ -606,7 +675,7 @@ function views_add_block_contextual_links(&$block, $view, $display_id) { $block['content'] = array('#markup' => $block['content']); } // Add the contextual links. - views_add_contextual_links($block['content'], 'block', $view, $display_id); + views_add_contextual_links($block['content'], $block_type, $view, $display_id); } } @@ -682,10 +751,12 @@ function views_add_contextual_links(&$render_element, $location, $view, $display // contextual links that are intended to be displayed in the requested // location. $plugin = views_fetch_plugin_data('display', $view->display[$display_id]->display_plugin); - // If contextual links locations are empty provide a sane default. - if (empty($plugin['contextual links locations'])) { - $plugin['contextual links locations'] = array('view'); - } + // If contextual links locations are not set, provide a sane default. (To + // avoid displaying any contextual links at all, a display plugin can still + // set 'contextual links locations' to, e.g., an empty array.) + $plugin += array('contextual links locations' => array('view')); + // On exposed_forms blocks contextual links should always be visible. + $plugin['contextual links locations'][] = 'special_block_-exp'; $has_links = !empty($plugin['contextual links']) && !empty($plugin['contextual links locations']); if ($has_links && in_array($location, $plugin['contextual links locations'])) { foreach ($plugin['contextual links'] as $module => $link) { @@ -720,6 +791,34 @@ function views_add_contextual_links(&$render_element, $location, $view, $display } } +/** + * Returns an array of language names. + * + * This is a one to one copy of locale_language_list because we can't rely on enabled locale module. + * + * @param $field + * 'name' => names in current language, localized + * 'native' => native names + * @param $all + * Boolean to return all languages or only enabled ones + * + * @see locale_language_list + */ +function views_language_list($field = 'name', $all = FALSE) { + if ($all) { + $languages = language_list(); + } + else { + $languages = language_list('enabled'); + $languages = $languages[1]; + } + $list = array(); + foreach ($languages as $language) { + $list[$language->language] = ($field == 'name') ? t($language->name) : $language->$field; + } + return $list; +} + /** * Implements hook_flush_caches(). */ @@ -849,6 +948,9 @@ function &views_set_page_view($view = NULL) { * Find out what, if any, page view is currently in use. Please note that * this returns a reference, so be careful! You can unintentionally modify the * $view object. + * + * @return view + * A fully formed, empty $view object. */ function &views_get_page_view() { return views_set_page_view(); @@ -883,7 +985,7 @@ function &views_get_current_view() { * Include views .inc files as necessary. */ function views_include($file) { - module_load_include('inc', 'views', "includes/$file"); + ctools_include($file, 'views'); } /** @@ -981,7 +1083,7 @@ function views_include_handlers($reset = FALSE) { * aggregation when the handler is redirected to the aggregation * handler. * - * @return + * @return views_handler * An instance of a handler object. May be views_handler_broken. */ function views_get_handler($table, $field, $key, $override = NULL) { @@ -1045,7 +1147,7 @@ function views_get_handler($table, $field, $key, $override = NULL) { } // DEBUG -- identify missing handlers - vpr("Missing handler: $table $field $key"); + vpr("Missing handler: @table @field @key", array('@table' => $table, '@field' => $field, '@key' => $key)); $broken = array( 'title' => t('Broken handler @table.@field', array('@table' => $table, '@field' => $field)), 'handler' => 'views_handler_' . $key . '_broken', @@ -1113,6 +1215,10 @@ function views_fetch_plugin_names($type, $key = NULL, $base = array()) { /** * Get a handler for a plugin + * + * @return views_plugin + * + * The created plugin object. */ function views_get_plugin($type, $plugin, $reset = FALSE) { views_include('handlers'); @@ -1122,6 +1228,26 @@ function views_get_plugin($type, $plugin, $reset = FALSE) { } } +/** + * Load the current enabled localization plugin. + * + * @return The name of the localization plugin. + */ +function views_get_localization_plugin() { + $plugin = variable_get('views_localization_plugin', ''); + // Provide sane default values for the localization plugin. + if (empty($plugin)) { + if (module_exists('locale')) { + $plugin = 'core'; + } + else { + $plugin = 'none'; + } + } + + return $plugin; +} + // ----------------------------------------------------------------------- // Views database functions @@ -1151,7 +1277,7 @@ function views_get_all_templates() { /** * Create an empty view to work with. * - * @return + * @return view * A fully formed, empty $view object. This object must be populated before * it can be successfully saved. */ @@ -1242,6 +1368,79 @@ function views_get_disabled_views() { return array_filter($views, 'views_view_is_disabled'); } +/** + * Return an array of view as options array, that can be used by select, + * checkboxes and radios as #options. + * + * @param bool $views_only + * If TRUE, only return views, not displays. + * @param string $filter + * Filters the views on status. Can either be 'all' (default), 'enabled' or + * 'disabled' + * @param mixed $exclude_view + * view or current display to exclude + * either a + * - views object (containing $exclude_view->name and $exclude_view->current_display) + * - views name as string: e.g. my_view + * - views name and display id (separated by ':'): e.g. my_view:default + * @param bool $optgroup + * If TRUE, returns an array with optgroups for each view (will be ignored for + * $views_only = TRUE). Can be used by select + * + * @return array + * an associative array for use in select. + * - key: view name and display id separated by ':', or the view name only + */ +function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclude_view = NULL, $optgroup = FALSE) { + + // Filter the big views array. + switch ($filter) { + case 'all': + case 'disabled': + case 'enabled': + $func = "views_get_{$filter}_views"; + $views = $func(); + break; + default: + return array(); + } + + // Prepare exclude view strings for comparison. + if (empty($exclude_view)) { + $exclude_view_name = ''; + $exclude_view_display = ''; + } + elseif (is_object($exclude_view)) { + $exclude_view_name = $exclude_view->name; + $exclude_view_display = $exclude_view->current_display; + } + else { + list($exclude_view_name, $exclude_view_display) = explode(':', $exclude_view); + } + + $options = array(); + foreach ($views as $view) { + // Return only views. + if ($views_only && $view->name != $exclude_view_name) { + $options[$view->name] = $view->name; + } + // Return views with display ids. + else { + foreach ($view->display as $display_id => $display) { + if (!($view->name == $exclude_view_name && $display_id == $exclude_view_display)) { + if ($optgroup) { + $options[$view->name][$view->name . ':' . $display->id] = t('@view : @display', array('@view' => $view->name, '@display' => $display->id)); + } + else { + $options[$view->name . ':' . $display->id] = t('View: @view - Display: @display', array('@view' => $view->name, '@display' => $display->id)); + } + } + } + } + } + return $options; +} + /** * Returns TRUE if a view is enabled, FALSE otherwise. */ @@ -1267,7 +1466,7 @@ function views_view_is_disabled($view) { * The name of the view. * @param $reset * If TRUE, reset this entry in the load cache. - * @return $view + * @return view * A reference to the $view object. Use $reset if you're sure you want * a fresh one. */ @@ -1282,16 +1481,26 @@ function views_get_view($name, $reset = FALSE) { ctools_include('export'); $view = ctools_export_crud_load('views_view', $name); if ($view) { - // When views are converted automatically the base_table should be renamed - // to have a working query. - $data = views_fetch_data($view->base_table, FALSE); - if (isset($data['moved to'])) { - $view->base_table = $data['moved to']; - } + $view->update(); return $view->clone_view(); } } +/** + * Find the real location of a table. + * + * If a table has moved, find the new name of the table so that we can + * change its name directly in options where necessary. + */ +function views_move_table($table) { + $data = views_fetch_data($table, FALSE); + if (isset($data['moved to'])) { + $table = $data['moved to']; + } + + return $table; +} + /** * Export callback to load the view subrecords, which are the displays. */ @@ -1358,33 +1567,53 @@ function views_export_view(&$view, $indent = '') { // Views debug helper functions /** - * Provide debug output for Views. This relies on devel.module + * Provide debug output for Views. + * + * This relies on devel.module + * or on the debug() function if you use a simpletest. + * + * @param $message + * The message/variable which should be debugged. + * This either could be + * * an array/object which is converted to pretty output + * * a translation source string which is used together with the parameter placeholders. + * + * @param $placeholder + * The placeholders which are used for the translation source string. */ -function views_debug($message) { +function views_debug($message, $placeholders = array()) { + if (!is_string($message)) { + $output = '<pre>' . var_export($message, TRUE) . '</pre>'; + } if (module_exists('devel') && variable_get('views_devel_output', FALSE) && user_access('access devel information')) { - if (is_string($message)) { + $devel_region = variable_get('views_devel_region', 'footer'); + if ($devel_region == 'watchdog') { $output = $message; + watchdog('views_logging', $output, $placeholders); } - else { - $output = var_export($message, TRUE); + else if ($devel_region == 'message') { + $output = empty($output) ? t($message, $placeholders) : $output; + dpm($output); } - if (variable_get('views_devel_region', 'footer') != 'watchdog') { - drupal_add_region_content(variable_get('views_devel_region', 'footer'), '<pre>' . $output . '</pre>'); + else if ($devel_region == 'drupal_debug') { + $output = empty($output) ? t($message, $placeholders) : $output; + dd($output); } else { - watchdog('views_logging', '<pre>' . $output . '</pre>'); + drupal_add_region_content($devel_region, $output); } } elseif (isset($GLOBALS['drupal_test_info'])) { - debug($message); + $output = empty($output) ? t($message, $placeholders) : $output; + debug($output); } } /** * Shortcut to views_debug() */ -function vpr($message) { - views_debug($message); +function vpr($message, $placeholders = array()) { + views_debug($message, $placeholders); } /** @@ -1392,7 +1621,7 @@ function vpr($message) { */ function vsm($message) { if (module_exists('devel')) { - dsm($message); + dpm($message); } } @@ -1414,6 +1643,202 @@ function vpr_trace() { dpr(views_trace()); } +// ------------------------------------------------------------------ +// Views form (View with form elements) + +/** + * Returns TRUE if the passed-in view contains handlers with views form + * implementations, FALSE otherwise. + */ +function views_view_has_form_elements($view) { + foreach ($view->field as $field) { + if (property_exists($field, 'views_form_callback') || method_exists($field, 'views_form')) { + return TRUE; + } + } + $area_handlers = array_merge(array_values($view->header), array_values($view->footer)); + $empty = empty($view->result); + foreach ($area_handlers as $area) { + if (method_exists($area, 'views_form') && !$area->views_form_empty($empty)) { + return TRUE; + } + } + return FALSE; +} + +/** + * This is the entry function. Just gets the form for the current step. + * The form is always assumed to be multistep, even if it has only one + * step (the default 'views_form_views_form' step). That way it is actually + * possible for modules to have a multistep form if they need to. + */ +function views_form($form, &$form_state, $view, $output) { + $form_state['step'] = isset($form_state['step']) ? $form_state['step'] : 'views_form_views_form'; + + $form = array(); + $query = drupal_get_query_parameters($_GET, array('q')); + $form['#action'] = url($view->get_url(), array('query' => $query)); + $form['#validate'] = array('views_form_validate'); + $form['#submit'] = array('views_form_submit'); + // Tell the preprocessor whether it should hide the header, footer, pager... + $form['show_view_elements'] = array( + '#type' => 'value', + '#value' => ($form_state['step'] == 'views_form_views_form') ? TRUE : FALSE, + ); + + $form = $form_state['step']($form, $form_state, $view, $output); + return $form; +} + +/** + * The basic form validate handler. + * Fires the hook_views_form_validate() function. + */ +function views_form_validate($form, &$form_state) { + // Fire the hook. Doesn't use module_invoke_all() because $form_state needs + // to be passed by reference. + foreach (module_implements('views_form_validate') as $module) { + $function = $module . '_views_form_validate'; + $function($form, $form_state); + } +} + +/** + * The basic form submit handler. + * Fires the hook_views_form_submit() function. + */ +function views_form_submit($form, &$form_state) { + // Fire the hook. Doesn't use module_invoke_all() because $form_state needs + // to be passed by reference. + foreach (module_implements('views_form_submit') as $module) { + $function = $module . '_views_form_submit'; + $function($form, $form_state); + } +} + +/** + * Callback for the main step of a Views form. + * Invoked by views_form(). + */ +function views_form_views_form($form, &$form_state, $view, $output) { + $form['#prefix'] = '<div class="views-form">'; + $form['#suffix'] = '</div>'; + $form['#theme'] = 'views_form_views_form'; + $form['#validate'][] = 'views_form_views_form_validate'; + $form['#submit'][] = 'views_form_views_form_submit'; + + // Add the output markup to the form array so that it's included when the form + // array is passed to the theme function. + $form['output'] = array( + '#type' => 'markup', + '#markup' => $output, + // This way any additional form elements will go before the view + // (below the exposed widgets). + '#weight' => 50, + ); + + $substitutions = array(); + foreach ($view->field as $field_name => $field) { + // If the field provides a views form, allow it to modify the $form array. + $has_form = FALSE; + if (property_exists($field, 'views_form_callback')) { + $callback = $field->views_form_callback; + $callback($view, $field, $form, $form_state); + $has_form = TRUE; + } + elseif (method_exists($field, 'views_form')) { + $field->views_form($form, $form_state); + $has_form = TRUE; + } + + // Build the substitutions array for use in the theme function. + if ($has_form) { + foreach ($view->result as $row_id => $row) { + $substitutions[] = array( + 'placeholder' => '<!--form-item-' . $field_name . '--' . $row_id . '-->', + 'field_name' => $field_name, + 'row_id' => $row_id, + ); + } + } + } + + // Give the area handlers a chance to extend the form. + $area_handlers = array_merge(array_values($view->header), array_values($view->footer)); + $empty = empty($view->result); + foreach ($area_handlers as $area) { + if (method_exists($area, 'views_form') && !$area->views_form_empty($empty)) { + $area->views_form($form, $form_state); + } + } + + $form['#substitutions'] = array( + '#type' => 'value', + '#value' => $substitutions, + ); + $form['actions'] = array( + '#type' => 'container', + '#attributes' => array('class' => array('form-actions')), + '#weight' => 100, + ); + $form['actions']['submit'] = array( + '#type' => 'submit', + '#value' => t('Save'), + ); + + return $form; +} + +/** + * Validate handler for the first step of the views form. + * Calls any existing views_form_validate functions located + * on the views fields. + */ +function views_form_views_form_validate($form, &$form_state) { + $view = $form_state['build_info']['args'][0]; + + // Call the validation method on every field handler that has it. + foreach ($view->field as $field_name => $field) { + if (method_exists($field, 'views_form_validate')) { + $field->views_form_validate($form, $form_state); + } + } + + // Call the validate method on every area handler that has it. + foreach (array('header', 'footer') as $area) { + foreach ($view->{$area} as $area_name => $area_handler) { + if (method_exists($area_handler, 'views_form_validate')) { + $area_handler->views_form_validate($form, $form_state); + } + } + } +} + +/** + * Submit handler for the first step of the views form. + * Calls any existing views_form_submit functions located + * on the views fields. + */ +function views_form_views_form_submit($form, &$form_state) { + $view = $form_state['build_info']['args'][0]; + + // Call the submit method on every field handler that has it. + foreach ($view->field as $field_name => $field) { + if (method_exists($field, 'views_form_submit')) { + $field->views_form_submit($form, $form_state); + } + } + + // Call the submit method on every area handler that has it. + foreach (array('header', 'footer') as $area) { + foreach ($view->{$area} as $area_name => $area_handler) { + if (method_exists($area_handler, 'views_form_submit')) { + $area_handler->views_form_submit($form, $form_state); + } + } + } +} + // ------------------------------------------------------------------ // Exposed widgets form @@ -1534,7 +1959,7 @@ function views_exposed_form_submit(&$form, &$form_state) { $form_state['view']->exposed_raw_input = array(); - $exclude = array('q', 'submit', 'form_build_id', 'form_id', 'form_token', 'exposed_form_plugin', ''); + $exclude = array('q', 'submit', 'form_build_id', 'form_id', 'form_token', 'exposed_form_plugin', '', 'reset'); $exposed_form_plugin = $form_state['exposed_form_plugin']; $exposed_form_plugin->exposed_form_submit($form, $form_state, $exclude); @@ -1766,6 +2191,39 @@ function views_var_export($var, $prefix = '', $init = TRUE) { return $output; } +/** + * Prepare a string for use as a valid CSS identifier (element, class or ID name). + * This function is similar to a core version but with more sane filter values. + * + * http://www.w3.org/TR/CSS21/syndata.html#characters shows the syntax for valid + * CSS identifiers (including element names, classes, and IDs in selectors.) + * + * @param $identifier + * The identifier to clean. + * @param $filter + * An array of string replacements to use on the identifier. + * @return + * The cleaned identifier. + * + * @see drupal_clean_css_identifier + */ +function views_clean_css_identifier($identifier, $filter = array(' ' => '-', '/' => '-', '[' => '-', ']' => '')) { + // By default, we filter using Drupal's coding standards. + $identifier = strtr($identifier, $filter); + + // Valid characters in a CSS identifier are: + // - the hyphen (U+002D) + // - a-z (U+0030 - U+0039) + // - A-Z (U+0041 - U+005A) + // - the underscore (U+005F) + // - 0-9 (U+0061 - U+007A) + // - ISO 10646 characters U+00A1 and higher + // We strip out any character not in the above list. + $identifier = preg_replace('/[^\x{002D}\x{0030}-\x{0039}\x{0041}-\x{005A}\x{005F}\x{0061}-\x{007A}\x{00A1}-\x{FFFF}]/u', '', $identifier); + + return $identifier; +} + /** * Implement hook_views_exportables(). */ @@ -1854,7 +2312,7 @@ function views_trim_text($alter, $value) { $value = rtrim(preg_replace('/(?:<(?!.+>)|&(?!.+;)).*$/us', '', $value)); if (!empty($alter['ellipsis'])) { - $value .= '...'; + $value .= t('...'); } } if (!empty($alter['html'])) { @@ -1898,18 +2356,26 @@ if (!function_exists('comment_views_api')) { function comment_views_api() { return views_views_api(); } } -if (!function_exists('locale_views_api')) { - function locale_views_api() { return views_views_api(); } -} - if (!function_exists('field_views_api')) { function field_views_api() { return views_views_api(); } } +if (!function_exists('file_views_api')) { + function file_views_api() { return views_views_api(); } +} + if (!function_exists('filter_views_api')) { function filter_views_api() { return views_views_api(); } } +if (!function_exists('image_views_api')) { + function image_views_api() { return views_views_api(); } +} + +if (!function_exists('locale_views_api')) { + function locale_views_api() { return views_views_api(); } +} + if (!function_exists('node_views_api')) { function node_views_api() { return views_views_api(); } } diff --git a/sites/all/modules/views/views.tokens.inc b/sites/all/modules/views/views.tokens.inc new file mode 100644 index 000000000..cc45b5cba --- /dev/null +++ b/sites/all/modules/views/views.tokens.inc @@ -0,0 +1,94 @@ +<?php + +/** + * @file + * Token integration for the views module. + */ + +/** + * Implements hook_token_info(). + */ +function views_token_info() { + $info['types']['view'] = array( + 'name' => t('View'), + 'description' => t('Tokens related to views.'), + 'needs-data' => 'view', + ); + $info['tokens']['view']['name'] = array( + 'name' => t('Name'), + 'description' => t('The human-readable name of the view.'), + ); + $info['tokens']['view']['description'] = array( + 'name' => t('Description'), + 'description' => t('The description of the view.'), + ); + $info['tokens']['view']['machine-name'] = array( + 'name' => t('Machine name'), + 'description' => t('The machine-readable name of the view.'), + ); + $info['tokens']['view']['title'] = array( + 'name' => t('Title'), + 'description' => t('The title of current display of the view.'), + ); + $info['tokens']['view']['url'] = array( + 'name' => t('URL'), + 'description' => t('The URL of the view.'), + 'type' => 'url', + ); + + return $info; +} + +/** + * Implements hook_tokens(). + */ +function views_tokens($type, $tokens, array $data = array(), array $options = array()) { + $url_options = array('absolute' => TRUE); + if (isset($options['language'])) { + $url_options['language'] = $options['language']; + } + $sanitize = !empty($options['sanitize']); + $langcode = isset($options['language']) ? $options['language']->language : NULL; + + $replacements = array(); + + if ($type == 'view' && !empty($data['view'])) { + $view = $data['view']; + + foreach ($tokens as $name => $original) { + switch ($name) { + case 'name': + $replacements[$original] = $sanitize ? check_plain($view->human_name) : $view->human_name; + break; + + case 'description': + $replacements[$original] = $sanitize ? check_plain($view->description) : $view->description; + break; + + case 'machine-name': + $replacements[$original] = $view->name; + break; + + case 'title': + $title = $view->get_title(); + $replacements[$original] = $sanitize ? check_plain($title) : $title; + break; + + case 'url': + if ($path = $view->get_url()) { + $replacements[$original] = url($path, $url_options); + } + break; + } + } + + // [view:url:*] nested tokens. This only works if Token module is installed. + if ($url_tokens = token_find_with_prefix($tokens, 'url')) { + if ($path = $view->get_url()) { + $replacements += token_generate('url', $url_tokens, array('path' => $path), $options); + } + } + } + + return $replacements; +} diff --git a/sites/all/modules/views/views2.doxy b/sites/all/modules/views/views2.doxy deleted file mode 100644 index 7d95c1a0e..000000000 --- a/sites/all/modules/views/views2.doxy +++ /dev/null @@ -1,1252 +0,0 @@ -# Doxyfile 1.4.7 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = Views - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 2.0 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, -# Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = YES - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = YES - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = YES - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 2 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command <command> <input-file>, where <command> is the value of -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = YES - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = NO - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = *.module *.inc *.php - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = YES - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = NO - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that a graph may be further truncated if the graph's -# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH -# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), -# the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/sites/all/modules/views/views_export/views_export.css b/sites/all/modules/views/views_export/views_export.css deleted file mode 100644 index 4887ad36e..000000000 --- a/sites/all/modules/views/views_export/views_export.css +++ /dev/null @@ -1,12 +0,0 @@ - -div.export-container table input, -div.export-container table th, -div.export-container table td { - padding: 0 0 0 .5em; - margin: 0; - vertical-align: top; -} - -div.export-container table td input { - margin-top: .25em; -} diff --git a/sites/all/modules/views/views_export/views_export.info b/sites/all/modules/views/views_export/views_export.info deleted file mode 100644 index 341758763..000000000 --- a/sites/all/modules/views/views_export/views_export.info +++ /dev/null @@ -1,13 +0,0 @@ - -name = Views exporter -description = Allows exporting multiple views at once. -package = "Views" -dependencies[] = views -core = 7.x - -; Information added by drupal.org packaging script on 2011-03-28 -version = "7.x-3.0-beta3" -core = "7.x" -project = "views" -datestamp = "1301301970" - diff --git a/sites/all/modules/views/views_export/views_export.module b/sites/all/modules/views/views_export/views_export.module index fa1769398..c98f08b6e 100644 --- a/sites/all/modules/views/views_export/views_export.module +++ b/sites/all/modules/views/views_export/views_export.module @@ -1,276 +1,5 @@ <?php - -/** - * @file views_export.module - * - * Provides functionality to export multiple items at once to make it easy to - * dump a set of views into code. - */ - -/** - * Implements hook_menu(). - */ -function views_export_menu() { - $items = array(); - $items['admin/structure/views/tools/export'] = array( - 'title' => 'Bulk export', - 'access arguments' => array('use views exporter'), - 'page callback' => 'views_export_export', - 'type' => MENU_LOCAL_TASK, - ); - - $items['admin/structure/views/tools/export/results'] = array( - 'access arguments' => array('use views exporter'), - 'page callback' => 'views_export_export', - 'type' => MENU_LOCAL_TASK, - ); - - return $items; -} -/** - * Implements hook_theme(). - */ -function views_export_theme() { - return array( - 'views_export_export_form' => array( - 'render element' => 'form', - ), - ); -} - -/** - * Implements hook_perm(). - */ -function views_export_permission() { - return array( - 'use views exporter' => array( - 'title' => t('Use Views exporter'), - 'description' => t('Use the Views exporter.'), - ), - ); -} - -/** - * Page callback to export views in bulk. - */ -function views_export_export() { - $tags = array(); - if (!empty($_GET['tags'])) { - $tags = explode(',', $_GET['tags']); - } - - $exportables = array(); - foreach (module_implements('views_exportables') as $module) { - $function = $module . '_views_exportables'; - $exportables[$module] = $function('list', $tags); - asort($exportables[$module]); - } - - if ($exportables) { - $form_state = array( - 'no_redirect' => TRUE, - 'exportables' => $exportables, - 'tags' => $tags, - 'build_info' => array( - 'args' => array(), - ), - ); - - $form = drupal_build_form('views_export_export_form', $form_state); - $output = drupal_render($form); - if ($form_state['submitted']) { - $output = $form_state['output']; - } - return $output; - } - else { - return t('There are no views to be exported at this time.'); - } -} - -/** - * Form to choose a group of views to export. - */ -function views_export_export_form($form, &$form_state) { - foreach ($form_state['exportables'] as $module => $views) { - foreach ($views as $name => $data) { - $options[$name] = $data['name']; - } - - $form['modules']['#tree'] = TRUE; - $form['modules'][$module] = array( - '#type' => 'checkboxes', - '#options' => $options, - '#default_value' => array(), - ); - } - - $tags = array(); - foreach (views_get_all_views() as $name => $view) { - if (!empty($view->tag)) { - $tags[$view->tag] = $view->tag; - } - } - - asort($tags); - - $form['tags'] = array( - '#type' => 'select', - '#title' => t('Show only these tags'), - '#options' => $tags, - '#default_value' => $form_state['tags'], - '#multiple' => TRUE, - ); - - $form['apply'] = array( - '#type' => 'submit', - '#value' => t('Apply'), - '#submit' => array('views_export_export_form_apply'), - ); - - $form['name'] = array( - '#type' => 'textfield', - '#title' => t('Module name'), - '#description' => t('Enter the module name to export code to.'), - ); - - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Export'), - ); - - $form['#action'] = url('admin/structure/views/tools/export/results'); - $form['#redirect'] = FALSE; - if (isset($form_state['exportables'])) { - $form['#exportables'] = $form_state['exportables']; - } - return $form; -} - -function theme_views_export_export_form(&$vars) { - $form = $vars['form']; - $output = ''; - // Get current list of modules. - $files = system_rebuild_module_data(); - - $exportables = $form['#exportables']; - $output .= drupal_render($form['tags']); - $output .= drupal_render($form['apply']); - $output .= '<div class="clearfix">'; - - foreach ($exportables as $module => $views) { - $header = array(theme('table_select_header_cell'), $files[$module]->info['name'], t('Tag'), t('Description')); - $rows = array(); - foreach ($views as $name => $view) { - $title = $form['modules'][$module][$name]['#title']; - unset($form['modules'][$module][$name]['#title']); - $rows[] = array(drupal_render($form['modules'][$module][$name]), $title, $view['tag'], '<div class="description">' . $view['desc'] . '</div>'); - } - $output .= '<div class="export-container">'; - $output .= theme('table', array( - 'header' => $header, - 'rows' => $rows - )); - $output .= "</div>\n"; - } - $output .= '</div>'; - $form['#attached']['css'] = array(drupal_add_css(drupal_get_path('module', 'views_export') . '/views_export.css')); - - $output .= drupal_render_children($form); - return $output; -} - -function views_export_export_form_apply(&$form, &$form_state) { - $tags = $form_state['values']['tags']; - if ($tags) { - drupal_goto('admin/structure/views/tools/export', array('tags' => implode(',', $tags))); - } - else { - drupal_goto('admin/structure/views/tools/export'); - } -} - -function views_export_export_form_submit(&$form, &$form_state) { - $code = ''; - if (empty($form_state['values']['name'])) { - $form_state['values']['name'] = 'foo'; - } - - foreach ($form_state['values']['modules'] as $module => $views) { - $views = array_filter($views); - asort($views); - if ($views) { - $code .= module_invoke($module, 'views_exportables', 'export', $views, $form_state['values']['name']) . "\n\n"; - } - } - - $lines = substr_count($code, "\n"); - - $types = system_element_info(); - - $info = strtr("name = @module Export Module\n", array('@module' => $form_state['values']['name'])); - $info .= strtr("description = Exports some views of @module\n", array('@module' => $form_state['values']['name'])); - $info .= "dependencies[] = views\n"; - $info .= "core = 6.x\n"; - - - $element_info = array( - '#title' => t('Put this in @module.info in your modules/@module directory', array('@module' => $form_state['values']['name'])), - '#type' => 'textarea', - '#id' => 'export-info-textarea', - '#name' => 'export-info-textarea', - '#attributes' => array(), - '#rows' => 9, - '#cols' => 60, - '#value' => $info, - '#parents' => array('dummy'), - '#required' => FALSE, - ) + $types['textarea']; - - $api = "/**\n"; - $api .= " * Implements hook_views_api().\n"; - $api .= " */\n"; - $api .= "function @module_views_api() {\n"; - $api .= " return array(\n"; - $api .= " 'api' => '" . views_api_version() . "',\n"; - $api .= " 'path' => drupal_get_path('module', '@module'),\n"; - $api .= " //'path' => drupal_get_path('module', '@module') . '/includes',\n"; - $api .= " );\n"; - $api .= "}"; - - $api = strtr($api, array('@module' => check_plain($form_state['values']['name']))); - - $element_api = array( - '#title' => t('Put this in @module.module in your modules/@module directory', array('@module' => $form_state['values']['name'])), - '#type' => 'textarea', - '#id' => 'export-api-textarea', - '#name' => 'export-api-textarea', - '#attributes' => array( 'dir' => 'ltr' ), - '#rows' => 9, - '#cols' => 60, - '#value' => $api, - '#parents' => array('dummy'), - '#required' => FALSE, - ) + $types['textarea']; - - $element_hook = array( - '#title' => t('Put this in @module.views_default.inc in your modules/@module directory or modules/@module/includes directory', array('@module' => $form_state['values']['name'])), - '#type' => 'textarea', - '#id' => 'export-textarea', - '#name' => 'export-textarea', - '#attributes' => array( 'dir' => 'ltr' ), - '#rows' => min($lines, 150), - '#value' => $code, - '#parents' => array('dummy'), - '#required' => FALSE, - ) + $types['textarea']; - - - $form_state['output'] = theme('textarea', array( - 'element' => $element_info)); - $form_state['output'] .= theme('textarea', array( - 'element' => $element_api)); - $form_state['output'] .= theme('textarea', array( - 'element' => $element_hook)); -} - +// This module has been removed, and this note is left here to ensure +// that users who don't delete their directory before upgrading have +// the code removed and to let people looking for it to know to use +// the CTools bulk export module instead. diff --git a/sites/all/modules/views/views_ui.info b/sites/all/modules/views/views_ui.info index ff1b49c2d..5e5b3da00 100644 --- a/sites/all/modules/views/views_ui.info +++ b/sites/all/modules/views/views_ui.info @@ -7,9 +7,9 @@ dependencies[] = views files[] = views_ui.module files[] = plugins/views_wizard/views_ui_base_views_wizard.class.php -; Information added by drupal.org packaging script on 2011-03-28 -version = "7.x-3.0-beta3" +; Information added by drupal.org packaging script on 2011-12-18 +version = "7.x-3.0" core = "7.x" project = "views" -datestamp = "1301301970" +datestamp = "1324170450" diff --git a/sites/all/modules/views/views_ui.module b/sites/all/modules/views/views_ui.module index 41b6d0488..a4480a93b 100644 --- a/sites/all/modules/views/views_ui.module +++ b/sites/all/modules/views/views_ui.module @@ -58,7 +58,7 @@ function views_ui_menu() { $items['admin/structure/views/settings/basic'] = array( 'title' => 'Basic', 'page arguments' => array('views_ui_admin_settings_basic'), - 'type' => MENU_LOCAL_TASK, + 'type' => MENU_DEFAULT_LOCAL_TASK, ) + $base; $items['admin/structure/views/settings/advanced'] = array( 'title' => 'Advanced', @@ -80,6 +80,7 @@ function views_ui_menu() { 'type' => MENU_DEFAULT_LOCAL_TASK, 'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE, 'weight' => -10, + 'theme callback' => 'ajax_base_page_theme', ) + $base; $items['admin/structure/views/view/%views_ui_cache/edit/%/ajax'] = array( 'page callback' => 'views_ui_ajax_get_form', @@ -88,14 +89,21 @@ function views_ui_menu() { 'theme callback' => 'ajax_base_page_theme', 'type' => MENU_CALLBACK, ) + $base; - - // Additional pages for acting on a View. - $items['admin/structure/views/view/%views_ui_cache/analyze'] = array( - 'title' => 'Analyze', - 'page callback' => 'views_ui_analyze_view', - 'page arguments' => array(FALSE, 4), + $items['admin/structure/views/view/%views_ui_cache/preview/%'] = array( + 'page callback' => 'views_ui_build_preview', + 'page arguments' => array(4, 6), + 'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE, 'type' => MENU_VISIBLE_IN_BREADCRUMB, ) + $base; + $items['admin/structure/views/view/%views_ui_cache/preview/%/ajax'] = array( + 'page callback' => 'views_ui_build_preview', + 'page arguments' => array(4, 6), + 'delivery callback' => 'ajax_deliver', + 'theme callback' => 'ajax_base_page_theme', + 'type' => MENU_CALLBACK, + ) + $base; + + // Additional pages for acting on a View. $items['admin/structure/views/view/%views_ui_cache/break-lock'] = array( 'title' => 'Break lock', @@ -119,7 +127,6 @@ function views_ui_menu() { // NoJS/AJAX callbacks that require custom page callbacks. $ajax_callbacks = array( - //'analyze' => 'views_ui_analyze_view', 'preview' => 'views_ui_preview', ); foreach ($ajax_callbacks as $menu => $menu_callback) { @@ -144,55 +151,14 @@ function views_ui_menu() { 'type' => MENU_CALLBACK, ) + $base; - return $items; -} - -/** - * Implements hook_menu_local_tasks_alter(). - * - * Adds secondary tabs for navigating across Displays when editing a View. Since - * each view contains its own set of displays, doing this here instead of in - * hook_menu() reduces bloat in the {menu_links} table, and avoids requiring a - * menu rebuild every time a display is added or removed. - */ -function views_ui_menu_local_tasks_alter(&$data, $router_item, $root_path) { - // @todo This is commented out until theming of secondary local tasks is - // fixed (see http://drupal.org/node/599706#comment-3620912). In the - // meantime, we add the tabs within views_ui_edit_form(). - /* - if ($root_path == 'admin/structure/views/view/%') { - module_load_include('inc', 'views_ui', 'includes/admin'); - $view = $router_item['page_arguments'][0]; - $tabs = views_ui_edit_page_display_tabs($view); - if ($active_display = arg(6) && isset($tabs[$active_display])) { - $tabs[$active_display]['#active'] = TRUE; - } - else { - // Set the first one to active. - foreach ($tabs as $id => $tab) { - if (!isset($tab['#access']) || $tab['#access']) { - $tabs[$id]['#active'] = TRUE; - break; - } - } - } - if (!isset($data['tabs'][1]['output'])) { - $data['tabs'][1]['output'] = array(); - } - $data['tabs'][1]['output'] = array_merge($data['tabs'][1]['output'], $tabs); - $data['tabs'][1]['count'] = count($data['tabs'][1]['output']); - } - */ -} - -/** - * Implements hook_help(). - */ -function views_ui_help($path, $arg = '') { - switch ($path) { + // A page in the Reports section to show usage of fields in all views + $items['admin/reports/views-fields'] = array( + 'title' => 'Fields used in views', + 'description' => 'Overview of fields used in all views.', + 'page callback' => 'views_ui_field_list', + ) + $base; - } - // return '<pre>'.print_r(views_ui_get_wizards(),1); + return $items; } /** @@ -226,9 +192,6 @@ function views_ui_theme() { 'render element' => 'form', 'file' => 'includes/admin.inc', ), - 'views_ui_item_delete_form' => array( - 'render element' => 'form', - ), 'views_ui_expose_filter_form' => array( 'render element' => 'form', 'file' => 'includes/admin.inc', @@ -272,6 +235,21 @@ function views_ui_theme() { ); } +/** + * Impements hook_custom_theme() + */ +function views_ui_custom_theme() { + $theme = variable_get('views_ui_custom_theme', '_default'); + + if ($theme != '_default') { + $available = list_themes(); + + if (isset($available[$theme]) && $available[$theme]->status && preg_match('/^admin\/structure\/views/', current_path())) { + return $theme; + } + } +} + /** * Page title callback for the Edit View page. */ @@ -300,10 +278,10 @@ function views_ui_cache_load($name) { ctools_include('object-cache'); views_include('view'); $view = ctools_object_cache_get('view', $name); + $original_view = views_get_view($name); if (empty($view)) { - $view = views_get_view($name); - + $view = $original_view; if (!empty($view)) { // Check to see if someone else is already editing this view. $view->locked = ctools_object_cache_test('view', $view->name); @@ -313,6 +291,12 @@ function views_ui_cache_load($name) { $view->editing = TRUE; } } + else { + // Keep disabled/enabled status real. + if ($original_view) { + $view->disabled = !empty($original_view->disabled); + } + } if (empty($view)) { return FALSE; @@ -379,7 +363,7 @@ function views_ui_preprocess_views_view(&$vars) { '#theme' => 'views_ui_view_preview_section', '#view' => $view, '#section' => $section, - '#content' => $vars[$section], + '#content' => is_array($vars[$section]) ? drupal_render($vars[$section]) : $vars[$section], '#theme_wrappers' => array('views_container'), '#attributes' => array('class' => 'contextual-links-region'), ); @@ -485,7 +469,6 @@ function views_ui_view_preview_section_handler_links($view, $type, $title = FALS if ($title) { $links[$type . '-title'] = array( 'title' => $types[$type]['title'], - 'attributes' => array('class' => array('views-ajax-link')), ); } @@ -560,18 +543,22 @@ function views_ui_ctools_plugin_directory($module, $plugin) { */ function views_ui_get_wizard($wizard_type) { ctools_include('plugins'); - $w = ctools_get_plugins('views_ui', 'views_wizard', $wizard_type); + $wizard = ctools_get_plugins('views_ui', 'views_wizard', $wizard_type); // @todo - handle this via an alter hook instead. - if (!$w) { + if (!$wizard) { // Must be a base table using the default wizard plugin. $base_tables = views_fetch_base_tables(); if (!empty($base_tables[$wizard_type])) { - $w = views_ui_views_wizard_defaults(); - $w['base_table'] = $wizard_type; - $w['title'] = $base_tables[$wizard_type]['title']; + $wizard = views_ui_views_wizard_defaults(); + $wizard['base_table'] = $wizard_type; + $wizard['title'] = $base_tables[$wizard_type]['title']; + } + // The plugin is neither a base table nor an existing wizard. + else { + vpr('Views Wizard: @wizard does not exist. Be sure to implement hook_ctools_plugin_directory.', array('@wizard' => $wizard_type)); } } - return $w; + return $wizard; } /** @@ -792,10 +779,10 @@ function _views_ui_get_paths($view) { $path_sort = strtolower($one_path); } if (empty($view->disabled) && strpos($one_path, '%') === FALSE) { - $all_paths[] = l($one_path, $one_path); + $all_paths[] = l('/' . $one_path, $one_path); } else { - $all_paths[] = check_plain($one_path); + $all_paths[] = check_plain('/' . $one_path); } } } @@ -847,7 +834,34 @@ function _views_ui_get_displays_list($view) { function views_ui_library_alter(&$libraries, $module) { if ($module == 'system' && isset($libraries['ui.dialog'])) { if (version_compare($libraries['ui.dialog']['version'], '1.7.2', '>=')) { - drupal_add_js(drupal_get_path('module', 'views') . '/js/jquery.ui.dialog.patch.js', array('group' => JS_THEME)); + $libraries['ui.dialog']['js'][drupal_get_path('module', 'views') . '/js/jquery.ui.dialog.patch.js'] = array(); } } } + +/** + * Handle bad updates from alpha versions to beta versions. + * + * This function will ONLY be called if there is an old menu entry for + * this hanging around. This will force a menu rebuild and a cache clear + * which should resolve the problem. + */ +function views_ui_list_views() { + drupal_flush_all_caches(); + menu_rebuild(); + drupal_goto($_GET['q']); +} + +/** + * Truncate strings to a set length and provide a ... if they truncated. + * + * This is often used in the UI to ensure long strings fit. + */ +function views_ui_truncate($string, $length) { + if (drupal_strlen($string) > $length) { + $string = drupal_substr($string, 0, $length); + $string .= '...'; + } + + return $string; +} -- GitLab