+Библиотека хлебных крошек для Laravel
This commit is contained in:
		
							
								
								
									
										90
									
								
								src/Breadcrumbs.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								src/Breadcrumbs.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Artmark\CrumbSequence;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Description of CrumbSequence
 | 
			
		||||
 *
 | 
			
		||||
 * @author Andrey Pokidov <pokidov@e-traffic.ru>
 | 
			
		||||
 */
 | 
			
		||||
class CrumbSequence
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var CrumbSequence
 | 
			
		||||
     */
 | 
			
		||||
    private static $instance = null;
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var CrumbInterface[]
 | 
			
		||||
     */
 | 
			
		||||
    private $crumbs = [];
 | 
			
		||||
 | 
			
		||||
    private function __construct()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @return CrumbSequence
 | 
			
		||||
     */
 | 
			
		||||
    public static function instance()
 | 
			
		||||
    {
 | 
			
		||||
        if (is_null(self::$instance)) {
 | 
			
		||||
            self::$instance = new CrumbSequence();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return self::$instance;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @return CrumbInterface[]
 | 
			
		||||
     */
 | 
			
		||||
    public function crumbs()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->crumbs;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @return $this
 | 
			
		||||
     */
 | 
			
		||||
    public function reset()
 | 
			
		||||
    {
 | 
			
		||||
        if (count($this->crumbs) > 0) {
 | 
			
		||||
            $this->crumbs = [];
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @param string $url
 | 
			
		||||
     * @param string $label
 | 
			
		||||
     * @param string $icon
 | 
			
		||||
     * @return $this
 | 
			
		||||
     */
 | 
			
		||||
    public function append(string $url, string $label, string $icon = '')
 | 
			
		||||
    {
 | 
			
		||||
        $this->push(new Crumb($url, $label, $icon));
 | 
			
		||||
        
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     * @param CrumbInterface $crumb
 | 
			
		||||
     * @return $this
 | 
			
		||||
     */
 | 
			
		||||
    public function push(CrumbInterface $crumb)
 | 
			
		||||
    {
 | 
			
		||||
        if (!in_array($crumb, $this->crumbs)) {
 | 
			
		||||
            $this->crumbs[] = $crumb;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										72
									
								
								src/Crumb.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								src/Crumb.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Artmark\BreadCrumbs;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Description of Crumb
 | 
			
		||||
 *
 | 
			
		||||
 * @author Andrey Pokidov <pokidov@e-traffic.ru>
 | 
			
		||||
 */
 | 
			
		||||
class Crumb implements CrumbInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $url;
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $label;
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $icon;
 | 
			
		||||
    
 | 
			
		||||
    public function __construct(string $url, string $label, string $icon = '')
 | 
			
		||||
    {
 | 
			
		||||
        $this->url = trim($url);
 | 
			
		||||
        $this->label = trim($label);
 | 
			
		||||
        $this->icon = trim($icon);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * URL ссылки элемента хлебных крошек
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function url()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->url;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Текст элемента хлебных крошек
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function label()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->label;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Задана или нет иконка для элемента хлебных крошек
 | 
			
		||||
     * @return boolean
 | 
			
		||||
     */
 | 
			
		||||
    public function hasIcon()
 | 
			
		||||
    {
 | 
			
		||||
        return !empty($this->icon);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Возвращает URL иконки
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function icon()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->icon;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								src/CrumbInterface.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/CrumbInterface.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Artmark\BreadCrumbs;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Description of CrumbInterface
 | 
			
		||||
 *
 | 
			
		||||
 * @author Andrey Pokidov <pokidov@e-traffic.ru>
 | 
			
		||||
 */
 | 
			
		||||
interface CrumbInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * URL ссылки элемента хлебных крошек
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function url();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Текст элемента хлебных крошек
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function label();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Задана или нет иконка для элемента хлебных крошек
 | 
			
		||||
     * @return boolean
 | 
			
		||||
     */
 | 
			
		||||
    public function hasIcon();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Возвращает URL иконки
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function icon();
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user