? 338893-taxonomy-argument-title.patch ? 635336-remove_fields.patch ? 667014-notice.patch ? 713078-aggregator_xss.patch ? 746846-fix-slightly-broken-jump-menu.patch ? 746846-fix-slightly-broken-jump-menu2.patch ? 795270-views.patch ? 936828.patch ? D6-views-fix-tokens.patch ? aggregator.guid_.patch ? aggregator.guid_.patch.1 ? area_text-notice-fix.patch ? diff ? doc ? handlers_views_handler_field.inc__0.patch ? issue-807540.patch ? patches ? render_link ? security-2929-xss-in-path.patch ? tests ? views-570618-hide_hidden_blocks_0.patch ? views-ajax_form_wrapper-rerender.patch ? views-export-api_version_0.patch ? views-fileurl.patch ? views-relationship-fix_0.patch ? views-rolesfix-832954-17.patch.1 ? views-rss-form.patch ? views-template-based-on-tag-685554-10-d6.patch.1 ? views-timebased-non-permanent_1.patch ? views.aggregator_feed_item_id.patch ? views_366886_0.patch ? views_910864_0.patch ? views_batch_exposed_form_0.patch ? views_date_sql_format_ext_3.patch ? views_edit_comment_link_0.patch ? views_in_array_0.patch ? views_in_array_1.patch ? viewsall ? modules/search/views-view-row-search.tpl.php ? modules/user/views_handler_field_is_online.inc Index: plugins/views_plugin_style_jump_menu.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/views/plugins/Attic/views_plugin_style_jump_menu.inc,v retrieving revision 1.1.2.4 diff -u -p -r1.1.2.4 views_plugin_style_jump_menu.inc --- plugins/views_plugin_style_jump_menu.inc 27 Jul 2010 23:28:08 -0000 1.1.2.4 +++ plugins/views_plugin_style_jump_menu.inc 14 Oct 2010 21:49:54 -0000 @@ -66,7 +66,7 @@ class views_plugin_style_jump_menu exten '#title' => t('Button text'), '#default_value' => $this->options['text'], ); - + $form['choose'] = array( '#type' => 'textfield', '#title' => t('Choose text'), @@ -111,8 +111,27 @@ class views_plugin_style_jump_menu exten foreach ($sets as $title => $records) { foreach ($records as $row) { $path = strip_tags($this->get_field($this->view->row_index, $this->options['path'])); - $path = url($path); - $field = strip_tags($this->row_plugin->render($row));; + // 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); + } + + // use parse_url() to preserve query and fragment in case the user + // wants to do fun tricks. + $url = parse_url($path); + $options = array(); + if (isset($url['query'])) { + $path = strtr($path, array('?' . $url['query'] => '')); + $options['query'] = $url['query']; + } + if (isset($url['fragment'])) { + $path = strtr($path, array('#' . $url['fragment'] => '')); + $options['fragment'] = $url['fragment']; + } + + $path = url($path, $options); + $field = strip_tags($this->row_plugin->render($row)); if ($title) { $options[$title][$path] = $field; }