Nodequeue Companion Modules

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
ezra-g's picture

Supplementary information to my official application appears here in bold italics.
DRUPAL.ORG USERNAME:

http://drupal.org/user/69959

LINK TO PROPOSAL DISCUSSION:

http://groups.drupal.org/node/10067

BENEFITS TO DRUPAL/OPEN SOURCE COMMUNITY, PROJECT DETAILS:

This proposal consists of two related modules, user_nodequeue and og_nodequeue, both of which are built using the Smartqueue API provided by the NodeQueue module (http://drupal.org/project/nodequeue).

The user_nodequeue module.

The user_nodequeue module would benefit end users and administrators of Drupal sites that call for nodequeues which correspond to individual users.
Provided with a nodequeue that displays on the user profile page, each user would have the opportunity to highlight content of her chosing. A user is more likely to use a nodequeue when one is provided for her, since some users may be unwilling, unable or simply uninterested in performing the steps necessary to create a nodequeue.
Currently, if a site administrator wishes to provide nodequeues to many of her users, she must manually create each nodequeue. On a site with hundreds or thousands of users, this can be a prohibitively time-consuming task. Additionally, displaying nodequeues on user profile pages calls for the writing of PHP code, a skill that many casual Drupal site administrators lack.
The user_nodequeue module would fulfill these use cases without requiring either the manual creation of nodequeues or PHP coding skills.
User_nodequeue could also be configured in such a way that individual users cannot manipulate their own nodequeues (see #5 in the Deliverables section, below). This allows for a list of selected content by a particular user that is maintained internally by website administrators\moderators. Such a configuration would enable various use cases, such as when administrators want to highlight offensive content by a particular user (as suggested by greggles).

Outside the scope of the Google Summer of Code, I propose that user_nodequeue could be installed on Drupal.org so that each user could highlight issues that are important to her. While the current 'Drupal contributions' text area could be used for such lists, having an 'add to my top issues' link on each issue would make compiling lists faster and easier. Some say that open source software follows a “scratch your own itch” mentality. If everyone had a list of her top itches (issues), it would be easier to say 'thanks' to another user by working on an issue from that list, and would promote general awareness of issues that are important to the community.

The og_nodequeue module:

Drupal is widely recognized as a platform for building community websites and the Organic Groups module is perhaps the cornerstone community building module. Having a nodequeue for each organic group that is editable group members would provide a new way for users to collaborate inside of sites that run OG.

Uncertainties:

Unexpected results or errors are virtually inevitable in software development. For this reason, my proposed project schedule includes three weeks of quality assurance, testing and bug fixes. Each of the two components of this project has what I see as a potentially complicating factor.

If the user_nodequeue module allows administrators to specify on a per-role basis which content types can be enabled in user nodequeues, it is unclear what action, if any, user_nodequeue should take to alter existing queues in order to reflect restrictions on node types available to those queues that occur as a result of a user leaving one or more user roles (#4a from user_nodeequeue deliverables, below) . Webchick pointed out that this is an edge scenario, and may not need to be addressed, even if the functionality described in #4a is implemented.
Because of the way Organic Group membership works, there may be unforeseen complications in getting og_nodequeue to evaluate who can and cannot edit a group nodequeue. I recently patched the og_subgroups module to replicate the new audience selection form provided by OG, so I am already familiar with code in OG that is directly related to this issue.


Even if these two items turn out to be complicated, I do not foresee any reason why they would prevent each module from performing its basic functionality, which is creating and associating nodequeues with users and organic groups.

DELIVERABLES:

This project entails the creation of two to-be-contributed Drupal modules: user_nodequeue and og_nodequeue. Functionality for each module is specified in the lists below.

The user_nodequeue module will provide the following functionality:

1) Administrators can specify which user roles automatically receive nodequeues
2) When a user of a specified role is created, a nodequeue corresponding to that user will be created.
3) When a user is deleted, the corresponding nodequeue will be deleted.
- a) The module should prompt and warn the administrator before deleting the nodequeues.
4) Administrators can specify which node types should be available in user nodequeues.
a) Administrators could potentially be able to specify on a per-role basis which content types can be enabled in user-nodequeues. If this is the case, available node types for each user-nodequeue will consist of an aggregate of node types specified for nodequeus of that user's role.
5) An 'edit own user nodequeue' permission will be defined to allow for use cases where users cannot edit their own node queues, such as a list of selected content by a particular user that is maintained internally by website administrators\moderators.
6)The content of the user-nodequeue will display on the user's profile page
- a) The module will define a default view that is utilized on the user profile page
- b) Administrators can specify an alternate view that will control the display of user-nodequeues on user profile pages

