Hi folks,
I'm following up on promises I made during the Birds of a Feather sessions at Drupalcon Boston to post a case study of how we're using Drupal at Amherst College. We've developed a module to facilitate hierarchical content creation and permission control that's also of potential interest to folks outside of the academic community.
Preamble aside - about 3 years ago the college decided to fundamentally change the way it was approaching the web, and a little over 2 years ago we started building on top of Drupal. The project had some broad goals:
- Find a way to gather together all members of the college community under a common web platform. Faculty, Students, Staff and Alumni were our primary focus, though we've since incorporated applicants.
- Change the way the college creates and manages web content. Amherst had been on the Dreamweaver + templates + department directories with shared passwords (!!!) model. We also wanted to get a consistent navigation scheme and thematically similar templates applied to the upper levels of the college's site.
- Begin dynamically building the academic portions of the college's website. Course listings, faculty listings, course enrollment listings, and more needed to all be delivered out of data instead of built manually by various academic staff and faculty.
- Amherst was disturbed by the legal action Blackboard took against Desire2Learn. We also knew that about 90% of faculty use of Blackboard on our campus was for password protected document sharing. We wanted to move away from Blackboard and replace it with other tools.
A partial list of what we've delivered so far:
Automation of curricular data:
- every academic department has a dynamically produced list of courses built from Datatel/Registrar data - example, Asian Studies
- every academic department has a dynamically produced list of faculty - example, Spanish faculty listing
- every course has a dynamically produced course website with numerous components including course rosters and e-reserves; this is delivered with granular permissions for reading and authoring content for each of the website components. Example - a recent Economics course. A picture of the permission settings for a course:

- every faculty member has a dynamically generated ”CV” page which lists contact info, the courses they're teaching, have taught, and (soon) will be teaching. Faculty can add to this material as they like. Example - Dale Hudson's CV
Every user gets some or all of the following depending on role:
- A customizable and personalized portal that delivers content specific to their role(s) at the college -- examples being readings and assignments for students, news from their classmates for alums, news from the college, etc. A picture:

- personal webspace. Example - Susan Edwards' personal website
- professional “CV” webspace if you're an employee, with dynamic content inserted into it (office location, email address, courses taught, etc.). A picture:

- Authoring permissions on the various resources specific to their role(s) -- examples: faculty members can edit their course websites, alums can add news to their class year's news page, department coordinators and staff can edit departmental websites, librarians can add e-reserves to course websites, enrolled students can add content to the class blog, etc. There are literally hundreds of groups. A picture:

- read permissions on the materials specific to their role(s) -- examples: students can see the e-reserves for the courses they're enrolled in, faculty can review the faculty meeting minutes, etc.
- The ability to maintain their personal information – contact info, family history, professional history, personal interests, more (mostly for alums).
Additional features:
- e-commerce tools providing features like reunion registration for alums and gifts to the college
- a voting tool for trustee elections, faculty committee memberships, and more.
How we did it:
- Staff: We have two full time Drupal developers and myself (diplomat/project manager). One of our DBA's spent about half her time on this over the last two years. Our desktop support folks have spent a ton of time on training, representing about 1/2 of one person's time over the last 2 years. Our web designer spent at least half her time on this, and probably closer to 75%.
- Process: We opted for a phased rollout strategy, focusing our attention on one college role at a time before moving on to the next, and we've followed a “release quickly, adjust later according to user request” philosophy. Results of this approach have been mixed. We've managed to do a lot in ~2 years, but nothing is ever “complete” and we've often stumbled over unforeseen problems we would have caught had we pursued a more gradual, thoughtful approach. I'm not sure we would change though if given a do-over, because one of the goals was to quickly modernize the college's approach to the web, and a more deliberate approach conflicts with that goal.
-
Code: The main thing we needed that Drupal doesn't have out-of-the-box was sophisticated hierarchical content authoring with permissions control. To deliver this we built our own module, which we've dubbed “monster menus.” A brief overview:
-
Content is organized in one or more trees, with each level of the tree acting as a container for one or more Drupal nodes. Nodes can appear in more than one container at the same time, allowing content to be reused without the need to update it in more than one place. The user sees branches of a tree as a menu contained within a block. You can specify the depth of the branch to be displayed in a menu block, and menus can be themed as desired.
- Each level of the tree provides an element in the full URL of a given container.
- A granular permissions system:
- uses a Unix-like system of dependence, where a given user's ability to access one level of the tree depends on his ability at the parent levels; newly-added nodes inherit the permissions of their container, by default
- each container in the tree has separate settings for "who can edit its settings or delete it", "who can add sub-pages", "who can assign Drupal nodes to the container", and "who can read Drupal nodes in the container".
- includes three types of groups: pre-defined (where the member list is generated by a SQL query), ad-hoc (access to a single container), and manually edited (where one or more permitted people control the membership list). The ability to edit this last kind of group is, itself, controlled using the same groups-based permissions model. This allows maintenance of access control lists to be distributed to any number of trusted users.
- because this scheme does not use Drupal's built-in grants tables, it scales well to many thousands of users, groups, and nodes
- Menu settings, allowed themes, and allowed node types can be assigned per container, and cascade downward in the tree.
- Each user has his own "homepage" space where he can create new containers and content
- Based on user feedback, we found it best to change certain terminology, and remove a few node options, thus simplifying the interface a bit. This would be optional, were we to release the module to a wider audience.
I've recorded a ~10 minute screencast which runs through most of the features discussed above, which you can review here.
We've also done a lot of work on our own profile module (eduprofile), which draws on our backend (Datatel) to display users’ biographical, curricular, and personal information. It lets them edit various portions, depending on their role, and choose which other roles can see each portion of their data. An important distinction is that these are not Drupal roles, they're created dynamically from institutional data.

