The purpose of this filter is to allow users to enter the node/123 pattern in their posts rather than node aliases, while still having the aliases show up in code, or when the link is hovered or clicked, at the same time avoiding broken links when targeted node aliases change.

http://drupal.org/sandbox/aklump/1145796

Comments

chrisshattuck’s picture

Good luck with this application, Aaron, I know you've been working with Drupal for a while, and it would be great to see you start to work on some modules on d.o! Cheers!

aklump’s picture

Thanks Chris I appreciate it. I remember you encouraged me to get the contributor's account going back in PNW Drupal Summit in Seattle, what 3 years ago? Where did the time go?

davidfells81@gmail.com’s picture

How does this differ from http://drupal.org/project/link_node , other than in the format of what you type in?

aklump’s picture

After reviewing link_node, I'd suggest several benefits with this module.

The first is that if a site is already built out and nodes created which contain the pattern node/123--say if it was built without path auto--this filter will seamlessly upgrade that site. In addition, it would downgrade just as easily if the filter was disabled. In other words, no special syntax is needed in existing posts to get it to subtitute out the aliases, immediately. On the other hand if I wanted to upgrade a site using link_node, all existing posts would have to be altered to the format [node:123] and all <a> tags removed.

Using the native <a> tag, I feel, allows for easier control if you want to add classes and other attributes to the link tag itself, without having to utilize a secondary syntax. The level of abstraction is one less, so to say. Most of my clients are familiar with how to use the <a> tag so it's not a complicated idea for them.

Another argument would be how this integrates with WYSIWYG solutions, since we're not doing any "non-html" syntax. The WYSIWYG integration would be able to provide title, class, and other tags through it's UI. I think this is a strong argument in and of itself to having the module work as it does, and warrants it's consideration alongside link_node.

This was a good question and it got me thinking; thank you!

davidfells81@gmail.com’s picture

Are you familiar with the global redirect module? It sorta eliminates the need to worry about this with any module at all, now that I think about it...

aklump’s picture

That's a good point. The only advantage I see is what is rendered as code (viewing source) or what is shown when the user hovers over the link before clicking. Global Redirect would indeed land them on the aliased page though. It's really splitting hairs I suspect, but I might still choose to use this filter. What do you think? Is it worth keeping it going?

aklump’s picture

After sleeping on it I've thought of a few more ideas:

A compelling reason might be the following use case. If a user right-clicks to copy a link they want to email to someone else. The link that will be copied is different depending upon the solution: global redirect or node alias filter, where the latter will be the alias. For website owners who are very concerned with the format of their URLs, the latter is of course preferred. I can think of at least two clients in the last year who fall into this category and would choose the latter solution.

It also dawned on me that this could easily be upgraded to process user/123 and taxonomy/term/123, as well as node/123; which would also add value to this module. Maybe the name should be changed to entity alias filter...?

aklump’s picture

I've just added the support for taxonomy terms and user aliasing to the code. Also I've rewritten the sandox page with additional examples and explanation to help differentiate this module from the other similiar projects.

http://drupal.org/sandbox/aklump/1145796

arcaneadam’s picture

I actually think that the idea behind this module is a good one. It filters the code on at the display level and allows content creator to create content that is consistant. One of the problems I see a lot is a content creator will link to a page on their site using the PathAuto alias, then something happens that changes that alias and now the link they've already inserted into multiple spots doesn't work, but they don't realize that.

I could see this being an invaluable resource. I haven't searched for other modules that may duplicate this functionality, but barring that and a solid code review I think this is a good module for release.

aklump’s picture

Thank you arcaneadam. I have documented the other similar modules and how this differs on the project page. Also I have run this through coder for formatting. Is there anything else I should do at this point to help this process?

Also I have a 7.x version too but I wasn't sure how to coordinate that with the repo. It looks like I should make two branches one called 6.x and one called 7.x; or is it general practice to call the branches 6.x-1.x and 7.x-1.x. Then I'll commit the versioned module code to those branches and I won't update the master anymore? Is that standard practice. Not sure since this is my first contribution. Forgive me if I missed a tutorial on this somewhere.

Thanks in advance.

Aaron

davidfells81@gmail.com’s picture

After the additional explanation, I agree. I'll take a peek at it tonight!

aklump’s picture

Thanks davidfells, I'm not sure how to get the 7.x version into the repo; what you'll be looking at is the 6.x; I posted a question re: this earlier in thread. Would you like me to get the 7.x code up there before you review. If so, please direct me as to how to facilitate.

Thanks,
Aaron

arcaneadam’s picture

Copied from one of my project pages git instructions page.

Creating Releases

See the naming conventions for a complete description of how to name branches and tags so you can create releases.

Branch for a dev release

This creates and checks out a new branch in one command.

git checkout -b 7.x-1.x
git push origin 7.x-1.x

Tag for a stable release

git checkout 7.x-1.x
git tag 7.x-1.0
git push origin 7.x-1.0

Once you've pushed the properly formed tag or branch, see Creating a project release for directions to actually create the release node.

aklump’s picture

Thank you arcaneadam, I was able to create the 6.x-1.x and the 7.x-1.x branches based on your instructions. Both versions of code are now ready for testing/review.

davidfells I look forward to your feedback...

dave reid’s picture

Component: new project application » module
Status: Needs review » Needs work

Doesn't this duplicate the work in the following possible modules (which already compete between the two):
http://drupal.org/project/pathologic
http://drupal.org/project/pathfilter

One of the biggest advantages about our Drupal community is our ability to coordinate and work together to solve problems. Would it be possible you could contribute to either of the existing modules to help improve it? Or if your work is drastically different, if you could help explain and detail what those differences are would be great!

arcaneadam’s picture

Status: Needs work » Closed (duplicate)

I'd have to agree with Dave. After looking at Pathologic, specifically #587130: translate node/id to the corresponding url alias, I'd say this definitely duplicates functionality.

Don't let this discourage you from continuing to try and contribute though. It's not a knock on your module or your code just a way to keep the community code from becoming bloated with duplicate modules.

I'm going to go ahead and mark this issue as closed.

aklump’s picture

Dave Reid and arcaneadam, sorry its taken so long to get back to you both, but I want to say thank you for your time spent reviewing my module. I installed pathologic and with one configuration step (see below) I was able to have the exact outcome of my module. So I agree that this duplicates functionality and so let's stick with pathologic.

Thanks arcaneadam for the encouragement, I will try again with another module at some point. I don't feel discouraged.

To get the outcome of Node Alias Filter using pathologic do the following:
# Add '/' to the list of Also considered local: paths.

avpaderno’s picture

Issue summary: View changes
Status: Closed (duplicate) » Closed (won't fix)