Status of this document
Unique URLs are in core as of 1.6.1, implemented better than described in this page
This should be viewed as a start of a specification, and is very much open for discussion. Use comments or edit the document (comments are easier to keep track of, though!)
Problem to be solved
Atutor courses does not have any unique URLs, which prevents them from being indexed by search engines, and also prevents any linking to specific content pages or tools in a given (public) course from other websites. Where you are at in a Atutor install is determined by a user cookie.
Adding unique URLs to all Atutor content will make courses indexable, and expand the potential user group of Atutor, specifically into the lightweight CMS audience.
For more background, see: http://www.atutor.ca/view/16/12245/1.html and http://www.atutor.ca/view/12/12246/1.html (note that after some thinking I've changed my mind in how this should be implemented)
Suggested solution
Pass a course=xx variable at the end of any URL in Atutor, as an identifier in addition to the user cookies. The course_id variable should be on by default.
A typical new URL would then be:
www.example.com/atutor/index.php?course=12
www.example.com/atutor/content.php?cid=175?course=12
(?course=xx is added to all URLs)
etc., for all possible URLs
How it should work
- for public courses: straigth forward. all pages get an unique URL, all are indexable.
- for protected and private courses: all get an unique URL, and users who are not logged in, but referred to a page is
- first redirected to the login / register page
- then redirected back to the referring page
(note: this is allready working for login pages, as you can log in to a specific course with an URL like this: /atutor/bounce.php?course=1 (to log in to the course with id=1 in an install)
Backwards compatibility
I believe this will work the way I describe it below by default, but make sure that old URLs does not break because the new variable is introduced.
Example: Many users link to specific pages / tools in Atutor installs allready. For example we often link to a specific test for a content page using the following URL:
/atutor/tools/take_test.php?tid=170
the new URL for this would be
/atutor/tools/take_test.php?tid=170?course=34
the old links should not give an 404 after the new URL system is introduced, this is why the user cookie is not removed.
Potential issues
What happens if a course is exported and backed up, and the content includes references with the course id property in the URL?
Future development
giving courses a slug, or nicer URLs, could later be introduced by adding a rewrite module. this would (could?) be dependent on mod_rewrite for Apache.
Wordpress has solved this the "typical" way for CMSes, see: http://codex.wordpress.org/Using_Permalinks and the attached screenshot of a Wordpress permalink configuration page. I believe the same principles should be used for Atutor.