The og_nodequeue module will define or enable the following functionality:

1) When an OG homepage node is created, a nodequeue that corresponds to that OG homepage node will be created.
2) When an OG homepage node is deleted, the corresponding nodequeue will be deleted
3) Two possibilities:
- a) Members of the Organic Group and site administrators will be able to edit the nodequeue for that Organic Group.
- b) Administrators of the Organic Group and site administrators will be able to edit that OG's nodequeue.
4) The content of the Organic Group's nodequeue will display in a block defined by a view, provided by this module
- a) Administrators can specify an alternate view that will control the display of OG nodequeues
5) Administrators can specify which node types should be available in OG nodequeues
6) When an administrator changes sitewide settings for OG Nodequeues, these changes should affect all og-nodequeues, to the extent that this is programatically practical.

PROJECT SCHEDULE AND MILESTONES:

Community Bonding period through May 25 - Explore taxnomy_smartqueue module and work with project mentor to become familiar with the SmartQueue\Nodequeue API. Finish any scoping\specifications for the project.

  • May 26 – Begin coding user_nodequeue
  • June 16th - user_nodequeue milestone: coding should be 50% complete at this point.
  • June 30th – user_nodeqeueue milestone: Basic QA testing begins. Wrap-up coding
  • July 6 – user_nodequeue coding should be complete
  • July 7 – og_nodequeue coding beings
  • July 28th - og_nodequeue milestone: Coding should be 75% complete at this point
  • August 4th – og_nodequeue milestone: Basic QA testing begins. Wrap-up coding.
  • August 11th – og_nodequeue milstone: coding should be complete. Begin final QA testing phase of both modules.
  • August 18th – Final pencils down date.
  • I also plan to write basic simpletests for each module during the QA periods.

    BIO:
    I am a tinkerer. I have been exploring Internet-related technology and computers almost since I was old enough to type. In middle school, I taught myself QBasic and Visual Basic and created simple programs such as an FAA N-number lookup utility for aircraft registrations. Inspired by the 'Eliza' chat program and interested in pushing the envelope of what was possible under Visual Basic, I attempted to create a program that could store factual information that it extracted from sentences consisting of simple, uniform syntax. Lacking both expert programming skills and linguistic training, I didn't get very far and eventually turned my attention to websites.
    I experimented with various free hosting providers, purchased my first domain name, built my own web server and hosted a website on my home internet connection. As a high school independent project, I created a rudimentary system that allowed professors to upload and browse a diverse library of scanned print media.


    I started using Drupal in June of 2006 in Portland, Oregon and in the Fall of that year used my hiatus from college to focus on web development. I studied extensively and moved to Boulder, Colorado to pursue full-time a job at the Drupal development firm pingVision, with the intention of further honing my Drupal skills. At pingVision, I have fulfilled many technical and non-technical responsibilities including development of projects larger than the scope of these modules.
    In August of 2007, I moved to New York City to attend the New School University where I am completing my undergraduate degree in Psychology, currently with a focus on Cognitive Psychology. I believe strongly in the value of having a deep understanding of the human beings that the Internet and Drupal connect.

    I recently switched from Textmate to the more full-featured and open-source Eclipse PDT development environment. I typically keep track of my personal Drupal projects with SVN. I have participated as a product tester of Audacity, the Songbird media player, Mambo CMS, PHPList, Coppermine photo gallery, OpenOffice, Gimpshop and ActiveCollab.

Comments

+1 for this!

Alex UA's picture

There's actually another nodequeue addition I'd love to see. On node types that can potentially belong to multiple queues, I'd love the ability to have the nodequeues nested in a dropdown menu, rather than having each queue appear on its own along the bottom of the node.

Alex Urevick-Ackelsberg
ZivTech: Illuminating Technology

Alex Urevick-Ackelsberg
ZivTech: Illuminating Technology

+1 for separating out the nodequeue links

OpenChimp's picture

I've had the same thought and would love to see this. It would also be great to be able to pull them out of the links array entirely and display them through some sort of theme function. This would make for much cleaner administration.

More from the Nodequeue Project Feature Requests

Alex UA's picture

Some of these could be separate modules, some are patches to the original one.

Synchronize 2 or more queues to allow for staging of nodequeu content
http://drupal.org/node/209434

Add hooks that occur when you add and remove nodequeues
http://drupal.org/node/212510

CCK Node queue - i.e. allow for a nodequeue field type
http://drupal.org/node/184319

Integrate with Workflow-ng
http://drupal.org/node/191102

Alex Urevick-Ackelsberg
ZivTech: Illuminating Technology

Alex Urevick-Ackelsberg
ZivTech: Illuminating Technology

Sounds like some great ideas...

jbrauer's picture

These sound like good ideas... +1

Needs to be written up as a proposal ASAP to get it on the d.o ideas list to keep it moving forward.

--
Blog: Adding Understanding | Drupal Developer Search | Drupal Services: Brauer Ranch

I think that "Add hooks that

ezra-g's picture

I think that "Add hooks that occur when you add and remove nodequeues" is the most valuable of the additional tasks that you mentioned. I'm not clear on whether #'s 1 and 2 that I proposed and this (and\or) these other nodequeue proposals would make one GSOC project or multiple. I'll see if I can dig up any answers (in time). Thoughts, anyone?

Merlin expressed in IRC that

ezra-g's picture

Merlin expressed in IRC that it's reasonable to include both #1 and #2 in the deliverables for this project. Sounds good to me! This needs to be rewritten as a more specific proposal.

Clarification of Proposal

ezra-g's picture

Clarification of Proposal:

I propose 2 modules that are companions to the NodeQueue module.

(Wow -- this is the first time I've been on the client side, writing a request for module!)

Nodequeue_user: A module that provides each individual user with a nodequeue.

The module will define or enable the following functionality:

1) When a user is created, a nodequeue that corresponds to that user will be created.
2) When a user is deleted, the corresponding nodequeue will be deleted.
3) Administrators can specify which user roles automatically receive nodequeues
4) Administrators can specify which node types should be available in user nodequeues.
- a)Administrators could potentially be able to specify on a per-role basis which content types can be enabled in user nodequeues
5) An 'edit own user nodequeue' permission will be defined to allow for use cases where users cannot edit their own node queues, such as a list of selected content by a particular user that is maintained internally by website administrators\moderators.
6)The content of the user nodequeue will display on the user's profile page
- a) The module will define a default view that is utilized on the user profile page --
- b) Administrators can specify an alternate view that will control the display of user nodequeues on user profile pages
- I\Additional thought) If 4a is included, perhaps we should allow administrators to specify views for user nodequeue display on a per-role basis
c) When an administrator changes settings affecting user nodequeues, the change should affect existing nodequeues.

og_nodequeue: A module that provides a nodequeue to every organic group of one or multiple administer-specified node types.

The module will define or enable the following functionality:

1) When an OG homepage node is created, a nodequeue that corresponds to that OG homepage node will be created.
2) When an OG homepage is deleted, the corresponding nodequeue will be deleted
3) Two possibilities:
- a) Members of the Organic Group and site administrators will be able to edit the nodequeue for that Organic Group.
- b) Administrators of the Organic Group and site administrators will be able to edit that OG's nodequeue.
4) The content of the Organic Group will display in a block defined by a view, provided by this module
- a) Administrators can specify an alternate view that will control the display of OG nodequeues
5)Administrators can specify which node types should be available in OG nodequeues
6) When an administrator changes sitewide settings for OG Nodequeues, these changes should affect all og nodequeues.

