Recently, I've got a requirement from a customer which will highly improve Drupal's usability: viral registration workflow.

The challange:
The main goal of a new, unregistered user is to add site content.
Many people want to add content to my site - and can't - because they are not registered.

My Suggested Solution:
The idea is simple - automatically present the registration form for anonymous users when they post content. Show the content on site only when the registration is completed.

Why is this needed? Because it will highly improve drupal's usability and save tons of times to webmasters.

Take a look at the following scenarios and see if you identify yourself in one of them:

Scenario 1: You allow unregistered users to post comments, forum topics, etc... For many sites - This IS the desired situation, since it's easy to enter new content to your website. ALAS - users don't register, and you can't communicate with them.

Scenario 2: You tried scenario 2 and you get no new content. So you try to allow anonymous users to post content but moderate it. Problem is it takes a lot of time to moderate, and still - users are not registered.
Happly, a solution exists - Viral registration.

Scenario 3: You tried scenario 1 and 2 and got a lot of spam, and you feel frustrated by the time you invest in deleting blocking the spam. You decide to BLOCK all content entry for unregistered users. ALAS - you are losing alot of users which won't register unless they have a reason or you get much less content.

SUGGESTED SOLUTION

The idea is simple - OPPOSITE WORKFLOW. For example:

petition signup => registeration form => user confirms registration approval => signup approval
forum post => registeration form => registration email confirmation => post presented on site
comment post => registeration form => registration email confirmation => comment presented on site
contact form => registeration form => registration email confirmation => comment presented on site
any new node => registeration form => registration email confirmation => node presented on site

DETAILS:

