I am trying to create a website which contains a membership program. The program is meant to be followed on a daily basis for several months until it's completion. I wish to have something set up so that the client can only see that day's lesson, as well as have access to an archive of previous lessons, but not be allowed to see future lessons. What is your opinion on the best way to do this in Drupal, and how would you recommend I proceed (I have been fooling with Drupal for about 5 weeks now and am understanding it better each day).
In addition, how can I set up the website so that people must sign up and pay before given access to said content (lessons), as well what do you think of Ubercart? I am going to create a free 5 day membership system so those who register but don't pay get access to SOME content as well as some forum access such as read but can't write, and at the end of the 5 days they must pay or their account gets suspended (and paying unlocks the account and allows full access to user content and community).
Thanks again guys!
Comments
Will all clients be on the
Will all clients be on the same timeline, or will a client's timeline start the day she registers, which would mean that two clients who registered on different days would have access to different content?
Thank you for your quick
Thank you for your quick reply! Each client's timeline will be dependent on the day they register and begin the program. Something that would be nice is for people in the same segment (for example, all people on Week 1) will be grouped together and have access to communicate with each other in a special private forum or chatroom (like an organic group I guess).. If this seems difficult to do, then I don't mind scrapping it (as I'm still very new to Drupal, I have the opinion that I am only limited to my own imagination.. I hope I'm correct hehe)
membership modules?
Hi, have you try considering CiviCRM? it's has online signup and membership management. http://civicrm.org/
You can browse their case studies for more: http://wiki.civicrm.org/confluence/display/CRMDOC32/Case+Studies
I am checking out what they
I am checking out what they have to say, but this might only help me in 1 area.. does anyone else have other ideas while I look into CiviCRM? Thanks!
Not of Immediate Help, but...
So, one thought off the bat is that you're almost certainly going to need to do something slightly custom here in order to handle the multiple timelines. You probably want to handle access using the built in access capabilities, but that's going to raise issues because it's going to mean giving each member boatloads of permissions.
There's probably also some alternative way to do this where you use some kind of naming system for your daily contents such that they have a numeric indication of where they are in the sequence -- File035 comes after File034. And you could store each user's current number, then possibly (but this is where things get sticky) patch yourself into the URL-remapping bit of Drupal and reroute any request for a file with too-high a sequence number to a "can't go there yet" page.
CiviCRM is a pretty great thing, but it won't solve this challenge for you, at least not as far as I'm aware (I'm no CiviCRM expert, though).
Anyway, one thing I'm up to lately won't immediately help you but might be of some use--I'm standing up a Drupal website in public at ModeNomad.com. What I mean by that is that I'm documenting what I'm doing with ongoing commentary and screen captures as I customize and extend the site's capabilities. Nothing new here for old hands at Drupal, but for folks new to it, I expect the ongoing series of posts may well be useful. And I will before too long be dealing with updating membership capabilities. As I'm writing this in early October we're more or less at ground zero. The site is installed and I've put in a post or two, but that's it. The relevant stuff is in the blog...
I agree that it looks like
I agree that it looks like you're going to need to develop some custom code, but there are some building blocks that may help you. It would be a lot easier if you were planning to keep everyone on the same timeline, obviously -- then it would just be a matter of publishing the content on a specific date.
So, you're probably going to have to work with one of the node access modules (node_access or nodeaccess) as a starting point.
http://drupal.org/project/node_access
http://drupal.org/project/nodeaccess
That should get you to the point where you're controlling access to each user per node.
Something like nodequeue might let you create a managed list of the nodes in program. Alternately, you might be able to just add a CCK field that is the day that content goes live in the program.
You can set up an action that grants permission to a node.
To put it all together, you'll need some glue code that strings it all together -- this could be triggered by the user's login or cron.
Good luck!
I decided instead of forcing
I decided instead of forcing a new lesson to appear daily, rather that each member must complete a lesson in it's entirety and have their progress be logged before being allowed to move on. If someone isn't logging in on a daily basis and completing their lessons, an admin should be sent an email by the website that details which client has been slacking off, in which then the admin can email or PM the client to motivate them to get back on it!
For example, it might take 1 person 1 week to get through lesson 1, but another person might get through it in an hour (however they could still only do a max of 1 lesson per day, or else they might finish the program within a week instead of 6 months, and actually probably learn and retain nothing).
will check out modenomad.com, cheers for the link.
Thanks Radiating Gnome.. sadly I have NO clue how to do this, so I might have to hire someone to write the code for me (which I am planning to do at some point... so if there are any people who really get Drupal and coding, don't be shy because I might be hiring you within the next year to graphically design and customize code)
So, you guys were saying that
So, you guys were saying that I need to do some custom work.. what modules would you recommend besides nodeaccess?
Not too much PHP
I don't think you would have to write too much custom php to do what you want.
I would suggest that much of what you want can be done through the userpoints and rules modules. Basically it would work like this:
Anonymous, unregistered users have no access to lessons. Registered users have access to the free lessons. When a person goes through ubercart and pays for "tuition" they are awarded a userpoint. This grants them access to the first paid lesson. When they complete lesson 1 they are awarded another userpoint. Access to each lesson could require the user to have a certain number of points. "Tardy" students could also be reminded to return to the site via a message triggered by rules.
This would probably be a little bit of a challenge for someone new-ish to Drupal. But if you have time and patience you can get it sorted out.
A list of some of the Drupal sites I have designed and/or developed can be viewed at motioncity.com
cheers man.. that sounds like
cheers man.. that sounds like the easiest and best option so far! One of my biggest issues still would be in how to determine that the lesson has been truly completed (by which I mean, if there is a button that the user can click that says they are done, they might not actually be done and thus aren't paying attention to the actual lesson or requirements).
Good call, mcfilms, I like
Good call, mcfilms, I like the userpoints solution. Very cool.
what about...
What about this:
http://drupal.org/project/pageroute
Points do not get awarded until the last node of each lesson and no way to skip ahead. Of course there is no guarantee that they are paying attention. But live teachers have this problem too.
A list of some of the Drupal sites I have designed and/or developed can be viewed at motioncity.com
I would know! I'm an English
I would know! I'm an English teacher in China right now and my students are 8 and 9 years old.. some never pay attention!
Ok, so you mentioned using Userpoints.. what is the best way to go about setting up userpoints? I found an option to add a term to the Userpoints taxonomy..
Here is what I have so far:
Points Settings
Moderation, transaction approved
Expiration never
Do not control behavior of messages user sees
display 0 point users, 10 transactions per page, 30 users per page
always use system time
*now points categorization is something I don't understand (default category and category to display on user page are both listed as Uncategorized)
in terms of the pageroute... I've managed to create several pages and order them in preferrable sequence, however even though the pageroute has been set up, the forward and back links haven't been added to the pages.. thoughts?
Ideas?
Ok, so I've gone through and looked at the userpoints, rules, ubercart, and other modules for some ideas and came up with this concrete plan, which I'd appreciate if someone could help point in the right direction to get it started:
1)every newly registered user will be an unauthenticated user with access to see user profiles/create their own profile/see a few free lessons/purchase the program/read but not write on the forum
2)once they purchase the program, I need to have an event created that will grant them the authenticated user role as well as 1 userpoint
3)then another rule where when they are given a userpoint, it unlocks the first lesson
4)from there, as each lesson is completed (still unsure how to determine when it's completed), another point is assigned and thus another lesson is made available
5)if a user becomes inactive (say, doesn't log in for 1 or 2 days, an tokenized email will be sent to them encouraging them to visit the website and continue the program)
Thanks again!
Next Steps
I would say you got it pretty well sorted out. I would point out that there should probably be a FREE way to register on the site and post questions on the forum. I wouldn't use the "authenticated user" role for your students. Rather I would make a couple new roles. Something like "unpaid," "student," "teacher," and "admin." This would allow you to control who sees and does what.
Are these video lessons or text and graphics?
At this point the best bet is to install the modules, give it a whirl and see where it doesn't work as planned. Since I have a Drupal 6 site that is somewhat similar, here is a list of modules you should consider:
admin_menu
backup_migrate
cck
ckeditor
filefield
form_intro
imagecache
imagefield
imce
login_destination
logintoboggan
pathauto
rules
token
ubercart
userpoints
views
MAYBE
content_access
content_profile
contentprotector
globalredirect
google_analytics
jquery_update
nice_menus
panels
path_access
regcode
seo_checklist
simplenews
stringoverrides
tabname_tweaker
userpoints_admin_email
userpoints_evaporate
userpoints_expire
userpoints_login
userpoints_no_negative
validateage
views_bulk_operations
views_bonus
Good Luck!
A list of some of the Drupal sites I have designed and/or developed can be viewed at motioncity.com
Of course there would be a
Of course there would be a free way to register.. I'm using advanced profile and advanced forum, so everything is integrated. When a person registers for the site, they automatically get access to the forum, however if they're not paying for the program, I don't want them to be allowed to use the site's features because that's unfair to those who pay. I guess you are right about the user roles..
I just created 2 new roles "interested" and "student." For the "interested" role, I gave them the following permissions:
access comments, access site-wide contact form, view field_uprofile_about_me, view field_uprofile_interests, access frontpage, search content, create orders (this is for ubercart), access user profiles.
The lessons are mostly text, however I do have swftools installed (not enabled) so I can mess with it, as I might create an introductory video and use swftools to include it (as well, I might have some short videos on a recommended list, and if traffic isn't too bad I could probably just host them on the site).
I will highlight the ones I've already installed:
admin_menu, backup_migrate, cck, ckeditor, filefield, form_intro, imagecache, imagefield, imce,
login_destination, logintoboggan, pathauto, rules, token, ubercart, userpoints, views
content_access, content_profile, contentprotector, globalredirect, google_analytics, jquery_update, nice_menus, panels, path_access, regcode, seo_checklist, simplenews, stringoverrides, tabname_tweaker, userpoints_admin_email, userpoints_evaporate, userpoints_expire, userpoints_login, userpoints_no_negative,
validateage, views_bulk_operations, views_bonus
------------
In addition, I'm having these issues:
So I have these both installed, but neither will activate for the reasons specified below. Now I've done as both things instruct me to do, but the issue is still unresolved even though it should be working fine. Thoughts?
# The jQuery UI plugin is missing. Download and extract it to your jquery_ui module directory. (Currently using jQuery UI Not found)
# SimpleTest could not be installed. Must apply core patch, please see INSTALL.txt. (Currently using SimpleTest code addition Not-found)
I am using Content Profile, Advanced Profile Kit, ImageCache, ImageAPI and maybe a few other modules. I have uploaded a picture for my user profile, and made sure that Author Pane is listed on the profile, however the image doesn't show up!!!
-----
One last question for now as I'm not sure and don't wanna destroy my site: if I give a non-admin user the permissions to edit and view uprofile fields, does this mean they can only touch their own, or edit everyone's?
Thanks again for your continued help! I'll check out those new modules now
bump.. I have many issues
bump.. I have many issues still.. is anyone there? :D
still around
I'm still around alienhunt. But a lot of your issues can be resolved by just giving it a try or a little reading.
"Access user profiles" lets a selected role view a user's profile. Where "administer users" lets them edit and delete and change the users settings and "administer permissions" turns over access to the whole site. So those last two are only typically set for a super-admin.
Some of your other issues are easy to troubleshoot on here. I typed "jQuery UI plugin" and clicked on the second link. There is a lot to read there, but I bet it leads to the answer to your problem.
I'm not sure why you are getting an error with Simple Test. Why do you need that?
It is hard to get images to show up the first time. Read a good tutorial about "Pictures in the user profile in Drupal"
Also, if you go back and read your "Of course there would be a" post, it's a little confusing. It's not clear what BOTH means when you say "So I have these both installed, but neither will activate."
A list of some of the Drupal sites I have designed and/or developed can be viewed at motioncity.com
so, I realized that
I realized that Simpletest was a developer module, so I deleted it. What I had meant by both was that both were installed what seemed like the right way, yet neither were working.
I know most of these issues can be resolved through looking carefully, but some of the terminology is still a bit over my head. I know what administer means :P
I'll look into the image thing. Another issue with the profile I'm having is that for some reason it is putting everything (including the author pane) in 1 column, yet I set up a 2 column system... here is what I mean:
http://www.orientalemporium.net/profile.JPG
In addition to wanting the image to display and the profile to ACTUALLY use a 2 column system, I hate how there is a nav bar above which lets you edit, see notifications, etc. How can I remove this (I think I know how to create the links within the user nav bar on the left hand side)
I had some problems with the
I had some problems with the website which made it impossible to continue. I backed up my database tables and deleted everything. I reinstalled and started from scratch. The avatars display, the profile is in 2 columns, and the pageroute buttons work. Now I need to do the rules for the pageroute, but I'm not quite sure how to proceed.
Great thread!
I am doing basically the same site. It is a membership site, but the difference is that the lessons given need to be protected from being copied. I know there are always ways around this but I want to at least make it a bit harder. The documents will probably be in PDF-format.
Thanks
/Zumph
Well then all you need to do
Well then all you need to do is enable the Upload and Filefield modules, and possibly either create 1 page for each lesson that has a download link to the pdf file lesson, or create 1 page with a list of links to each pdf file lesson. My goal is to prevent the member from seeing them all at once, since I wish to create a program that forces them to learn material in a certain order (hence using pageroute). I hadn't thought about copy protection, however I could probably prevent them from right clicking or highlighting the text.
I kinda like your idea of a pdf file setup, in that if the website ever dies or you lose data, you can keep the very small pdf files on your local hard drive and then reupload them and create everything again quite easily. Creating a new page for each lesson and doing the pageroute seems kind of annoying at this point now that I've thought about your set-up. I'll talk to my partner and see what he says. Cheers!
Userpoints to view node
Yes, I think PDF is a good way to go to atleast make it a little bit harder to copy the material. The plan is to devide lessons into five categories and make five different userpoints categories. My problem is that I want to make certain nodes viewable only when you have gathered a certain amount of userpoints of the right category. I cant find a module that makes this happen but i am probably missing something?
I am thinking that when you sign up you will be given one userpoint and granted permission to the first lesson. Then after clicking a button (havent really figured out how to give a point for clicking a button) you will have persmission to the next node. Or possibly have it determined by time instead, say the second lesson will be viewable after a week. I found that the userpotint schedule module should be good for this but there doesnt seem to be any version out to download on drupal.org.
/Zumph
We decided to go with html
We decided to go with html lessons that are a mix of audio, video, and text because we can do everything humanly possible to secure/lock/password protect pdf files, but it doesn't mean people can't find a way to crack it.
Final solution ?
Hello Alienhunt,
I would like to set up the same membership program like you did years ago.
What did you finally do ?
thanks for your help !
anyone ?