Source for file BreadCrumbs.class.php

Documentation is available at BreadCrumbs.class.php

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

Documentation generated on Mon, 17 Sep 2007 13:25:22 +0300 by phpDocumentor 1.4.0a2