Installed Modules
This page should document the reasons why each contrib module has been installed.
Note that some modules are actually packages, and not all individual modules in the package are enabled.
Site Administration
These modules are used only for site administration and site development - they do not affect the "user" view of the site. In general, these modules can be removed from the site (e.g., to improve performance if that is an issue) without affecting anyone except the site admin.
- Administration Menu http://drupal.org/project/admin_menu
Creates a drop-down menu at top of all pages for quick access to all admin. areas on the site.
- Devel http://drupal.org/project/devel
Provides a set of tools for developers - clear cache is especially useful. Can be removed with no impact.
- Masquerade http://drupal.org/project/masquerade
Allows admin. to "masquerade" as another user - for testing how things work from user's perspective.
- Notify http://drupal.org/project/notify
Send an e-mail summary of all the changes to the website. (Although users could be given access to this module, it was installed for the site admin's use only.)
- PathAuto http://drupal.org/project/pathauto
Automates the creation of URL Aliases based on a set of rules. Users do use this indirectly, as it will automatically generate a URL alias for any content they create - but users don't ever see it at work, and the site would work fine without it - the site admin would have to manually generate URL aliases for new content.
- Views UI http://drupal.org/project/views
Provides admin with a nice GUI for creating and editing views. Really necessary, but can be turned off when not in use.
Access Control
These modules provide access control functions to restrict who sees and edits what. Used in conjunction with the built-in access control panel, both to secure the site from anonymous users and to simplify the view of the site for novice users. These module could be removed if the access control function they provide is no longer required.
- ACL (Access Control List) http://drupal.org/project/acl
API for access control to content - allows other modules to restrict access based on userid, role, etc.
- Forum Access http://drupal.org/project/forum_access
Provides access control for individual Forums. The built-in access control allows you to restrict read/write/edit/etc. access by role to the Forums <em>in general</em>, but does not provide ability to set access control for individual forums.i
Lasqueti.ca restricts write/edit access to authenticated users, but does allow anonymous posts in one thread.
- NodeAccess http://drupal.org/project/nodeaccess
Provides very fine-grained control over access to nodes (per-user, per-node). This is used to grant edit access to individual nodes (mostly the site "pages") to a particular user (e.g., they can edit their own page).
- PublishAccess (or see maintained module: http://drupal.org/project/override_node_options)
This is a custom module (written by J. Fall) to add access control to the Publishing Options. Used to allow some users to "Publish to Front Page" for some content types.
Behind the Scenes
These modules are used for automating some of the site building tasks, and creating specific behaviours. Users do interact with these at some level, but not directly - mostly they act in the background. Be careful to understand how these modules are used before removing them - the behaviour of the site depends on them, but they tend to act in the background, so its not always obvious they are at work.
- ImageCache http://drupal.org/project/imagecache
Does on-the-fly image manipulation and caching. Used throughout the site to re-scale images to fit in various locations.
Important: ImageCache requires Clean URL's, and therefore Apache's mod_rewrite module - if you switch hosts, ensure mod_rewrites is on!!!
- ImageAPI http://drupal.org/project/imageapi
Provides api for image handling - used by image cache module.
- JQuerey Update http://drupal.org/project/jquery_update
Provides API for AJAX JStools modules and Lightbox.
- JStools http://drupal.org/project/jstools
Provided client-side AJAX goodness. Currently using Collapsiblock, but will also consider others - very cool.
- Taxonomy Redirect http://drupal.org/project/taxonomy_redirect
Each taxonomy term creates a default "teaser view" page, with the path: taxonomy/term/tid
This module allows you to re-direct links to the default taxonomy term pages to any other path (such as on generated by a view).
This module is used in several places. E.g., Photos uses Taxonomy to create photo galleries (by subject), and taxonomy redirect is used to point ther default taxonomy tid links to the associated photo gallery. Sweet.
- Views http://drupal.org/project/views
This is the workhorse module used to generate nearly all of the sophisticated summaries. It allows you to build, format, and display a custom query. The site could not really function in its present form without it.
- Views Bonus Pack http://drupal.org/project/views_bonus
Provides some additional layout / formatting plugins for the Views module. Primarily used to create "Grid" views, e.g., for photo galleries, etc.
- Views Slideshow http://drupal.org/project/views_slideshow
Provides the slideshow view on the site's front page. This module could easily be replaced by a simpler random image view that only updated on page refresh. It is expensive (bandwith-wise), but it is a pretty trick effect.
Content Types
These modules are installer to allow creation of custom content types (e.g., CCK). The site could not function without these modules as CCK is used extensively throughout.
- Conent http://drupal.org/project/cck
The base CCK module, includes variety of basic field types and Options Widgets.
Includes Nodereference, used to create "context sensitive" views, where a page can pull in other related data that contain a refernce to it. E.g., links photos to their respective "mini-galleries" and news items to their respective pages.
- Date http://drupal.org/project/date
CCK date field. Includes Date API. Used for the Event type and Calendar.
- Image http://drupal.org/project/imagefield
CCK image field. Used for most images in several data types.
User Interaction & Functions
These modules are installed primarily to provide extra functionality to the user.
Custom Modules?
Almost everything I ever thought of has been done in Drupal by someone else - it's a beautiful thing. But there have been a few things I've imagined would be really useful that I couldn't find anywhere...
I'd consider writing these myself one day, if time ever permits...
Expiry Date
This module would define a new CCK date type (using Date API) to define an expiry date for a node. The node owner would get an e-mail reminding them that their node was about to expire, and if no action was taken, the node would simply be removed. This would be very handy for announcements and to create a CCK classified ads module. Code could largely be ripped from ed_classified module.
Replace Title
This module would look for an image in a specific directory with a name "similar" to the node title. If a suitable image is found, then replace the node title with the image. Use hook_node_?
DONE: But code in template.php - need to move it to a custom module.
Publishing Options Access
This small module uses a hook_form_alter to create per-role access rights to elements of the Publishing Options fieldset on the node-edit form. This would allow admin to grant rights to user-roles to, for example, promote to front page.
I have already made a good start on this module and will look to contributing it.
Summary Views Plugins
A View with an argument creates a "summary view" when the argument is missing. The default summary view is simply a list of potentail argument values, linked to their repsepective view "pages". I could only find one example of a customized summary view (Example: How to Display a Summary View as a Mock Menu | drupal.org ). I used this to create the "pop-open" menus when browsing the photo gallery, for example.
I heard a rumour that Views Theming is going to get MUCH easier in Drupal 6, so this may be a wait-and-see.
But there are some other summary views I'd find a great use for:
- Image Gallery - the photo albums and galleries on lasqueti.ca are built with views, using user id, and taxonomy term, respectively, as arguments. The "summary view" is custom coded in the phptemplate file of the lasqueti theme. It would be nice to turn this into a real view plugin that shows the individual gallery views as a Bonus Grid.
DONE: but currently coded in template.php - need to move to a custom module
- List All - it would be nice if the summary view could simply list all of the nodes, with a pager, in some order. This could be as title links only, or as teasers, or, preferably, customisable. To make this work flexibly, Views would have to support a different view-type selector for the summary view.
TRY: Setting the argument option to List All in the View - probably does this?
- Nodes-by-Argument summary - would show all node titles, with links, organized by the argument values (e.g., by the taxonomy tree, for example.) I have written a preliminary version of this module named nodes-by-category. Perhaps directory plugin? or nodes-by-category summary?
Started: custom Nodes-by-Category views plugin.
TRY: Views Group-by to group nodes by term in the summary?
- Single-Node- for views that return just a single node (e.g., random image block), the table or list markup is superfulous and requires special styling to make it invisible. This view simply outputs one node, with no layout formatting.
DONE: custom views plugin written.
Publishing Options Access
Module attached below - install as-per-usual.
This small module uses a hook_form_alter to create per-role access rights to all 4 elements of the Publishing Options fieldset on the node-edit form. This would allow admin to grant rights to user-roles to, for example, promote to front page.
I have already made a good start on this module and will look to contributing it.
I have contacted RobRoy, author of a similar module: http://drupal.org/project/override_node_options
about integrating these two similar modules.
Module Customization
Forgive me Drupal, for I have sinned...
One of the key benefits of Drupal is that you DON'T (usually) need to "hack" away at existing code to customize it - you can use the hook_ and theme_ systems to add your custom code, thus making upgrading much easier. Nonetheless, there were a couple modules that I needed to "hack" a little, just to suit my finicky tastes... These changes now need to be "re-implemented" any time these modules are updated (unless you want the old behaviour to revert)...
- Module File Modification
- notify notify.module changed name on user's tab to "Notify Me"
- ads ed-classified.module changed name on user's tab to "My Ads"
- imce imce.module changed name on user's tab to "My Files"
- views modules/views_node.inc applied patch: http://drupal.org/node/163889#comment-587923
(hopefully this will be fixed in next version of Views)
- views views.module added $view parameter to theme_views_more() http://drupal.org/node/227669#comment-756961
- date date_views.inc added new views filter http://drupal.org/node/230176
- lightbox lightbox2.module theme_imagefield_image_imagecache_lightbox2 altered to use image title as the description text instead of the alt text. Due to imagefield using image filename as default alt text - yuck. Better fix would be to patch imagefield to use title text as default if alt text not set.
Useful Modules?
I have tried to install only modules that I needed to meet the immediate designs I was trying to achieve. In my travels, though, I thought these modules looked very interesting and worth checking out:
- Hovertips and Clicktips | drupal.org - uses JQuery (AJAX) to create nice pop-up or roll-down tips. Really useful for displaying complex information or hiding stuff that's not used much (e.g., hide all comments current user has already seen.
- Panels | drupal.org - provides API and UI for creating sophisticated panelled layouts. With related "mini-panel" modules to add AJAX tabbed panels and carousel panels Mini Panels demo | Wim Leers
- Node Queue | drupal.org - allows you to display items from a "queue" that automatically drops last item when a new one is added. Can be used manually for creating "top 5" type lists, or integrated with actions module to automate.
- module_builder - I install this locally to make custom module development easier. It simple creates a template for a new module based on a few settings. Only useful for developing a new custom module from scratch.
- form_inspect - a companion for the devel module, this is useful if you are working with forms (say implementing a hook_form_alter), and want an easy way to see view the form data structure.
- chipin - for collecting money for a cause ** NOT AVAILABLE in 5.0 YET **
- nodewords - meta tag (description, keywords) for each page.
- rsvp - enables rsvp for events (probably won't work with the CCK event types I defined :-( Perhaps re-develop for CCK date field?)
- volunteer_timeslots - for organising events where volunteers sign up for a timeslot - ditto!
- spam - spam blocking tools.
- taxonomy_access - access control for users based on taxonomy categories.
-taxonomy_role - access control to taxonomy field on node-edit forms. Useful to allow admin to place "hidden" taxonomy term in a node, probably for organisational purposes.
- cck_role - same thing for a CCK field. Could be handy.
- Notifications - a potential replacement / upgrade for Notify and/or Subscriptions?
- Custom Breadcrumb - format breadcrumbs for custom views.