Author: tkoomzaaskz
Date: 2010-09-06 14:44:11 +0200 (Mon, 06 Sep 2010)
New Revision: 30837

Added:
   plugins/tdCorePlugin/trunk/lib/breadcrumb/
   plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumb.class.php
   plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumbItem.class.php
   plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/
   plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/actions/
   plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/actions/components.class.php
   plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/config/
   plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/config/cache.yml
   plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/templates/
   plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/templates/_display.php
Modified:
   plugins/tdCorePlugin/trunk/README
   plugins/tdCorePlugin/trunk/config/tdCorePluginConfiguration.class.php
   plugins/tdCorePlugin/trunk/package.xml
Log:
[td][core] added breadcrumb support

Modified: plugins/tdCorePlugin/trunk/README
===================================================================
--- plugins/tdCorePlugin/trunk/README   2010-09-06 09:20:38 UTC (rev 30836)
+++ plugins/tdCorePlugin/trunk/README   2010-09-06 12:44:11 UTC (rev 30837)
@@ -74,6 +74,13 @@
 
     enabled_modules: [ ..., graphics ]
 
+Breadcrumbs
+===========
+
+Enable the tdBreadcrumb module:
+
+    enabled_modules: [ ..., tdBreadcrumb ]
+
 Random Data Generator
 =====================
 

Modified: plugins/tdCorePlugin/trunk/config/tdCorePluginConfiguration.class.php
===================================================================
--- plugins/tdCorePlugin/trunk/config/tdCorePluginConfiguration.class.php       
2010-09-06 09:20:38 UTC (rev 30836)
+++ plugins/tdCorePlugin/trunk/config/tdCorePluginConfiguration.class.php       
2010-09-06 12:44:11 UTC (rev 30837)
@@ -9,7 +9,6 @@
  * @package   tdCorePlugin
  * @author    Tomasz Ducin <[email protected]>
  */
