Project:Contact Forms
Version:6.x-1.12
Component:Code
Category:bug report
Priority:normal
Assigned:Unassigned
Status:active

Issue Summary

If a site-wide contact form is rendered from a page other than "its own" via drupal_get_form (or another method), said form redirect to Contact Forms default page (/contact or such).

This is unanticipated behavior if drupal_get_form is being called, for instance, in a block outside the /contact heirarchy. CF should limit any redirects to occurring only for pages in /contact*

TKS

Comments

#1

#2

Category:bug report» feature request

Hi 1.kenthomas

I am not suprised that you are having problems as Contact Forms is URL dependant and only modifies the output of the core contact module. This is more of a feature request than a bug report and I suspect a completely separate module to provide blocks for each contact category would work better than trying to get Contact Forms to work how you want it.

regards
Geoff

#3

Assigned to:Anonymous» 1kenthomas

Geoff,

Self-assigning for now; will look at code and reply. Seems to me it should be simple to exclude the redirect if called from outside /contact* hierarchy, but haven't had time to glance at it.

#4

Yes this morning I had a thought that you could just remove the redirect as it is only a "covering all bases" part of the module. However your idea is better

line 56 is where it is being redirected. you could add a if $path does not contain "contact" then don't redirect.
You could try this

    if (!db_num_rows($query) && strstr ( $path, 'contact' )) {
      drupal_goto(variable_get('contactform_redirect', 'contact'));
    }

OR you could add "&& strstr ( $path, 'contact' )" to the if then on line 50.

All the best with it
Geoff

#5

Status:active» closed (fixed)

#6

Version:5.x-1.9» 6.x-1.12
Category:feature request» bug report
Assigned to:1kenthomas» Anonymous
Status:closed (fixed)» active

I am reopening this. This issue exists in 6.x-1.12 as well.

The drupal_goto would prevent the contact us form to be displayed anywhere else on the site. Why should this module prevent the use of the default contact form in any place other than the /contact/* paths

The alter need to run only on contact forms shown under /contact/* paths. The attached patch takes fixes this by checking for the path before the logic of the alter runs. Checking the path just for the redirect would not work because the subsequent logic requires valid arguments which may not be relevant when the form is not shown under a /contact/* path.

AttachmentSize
233024-fix-contact-forms-form-alter-redirect.patch 713 bytes

#7

Good fix. Thanks.

#8

Title:unanticipated redirects when called from drupal_get_form» The patch worked for me. Thanks

The patch worked fine for me. Thanks
http://drupal.org/node/233024#comment-5433160

nobody click here