Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Decorator implements IDecorator, IInjectable {
- private $_view;
- private $_model;
- private $headerblock='';
- private $infoblock = '';
- private $maincontent = '';
- private $editblock = '';
- private $navblock = '';
- public function __construct($injector) {
- $this->_model = $injector->get('IModel');
- }
- //----------------------------- setup parent view
- public function setup($view) {
- $this->_view = $view;
- }
- //---------------------------- get header block
- public function getHeader() {
- return $this->headerblock;
- }
- //---------------------------- get content block
- public function getContent() {
- return $this->infoblock.$this->maincontent;
- }
- //---------------------------- get footer block
- public function getFooter() {
- return $this->editblock. $this->navblock;
- }
- //---------------------------- set message
- public function setMessage($msg) {
- $this->infoblock = $msg;
- }
- //---------------------------- draw buttons for posts
- private function _drawButtons($record_id) {
- $s = '<div class="entryeditpanel">';
- $s .= '<div class="editbutton"><a href="'.
- $this->_view->route_edit_form($record_id).'">edit</a></div>';
- $s .= '<div class="deletebutton"><a href="'.
- $this->_view->route_delete_form($record_id).'">delete</a></div>';
- $s .= '</div>';
- return $s;
- }
- //---------------------------- draw page entry
- private function _drawPageEntry($item) {
- $flds = array();
- foreach ($item as $key => $val) {
- foreach ($this->_model->fields as $fld) {
- if ($fld['fn']==$key) {
- if (isset($fld['fl'])) {
- $flds[] = array ('class'=>$key, 'value'=>$fld['fc']
- [array_search($val, $fld['fl'])]);
- }
- else
- if ($fld['fc']!='hidden')
- $flds[] = array ('class'=>$key, 'value'=>$val);
- break;
- }
- }
- }
- $s ='<div class="entrytitle"><a href="'.
- $this->_view->route_view_single($item[$this->_model->_idfield]).'">'.$flds[0]['value'].'</a></div>';
- array_shift($flds);
- foreach ($flds as $el) {
- $s .='<div class="'.$el['class'].'">'.$el['value'].'</div>';
- }
- $s .= $this->_drawButtons($item[$this->_model->_idfield]);
- return $s;
- }
- //---------------------------- draw page
- private function _drawPage() {
- $s = '<div class="page">';
- $items = $this->_view->v_items;
- for ($i=0; $i<count($items); $i++) {
- $s .= $this->_drawPageEntry($items[$i]);
- }
- $s .= '</div>';
- $this->maincontent = $s;
- }
- //---------------------------- draw single item
- public function _drawSingle() {
- $flds = array();
- foreach ($this->_model->fields as $fld) {
- if (isset($fld['fl']))
- $flds[] = array ('class'=>$fld['fn'], 'value'=>$fld['fc']
- [array_search($this->_view->get($fld['fn']), $fld['fl'])]);
- else
- if ($fld['fc']!='hidden')
- $flds[] = array ('class'=>$fld['fn'],
- 'value'=>$this->_view->get($fld['fn']));
- }
- $this->headerblock = $flds[0]['value'];
- $s = '';
- for ($i=1; $i<count($flds); $i++) {
- $s .= '<div class="'.$flds[$i]['class'].'">'.$flds[$i]['value'].'</div>';
- }
- $this->maincontent = $s;
- }
- //---------------------------- draw form for adding or editing
- public function _drawForm($add_or_edit) {
- if ($add_or_edit == 'add')
- $action = $this->_view->route_insert();
- else
- $action = $this->_view->route_update($this->_view->get($this->_model->_idfield));
- $this->_view->_form->set_action_route($action);
- $this->_view->_form->setCancelRoute($this->_view->route_view_page($this->_view->v_nav_pageid));
- if ($add_or_edit == 'edit') {
- $flds = array();
- foreach ($this->_model->fields as $fld) {
- if (array_key_exists($fld['fn'], $this->_model->_postvars)) {
- $flds[$fld['fn']] = $this->_view->get($fld['fn']);
- }
- }
- $this->_view->_form->set_field_values($flds);
- }
- $this->maincontent = $this->_view->_form->draw();
- }
- //---------------------------- draw navigation
- private function _drawNavigation() {
- $s ='<div class="navigation"><ul>';
- if ($this->_view->v_nav_numpages>1)
- for ($i=0; $i < $this->_view->v_nav_numpages; $i++) {
- $s .='<li>';
- if ($i== $this->_view->v_nav_pageid) {
- $s .= ($i+1);
- } else {
- $s .= '<a href="'. $this->_view->route_view_page($i).'">'.($i+1).'</a>';
- }
- $s .= '</li>';
- }
- $s .= '</ul></div>';
- $this->navblock = $s;
- }
- //---------------------------- draw edit block
- public function _drawEditPanel($single=true) {
- $s = '<div class="editpanel">';
- $s .= '<div class="addbutton"><a href="'.$this->_view->route_add_form().'">add</a></div>';
- if ($single) {
- $s .= '<div class="editbutton"><a href="'.
- $this->_view->route_edit_form($this->_view->get($this->_model->_idfield)).'">edit</a></div>';
- $s .= '<div class="deletebutton"><a href="'.
- $this->_view->route_delete_form($this->_view->get($this->_model->_idfield)).'">delete</a></div>';
- $s .= '<div class="backtolistbutton"><a href="'.
- $this->_view->route_view_page($this->_view->v_nav_pageid).'">back to list</a></div>';
- }
- $s .= '</div>';
- $this->editblock = $s;
- }
- //----------------------------- draw page and navigation
- public function _drawPageEditNav() {
- $this->_drawPage();
- $this->_drawEditPanel(false);
- $this->_drawNavigation();
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement