179 lines
8.4 KiB
PHP
179 lines
8.4 KiB
PHP
<?php
|
|
|
|
namespace App\Helpers;
|
|
|
|
/**
|
|
* IconHelper
|
|
* 아이콘 및 소셜 미디어 아이콘의 HTML을 생성하는 헬퍼 클래스입니다.
|
|
*/
|
|
class IconHelper
|
|
{
|
|
/**
|
|
* 입력을 기반으로 아이콘 HTML을 반환합니다.
|
|
*
|
|
* @param string $key ICONS 상수의 키
|
|
* @param string $class 추가적인 CSS 클래스
|
|
* @return string
|
|
*/
|
|
public static function icon(string $key, string $class = ''): string
|
|
{
|
|
$icons = self::getIcons();
|
|
if (!isset($icons[$key])) {
|
|
$icons = self::getMessengerIcons();
|
|
}
|
|
|
|
if (!isset($icons[$key])) {
|
|
return '';
|
|
}
|
|
|
|
$icon = $icons[$key];
|
|
if ($class && str_contains($icon, 'class="')) {
|
|
return str_replace('class="', 'class="' . $class . ' ', $icon);
|
|
}
|
|
|
|
return $icon;
|
|
}
|
|
|
|
/**
|
|
* 메신저 아이콘 HTML을 반환합니다.
|
|
*
|
|
* @param string $key MESSENGER_ICONS 상수의 키
|
|
* @return string
|
|
*/
|
|
public static function messengerIcon(string $key): string
|
|
{
|
|
$icons = self::getMessengerIcons();
|
|
return $icons[$key] ?? '';
|
|
}
|
|
|
|
/**
|
|
* 아이콘 데이터를 관리합니다. (Constants.php에서 분리된 데이터)
|
|
*/
|
|
private static function getIcons(): array
|
|
{
|
|
return [
|
|
'ADD' => '<i class="bi bi-plus-circle"></i>',
|
|
'LOGO' => '<img src="/images/logo/android-icon-48x48.png">',
|
|
'EXCEL' => '<img src="/images/common/excel.png"/>',
|
|
'PDF' => '<img src="/images/common/pdf.png"/>',
|
|
'GOOGLE' => '<img src="https://www.google.com/favicon.ico" alt="Google" width="20" height="20" class="me-2">',
|
|
'MEMBER' => '<i class="bi bi-people"></i>',
|
|
'LOGIN' => '<i class="bi bi-shield-check"></i>',
|
|
'LOGOUT' => '<i class="bi bi-sign-stop-fill"></i>',
|
|
'HOME' => '<i class="bi bi-house"></i>',
|
|
'MENU' => '<i class="bi bi-menu-button"></i>',
|
|
'NEW' => '<i class="bi bi-database-add"></i>',
|
|
'REPLY' => '<i class="bi bi-arrow-return-right"></i>',
|
|
'DATABASE' => '<i class="bi bi-database"></i>',
|
|
'DISLIKE' => '<i class="bi bi-hand-thumbs-down"></i>',
|
|
'LIKE' => '<i class="bi bi-hand-thumbs-up"></i>',
|
|
'DOWNLOAD' => '<i class="bi bi-download"></i>',
|
|
'UPLOAD' => '<i class="bi bi-upload"></i>',
|
|
'COPY' => '<i class="bi bi-files"></i>',
|
|
'PASTE' => '<i class="bi bi-clipboard"></i>',
|
|
'EDIT' => '<i class="bi bi-pencil-square"></i>',
|
|
'VIEW' => '<i class="bi bi-eye"></i>',
|
|
'VIEW_OFF' => '<i class="bi bi-eye-slash"></i>',
|
|
'PRINT' => '<i class="bi bi-printer"></i>',
|
|
'SAVE' => '<i class="bi bi-save"></i>',
|
|
'CANCEL' => '<i class="bi bi-x-circle"></i>',
|
|
'CLOSE' => '<i class="bi bi-x-circle-fill"></i>',
|
|
'CLIENT' => '<i class="bi bi-person-circle"></i>',
|
|
'CHART' => '<i class="bi bi-bar-chart"></i>',
|
|
'CHECK' => '<i class="bi bi-check-circle"></i>',
|
|
'CHECK_OFF' => '<i class="bi bi-check-circle-fill"></i>',
|
|
'CHECK_ON' => '<i class="bi bi-check2-circle"></i>',
|
|
'CHECK_ALL' => '<i class="bi bi-check-all"></i>',
|
|
'CHECK_NONE' => '<i class="bi bi-check2"></i>',
|
|
'CHECK_SOME' => '<i class="bi bi-check2-square"></i>',
|
|
'COUPON' => '<i class="bi bi-ticket-perforated"></i>',
|
|
'HISTORY' => '<i class="bi bi-clock-history"></i>',
|
|
'MODIFY' => '<i class="bi bi-pencil-square"></i>',
|
|
'MODIFY_ALL' => '<i class="bi bi-pencil-square"></i>',
|
|
'BATCHJOB' => '<i class="bi bi-clipboard-data"></i>',
|
|
'DELETE' => '<i class="bi bi-trash"></i>',
|
|
'REBOOT' => '🔄',
|
|
'RELOAD' => '<i class="bi bi-bootstrap-reboot"></i>',
|
|
'SETUP' => '<i class="bi bi-gear"></i>',
|
|
'FLAG' => '<i class="bi bi-send"></i>',
|
|
'SEARCH' => '<i class="bi bi-search"></i>',
|
|
'PLAY' => '<i class="bi bi-play-fill"></i>',
|
|
'CART' => '<i class="bi bi-cart4"></i>',
|
|
'CARD' => '<i class="bi bi-credit-card"></i>',
|
|
'DEPOSIT' => '<i class="bi bi-cash-coin"></i>',
|
|
'DESKTOP' => '<i class="bi bi-pc-display-horizontal"></i>',
|
|
'DEVICE' => '<i class="bi bi-device-hdd"></i>',
|
|
'UP' => '<i class="bi bi-arrow-up"></i>',
|
|
'DOWN' => '<i class="bi bi-arrow-down"></i>',
|
|
'LEFT' => '<i class="bi bi-arrow-left"></i>',
|
|
'RIGHT' => '<i class="bi bi-arrow-right"></i>',
|
|
'IMAGE_FILE' => '<i class="bi bi-file-earmark-image"></i>',
|
|
'CLOUD' => '<i class="bi bi-cloud"></i>',
|
|
'SIGNPOST' => '<i class="bi bi-signpost"></i>',
|
|
'LOCK' => '<i class="bi bi-lock"></i>',
|
|
'UNLOCK' => '<i class="bi bi-unlock"></i>',
|
|
'BOX' => '<i class="bi bi-box"></i>',
|
|
'BOXS' => '<i class="bi bi-boxes"></i>',
|
|
'ONETIME' => '<i class="bi bi-1-circle-fill text-warning"></i>',
|
|
'MONTH' => '<i class="bi bi-calendar-check text-warning"></i>',
|
|
'EMAIL' => '<i class="bi bi-mailbox"></i>',
|
|
'MAIL' => '<i class="bi bi-envelope"></i>',
|
|
'PHONE' => '<i class="bi bi-phone"></i>',
|
|
'POINT' => '<i class="bi bi-coin"></i>',
|
|
'ALRAM' => '<i class="bi bi-bell"></i>',
|
|
'PAYMENT' => '<i class="bi bi-credit-card-2-back"></i>',
|
|
'LINK' => '<i class="bi bi-link-45deg"></i>',
|
|
'SALE_UP' => '<i class="bi bi-graph-up-arrow"></i>',
|
|
'SALE_DOWN' => '<i class="bi bi-graph-down-arrow"></i>',
|
|
'SERVICE' => '<i class="bi bi-gear-wide-connected"></i>',
|
|
'SERVICE_ITEM' => '<i class="bi bi-gear-wide-connected"></i>',
|
|
'SERVICE_ITEM_LINE' => '<i class="bi bi-chat-left-text"></i>',
|
|
'SERVICE_ITEM_IP' => '<i class="bi bi-globe"></i>',
|
|
'SERVICE_ITEM_SERVER' => '<i class="bi bi-server"></i>',
|
|
'SERVICE_ITEM_CPU' => '<i class="bi bi-cpu"></i>',
|
|
'SERVICE_ITEM_RAM' => '<i class="bi bi-memory"></i>',
|
|
'SERVICE_ITEM_STORAGE' => '<i class="bi bi-hdd-stack"></i>',
|
|
'SERVICE_ITEM_SOFTWARE' => '<i class="bi bi-box-seam"></i>',
|
|
'SERVICE_ITEM_DEFENCE' => '<i class="bi bi-shield-lock"></i>',
|
|
'SERVICE_ITEM_DOMAIN' => '<i class="bi bi-globe2"></i>',
|
|
'SERVICE_ITEM_OTHER' => '<i class="bi bi-gear-wide-connected"></i>',
|
|
'SERVER_ITEM_CPU' => '<i class="bi bi-cpu"></i>',
|
|
'SERVER_ITEM_RAM' => '<i class="bi bi-memory"></i>',
|
|
'SERVER_ITEM_DISK' => '<i class="bi bi-device-hdd"></i>',
|
|
'SERVER_ITEM_SWITCH' => '<i class="bi bi-diagram-3"></i>',
|
|
'SERVER_ITEM_OS' => '<i class="bi bi-microsoft"></i>',
|
|
'SERVER_ITEM_DB' => '<i class="bi bi-database"></i>',
|
|
'SERVER_ITEM_SOFTWARE' => '<i class="bi bi-window-sidebar"></i>',
|
|
'SERVER_ITEM_IP' => '<i class="bi bi-globe2"></i>',
|
|
'SERVER_ITEM_CS' => '<i class="bi bi-shield-check"></i>',
|
|
'SERVER_ITEM_ETC' => '<i class="bi bi-patch-question"></i>',
|
|
];
|
|
}
|
|
|
|
private static function getMessengerIcons(): array
|
|
{
|
|
return [
|
|
'WHATSAPP' => '<i class="bi bi-whatsapp"></i>',
|
|
'VIBER' => '<i class="bi bi-viber"></i>',
|
|
'LINE' => '<i class="bi bi-chat-left-text"></i>',
|
|
'KAKAO' => '<i class="bi bi-chat-left-text"></i>',
|
|
'DISCORD' => '<i class="bi bi-discord"></i>',
|
|
'TELEGRAM' => '<i class="bi bi-telegram"></i>',
|
|
'SKYPE' => '<i class="bi bi-skype"></i>',
|
|
'YOUTUBE' => '<i class="bi bi-youtube"></i>',
|
|
'FACEBOOK' => '<i class="bi bi-facebook"></i>',
|
|
'TWITTER' => '<i class="bi bi-twitter"></i>',
|
|
'INSTAGRAM' => '<i class="bi bi-instagram"></i>',
|
|
'LINKEDIN' => '<i class="bi bi-linkedin"></i>',
|
|
'GITHUB' => '<i class="bi bi-github"></i>',
|
|
'GITLAB' => '<i class="bi bi-gitlab"></i>',
|
|
'BITBUCKET' => '<i class="bi bi-bitbucket"></i>',
|
|
'REDDIT' => '<i class="bi bi-reddit"></i>',
|
|
'TIKTOK' => '<i class="bi bi-tiktok"></i>',
|
|
'PINTEREST' => '<i class="bi bi-pinterest"></i>',
|
|
'TUMBLR' => '<i class="bi bi-tumblr"></i>',
|
|
'SNAPCHAT' => '<i class="bi bi-snapchat"></i>',
|
|
];
|
|
}
|
|
}
|