I'm proposing this project, but I don't intend to do it myself. I hope this is the right place to post this! If not I can post it to one of the forums. I haven't put in any success criteria yet, as I'm not sure whether you think this is an interesting project. If you think it is, please let me know and I'll complete the proposal.

Short Description

Provide a module that manages links within a drupal site in an intelligent way.

Motivation

  • At the moment, to insert a named link to another page within the same drupal site, the user has to find the URL of the page they want to link to (proably using another browswer window or tab), and then paste in the correct HTML. Inexperienced users do not seem to like doing this, and as an experienced user, I find switching between windows or tabs cumbersome. This module should make inserting links easier, especially for people unfamiliar with HTML.
  • At the moment, a node that is linked to (using an a tag) can be deleted, leaving broken links. It would be good to inform the user that a node is linked to before deleting it. If the user does decide to delete a node, the links to it from other nodes should be deleted or disabled.
  • Currently, links in a variety formats are valid. E.g. both node/49, interesting_page, ?q=interesting_page and ?q=node/49 might all link to the same node, leading to inconsistent URL formats between different pages in the same site. It would be nice for the URL to be friendly (if possible) and use the path (if it exists).

Project description

Create a link management module. This should:

  • Keep track of all links to other nodes within the same drupal site. I imagine this would happen at node submission time and the target node id and source node id of link could be inserted into a table.
  • Normalise the link urls, as described in the motivation. Thus <a href="?q=node/49">interesting node</a> would turn into
    <a href="interesting_node">interesting node</a> (assuming interesting_node was a path of node/49).
  • Alert the user to links to a node, before deleting that node.
  • If a node is deleted, remove (or perhaps disable) the links to that node from other nodes
  • Provide a nice interface (perhaps by analogy with "image assistant", called "link assistant") for making links. The link button in TinyMCE or FCKeditor would bring up a window that has a listing of all the node titles on the site. The node listings might be organised by taxonomy, or perhaps they could be searched for. A small preview window could be provided. An "insert link" button would insert a link to the selected node into the node being editted. I imagine AJAX could be used to good effect in the interface.

I realise that this project has similarities with the urlfilter, title and trackback modules. However, I don't think any of those modules do everthing proposed here.

Comments on this proposal

This is the right place
robertDouglass - April 26, 2006 - 08:53

Please review the Links package module by Scott Courtney:
http://drupal.org/node/24719

It has a reasonable amount of overlap with what you are proposing, is very well written and documented, and should be used as an extension point for your proposal. So after reviewing that module, please update your proposal with the Links Package in mind.

- Robert Douglass

-----
My Drupal book: Building Online Communities with Drupal, phpBB and WordPress