1 |
joko |
1.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 |
|
|
?> |