Best way to create 'grades' and 'classes'

Events happening in the community are now at Drupal community events on www.drupal.org.
9802008's picture

Hi there

I am setting up a small website to handle classes and grades. At the moment the process works as follows:

  • create a new role: eg 'Grade 1 - 2011'
  • allocate users to the role
  • create a new node of type 'Class' (eg English). Select from the CCK field drop down the role that this class is for. Eg Grade 1 - 2011.
  • all the users who have the role 'Grade 1 - 2011' are now part of the class 'English'. Users in a grade do not need to be split between different classes.

The above works well for 1 year but does not lend itself to multiple years. The number of roles is going to grow and become cumbersome. Future years present a challenge as the user will be moved out of the role 'Grade 1 - 2011' and into the role 'Grade 2 - 2012'. They will no longer have access to their school record from the previous year as this is based on roles.

One option would be to leave the user in the previous years role and just add them to the next role, however this will become confusing for the site admin.

Any pointers on the best and simplest way to setup a class/grade structure in Drupal is appreciated.

Thank you

James

Comments

Roles

fuzzy76's picture

You will end up with way too many roles after a while, so I don't think this setup will stay usable for long. I think Organic groups might do the trick for you. We use it for elearning currently, but is considering migrating to a multisite setup with a site for each course.

thanks for the feedback

9802008's picture

Hi fuzzy76

Thank you for the feedback - will try out Organic groups.

Looking for the best 'glue' to link the classes, grades and users.

Cheers

James

Classes / grades in concept

btopro's picture

@fuzzy76
I'm in the process of transitioning from course management as a 1 course per site multisite setup to the ELMS distribution i'm building which is OG / Spaces based because of the management across time issue. I could see using something like OG for each site to sit above a multisite but that's a bit too complicated for what we're doing at this time. Were we to segment that way it would be something like multisite maps to college and then allow that college/multisite to use OG to manage all the courses of that college. Curious as to how you're managing courses with Drupal, drop me a line some time maybe we can avoid replicating efforts.

@9802008
I would also recommend OG to solve this issue. It's still a bit too early to use in production but if you want an example of this IA running for courses w/ support for multiple courses across time you should try installing ELMS. I have a Course -> Offering of a course relationship. Every Course is just a name space holder / marketing area and then each offering is a OG / Space si that it's content, users, and settings can be unique to that instance. https://drupal.psu.edu/project/elms

Because when you make a new group / offering of a course (grade in ur case potentially) it can have users that ONLY have a certain role within that space you only need a 'student' and 'instructor' kind of roles because the users will only have that role in the context of that OG/Space.

As for grades, those will seg segregate if you setup views correctly as Features. I've done a couple of posts about this but here's a screencast to show what would happen for your users if it's setup correctly -- http://elearning.psu.edu/elearning/creating-features-ecosystem-through-kit . Replace the word Course Content with Gradebook and you have a segmented gradebook (in concept, obviously code would have to be written :)). There is a gradebook and OG gradebook module but I haven't tried them.

The framework of projects like scholar, atrium and elms should be enough for someone to structure it around k-12 by tweaking a few interfaces and naming conventions. Just waiting for that to pop up :)

As it is now we use a stack

fuzzy76's picture

As it is now we use a stack of og, spaces, context and features in the same way OpenAtrium does. We also use og_roles for giving course instructors per-course permissions and og_strict_filter for enforcing filtering of content per group. But because the filtering never got good enough for us (blocks being a good example) and the stack of modules makes us nervous about a D7 upgrade path, we are looking at migrating the entire setup to multisite with the bakery module for single sign-on. This will give us much better separation of courses, better course handling (duplicating courses being a major plus) and will also allow better customisation per course.

course duplication

btopro's picture

https://github.com/btopro/elms/tree/master/profiles/elms/modules/elms_co...

