+Библиотека хлебных крошек для Laravel
commit
6318760807
@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "artmark/laravel-breadcrumbs",
|
||||
"type": "library",
|
||||
"license": "Proprietary",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Andrey Pokidov",
|
||||
"email": "pokidov@e-traffic.ru"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Artmark\\BreadCrumbs\\": "src/"
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
Loading…
Reference in New Issue