Advertisement
terorama

WP / inc / utils / decorator.inc.php

May 29th, 2013
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.31 KB | None | 0 0
  1. <?php
  2.  
  3. class SimpleDecorator extends Decorator{
  4.  
  5.    private $headerblock='';
  6.    
  7.    private $infoblock = '';
  8.    private $maincontent = '';
  9.  
  10.    private $editblock = '';
  11.    private $navblock = '';
  12.  
  13.    //----------------------------   get header block  
  14.    public function getHeader() {  
  15.       return $this->headerblock;
  16.    }
  17.    
  18.    //----------------------------   get content block  
  19.    public function getContent() {  
  20.       return $this->infoblock.$this->maincontent;
  21.    }
  22.    
  23.    //----------------------------   get footer block
  24.    public function getFooter() {
  25.       return $this->editblock. $this->navblock;
  26.    }
  27.    
  28.    //----------------------------   set message
  29.    public function setMessage($msg) {
  30.       $this->infoblock = $msg;
  31.    }
  32.    
  33.  
  34.    //----------------------------   draw buttons for posts
  35.    private function _drawButtons($view, $record_id, $item) {
  36.    
  37.       $s = '<div class="entryeditpanel">';
  38.          
  39.           $s .= $this->dispatchEvent('beforeDrawEditButtons', $record_id, $item);
  40.      
  41.           $s .= '<div class="editbutton"><a href="'.
  42.              $view->route_edit_form($record_id).'">edit</a></div>';  
  43.              
  44.           $s .= '<div class="deletebutton"><a href="'.
  45.              $view->route_delete_form($record_id).'">delete</a></div>';
  46.  
  47.           $s .= $this->dispatchEvent('afterDrawEditButtons', $record_id, $item);             
  48.              
  49.           $s .= '</div>';
  50.          
  51.           $s .= $this->dispatchEvent('afterRow', $record_id, $item);
  52.          
  53.           return $s;
  54.    }
  55.    
  56.    
  57.    //----------------------------   draw page entry
  58.    
  59.    private function _drawPageEntry($view, $item) {
  60.    
  61.      
  62.           $flds = array();
  63.          
  64.           foreach ($item as $key => $val) {
  65.              if ($key!='idfield') {
  66.              
  67.                   $s = $this->dispatchEvent('fieldFilter',$key, $val['value'],$item);
  68.                   $flds[] = array ('class'=>$key, 'value'=>($s ? $s : $val['value']));
  69.              }               
  70.           }
  71.  
  72.           $s ='<div class="entrytitle"><a href="'.
  73.              $view->route_view_single($item['idfield']).'">'.$flds[0]['value'].'</a></div>';
  74.          
  75.           array_shift($flds);
  76.          
  77.           foreach ($flds as $el) {
  78.              $s .='<div class="'.$el['class'].'">'.$el['value'].'</div>';      
  79.            }
  80.           $s .= $this->_drawButtons($view, $item['idfield'], $item);
  81.          
  82.           return $s;
  83.    }
  84.    
  85.    //----------------------------   draw page
  86.    
  87.    private function _drawPage($view) {
  88.    
  89.       $s = '<div class="page">';  
  90.       $items = $view->v_items;
  91.    
  92.       for ($i=0; $i<count($items); $i++) {
  93.          
  94.              //--------------- draw captions
  95.              if ($i==0) {
  96.                 foreach ($items[$i] as $key=>$val) {
  97.                    if ($key!='idfield')
  98.                       $s .= '<div class="caption" >'.$val['caption'].'</div>';     
  99.                 }
  100.              }
  101.              $s .= '<div class="clearfix"></div>';
  102.          
  103.              $s .= $this->_drawPageEntry($view, $items[$i]);
  104.       }
  105.       $s .= '</div>';  
  106.       $this->maincontent = $s;
  107.    }
  108.    
  109.    //----------------------------   draw single item
  110.    public function _drawSingle($view) {
  111.    
  112.           $flds = array();
  113.          
  114.           foreach ($view->v_item as $key=>$value) {
  115.          
  116.               if ($key!='idfield')
  117.                  $flds[] = array ('class'=>$key, 'value'=>$value );
  118.           }  
  119.           $this->headerblock = $flds[0]['value'];
  120.           $s = '';
  121.           for ($i=1; $i<count($flds); $i++) {        
  122.          
  123.              $s .= '<div class="'.$flds[$i]['class'].'">'.$flds[$i]['value'].'</div>';
  124.           }
  125.           $this->maincontent = $s;
  126.          
  127.    }
  128.    
  129.    //----------------------------   draw form for adding or editing
  130.    
  131.    public function _drawForm($view, $add_or_edit) {
  132.    
  133.       if ($add_or_edit == 'add')
  134.          
  135.              $action = $view->route_insert();
  136.           else
  137.              $action = $view->route_update($view->v_item['idfield']);
  138.                  
  139.       $view->_form->set_action_route($action);       
  140.       $view->_form->setCancelRoute($view->route_view_page($view->v_nav_pageid));   
  141.  
  142.       if ($add_or_edit == 'edit') {      
  143.      
  144.            $view->_form->set_field_values($view->v_item);
  145.          }
  146.          
  147.          $this->maincontent =  $view->_form->draw();
  148.          
  149.    }
  150.    
  151.    //---------------------------- draw navigation
  152.    private function _drawNavigation($view) {
  153.    
  154.      
  155.       $s ='<div class="navigation"><ul>';
  156.      
  157.           if ($view->v_nav_numpages>1)
  158.              for ($i=0; $i < $view->v_nav_numpages; $i++) {
  159.              
  160.                  $s .='<li>';
  161.                  
  162.              if ($i== $view->v_nav_pageid) {          
  163.                     $s .= ($i+1);                      
  164.                  } else {                
  165.                     $s .= '<a href="'. $view->route_view_page($i).'">'.($i+1).'</a>';            
  166.                  }
  167.                  
  168.                  $s .= '</li>';
  169.           }
  170.           $s .= '</ul></div>';
  171.          
  172.           $this->navblock = $s;
  173.    }
  174.    
  175.     //----------------------------   draw edit block
  176.    
  177.    public function _drawEditPanel($view, $single=true) {
  178.    
  179.       $s = '<div class="editpanel">';
  180.      
  181.           $s .= $this->dispatchEvent('beforeEditPanel', $record_id, $item);
  182.          
  183.           $s .= '<div class="addbutton"><a href="'.$view->route_add_form().'">add</a></div>';
  184.          
  185.          
  186.           if ($single) {
  187.          
  188.              $s .= '<div class="editbutton"><a href="'.
  189.                        $view->route_edit_form($view->v_item['idfield']).'">edit</a></div>';
  190.                                                                  
  191.              $s .= '<div class="deletebutton"><a href="'.
  192.                       $view->route_delete_form($view->v_item['idfield']).'">delete</a></div>';
  193.                                                                  
  194.                  $s .= '<div class="backtolistbutton"><a href="'.
  195.                                   $view->route_view_page($view->v_nav_pageid).'">back to list</a></div>';                
  196.           }                      
  197.           $s .= $this->dispatchEvent('afterEditPanel', $record_id, $item);
  198.           $s .= '</div>';
  199.          
  200.           $this->editblock = $s;
  201.          
  202.    }
  203.    
  204.    //-----------------------------   draw page and navigation
  205.    public function _drawPageEditNav($view) {
  206.      
  207.           $this->_drawPage($view);
  208.           $this->_drawEditPanel($view, false);
  209.           $this->_drawNavigation($view);
  210.          
  211.    }
  212. }
  213.  
  214.  
  215.  
  216.  
  217.  
  218. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement