17 |
17 |
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18 |
18 |
*/
|
19 |
19 |
/**
|
20 |
|
* Description of PageTree
|
|
20 |
* PageTree generator
|
21 |
21 |
*
|
22 |
22 |
* @category WbACP
|
23 |
23 |
* @package WbACP_Pages
|
24 |
|
* @author Werner v.d. Decken <wkl@isteam.de>
|
25 |
|
* @copyright Werner v.d. Decken <wkl@isteam.de>
|
|
24 |
* @author Werner v.d.Decken <wkl@isteam.de>
|
|
25 |
* @copyright Werner v.d.Decken <wkl@isteam.de>
|
26 |
26 |
* @license http://www.gnu.org/licenses/gpl.html GPL License
|
27 |
27 |
* @version 1.0.0
|
28 |
28 |
* @revision $Revision$
|
... | ... | |
67 |
67 |
}
|
68 |
68 |
/**
|
69 |
69 |
* parse the page tree and return
|
|
70 |
* @param int use page-ID as root of the generated page tree. (default: 0)
|
70 |
71 |
* @return type
|
71 |
72 |
*/
|
72 |
|
public function parseTree() {
|
73 |
|
return $this->_createTree();
|
|
73 |
public function parseTree($iTreeRoot = 0) {
|
|
74 |
return $this->_createTree($iTreeRoot);
|
74 |
75 |
}
|
75 |
76 |
/**
|
76 |
77 |
* parse the page tree and print it out
|
|
78 |
* @param int use page-ID as root of the generated page tree. (default: 0)
|
77 |
79 |
*/
|
78 |
|
public function displayTree() {
|
79 |
|
echo $this->parseTree();
|
|
80 |
public function displayTree($iTreeRoot = 0) {
|
|
81 |
echo $this->parseTree($iTreeRoot);
|
80 |
82 |
}
|
81 |
83 |
/**
|
82 |
84 |
* total number of found pages which are visible for actual user
|
... | ... | |
123 |
125 |
}
|
124 |
126 |
/**
|
125 |
127 |
* create a page tree as a well formatted, unordered list
|
|
128 |
* @param int use page-ID as root of the generated page tree. (default: 0)
|
126 |
129 |
* @return string the whoole list
|
127 |
130 |
*/
|
128 |
|
private function _createTree()
|
|
131 |
private function _createTree($iTreeRoot = 0)
|
129 |
132 |
{
|
130 |
133 |
// compose the complete list
|
131 |
134 |
$sOutput = ''
|
132 |
135 |
// build the head
|
133 |
|
. $this->_Tabs(0 , true).'<div class="pages_list">'.PHP_EOL
|
|
136 |
. $this->_Tabs(0 , true).'<div class="jsadmin pages_list">'.PHP_EOL
|
134 |
137 |
. $this->_Tabs(1).'<table>'.PHP_EOL
|
135 |
138 |
. $this->_Tabs(1).'<tbody>'.PHP_EOL
|
136 |
139 |
. $this->_Tabs(1).'<tr class="pages_list_header">'.PHP_EOL
|
... | ... | |
146 |
149 |
. $this->_Tabs(-1).'</tbody>'.PHP_EOL
|
147 |
150 |
. $this->_Tabs(-1).'</table>'.PHP_EOL
|
148 |
151 |
// generate the page lines
|
149 |
|
. $this->_IterateTree()
|
|
152 |
. $this->_IterateTree($iTreeRoot)
|
150 |
153 |
// build the footer
|
151 |
154 |
. $this->_Tabs(-1).'</div>'.PHP_EOL;
|
152 |
155 |
;
|
... | ... | |
201 |
204 |
}
|
202 |
205 |
/**
|
203 |
206 |
* iterate through all nodes which having subnodes
|
204 |
|
* @param integer $iParent
|
|
207 |
* @param integer start iteration from this parent page ( 0 = root)
|
205 |
208 |
* @return string all of the item lines
|
206 |
209 |
*/
|
207 |
210 |
private function _IterateTree($iParent = 0)
|
... | ... | |
225 |
228 |
$iMinPosition = 1;
|
226 |
229 |
while($aPage = $oPages->fetchRow(MYSQL_ASSOC))
|
227 |
230 |
{ // iterate through the current branch
|
|
231 |
if($this->_aReg['PAGE_LEVEL_LIMIT'] && ($aPage['level'] > $this->_aReg['PAGE_LEVEL_LIMIT'])) {
|
|
232 |
return '';
|
|
233 |
}
|
228 |
234 |
$aPage['min_position'] = ($aPage['position'] < $iMinPosition ? $aPage['position'] : $iMinPosition);
|
229 |
235 |
$this->_iLineColor = $this->_iPagesTotal++ % 2;
|
230 |
236 |
$aPage['iswriteable'] = false;
|
... | ... | |
278 |
284 |
}
|
279 |
285 |
$sOutput .= '</td>'.PHP_EOL;
|
280 |
286 |
// --- TAB 2 --- (menu title) --------------------------------------------------------
|
281 |
|
switch($aPage['visibility']):
|
282 |
|
case 'private':
|
283 |
|
$sIcon = 'private_16.png';
|
284 |
|
$sText = $this->_TEXT['PRIVATE'];
|
285 |
|
break;
|
286 |
|
case 'registered':
|
287 |
|
$sIcon = 'keys_16.png';
|
288 |
|
$sText = $this->_TEXT['REGISTERED'];
|
289 |
|
break;
|
290 |
|
case 'hidden':
|
291 |
|
$sIcon = 'hidden_16.png';
|
292 |
|
$sText = $this->_TEXT['HIDDEN'];
|
293 |
|
break;
|
294 |
|
case 'none':
|
295 |
|
$sIcon = 'none_16.png';
|
296 |
|
$sText = $this->_TEXT['NONE'];
|
297 |
|
break;
|
298 |
|
case 'deleted':
|
299 |
|
$sIcon = 'deleted_16.png';
|
300 |
|
$sText = $this->_TEXT['DELETED'];
|
301 |
|
break;
|
302 |
|
default: // public
|
303 |
|
$sIcon = 'visible_16.png';
|
304 |
|
$sText = $this->_TEXT['PUBLIC'];
|
305 |
|
break;
|
306 |
|
endswitch;
|
307 |
287 |
$sOutput .= $this->_Tabs(0).'<td class="list_menu_title">';
|
308 |
288 |
if($this->_oApp->get_permission('pages_modify') && $aPage['iswriteable']) {
|
309 |
289 |
$sOutput .= '<a href="'.$this->_aReg['ACP_REL'].'/pages/modify.php?page_id='
|
310 |
290 |
. $aPage['page_id'].'" title="'.$this->_TEXT['MODIFY'].'">';
|
311 |
291 |
}
|
312 |
|
$sOutput .= '<img src="'.$this->_aReg['THEME_REL'].'/images/'.$sIcon.'" '
|
313 |
|
. 'alt="'.$this->_TEXT['VISIBILITY'].': '.$sText.'" class="page_list_rights" />';
|
|
292 |
$sIcon = $this->_aReg['THEME_REL'].'/images/'.$aPage['visibility'].'_16.png';
|
|
293 |
if(!is_readable($sIcon)) {
|
|
294 |
$sIcon = $this->_aReg['THEME_REL'].'/images/public_16.png';
|
|
295 |
}
|
|
296 |
$sOutput .= '<img src="'.$sIcon.'" alt="'.$this->_TEXT['VISIBILITY'].': '
|
|
297 |
. $sText.'" class="page_list_rights" />';
|
314 |
298 |
if($this->_oApp->get_permission('pages_modify') && $aPage['iswriteable']) {
|
315 |
299 |
$sOutput .= '<span class="modify_link">'.$aPage['menu_title'].'</span></a>';
|
316 |
300 |
}else {
|
added variable root page for tree generation in class a_pages_PageTree
fixed missing css class jsadmin for drop/down activation in PageTree