From cbece2bba2b6a61e1ad0d3bc9819277f78e20ba1 Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Wed, 5 Aug 2009 20:18:44 +0000 Subject: [PATCH] web: initial checkin --- web/drupal/modules/logger/README.txt | 11 + web/drupal/modules/logger/logger.info | 8 + web/drupal/modules/logger/logger.install | 238 ++++++++ web/drupal/modules/logger/logger.module | 448 +++++++++++++++ .../modules/logger/patches/flukso.core.patch | 126 +++++ .../menu.allow.display.of.single.tabs.patch | 19 + web/drupal/modules/logger/xmlrpc.inc | 104 ++++ web/drupal/modules/logger/xmlrpc1.inc | 160 ++++++ web/drupal/themes/flukso/LICENSE.txt | 274 ++++++++++ web/drupal/themes/flukso/README.txt | 9 + web/drupal/themes/flukso/comment.tpl.php | 26 + web/drupal/themes/flukso/favicon.ico | Bin 0 -> 1406 bytes web/drupal/themes/flukso/flukso.info | 23 + web/drupal/themes/flukso/icons/calendar.png | Bin 0 -> 775 bytes web/drupal/themes/flukso/icons/feed.png | Bin 0 -> 691 bytes web/drupal/themes/flukso/icons/key.png | Bin 0 -> 777 bytes .../themes/flukso/icons/menu-collapsed.png | Bin 0 -> 108 bytes .../themes/flukso/icons/menu-expanded.png | Bin 0 -> 106 bytes web/drupal/themes/flukso/icons/menu-leaf.png | Bin 0 -> 194 bytes web/drupal/themes/flukso/icons/page_white.png | Bin 0 -> 501 bytes .../themes/flukso/icons/page_white_add.png | Bin 0 -> 641 bytes .../themes/flukso/icons/page_white_go.png | Bin 0 -> 712 bytes web/drupal/themes/flukso/icons/printer.png | Bin 0 -> 804 bytes web/drupal/themes/flukso/icons/user.png | Bin 0 -> 862 bytes .../themes/flukso/images/comment-dark.gif | Bin 0 -> 3861 bytes .../themes/flukso/images/comment-light.gif | Bin 0 -> 190 bytes web/drupal/themes/flukso/images/menu-bg.png | Bin 0 -> 111 bytes web/drupal/themes/flukso/logo.png | Bin 0 -> 1830 bytes web/drupal/themes/flukso/logo.png.large | Bin 0 -> 2398 bytes web/drupal/themes/flukso/node.tpl.php | 22 + web/drupal/themes/flukso/page.tpl.php | 41 ++ .../themes/flukso/screenshot-drupal.org.png | Bin 0 -> 24942 bytes web/drupal/themes/flukso/screenshot.large.png | Bin 0 -> 92894 bytes web/drupal/themes/flukso/screenshot.png | Bin 0 -> 5497 bytes web/drupal/themes/flukso/style.css | 517 ++++++++++++++++++ 35 files changed, 2026 insertions(+) create mode 100644 web/drupal/modules/logger/README.txt create mode 100644 web/drupal/modules/logger/logger.info create mode 100644 web/drupal/modules/logger/logger.install create mode 100644 web/drupal/modules/logger/logger.module create mode 100644 web/drupal/modules/logger/patches/flukso.core.patch create mode 100644 web/drupal/modules/logger/patches/menu.allow.display.of.single.tabs.patch create mode 100644 web/drupal/modules/logger/xmlrpc.inc create mode 100644 web/drupal/modules/logger/xmlrpc1.inc create mode 100644 web/drupal/themes/flukso/LICENSE.txt create mode 100644 web/drupal/themes/flukso/README.txt create mode 100644 web/drupal/themes/flukso/comment.tpl.php create mode 100755 web/drupal/themes/flukso/favicon.ico create mode 100644 web/drupal/themes/flukso/flukso.info create mode 100644 web/drupal/themes/flukso/icons/calendar.png create mode 100644 web/drupal/themes/flukso/icons/feed.png create mode 100644 web/drupal/themes/flukso/icons/key.png create mode 100644 web/drupal/themes/flukso/icons/menu-collapsed.png create mode 100644 web/drupal/themes/flukso/icons/menu-expanded.png create mode 100644 web/drupal/themes/flukso/icons/menu-leaf.png create mode 100644 web/drupal/themes/flukso/icons/page_white.png create mode 100644 web/drupal/themes/flukso/icons/page_white_add.png create mode 100644 web/drupal/themes/flukso/icons/page_white_go.png create mode 100644 web/drupal/themes/flukso/icons/printer.png create mode 100644 web/drupal/themes/flukso/icons/user.png create mode 100644 web/drupal/themes/flukso/images/comment-dark.gif create mode 100644 web/drupal/themes/flukso/images/comment-light.gif create mode 100644 web/drupal/themes/flukso/images/menu-bg.png create mode 100755 web/drupal/themes/flukso/logo.png create mode 100755 web/drupal/themes/flukso/logo.png.large create mode 100644 web/drupal/themes/flukso/node.tpl.php create mode 100644 web/drupal/themes/flukso/page.tpl.php create mode 100644 web/drupal/themes/flukso/screenshot-drupal.org.png create mode 100644 web/drupal/themes/flukso/screenshot.large.png create mode 100644 web/drupal/themes/flukso/screenshot.png create mode 100644 web/drupal/themes/flukso/style.css diff --git a/web/drupal/modules/logger/README.txt b/web/drupal/modules/logger/README.txt new file mode 100644 index 0000000..e3577a1 --- /dev/null +++ b/web/drupal/modules/logger/README.txt @@ -0,0 +1,11 @@ +// $Id$ + +INSTALLATION +------------ +1. install this module in your contributed modules directory +2. add a symlink in the module's root dir to the rrdtool executable + e.g. ln -s /usr/bin/rrdtool rrdtool +3. add following directory structure in this module's root dir + mkdir -p data/base data/night graphs/hour graphs/day graphs/week graphs/month graphs/year graphs/night + +enjoy! diff --git a/web/drupal/modules/logger/logger.info b/web/drupal/modules/logger/logger.info new file mode 100644 index 0000000..fcc8b00 --- /dev/null +++ b/web/drupal/modules/logger/logger.info @@ -0,0 +1,8 @@ +; $Id$ +name = Logger +description = Logs metering values reported through XML-RPC in an RRD database and renders them in different charts. +package = Metering +core = 6.x +version = 6.x-0.2 +dependencies[] = autotimezone + diff --git a/web/drupal/modules/logger/logger.install b/web/drupal/modules/logger/logger.install new file mode 100644 index 0000000..3192a85 --- /dev/null +++ b/web/drupal/modules/logger/logger.install @@ -0,0 +1,238 @@ + t("Contains the Fluksometer device ID's."), + 'fields' => array( + 'device' => array( + 'type' => 'varchar', + 'length' => '32', + 'not null' => TRUE, + ), + 'uid' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'sha' => array( + 'type' => 'varchar', + 'length' => '32', + 'not null' => FALSE, + ), + 'created' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'access' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'version' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ), + 'upgrade' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ), + 'resets' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ), + 'uptime' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'memtotal' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ), + 'memfree' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ), + 'memcached' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ), + 'membuffers' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ), + 'uart_oe' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '5', + ) + ), + 'primary key' => array('device'), + ); + + $schema['logger_meters'] = array( + 'description' => t("Contains the Fluksometer meter ID's."), + 'fields' => array( + 'meter' => array( + 'type' => 'varchar', + 'length' => '32', + 'not null' => TRUE, + ), + 'uid' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'device' => array( + 'type' => 'varchar', + 'length' => '32', + 'not null' => TRUE, + 'default' => '0', + ), + 'created' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'access' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'night' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'type' => array( + 'type' => 'varchar', + 'length' => '16', + 'not null' => TRUE, + ), + 'function' => array( + 'type' => 'varchar', + 'length' => '16', + 'not null' => TRUE, + ), + 'value' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + 'disp-width' => '10', + ), + 'factor' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 1, + 'disp-width' => '10', + ), + 'unit' => array( + 'type' => 'varchar', + 'length' => '16', + 'not null' => TRUE, + ), + ), + 'primary key' => array('meter'), + ); + + return $schema; +} + +function logger_install() { + drupal_install_schema('logger'); + drupal_set_message(t('Created logger module tables {logger_devices} and {logger_meters}.')); +} + +function logger_uninstall() { + drupal_uninstall_schema('logger'); + drupal_set_message(t('Deleted logger module tables {logger_devices} and {logger_meters}.')); +} + +/** + * R5.x update + */ +function logger_update_1() { + $items = array(); + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $items[] = update_sql("ALTER TABLE {logger_meters} ADD COLUMN night int unsigned NOT NULL default '0' AFTER access"); + break; + case 'pgsql': + break; + } + return $items; +} + +/** + * update to run with logger module's 6.x code + */ +function logger_update_6000() { + $items = array(); + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $items[] = update_sql("ALTER TABLE {logger_devices} ADD COLUMN sha varchar(32) AFTER uid"); + $items[] = update_sql("ALTER TABLE {logger_devices} ADD COLUMN memtotal smallint unsigned NOT NULL default '0'"); + $items[] = update_sql("ALTER TABLE {logger_devices} ADD COLUMN memfree smallint unsigned NOT NULL default '0'"); + $items[] = update_sql("ALTER TABLE {logger_devices} ADD COLUMN memcached smallint unsigned NOT NULL default '0'"); + $items[] = update_sql("ALTER TABLE {logger_devices} ADD COLUMN membuffers smallint unsigned NOT NULL default '0'"); + $items[] = update_sql("ALTER TABLE {logger_devices} ADD COLUMN uart_oe smallint unsigned NOT NULL default '0'"); + break; + case 'pgsql': + break; + } + return $items; +} diff --git a/web/drupal/modules/logger/logger.module b/web/drupal/modules/logger/logger.module new file mode 100644 index 0000000..b4e8e7b --- /dev/null +++ b/web/drupal/modules/logger/logger.module @@ -0,0 +1,448 @@ + 'Logger settings', + 'description' => 'Configure settings for logging metering values.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('_logger_admin_settings'), + 'access arguments' => array('administer site configuration'), + ); + $items['logger'] = array( + 'title' => 'your dashboard', // isn't printed as title on the page, therefore resort to drupal_set_title (t('your ecological dashboard')) in ecology_dashboard; + 'description' => 'Configure settings for logging metering values.', + 'page callback' => '_logger_dashboard', //takes the callback from the MENU_DEFAULT_LOCAL_TASK -> lightest level-two menu + 'page arguments' => array('electricity', 'main', 'hour'), + 'access callback' => TRUE, + 'type' => MENU_CALLBACK, + ); + $items['logger/add'] = array( + 'title' => 'add this user to the chart', + 'page callback' => '_logger_add', + 'access arguments' => array('logger'), + 'type' => MENU_CALLBACK, + ); + $items['logger/remove'] = array( + 'title' => 'remove this user from the chart', + 'page callback' => '_logger_remove', + 'access arguments' => array('logger'), + 'type' => MENU_CALLBACK, + ); + $items['logger/unit'] = array( + 'title' => 'change the unit', + 'page callback' => '_logger_unit', + 'access arguments' => array('logger'), + 'type' => MENU_CALLBACK, + ); + $items['logger/electricity'] = array( + 'title' => 'electricity', +// 'page callback' => '_logger_dashboard', +// 'page arguments' => array('electricity', 'main', 'hour'), + 'access callback' => TRUE, + 'type' => MENU_DEFAULT_LOCAL_TASK, + ); + +/** + $items['logger/water'] = array( + 'title' => 'water', + 'page callback' => '_logger_dashboard', + 'page arguments' => array('water', 'main', 'hour'), + 'access callback' => TRUE, + 'type' => MENU_LOCAL_TASK, + ); + $items['logger/gas'] = array( + 'title' => 'gas', + 'page callback' => '_logger_dashboard', + 'page arguments' => array('gas', 'main', 'hour'), + 'access callback' => TRUE, + 'type' => MENU_LOCAL_TASK, + ); +**/ + + $items['logger/electricity/hour'] = array( + 'title' => 'hour', + 'page callback' => '_logger_dashboard', + 'page arguments' => array('electricity', 'main', 'hour'), + 'access callback' => TRUE, + 'type' => MENU_LOCAL_TASK, + 'weight' => 0, + ); + $items['logger/electricity/day'] = array( + 'title' => 'day', + 'page callback' => '_logger_dashboard', + 'page arguments' => array('electricity', 'main', 'day'), + 'access callback' => TRUE, + 'type' => MENU_LOCAL_TASK, + 'weight' => 1, + ); + $items['logger/electricity/month'] = array( + 'title' => 'month', + 'page callback' => '_logger_dashboard', + 'page arguments' => array('electricity', 'main', 'month'), + 'access callback' => TRUE, + 'type' => MENU_LOCAL_TASK, + 'weight' => 2, + ); + $items['logger/electricity/year'] = array( + 'title' => 'year', + 'page callback' => '_logger_dashboard', + 'page arguments' => array('electricity', 'main', 'year'), + 'access callback' => TRUE, + 'type' => MENU_LOCAL_TASK, + 'weight' => 3, + ); + $items['logger/electricity/night'] = array( + 'title' => 'night', + 'page callback' => '_logger_dashboard', + 'page arguments' => array('electricity', 'main', 'night'), + 'access callback' => TRUE, + 'type' => MENU_LOCAL_TASK, + 'weight' => 4, + ); + return $items; +} + +/** + * Callback functions registered in the logger_menu section + */ +function _logger_dashboard($type, $function, $interval) { + watchdog('dashboard', 'arguments: %type, %function, %interval', array('%type' => $type, '%function' => $function, '%interval' => $interval), WATCHDOG_DEBUG); + + if (user_access('logger')) { + drupal_set_title(t('your dashboard')); + global $user; + } + else { //show users who don't have 'logger' permissions icrarus'es chart + drupal_set_title(t("a Fluksonian's dashboard")); + $user = new stdClass(); + $user->uid = 1; + $user->name = 'icarus75'; + $user->timezone = '3600'; + } + + $root_path = drupal_get_path('module', 'logger'); + $graph_path = $root_path .'/graphs/'. $interval .'/'; + $pngid = md5(uniqid()); //generate random numbers for the png chart so that the browser doesn't use the cached one, use cron to clean up the dir hourly + switch ($interval) { + case 'hour': + $data_path = $root_path .'/data/base/'; + $start = 'end-1h'; + break; + case 'day': + $data_path = $root_path .'/data/base/'; + $start = 'end-1d'; + break; + case 'month': + $data_path = $root_path .'/data/base/'; + $start = 'end-60d'; + break; + case 'year': + $data_path = $root_path .'/data/base/'; + $start = 'end-1y'; + break; + case 'night': + $data_path = $root_path .'/data/night/'; + $start = 'end-60d'; + break; + } + + $meter = db_fetch_object(db_query("SELECT meter, unit FROM {logger_meters} WHERE uid = %d AND type = '%s' AND function = '%s'", $user->uid, $type, $function)); + switch ($type) { + case 'electricity': + switch ($meter->unit) { + case 'watt': + $meter->factor = 3600; // 1Wh/s = 3600 W + break; + case 'kwh': + $meter->unit = 'kWh/year'; + $meter->factor = 31536; + break; + case 'eur': + $meter->unit = 'euro/year'; + $meter->factor = 5361.12; + break; + } + } + + $color = array(RED, BLUE, GREEN, YELLOW, PURPLE); + $string->def = ' DEF:data0='. $data_path . $meter->meter .'.rrd:meter:AVERAGE CDEF:meter0=data0,'. $meter->factor .',* VDEF:min0=meter0,MINIMUM VDEF:max0=meter0,MAXIMUM VDEF:avg0=meter0,AVERAGE VDEF:last0=meter0,LAST'; + $string->line = ' COMMENT:"\s" LINE1:meter0#'. $color[0] .':'.'"'. substr($user->name.' ', 0, 15) .'"'.' GPRINT:min0:"min\:%5.0lf" GPRINT:max0:"\tmax\:%5.0lf" GPRINT:avg0:"\tavg\:%5.0lf" GPRINT:last0:"\tlast\:%5.0lf\l"'; + + if (user_access('logger') || user_access('staff')) { //allow Veerle to watch the graphs + $result = db_query("SELECT u.name, lm.meter FROM (({users} u INNER JOIN {user_relationships} ur ON u.uid = ur.requestee_id) INNER JOIN {user_relationship_types} urt ON ur.rtid = urt.rtid) INNER JOIN {logger_meters} lm ON u.uid = lm.uid WHERE ur.requester_id = %d AND urt.name = '%s' AND type = '%s' AND function = '%s' ORDER BY ur.rid", $user->uid, 'subscription', $type, $function); + $i = 0; + while ($subscription = db_fetch_object($result)) { + $i += 1; + // print_r($subscription); + $string->def .= ' DEF:data'. $i .'='. $data_path . $subscription->meter .'.rrd:meter:AVERAGE CDEF:meter'. $i .'=data'. $i .','. $meter->factor .',* VDEF:min'. $i .'=meter'. $i .',MINIMUM VDEF:max'. $i .'=meter'. $i .',MAXIMUM VDEF:avg'. $i .'=meter'. $i .',AVERAGE VDEF:last'. $i .'=meter'. $i .',LAST'; + $string->line .= ' LINE1:meter'. $i .'#'. $color[$i] .':'.'"'. substr($subscription->name.' ', 0, 15) .'"'.' GPRINT:min'. $i .':"min\:%5.0lf" GPRINT:max'. $i .':"\tmax\:%5.0lf" GPRINT:avg'. $i .':"\tavg\:%5.0lf" GPRINT:last'. $i .':"\tlast\:%5.0lf\l"'; + } + } + + //construct the TZ=GMT-02:00 format from the $user->timezone object updated by the autotimezone module + if ($user->timezone >= 0) + $TZ = 'TZ="GMT-'; + else + $TZ = 'TZ="GMT+'; + $TZ .= gmdate('h:i', abs($user->timezone)) .'" '; + //insert the TZ prior to launching rrdtool to obtain a proper time conversion + $command = $TZ . $root_path .'/rrdtool graph '. $graph_path . $pngid .'.png -s '. $start .' --vertical-label '. $meter->unit .' --lower-limit 0 -w 500 -h 350 -E -X 0 --font LEGEND:8:'; + $command .= $string->def; + $command .= $string->line; + exec($command, $output, $return_var); + watchdog('dashboard', 'arguments: %command ++ %output ++ %return_var', array('%command' => $command, '%output' => serialize($output), '%return_var' => $return_var), WATCHDOG_DEBUG); + return theme('chart', $graph_path . $pngid .'.png'); +} + +function _logger_add($uid) { + // TODO : include security checks + global $user; + $rtid = db_result(db_query("SELECT rtid FROM {user_relationship_types} where name = '%s'", 'subscription')); + user_relationships_request_relationship($user->uid, $uid, $rtid, TRUE); + $destination = drupal_get_destination(); + drupal_goto($destination); +} + +function _logger_remove($rid) { + // TODO : include security checks + db_query("DELETE FROM {user_relationships} WHERE rid = %d", $rid); + $destination = drupal_get_destination(); + drupal_goto($destination); +} + +function _logger_unit($unit) { + // TODO : include security checks + global $user; + // hardcoded type and function + db_query("UPDATE {logger_meters} SET unit = '%s' WHERE uid = %d AND type = '%s' AND function = '%s'", $unit, $user->uid, 'electricity', 'main'); + $destination = drupal_get_destination(); + drupal_goto($destination); +} + +/** + * Implementation of hook_theme() for logger + */ +function logger_theme() { + return array( + 'chart' => array( + 'arguments' => array('chart' => NULL), + ), + 'logger_item_list' => array( + 'arguments' => array('items' => NULL, 'title' => NULL), + ), + ); +} + +/** + * Theming the chart + */ +function theme_chart($chart) { + $output .= '