-
 class tdCorePluginConfiguration extends sfPluginConfiguration
 {
   /**
@@ -19,5 +18,7 @@
   {
     // short description sign count
     sfConfig::set('td_short_text_sign_count', 200);
+
+    $this->dispatcher->connect('template.filter_parameters', 
array('tdBreadcrumb', 'filterTemplateParameters'));
   }
-}
\ No newline at end of file
+}

Added: plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumb.class.php
===================================================================
--- plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumb.class.php            
                (rev 0)
+++ plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumb.class.php    
2010-09-06 12:44:11 UTC (rev 30837)
@@ -0,0 +1,94 @@
+<?php
+
+/**
+ * tdBreadcrumb class.
+ *
+ * Class managing breadcrumbs.
+ *
+ * @package    plugin
+ * @subpackage tdCorePlugin
+ * @class      tdBreadcrumb
+ * @author     Tomasz Ducin <[email protected]>
+ */
+class tdBreadcrumb
+{
+  static $instance = null;
+  protected $items = array();
+
+  /**
+   * Constructor.
+   */
+  protected function __construct()
+  {
+    $this->setRoot('Home', '@homepage');
+  }
+
+  /**
+   * Listens to the template.filter_parameters event.
+   *
+   * @param sfEvent $event - An sfEvent instance
+   * @param array $parameters - An array of template parameters to filter
+   * @return array - The filtered parameters array
+   */
+  public static function filterTemplateParameters(sfEvent $event, $parameters)
+  {
+    $parameters['breadcrumbs'] = tdBreadcrumb::getInstance();
+    return $parameters;
+  }
+
+  /**
+   * Add an item.
+   *
+   * @param string $text
+   * @param string $uri
+   * @param array $options
+   */
+  public function addItem($text, $uri = null, $options = array())
+  {
+    array_push($this->items, new tdBreadcrumbItem($text, $uri, $options));
+  }
+
+  /**
+   * Delete all existings items.
+   */
+  public function clearItems()
+  {
+    $this->items = array();
+  }
+
+  /**
+   * Get the unique tdBreadcrumb instance (singleton).
+   * 
+   * @return tdBreadcrumb
+   */
+  public static function getInstance()
+  {
+    if (is_null(self::$instance))
+      self::$instance = new tdBreadcrumb();
+
+    return self::$instance;
+  }
+
+  /**
+   * Retrieve an array of BreadcrumbItem.
+   *
+   * @param int $offset
+   * @return array
+   */
+  public function getItems($offset = 0)
+  {
+    return array_slice($this->items, $offset);
+  }
+
+  /**
+   * Redefine the root item.
+   *
+   * @param string $text
+   * @param string $uri
+   * @param array $options
+   */
+  public function setRoot($text, $uri, $options = array())
+  {
+    $this->items[0] = new tdBreadcrumbItem($text, $uri, $options);
+  }
+}

Added: plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumbItem.class.php
===================================================================
--- plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumbItem.class.php        
                        (rev 0)
+++ plugins/tdCorePlugin/trunk/lib/breadcrumb/tdBreadcrumbItem.class.php        
2010-09-06 12:44:11 UTC (rev 30837)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * tdBreadcrumbItem class.
+ *
+ * Class representing a single item in the breadcrumbs.
+ *
+ * @package    plugin
+ * @subpackage tdCorePlugin
+ * @class      tdBreadcrumbItem
+ * @author     Tomasz Ducin <[email protected]>
+ */
+class tdBreadcrumbItem
+{
+  protected $text, $uri, $options;
+    
+  /**
+   * Constructor.
+   */    
+  public function __construct($text, $uri = null, $options = array())
+  {
+    $this->text = $text;
+    $this->uri = $uri;
+    $this->options = $options;
+  }
+  
+  /**
+   * Retrieve the text of the item.
+   */
+  public function getText()
+  {
+    return $this->text;
+  }
+
+  /**
+   * Retrieve the uri of the item.
+   */  
+  public function getUri()
+  {
+    return $this->uri;
+  }
+  
+  /**
+   * Retrieve the options of the item.
+   */  
+  public function getOptions()
+  {
+    return $this->options;
+  }
+}

Added: 
plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/actions/components.class.php
===================================================================
--- 
plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/actions/components.class.php    
                            (rev 0)
+++ 
plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/actions/components.class.php    
    2010-09-06 12:44:11 UTC (rev 30837)
@@ -0,0 +1,17 @@
+<?php
+
+class tdBreadcrumbComponents extends sfComponents
+{
+  public function executeDisplay()
+  {
+    $tdBreadcrumb = tdBreadcrumb::getInstance();
+
+    if (isset($this->root))
+      $tdBreadcrumb->setRoot($this->root['text'], $this->root['uri'], 
isset($this->root['options']) ? $this->root['options'] : array());
+
+    if (!isset($this->offset))
+      $this->offset = 0;
+
+    $this->items = $tdBreadcrumb->getItems($this->offset);
+  }
+}

Added: plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/config/cache.yml
===================================================================
--- plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/config/cache.yml            
                (rev 0)
+++ plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/config/cache.yml    
2010-09-06 12:44:11 UTC (rev 30837)
@@ -0,0 +1,3 @@
+_display:
+  enabled:    on
+  contextual: true
\ No newline at end of file

Added: plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/templates/_display.php
===================================================================
--- plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/templates/_display.php      
                        (rev 0)
+++ plugins/tdCorePlugin/trunk/modules/tdBreadcrumb/templates/_display.php      
2010-09-06 12:44:11 UTC (rev 30837)
@@ -0,0 +1,16 @@
+<?php $last_key = count($items) - 1 ?>
+
+<?php !isset($separator) and $separator = '&raquo;' ?>
+
+<?php foreach ($items as $key => $item): ?>
+  <?php if ($key < $last_key): ?>
+    <?php echo link_to(
+      $item->getText(),
+      $item->getUri(ESC_RAW),
+      $item->getOptions() instanceOf sfOutputEscaperArrayDecorator ? 
$item->getOptions()->getRawValue() : $item->getOptions()
+    ) ?>  
+    <?php echo $separator ?>
+  <?php else: ?>
+    <strong><?php echo $item->getText() ?></strong>
+  <?php endif ?>
+<?php endforeach ?>
\ No newline at end of file

Modified: plugins/tdCorePlugin/trunk/package.xml
===================================================================
--- plugins/tdCorePlugin/trunk/package.xml      2010-09-06 09:20:38 UTC (rev 
30836)
+++ plugins/tdCorePlugin/trunk/package.xml      2010-09-06 12:44:11 UTC (rev 
30837)
@@ -3,18 +3,18 @@
   <name>tdCorePlugin</name>
   <channel>plugins.symfony-project.org</channel>
   <summary>Provides basic functionalities enabling TD CMF.</summary>
-  <description>Provides basic functionalities enabling TD CMF, such as common 
configuration or random data generation.</description>
+  <description>Provides basic functionalities enabling TD CMF, such as common 
configuration random data generation or breadcrumbs.</description>
   <lead>
     <name>Tomasz Ducin</name>
     <user>tkoomzaaskz</user>
     <email>[email protected]</email>
     <active>yes</active>
   </lead>
-  <date>2010-09-04</date>
+  <date>2010-09-06</date>
   <time>11:00:00</time>
   <version>
-    <release>0.1.10</release>
-    <api>0.1.0</api>
+    <release>0.2.0</release>
+    <api>0.2.0</api>
   </version>
   <stability>
     <release>beta</release>
@@ -33,6 +33,10 @@
       <dir name="lib">
         <file name="tdRandomDataGenerator.class.php" role="data" />
         <file name="tdTools.class.php" role="data" />
+        <dir name="breadcrumb">
+          <file name="tdBreadcrumb.class.php" role="data" />
+          <file name="tdBreadcrumbItem.class.php" role="data" />
+        </dir>
       </dir>
 
       <dir name="modules">
@@ -45,6 +49,17 @@
             <file name="tickSuccess.php" role="data" />
           </dir>
         </dir>
+        <dir name="tdBreadcrumb">
+          <dir name="actions">
+            <file name="components.class.php" role="data" />
+          </dir>
+          <dir name="config">
+            <file name="cache.yml" role="data" />
+          </dir>
+          <dir name="templates">
+            <file name="_display.php" role="data" />
+          </dir>
+        </dir>
       </dir>
 
       <dir name="web">
@@ -155,6 +170,23 @@
 
     <release>
       <version>
+        <release>0.2.0</release>
+        <api>0.2.0</api>
+      </version>
+      <stability>
+        <release>beta</release>
+        <api>beta</api>
+      </stability>
+      <license uri="http://www.symfony-project.org/license";>MIT 
license</license>
+      <date>2010-09-06</date>
+      <license>MIT</license>
+      <notes>
+        * added breadcrumb managing module
+      </notes>
+    </release>
+
+    <release>
+      <version>
         <release>0.1.10</release>
         <api>0.1.0</api>
       </version>

-- 
You received this message because you are subscribed to the Google Groups 
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/symfony-svn?hl=en.

Reply via email to