The detailed use-case is as follows:
1. The unregistered user adds new content and presses the submit botton.
2. The system presents the user with the registration (preferably logintobaggon's) screen with proper explanation of why it's imortant to register.
3. The users fills in the registration details and submits them.
4. The added content is saved in a (new) pending state.
5. The user gets the registration email and clicks on the link to confirm the registration.
6. Registration is confirmed. The new node now gets to the approval queue, or auto-approved (according to the site's policy) and the user my now be optionally presented with a custom confirmation screen which will allow him to invite friends using the invite module (or other similar module).

Other requirements:
* Prevent content flooding and robotic auto-submissions, by checking the submission's IP.
* Reduce spam by integrating with challange modules (captchas or math challange)

How to implement it? Where to start? Do you have any comments on the requirements?
will be happy to read.

Do you want to implement it? We will pay 200$ for the person who submits a complete solution which works with LoginTobaggon and petitions and invite modules.

CommentFileSizeAuthor
#11 ui design_0.doc44.5 KBdruvision
#9 register.html572 bytesdahacouk
#8 ui design.doc47 KBdruvision

Comments

druvision’s picture

Version: 4.7.4 »
Component: other » accessability

I tried to associate the new user experience issue with the user subsystem but got an error.

druvision’s picture

Related issue: allow for 'buy then register' e-commerce situation.
The solution should also allow for that functionality.
Reference: http://drupal.org/node/92869

druvision’s picture

Please tell me how do you recommend me to advance it - Can you give tips where are the most appropriate hooks? do you have time to implement it? Or should I create a reverse bountry? Any help will be appriciated and will benefit the whole of drupal.

druvision’s picture

Component: accessability » accessibility

Updates:

This module shoulb be a separate module, not an extension to LoginToboggan.
(reference: http://drupal.org/node/100376).

The budget is no longer limited to 200$ - I have found a sponser - please send your price offer
(reference project request: http://drupal.org/node/101151).

druvision’s picture

To clarify the previous point: This module should be a separate module, yet it should preferablly be an addon module to LoginTobbogan and integrate well with the LoginToboggan functionality.

druvision’s picture

Updates:

Viral registation workflow should be implemented as a separate module, hooking into the logintoboggan login/registration process.

When an anonymous user submits a node or comment, it is created but
in a special "pending user registration" state. When the user then
registers and successfully validates their registration, the node or
comment transitions to being treated like a submission by any other
registered user: posted, moderated, whatever.

The registration / login fields should appear in a separate tab, only for users who are not logged in (We will need multipart forms). The data should not saved in the database until the user fills the registration details.

The module should provide an API in order to allow presenting the login/registration info in additional, non-node forms such as petition filling and contact form filling.

dahacouk’s picture

Great idea! Please see Can Drupal users do simultaneous registration and content posting?

The registration / login fields should appear in a separate tab

I think this should be an admin option. I would prefer the content and registration details** to be in the same form. But it should be an option to have it in a tabbed form too.

The data should not saved in the database until the user fills the registration details

I'm not sure of the technical ins and outs but I would have thought the posting would have to be saved somewhere before the user's email address is validated. So, I'm guessing this would be in a/the database with a "pending user registration" or "pending user validation" tag.

It could be that the 'buy then register' e-commerce scenario would mean that there could be quite a delay between the filling of the shopping cart and going to the checkout.

I am very interested in any module you produce working both for:

- simultaneous registration and content posting
- shopping cart (delay between registration and content posting)

**At the very least the (admin defined) registration details provided by the user need to be an email address. Actually my preference would be an email address and the user's real name.

Let me know if I can help in any way.

Cheers Daniel

druvision’s picture

Title: Viral registration workflow » Auto registration workflow
StatusFileSize
new47 KB

Thanks for your feedback, daniel. The links helps alot.

Auto generating the user's login name and password should be a good idea.

I feel that user's email should still be confirmed twice - like in LoginToboggan. Later the second field can be auto-expanded when the user fills the first email address but this is not currently required.

No multi-page forms for the first version. My current need is for a Drupal 4.7 site, and multi-page is actually supported only from Drupal 5.

The form is saved when the user fills the details, exactly as it's done in a regular post. The data is saved in pending state, until the user is validated.

All profile fields makred as 'for the user registration form' should be displayed. Those fields should be webmaster-defined. This should enable webmaster to ask a user for his/her real name.

Regarding your idea to save the shopping cart contents:

The current shopping cart mechanism uses browser sessions. Sessions expires when the browser crashes, and all data is lost. It happened to me many times.

There are two alternatives to save shopping carts for unregistered users:

  1. Save session details as a cookie. This can be a separate feature treated by the autosave module. However, this solution is not my favorite since it has privacy and security implications.
  2. Allow the user to register. Add a "Save" button below the shopping cart, next to an email field. The "Save" button will register the user and save the cart. For users to do it, registration should be super-easy. Your suggested link is the answer.

My chosen solution: The auto-registration API should enable shopping cart writers to add a "Save" button to the shopping cart. This botton would enable the user to register/login. Then, the cart shold be saved under his/her name.

Let me know if I can help in any way.

You have already gave important feedback on the suggested features. Please continue.

There are many ways other in which you can help:
Are you ready to help testing this module?
Are you ready to define which API will be needed by the shoppping cart?
Will you help integrating the API provided by this module, with the e-commerce shopping cart?

Thanks in advance,

Amnon

Attached: UI Design Doc

dahacouk’s picture

Title: Auto registration workflow » Briefly...
StatusFileSize
new572 bytes

I'm still not sure why this should not, at least in part, extend LoginToboggan...

There is lots of bits in it that are most of the picture, like "Set password & Immediate login".

What I'm most keen for is people to be able to come to the site and enter content along with their email address. See the attached web page.

I'll work on this more soon...

Cheers Daniel

druvision’s picture

Thanks, Daniel

I don't object putting it into LoginToboggan - on the contrary, I've already opened it as a logintoboggan issue - but I got a "won't fix" response, so we will have to push it alittle harder after we release the actual code.

Your UI sketch is fantastic - it says it all:

  1. Indeed - There is no need for confirmation email - the email may appear in the confirmation page where the user may be given a chance to modify it if there were errors
  2. Indeed, there is no need for a signup form for registered users in the right side. If the site member forgot to login and tried to enter his email - he will be prompted for his password (via Javascript or in the second, confirmation page).

Did you suggest to change the module name from 'autoreg' to 'Briefly'? Because when you change the message subject you've changed the title of the whole issue. Anyway it's a good name if we still need a separate module.

druvision’s picture

StatusFileSize
new44.5 KB

Updated spec

druvision’s picture

Title: Briefly... » Auto registration workflow

Returning the name to the previous form.

mlncn’s picture

I suggested this way back, but my approach is probably backward. It's still listed as an active thread on LoginToboggan so we can take a solution created here back there.

And I take back what I said over there: it's impossible to overstate the importance of allowing people to sign in while posting comments or content if your goal is to build a community.

The reason I'm posting this is that our Agaric Design Collective offers an additional $200 for a solution to implementing the solution coming together here. We're actually pretty well into Drupal 5 so this bounty is good for that but note that levavie needs a 4.7 solution.

dahacouk’s picture

I'd add to that bounty if a developer offered to code this!

Cheers Daniel

alunde’s picture

I'm very interested in this as well. Are there any takers for implementing it?

cosmicdreams’s picture

Has anyone investigated whether the existing Workflow module is capable of accomplishing this. It sounds right up its ally. If I have time I'll look into this myself.

mlncn’s picture

Any report-back, cosmicdreams? As far as I can tell workflow and workflow-ng have no way to hold onto the data from the previous form while they register a user.

Agaric has recently done a lot of work merging forms for World Social Forum 2008 and we think this might be the best approach. Maybe. With lots of trepidation. But if someone doesn't finally step up to do this we'll take our own bounty and others and do it.

Question: Do people think this should be dependent on LoginToboggan's "non-authenticated user" feature, or would you want the option of assigning content to the unconfirmed and so blocked user?

olalindberg’s picture

Any news for this? This would be useful for me as well!

mlncn’s picture

Does anyone have a specific usecase? After merging a content form with an organic groups form for World Social Forum 2008 I'm quite confident we can add a user login / user registration option to a specific form, but not so sure about a solution that works for every content type for every sort of user registration form (core profile, nodeprofile ...).

Solving a specific high-impact situation (a certain content type, just for comments, etc. with a fairly stable user registration form) as a paid gig would be a good way to make progress toward a module / addition to LoginToboggan / eventual core commit.

mrgoltra’s picture

subscribe

matt@antinomia’s picture

Project: » Inline Registration
Version: » 5.x-1.x-dev
Component: accessibility » Miscellaneous

I'm hijacking this from the Drupal project and moving it to Inline Registration. Levavie alerted me to this issue and it's basically what the Inline Registration module is for. Would love to receive feedback on the module and any development assistance would be appreciated.

druvision’s picture

Would love to hear about any progress.

For the moment, I am using loginToboggan's auto-registration feature and adding the following code (or similar) to the argument handling code of each relevant view:

global $user;
if ($user->uid > 0 ) {
  $view->page_header .= "<a href='/node/add/biz'>To add a new business press here</a>. ";
}
else {
  $view->page_header .= "To add a new business please <a href='/user/login?destination=/node/add/biz'>login</a> or <a href='/user/register?destination=/node/add/biz'>register</a>. ";
}

A similar code may be added as a block above each node add form.

socialnicheguru’s picture

subscribing

macrodesign’s picture

subscribe

momper’s picture

subscribe

Annakan’s picture

It may not be the right module but the guy is right

gweston’s picture

Has anyone come up with a solution for this. I need the exact same workflow. I found that realself.com has added this functionality. I will sponsor this project if someone can do it.

pieterdc’s picture

@gweston
I just mailed ericbkennedy to ask him how they did this.

locomo’s picture

subscribe

benone’s picture

+1

iztok’s picture

subscribe

mattcasey’s picture

is this possible yet in Drupal 6?

pieterdc’s picture

FYI I never got an answer from ericbkennedy; cfr. comment #28

verynic’s picture

subscribing

mr.j’s picture

Version: 5.x-1.x-dev » 6.x-1.x-dev

++

elaman’s picture

Status: Active » Closed (outdated)

Issue is very old. Closing it. Besides, I think you can achieve this using multistep forms.