[drupal-devel] [feature] Add path user/{uid}/content to get a listing of one user's nodes

chx drupal-devel at drupal.org
Sat May 7 21:42:40 UTC 2005


Issue status update for http://drupal.org/node/22183

 Project:      Drupal
 Version:      cvs
 Component:    base system
 Category:     feature requests
 Priority:     normal
 Assigned to:  robertDouglass
 Reported by:  robertDouglass
 Updated by:   chx
 Status:       patch

As Dries said "a function that takes a filter URI as input, and that
returns a valid SQL query":


http://cvs.drupal.org/viewcvs/drupal/contributions/sandbox/chx/urlfilter.module


It's actually two functions but I hope that's OK...




chx



Previous comments:
------------------------------------------------------------------------

May 6, 2005 - 17:23 : robertDouglass

Attachment: http://drupal.org/files/issues/usernodes.patch.txt (2.27 KB)

This creates a new path user/{uid}/content which functions just like
node, except it returns only one user's nodes. Minimally intrusive.
Hopefully useful. Open to alternate suggestions on the path (should it
be a path in the node module?) and the page title (currently "user
content").




------------------------------------------------------------------------

May 6, 2005 - 17:34 : robertDouglass

Hmmm - not good. If the user doesn't have any nodes the default text for
a new site ("Welcome to your new Drupal-powered website. This message
...") pops up.


Setting to won't fix until I come up with a better solution.




------------------------------------------------------------------------

May 6, 2005 - 17:35 : Dries

Where is it linked from?  How does it look like?  How does this interact
with the tracker?


Seen this: http://flickr.com/photos/factoryjoe/12517114/?




------------------------------------------------------------------------

May 6, 2005 - 18:14 : robertDouglass

Attachment: http://drupal.org/files/issues/usernodes.patch2.txt (2.26 KB)

Ok, this is better. This adds a new function, user_nodes, and two new
paths:
1) user/{uid}/content
2) user/{uid}/content/feed


The first works and looks just like the current q=node path, the second
just like node/feed, both only showing the published content of the user
{uid}.




------------------------------------------------------------------------

May 6, 2005 - 18:15 : robertDouglass

Dries, the tracker module shows a tabular view of basically the same
content. That's useful for tracking, but not for having a "front page"
view of one user's content. Tracker also doesn't offer a user feed,
afaik.




------------------------------------------------------------------------

May 6, 2005 - 18:31 : adrian

How does this differ from blog ?


In that any type of content is shown?  Isn't the idea to turn blog into
an extension of any node (kind of like the new events) ?




------------------------------------------------------------------------

May 6, 2005 - 18:37 : robertDouglass

Yes, you're right, in which case it would make more sense to have this
method in user than rely on blog/{uid}. The blog=anynode solution makes
this functionality dependent on the blog module -my suggestion isn't
dependent on any other module. It lists all of a user's content. Seems
like the right place for a method like this is in the user.module, not
the blog module.




------------------------------------------------------------------------

May 6, 2005 - 20:10 : Dries

There are at least /4 formats/:



The teaser format (titles + author + teasers)
The tracker format (titles + author)
The block format (titles only)
The RSS format

There are at least /3 filter mechanisms/:



Filter by node type
Filter by category
Filter by user

So how about this format:


http://example.com/$format/$filter/


Examples:



teaser -- shows all posts in teaser-format
teaser/type/blog -- shows all blogs in teaser-format
teaser/user/ -- shows all posts from user 
teaser/category/ -- show all posts in category  in teaser-format
...
track -- show all posts in tracker-format
track/type/blog -- show all blogs in tracker-format
track/category/ -- show all posts in category  in tracker-format
...
rss/category/ -- show all posts in category  in rss format
...
or even



rss/type/blog,forum/category/1+2/user/1,10,100 

What we need:



A function that takes a /filter URI/ as input, and that returns a valid
SQL query
A function that takes a /valid SQL query/ and a /format/ as input, and
that returns a chunk of HTML

Example usage:



format_nodes(query_nodes('/type/blog,forum/category/1+2/user/1,10,100'),
'rss')

  Want to create a block with a user's last forum topics?  Create a PHP
block with the following snippet:
  print format_nodes(query_nodes('type/forum/user/$user->uid'),
'titles');
 

NOTE: we might have to refine the URL schema and the API but this would
come a long way.




------------------------------------------------------------------------

May 7, 2005 - 02:51 : moshe weitzman

nice suggestion, dries ... i suggest that the best name for the
'tracker' format is 'table'.




------------------------------------------------------------------------

May 7, 2005 - 06:06 : Steven

I really like this idea. The current taxonomy URLs are already a bit
like this.


Taxonomy URLs have 2 parameters though, one of which is optional. By
using default values, we can take care of this at the moment, but I'm
sure how this would work with the current scheme proposed by Dries.


It also fits perfectly with what I was thinking of implementing for the
admin/node screen: right now the user's refining filters are stored in
the session. It would be nicer if they were stored in the URL (e.g.
admin/node/type/blog), that way they can be bookmarked and aliased.




------------------------------------------------------------------------

May 7, 2005 - 15:59 : Bèr Kessels

whats wrong with userposts.module. i does what you want, except for the
tab/localtask thing. I am willing to commit that patch though.







More information about the drupal-devel mailing list