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

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

1kenthomas’s picture

behindthepage’s picture

Category: bug » feature

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

1kenthomas’s picture

Assigned: Unassigned » 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.

behindthepage’s picture

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

behindthepage’s picture

Status: Active » Closed (fixed)
zyxware’s picture

Version: 5.x-1.9 » 6.x-1.12
Assigned: 1kenthomas » Unassigned
Category: feature » bug
Status: Closed (fixed) » Active
FileSize
713 bytes

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.

behindthepage’s picture

Good fix. Thanks.

castroarguello’s picture

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

behindthepage’s picture

Title: The patch worked for me. Thanks » unanticipated redirects when called from drupal_get_form
Ben Coleman’s picture

The fix in #6 works, but I had problems getting the patch file itself to apply. Attached is a redone patch file. I've left off the identifying information so zyxware can get credit when it is applied. I also note this fix doesn't yet show up as applied to -dev.

Ben Coleman’s picture

Actually, I should say it hasn't been applied to 6.x-1.x branch (for at least what's in the Drupal repository).

behindthepage’s picture

It has been applied now.
Thanks to everyone for their work on this issue.

Regards
Geoff

behindthepage’s picture

Status: Active » Closed (fixed)
Ben Coleman’s picture

Status: Closed (fixed) » Needs review

Did this not get pushed to Drupal's repository for 6.x-1.x? It's still not showing up there.

behindthepage’s picture

Sorry I posted too soon. I was about to push it when I realised I need to write a hook_update_N function for another fix I included so have to delay it until I do that.

Note to self - first things first
Regards
Geoff

behindthepage’s picture

Status: Needs review » Closed (fixed)