Tworzenie portletu menu użytkownika ========================== Bazując na analizie wymagań, będziemy potrzebowali trzech portletów: portletu "menu użytkownika", "chmury tagów" oraz portletu "ostatnich komentarzy". Utworzymy te portlety poprzez rozszerzenie widżetu [CPortlet] dostarczonego przez Yii. W części tej, utworzymy nasz pierwszy, konkretny portlet - portlet menu użytkownika, który wyświetla listę pozycji w menu, które są dostępne tylko dla uwierzytelnionych użytkowników. Menu zawiera cztery pozycje: * zatwierdź komentarz: hiperłącze, które prowadzi do lity komentarzy czekających na zatwierdzenie; * utwórz nową wiadomość: hiperłącze, które prowadzi do strony tworzenia wiadomości; * zarządzanie wiadomościami: hiperłącze, które prowadzi do strony zarządzania wiadomościami; * wylogowanie: link będący przyciskiem, który wyloguje aktualnego użytkownika; Tworzenie klasy `UserMenu` ------------------------- Tworzymy klasę `UserMenu` opisującą część logiczną portletu menu użytkownika. Klasa ta jest zachowana w pliku `/wwwroot/blog/protected/components/UserMenu.php`, który posiada następującą zawartość: ~~~ [php] Yii::import('zii.widgets.CPortlet'); class UserMenu extends CPortlet { public function init() { $this->title=CHtml::encode(Yii::app()->user->name); parent::init(); } protected function renderContent() { $this->render('userMenu'); } } ~~~ Klasa `UserMenu` dziedziczy z klasy `CPortlet` z biblioteki `zii`. Nadpisuje zarówno metodę `init()` jak i metodę `renderContent()` z klasy `CPortlet`. Pierwsza metoda ustawia tytuł jako nazwę aktualnego użytkownika; druga generuje zawartość ciała portletu poprzez wygenerowanie widoku o nazwie `userMenu`. > Tip|Wskazówka: Zauważ, że dołączamy jawnie klasę `CPortlet` poprzez wywołanie metody `Yii::import()` zanim odwołamy się do niej po raz pierwszy. Dzieje się tak, ponieważ `CPortlet` jest częścią projektu `zii` - oficjalnej biblioteki rozszerzeń dla Yii. Ze względu na wydajność, klasy w tym projekcie nie są wymieniane jako klasy podstawowe (ang. core classes). Dlatego też, musimy je zaimportować zanim ich użyjemy po raz pierwszy. Tworzenie widoku `userMenu` ------------------------ Następnie, tworzymy widok `userMenu`, który jest zapisany w pliku `/wwwroot/blog/protected/components/views/userMenu.php`: ~~~ [php]