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 |
?> |