Flukso

'; + return $output; +} + +/** + * Implementation of hook_block() for logger + * Adds two blocks to the logger pages for (de-)selecting users and + * another one for selecting the desired unit + */ +function logger_block($op = 'list', $delta = 0, $edit = array()) { + global $user; + + switch ($op) { + case 'list': + $blocks['subscriptions']['info'] = t('Subscriptions'); + $blocks['subscriptions']['status'] = TRUE; + $blocks['subscriptions']['region'] = 'right'; + $blocks['subscriptions']['weight'] = 0; + $blocks['subscriptions']['pages'] = 'logger
logger/*'; + + $blocks['fluksonians']['info'] = t('Fluksonians'); + $blocks['fluksonians']['status'] = TRUE; + $blocks['fluksonians']['region'] = 'right'; + $blocks['fluksonians']['weight'] = 1; + $blocks['fluksonians']['pages'] = 'logger
logger/*'; + + $blocks['unit']['info'] = t('Unit'); + $blocks['unit']['status'] = TRUE; + $blocks['unit']['region'] = 'right'; + $blocks['unit']['weight'] = 2; + $blocks['unit']['pages'] = 'logger
logger/*'; + + $blocks['publish']['info'] = t('Publish'); + $blocks['publish']['status'] = TRUE; + $blocks['publish']['region'] = 'content'; + $blocks['publish']['weight'] = 3; + $blocks['publish']['pages'] = 'logger
logger/*'; + + return $blocks; + + case 'view': + //pass along our current destination in the query string so that logger_add and logger_remove can return after processing their task + $destination = drupal_get_destination(); + + if ($delta == 'subscriptions' && user_access('logger')) { + $result = db_query("SELECT u.uid, u.name, ur.rid FROM ({users} u INNER JOIN {user_relationships} ur ON u.uid = ur.requestee_id) INNER JOIN {user_relationship_types} urt ON ur.rtid = urt.rtid WHERE ur.requester_id = %d AND urt.name = '%s' ORDER BY ur.rid", $user->uid, 'subscription'); + $items = array(); + while ($subscription = db_fetch_object($result)) { + $items[] = l('[x]', 'logger/remove/'. $subscription->rid, array('attributes' => array('title' => "unsubscribe from ". $subscription->name ."'s stream"), 'query' => $destination)) .' '. l($subscription->name, 'user/'. $subscription->uid, array()); + } + $block['subject'] = t('Subscriptions'); + $block['content'] = theme('logger_item_list', $items); + } + + elseif ($delta == 'fluksonians' && user_access('logger')) { + // list all users having the fluksionian role for now + // to be replaced by a real buddylist later on + $result = db_query("SELECT u.uid, u.name FROM ({users} u INNER JOIN {users_roles} ur ON u.uid = ur.uid) INNER JOIN {role} r ON ur.rid = r.rid WHERE r.name = '%s' AND NOT u.uid = %d ORDER BY u.name", 'fluksonian', $user->uid); + $items = array(); + while ($fluksonian = db_fetch_object($result)) { + $items[] = l('[+]', 'logger/add/'. $fluksonian->uid, array('attributes' => array('title' => "subscribe to ". $fluksonian->name ."'s stream"), 'query' => $destination)) .' '. l($fluksonian->name, 'user/'. $fluksonian->uid, array()); + } + $block['subject'] = t('Fluksonians'); + $block['content'] = theme('logger_item_list', $items); + } + + elseif ($delta == 'unit' && user_access('logger')) { + //hardcoded the type and function parameters for now + $unit = db_result(db_query("SELECT unit FROM {logger_meters} WHERE uid = %d AND type = '%s' AND function = '%s'", $user->uid, 'electricity', 'main')); + $items = array(); + switch ($unit) { + case 'watt': + $items[] = 'watt'; + $items[] = l('kWh/year', 'logger/unit/kwh', array('attributes' => array('title' => "switch to kWh/year"), 'query' => $destination)); + $items[] = l('euro/year', 'logger/unit/eur', array('attributes' => array('title' => "switch to euro/year"), 'query' => $destination)); + break; + case 'kwh': + $items[] = l('watt', 'logger/unit/watt', array('attributes' => array('title' => "switch to watt"), 'query' => $destination)); + $items[] = 'kWh/year'; + $items[] = l('euro/year', 'logger/unit/eur', array('attributes' => array('title' => "switch to euro/year"), 'query' => $destination)); + break; + case 'eur': + $items[] = l('watt', 'logger/unit/watt', array('attributes' => array('title' => "switch to watt"), 'query' => $destination)); + $items[] = l('kWh/year', 'logger/unit/kwh', array('attributes' => array('title' => "switch to kWh/year"), 'query' => $destination)); + $items[] = 'euro/year'; + break; + } + $block['subject'] = t('Unit'); + $block['content'] = theme('logger_item_list', $items); + } + + elseif ($delta == 'publish' && user_access('logger')) { + // $block['subject'] = t('Publish'); + $block['content'] = drupal_get_form('_logger_publish_form'); + } + + return $block; + } +} + +/** + * Implementing a simple non-bulleted list for the logger_block + */ +function theme_logger_item_list($items, $title = NULL) { + $output = ''; + foreach ($items as $item) { + $output .= $item .'
'; + } + return $output; +} + +/** + * Generates the publish block form. + */ +function _logger_publish_form() { + $form['publish'] = array( + '#type' => 'fieldset', + '#title' => t('Publish'), + '#description' => t('Publish the chart.'), + '#collapsible' => TRUE, + '#collapsed' => TRUE + ); + $form['publish']['title'] = array( + '#type' => 'textfield', + '#title' => t('Title'), + '#description' => t('Please enter the title of your post.') + ); + $form['publish']['submit'] = array( + '#type' => 'submit', + '#value' => t('Publish') + ); + return $form; +} + +/** + * Process publish form submissions. + */ +function _logger_publish_form_submit($form, &$form_state) { + $form_state['redirect'] = 'node/add'; //placeholder; check whether we can automatically fill in the new content type +} + +/** + * Define the administration settings form for the logger module + */ +function _logger_admin_settings() { +//TODO +} + +/** + * Implementation of hook_cron(). + * Cron will call this hook periodically [e.g. 1 hour interval] to perform housekeeping on the png's. + */ +function logger_cron() { + exec('rm sites/all/modules/custom/logger/graphs/hour/*'); + exec('rm sites/all/modules/custom/logger/graphs/day/*'); + exec('rm sites/all/modules/custom/logger/graphs/month/*'); + exec('rm sites/all/modules/custom/logger/graphs/year/*'); + exec('rm sites/all/modules/custom/logger/graphs/night/*'); +} diff --git a/web/drupal/modules/logger/patches/flukso.core.patch b/web/drupal/modules/logger/patches/flukso.core.patch new file mode 100644 index 0000000..f53a9bc --- /dev/null +++ b/web/drupal/modules/logger/patches/flukso.core.patch @@ -0,0 +1,126 @@ +Index: .htaccess +=================================================================== +RCS file: /cvs/drupal/drupal/.htaccess,v +retrieving revision 1.90.2.3 +diff -u -p -r1.90.2.3 .htaccess +--- .htaccess 10 Dec 2008 20:04:08 -0000 1.90.2.3 ++++ .htaccess 3 Aug 2009 22:38:00 -0000 +@@ -100,10 +100,13 @@ DirectoryIndex index.php + # uncomment the following line: + # RewriteBase / + ++ RewriteRule ^xmlrpc/([0-9]+)/?$ xmlrpc.php?version=$1 [L] ++ + # Rewrite URLs of the form 'x' to the form 'index.php?q=x'. + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !=/favicon.ico ++ RewriteCond %{REQUEST_URI} !=/xmlrpc(.*) + RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] + + +Index: xmlrpc.php +=================================================================== +RCS file: /cvs/drupal/drupal/xmlrpc.php,v +retrieving revision 1.15 +diff -u -p -r1.15 xmlrpc.php +--- xmlrpc.php 10 Dec 2005 19:26:47 -0000 1.15 ++++ xmlrpc.php 3 Aug 2009 22:38:00 -0000 +@@ -6,9 +6,77 @@ + * PHP page for handling incoming XML-RPC requests from clients. + */ + ++// define xmlrpc method location ++define('XMLRPC_PATH', 'sites/all/modules'); ++define('XMLRPC_MODULE', 'logger'); ++define('XMLRPC_FILE', 'xmlrpc'); ++ ++// defined xmlrpc endpoints ++$xmlrpc_versions = array('', 1); ++ ++// any common.inc or other core functions that xmlrpc processing relies upon ++function t($string, $args = array(), $langcode = NULL) { ++ if (empty($args)) { ++ return $string; ++ } ++ else { ++ // Transform arguments before inserting them. ++ foreach ($args as $key => $value) { ++ switch ($key[0]) { ++ case '@': ++ case '%': ++ default: ++ // Escaped only. ++ $args[$key] = check_plain($value); ++ break; ++ ++ case '!': ++ // Pass-through. ++ } ++ } ++ return strtr($string, $args); ++ } ++} ++ ++function watchdog_xmlrpc($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL) { ++ global $base_root; ++ ++ $current_db = db_set_active(); ++ ++ db_query("INSERT INTO {watchdog} ++ (type, message, variables, severity, link, location, referer, hostname, timestamp) ++ VALUES ++ ('%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', %d)", ++ $type, ++ $message, ++ serialize($variables), ++ $severity, ++ $link, ++ $base_root . request_uri(), ++ referer_uri(), ++ ip_address(), ++ time()); ++ ++ if ($current_db) { ++ db_set_active($current_db); ++ } ++} ++ ++ + include_once './includes/bootstrap.inc'; +-drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); ++drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE); + include_once './includes/xmlrpc.inc'; + include_once './includes/xmlrpcs.inc'; + +-xmlrpc_server(module_invoke_all('xmlrpc')); ++if (in_array($_REQUEST['version'], $xmlrpc_versions)) { ++ require_once XMLRPC_PATH . '/' . XMLRPC_MODULE . '/' . XMLRPC_FILE . $_REQUEST['version'] . '.inc'; ++ ++ //debugging watchdog_xmlrpc('xmlrpc', 'xmlrpc api called with version %version', array('%version' => $_REQUEST['version']), WATCHDOG_DEBUG); ++ ++ $function = XMLRPC_MODULE . '_xmlrpc'; ++ $callbacks = $function(); ++ xmlrpc_server($callbacks); ++} ++else { ++ xmlrpc_server_error(-32601, t('Server error. Requested method version (@version) not specified.', array("@version" => $_REQUEST['version']))); ++} +Index: includes/menu.inc +=================================================================== +RCS file: /cvs/drupal/drupal/includes/menu.inc,v +retrieving revision 1.255.2.31 +diff -u -p -r1.255.2.31 menu.inc +--- includes/menu.inc 27 Apr 2009 12:50:13 -0000 1.255.2.31 ++++ includes/menu.inc 3 Aug 2009 22:38:02 -0000 +@@ -1422,8 +1422,8 @@ function menu_local_tasks($level = 0, $r + return $root_path; + } + else { +- // We do not display single tabs. +- return (isset($tabs[$level]) && $tabs[$level]['count'] > 1) ? $tabs[$level]['output'] : ''; ++ // We do not display single tabs: BVDM yes we do for flukso! ++ return (isset($tabs[$level])) ? $tabs[$level]['output'] : ''; + } + } + diff --git a/web/drupal/modules/logger/patches/menu.allow.display.of.single.tabs.patch b/web/drupal/modules/logger/patches/menu.allow.display.of.single.tabs.patch new file mode 100644 index 0000000..d29f950 --- /dev/null +++ b/web/drupal/modules/logger/patches/menu.allow.display.of.single.tabs.patch @@ -0,0 +1,19 @@ +? menu.allow.display.of.single.tabs.patch +Index: menu.inc +=================================================================== +RCS file: /cvs/drupal/drupal/includes/menu.inc,v +retrieving revision 1.255.2.31 +diff -u -p -r1.255.2.31 menu.inc +--- menu.inc 27 Apr 2009 12:50:13 -0000 1.255.2.31 ++++ menu.inc 3 Aug 2009 20:19:06 -0000 +@@ -1422,8 +1422,8 @@ function menu_local_tasks($level = 0, $r + return $root_path; + } + else { +- // We do not display single tabs. +- return (isset($tabs[$level]) && $tabs[$level]['count'] > 1) ? $tabs[$level]['output'] : ''; ++ // We do not display single tabs: BVDM yes we do for flukso! ++ return (isset($tabs[$level])) ? $tabs[$level]['output'] : ''; + } + } + diff --git a/web/drupal/modules/logger/xmlrpc.inc b/web/drupal/modules/logger/xmlrpc.inc new file mode 100644 index 0000000..81e708e --- /dev/null +++ b/web/drupal/modules/logger/xmlrpc.inc @@ -0,0 +1,104 @@ +resets += $resets; + db_query("UPDATE {logger_devices} SET access = %d, version = %d, upgrade = %d, resets = %d, uptime = %d WHERE device = '%s'", time(), $version, 0, $dev->resets, $uptime, $device); + return $dev->upgrade; +} + +function _logger_measurement_add($logs) { + $info = 'added 5min interval measurements to the log'; + $path = new stdClass(); + $path->root = XMLRPC_PATH . '/' . XMLRPC_MODULE; // need to hardcode drupal_get_path('module', 'logger'); + $path->base = $path->root .'/data/base/'; + $path->night = $path->root .'/data/night/'; + foreach ($logs as $meter => $measurements) { + //load the normalisation factor, relative to 1pulse = 1Wh + $meterdata = db_fetch_object(db_query("SELECT night, factor FROM {logger_meters} WHERE meter = '%s'", $meter)); + $command = $path->root .'/rrdtool update '. $path->base . $meter .'.rrd '; + ksort($measurements); // sort the key-value pairs in the associative array by key, i.e. the timestamp + foreach ($measurements as $timestamp => $value) { + if (is_numeric($timestamp) and is_numeric($value)) { + $command .= $timestamp .':'. $value*$meterdata->factor .' '; + } + else { + watchdog_xmlrpc('logger.measurementAdd', 'corrupted input data for %meter : %timestamp : %value', array('%meter' => $meter, '%timestamp' => $timestamp, '%value' => $value), WATCHDOG_ERROR); + } + } + system($command, $return); + if ($return == 0) { + // update the night rrd every day at 6AM UTC + if (time() > $meterdata->night) { + $timestamp = floor(time()/86400)*86400; + $start = $timestamp + 3600; + $end = $start + 10800; //3h time interval + $command = $path->root ."/rrdtool fetch ". $path->base . $meter .".rrd AVERAGE -r 900 -s ". $start ." -e ". $end ." | tail -n 12 | awk -F': ' '{SUM += $2} END {print SUM/12}'"; + $night = (float)shell_exec($command); //test shell_exec iso system + $command = $path->root .'/rrdtool update '. $path->night . $meter .'.rrd '. $timestamp .':'. $night; + system($command, $return); + if ($return == 0) { + watchdog_xmlrpc('logger.measurementAdd', 'successful update for night rrd: %command', array('%command' => $command), WATCHDOG_NOTICE); //debugging + } + else { + watchdog_xmlrpc('logger.measurementAdd', 'error updating night rrd: %command', array('%command' => $command), WATCHDOG_ERROR); //debugging + } + $meterdata->night = $timestamp + 104400; //add an offset of 29h, i.e. 5AM UTC next day + } + // {logger_meters} is updated with the true metervalue $value, NOT $value*$meterdata->factor since we're not normalising this entry! + db_query("UPDATE {logger_meters} SET access = %d, night = %d, value = %d WHERE meter = '%s'", time(), $meterdata->night, $value, $meter); + } + else { + watchdog_xmlrpc('logger.measurementAdd', 'shell command execution failed: %return %command', array('%command' => $command, '%return' => $return), WATCHDOG_ERROR); + } + } + return $command; //using $command for testing purposes, replace by $info afterwards +} diff --git a/web/drupal/modules/logger/xmlrpc1.inc b/web/drupal/modules/logger/xmlrpc1.inc new file mode 100644 index 0000000..b4f290e --- /dev/null +++ b/web/drupal/modules/logger/xmlrpc1.inc @@ -0,0 +1,160 @@ +resets += $monitor['reset']; + db_query("UPDATE {logger_devices} SET access = %d, version = %d, upgrade = %d, resets = %d, uptime = %d, memtotal = %d, memfree = %d, memcached = %d, membuffers = %d, uart_oe = %d WHERE device = '%s'", time(), $monitor['version'], 0, $device->resets, $monitor['uptime'], $monitor['memtotal'], $monitor['memfree'], $monitor['memcached'], $monitor['membuffers'], $monitor['uart_oe'], $auth['device']); + + $action['upgrade'] = (int)$device->upgrade; + if ($action['upgrade']) { + $action['timestamp'] = time(); + $action['signature'] = hash_hmac('sha1', $action['timestamp'] .':'. $action['upgrade'] .':'. $device->sha, $device->sha); + } + return $action; + } + else + return xmlrpc_error(-31000, t('Authentication failed.')); +} + +function _logger_measurement_add($auth, $logs) { + if (_logger_authenticate_hmac_sha1($auth, $logs)) { + $info = 'added 5min interval measurements to the log'; + $path = new stdClass(); + $path->root = XMLRPC_PATH . '/' . XMLRPC_MODULE; // need to hardcode drupal_get_path('module', 'logger'); + $path->base = $path->root .'/data/base/'; + $path->night = $path->root .'/data/night/'; + foreach ($logs as $meter => $measurements) { + //load the normalisation factor, relative to 1pulse = 1Wh + $meterdata = db_fetch_object(db_query("SELECT device, night, factor FROM {logger_meters} WHERE meter = '%s'", $meter)); + if ($meterdata->device == $auth['device']) { // extra security check + $command = $path->root .'/rrdtool update '. $path->base . $meter .'.rrd '; + ksort($measurements); // sort the key-value pairs in the associative array by key, i.e. the timestamp + foreach ($measurements as $timestamp => $value) { + if (is_numeric($timestamp) and is_numeric($value)) { + $command .= $timestamp .':'. $value*$meterdata->factor .' '; + } + else { + watchdog_xmlrpc('logger.measurementAdd', 'corrupted input data for %meter : %timestamp : %value', array('%meter' => $meter, '%timestamp' => $timestamp, '%value' => $value),WATCHDOG_ERROR); + } + } + + system($command, $return); + + if ($return == 0) { + // update the night rrd every day at 6AM UTC + if (time() > $meterdata->night) { + $timestamp = floor(time()/86400)*86400; + $start = $timestamp + 3600; + $end = $start + 10800; //3h time interval + $command = $path->root ."/rrdtool fetch ". $path->base . $meter .".rrd AVERAGE -r 900 -s ". $start ." -e ". $end ." | tail -n 12 | awk -F': ' '{SUM += $2} END {print SUM/12}'"; + $night = (float)shell_exec($command); //test shell_exec iso system + $command = $path->root .'/rrdtool update '. $path->night . $meter .'.rrd '. $timestamp .':'. $night; + system($command, $return); + if ($return == 0) { + watchdog_xmlrpc('logger.measurementAdd', 'successful update for night rrd: %command', array('%command' => $command), WATCHDOG_NOTICE); //debugging + } + else { + watchdog_xmlrpc('logger.measurementAdd', 'error updating night rrd: %command', array('%command' => $command), WATCHDOG_ERROR); //debugging + } + $meterdata->night = $timestamp + 104400; //add an offset of 29h, i.e. 5AM UTC next day + } + // {logger_meters} is updated with the true metervalue $value, NOT $value*$meterdata->factor since we're not normalising this entry! + db_query("UPDATE {logger_meters} SET access = %d, night = %d, value = %d WHERE meter = '%s'", time(), $meterdata->night, $value, $meter); + } + else { + watchdog_xmlrpc('logger.measurementAdd', 'shell command execution failed: %return %command', array('%command' => $command, '%return' => $return), WATCHDOG_ERROR); + } + } + } + return $command; //using $command for testing purposes, replace by $info afterwards + } + else + return xmlrpc_error(-31000, t('Authentication failed.')); +} + +function _logger_authenticate_hmac_sha1($auth, $message) { + $auth['key'] = db_result(db_query("SELECT sha FROM {logger_devices} WHERE device = '%s'", $auth['device'])); + if (hash_hmac('sha1', $auth['timestamp'] .':'. _logger_serialise($message) .':'. $auth['key'], $auth['key']) == $auth['signature'] && $auth['timestamp'] > time() - 300) { + // debugging: watchdog_xmlrpc('logger.auth', 'HMAC-SHA1 authentication succeeded for device: %device', array('%device' => $auth['device']), WATCHDOG_NOTICE); + return TRUE; + } + else { + watchdog_xmlrpc('logger.auth', 'HMAC-SHA1 authentication failed for device: %device', array('%device' => $auth['device']), WATCHDOG_ERROR); + return FALSE; + } +} + +function _logger_serialise($data) { + if (is_array($data)) { + $sequence = ''; + foreach ($data as $key => $value) { + $sequence .= (string)$key . _logger_serialise($value); + } + return $sequence; + } + else { + return (string)$data; + } +} diff --git a/web/drupal/themes/flukso/LICENSE.txt b/web/drupal/themes/flukso/LICENSE.txt new file mode 100644 index 0000000..2c095c8 --- /dev/null +++ b/web/drupal/themes/flukso/LICENSE.txt @@ -0,0 +1,274 @@ +GNU GENERAL PUBLIC LICENSE + + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, +Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute +verbatim copies of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public License +applies to most of the Free Software Foundation's software and to any other +program whose authors commit to using it. (Some other Free Software +Foundation software is covered by the GNU Library General Public License +instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this service if +you wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must make +sure that they, too, receive or can get the source code. And you must show +them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients +to know that what they have is not the original, so that any problems +introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND + MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such +program or work, and a "work based on the Program" means either the +Program or any derivative work under copyright law: that is to say, a work +containing the Program or a portion of it, either verbatim or with +modifications and/or translated into another language. (Hereinafter, translation +is included without limitation in the term "modification".) Each licensee is +addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made +by running the Program). Whether that is true depends on what the Program +does. + +1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or in +part contains or is derived from the Program or any part thereof, to be +licensed as a whole at no charge to all third parties under the terms of this +License. + +c) If the modified program normally reads commands interactively when run, +you must cause it, when started running for such interactive use in the most +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that +you provide a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this License. +(Exception: if the Program itself is interactive but does not normally print such +an announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be +reasonably considered independent and separate works in themselves, then +this License, and its terms, do not apply to those sections when you distribute +them as separate works. But when you distribute the same sections as part +of a whole which is a work based on the Program, the distribution of the +whole must be on the terms of this License, whose permissions for other +licensees extend to the entire whole, and thus to each and every part +regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to +work written entirely by you; rather, the intent is to exercise the right to +control the distribution of derivative or collective works based on the +Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the scope +of this License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 +and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source +code, which must be distributed under the terms of Sections 1 and 2 above +on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give +any third party, for a charge no more than your cost of physically performing +source distribution, a complete machine-readable copy of the corresponding +source code, to be distributed under the terms of Sections 1 and 2 above on +a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for +noncommercial distribution and only if you received the program in object +code or executable form with such an offer, in accord with Subsection b +above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source code +means all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation and +installation of the executable. However, as a special exception, the source +code distributed need not include anything that is normally distributed (in +either source or binary form) with the major components (compiler, kernel, +and so on) of the operating system on which the executable runs, unless that +component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with the +object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, +modify, sublicense or distribute the Program is void, and will automatically +terminate your rights under this License. However, parties who have received +copies, or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the +Program (or any work based on the Program), you indicate your acceptance +of this License to do so, and all its terms and conditions for copying, +distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these terms and +conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In such +case, this License incorporates the limitation as if written in the body of this +License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will be +similar in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that +version or of any later version published by the Free Software Foundation. If +the Program does not specify a version number of this License, you may +choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT +PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR +AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR +ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE +LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, +SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES +SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN +IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF +THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/web/drupal/themes/flukso/README.txt b/web/drupal/themes/flukso/README.txt new file mode 100644 index 0000000..44ddecb --- /dev/null +++ b/web/drupal/themes/flukso/README.txt @@ -0,0 +1,9 @@ +$Id$ + +Description: +------------ +This is the Flukso theme, based on Denis Polevoi's teleology theme. + +Authors: +-------- +icarus75 a.k.a. Bart Van Der Meerssche diff --git a/web/drupal/themes/flukso/comment.tpl.php b/web/drupal/themes/flukso/comment.tpl.php new file mode 100644 index 0000000..db0f9a9 --- /dev/null +++ b/web/drupal/themes/flukso/comment.tpl.php @@ -0,0 +1,26 @@ +new) ? ' comment-new' : '') . + ' ' . $status . ' ' . $zebra; +?> +
+
+ + new): ?> + + + +
+ +
+ +
+ +
+
+
+ | + +
+
diff --git a/web/drupal/themes/flukso/favicon.ico b/web/drupal/themes/flukso/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..1b347b5984429dc2b4e4d903946383732ec83308 GIT binary patch literal 1406 zcmZQzU<5(|0R}M0U}azs1F|%L7$l?s#Ec9aK$3yMfe}n$5dZ)GXHZdiiy=NLFd71* zAu!BCfC&XKFraXmu<;q;fC(%Q=Q6_h5HlEQ#)sJmvk#Sz>;r7>N0Dy;mWh;L0QdC| A1^@s6 literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/flukso.info b/web/drupal/themes/flukso/flukso.info new file mode 100644 index 0000000..63b8040 --- /dev/null +++ b/web/drupal/themes/flukso/flukso.info @@ -0,0 +1,23 @@ + ; $Id:$ + ; -------------------------------------------------------------------------- + ; Basic information about the theme. + ; -------------------------------------------------------------------------- +name = Flukso +description = "Fixed width theme derived from the Teleology theme" +screenshot = screenshot.png +core = 6.x +engine = phptemplate + + ; -------------------------------------------------------------------------- + ; Theme features. + ; -------------------------------------------------------------------------- +features[] = name +features[] = slogan +features[] = search +features[] = favicon +features[] = primary_links +features[] = secondary_links +features[] = mission +features[] = node_user_picture +features[] = comment_user_picture +features[] = logo diff --git a/web/drupal/themes/flukso/icons/calendar.png b/web/drupal/themes/flukso/icons/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..c245f1b421584b8b3f26e0c93b884e5312d4211d GIT binary patch literal 775 zcmV+i1Ni)jP);qDN*+F^$0tjjVEF6HelqgX19|->c2Wkk&03iMYH00WI zu*%3*@-!GQGB7-Q4b=D#;u2sufL-zzMgx_Ii-T4Ef*Jr2Kn$Q*n6mx( z|1aNv|6g|a<$n-ZdE^C{UUdw@UvnJ7-*5s#zyA3Be|-OG5R(BQfWR*J4Yc7Oh{Mdl zu=e;X24-d^hIJ=if%zLxy<#}}vW4N$hJQeZ{bOJ~+rXeH&BgHRH^c=10mKCJ0w@$% zm>C&@EyWmEfTBSbVhpT6+TTo!fr*isL0wsefr*Kk!OK`2619II-UbLDxC=nu25H=K z_BF$)H{A>;xBUlukL7$hP$MJ5{Ra;jn1KeYKlzeDnx6@1A;bWH0D>3*G!3Mf73gFS zLs5p~+ZY&>Gc#5(Sf~pE!|^}E?WZ3Zg!tGQxY@y482|zZ>;+J&0|92B zO?xiB0kiKvd+S9&Bq^ser90c2ihzqzzK0FFtCA!fSmvkK+uHr|7hd#+Xlb> z{^JIvFcAI=442>F%<~6pUik3&$7T=>5I~HSW@mr^0{|mJT8(j(IIREx002ovPDHLk FV1k$+Qa1nq literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/icons/feed.png b/web/drupal/themes/flukso/icons/feed.png new file mode 100644 index 0000000000000000000000000000000000000000..315c4f4fa62cb720326ba3f54259666ba3999e42 GIT binary patch literal 691 zcmV;k0!;mhP)bpQb1=l6TxbDZwj&S={?7%qx-u`rsG(Zp`-rh=e^=%((1yvsuf5d=&62Zj)Y zH&JviNS_F4_Hj|T(1j4$p-!}kixP9&dB4uv^MveG?dGf%sUCoc2!IFxD6wHRA2^dX zXRVk!-qSfk(jcaUKn#RP48(whfPlJUpApdrA!TQi_4D+fVoM;3I0gZ8{=Xv~Po;geVA+Em9@0Wq2 zr>OTZEGR05L=gf1T;ucCxq6Q6EgJiH@@-lVaAlQyw`jIF^c=&IVnj|95hHbE_cnt| zTzZQ?F4Ne@(bH(~&3nM%m)I@ID{@jJ2qZPjr)jhpe9hViOwH5k&|T#EmmL3(vHeUQ zq^!t^Al6JD;=mHq^Bg?J-8-zG2Od7gZbknG;K9czYjPqG*xjPo0k(c4%lPXTpw(qq z@aGMnxtFS(np+2kC} z7P02O874ZkJH$v#nCUVx$({yDN`IX@o2wyvTD#e`qN`_w5<}$3F+_|35$OfiZ{;5<^x45I}@A ze?9mA=j(a@e}CEs6#fS`IWTnq0mO*S3ovI(x^^-A`Lv&bkyV7@)se+uIiMF9 z9xSqAc=?6lfO*z2M}PprWx#()k68?V-mho)|Mw%%05PDb2E*&)9SjVA{xL`gtYNr6 z$A#hbU-kn40mOtW@c#dL0M-m<|9J}}Z!kzWRxk+Yc`|%|7|o!N(9a|9-{r=g&K!VMiH$fBDG3F7cM(&zqkN00G2=#rYty>F>_Y zV)*~>JHxNH`x*XyzYjFvH84ERG5r1hmVsN*m*G}dHNz7w?wbGs#DWpuOpFZd!iEe2 znq~|?Ui31saEUN5adI&Hes!7Q@9%F6JZixVcP1@kc*@Ch)wTST4nP1Qdm&TWXD!3u zucsJ(e?GwQ?MV#-D-%D^D`pIDj_ziV^h#j>n#6Fsw~65e7uN-sl2e8tO#lJJ2#Rl5 zN)xk6XZZDQF~gsacNtiCg&0`4eHkvVT=D+hPsVq0zrHCmaWFHyJVUI7RokO91mtlSI?tXvH2V*CvM zSxp!&EnD;PJuAm5ucBia3BS*}?}DjA3b009O7hE`G&_--||00000NkvXX Hu0mjfDNkQ( literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/icons/menu-collapsed.png b/web/drupal/themes/flukso/icons/menu-collapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..95a214a6e6d17fee2f098804997f3826ffc9d4ca GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j@3?%=}IXVGIu?6^qxc>kDAIJlF_r}R z1v5B2yO9Ruh>$j@3?%=}IXVGIu?6^qxc>kDAIJlF_r}R z1v5B2yO9Ru2zk0VhE&W+{&76uaKb@_0}N~oA{!VF-#vS9IZ&3t)78&qol`;+0EMF; ATL1t6 literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/icons/menu-leaf.png b/web/drupal/themes/flukso/icons/menu-leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..827ba08543e4eedac351c413b22b1f787bb4b946 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+3?x7IEPn{3SkfJR9T^y|-MHc(VFct$mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&P5AX?bJ#gT_{{8#AySsq`|Ns9# z7<#w`$YL!C@(TuX|1xt*bbftf*YGQ$GzyDvn6dKf%i{an^LB{Ts59yvc& literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/icons/page_white.png b/web/drupal/themes/flukso/icons/page_white.png new file mode 100644 index 0000000000000000000000000000000000000000..3103c929e72c997cec19ad075cb59f10b1659d09 GIT binary patch literal 501 zcmV4;0LdO_z_UgKbQbO05O0J00QG5KYo1p{rmUdKY#xG$A*FO z|EEluG7+d&0f?DE`al>UfM5ogfi!>l^5y^6uV3N#*c1eYlOG+zMPD9211{X1NG5%|tC>-E2LK>Hsj46b zz5rr`8ej@kaPsfpzi_Yp`}Ys*I-ocM&`<_JK|z$jU}0e~2U4d20*D1!kco*26rgZ6 z$UtUhW(GDkHU^+ez=nbh6cZDJ>j4NL6a!$IVQi3QWIoJ5WB?FAEcoIK*$@yLgkb>( z0{{WULLlD3nvlJQ4gdm(iGc_J(+qMA$S`C85I{Ixfb3LgY6S-(IsgbDf?hy22;FuN z00w4#B3P}ltj2p~{;25I~UjN|Vx2?7A5_8X7}CtH93 rVuU(V7Mh)jiWR8lS3tdw0RjvFhnMS<;oeK700000NkvXXu0mjfz0kj- literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/icons/page_white_add.png b/web/drupal/themes/flukso/icons/page_white_add.png new file mode 100644 index 0000000000000000000000000000000000000000..555602cba39b78c15469e3c02ef01924c8d9b38a GIT binary patch literal 641 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 literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/images/comment-light.gif b/web/drupal/themes/flukso/images/comment-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2e48b078db7e27868be1a90f9c80f127ea27885 GIT binary patch literal 190 zcmV;v073spNk%w1VZZ|i0FeLy%*@RG{{8>}00000A^8Le3IGBCEC2ui0KfwW0007y zgpa9<;SU3wwAzca-n{z{hT=$;=82~2%C_zc$MQ_m(T(Rfp!50<3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv=K3Pzu=$KmtJmzd`wfrF=k&TAQkLBJ{J#GW7$`VMSZF9X smUpl&_5c4Ra{c@Nf4-eo`+V0MAxsS4rkedfvPobO&;$lg LS3j3^P62if?EP)- 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 Q<^TWy07*qoM6N<$f>oz=y#N3J literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/node.tpl.php b/web/drupal/themes/flukso/node.tpl.php new file mode 100644 index 0000000..1ea6d62 --- /dev/null +++ b/web/drupal/themes/flukso/node.tpl.php @@ -0,0 +1,22 @@ +
"> + + +

+ + + + + + + + +
+ + + >> + + + + + +
diff --git a/web/drupal/themes/flukso/page.tpl.php b/web/drupal/themes/flukso/page.tpl.php new file mode 100644 index 0000000..67212a1 --- /dev/null +++ b/web/drupal/themes/flukso/page.tpl.php @@ -0,0 +1,41 @@ + + + + <?php print $head_title ?> + + + + + + +> +
+
+
+ +
+
+ + +
+
+
+
+
+ + +

+ +
+

+
+ +
+ +
+ + + diff --git a/web/drupal/themes/flukso/screenshot-drupal.org.png b/web/drupal/themes/flukso/screenshot-drupal.org.png new file mode 100644 index 0000000000000000000000000000000000000000..2de8caf571d79c4a6e30019a192e3f1f4f74cc3f GIT binary patch literal 24942 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

GECM_!dhzHE`<>e4A3h1KzYQ7X;_xhb#wwcv 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 `Z5XJE^2k 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 literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/screenshot.png b/web/drupal/themes/flukso/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..53313e08e85d18ac9483056fee8dd528064e2995 GIT binary patch literal 5497 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 literal 0 HcmV?d00001 diff --git a/web/drupal/themes/flukso/style.css b/web/drupal/themes/flukso/style.css new file mode 100644 index 0000000..5e35c05 --- /dev/null +++ b/web/drupal/themes/flukso/style.css @@ -0,0 +1,517 @@ +/* Flukso theme by icarus75 */ +/* derived from the teleology theme */ + +/* $Id* */ + +a { + font-weight: normal; + text-decoration: none; + padding: 1px; +} + +a:link { + color: rgb(150,150,150); +} + +a:visited { + color: rgb(150,150,150); +} + +a:hover { + background-color: + rgb(0,174,239); + color: rgb(255,255,255); +} + +body { + background: #fff; + color: #444; + font-family: Arial, system, Tahoma, sans-serif; + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + margin: 0; + font-size: 1em; +} + +table { + font-size: 1em; +} + +#container { + margin: 15px auto; + width: 920px; + padding 0 10px 10px; +} + +#top { + background: #f3f3f3; + border: 1px solid #ddd; + margin: 0 0 12px; + width: 684px; +} + +#home a:hover { + background-color: #f3f3f3; +} + +#logo img { + margin: 1em auto 1em 1em; + vertical-align: bottom; +} + +.site-name { + font-size: 1.8em; + vertical-align: bottom; +} + +.site-slogan { + font-size: .8em; + padding: 0em 0em 0em 1em; +} + +#navigation { + background: #f3f3f3 url(images/menu-bg.png) center repeat; + /*border-top: 1px solid #ddd;*/ + float: left; font-size: 1em; + text-align: center; width: 100%; +} + +#search { + background: #f3f3f3 url(images/menu-bg.png) center repeat; + padding-right: .4em; + text-align: right; +} + +#search .form-text { + border-width: 1px; + font-size: .6em; +} + +#search .form-submit { + border-width: 1px; + font-size: .6em; +} + +#leftnav { + float: left; + width: 222px; + margin: 0 auto auto 0; +} + +#rightnav { + float: right; + width: 222px; + margin: 0 0 auto auto; +} + +#leftnav .block, #rightnav .block { + background: #f3f3f3; + border: 1px solid #ddd; + font-size: 0.8em; + margin: 0% 0 6% 0; +} + +#content { + background: #f3f3f3; + border: 1px solid #ddd; + font-size: .8em; + width: 660px; + margin: 0; + padding: 12px; + text-align: justify; +} + +/* :BVDM: center charts in text body */ +#chart { + padding: 1em; + text-align: center; +} + +#header .block { + border: 1px solid #ddd; + font-size: 1em; +} + +#header .content { + font-size: 1em; +} + +.content-title { + font-size: 1.4em; + font-weight: normal; +} + +.node { + /* border: 1px solid #ddd; */ + font-size: 1em; + margin-bottom: 3em; +} + +.breadcrumb { + font-size: 1em; + padding: 0 0 .2em 0; +} + +/* forms */ +.form-item { + font-size: 1em; +} + +/* .form-item label { color: #000;} */ + +fieldset { + border: 1px solid #ddd; +} + +input, textarea, select { + border: 1px silver inset; +} + +input[type="submit"] { + border: 1px #ddd outset; + background-color: #f3f3f3; +} + +input[type="text"], textarea, input.form-password { + padding: 1px; +} + +.node h2 { + /* background: #f3f3f3; */ + color: #f7f7f7; + font-size: 1.6em; + padding: 0 0 1em 0; +} + +.node .content, .node .info { + background: #f3f3f3; + font-size: 1em; +} + +.node .picture { + border: 1px solid #ddd; + float: right; + margin: 0.5em; +} + +.node.item-listing { + padding: 1em; + border-top: 1px solid #ff0000; +} + +.node.item-listing.sticky { + background-image: none; +} + +.node table ul { + margin: 0; + padding: 1em; +} + +.node.sticky .title { + background-image: none; +} + +.node .title { + border-bottom: 1px solid #ff0000; +} + +.messages { + background: #eee; + margin: 0em; +} + +.clear.links { + font-size: 1em; + padding: 0em; +} + +br.clear { + clear: both; +} + +.block { + margin-bottom: 1em; + background: #f7f7f7; +} + +.block h2 { + background: #f3f3f3 url(images/menu-bg.png) center repeat; + color: #444; + font-size: 1em; + font-weight: normal; + height: auto; + padding: .2em; +} + +.block .content { + font-size: 1em; + padding-left: 0.2em; +} + +.box { + /*border: 1px solid #ddd;*/ + font-size: 1em; + padding: 0em 0em 2em 1em; + text-align: left; +} + +.box .title { + font-size: 1em; +} + +.quote-author { + font-style: normal; + font-weight: normal; +} + +.quote-msg { + /* border: 1px solid #ddd; */ + background-color: #fefefe; + font-style: italic; + padding: 0em .2em 0 .2em; +} + +#footer { + background: #f3f3f3; + border: 1px solid #ddd; + color: #aaa; + font-size: 0.64em; + padding: .2em 0 .2em 0; + width: 684px; + margin: 12px 0 0 0; + text-align: center; +} + +/* icons */ +a.read-more, +.icon-print, +.icon-add-child-page, +.icon-calendar, +.form-text#edit-name, +.form-password#edit-pass, +.form-text#edit-pass, +.form-text#edit-date { + background-repeat: no-repeat; + background-position: left center; + padding-left: 3em; +} + +a.read-more { + background-image: url("icons/page_white_go.png"); +} + +.icon-print { + background-image: url("icons/printer.png"); +} + +.icon-add-child-page { + background-image: url("icons/page_white_add.png"); +} + +.icon-calendar { + background-image: url("icons/calendar.png"); +} + +.form-text#edit-name { + background-image: url("icons/user.png"); +} + +.form-password#edit-pass, .form-text#edit-pass { + background-image: url("icons/key.png"); +} + +.form-text#edit-date { + background-image: url("icons/calendar.png"); +} + +/* tables */ +tr th, tr.light td, tr.dark td, tr.odd td, tr.even td { + padding: 0em .2em 0em .2em; +} + +tr.light, tr.dark, tr.even, tr.odd { + background-color: #fff; +} + +tr.light .active, tr.dark .active, tr.even .active, tr.odd .active { + background-color: #fff; +} + +/* tr th {border: 1px solid #ddd;} */ + +tr.watchdog-user { + background-color: #ffd; + font-size: .7em; +} + +tr.watchdog-user .active { + background-color: #eed; + font-size: .7em; +} + +tr.watchdog-content { + background-color: #ddf; + font-size: .7em; +} + +tr.watchdog-content .active { + background-color: #cce; + font-size: .7em; +} + +tr.watchdog-page-not-found, tr.watchdog-access-denied { + background-color: #dfd; + font-size: .7em; +} + +tr.watchdog-page-not-found .active, tr.watchdog-access-denied .active { + background-color: #cec; + font-size: .7em; +} + +tr.watchdog-error { + background-color: #ffc9c9; + font-size: .7em; +} + +tr.watchdog-error .active { + background-color: #eeb9b9; + font-size: .7em; +} + +tr.watchdog-menu, tr.watchdog-menu { + background-color: #fff; + font-size: .7em; +} + +/* lists */ +ul.primary li a:hover { + background-color: rgb(0,174,239); + color: rgb(255,255,255); +} + +ul.secondary a { + padding: 1px; +} + +ul li a:hover { + background-color: rgb(0,174,239); + color: rgb(255,255,255); +} + +html.js fieldset legend a:hover { + background-color: rgb(0,174,239); + color: rgb(255,255,255); +} + +/* ------------------------------------------------------------------------ + * Image-assist: overruling clear: both to eliminate spacing below img + * --------------------------------------------------------------------- */ +.image-clear { + clear: none; +} + +/* ------------------------------------------------------------------------ + * Comments + * --------------------------------------------------------------------- */ +#comments { + margin-top: 0em; + margin-bottom: 2em; + padding: 0 1.5em 0 1.5em; +} + +div.comment { + margin: 0 0 2em 0; +} + +div.even div.content, +div.odd div.content { + border: 1px solid #ccc; + border-bottom: 0; + margin: 0; + padding: 1em; +} + +div.comment div.content h3 { + font-weight: normal; + margin: 0; +} + +div.comment div.content h3 a:link, +div.comment div.content h3 a:visited { + color: #333; + font-weight: normal; + text-decoration: none; +} + +div.comment div.content h3 a:hover { + color: #ed1a09; +} + +div.comment div.content p { + margin: 0; + padding: 0; +} + +div.comment img.user-picture { + float: left; + padding: 0 10px 5px 0; +} + +div.comment div.content p+p { margin-top: 1.5em; } + +div.even div.content { background-color: #fff; } + +div.comment-meta { + display: block; + margin: 0; + padding: 0.66em 0 0 0; +} + +div.comment-meta span { + margin-left: 0.66em; + font-style: normal; +} + +div.even div.comment-meta { + background: #f3f3f3 url(images/comment-light.gif) no-repeat top left; + margin: 0; + font-style: normal; +} + +div.odd { + background-color: #eee; +} + +div.odd div.comment-meta { + background: #f3f3f3 url(images/comment-dark.gif) no-repeat top left; +} + +em.moderation { + background-color: #fffbcc; + padding: 2px; + border: 1px solid #e6db55; +} + +#respond { font-weight: normal } + +#comment-form-wrapper { margin: 0 1.5em 0 1.5em; } + +#comments h2.comments, +#comments div.box h2 { + display: block; + font-size: 1.75em; + margin-bottom: 0; + text-transform: lowercase; +} + +#comments div.box { + margin-top: 10px; +} + +#comment-controls { + margin: 20px 0; +}