82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace kernel;
 | |
| 
 | |
| class Assets
 | |
| {
 | |
|     protected array $jsHeader = [];
 | |
|     protected array $jsBody = [];
 | |
| 
 | |
|     protected array $collectorJs = [];
 | |
| 
 | |
|     protected array $css = [];
 | |
| 
 | |
|     protected array $collectorCss = [];
 | |
| 
 | |
|     protected string $resourceURI = "/resource";
 | |
| 
 | |
|     public function __construct(string $resourceURI)
 | |
|     {
 | |
|         $this->setResourceURI($resourceURI);
 | |
|         $this->createCSS();
 | |
|         $this->createJS();
 | |
|     }
 | |
| 
 | |
|     protected function createCSS(){}
 | |
|     protected function createJS(){}
 | |
| 
 | |
|     public function setResourceURI(string $resourceURI): void
 | |
|     {
 | |
|         $this->resourceURI = $resourceURI;
 | |
|     }
 | |
| 
 | |
|     public function registerJS(string $slug, string $resource, bool $body = true, bool $addResourceURI = true, string $after = null): void
 | |
|     {
 | |
|         $resource = $addResourceURI ? $this->resourceURI . $resource : $resource;
 | |
|         if ($body) {
 | |
|             $this->jsBody[$slug] = $resource;
 | |
|         } else {
 | |
|             $this->jsHeader[$slug] = $resource;
 | |
|         }
 | |
|         $this->collectorJs[$slug] = ['resource' => $resource, 'after' => $after, 'body' => $body];
 | |
|     }
 | |
| 
 | |
|     public function registerCSS(string $slug, string $resource, bool $addResourceURI = true, string $after = null): void
 | |
|     {
 | |
|         $resource = $addResourceURI ? $this->resourceURI . $resource : $resource;
 | |
|         $this->css[$slug] = $resource;
 | |
|         $this->collectorCss[$slug] = ['resource' => $resource, 'after' => $after];
 | |
|     }
 | |
| 
 | |
|     public function getJSAsStr(bool $body = true): void
 | |
|     {
 | |
|         if ($body) {
 | |
|             foreach ($this->jsBody as $key => $item){
 | |
|                 echo "<script src='$item'></script>";
 | |
|             }
 | |
|         }
 | |
|         else {
 | |
|             foreach ($this->jsHeader as $key => $item){
 | |
|                 echo "<script src='$item'></script>";
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function getCSSAsSTR(): void
 | |
|     {
 | |
|         foreach ($this->css as $key => $item){
 | |
|             echo "<link rel='stylesheet' href='$item'>";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function getCollectorCss(): array
 | |
|     {
 | |
|         return $this->collectorCss;
 | |
|     }
 | |
| 
 | |
|     public function getCollectorJs(): array
 | |
|     {
 | |
|         return $this->collectorJs;
 | |
|     }
 | |
| 
 | |
| } |