While finalizing my

ezra-g's picture

While finalizing my proposal, two things occurred to me:

1) In reference to item 3 in my revised proposal: If a user is edited so that s\he is no longer a member of a role that has nodequeues, should that user's nodequeue be deleted? Should this module add a 'are you sure you wish to make a change to this user's roles, their nodequeues will be deleted' prompt, or rather allow admins to specify site-wide whether nodequeues should be deleted when users are edited in this fashion?

2) In reference to item 4a: If a user is a member of multiple roles, each of which specify nodequeues that allow for different content types, should one nodequeue be created that allows an aggregate of all content types allowed nodequeues associated with this user role? If so, should the user-nodequeues be edited to reflect this kind of change when the user loses one of those roles?

After consulting with

ezra-g's picture

After consulting with webchick in #drupal:

1) The module should prompt and warn the user before deleting the nodequeues
2) The module should provide one queue with an aggregate of content types, similar to how permissions available for a single user are the aggregate of all that user's roles.

The removal of nodes from queues or the removal of entire nodequeues based on changes to a user's role are considered overly-complicated edge cases.

striky2's picture

I’ve followed the “userification” of node queue with a close and great interest. It seems clear now that it will be one of the best bet solutions to make lists of nodes. Of course, this will only happen if this possibility goes from admin-restricted to all-users (the power of the democracy!).

My-lists/queues Services

It might be very useful to allow users create their lists of things (list types still being controlled by an admin though). This first extension (and not only giving one queue for each user at the user creation) will be the one we can call “my-lists”. This would ideally be a set of services to put nodes in lists (lets say queues), services which can greatly benefit from being exposed (particularly through JsonServer and AMFPHP).
Why that? Very simple, let’s speak about the next move now…

My-lists/queues UI customer

The next move is the “my-lists” Service Consumer UI. I’m sure you all noticed the new and really amazing GoogleDocs Management UI (Drag & Drop, right button, …). Why not having this thing eventually in Drupal 6? I’m also sure you noticed how a thing such my-lists mixed with views (or getView) could give to Drupal the “Node Directories Manager & Explorer” it truthfully deserves! (Whether this UI is flex or jquery, which should be at first a better start I guess…)

At the end...

So, from a possible set of usecases going from a Nodes/Documents Manager to a “Serial Lister”, introducing the concept of node_directories (or should I just say smart queues), I’d be so pleased to see people fighting to create a new node-browser-for-user

Early stage idea now needs big guys help to find its way to the Drungle...

--
Laurent Pipitone
BiliB Co-Founder

--
Laurent Pipitone
BiliB Co-Founder

Ezra, it sounds like some,

cyberswat's picture

Ezra, it sounds like some, if not all of this functionality is represented in the mySite module ... would it be a better usage of time to port the existing functionality from mySite? Here's a quote to help as reference "This is already a shipped feature of MySite, accessible on the profile level with mysite_display('user', $uid)" ... I have not had the time evaluate the quote, but am curious to hear your response.

This project has my +1 btw

Thanks for your +1.

ezra-g's picture

Thanks for your +1.

Where is that quote from?

I was unaware that MySite provided functionality equivalent to nodequeue (ordering a list of nodes). If it did, perhaps it is MySite that should integrate with nodequeue for that part of its functionality.

Yeah

NikLP's picture

I agree - given nodequeue's close integration with Views etc, that is really the "core" component that should be used.

Web Development in Nottingham, UK by Kineta Systems

Did this evolve further then

mtpultz's picture

Did this evolve further then this forum? I'm looking a CCK Nodequeue field with no luck, but found this forum and thought I'd ask if it is a module and what the name might be or if it's in the works.

Thanks

nodequeue per user

privatesniper's picture

re: http://drupal.org/project/smartqueue_users

I was wondering if this will be updated for v7 / 8 of drupal? I would really like to be able to use this.

Thanks in advance
-Sniper

SoC 2008

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week