Changeset 99

Show
Ignore:
Timestamp:
03/06/10 17:16:27 (2 years ago)
Author:
icarus75
Message:

web: theme the fluksonians block into a table and locate it under the chart

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • flukso/trunk/web/drupal/modules/logger/logger.module

    r98 r99  
    3838define('YELLOW', 'FBEB0D'); 
    3939define('PURPLE', 'A052A0'); 
     40 
     41 
     42/** 
     43 * Implementation of hook_init(). 
     44 */ 
     45function logger_init() { 
     46  global $user; 
     47  // Workaround for collapse.js not being loaded within  _logger_fluksonians_form  when block caching is on. 
     48  if ($user->uid > 0) drupal_add_js('misc/collapse.js'); 
     49} 
    4050 
    4151/** 
     
    388398      } 
    389399    } 
    390     _logger_cache_clear('subscriptions'); 
     400    _logger_cache_clear('fluksonians'); 
    391401  } 
    392402  $destination = drupal_get_destination(); 
     
    408418  } 
    409419 
    410   _logger_cache_clear('subscriptions'); 
     420  _logger_cache_clear('fluksonians'); 
    411421  $destination = drupal_get_destination(); 
    412422  drupal_goto($destination); 
     
    493503  switch ($op) { 
    494504    case 'list': 
    495       $blocks['subscriptions']['info'] = t('Subscriptions'); 
    496       $blocks['subscriptions']['status'] = TRUE; 
    497       $blocks['subscriptions']['region'] = 'right'; 
    498       $blocks['subscriptions']['weight'] = 0; 
    499       $blocks['subscriptions']['pages'] = '<front>\nlogger/\nlogger/*'; 
    500       $blocks['subscriptions']['cache'] = BLOCK_CACHE_PER_USER; 
    501  
    502505      $blocks['fluksonians']['info'] = t('Fluksonians'); 
    503506      $blocks['fluksonians']['status'] = TRUE; 
    504       $blocks['fluksonians']['region'] = 'right'; 
     507      $blocks['fluksonians']['region'] = 'content'; 
    505508      $blocks['fluksonians']['weight'] = 1; 
    506509      $blocks['fluksonians']['pages'] = '<front>\nlogger/\nlogger/*'; 
    507       $blocks['fluksonians']['cache'] = BLOCK_CACHE_GLOBAL; 
     510      $blocks['fluksonians']['cache'] = BLOCK_CACHE_PER_USER; 
    508511 
    509512      $blocks['unit']['info'] = t('Unit'); 
     
    527530      $destination = drupal_get_destination(); 
    528531 
    529       if ($delta == 'subscriptions' && user_access('logger')) { 
    530         $result = db_query("SELECT u.uid, u.name, ur.rid 
    531                             FROM ({users} u 
    532                             INNER JOIN {user_relationships} ur ON u.uid = ur.requestee_id) 
    533                             INNER JOIN {user_relationship_types} urt ON ur.rtid = urt.rtid 
    534                             WHERE ur.requester_id = %d AND urt.name = '%s' 
    535                             ORDER BY ur.rid", $user->uid, 'subscription'); 
    536  
    537         $items = array(); 
    538         while ($subscription = db_fetch_object($result)) { 
    539           $items[] = l('[x]', 'logger/remove/'. $subscription->rid, array('attributes' => array('title' => "unsubscribe from ". $subscription->name ."'s stream"), 'query' => $destination, 'alias' => TRUE)) .' '. l($subscription->name, 'user/'. $subscription->uid, array('alias' => FALSE)); 
    540         } 
    541         $block['subject'] = t('Subscriptions'); 
    542         $block['content'] = theme('logger_item_list', $items); 
    543       } 
    544  
    545       elseif ($delta == 'fluksonians' && user_access('logger')) { 
    546         // list all users having the fluksionian role for now 
    547         // to be replaced by a real buddylist later on 
    548         $result = db_query("SELECT u.uid, u.name 
    549                             FROM ({users} u 
    550                             INNER JOIN {users_roles} ur ON u.uid = ur.uid) 
    551                             INNER JOIN {role} r ON ur.rid = r.rid 
    552                             WHERE r.name = '%s' 
    553                             ORDER BY u.name", 'fluksonian', $user->uid); 
    554         $items = array(); 
    555         while ($fluksonian = db_fetch_object($result)) { 
    556           $items[] = l('[+]', 'logger/add/'. $fluksonian->uid, array('attributes' => array('title' => "subscribe to ". $fluksonian->name ."'s stream"), 'query' => $destination, 'alias' => TRUE)) .' '. l($fluksonian->name, 'user/'. $fluksonian->uid, array('alias' => FALSE)); 
    557         } 
    558         $block['subject'] = t('Fluksonians'); 
    559         $block['content'] = theme('logger_item_list', $items); 
     532      if ($delta == 'fluksonians' && user_access('logger')) { 
     533        $block['content'] = drupal_get_form('_logger_fluksonians_form'); 
    560534      } 
    561535 
     
    616590 
    617591/** 
     592 * Generates the fluksonians block form. 
     593 */ 
     594function _logger_fluksonians_form() { 
     595  global $user; 
     596  $fluksonians = db_query("SELECT u.uid, u.name 
     597                           FROM ({users} u 
     598                           INNER JOIN {users_roles} ur ON u.uid = ur.uid) 
     599                           INNER JOIN {role} r ON ur.rid = r.rid 
     600                           WHERE r.name = '%s' AND NOT u.uid = %d 
     601                           ORDER BY u.name", 'fluksonian', $user->uid); 
     602 
     603  $subscriptions = db_query("SELECT u.uid, u.name, ur.rid 
     604                             FROM ({users} u 
     605                             INNER JOIN {user_relationships} ur ON u.uid = ur.requestee_id) 
     606                             INNER JOIN {user_relationship_types} urt ON ur.rtid = urt.rtid 
     607                             WHERE ur.requester_id = %d AND urt.name = '%s' 
     608                             ORDER BY u.name", $user->uid, 'subscription'); 
     609 
     610  $i = 0; 
     611  $rows = array(); 
     612  $row = array(); 
     613  $subscription = db_fetch_object($subscriptions); 
     614 
     615  while ($fluksonian = db_fetch_object($fluksonians)) { 
     616    if ($i > 4) { 
     617      $rows[] = $row; 
     618      $row = array(); 
     619      $i = 0; 
     620    } 
     621    if ($fluksonian->uid == $subscription->uid) { 
     622      $row[] = l('[x]', 'logger/remove/'. $subscription->rid, array('attributes' => array('title' => "unsubscribe from ". $subscription->name ."'s stream"), 'query' => $destination, 'alias' => TRUE)) .' '. l($subscription->name, 'user/'. $subscription->uid, array('alias' => FALSE)); 
     623      $subscription = db_fetch_object($subscriptions); 
     624    } 
     625    else { 
     626      $row[] = l('[+]', 'logger/add/'. $fluksonian->uid, array('attributes' => array('title' => "subscribe to ". $fluksonian->name ."'s stream"), 'query' => $destination, 'ali 
     627as' => TRUE)) .' '. l($fluksonian->name, 'user/'. $fluksonian->uid, array('alias' => FALSE)); 
     628    } 
     629    $i++; 
     630  } 
     631  $rows[] = $row; 
     632 
     633  $form['fluksonians'] = array( 
     634    '#type' => 'fieldset', 
     635    '#title' => t('Fluksonians'), 
     636    '#description' => t('Select the Fluksonians you wish to add to [+] or clear from [x] the chart.'), 
     637    '#collapsible' => TRUE, 
     638    '#collapsed' => TRUE, 
     639  ); 
     640  $form['fluksonians']['list'] = array( 
     641    '#type' => 'item', 
     642    //'#title' => t('Title'), 
     643    '#value' => theme('table', array(), $rows), 
     644  ); 
     645 
     646  return $form; 
     647} 
     648 
     649 
     650/** 
    618651 * Access callback ensuring the user account tabs are visible only to the 
    619652 * owner.