first
This commit is contained in:
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
|
||||
use Nextend\Framework\Platform\Platform;
|
||||
use Nextend\Framework\Url\Url;
|
||||
|
||||
trait GetAssetsPathTrait {
|
||||
|
||||
use GetPathTrait;
|
||||
|
||||
public static function getAssetsPath() {
|
||||
|
||||
return Platform::filterAssetsPath(self::getPath() . '/Assets');
|
||||
}
|
||||
|
||||
public static function getAssetsUri() {
|
||||
return Url::pathToUri(self::getAssetsPath());
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
use ReflectionClass;
|
||||
|
||||
trait GetPathTrait {
|
||||
|
||||
public static function getPath() {
|
||||
|
||||
$reflection = new ReflectionClass(static::class);
|
||||
|
||||
return dirname($reflection->getFileName());
|
||||
}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
|
||||
use Nextend\Framework\Application\AbstractApplication;
|
||||
use Nextend\Framework\Application\AbstractApplicationType;
|
||||
use Nextend\Framework\Router\Router;
|
||||
|
||||
trait MVCHelperTrait {
|
||||
|
||||
/** @var MVCHelperTrait */
|
||||
protected $MVCHelper;
|
||||
|
||||
/**
|
||||
* @return Router
|
||||
*/
|
||||
public function getRouter() {
|
||||
return $this->MVCHelper->getRouter();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|string $url
|
||||
* @param bool $isPost
|
||||
* @param bool $isAjax
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function createUrl($url, $isPost = false, $isAjax = false) {
|
||||
return $this->MVCHelper->getRouter()
|
||||
->createUrl($url, $isPost, $isAjax);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|string $url
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function createAjaxUrl($url) {
|
||||
return $this->MVCHelper->getRouter()
|
||||
->createAjaxUrl($url);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AbstractApplication
|
||||
*/
|
||||
public function getApplication() {
|
||||
|
||||
return $this->MVCHelper->getApplication();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AbstractApplicationType
|
||||
*/
|
||||
public function getApplicationType() {
|
||||
return $this->MVCHelper->getApplicationType();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MVCHelperTrait $helper
|
||||
*
|
||||
*/
|
||||
protected function setMVCHelper($helper) {
|
||||
$this->MVCHelper = $helper;
|
||||
|
||||
if (!method_exists($helper, 'getRouter') || !method_exists($helper, 'getApplication') || !method_exists($helper, 'getApplicationType')) {
|
||||
debug_print_backtrace();
|
||||
echo 'Object should has MVCHelperTrait';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MVCHelperTrait
|
||||
*/
|
||||
public function getMVCHelper() {
|
||||
return $this->MVCHelper;
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
trait OrderableTrait {
|
||||
|
||||
public function getOrdering() {
|
||||
|
||||
return isset($this->ordering) ? $this->ordering : 1000000;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param OrderableTrait[] $items
|
||||
*/
|
||||
public static function uasort(&$items) {
|
||||
uasort($items, array(
|
||||
OrderableTrait::class,
|
||||
'compare'
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param OrderableTrait $a
|
||||
* @param OrderableTrait $b
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public static function compare($a, $b) {
|
||||
return $a->getOrdering() - $b->getOrdering();
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
trait PluggableFactoryTrait {
|
||||
|
||||
use SingletonTrait;
|
||||
|
||||
private static $types = array();
|
||||
|
||||
public static function addType($name, $className) {
|
||||
self::$types[$name] = $className;
|
||||
}
|
||||
|
||||
public static function getType($name) {
|
||||
|
||||
if (isset(self::$types[$name])) {
|
||||
return self::$types[$name];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function getTypes() {
|
||||
|
||||
return self::$types;
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
|
||||
use Nextend\Framework\Plugin;
|
||||
|
||||
trait PluggableTrait {
|
||||
|
||||
protected function makePluggable($id) {
|
||||
|
||||
Plugin::doAction('PluggableFactory' . $id, array($this));
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
|
||||
trait SingletonTrait {
|
||||
|
||||
protected static $instance;
|
||||
|
||||
final public static function getInstance() {
|
||||
return isset(static::$instance) ? static::$instance : static::$instance = new static;
|
||||
}
|
||||
|
||||
private function __construct() {
|
||||
$this->init();
|
||||
}
|
||||
|
||||
protected function init() {
|
||||
}
|
||||
|
||||
final public function __wakeup() {
|
||||
}
|
||||
|
||||
final public function __clone() {
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\Framework\Pattern;
|
||||
|
||||
|
||||
use Nextend\Framework\Plugin;
|
||||
|
||||
trait VisualManagerTrait {
|
||||
|
||||
/** @var MVCHelperTrait */
|
||||
protected $MVCHelper;
|
||||
|
||||
/**
|
||||
* StyleManager constructor.
|
||||
*
|
||||
* @param MVCHelperTrait $MVCHelper
|
||||
*/
|
||||
public function __construct($MVCHelper) {
|
||||
$this->MVCHelper = $MVCHelper;
|
||||
|
||||
Plugin::addAction('afterApplicationContent', array(
|
||||
$this,
|
||||
'display'
|
||||
));
|
||||
}
|
||||
|
||||
public abstract function display();
|
||||
|
||||
/**
|
||||
* @param MVCHelperTrait $MVCHelper
|
||||
*/
|
||||
public static function enqueue($MVCHelper) {
|
||||
static $enqueued;
|
||||
|
||||
if (!$enqueued) {
|
||||
new self($MVCHelper);
|
||||
$enqueued = true;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user