181 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\v\bs3;
 | |
| 
 | |
| use nur\v\model\IIconManager;
 | |
| 
 | |
| class Bs3IconManager implements IIconManager {
 | |
|   const GLYPHS = [
 | |
|     "debug" => "bullhorn",
 | |
|     "info" => "info-sign",
 | |
|     "success" => "ok-sign",
 | |
|     "warning" => "exclamation-sign",
 | |
|     "error" => "remove-sign",
 | |
| 
 | |
|     "refresh",
 | |
|     "config" => "cog",
 | |
|     "save" => "floppy-disk",
 | |
|     "download" => "download-alt",
 | |
|     "upload" => "cloud-upload",
 | |
|     "new_window",
 | |
|     "mail" => "envelope",
 | |
|     "search",
 | |
|     "user",
 | |
|     "login" => "log-in",
 | |
|     "logout" => "log-out",
 | |
|     "bin" => "trash",
 | |
|     "dashboard" => "list-alt",
 | |
|     "calendar",
 | |
| 
 | |
|     "arrow_up", "arrow_down", "arrow_left", "arrow_right",
 | |
|     "chevron_up", "chevron_down", "chevron_left", "chevron_right",
 | |
|     "hand_up", "hand_down", "hand_left", "hand_right",
 | |
|     "menu_up", "menu_down", "menu_left", "menu_right",
 | |
|     "triangle_up", "triangle_down", "triangle_left", "triangle_right",
 | |
| 
 | |
|     "star", "star_empty",
 | |
|     "heart", "heart_empty",
 | |
|   ];
 | |
| 
 | |
|   private function _getIcon(string $glyph, $suffix=null, ?string $alt=null, ?array $glyphMap=null): array {
 | |
|     if ($glyphMap === null) $glyphMap = self::_GLYPH_MAP;
 | |
|     if (isset($glyphMap[$glyph])) $glyph = $glyphMap[$glyph];
 | |
| 
 | |
|     if ($alt) {
 | |
|       $alt = <<<EOT
 | |
| <span class="sr-only">$alt</span>
 | |
| EOT;
 | |
|     }
 | |
|     $html = <<<EOT
 | |
| <span class="glyphicon glyphicon-$glyph" aria-hidden="true"></span>$alt
 | |
| EOT;
 | |
| 
 | |
|     $icon = [$html];
 | |
|     if ($suffix) {
 | |
|       $icon[] = " ";
 | |
|       $icon[] = q($suffix);
 | |
|     }
 | |
|     return $icon;
 | |
|   }
 | |
|   function getIcon(string $glyph, $suffix=null, ?string $alt=null, ?array $glyphMap=null): array {
 | |
|     return $this->_getIcon($glyph, $suffix, $alt);
 | |
|   }
 | |
| 
 | |
|   #############################################################################
 | |
|   const _AUTOGEN_CONSTS = ["_GLYPH_MAP", "" => ["_AUTOGEN__GLYPHS"]];
 | |
|   static final function _AUTOGEN__GLYPH_MAP(): array {
 | |
|     $glyphs = [];
 | |
|     $index = 0;
 | |
|     foreach (self::GLYPHS as $key => $glyph) {
 | |
|       if ($key === $index) {
 | |
|         $name = $glyph;
 | |
|         $glyph = strtolower(str_replace("_", "-", $glyph));
 | |
|         $index++;
 | |
|       } else {
 | |
|         $name = $key;
 | |
|       }
 | |
|       $glyphs[$name] = $glyph;
 | |
|     }
 | |
|     return $glyphs;
 | |
|   }
 | |
|   const _GLYPH_MAP = /*autogen*/[
 | |
|     'debug' => 'bullhorn',
 | |
|     'info' => 'info-sign',
 | |
|     'success' => 'ok-sign',
 | |
|     'warning' => 'exclamation-sign',
 | |
|     'error' => 'remove-sign',
 | |
|     'refresh' => 'refresh',
 | |
|     'config' => 'cog',
 | |
|     'save' => 'floppy-disk',
 | |
|     'download' => 'download-alt',
 | |
|     'upload' => 'cloud-upload',
 | |
|     'new_window' => 'new-window',
 | |
|     'mail' => 'envelope',
 | |
|     'search' => 'search',
 | |
|     'user' => 'user',
 | |
|     'login' => 'log-in',
 | |
|     'logout' => 'log-out',
 | |
|     'bin' => 'trash',
 | |
|     'dashboard' => 'list-alt',
 | |
|     'arrow_up' => 'arrow-up',
 | |
|     'arrow_down' => 'arrow-down',
 | |
|     'arrow_left' => 'arrow-left',
 | |
|     'arrow_right' => 'arrow-right',
 | |
|     'chevron_up' => 'chevron-up',
 | |
|     'chevron_down' => 'chevron-down',
 | |
|     'chevron_left' => 'chevron-left',
 | |
|     'chevron_right' => 'chevron-right',
 | |
|     'hand_up' => 'hand-up',
 | |
|     'hand_down' => 'hand-down',
 | |
|     'hand_left' => 'hand-left',
 | |
|     'hand_right' => 'hand-right',
 | |
|     'menu_up' => 'menu-up',
 | |
|     'menu_down' => 'menu-down',
 | |
|     'menu_left' => 'menu-left',
 | |
|     'menu_right' => 'menu-right',
 | |
|     'triangle_up' => 'triangle-up',
 | |
|     'triangle_down' => 'triangle-down',
 | |
|     'triangle_left' => 'triangle-left',
 | |
|     'triangle_right' => 'triangle-right',
 | |
|     'star' => 'star',
 | |
|     'star_empty' => 'star-empty',
 | |
|     'heart' => 'heart',
 | |
|     'heart_empty' => 'heart-empty',
 | |
|   ];
 | |
|   static final function _AUTOGEN__GLYPHS(): array {
 | |
|     $glyphMap = self::_AUTOGEN__GLYPH_MAP();
 | |
|     $im = new self();
 | |
|     $glyphs = [];
 | |
|     foreach (array_keys($glyphMap) as $glyph) {
 | |
|       $name = strtoupper($glyph);
 | |
|       $glyphs[$name] = $im->_getIcon($glyph, null, null, $glyphMap);
 | |
|     }
 | |
|     return $glyphs;
 | |
|   }
 | |
|   # --autogen-dynamic-consts--
 | |
|   const DEBUG = /*autogen*/['<span class="glyphicon glyphicon-bullhorn" aria-hidden="true"></span>'];
 | |
|   const INFO = /*autogen*/['<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>'];
 | |
|   const SUCCESS = /*autogen*/['<span class="glyphicon glyphicon-ok-sign" aria-hidden="true"></span>'];
 | |
|   const WARNING = /*autogen*/[
 | |
|     '<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>',
 | |
|   ];
 | |
|   const ERROR = /*autogen*/['<span class="glyphicon glyphicon-remove-sign" aria-hidden="true"></span>'];
 | |
|   const REFRESH = /*autogen*/['<span class="glyphicon glyphicon-refresh" aria-hidden="true"></span>'];
 | |
|   const CONFIG = /*autogen*/['<span class="glyphicon glyphicon-cog" aria-hidden="true"></span>'];
 | |
|   const SAVE = /*autogen*/['<span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span>'];
 | |
|   const DOWNLOAD = /*autogen*/['<span class="glyphicon glyphicon-download-alt" aria-hidden="true"></span>'];
 | |
|   const UPLOAD = /*autogen*/['<span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span>'];
 | |
|   const NEW_WINDOW = /*autogen*/['<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>'];
 | |
|   const MAIL = /*autogen*/['<span class="glyphicon glyphicon-envelope" aria-hidden="true"></span>'];
 | |
|   const SEARCH = /*autogen*/['<span class="glyphicon glyphicon-search" aria-hidden="true"></span>'];
 | |
|   const USER = /*autogen*/['<span class="glyphicon glyphicon-user" aria-hidden="true"></span>'];
 | |
|   const LOGIN = /*autogen*/['<span class="glyphicon glyphicon-log-in" aria-hidden="true"></span>'];
 | |
|   const LOGOUT = /*autogen*/['<span class="glyphicon glyphicon-log-out" aria-hidden="true"></span>'];
 | |
|   const BIN = /*autogen*/['<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>'];
 | |
|   const DASHBOARD = /*autogen*/['<span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span>'];
 | |
|   const CALENDAR = /*autogen*/['<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span>'];
 | |
|   const ARROW_UP = /*autogen*/['<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>'];
 | |
|   const ARROW_DOWN = /*autogen*/['<span class="glyphicon glyphicon-arrow-down" aria-hidden="true"></span>'];
 | |
|   const ARROW_LEFT = /*autogen*/['<span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span>'];
 | |
|   const ARROW_RIGHT = /*autogen*/['<span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span>'];
 | |
|   const CHEVRON_UP = /*autogen*/['<span class="glyphicon glyphicon-chevron-up" aria-hidden="true"></span>'];
 | |
|   const CHEVRON_DOWN = /*autogen*/['<span class="glyphicon glyphicon-chevron-down" aria-hidden="true"></span>'];
 | |
|   const CHEVRON_LEFT = /*autogen*/['<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>'];
 | |
|   const CHEVRON_RIGHT = /*autogen*/['<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>'];
 | |
|   const HAND_UP = /*autogen*/['<span class="glyphicon glyphicon-hand-up" aria-hidden="true"></span>'];
 | |
|   const HAND_DOWN = /*autogen*/['<span class="glyphicon glyphicon-hand-down" aria-hidden="true"></span>'];
 | |
|   const HAND_LEFT = /*autogen*/['<span class="glyphicon glyphicon-hand-left" aria-hidden="true"></span>'];
 | |
|   const HAND_RIGHT = /*autogen*/['<span class="glyphicon glyphicon-hand-right" aria-hidden="true"></span>'];
 | |
|   const MENU_UP = /*autogen*/['<span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span>'];
 | |
|   const MENU_DOWN = /*autogen*/['<span class="glyphicon glyphicon-menu-down" aria-hidden="true"></span>'];
 | |
|   const MENU_LEFT = /*autogen*/['<span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span>'];
 | |
|   const MENU_RIGHT = /*autogen*/['<span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span>'];
 | |
|   const TRIANGLE_UP = /*autogen*/['<span class="glyphicon glyphicon-triangle-up" aria-hidden="true"></span>'];
 | |
|   const TRIANGLE_DOWN = /*autogen*/['<span class="glyphicon glyphicon-triangle-down" aria-hidden="true"></span>'];
 | |
|   const TRIANGLE_LEFT = /*autogen*/['<span class="glyphicon glyphicon-triangle-left" aria-hidden="true"></span>'];
 | |
|   const TRIANGLE_RIGHT = /*autogen*/['<span class="glyphicon glyphicon-triangle-right" aria-hidden="true"></span>'];
 | |
|   const STAR = /*autogen*/['<span class="glyphicon glyphicon-star" aria-hidden="true"></span>'];
 | |
|   const STAR_EMPTY = /*autogen*/['<span class="glyphicon glyphicon-star-empty" aria-hidden="true"></span>'];
 | |
|   const HEART = /*autogen*/['<span class="glyphicon glyphicon-heart" aria-hidden="true"></span>'];
 | |
|   const HEART_EMPTY = /*autogen*/['<span class="glyphicon glyphicon-heart-empty" aria-hidden="true"></span>'];
 | |
| }
 |