<?php defined('SYSPATH') or die('No direct access allowed.'); /** * This class is for rendering a breadcrumb menu. * * @package lnApp * @subpackage Page * @category Helpers * @author Deon George * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ class lnApp_Breadcrumb extends HTMLRender { protected static $_data = array(); protected static $_spacer = ' » '; protected static $_required_keys = array('body'); /** * Set the breadcrumb path * * @param array Block attributes */ public static function set($path) { if (is_string($path)) static::$_data['path'] = explode('/',$path); elseif (is_array($path)) static::$_data['path'] = $path; else throw new Kohana_Exception('Path is not a string, nor an array'); } /** * Enable a friendly name to be used for a path */ public static function name($path,$name,$override=TRUE) { if (isset(static::$_data['name'][$path]) AND ! $override) return; static::$_data['name'][$path] = $name; } /** * Enable specifying the URL for a path */ public static function URL($path,$url,$override=TRUE) { if (isset(static::$_data['url'][$path]) AND ! $override) return; static::$_data['url'][$path] = $url; } /** * Return an instance of this class * * @return Breadcrumb */ public static function factory() { return new Breadcrumb; } /** * Render this Breadcrumb */ protected function render() { // @todo Make this into a view $output = '<table class="pagecontrol"><tr><td class="none">'; $output .= HTML::anchor('/',_('Home')); $data = empty(static::$_data['path']) ? explode('/',preg_replace('/^\//','',Request::detect_uri())) : static::$_data['path']; foreach ($data as $k => $v) { $output .= static::$_spacer; $p = join('/',array_slice($data,0,$k+1)); $output .= HTML::anchor( (empty(static::$_data['url'][$p]) ? $p : static::$_data['url'][$p]), (empty(static::$_data['name'][$p]) ? ucfirst($v) : static::$_data['name'][$p]) ); } $output .= '</td></tr></table>'; return $output; } } ?>