Areas we've struggled with:
- search. We've researched integrating with a Google Mini and, once time permits, will go that route. For now, we're not too happy with our search relevancy, and we're only searching across publicly available content.
- data integration. This has nothing to do with Drupal per se, but in terms of time spent, it's been one of the largest time sinks for us.
- We had to touch core. We have to do integration work when we adopt modules from contrib. We were able to back much of our code out of core when we ported to Drupal 5, and we're hopeful we can back all the way out when we port to Drupal 6 this summer.
What we're working on now:
- Moving the last of our old, static content into the system
- updating our codebase to Drupal 6
- calendaring for all users, built using a customized version of the events module
- quiz tool and gradebook to supplant most of the remaining Blackboard use on campus.
- migrating our library site
- enhancing our portal to incorporate more features (calendar display, profile management, etc.)
- integration with Views and CCK. When we started these tools didn't fit our needs. They do now.
At present both of our modules are tightly coupled to our Datatel implementation. At Drupalcon there was some interest in how our system worked. We also attended a session led by the Development Seed folks where they presented an alternative approach to some of the issues we worked to resolve, and were struck by one of the things they said at the end, which (paraphrasing) was, “So, we invented a solution off on our own, and now we want to know what the Drupal community thinks of it as an approach.”
We have the same question. We could work to decouple our code from Datatel and share it, but that represents a significant time investment for us, so we're curious to hear whether folks have more than an academic interest in what we've built.
Beyond this case study, after we've finished our migration to Drupal 6, we'll put up a test machine so folks can kick the virtual tires and get a sense of how this works. At best we'll get to that early this summer. In the meantime, I am happy to answer any questions folks have, and if needed I can screencap/screencast additional aspects of the system. We can also work to get a case study of monster menus with more detailed information on how it works up on drupal.org if folks would find that useful.

