public function generate($grouped = true) { $objT = new \FrontendTemplate($grouped ? 'watchlist_grouped' : 'watchlist'); if ($this->isEmpty()) { $objT->empty = $GLOBALS['TL_LANG']['WATCHLIST']['empty']; return $objT->parse(); } $arrItems = array(); $arrParents = array(); $i = 0; while (list($id, $item) = each($this->arrItems)) { // get view class by type $strClass = $GLOBALS['WLV'][$item->type]; if (!class_exists($strClass)) { continue; } ++$i; $strategy = new $strClass(); $view = new WatchlistItemView($strategy); $cssClass = trim(($i == 1 ? 'first ' : '') . ($i == $this->count() ? 'last ' : '') . ($i % 2 == 0 ? 'odd ' : 'even ')); if (!isset($arrParents[$item->pageID])) { $objParentT = new \FrontendTemplate('watchlist_parents'); $objParentT->items = $this->generateParentList(\PageModel::findByPk($item->pageID)); $arrParents[$item->pageID] = $objParentT->parse(); } $objItemT = new \FrontendTemplate('watchlist_item'); $objItemT->cssClass = $cssClass; $objItemT->item = $view->generate($item, $this); if ($grouped) { $arrItems[$item->pageID]['page'] = $arrParents[$item->pageID]; $arrItems[$item->pageID]['items'][$id] = $objItemT->parse(); } else { $arrPids[$item->pageID] = $arrParents[$item->pageID]; $arrItems[$id] = $objItemT->parse(); } } $objT->pids = array_keys($arrParents); $objT->items = $arrItems; $objT->actions = $this->generateGlobalActions(); return $objT->parse(); }