155 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
<?php
 | 
						|
// $Id$
 | 
						|
 | 
						|
function block_help() {
 | 
						|
 ?>
 | 
						|
  <P>Blocks are the boxes visible in the side bars on the left- and right-hand side of the website.  They are either exported by the engine or by any of the active modules.  To really get your teeth into a drupal website, you are going to have to deal with blocks and administering blocks in a fairly sophisticated fashion.  This means you will need to understand how the block placement strategy works.</P>
 | 
						|
  <P>The placement of blocks is delegated to the administrator. In most cases (i.e., the "custom" blocks), the user has complete control -- using preferences -- over whether or not they are enabled.</P>
 | 
						|
  <P>An administrator can lay out and arrange the available blocks to fit in two regions: "left" and "right".  Regions simply contain blocks.  In addition, an administrator can assign each block (within a region) a weight to sort them vertically.  The heavier blocks will sink and the lighter blocks will be positioned nearer the top.</P>
 | 
						|
  <P>As mentioned, blocks may be arranged to fit in two regions: left and right.  For theme builders, each region is identified by a corresponding constant: "left" and "right".</P>
 | 
						|
 <?php
 | 
						|
}
 | 
						|
 | 
						|
function block_perm() {
 | 
						|
  return array("administer blocks");
 | 
						|
}
 | 
						|
 | 
						|
function block_link($type) {
 | 
						|
  if ($type == "admin" && user_access("administer blocks")) {
 | 
						|
    $links[] = "<a href=\"admin.php?mod=block\">blocks</a>";
 | 
						|
  }
 | 
						|
 | 
						|
  return $links ? $links : array();
 | 
						|
}
 | 
						|
 | 
						|
function block_admin_save($edit) {
 | 
						|
  foreach ($edit as $key=>$value) {
 | 
						|
    db_query("UPDATE blocks SET region = '". check_input($value[region]) ."', status = '". check_input($value[status]) ."', weight = '". check_input($value[weight]) ."' WHERE name = '". check_input($key) ."'");
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function block_admin_display() {
 | 
						|
  $result = db_query("SELECT * FROM blocks ORDER BY module");
 | 
						|
 | 
						|
  // Generate output:
 | 
						|
  $output .= "<FORM ACTION=\"admin.php?mod=block\" METHOD=\"post\">\n";
 | 
						|
  $output .= "<TABLE BORDER=\"1\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
 | 
						|
  $output .= " <TR><TH>block</TH><TH>module</TH><TH>status</TH><TH>weight</TH><TH>region</TH></TR>\n";
 | 
						|
 | 
						|
  while ($block = db_fetch_object($result)) {
 | 
						|
    $module = module_hook($block->module, "admin") ? "<A HREF=\"admin.php?mod=$block->module\">$block->module</A>" : $block->module;
 | 
						|
 | 
						|
    $status .= "<SELECT NAME=\"edit[$block->name][status]\">\n";
 | 
						|
    $status .= " <OPTION VALUE=\"2\"". (($block->status == 2) ? " SELECTED" : "") .">enabled: always</OPTION>\n";
 | 
						|
    $status .= " <OPTION VALUE=\"1\"". (($block->status == 1) ? " SELECTED" : "") .">enabled: custom</OPTION>\n";
 | 
						|
    $status .= " <OPTION VALUE=\"0\"". (($block->status == 0) ? " SELECTED" : "") .">disabled</OPTION>\n";
 | 
						|
    $status .= "</SELECT>\n";
 | 
						|
 | 
						|
    $weight .= "<SELECT NAME=\"edit[$block->name][weight]\">\n";
 | 
						|
    for ($count = 0; $count < 10; $count++) {
 | 
						|
      $weight .= "<OPTION VALUE=\"$count\"". (($block->weight == $count) ? " SELECTED" : "") .">$count</OPTION>\n";
 | 
						|
    }
 | 
						|
    $weight .= "</SELECT>\n";
 | 
						|
 | 
						|
    $region .= "<SELECT NAME=\"edit[$block->name][region]\">\n";
 | 
						|
    $region .= " <OPTION VALUE=\"0\"". (($block->region == 0) ? " SELECTED" : "") .">left</OPTION>\n";
 | 
						|
    $region .= " <OPTION VALUE=\"1\"". (($block->region == 1) ? " SELECTED" : "") .">right</OPTION>\n";
 | 
						|
    $region .= "</SELECT>\n";
 | 
						|
 | 
						|
    $output .= " <TR><TD>". $block->name ."</TD><TD ALIGN=\"center\">$module</TD><TD>$status</TD><TD>$weight</TD><TD>$region</TD></TR>\n";
 | 
						|
 | 
						|
    unset($status);
 | 
						|
    unset($weight);
 | 
						|
    unset($region);
 | 
						|
  }
 | 
						|
 | 
						|
  $output .= "</TABLE>\n";
 | 
						|
  $output .= "<INPUT NAME=\"op\" TYPE=\"submit\" VALUE=\"Save blocks\">\n";
 | 
						|
  $output .= "</FORM>\n";
 | 
						|
 | 
						|
  print $output;
 | 
						|
}
 | 
						|
 | 
						|
function block_admin_preview() {
 | 
						|
 | 
						|
  $result = db_query("SELECT * FROM blocks WHERE status > 0 AND region = 0 ORDER BY weight");
 | 
						|
  $lblocks .= "<TABLE BORDER=\"0\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
 | 
						|
  while ($block = db_fetch_object($result)) $lblocks .= " <TR><TD NOWRAP>". ($block->status == 2 ? "<B>$block->name</B>" : $block->name) ."</TD><TD>$block->weight</TD></TR>\n";
 | 
						|
  $lblocks .= "</TABLE>\n";
 | 
						|
 | 
						|
  $result = db_query("SELECT * FROM blocks WHERE status > 0 AND region = 1 ORDER BY weight");
 | 
						|
  $rblocks .= "<TABLE BORDER=\"0\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
 | 
						|
  while ($block = db_fetch_object($result)) $rblocks .= " <TR><TD NOWRAP>". ($block->status == 2 ? "<B>$block->name</B>" : $block->name) ."</TD><TD>$block->weight</TD></TR>\n";
 | 
						|
  $rblocks .= "</TABLE>\n";
 | 
						|
 | 
						|
  $output .= "<H3>layout scheme #1:</H3>\n";
 | 
						|
  $output .= "<TABLE BORDER=\"1\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
 | 
						|
  $output .= " <TR><TD ALIGN=\"center\" COLSPAN=\"3\">header</TD></TR>\n";
 | 
						|
  $output .= " <TR><TD>\n". ($lblocks ? $lblocks : " ") ."</TD><TD WIDTH=\"300\"> </TD><TD>\n". ($rblocks ? $rblocks : " ") ."</TD></TR>\n";
 | 
						|
  $output .= " <TR><TD ALIGN=\"center\" COLSPAN=\"3\">footer</TD></TR>\n";
 | 
						|
  $output .= "</TABLE>\n";
 | 
						|
 | 
						|
  $result = db_query("SELECT * FROM blocks WHERE status > 0 ORDER BY weight");
 | 
						|
  $blocks .= "<TABLE BORDER=\"0\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
 | 
						|
  while ($block = db_fetch_object($result)) $blocks .= " <TR><TD NOWRAP>". ($block->status == 2 ? "<B>$block->name</B>" : $block->name) ."</TD><TD>$block->weight</TD></TR>\n";
 | 
						|
  $blocks .= "</TABLE>\n";
 | 
						|
 | 
						|
  $output .= "<H3>layout scheme #2:</H3>\n";
 | 
						|
  $output .= "<TABLE BORDER=\"1\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
 | 
						|
  $output .= " <TR><TD ALIGN=\"center\" COLSPAN=\"2\">header</TD></TR>\n";
 | 
						|
  $output .= " <TR><TD WIDTH=\"400\"> </TD><TD>\n". ($blocks ? $blocks : " ") ."</TD></TR>\n";
 | 
						|
  $output .= " <TR><TD ALIGN=\"center\" COLSPAN=\"2\">footer</TD></TR>\n";
 | 
						|
  $output .= "</TABLE>\n";
 | 
						|
 | 
						|
  $output .= "<H3>layout scheme #3:</H3>\n";
 | 
						|
  $output .= "<TABLE BORDER=\"1\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
 | 
						|
  $output .= " <TR><TD ALIGN=\"center\" COLSPAN=\"2\">header</TD></TR>\n";
 | 
						|
  $output .= " <TR><TD>\n". ($blocks ? $blocks : " ") ."</TD><TD WIDTH=\"400\"> </TD></TR>\n";
 | 
						|
  $output .= " <TR><TD ALIGN=\"center\" COLSPAN=\"2\">footer</TD></TR>\n";
 | 
						|
  $output .= "</TABLE>\n";
 | 
						|
 | 
						|
  print $output;
 | 
						|
}
 | 
						|
 | 
						|
function block_init() {
 | 
						|
 | 
						|
  $result = db_query("SELECT * FROM modules");
 | 
						|
  while ($module = db_fetch_object($result)) {
 | 
						|
    module_rehash($module->name);
 | 
						|
  }
 | 
						|
 | 
						|
  foreach (module_list() as $name) {
 | 
						|
    module_rehash($name);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function block_admin() {
 | 
						|
  global $op, $edit;
 | 
						|
 | 
						|
  if (user_access("administer blocks")) {
 | 
						|
 | 
						|
    print "<SMALL><A HREF=\"admin.php?mod=block\">configure</A> | <A HREF=\"admin.php?mod=block&op=preview\">preview</A> | <A HREF=\"admin.php?mod=block&op=help\">help</A></SMALL><HR>\n";
 | 
						|
 | 
						|
    block_init();
 | 
						|
 | 
						|
    switch ($op) {
 | 
						|
      case "help":
 | 
						|
        block_help();
 | 
						|
        break;
 | 
						|
      case "preview":
 | 
						|
        block_admin_preview();
 | 
						|
        break;
 | 
						|
      case "Save blocks":
 | 
						|
        block_admin_save($edit);
 | 
						|
        // fall through
 | 
						|
      default:
 | 
						|
        block_admin_display();
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else {
 | 
						|
    print message_access();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
?>
 |