energine
[ class tree: energine ] [ index: energine ] [ all elements ]

Source for file BreadCrumbs.class.php

Documentation is available at BreadCrumbs.class.php

  1. /**
  2.  * Содержит класс BreadCrumbs
  3.  *
  4.  * @package energine
  5.  * @subpackage share
  6.  * @author dr.Pavka
  7.  * @copyright Energine 2006
  8.  * @version $Id$
  9.  */
  10.  
  11. //require_once('core/modules/share/components/DataSet.class.php');
  12.  
  13. /**
  14.  * "Хлебные крошки"
  15.  *
  16.  * @package energine
  17.  * @subpackage share
  18.  * @author dr.Pavka
  19.  * @final
  20.  */
  21. final class BreadCrumbs extends DataSet {
  22.     /**
  23.      * Список дополнительных элементов
  24.      * Необходим для того чтобы другие компоненты могли добавлять хлебные крошки
  25.      * @var array 
  26.      * @access private
  27.      */
  28.     private $additionalCrumbs = array();
  29.  
  30.     /**
  31.      * Конструктор класса
  32.      *
  33.      * @return void 
  34.      */
  35.     public function __construct($name$moduleDocument $document,  array $params null{
  36.         parent::__construct($name$module$document,  $params);
  37.         $this->setType(self::COMPONENT_TYPE_LIST);
  38.     }
  39.  
  40.     /**
  41.      * Поскольку изменение перечня полей невозможно, принудительно выставляем необходимые значения
  42.      *
  43.      * @return DataDescription 
  44.      * @access protected
  45.      */
  46.  
  47.     protected function createDataDescription({
  48.         $result new DataDescription();
  49.         $field new FieldDescription('Id');
  50.         $field->setType(FieldDescription::FIELD_TYPE_INT);
  51.         $field->setProperty('key'true);
  52.         $result->addFieldDescription($field);
  53.  
  54.         $field new FieldDescription('Name');
  55.         $field->setType(FieldDescription::FIELD_TYPE_STRING);
  56.         $result->addFieldDescription($field);
  57.  
  58.         $field new FieldDescription('Segment');
  59.         $field->setType(FieldDescription::FIELD_TYPE_STRING);
  60.         $result->addFieldDescription($field);
  61.  
  62.         $field new FieldDescription('Title');
  63.         $field->setType(FieldDescription::FIELD_TYPE_STRING);
  64.         $result->addFieldDescription($field);
  65.  
  66.         return $result;
  67.     }
  68.     /**
  69.      * Переопределенный метод загрузки данных
  70.      *
  71.      * @return mixed 
  72.      * @access protected
  73.      */
  74.     protected function loadData({
  75.         $sitemap Sitemap::getInstance();
  76.         $result array();
  77.         $parents $sitemap->getParents($this->document->getID());
  78.         foreach ($parents as $id => $current{
  79.             $result[array(
  80.             'Id' => $id,
  81.             'Name' => $current['Name'],
  82.             'Segment' => $current['Segment'],
  83.             'Title' => $current['HtmlTitle'],
  84.             );
  85.         }
  86.         $docInfo $sitemap->getDocumentInfo($this->document->getID());
  87.         $result[array(
  88.         'Id' => $this->document->getID(),
  89.         'Name' => $docInfo['Name'],
  90.         'Segment' => $sitemap->getURLByID($this->document->getID()),
  91.         'Title' => $docInfo['HtmlTitle']
  92.         );
  93.         if (!empty($this->additionalCrumbs)) {
  94.             $result = array_merge($result$this->additionalCrumbs);
  95.         }
  96.  
  97.  
  98.         // добавляем информацию о главной странице в начало
  99.         $defaultID $sitemap->getDefault();
  100.         if (($this->document->getID(!= $defaultID&& (isset($result[0]&& ($result[0]['Id'!= $defaultID))) {
  101.             $docInfo $sitemap->getDocumentInfo($defaultID);
  102.             $result array_push_before(
  103.             $result,
  104.             array(
  105.             array(
  106.             'Id' => $defaultID,
  107.             'Name' => $docInfo['Name'],
  108.             'Segment' => '',
  109.             'Title' => $docInfo['HtmlTitle']
  110.             )
  111.             ),
  112.             0
  113.             );
  114.         }
  115.  
  116.         return $result;
  117.     }
  118.  
  119.     /**
  120.       * Метод добавляющий хлебную крошку
  121.       * Если приходят пустые параметры, то эта крошка не выводится, а предыдущая хлебная крошка будет ссылкой
  122.       *
  123.       * @param int 
  124.       * @param string 
  125.       * @param segment 
  126.       * @return void 
  127.       * @access public
  128.       */
  129.  
  130.     public function addCrumb($smapID ''$smapName ''$smapSegment ''{
  131.         $this->additionalCrumbs[array(
  132.         'Id' => $smapID,
  133.         'Name' => $smapName,
  134.         'Segment' => $smapSegment
  135.         );
  136.     }
  137. }
В создании документации нам помог: phpDocumentor