| 1 |
<?php |
| 2 |
|
| 3 |
/** |
| 4 |
* $Id: LinkBuilder.php,v 1.2 2003/04/06 04:35:58 joko Exp $ |
| 5 |
* |
| 6 |
* $Log: LinkBuilder.php,v $ |
| 7 |
* |
| 8 |
*/ |
| 9 |
|
| 10 |
/** |
| 11 |
* MetaBox |
| 12 |
* |
| 13 |
* This implements a "metabox widget" using phpHtmlLib. |
| 14 |
* |
| 15 |
* Its purpose is to show a boxed html div-/span- area |
| 16 |
* containing links acting as modifiers to the current page. |
| 17 |
* The link arguments are passed to down some other layers |
| 18 |
* (url, link and LinkBuilder classes) to render the query string. |
| 19 |
* |
| 20 |
* "Modifiers" toggle certain parameters in the url, let others |
| 21 |
* pass through or set some to default values. |
| 22 |
* Their implementation inside the classes mentioned above |
| 23 |
* is rather a HACK. The worst possible! |
| 24 |
* However, we try to keep the metabox api clean. |
| 25 |
* |
| 26 |
* 1. Box modes: |
| 27 |
* a) bar: renders the box in bar style (suitable for placing at the top of the page) |
| 28 |
* b) header: renders boxed items inside the header of (e.g.) a DataItem |
| 29 |
* which extends from the InfoTable having such a thing - the "title". |
| 30 |
* c) portrait: boxed items are aggregated top down inside a portrait box |
| 31 |
* (e.g. place a box of this style beside your content - visit this at the DataTree ...) |
| 32 |
* This itself uses a fresh InfoTable to render our payload into. |
| 33 |
* |
| 34 |
* 2. Link modifiers: |
| 35 |
* a) ViewAs |
| 36 |
* b) ResetFilter |
| 37 |
* c) ParentJump |
| 38 |
* |
| 39 |
* @todo Use this with phpDocumentIndex? |
| 40 |
* |
| 41 |
* @author Andreas Motl <andreas.motl@ilo.de> |
| 42 |
* @package org.netfrag.glib |
| 43 |
* @name MetaBox |
| 44 |
* |
| 45 |
*/ |
| 46 |
class MetaBox { |
| 47 |
|
| 48 |
var $_box; |
| 49 |
|
| 50 |
function MetaBox($args = array()) { |
| 51 |
$this->_args = $args; |
| 52 |
|
| 53 |
switch ($this->_args[box_mode]) { |
| 54 |
case 'bar': |
| 55 |
$this->build_bar(); |
| 56 |
break; |
| 57 |
case 'header': |
| 58 |
$this->build_header(); |
| 59 |
break; |
| 60 |
case 'portrait': |
| 61 |
$this->build_portrait(); |
| 62 |
break; |
| 63 |
default: |
| 64 |
$this->build_default(); |
| 65 |
break; |
| 66 |
} |
| 67 |
|
| 68 |
} |
| 69 |
|
| 70 |
|
| 71 |
function render() { |
| 72 |
//print Dumper($this); |
| 73 |
return $this->_box->render(); |
| 74 |
} |
| 75 |
|
| 76 |
function build_default() { |
| 77 |
$this->_box = html_span(); |
| 78 |
//$this->_box->add('n/a'); |
| 79 |
} |
| 80 |
|
| 81 |
function build_bar() { |
| 82 |
// MetaBox / Chooser - resolve some links |
| 83 |
$this->_box = html_div(); |
| 84 |
$this->_box->set_style("border: 1px black solid; padding:2px;"); |
| 85 |
//$this->_box->set_class("contentnovertical"); |
| 86 |
$this->_box->add( $this->_args['caption'], html_br() ); |
| 87 |
if ($this->_args['payload']['list']) { |
| 88 |
//$this->_box->add( "Change abstract type to (ViewAs): " ); |
| 89 |
//$this->_box->add( ", ViewAs: " ); |
| 90 |
foreach ($this->_args['payload']['list'] as $link) { |
| 91 |
if ($this->_args['payload'][meta][selected] == $link[name]) { $link[name] = '[ ' . $link[name] . ' ]'; } |
| 92 |
$this->_box->add( html_a( $link[url], $link[name] ), _HTML_SPACE ); |
| 93 |
} |
| 94 |
} |
| 95 |
} |
| 96 |
|
| 97 |
|
| 98 |
function build_header() { |
| 99 |
|
| 100 |
// MetaBox / Chooser - resolve / display some links which probably have been declared in some other layer |
| 101 |
$this->_box = html_span(); |
| 102 |
|
| 103 |
// some stuff we don't need here since this should be as transparent / lightweight as possible |
| 104 |
// KISS! |
| 105 |
//$this->_box->set_style("border: 1px black solid; padding:2px;"); |
| 106 |
//$this->_box->set_class("contentnovertical"); |
| 107 |
$this->_box->add( $this->_args['caption'] ); |
| 108 |
|
| 109 |
// just the color should be, hmmm white! |
| 110 |
//$this->_box->set_style("color: white;"); |
| 111 |
|
| 112 |
// stick it to the right side of the header bar |
| 113 |
//$this->_box->set_style("text-align: right; width: 100%; border: 1px solid;"); |
| 114 |
//$this->_box->set_style("text-align: right; width: auto; float: right;"); |
| 115 |
//$this->_box->set_style("text-align: right; border: 1px solid; width: 500; float: none;"); |
| 116 |
$this->_box->set_style("position: absolute; right:20px;"); |
| 117 |
|
| 118 |
if ($this->_args['payload']['list']) { |
| 119 |
|
| 120 |
// optional labels - don't required here since we require transparency! |
| 121 |
//$this->_box->add( "Change abstract type to (ViewAs): " ); |
| 122 |
//$this->_box->add( ", ViewAs: " ); |
| 123 |
|
| 124 |
foreach ($this->_args['payload']['list'] as $link) { |
| 125 |
if ($this->_args['payload'][meta][selected] == $link[name]) { $link[name] = '[ ' . $link[name] . ' ]'; } |
| 126 |
$link = html_a( $link[url], $link[name] ); |
| 127 |
$link->set_style("color: yellow;"); |
| 128 |
$this->_box->add( $link, _HTML_SPACE ); |
| 129 |
} |
| 130 |
} |
| 131 |
|
| 132 |
} |
| 133 |
|
| 134 |
|
| 135 |
function build_portrait() { |
| 136 |
|
| 137 |
// MetaBox / Chooser - resolve some links |
| 138 |
$this->_box = html_span(); |
| 139 |
|
| 140 |
//$this->_box->set_style("border: 1px black solid; padding:2px;"); |
| 141 |
$this->_box->set_style("border: 1px solid black; padding:2px; width: 100px; float: right;"); |
| 142 |
|
| 143 |
//$this->_box->set_class("contentnovertical"); |
| 144 |
$this->_box->add( $this->_args['caption'] ); |
| 145 |
if ($this->_args['payload']['list']) { |
| 146 |
//$this->_box->add( "Change abstract type to (ViewAs): " ); |
| 147 |
//$this->_box->add( ", ViewAs: " ); |
| 148 |
foreach ($this->_args['payload']['list'] as $link) { |
| 149 |
if ($this->_args['payload']['meta']['selected'] == $link[name]) { $link[name] = '[ ' . $link[name] . ' ]'; } |
| 150 |
|
| 151 |
//$this->_box->add( html_a( $link[url], $link[name] ), _HTML_SPACE ); |
| 152 |
$this->_box->add( html_a( $link[url], $link[name] ), html_br() ); |
| 153 |
|
| 154 |
} |
| 155 |
} |
| 156 |
} |
| 157 |
|
| 158 |
|
| 159 |
} |
| 160 |
|
| 161 |
?> |