actively working on the course duplication code right now. This will be a critical piece to elms and it should be more or less ready to go tomorrow. Realized some things as I was driving home from work that I need to change but that package minus the spaces override (which doesn't work, unfortunately need a 1-line hack in spaces_og) works. I was able to create an organic group today and then clone:

-All content types of the features selected
-all content from selected users
-reassign all nodes in the duplicated course space to the user committing the action (effectively allowing them to branch the material and use on their own)

Tomorrow I'll start putting in the elms specific stuff via hooks for things like semester offering information.

OG for classes/grade

jpamental's picture

I'd second (third?) that as well. We've recently begun using OG for our 'classroom' solution in our platform and it's working really well. Ideally I think that the best route is one OG per 'classroom' (i.e. 3rd period biology, 4th grade) so that a teacher is the manager of however many classes they teach, and can post to one or all at a time. Then you can create an event content type and allow that as a post to a group, creating a calendar per-group as well (for test dates, etc)

We're still unlocking all the possibilities, but it right away allows students to 'join' the groups for all their classes (and parents too) so everyone can easily check on 'their' groups to keep up-to-date.

There are also modules for grades and student submissions but we haven't explored those yet.

Jason

Jason Pamental
[ @jpamental ]

What I did.

markwk's picture

I used a multisite setup with OG for each of the subsite's groups/classes.

Basically, I have central hub that is used for all the sign-ins and sign-ups and then acts as openid provider for all the sub/relying sites. Still tweaking with certain parts of it but works nice and is comparatively lightweight in comparison to other single sign on solutions. This separate by site was important because separate schools are using things differently and each subsite has different language specific setup. It's also good to have community specific spaces (logos, colors, etc) and groups within those community specific spaces.

That said, I think you may not need a multisite setup. OG (=classes) + proper taxonomy (=grade, year, subject) should be enough for what you are doing. Users will have roles specific to groups (teachers, student, administrator, etc.) and each user can have a listing of all groups they have been a part of across time. Filtered Views can be used to give a catalogue of classes from year to year, by subject and by grade, etc.

+There are also some user import modules that might be used to bulk add users to groups quite easily from year to year.

Great guys - thanks for all the ideas!

9802008's picture

Busy experimenting with the various suggestions!

Cheers

James

Our solution

wastrilith2k's picture

I am working for a non-profit and what we decided to do, since we wanted social features as well, was to use Drupal Commons. This gives us the majority of the functionality out of the box and then we just created two content types for assignments. The teacher creates a piece of content calling it an "Assignment" or "Worksheet" and we use Views Attach to attach submitted assignments to the bottom for the class to review together. This has the added bonus of giving the student a link right from the assignment to create a submitted assignment. Submitted assignments have a field that is only editable by the teacher (Content Permissions) for the grade. We can then use views to create a per-assignment or per-student "gradesheet"

That's just the simplified explanation of the LMS, but I'm happy to answer questions, take criticisms, etc.

Thanks,

James

--James

I'd be really interested in

btopro's picture

I'd be really interested in seeing some kind of write up / screencast about this. Especially when it comes to the gradesheet aspect. Been hearing a couple people talk about using drupal commons in this way and I'd be interested in seeing how it works in practice.

Paying forward

wastrilith2k's picture

I will see what I can write up. Maybe include some exported CCK definitions and views.

James

--James

Features Oriented

emptyvoid's picture

Interesting posts, some are inline with strategies I've used.

The system you want to build really depends on the audience and the intended use of the system. You could create a generic Drupal built and model content types, taxonomies, etc. And this may provide the basic scaffolding for the "data objects" you have described. It doesn't however provide the workflow or actionable features required for managing a class, students, content, tests, grading, scoring/reporting, or schedules and classrooms.

So you could have several "portals" for each intended audience, of all which are driven by a single Drupal instance (this of course assumes a small number of users 50-100, any more than the whole architecture would need to be significantly more robust). Off the top of my head, here is what I might model the business objects for such a task.

Content Types:
- Profile
- Student
- Teacher
- Administrator
- Parent
- Classroom (Organic group)
- Class level (Organic Group)
- Class
- School (Organic Group)
- Subject
- Test
- Rubric
- Score

Taxonomies:
- Country
- State/Provence
- Sex

For the displays I could see building many views, context displays, and (if you must) panels. Once the working model is built I would then design workflow for all audiences and aspects of the system leveraging rules. Inevitably you would have to build custom modules to seam everything together and to address "corner-cases" where rules or existing community modules can't cover. I would roll all of the content types, taxonomies, rules, views, blocks, contexts, etc into features. That way the base functional design could be "reused" and or automatically deployed into new Drupal instances.

Anyway who, that's my 0.02.

Best of luck.

Robert Foley Jr
Solutions Architect
http://www.robertfoleyjr.com

Drupal in Education

Group organizers

Group notifications

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