The limitation of a completely frozen API once a major version is
released causes these kinds of frustrations. I'd like to know what
people think of http://drupal.org/node/535612#comment-2250926. If you
have thoughts about it, please share them on the issue rather than by
email. Thanks.
Dave Reid wrote:
It is already fixed in Drupal as it lives as hook_url_outbound_alter()
now, as well as replacing taxonomy_term_path and hook_term_path().
As I explained in the issue that MT posted, the only way to fix this
in D5 or D6 is to patch common.inc to move the
custom_url_rewrite_outbound up in the execution of ulr(), before the
url alias lookups and the return line for external links. However, I
doubt this change would ever be approved since it's basically an API
change because of when the function is called. This would be like
changing hook_nodeapi('update') to be called before a node is updated
instead of afterwards.
We just probably have to live with the fact that this was a poorly
implemented feature, and at least look forward to things happening
correctly now with D7+.
Dave Reid
[email protected] <mailto:[email protected]>
On Mon, Nov 9, 2009 at 4:56 PM, Ken Rickard <[email protected]
<mailto:[email protected]>> wrote:
I think you may need a patch. We had something similar come up in
Drupal 5, and obviously missed this use-case when we had the call to
custom_url_rewrite_outbound() inserted in the url() function.
The D5 version of Domain Access shipped with a functional backport of
the patch, so best practice suggests fixing this against Drupal 8 (or
7 if we can call it an API bug) and then backport the patch to D6.
/me will vote that this is a bug in the API.
- Ken Rickard
agentrickard
On Mon, Nov 9, 2009 at 11:25 PM, Mlen-Too Wesley
<[email protected] <mailto:[email protected]>> wrote:
> Hello,
>
> I am currently developing a module to help libraries rewrite
links to
> external databases, such as ProQuest and LexisNexis, routing
those links
> through an EZProxy or other proxy referral server.
>
> For example, consider a resource located at:
> http://www.books24x7.com/marc.asp?bookid=30164
>
> If accessed from an on-campus IP address, the resource will be
available to
> the student. However, if off-campus, the student would either
have to use
> VPN to route all their internet traffic through a university IP
address or
> use an proxy referral server, such as EZProxy.
>
> EZProxy is easier, so from the library home page, the link is
rewritten to
> something such as:
>
http://ezproxy.example-library.edu/login?url=http://www.books24x7.com/marc.asp?bookid=30164
>
> This way, the student is presented with a login screen for
authentication
> and then directed to the resource.
>
> An easy module to make... or so I thought. Given the
> custom_url_rewrite_outbound() function, this kind of stuff
should be easy to
> do in Drupal, but it is not. The url() function in common.inc
returns the
> $path variable without any attempts to call
custom_url_rewrite_outbout().
>
> All would be well, if line 1408 of common.inc added the same
functionality
> to external links in the url() function as it does for internal
links. It
> just needs 3 lines:
>
> if (function_exists('custom_url_rewrite_outbound')) {
> // Modules may alter outbound links by reference.
> custom_url_rewrite_outbound($path, $options, $original_path);
> }
>
> Other than applying a patch, does anyone know another way around
this issue?
>
> I am not talking about Apache mod_rewrite or anything similar,
Clean URLs,
> or the Path module and URL aliases. I am looking for a way to
rewrite
> external URLs in anchor tags (links) without creating a wrapper
function for
> url() or l()... or using JavaScript or AJAX.
>
> Thanks!
>
> MT
>
>
>
>
>
>
--
Ken Rickard
[email protected] <mailto:[email protected]>
http://ken.therickards.com