Modules that we're using to enable the org->member relationship.
CCK - defines the content types for org and contact
Content profile - associates the contact cck type with users. Had to be patched with this: http://drupal.org/node/425144#comment-3410500 to add a permission to allow content profiles to be administered by roles other than admin.
subuser - allow users to create users under their account, and edit/delete them.
Subuser required two patches to work with content profile. They're both found on this issue: http://drupal.org/node/571660#comment-3984138
Permissions required to get all this working:
views_attach - used to put a list of content profiles on the organization node based on the 'belongs to' nodereference field on contacts.
Active menu trails set by the context module aren't respected by the nice menus module.
I found this patch: http://drupal.org/files/issues/835090-4-context_reaction_menu_trail.patch which told me the right thing to do: write a ctools plugin for context that would expose a reaction for nice menus. However, I didn't do the right thing. It probably took me the same amount of time, but I went and foundI get my active contexts inside the theme function, and set any menu reactions into $context_active_trail. Later in that function, I compare them with the menu being built:
The large majority of the code you see here is stock from the theme function in nice menus - comments in the function body indicate my alterations...
<code>
// look up contexts, get active trail and set into array for later.
$contexts = context_active_contexts();
$context_active_trail = FALSE;
foreach($contexts as $context) {
if (array_key_exists('menu', $context->reactions) ) {
$context_active_trail[] = $context->reactions['menu'];
}
}
foreach ($menu as $menu_count) {
if ($menu_count['link']['hidden'] == 0) {
$count++;
}
}
// Get to building the menu.
foreach ($menu as $menu_item) {
$mlid = $menu_item['link']['mlid'];
// Check to see if it is a visible menu item.
if (!isset($menu_item['link']['hidden']) || $menu_item['link']['hidden'] == 0) {
// Check our count and build first, last, odd/even classes.
$index++;
$first_class = $index == 1 ? ' first ' : '';
$oddeven_class = $index % 2 == 0 ? ' even ' : ' odd ';
$last_class = $index == $count ? ' last ' : '';
// Build class name based on menu path
// e.g. to give each menu item individual style.
// Strip funny symbols.
$clean_path = str_replace(array('http://', 'www', '<', '>', '&', '=', '?', ':', '.'), '', $menu_item['link']['href']);
// Convert slashes to dashes.
$clean_path = str_replace('/', '-', $clean_path);
$class = 'menu-path-'. $clean_path;
backup/*
sites/default/settings.php
sites/default/files/*
Numbers 10 & Psalm 68