Posted by 1kenthomas on March 11, 2008 at 11:07pm
| 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
See http://drupal.org/node/166432#comment-765653 for reference.
#2
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
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
#6
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.
#7
Good fix. Thanks.
#8
The patch worked fine for me. Thanks
http://drupal.org/node/233024#comment-5433160