Comments
Amazing work
You've done great work solving all the problems I've had with Drupal when I was trying to implement it at our university department: http://research.edu.uea.ac.uk. Drupal's inability to deal easily with hierarchical content and provide more granular per node permissions to large numbers of users has been a major obstacle. Of course, I didn't have any development resources, so my solutions was mostly workarounds using OG and the outline module but your solution looks much more sustainable.
I have no doubt that if you released your modules, more universities would jump at Drupal. I'm currently advising another local school and I will be urging their developer to get in touch.
Dominik Lukes
http://www.bohemica.com
http://tuit.glottalstart.com
Dominik Lukes
http://dominiklukes.net
@techczech
define hierarchical content....
Do you mean within a node? or handling nodes that have parents and children in a book fashion? If you mean the latter then check out http://drupal.org/project/outline_designer
Or if you don't mean that then completely disregard this post :)
Ex Uno Plures
http://elmsln.org/
http://btopro.com/
http://drupal.psu.edu/
Thanks, I was playing with
Thanks, I was playing with the outline designer and it's great. What it's missing, however, is the functions you'd expect from a section manager - namely a permissions inheritance. That's what made this demo so exciting.
Dominik
Dominik Lukes
http://www.bohemica.com
http://tuit.glottalstart.com
Dominik Lukes
http://dominiklukes.net
@techczech
It is planned...
We are planning to add both inheritance functions and permissions editing. This module got me pretty excited when I saw it at drupalcon so I wanted to see if we could incorporate their method of permissions per node instead of writing our own method to do it. So...needless to say i'd love to integrate my project with theirs if they decide to get it out there :)
Ex Uno Plures
http://elmsln.org/
http://btopro.com/
http://drupal.psu.edu/
A lot of this might be done...
Check out the skeleton module, and see if there's any code you can borrow from here: http://drupal.org/project/skeleton
Cheers,
Bill
FunnyMonkey
Tools for Teachers
FunnyMonkey
Wow
I didn't think anyone ever used that module :-)
Skeleton outlines creates reusable "dummy" book outlines, which can be pre-configured with content. It would be useful if, for instance, you wanted to create a book for each department, which had the same structure every time.
--
http://ken.therickards.com/
http://savannahnow.com/user/2
http://blufftontoday.com/user/3
--
http://ken.therickards.com/
Great job
Many thanks for putting this up. I have recently been hired to redesign a college website and have decided to use Drupal, which I am new at. One issue I have run up against is that the school uses Datatel and I have not figured out a way to integrate that with the web site I am creating, other than having to Datatel push a bunch of data into a MySql database, which is not an ideal solution. Anything else you have to offer in the way of specificity as to how you integrated the two would be greatly appreciated.
Actually, having Datatel
Actually, having Datatel push data into MySQL is pretty much the route we took :-(. It's not pretty, and there are lots of places where it can go wrong, but it does work.
(By "we", I mean "we at Amherst College". I work for David, the original poster of this thread, as one of the programmers on this project.)
Might want to check with Datatel
I worked at Datatel for 12 years and knew that they had run Colleague on MySQL - not sure if they blessed that version or not.
Impari Systems, Inc.
http://www.imparisystems.com
Impari Systems, Inc.
http://www.imparisystems.com
Thanks.
As Gribnif says, we're basically just having Datatel push data out to Mysql, actually in a roundabout way - Unidata->MSSQL->Mysql is the complete path. Datatel recently told us they're going to focus on MSSQL as their primary database engine and we're going to undertake the migration path they're providing. For perhaps the first time in my career I'm happy to hear something is moving to MSSQL, because it will ease some of the data integration work we've had to do.
In terms of other specifics, we never push data back into datatel - we have a one way connection. We actually (this is pretty embarrassing) have staff re-key data back into Datatel to handle things like alumni address updates, email address changes and so on. This has nothing to do with the technology, it's a policy issue at the college. We had to jump through a lot of hoops to deal with this. I can descend into detail if you'd find it useful.
I'd want to see a demo that
I'd want to see a demo that I could play with but I'd definitely be interested in it. I think once you have a demo out you'll get more people saying more definitively whether they want to jump on board fully or not. I'm more then interested in at least seeing how you handled cascading permissions and things like that, even if it's not as a full fledged d.o module / project. Gona watch the screencast here shortly though documentation and videos can only take people to that "cool I want it!" stage where as a demo would take them to the "GIVE ME IT NOW!" stage of excitement :)
Great work!
edit after watching video
I think it could benefit us both to merge some aspects of your project with one that I'm developing. We're starting to look at adding cascading permissions and a few other cascading effects to the outline_designer module. I think it would be awesome if you could visually move containers / create sub-content dynamically with our module and then integrate it with some of the features you've demonstrated here so that permissions / theming / settings could be done on the fly via the context menu. http://drupal.org/projects/outline_designer
This is somewhat educationally focused (or was at least) so any thoughts about that idea?
Ex Uno Plures
http://elmsln.org/
http://btopro.com/
http://drupal.psu.edu/
URL update
Small type: here's the URL for Outline Designer: http://drupal.org/project/outline_designer
merging projects
Hi,
We love the outline designer, it's really great work. Unfortunately I'm not in a position where I could allocate engineering resources to it - basically we have an up and running UI that we've invested 2 years into, with all the training and user acculturation that entails. Your UI is superior to ours by far, but several thousand users know how to use what we have at this point. I won't be able to give it a significant overhaul for at least a couple of years.
That said we're happy to find a way to share code if you'd find it useful, in terms of how we managed the cascading of permissions, themes, settings, allowed node types and so on. We've just begun the process of migrating to Drupal 6. Once that's done we'll know if we've been able to back all the way out of core, and if we have it should be much easier to share what we have. I have my fingers crossed ;-)
That's cool, what I was more
That's cool, what I was more so hoping was that maybe once you release your module (fingers crossed) I could then snag it and see what I could do with joining them or providing linkage in outline designer to the functions in your modules. Typically the way we've operated with UI improvements / changes is when they are completely different from the original technology we leave the old one in place and then also provide our 'new' view of the data to give power users / ones that want to learn that option. Guess we'll just wait and see if / where this goes. My department is very interested in using this or talking to your people about this ;) .
Ex Uno Plures
http://elmsln.org/
http://btopro.com/
http://drupal.psu.edu/
Very much interested.
I work with the College of Education at the University of Illinois. We very much appreciate the write up. Sorry for the delayed response, we just did a one day bootcamp.
We can very much use the inheritable permissions and would love to see your code.
Our security groups come from a variety of sources and are reconciled between DB tables and Active Directory with a scheduled script; so we can expose them to drupal via ldap, sql query, or webservices if need be. So we could easily work within your three types of groups rewriting the sql queries for pre-defined and using ad-hoc and manually edited functionality alone.
We are very hesitant to edit the core or have to rework security in other contrib modules as our move to Drupal is partially to cut down on maintenance issues. After you move to Drupal 6, I believe we could commit some time to helping decoupling from datatel. As we don't use datatel at all we would certainly be a good test case.
Our current homegrown system has content inheritance also. Certain content types are inherited down the tree until they are overridden. And the breadcrumb and menu cascade until a node is marked as a "unithome" similar to how your menu system resets itself at points. I'm looking around for this functionality though I can see it as a performance problem. Ideally it would be a checkbox you hit when creating a new content type or CCK field: [x] Make inheritable from parent nodes
John Barclay, College of Education, University of Illinois
www.johnbarclay.com
I'll report back when we get to 6.0
Hi John,
I'll be sure to post back once we're updated to Drupal 6. We're hopeful we can back entirely out of core during the upgrade.
Terrific case study! Thanks
Terrific case study! Thanks for the writeup.
Someone can make it
Hi Moshe,
You're welcome. Sorry it took me a bit to get back to you. One way or another either myself, Dan (gribnif) or both of us will come to the April 23rd meeting. We can run through how the system works and discuss the other issues you raise. We're right in the midst of porting to Drupal 6. You can also feel free to contact gribnif if you want a more technical rundown on how monster menus works.
This is amazing
This is an awesome thing. I'd love to make use of it for my Student Government website at a university that I'm going to be recreating throughout this summer.
Unfortunately it won't be available in time...
Hi,
Thanks. Unfortunately it won't be ready for you to use this summer. We're in the midst of porting to Drupal 6, and trying to get a sense of what the module looks like after we've done that. The earliest I could imagine this turning into a contrib module would be some time this winter based on our current timelines. Sorry about that!
More info please!
Monster menus appears to solve several of the problems that we are facing at the California Science Center as we look at transitioning to a Drupal based web platform. Namely, how to have the same node appear in multiple locations within a defined menu hierarchy, and how to give users varying permissions based on a nodes location in said hierarchy. We would love to get more information about the module.
Also, could you provide a simple list of all the modules you're using on this site, just for reference? Perhaps noting which ones are home grown or needed heavy modification? Thanks!
Sure thing.
First - the list of modules we're using:
Amherst modules that are either built from whole cloth or based on things from contrib:
Depends on: Monster Menus (enabled), Amherst Profile (enabled)
Depends on: Monster Menus (enabled)
Required by: Academics (enabled), Payment (enabled), Reunion Registration (enabled)
Media 5.x-1.2 Allows uploading of media and inserting media into content.
Depends on: Monster Menus (enabled), TinyMCE (enabled)
Required by: Academics (enabled), Amherst Profile (enabled), Media (enabled), RSS Page (enabled)
Depends on: Amherst Profile (enabled)
Depends on: Amherst Profile (enabled)
Depends on: Monster Menus (enabled)
Core -optional:
Required by: Forum (disabled)
Required by: Forum (disabled)
Other:
Required by: Media (enabled)
We're also running the devel module.
In terms of more info, perhaps I can answer questions you have? I'm not sure where to descend into detail. I can also ask one of the developers to poke their heads in and talk a bit about the mechanics of how we built this if that's what you're after.
Great to find your article -
Great to find your article - thanks for the detailed write-up. I too found Drupal confusing at first because of the lack of an 'out-of-the-box sophisticated hierarchical content authoring with permissions control'. I finally wrapped my mind around the organic nature of Drupal and have used a combination of modules to produce the effect of hierarchy and I was wondering if you had tried any of these modules:
LDAP - Group permissions - we map our AD groups to roles then control access to content based on roles. I would like to see Drupal provide more granularity at the 'View' content type level as this would solve a bunch of issues.
So I installed:
Taxonomy & Taxonomy Access Control - this allows us the granular access to nodes based on roles and works quite well.
To make data entry easier and more intuitive, I create a content type for each logical type of entry using CCK to extend where necessary:
Content Types - we've defined a content type for each audience (Learners, Staff, Faculty, Alumni)
To give the appearance of a hierachical structure in the URL:
PathAuto - allows us to base URL paths on 'content type/taxonomy path/title'
Which then allows us to display blocks only on specific page types:
Blocks - to display menus and other module results based on the path (which has been defined by audience) ex. Show only on the following pages:
learners*
faculty*
I have also created a few 'Views' to show users their own content that they have created - this seems like a no-brainer that should be there along with 'My Account', 'My Blogs', My Forums etc. - ours is called 'My Content'...
I was just wondering if you had tried any of these methods I guess so I can better understand what prompted you to customize access to nodes? Is it because people are used to working with things in trees and that's easier to understand or is there some other benefit? Maybe I'm just not getting what you were doing but am very interested in your approach as we are about to add Organic Groups and are looking at integrating with Elgg as well. We use Moodle for our online learning platform and Drupal for our websites.
Thanks for sharing - university sites are quite large scale, ongoing projects.
Shelley :)
Scaling
Hi Shelley,
You've caught me just before I head off for a long vacation but I didn't want to leave you hanging. We did look at taxonomy access control. Part of the issue is we started over 2 years ago so some of the pieces you mention were not in place or not yet up to the task, but the big issue had to do with scaling. We have ~10,000 active users out of a potential pool of ~28k users, and we're up to about 36k nodes, and taxonomy access control just didn't scale well. We had to invent our own data structures that could scale adequately. I'll either respond with more detail after I return or one of my colleagues will in my absence.
regards,
Hi Shelley, I'm glad you
Hi Shelley,
I'm glad you were able to find existing modules that meet your needs. We took the approach we did, in part because of what David mentioned (scalability), but also due to a need for ease of use. Our system is open to everyone--including alumni, faculty, and students--to create content.
One of the things we determined early on with some of the solutions you mentioned is that they end up being a little too technical for some users to understand. For instance, unless I'm mistaken, if you create different content types for each area of the site, you then have to depend on the user choosing the correct one from a long list. By contrast, in MM, we are able to have a very limited set of content types to choose from, and we can even limit which types can be applied to a container and it children, to prevent people from doing something we don't want them to.
One other aspect of MM that is very important for us at Amherst, is the ability to distribute control of permissions. We can very easily set up groups that others can modify, without giving them the keys to the kingdom. So, for instance, we can allow the English 101 instructor to say who can read his syllabus, without allowing him to modify the permissions for the other English courses he doesn't teach.
gribnif and davidhamilton
gribnif and davidhamilton presented this last night at the boston users group. thanks guys.
i've cross posted this with the access control group so that they may voice some thoughts.
What are the advantages?
What are the advantages to going this route as opposed to datatels content management system?
At the college I work at they are pushing for datatels cms, I would love to use Drupal instead because it is far more flexible (and cost effective).
Flexibility
In a word. The system we've been building on top of Drupal is flexible and extensible, with a huge support network of folks building cool tools for the platform. The Datatel solution is a canned solution that only meets some of the long laundry list of features we required and has none of that community support infrastructure. It also wasn't a good fit technically (it's a MS/Sharepoint solution, we're a LAMP shop by and large), and it wasn't a good fit strategically (we're focused on open source when we can be).
I have to be candid and say it's not necessarily cost effective - much depends on the IT infrastructure at your institution. We're staffed with developers sufficient to support our development efforts. That costs real money, and for some schools off the shelf canned solutions are a better fit because they're following different staffing models.
Flexibility = Good
Fortunately we do have the staffing to help with development. Long term we need the flexibilitity. It would be helpful if there were a support group for schools that are using Drupal with datatel. Sharing information would bring the costs down for all involved. There is a ton of help and support for Drupal, but it would be great if there were a place for those that are focused on datatel integration to exchange ideas. Frankly I was surprised to find this page. We have been looking at Drupal as a cms but then there was the datatel issue. Currently we have been using CF to pull sqlized data from unidata for course descriptions and faculty office hours, for course schedules we do an automated daily transfer from unidata into mysql. Which works ok but we really need to pull everything into a cms, drupal being the obvious choice for me. Like you I think that the mssql conversion will make life much simpler.
So, is this the place I should come to offer help to others and to get advice? Or is there a well hidden datatel/drupal/cms of choice forum out there?
May be better to create a discussion or wiki page
I'm not aware of any other datatel <-> drupal specific info. It probably makes sense to create a wiki page or discussion topic to handle information sharing on the topic, rather than appending it to the case study's comments. Others may be aware of additional datatel <-> drupal information resources which would be a better fit?
Resources
I know that there have been several schools that started going down the UPortal page to offer some type of coupling. I worked at Datatel for about 12 years and could offer some support and/or insight. I wasn't on the product side, but on the internal apps side.
Impari Systems, Inc.
http://www.imparisystems.com
Impari Systems, Inc.
http://www.imparisystems.com
Thanks David!
I am still in the experimenting stages of working with Drupal 5.7 at Smith College.
Getting started is the hardest part of Drupal. It is so flexible it is difficult to choose a core/module combination. We don't have the staff to write modules so I need to work with what is available.
So many options. cck? vocabulary or not? OG? Pathauto? I'm sure something will begin to take shape as I dig in.
Good luck...don't be shy
Jeff,
Good luck with your new endeavor. Don't be shy about asking for help along the way. There are many talented and generous people in this group who will be happy to be a sounding board for you.
Erik
Erik Britt-Webb
drupal@ebrittwebb.com
@jefbak -- If you think this
@jefbak -- If you think this would help, feel free to use the group as a public journal of sorts -- create a wiki page, or create multiple discussions, and lay out any obstacles/questions as you encounter them.
A lot of people here are likely attempting to address, or have addressed, similar issues -- while you are getting the support you need in building out your site, you will also be creating a roadmap for others working on similar issues.
Cheers,
Bill
FunnyMonkey
Tools for Teachers
FunnyMonkey
share your modules?
David, any chance you would contribute what looks like an awesome set of 7 or 8 useful modules? And if not official drupal.org contrib, maybe just provide links to them?
Margie
yes, but it's complicated
We're happy to share, but there are some complex issues we need to solve. The first is that we're tightly coupled with our data structures and back end at present, and don't yet have the time to decouple - in fact this case study was posted in part to help me build a rationale for getting the resources I'd need to get our code decoupled. The second and more troubling issue is that we had to touch core to build this. If we bundled our modules up into a 'distro' it would cause trouble for folks trying to run our code, because it would limit their choices in terms of contrib modules they could deploy - any module that touches on node access control has to be modified in order to work with monstermenus, our key module which handles hierarchical access control and content creation. The changes are usually trivial, but they go beyond the typical 'install module and configure' and would limit the audience for the tool.
For the first point, I'm making some progress. I'm getting more resources this year (ie positions) which should free up some time, and I have buy in from my boss.
The second point is the harder one. We're mostly migrated to Drupal 6 at this point, and we were not able to back out of core. We don't want to release this in a state that will end up causing more problems than it solves. On this end of things, we're working to get the word out about what we've done and trying to gauge the community's interest in making some minor adjustments to how node access control works. At a recent Boston user group meeting there was some sense that this might be possible and worthwhile, but it's going to be some time yet for this to work itself out, and it's hard for me to say how it will ultimately play out.
All of this by way of explaining that we're not yet in a position to release anything, unfortunately. This summer we'll get a demo machine up that folks can tinker with, and in parallel to that we'll try to get a substantive discussion going about how we might get monster menus working with drupal core.
RE touching core and
RE touching core and releasing code: I agree with this -- anytime a core patch is needed to make a solution run, it makes the solution more complex, which limits the potential adoption of the code.
RE: "gauge the community's interest in making some minor adjustments to how node access control works" -- is there an issue for this? Is this something that could be addressed via http://drupal.org/node/196922 --
There have been a lot of discussions of the shortcomings of node_access over the years.
RE getting monster menus working with core: with your core patch in place, is monster menus something that can be easily installed on any patched site, or are there other dependencies?
Thanks for your detailed writeups/responses in this thread. It was great to hear about this from you at DrupalCon Boston, and to see the discussion continuing in this thread. In short, I'm looking forward to where this leads.
Cheers,
Bill
FunnyMonkey
Tools for Teachers
FunnyMonkey
getting monster menus working with core
Hi Bill,
The only real dependencies are the ones related to our internal data structures, which would be removed for a public release.
The install script would set up a skeleton for a new site, and then it would be up to you to do the more detailed creation of the hierarchy.
Thanks for the update
I've been interested in this since hearing David talk about this in Drupalcon --
I'm excited to see the code that comes from this --
And with that said, take your time :) You are doing some very interesting, useful work, and there's no sense rushing things.
Cheers,
Bill
FunnyMonkey
Tools for Teachers
FunnyMonkey
It's great! I will wait
It's great! I will wait for...
Yes, separate monster menus
While all the Amherst specific work may not apply to other schools, the monster menus module would allow others to build their own content with the granular, cascading permissions.
Does anyone know of a module
Does anyone know of a module in Drupal that can be used for lesson plans & objectives?
Re: lesson plans & objectives
I'm not sure if there are modules specifically focused on lesson plans, but some work with CCK would certainly get you started.
You might also want to take a look at How to build a learning repository on Drupal (5.x), or L&S LessonShare, both of which use Drupal and a collection of modules for sharing and discussion of lesson plans and teaching materials. We're in the early stages of putting together a guide to building LessonShare, which might also be worth a look as you get started.
Good luck!
Doug
~~~
doug worsham
http://lss.wisc.edu/~doug
http://unionblend.uniblogs.org/
Thanks for your advice
Thanks for your advice Doug.
I tried to check out the jem-thematic.net site but it seems to be down.
Re: Thanks for your advice
Hmm. Perhaps their site was down yesterday?
It looks like it is working this morning, at least. Maybe try this link.
Good luck!
Doug
~~~
doug worsham
http://lss.wisc.edu/~doug
http://unionblend.uniblogs.org/
Re: Thanks for your advice
Hi all,
Our server at jem-thematic.net was down yesterday due to a service crash. The website should now be up and running smoothly, if you have any problems accessing it just post a reply on this.
Best regards, Andrew
Thanks Andrew and Doug for
Thanks Andrew and Doug for all your assistance. I appreciate it a lot.
The site is working fine for me now.
Monster Menus look great
I'm trying to get a new Web site launched for the (very) small college I work for (www.ucollege.edu). The current site is several years old and doesn't do half the things we want. Anyway, we're so close to having Drupal configured to match our needs except for this one huge issue: menus. We've been pulling our hair out over what to do. The Monster Menus module looks perfect. I would love to see the source and see if we could get it to work. I definately think releasing this as a contrib module is a great idea and plays into that whole service thing higher education institutions say we value.
Integated knowledge environments: the big picture
It's clear that this discussion has struck a chord, and that's there real interest in this kind of work for higher education.
However, for many institutions, such a cross-departmental integration requires the buy-in from senior staff and faculty.
For that reason, we've begun a collaboration to envision the big-picture benefits for undertaking such an initiative, oriented toward the perspectives of our strategic leadership.
http://sites.google.com/site/ikeproject/home
http://groups.google.com/group/ikeproject
I hope you'll contribute.
-Jay Collier, Bates College
http://www.jaycollier.net
Issue posted for node access changes
Hi folks,
Per suggestions from various people, we've filed an issue related to proposed changes to node_access/hook_nodeapi which would, if accepted, would facilitate our releasing 'monstermenus' as a standalone module. For those interested, you can take a look:
http://drupal.org/node/272472
For those in a position to contribute we'd love the help selling this idea to the community, or, barring that, using it as a way to jumpstart an evolution of node_access/hook_nodeapi that puts us in a position to release what we've developed. Thanks kindly for all the interest and encouragement.
how does this compare
how does this compare to http://drupal.org/node/196922 ?
Does this also address the issue of allowing multiple forms of node access control, or are these two separate issues?
FunnyMonkey
Tools for Teachers
FunnyMonkey
Eduprofile
Would you be willing to release or share your eduprofile module?
Database hooks to MySql
Hello,
I have been following this thread for a while with great interest. While I look forward to playing with whatever modules you release for Drupal 6 educational users, I am currently creating a website for a small college and was wondering if you could give some hints for where I can start now to hook the college data, in MySql, to my Drupal site.
I am hoping to learn how to grab a list of faculty members and a list of courses from a MySql database and automatically create nodes for each that can be edited later. My guess is that I would have to merge the database into my Drupal site database and then find a module that would be triggered to create nodes based on the new records.
Any thoughts as to how I can proceed would be appreciated. Thanks.
Cheers,
Stephen
One of the beauties of drupal....
....is how flexible it is. This has the unfortunate side effect of making it difficult to give you a single answer to your question. There are a number of strategies you could use to do what you describe.
If you have some skill in PHP you could write your own module to sync against your external SQL tables, using cron to invoke the sync process, and cause the creation of nodes on the basis of criteria (things like: for each course in the english department, create a course info node, an enrolled students node, etc). You could use drupal roles to control who gets editing permissions on the different types of nodes you create, and you could use the book module coupled with taxonomy to create a 'heirarchy' for the content you're creating.
If you're not a php coder, you could take a look at views 2 and CCK. I'm not as well versed in this model as others, but the gist would be to use CCK to create custom content types (things like, say, a faculty page, a course page, etc) and then views 2 to show things (a listing of courses in the english department, a list of faculty teaching in english, etc).
In terms of where to start, if you don't have PHP development skills, I would recommend taking a look at some Views 2 and CCK tutorials and the documentation. From them you should be able to figure out if Views 2 can do what you need. If it doesn't, well, it gets trickier. Happy to follow up as need be though, and hopefully others will as well.
Anyone considered using Xaware?
I've just started looking at Xaware, a java-based xml-oriented data integration web service development kit (http://www.xaware.org) as a tool for integrating into Drupal other database-driven apps like Moodle. I'm pretty new to Drupal, and after working my way through installing and configuring the modules for embedding Knowledge Tree, Gallery2 and G2Image for fckeditor and tinymce, I found myself thinking there has to be a more general, abstraction-layer approach to embedding these database-driven apps into Drupal.
And it seems to me that there are two aspects of any embedding of another app into Drupal:
1) Identifying and/or carving out semantic entities in the app-to-embed and building Drupal Content Types and Views to represent them and their inter-relationships
2) Mapping and syncing data btw its database and Drupal's
So then I discovered Xaware, which would allow us to use its GUI designer tool to build web services that query data from any data source (relational db, spreadsheet, cvs file, etc), map it to Xaware's internal XML database definition language, transform that data as needed to match a different target database schema, and insert/update the data into the target database.
Synchronizing Drupal with Moodle, for example, would be achieved by building web services in Xaware that sync whatever we choose to sync btw their two databases, and writing a Drupal module for the sync that uses these web services instead of ad hoc coding the database translation in raw PHP or going through laborious intercept hooks that may or may not exist in the app to be embedded. This would help dissolve the cross-adoption learning curve barriers among developer communities of different open source apps. I'm concerned that we're are seeing increasing feature-and-function encroachment between leading open source apps that were originally and primarily designed for distinct functional applications.
Content management and learning management, for example, butt knees and elbows at social networking, user and role management and knowledge management. Drupal and Moodle come at this functional intersection with very different motivations, strengths, weaknesses and dependencies. Neither force-fitting one into the other nor reinventing the other where they meet makes much sense.
But Drupal is general and Moodle is specific, so Moodle can be embedded semantically within Drupal, and not vice versa. Drupal can theoretically manage teaching and learning processes every bit as well as Moodle, but it doesn't and never will. That's because there are way more Moodle users and developers demanding and supplying implementations, elaborations and revisions of it for educational purposes than there are for Drupal. And there is less resistance in Moodle core to education-specific revisions than there is in Drupal core.
So Moodle will always flex and mutate itself in core more willingly to meet the real-time demands and priorities of the education market than Drupal will ever be allowed to, or ever should be allowed to. Drupal's inertia lies rightly along its core trajectory - even-handedly and open-endedly managing varieties and complexities of semantically-chunked data processing needs with ever-increasing genericy. Hence the trajectory into RDF, the semantic web and the rapid evolution of the book type module into a general outlining feature in core.
Drupal is a semantically generic solution - it aims to manage any kind of content for any kind of purpose. Its user base is anyone who needs to manage data semantically. Moodle is a semantically specific solution because it responds to a specific, though wide-ranging and dynamic, problem - how to manage teaching and learning processes. Its user base is limited to folks trying to manage learning, a very small subset of Drupal's user base.
So as i see it, Moodle is already a module waiting for a content management system to plug into. Same with Gallery2, Knowledge Tree, Elgg, MediaWiki, egroupware, etc. All that remains is to accomplish steps 1) and 2) above, semantic mapping into the CMS and database schema translation and synchronization to parametrize that semantic mapping.
So I can sort of envision a drupal module that provides a GUI toolkit for defining Drupal content types to map out and model the semantics of any semantically-specific application, and which then creates the content types and builds Xaware web services to sync them with the data structures they model in the embedded app. This would be a general-purpose integration module.
But a first step for proof-of-concept would probably just be to build a Drupal module that uses hand-made Xaware web services to embed a core portion of the semantics of an app like Moodle. This would just be a way of simplifying and streamlining the process of building Drupal modules that embed other apps, because Xaware replaces the ad hoc PHP database drudgery.
I don't have much time to work on this, but I'm tossing the idea out here for feedback. Anyone see any problems or major issues that might make this difficult to achieve or less than desirable?
XML/Web Service API for Drupal
Just some short remarks:
1) I agree that Drupal needs more/better APIs for importing/exporting content (nodes), see http://drupal.org/project/node_import, http://drupal.org/project/docapi or http://drupal.org/node/135530.
2) I have just read "Learning Drupal 6 Module Development" by Matt Butcher who describes implementing a web service with JavaScript and JSON in pure Drupalish so another software layer (Xaware) might not be necessary.
http://www.packtpub.com/article/drupal-6-module-development-table-of-con...
Frank
Frank
My LinkedIn profile
e-reserves
What is an e-reserve? Thanks.
Stephen
reserved readings
Sorry, I should have avoided using jargon. An e-reserve is a reserved reading for a course, delivered electronically. Increasingly this is how we're delivering required readings to students.
Any updates?
I wondered if you had any updates on sharing your code (either monster menus and/or eduprofiles)?
Thanks!
Sort of, yes
Hi,
Sort of. We get a lot of requests out of this posting, and I finally got some sample code up here:
http://www.amherst.edu/~dhamilton
Apologies if you're one of the folks who emailed me directly about this (pretty sure you were) - I tried to get back to everyone but probably missed a few folks.
Sometime this fall I'll update this case study to incorporate all the changes we introduced this summer (update to D6, new features etc), and we're still planning on getting a demo server up and running so people can play around with it. Meantime the code can be grabbed from the link above.
Thanks
This is great ... have been curious about your implementation.
Demo server available
Hi folks,
Nothing ever happens as quickly as you'd like, but I do have a couple of updates to post.
First, there's now a demo server running which folks can use to get a feel for how our site works. It's protected by both basic auth and drupal's normal authentication. To get to the machine:
https://wsgdev2.amherst.edu
u:test
p:tester
Once there you'll find several role-based account/password combos available so you can test from different perspectives. There's not much in the way of documentation, for now you can use the documentation from our live instance to give some clues as to how this works:
http://www.amherst.edu/help
Second: We think we have finally managed to completely back ourselves out of core. This should make it possible for us to make MonsterMenus available in contrib. If you're interested in seeing the code before then, it's available (unsupported, undocumented, not kept in sync with our release version) here:
http://www.amherst.edu/~dhamilton
Sometime this summer/fall we'll have an SVN repository folks can use to get at the code. I'll post back here as soon as that's available.
Help with code archive
I am really excited by these modules. After months trying to cobble together the functionality I need out of a number of modules (not satisfactorily) this appears to offer the functionality and usability that I need. I've spent some hours exploring your test site, and I'm really liking what I'm seeing!
I'm interested in poking around the modules in their unsupported form and trying them out in a development instance, but... sorry to seem dense, I'm having trouble extracting the amherst-modules-090414.tgz archive. There is a 2.7 mb binary file inside called "amherst-modules-090414" that I'm not sure what to do with.
[edit] Never mind - for some reason Ark refused to open it, but when I first extracted the tar file with PeaZip in Windows, then Ubuntu-Ark was able to extract the contents of the tar file.
updated release
I posted an updated release of the code this morning. This version still depends on changes to core and is made available just so folks can get a sense of how this works - as soon as we've thoroughly tested the dependency free version I'll post here.
The most recent release does not include the eduprofile components to simplify things.
updated release
I posted an updated release of the code this morning. This version still depends on changes to core and is made available just so folks can get a sense of how this works - as soon as we've thoroughly tested the dependency free version I'll post here. As in the past you can download it here:
http://www.amherst.edu/~dhamilton
The most recent release does not include the eduprofile components to simplify things.
Bad tarball?
[ ken ] : tar -xzf amherst-modules-090610.tgztar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: Error exit delayed from previous errors
--
http://ken.therickards.com/
--
http://ken.therickards.com/
Well, this is not a tarball... But I have opened it
I've opened this archive and you can do this too.
You have to use WinRAR archiver, see http://rarlab.com/, you do not have to buy smth, it has trial version too, just download and install.
And David, can you please tell us, how close are you to the public release of this great thing? Thank you.
Apologies and update
First - Ken, apologies on my end. Forgot to circle back and respond to you here after I first saw your message.
Next - Best guess on the tarball problem is its a mime type issue with the apache sever delivering the file? (we don't manage that box) Gribnif is producing them either from the centos box where the repository lives or on his mac. I have no trouble opening them on the windows and mac machines on my desk using 7zip on windows and the built in archiver utility on the mac.
It's kind of a moot point though because we discovered some privilege escalation issues with the code we posted, which caused us to have to move our patch back into core. That's the bad news. The good news is this (absolutely fantastic) patch:
http://drupal.org/node/537862
allows us to permanently be out of core, meaning we can release monster menus as a regular contrib module for D7.
Sorry gigabit, I wish I had a quicker date for you. There's one other school already running the code we have now - if you're really anxious to start using it maybe we can work something out. Meanwhile gribnif's been working on the code, modularizing it and developing an API for it. It should be in good shape in time for a D7 release.
Great. Can help.
We are working on a our college's CMS and this is just what we need. Let me know if I can help by testing the install, writing simpletest test cases, documentation etc. We have both Drupal 6 and Drupal 7 environments.
Do you have a project space on drupal.org yet? Thanks again for all your write ups, demo site, etc.
www.johnbarclay.com
Thank You
Excellent work. I have just rolled a small boarding school's intranet site using a host of module work-arounds in order to control for permission issues and content handling, but clearly the edifice you've built around monster menus is a robust and elegant manner to deal with the concerns of educational sites. I am very eager to play with the D7 module when it arrives. Thanks!
Looking for the next post
I am an adhd boarding school teacher and at the same time I am attending tutorial in drupal. Because for me Drupal is an open source software that is used manage and organize content on the websites.
How to install this?
Can't install. Have error while installing it :
Fatal error: Call to undefined function mm_content_update_parents() in /Desktop/coolStack/webstack1.5/var/apache2/2.2/htdocs/test/sites/all/modules/monster_menus/monster_menus.install on line 47
Hi, Sorry - the code is more
Hi,
Sorry - the code is more of a prototype than a working system, but you could try adding this line to monster_menus.install, before the call to mm_content_update_parents():
require_once "mm_content.inc";
best of luck,
Hi! I add string require_once
Hi!
I add string require_once "mm_content.inc"; before the call to mm_content_update_parents():
But now i have another error:
Fatal error: Call to undefined function mm_ui_mmlist_key0() in /var/web/test2/sites/all/modules/monster_menus/mm_content.inc on line 1113
Drupal 7 Version
We're in the architecting stage of a migration of the American Libraries Association sites to Drupal (from serena collage). Monster menus seems like a nice match for the site security because of its delegation, inheritance, and performance functionality. We are starting out with Drupal 7. Do you have any plans to release this as a contributed module and or migrate to drupal 7? Is this something we could help with if we decide to user monster menus?
www.johnbarclay.com
Yes, yes, and yes ;-)
Hi John,
We do plan to migrate to drupal 7, and once we've done so, release MM to contrib, because it will finally allow us to be out of core. The timeline is the only issue - at earliest we would be looking at this summer. We'd love help with migration. We're already partnered with one other school that's been contributing patches back and have several others testing things out. Happy to have a more substantive conversation on the issue via phone/email etc.
Thanks for the interest and the offer,
College using one system
I may be living in a dream world but I would LOVE to see a Drupal College Setup. Basically (if Drupal can handle it - which i think it can)
Am i living in a dream world (if i spun a totem would it collapse?)
I don't think it's a dream
I don't think it's a dream world request, but it would entail a lot of work and perhaps not end up being as efficient as one would hope. Right now I am using Drupal as the Content Management/Event/Notification/Forms system for a college prep school and it works well in that capacity. I have not progressed to incorporating the SIS portion of our operation into Drupal, nor the finances, though this really comes down to complexity of information transfer and office politics. The biggest issue for me has been tuning the permissions for multiple departments and individuals with varying levels of access (students, teachers, departments, staff, admissions, etc). I have a number of modules working at multiple levels to handle access and the complexity of the setup creates some issues in regards to streamlining how things work. I am pleased enough to proceed with using Drupal 7 and to suggest that we push to incorporate more into the system, but I am still wavering over incorporating the SIS portion and finances, I would want very solid modules behind them. If you find any, let me know! (MM, my Drupal 7 test machine awaits...)
alpha for D7 available
Hi folks,
Bumping this thread in case there are still watchers. We've got an alpha version of a D7 compatible version of this module available now. You can find it here:
http://drupal.org/sandbox/gribnif/1118296
Our timeline is to have this in release to contrib by the end of this summer. There are several schools planning to be live this fall running this. If you're inclined please grab it and let us know what you find.
Thanks,
Excellent stuff David -
Excellent stuff David - thankyou! Will take a look at the code soon.
Which schools?
Thanks. We definately are still interested in this. A big plus to this module is its used by the people who develop it so has less risk of abandonment. In selling it to our IT Group, it would be nice to know which schools are planning to use it since the more buy in the less bugs and longer support life.
www.johnbarclay.com
Current and future...
Hi John,
Currently, these schools are running on the D6 module:
Amherst College
Middlebury College
The Monterey Institute
Middlebury is moving to the D7 version this fall and is heavily involved in its development. Amherst likely won't get to D7 until next summer, though possibly we'll migrate partially in January 2012.
Wellesley College
is moving portions of their site into Drupal using the D7 version of this module this summer (and helping us test it) with a goal of ultimately migrating the rest of their site to it.
Five Colleges Incorporated
is migrating their full site with a launch date of January 2012.
We're in conversation with numerous other schools, but that's it in terms of active or scheduled users. This case study leads folks to contacting me regularly about using this code, and there are several other near term possible users. To date the 'must touch core' requirement has limited the number of schools willing to adopt it. We're hoping that the changes to D7 which allowed us to back out of core can help with that - partnering with Middlebury has been enormously helpful to us and we're hoping to grow the number of partner schools.
Thanks for the continued interest, it's been a pretty long slog since we first started ;-)
How close are you to releasing your college module?
Hi David,
How close are you to releasing your college module? I'm working with a community college district of three schools and would love to learn more about possibly using your work there!
Best regards,
Ben
Ben Fajen
Aeronet Communications
in alpha now
Hi Ben,
It's available for you to grab and tinker with here:
http://drupal.org/sandbox/gribnif/1118296
We're basically in alpha at this point, with one school (Wellesley) in the midst of rolling out content in D7 using this, and several still running on the D6 version. There's a link from the sandbox to a test instance you can also use to get a feel for how this works, though the test instance is still D6 everything is similar. We've been joking internally that we're ready to release when we have someone running this live on D7 - right now it looks like Wellesley will be first at that. We're also missing documentation, something we'll turn our attention to after we get our semester launched here this fall.
In other words, close enough that you could start running it now if you're brave ;-)
regards,
This is excellent! We've
This is excellent! We've installed the D6 version and are trying to become more familiar with it. I'm hopeful we'll be using this on the community colleges project. Thanks for all your efforts!
Ben
Ben Fajen
Aeronet Communications
just realized I don't need to login
Hi David,
I just realized I don't need to login to view the screencast... I'm looking at it now. VERY impressive!
Ben
Ben Fajen
Aeronet Communications
Git Issues
I've been trying to pull down the git file and have received the error:
warning: remote HEAD refers to nonexistent ref, unable to checkout.
Similar issues by Drupal users noted here https://drupal.org/node/1074584 but I'm not sure that it applies in this case.
Either way, eager to begin playing with this, looks good.
Did you specify a branch?
Hi Takaratiki,
Sounds like you have to specify a branch on checkout. For example, "git clone --branch 7.x-1.x takaratiki@git.drupal.org:sandbox/gribnif/1118296.git monster_menus"
There is no "master" branch as yet so if you don't include the "--branch 7.x-1.x", git doesn't know which branch to pull and gives that error. Let me know if that doesn't work for you.
Regards,
Victor
Amherst College
As an additional note to
As an additional note to anyone having this problem: please be sure to copy/paste the entire first command on the download page, found here: http://drupal.org/project/1118296/git-instructions
Session proposed for Drupalcon Denver 2012
Hi,
We've got a session proposal over on the Drupalcon Denver site for monster menus. It's here:
http://denver2012.drupal.org/program/sessions/monster-menus-how-tame-lar...
If you're attending Drupalcon and interested in seeing this, consider voting for this session? If it doesn't come off we'll still send people to the BoF sessions but we're hoping to make a broader presentation of MM this year.
Thanks,
And you can somehow relate mm
And you can somehow relate mm with a standard module menu?
To use a menu of modules a different kind. including dhtml_menu, menu_block
Hi I'm trying to follow the
Hi
I'm trying to follow the threads here. We're using drupal 6 right now. I'm interested in trying out your module. Has your code been completely decoupled from core as of this version? We're not planning to upgrade to drupal 7 anytime soon....
thanks!
nancy
Response about D6
There is no way to completely prevent the need for a small patch to core in D6. However, if you don't apply the patch it's hardly the end of the world. Without the patch, logged-in users will be shown the link to edit content they cannot really edit; MM will prevent them from actually being able to edit the content when they try to do so.
See the installation page, here, for more details:
http://drupal.org/node/1159106
Bingo
"The main thing we needed that Drupal doesn't have out-of-the-box was sophisticated hierarchical content authoring with permissions control" Bingo, exactly what is needed for school or college related sites. I had to change to another cms (but i was new back then) once you get started it seems that nothing can get done without the "sophisticated hierarchical content authoring with permissions control"
-
http://collegespirit.me
This is spam
This is spam.
Please stop.