Hi all, I am Bart, a 4th grade engineering student informatics.
For my final year, I have to make a thesis (graduating project) and mine is titled:
CCMS - Developing a Management System for scientific congresses.
What does this mean? (in essence)
People will be able to upload abstracts, these will be reviewed by the scientific/organising comitee and a few will be chosen.
The chosen authors will be notified and receive a deadline to bring in their final paper.
Then the organising comitee creates a program, with all the speakers, etc...
This goes even as far as regulating the payments on-line.
All this means that there will be a very complex database structure behind this (relational):
- an abstract has many authors
- a paper has many authors
- a user has many roles (reviewer, submitter, ...)
- an abstract has a subject
- a subject can have many contributions
- ...
So here is my question:
Is it possible to write a module to modify Drupal to work with the advanced database, to work with 3rd party applications (scheduling algorithm program's), to integrate an entire reviewing process, etc...
If so, ca anyone give me any pointers?
ps:
I'm not supposed to build one website, using different modules like CCK and Views, I need to deliver an all-in-one package, ready for the end-user to install/configure.
Comments
Well you could make a
Well you could make a all-in-one package and still use CCK and Views. See http://drupal.org/node/159730.
There is nothing in you specification that suggests a need for custom module and using CCK, views and possibly other modules would allow for a more extensible system.
Will I be able to
When CCK is installed, you are able to define new content types, with several fields. (User Reference is a good one for authors of an abstract)
But will I be able to create these content types during installation? The end-user just needs to install the module, without having knowledge of CCK.
Install Profile API
The Install Profile API provides wrapper, CRUD-ish functions for creating Views and CCK content types, so you can certainly use these features as the building blocks for a "one-click install" type of CMS distro. We are working on some similar distributions for common Drupal setups and have had good milage building on the Install Profile API's tools and code patterns (some functions need tweaking, such as theme installation and some taxonomy CRUD).
Once you've got the views, content types, etc. you can certainly extend the user flow, etc. with custom modules. But it would seem a shame to build on a Drupal foundation and not be able to leverage some of its key features.
--
ethan winn
http://www.echoditto.com/
--
ethan winn
http://colab.coop
But is it possible
So are you saying that it is possible to do this, or that it is better to start from scratch?
My knowledge of Drupal is very poor and I have some PHP-programming skills, but I feel that I would be more comfortable starting from scratch.
For example one of te problems that needs solving.
When a person uploads an abstract, he needs to be able to enter a list of authors, this must be done by some sort of autocomplete textfield, but when he enters a user that does not exist, the user needs to be created, so that he exists in the system.
User Flow and the 20/80 Rule
Drupal can't accomplish this specific user flow as-is, but in can get pretty close depending on how much effort you want to put in.
Options 1 (most effort): You can build a module which extends the userreference cck field type to create new users when a username is not found in db.
Option 2: You can use the user-reference out of the box to associate a given node with multiple authors (instead of using Drupal's internal "author" node data field, which really isn't meant to associate a node with multiple authors but instead to track which user actually created the node) and either embed or provide a link to the new user create form.
For me the 20/80 rule (not of economics, but of software) is helpful here: what 20% of a site or software's functionality provides 80% of its use cases? I'm of the opinion that it's a good idea to revise down slick user flows which are not easy to implement on a given platform when that platform will greatly improve the efficiency of a site's key functionalities (browsing, rss, searching, etc.). If following user flow to the letter is very important here, I don't know if I'd recommend Drupal as the place to start if you're not already familiar with it, as most of its value is in modules which provide standard functionality at the expense of complete customization of the flow. You may want to look at MVC packages like symfony or CakePHP.
--
ethan winn
http://colab.coop