servermgrv2 init...

This commit is contained in:
최준흠 2023-07-27 17:21:55 +09:00
parent 6f78a6bddd
commit 532b61c40f
41 changed files with 627 additions and 172 deletions

View File

@ -109,8 +109,8 @@ define('LAYOUTS', [
'stylesheets' => [ 'stylesheets' => [
'<link rel="icon" href="/favicon.ico">', '<link rel="icon" href="/favicon.ico">',
'<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">', '<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">',
'<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">',
'<link href="//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">', '<link href="//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">',
'<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" media="screen" rel="stylesheet" type="text/css" />',
], ],
'javascripts' => [ 'javascripts' => [
'<script src="//cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>', '<script src="//cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>',
@ -123,8 +123,8 @@ define('LAYOUTS', [
'stylesheets' => [ 'stylesheets' => [
'<link rel="icon" href="/favicon.ico">', '<link rel="icon" href="/favicon.ico">',
'<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">', '<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">',
'<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">',
'<link href="//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">', '<link href="//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">',
'<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" media="screen" rel="stylesheet" type="text/css" />',
], ],
'javascripts' => [ 'javascripts' => [
'<script src="//cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>', '<script src="//cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>',
@ -178,14 +178,29 @@ foreach (PATHS as $key => $path) {
//아이콘 및 Sound관련 //아이콘 및 Sound관련
define('ICONS', [ define('ICONS', [
'NEW' => '<i class="fa fa-paper-plane" aria-hidden="true"></i>', 'LOGIN' => '<i class="bi bi-shield-check"></i>',
'REPLY' => '<i class="fa fa-reply"></i>', 'LOGOUT' => '<i class="bi bi-sign-stop-fill"></i>',
'DELETE' => '<i class="fa fa-trash-o"></i>', 'LOCK' => '<i class="bi bi-shield-lock"></i>',
'RELOAD' => '<i class="fa fa-refresh" aria-hidden="true"></i>', 'NEW' => '<i class="bi bi-database-add"></i>',
'SETTING' => '<i class="fa fa-cogs" aria-hidden="true"></i>', 'REPLY' => '<i class="bi bi-arrow-return-right"></i>',
'FLAG' => '<i class="fa fa-flag" aria-hidden="true"></i>', 'DELETE' => '<i class="bi bi-trash"></i>',
'EXCEL' => '<i class="fa fa-file-excel-o" style="font-size:24px"></i>', 'RELOAD' => '<i class="bi bi-repeat"></i>',
'IMAGE_FILE' => '<i class="fa fa-file-image-o" aria-hidden="true"></i>', 'SETUP' => '<i class="bi bi-gear"></i>',
'FLAG' => '<i class="bi bi-send"></i>',
'SEARCH' => '<i class="bi bi-search"></i>',
'EXCEL' => '<i class="bi bi-file-excel"></i>',
'IMAGE_FILE' => '<i class="bi bi-file-earmark-image"></i>',
]);
define('CLASS_ICONS', [
'USER' => '<i class="bi bi-person-vcard"></i>',
'USERSNS' => '<i class="bi bi-globe"></i>',
'BOARD_CONFIG' => '<i class="bi bi-gear"></i>',
'BOARD' => '<i class="bi bi-pencil-square"></i>',
'CATEGORY' => '<i class="bi bi-boxes"></i>',
'PRODUCT' => '<i class="bi bi-box2"></i>',
'CART' => '<i class="bi bi-cart4"></i>',
'ORDER' => '<i class="bi bi-clipboard-check"></i>',
'BILLING' => '<i class="bi bi-cash-coin"></i>',
]); ]);
define('AUDIOS', [ define('AUDIOS', [
'Alram_GetEmail' => '<object width=0 height=0 data="/sound/jarvis_email.mp3" type="audio/mpeg"></object>', 'Alram_GetEmail' => '<object width=0 height=0 data="/sound/jarvis_email.mp3" type="audio/mpeg"></object>',

View File

@ -41,9 +41,6 @@ $routes->get('/signup/(:alpha)', 'AuthController::signup/$1');
$routes->get('/logout', 'AuthController::logout'); $routes->get('/logout', 'AuthController::logout');
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) { $routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
}); });
$routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($routes) {
$routes->get('/', 'FrontController::index');
});
// authGuard는 App\Config\Filters.php의 $aliases에 선언한 이름이어야 함 // authGuard는 App\Config\Filters.php의 $aliases에 선언한 이름이어야 함
$routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master,director,cloudflare,manager'], static function ($routes) { $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master,director,cloudflare,manager'], static function ($routes) {
$routes->get('/', 'Home::index'); $routes->get('/', 'Home::index');
@ -109,6 +106,34 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->get('reload/(:num)', 'HPILOController::reload/$1'); $routes->get('reload/(:num)', 'HPILOController::reload/$1');
}); });
}); });
$routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($routes) {
$routes->get('/', 'Home::index');
$routes->group('user', static function ($routes) {
$routes->get('', 'UserController::index');
$routes->get('excel', 'UserController::excel');
$routes->get('insert', 'UserController::insert_form');
$routes->post('insert', 'UserController::insert');
$routes->get('update/(:uuid)', 'UserController::update_form/$1');
$routes->post('update/(:uuid)', 'UserController::update/$1');
$routes->get('view/(:uuid)', 'UserController::view/$1');
$routes->get('delete/(:uuid)', 'UserController::delete/$1', ['filter' => 'authFilter:master']);
$routes->get('toggle/(:uuid)/(:hash)', 'UserController::toggle/$1/$2');
$routes->post('batchjob', 'UserController::batchjob');
});
$routes->group('board', static function ($routes) {
$routes->get('', 'BoardController::index');
$routes->get('excel', 'BoardController::excel/$1');
$routes->get('insert', 'BoardController::insert_form');
$routes->post('insert', 'BoardController::insert');
$routes->get('update/(:num)', 'BoardController::update_form/$1');
$routes->post('update/(:num)', 'BoardController::update/$1');
$routes->get('view/(:num)', 'BoardController::view/$1');
$routes->get('reply/(:num)', 'BoardController::reply_form/$1');
$routes->post('reply/(:num)', 'BoardController::reply/$1');
$routes->get('delete/(:num)', 'BoardController::delete/$1', ['filter' => 'authFilter:master']);
$routes->get('download/(:alpha)/(:num)', 'BoardController::download/$1/$2');
});
});
/* /*
* -------------------------------------------------------------------- * --------------------------------------------------------------------
* Additional Routing * Additional Routing

View File

@ -12,7 +12,7 @@ class AdminController extends BASEController
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{ {
parent::initController($request, $response, $logger); parent::initController($request, $response, $logger);
$this->_viewPath = strtolower('Admin/'); $this->_viewPath .= strtolower('Admin/');
$this->_viewDatas['layout'] = LAYOUTS['admin']; $this->_viewDatas['layout'] = LAYOUTS['admin'];
$this->_viewDatas['title'] = "관리자페이지"; $this->_viewDatas['title'] = "관리자페이지";
} }

View File

@ -5,6 +5,7 @@ namespace App\Controllers\Admin;
use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use App\Libraries\Log\Log;
abstract class AdminHierarchyController extends AdminController abstract class AdminHierarchyController extends AdminController
{ {

View File

@ -0,0 +1,74 @@
<?php
namespace App\Controllers\Front;
use App\Models\BoardConfigModel;
use App\Models\BoardModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
class BoardController extends FrontHierarchyController
{
private $_boardConfigModel = null;
private $_board_config_uids = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->_className .= 'Board';
$this->_model = new BoardModel();
helper($this->_className);
$this->_viewPath .= strtolower($this->_className);
$this->_viewDatas['title'] = lang($this->_className . '.title');
$this->_viewDatas['className'] = $this->_className;
}
//BoardConfig모델
final protected function getBoardConfigModel(): BoardConfigModel
{
return is_null($this->_boardConfigModel) ? new BoardConfigModel() : $this->_boardConfigModel;
}
//Field별 Form Option용
protected function getFieldFormOption(string $field): array
{
switch ($field) {
case 'board_config_uid':
$options = $this->_board_config_uids = $this->_board_config_uids ?: $this->getBoardConfigModel()->getFieldFormOptions(['status' => 'use']);
break;
default:
return parent::getFieldFormOption($field);
break;
}
if (!is_array($options)) {
throw new \Exception(__FUNCTION__ . "에서 {$this->_className}의 Field:{$field}의 FormOptionData가 array가 아닙니다.\n" . var_export($options, true));
}
return $options;
}
//Field별 Form Datas 처리용
protected function getFieldFormData(string $field, $entity = null): array
{
switch ($field) {
case 'passwd':
$this->_viewDatas['fieldDatas'][$field] = $this->request->getVar($field);
$this->_viewDatas['fieldDatas']['confirmpassword'] = $this->request->getVar('confirmpassword');
break;
case 'board_file':
$this->_viewDatas['fieldDatas'][$field] = $this->single_upload_procedure($field, $entity);
break;
default:
return parent::getFieldFormData($field, $entity);
break;
}
return $this->_viewDatas['fieldDatas'];
}
//View 관련
protected function view_process($entity)
{
// view_cnt에 추가하기위함
$this->_model->increaseViewCount($entity->getPrimaryKey());
return parent::view_process($entity);
}
}

View File

@ -12,7 +12,7 @@ class FrontController extends BASEController
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{ {
parent::initController($request, $response, $logger); parent::initController($request, $response, $logger);
$this->_viewPath = strtolower('Front/'); $this->_viewPath .= strtolower('Front/');
$this->_viewDatas['layout'] = LAYOUTS['front']; $this->_viewDatas['layout'] = LAYOUTS['front'];
$this->_viewDatas['title'] = "사용자페이지"; $this->_viewDatas['title'] = "사용자페이지";
} }

View File

@ -0,0 +1,63 @@
<?php
namespace App\Controllers\Front;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
abstract class FrontHierarchyController extends FrontController
{
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
}
//Reply관련
protected function reply_form_process($entity)
{
return $this->update_form_process($entity);
}
final public function reply_form($uid)
{
try {
$entity = $entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
$this->_viewDatas['fields'] = $this->_model->getFields('reply');
$this->_viewDatas['fieldRules'] = $this->_model->getFieldRules($this->_viewDatas['fields'], 'reply');
$this->_viewDatas['fieldFilters'] = $this->_model->getFieldFilters();
$this->_viewDatas['entity'] = $this->reply_form_process($entity);
return view($this->_viewPath . '/reply', $this->_viewDatas);
} catch (\Exception $e) {
return alert_CommonHelper($e->getMessage(), 'back');
}
}
protected function reply_validate($entity)
{
return $this->update_validate($entity);
}
protected function reply_process($entity)
{
return $this->_model->reply($entity, $this->_viewDatas['fieldDatas']);
}
public function reply($uid)
{
$message = "";
try {
$entity = $entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
$this->_viewDatas['fields'] = $this->_model->getFields('reply');
$this->_viewDatas['fieldRules'] = $this->_model->getFieldRules($this->_viewDatas['fields'], 'reply');
$this->_viewDatas['fieldFilters'] = $this->_model->getFieldFilters();
$entity = $this->reply_validate($entity);
$entity = $this->reply_process($entity);
$message = "{$entity->getTitle()} " . __FUNCTION__ . " 완료하였습니다.";
log_message("info", "{$this->_viewDatas['title']} {$message}");
return alert_CommonHelper($message, $this->_session->get(SESSION_NAMES['RETURN_URL']));
} catch (\Exception $e) {
$message = __FUNCTION__ . " 실패하였습니다.";
log_message("warning", $e->getMessage());
log_message("warning", var_export($this->_viewDatas['fieldDatas'], true));
log_message("info", "{$this->_viewDatas['title']} {$message}",);
return redirect()->back()->withInput()->with("error", $message . "<br>\n{$e->getMessage()}");
}
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace App\Controllers\Front;
use App\Models\UserModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
class UserController extends FrontController
{
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->_className .= 'User';
$this->_model = new UserModel();
helper($this->_className);
$this->_viewPath .= strtolower($this->_className);
$this->_viewDatas['title'] = lang($this->_className . '.title');
$this->_viewDatas['className'] = $this->_className;
}
//Field별 Form Datas 처리용
protected function getFieldFormData(string $field, $entity = null): array
{
switch ($field) {
case 'passwd':
$this->_viewDatas['fieldDatas'][$field] = $this->request->getVar($field);
$this->_viewDatas['fieldDatas']['confirmpassword'] = $this->request->getVar('confirmpassword');
break;
default:
return parent::getFieldFormData($field, $entity);
break;
}
return $this->_viewDatas['fieldDatas'];
}
}

View File

@ -79,7 +79,8 @@ CREATE TABLE servermgr.tw_board (
uid int(10) UNSIGNED NOT NULL AUTO_INCREMENT, uid int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
grpno int(10) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group번호: 상위가없을시 기본 uid와 같음,항상 숫자여야함', grpno int(10) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group번호: 상위가없을시 기본 uid와 같음,항상 숫자여야함',
grporder int(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group순서: 상위가없을시 1부터시작', grporder int(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group순서: 상위가없을시 1부터시작',
grpdepth int(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group깊이: 상위가없을시 1부터시작 , 상위 grpdepth+1씩 추가필요', board_config_uid varchar(36) NOT NULL COMMENT '게시판구분', grpdepth int(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group깊이: 상위가없을시 1부터시작 , 상위 grpdepth+1씩 추가필요',
board_config_uid varchar(36) NOT NULL COMMENT '게시판구분',
user_uid varchar(36) NULL COMMENT '작성자 정보', user_uid varchar(36) NULL COMMENT '작성자 정보',
title varchar(255) NOT NULL COMMENT '제목', title varchar(255) NOT NULL COMMENT '제목',
content text NOT NULL COMMENT '내용', content text NOT NULL COMMENT '내용',

View File

@ -110,7 +110,7 @@ function getFieldIndex_Row_BoardHelper($field, $entity, array $fieldFilters, $fi
), ),
anchor( anchor(
current_url() . '/reply/' . $entity->getPrimaryKey(), current_url() . '/reply/' . $entity->getPrimaryKey(),
ICONS["REPLY"], ICONS['REPLY'],
["target" => "_self"] ["target" => "_self"]
) )
); );

View File

@ -143,4 +143,4 @@ function alert_CommonHelper($msg, $url = false)
break; break;
} }
return '<script type="text/javascript">' . $msg . '</script>'; return '<script type="text/javascript">' . $msg . '</script>';
}// } //

View File

@ -1,6 +1,6 @@
<?php <?php
return [ return [
'title' => "게시판 정보", 'title' => "게시판 정보",
'label' => [ 'label' => [
'uid' => "번호", 'uid' => "번호",
'grpno' => "그룹번호", 'grpno' => "그룹번호",

View File

@ -1,6 +1,6 @@
<?php <?php
return [ return [
'title' => "게시판설정 정보", 'title' => "게시판설정 정보",
'label' => [ 'label' => [
'uid' => "번호", 'uid' => "번호",
'name' => "게시판제목", 'name' => "게시판제목",

View File

@ -4,6 +4,7 @@
<?= form_open_multipart(current_url(), $forms['attributes'], $forms['hiddens']) ?> <?= form_open_multipart(current_url(), $forms['attributes'], $forms['hiddens']) ?>
<table class="table table-bordered table-hover table-striped indexTable "> <table class="table table-bordered table-hover table-striped indexTable ">
<?php foreach ($fields as $field) : ?> <?php foreach ($fields as $field) : ?>
<?= csrf_field() ?>
<tr> <tr>
<td nowrap style="background-color:#e8ebe9; width:10%; text-align:right; padding-right:20px;"> <td nowrap style="background-color:#e8ebe9; width:10%; text-align:right; padding-right:20px;">
<?= getFieldLabel_BoardHelper($field, $fieldRules) ?> <?= getFieldLabel_BoardHelper($field, $fieldRules) ?>

View File

@ -6,10 +6,10 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<?php foreach ($layout['stylesheets'] as $stylesheet) : ?> <?php foreach ($layout['stylesheets'] as $stylesheet) : ?>
<?php echo $stylesheet ?> <?= $stylesheet ?>
<?php endforeach; ?> <?php endforeach; ?>
<?php foreach ($layout['javascripts'] as $javascript) : ?> <?php foreach ($layout['javascripts'] as $javascript) : ?>
<?php echo $javascript ?> <?= $javascript ?>
<?php endforeach; ?> <?php endforeach; ?>
<link href="/css/admin.css" media="screen" rel="stylesheet" type="text/css" /> <link href="/css/admin.css" media="screen" rel="stylesheet" type="text/css" />
@ -20,25 +20,32 @@
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
<title><?php echo $title ?></title> <title><?= $title ?></title>
</head> </head>
<body> <body>
<!-- Body Header Start --> <!-- Body Header Start -->
<?php echo $this->include($layout['path'] . '/top_menu'); ?> <?= $this->include($layout['path'] . '/top_menu'); ?>
<!-- Body Header End --> <!-- Body Header End -->
<div id="main" class="row g-3"> <table id="main">
<div id="left_menu" class="col-1"> <tr>
<!-- Body Left menu Start --> <td width="160" valign="top">
<?php echo $this->include($layout['path'] . '/left_menu'); ?> <!-- Body Left menu Start -->
<!-- Body Left menu End --> <?= $this->include($layout['path'] . '/left_menu'); ?>
</div> <!-- Body Left menu End -->
<div id="content" class="col-11"> </td>
<!-- Body Content Start --> <td width="*" valign="top" style="background-color:white">
<?php echo $this->renderSection('content') ?> <!-- Body Content Start -->
<!-- Body Content End --> <?= $this->renderSection('content') ?>
</div> <!-- Body Content End -->
</div> </td>
<td width="50" valign="top">
<!-- Body Right menu Start -->
<?= $this->include($layout['path'] . '/right_menu'); ?>
<!-- Body Right menu End -->
</td>
</tr>
</table>
</body> </body>
</html> </html>

View File

@ -1,11 +1,10 @@
<!-- left menu start --> <!-- left menu start -->
<link href="/css/admin/left_menu.css" media="screen" rel="stylesheet" type="text/css" /> <link href="/css/admin/left_menu.css" media="screen" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/admin/left_menu.js"></script> <script type="text/javascript" src="/js/side_menu.js"></script>
<div id="menu" onMouseOver="sideMenuToggle(this);" onMouseOut="sideMenuToggle(this);"> <div id="left_menu" class="shadow-lg rounded">
<div id="menu_button">메뉴열기</div> <div class="accordion accordion-flush">
<div class="accordion">
<?= $this->include($layout['path'] . '/left_menu/base'); ?> <?= $this->include($layout['path'] . '/left_menu/base'); ?>
<?= $this->include($layout['path'] . '/left_menu/hpilo'); ?>
<?= $this->include($layout['path'] . '/left_menu/board'); ?> <?= $this->include($layout['path'] . '/left_menu/board'); ?>
<?= $this->include($layout['path'] . '/left_menu/shoppingmall'); ?>
</div> </div>
</div> </div>

View File

@ -2,8 +2,8 @@
<h2><a href=" /admin"><i class="fa fa-home"></i>Main</a></h2> <h2><a href=" /admin"><i class="fa fa-home"></i>Main</a></h2>
</div> </div>
<div class="accordion-item"> <div class="accordion-item">
<h2><a href="/admin/user"><i class="fa fa-users"></i>계정 관리</a></h2> <h2><a href="/admin/user"><?= CLASS_ICONS['USER'] ?></i>계정 관리</a></h2>
</div> </div>
<div class="accordion-item"> <div class="accordion-item">
<h2><a href="/admin/usersns"><i class="fa fa-users"></i>SNS 계정 관리</a></h2> <h2><a href="/admin/usersns"><?= CLASS_ICONS['USERSNS'] ?></i>SNS 계정 관리</a></h2>
</div> </div>

View File

@ -1,13 +1,13 @@
<div class="accordion-item"> <div class="accordion-item">
<h2 class="accordion-header" id="panelsStayOpen-heading-Board"> <h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapse-Board" aria-expanded="false" aria-controls="panelsStayOpen-collapse-Board"><b>게시판관리</b></button> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-heading-Board" aria-expanded="false" aria-controls="flush-heading-Board"><b>게시판관리</b></button>
</h2> </h2>
<div id="panelsStayOpen-collapse-Board" class="accordion-collapse collapse show" aria-labelledby="panelsStayOpen-heading-Board"> <div id="flush-heading-Board" class="accordion-collapse collapse show" aria-labelledby="flush-heading-Board">
<div class="accordion-item"> <div class="accordion-item">
<h2><a href="/admin/boardconfig"><i class="fa fa-share-alt"></i>설정 관리</a></h2> <h2><a href="/admin/boardconfig"><?= CLASS_ICONS['BOARD_CONFIG'] ?>설정 관리</a></h2>
</div> </div>
<div class="accordion-item"> <div class="accordion-item">
<h2><a href="/admin/board"><i class="fa fa-share-alt"></i>게시글 관리</a></h2> <h2><a href="/admin/board"><?= CLASS_ICONS['BOARD'] ?>게시글 관리</a></h2>
</div> </div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,22 @@
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-heading-Shoppingmall" aria-expanded="false" aria-controls="flush-heading-Shoppingmall"><b>상점관리</b></button>
</h2>
<div id="flush-heading-Shoppingmall" class="accordion-collapse collapse show" aria-labelledby="panelsStayOpen-heading-Shoppingmall">
<div class="accordion-item">
<h2><a href="/admin/category"><?= CLASS_ICONS['CATEGORY'] ?>상품분류관리</a></h2>
</div>
<div class="accordion-item">
<h2><a href="/admin/product"><?= CLASS_ICONS['PRODUCT'] ?>상품 관리</a></h2>
</div>
<div class="accordion-item">
<h2><a href="/admin/cart"><?= CLASS_ICONS['CART'] ?>장바구니 관리</a></h2>
</div>
<div class="accordion-item">
<h2><a href="/admin/order"><?= CLASS_ICONS['ORDER'] ?></i>주문 관리</a></h2>
</div>
<div class="accordion-item">
<h2><a href="/admin/billing"><?= CLASS_ICONS['BILLING'] ?></i>결제 관리</a></h2>
</div>
</div>
</div>

View File

@ -0,0 +1,7 @@
<!-- right menu start -->
<link href="/css/admin/right_menu.css" media="screen" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/side_menu.js"></script>
<div id="right_menu" class="shadow-lg rounded">
<div class="accordion accordion-flush">
</div>
</div>

View File

@ -1,14 +1,14 @@
<link href="/css/admin/top_menu.css" media="screen" rel="stylesheet" type="text/css" /> <nav class="navbar navbar-expand-lg bg-light" style="border-bottom:1px solid silver;">
<nav class="top_menu navbar navbar-expand-lg bg-light">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand col-xs-12" href="/admin">BaseProject 관리 Site</a> <a href="/admin" class="navbar-brand">BaseProject 관리 Site</a>
<div>&nbsp;</div> <div class="input-group custom-search-form" style="width:270px;">
<div>&nbsp;</div> <?= $this->include($layout['path'] . '/top_menu/search'); ?>
<div>&nbsp;</div> </div>
<div>&nbsp;</div> <div class="input-group custom-search-form" style="width:270px;">
<div>&nbsp;</div> <?= $this->include($layout['path'] . '/top_menu/make_password'); ?>
<div>&nbsp;</div> </div>
<div class="make_password"><?= $this->include($layout['path'] . '/make_password'); ?></div> <div style="float: right;">
<div class="member_link"><?= $this->include($layout['path'] . '/member_link'); ?></div> <?= $this->include($layout['path'] . '/top_menu/member_link'); ?>
</div>
</div> </div>
</nav> </nav>

View File

@ -0,0 +1,3 @@
<span><?= ICONS['LOCK'] ?></span>
<input type="text" class="form-control" value="<?= getPasswordString_CommonHelper() ?>" id="makePassword">
<span class="input-group-btn" id="mkbutton"><button class="btn btn-default border border-dark" type="button" id="totSearchBtn" onClick="window.location.reload();"><?= ICONS['SEARCH'] ?></button></span>

View File

@ -0,0 +1,16 @@
<ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
<li class="nav-item dropdown">
<?php if ($session->get(SESSION_NAMES['ISLOGIN'])) : ?>
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<?= ICONS['LOGIN'] ?><?= $session->get(SESSION_NAMES['AUTH'])[AUTH_FIELDS['TITLE']] ?>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="/admin/user/update/<?= $session->get(SESSION_NAMES['AUTH'])[AUTH_FIELDS['ID']] ?>"><?= ICONS['SETUP'] ?>수정</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="/logout"><?= ICONS['LOGOUT'] ?>Logout</a></li>
</ul>
<?php else : ?><a class="nav-link dropdown-toggle" href="/login" role="button"><?= ICONS['LOGIN'] ?>Login</a><?php endif ?>
</li>
</ul>

View File

@ -0,0 +1,4 @@
<form class="d-flex me-20" role="search">
<input class="form-control" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>

View File

@ -0,0 +1,19 @@
<!-- Copyright 시작-->
<div style="magin-top:5px; margin-bottom:5px; border:1px solid silver;"></div>
<div id="footer">
<img src="logo_gray.png">
<span style="color:#999; font-size: 11px;">
<a href="/sitecontent/?sitecategory=39">会社紹介 </a>&nbsp;|&nbsp;
<a href="/sitecontent/?sitecategory=40">利用約款</a>&nbsp;|&nbsp;
<a href="/sitecontent/?sitecategory=41">個人情報保護政策</a>&nbsp;|&nbsp;
<a href="mailto:idc@idcjp.jp">eメール</a>
</span>
<div style="font-size: 11px; margin-top: 5px; line-height: 160%;">
社名 : <span class="cpy">TRi-aBility()</span> &nbsp; &nbsp; 代表者 : <span class="cpy"> </span> &nbsp; &nbsp;
住所 : <span class="cpy">東京都 大田区平和島6-5</span><br/>
TEL: <span class="cpy">043-307-5390</span> &nbsp; &nbsp; EMAIL : <span class="cpy"><a href="mailto:idc@idcjp.jp" style="color:darkblue;">idc@idcjp.jp</a></span><br/>
<!-- 事業者登録番号 : <span class="cpy">887-81-00973</span><br/> -->
<!-- Copyright &copy; 2012, YYY, All rights Reserved -->
</div>
</div>
<!-- Copyright -->

View File

@ -0,0 +1,5 @@
<div style="text-align:right; margin-top:10px; margin-bottom:5px;">
<i class="fa fa-plus text-danger" style="padding-left:5px; padding-right:5px;"></i><a href="/">HOME</a>
<i class="fa fa-angle-right" style="padding-left:5px; padding-right:5px;"></i><a href="<?php echo $parentCategory->url ?>"><?php echo $language == LANGUAGE_JAPAN ? $parentCategory->title_japanese:$parentCategory->title ?></a>
<i class="fa fa-angle-right" style="padding-left:5px; padding-right:5px;"></i><span style="font-weight:bold;"><?php echo $language == LANGUAGE_JAPAN ? $currentCategory->title_japanese:$currentCategory->title ?></span>
</div>

View File

@ -0,0 +1,8 @@
<!-- SITEBOARD LEFT BANNER 시작 -->
<script src="/js/ScrollToFixed-master/jquery-scrolltofixed-min.js" type="text/javascript"></script>
<script src="/js/front/subpage_fixed_left_banner.js" type="text/javascript"></script>
<div id="subpage_fixed_left_banner">
<div style="margin-top:30px;"><a href="/sitecontent/?sitecategory=44"><img src="left_banner_1.png"></a></div>
<div style="margin-top:20px;"><a href="javascript://" onclick="window.open('<?php echo CHATTING_URL?>','chat','width=500, height=500')" onfocus="this.blur()"><img src="left_banner_2.png"></a></div>
</div>
<!-- SITEBOARD LEFT BANNER -->

View File

@ -0,0 +1,8 @@
<!-- SITECMS LEFT BANNER 시작 -->
<script src="/js/ScrollToFixed-master/jquery-scrolltofixed-min.js" type="text/javascript"></script>
<script src="/js/front/subpage_fixed_left_banner.js" type="text/javascript"></script>
<div id="subpage_fixed_left_banner">
<div style="margin-top:30px;"><a href="/sitecontent/?sitecategory=44"><img src="left_banner_1.png"></a></div>
<div style="margin-top:20px;"><a href="javascript://" onclick="window.open('<?php echo CHATTING_URL?>','chat','width=500, height=500')" onfocus="this.blur()"><img src="left_banner_2.png"></a></div>
</div>
<!-- SITECMS LEFT BANNER -->

View File

@ -0,0 +1,13 @@
<!-- layout_content Top Logo 시작 -->
<div style="position:relative;">
<a href="/"><img src="logo.png"/></a>
<img src="logo_side.png"/>
<div style="position:absolute; with:700px; top:50px; left:620px;">
<a href="/"><img src="main_link_home.png"/></a>
<a href="mailto:idc@idcjp.jp"><img src="main_link_contact.png"/></a>
<a href="javascript:bookmarksite('IDC-JP', 'http://www.idcjp.jp')"><img src="main_link_bookmark.png"/></a>
<a href="/common/language/locale/korean"><img src="main_link_korea.png"/></a>
<a href="/common/language/locale/japanese"><img src="main_link_japan.png"/></a>
</div>
</div>
<!-- layout_content Top Logo -->

View File

@ -0,0 +1,5 @@
<div id='welcome_left_banner' style="position:absolute; top:150px; left:-215px; text-align:right;">
<img src="side_left_title.png">
<div style="padding-top:15px;"><a href="/sitecontent/?sitecategory=44"><img src="main_banner_1.png"></a></div>
<div style="padding-top:15px;"><a href="javascript://" onclick="window.open('<?php echo CHATTING_URL?>','chat','width=<?php echo SITECHAT_WINDOW_WIDTH ?>, height=<?php echo SITECHAT_WINDOW_HEIGHT?>')" onfocus="this.blur()"><img src="main_banner_2.png"></a></div>
</div>

View File

@ -0,0 +1,16 @@
<div id='partner' style="margin-bottom:5px; padding-top:5px; padding-bottom:5px; border-top:1px solid silver; border-bottom:1px solid silver;">
<img src='main_icon_partner.png'> &nbsp; &nbsp;
<img src='main_icon_softbank.png'> &nbsp;
<img src='main_icon_cisco.png'> &nbsp;
<img src='main_icon_lg.png'> &nbsp;
<img src='main_icon_hp.png'> &nbsp;
<img src='main_icon_dell.png'> &nbsp;
<img src='main_icon_ibm.png'> &nbsp;
<img src='main_icon_slim.png'> &nbsp;
<img src='main_icon_ntt.png'> &nbsp;
<img src='main_icon_jstream.png'> &nbsp;
<img src='main_icon_corel.png'> &nbsp;
<img src='main_icon_kddi.png'> &nbsp;
<img src='main_icon_red.png'> &nbsp;
<img src='main_icon_yahoobb.png'> &nbsp;
</div>

View File

@ -0,0 +1,14 @@
<div id='welcome_right_banner' style="position:absolute; top:150px; left:10px;">
<img src="side_right_title.gif">
<div style='padding-top:15px; text-align:center;'>
<div style='width: 190px;'>
<div style='float: left; width: 90px; height: 73px;'><a href='/sitecontent/?sitecategory=50'><img src='main_icon_1.png' border=0></a></div>
<div style='float: left; width: 100; height: 73px;'><a href='#'><img src='main_icon_2.png' border=0></a></div>
<div style='clear: left;'></div>
<div style='float: left; width: 90px; height: 83px;'><a href='/sitecontent/?sitecategory=52'><img src='main_icon_3.png' border=0></a></div>
<div style='float: left; width: 10px; height:0 83px;'><a href='/sitecontent/?sitecategory=54'><img src='main_icon_4.png' border=0></a></div>
<div style='clear: left;'></div>
<div style='paddint-top:15px;'><img src='main_icon_ns.png' border=0></div>
</div>
</div>
</div>

View File

@ -1,41 +1,39 @@
</div> <div class="footer">&nbsp;</div>
<!-- panel-body --> <!-- panel panel-default -->
</div> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" />
<!-- panel panel-default --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" /> <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css" /> <script src="/vendors/tinymce/tinymce/tinymce.min.js" referrerpolicy="origin"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script> <script type="text/javascript">
<script src="/vendors/tinymce/tinymce/tinymce.min.js" referrerpolicy="origin"></script> $(document).ready(function() {
<script type="text/javascript"> //class가 calender인 inputbox용,날짜field용
$(document).ready(function() { $(".calender").datepicker({
//class가 calender인 inputbox용,날짜field용 changeYear: true,
$(".calender").datepicker({ changeMonth: true,
changeYear: true, yearRange: "-10:+0",
changeMonth: true, dateFormat: "yy-mm-dd"
yearRange: "-10:+0",
dateFormat: "yy-mm-dd"
});
//id가 batchjobuids_checkbox인 버튼을 클릭시 class가 batchjobuids_checkboxs인 checkbox용
$('#batchjobuids_checkbox').click(function(event) {
if (this.checked) {
$('.batchjobuids_checkboxs').each(function() { //loop checkbox
$(this).prop('checked', true); //check
});
} else {
$('.batchjobuids_checkboxs').each(function() { //loop checkbox
$(this).prop('checked', false); //uncheck
});
}
});
//class가 select-field인 SelectBox용
$(".select-field").select2({
theme: "bootstrap-5",
});
//class가 editor인 textarea용
tinymce.init({
selector: '.editor',
theme: 'silver',
height: 500
});
}); });
</script> //id가 batchjobuids_checkbox인 버튼을 클릭시 class가 batchjobuids_checkboxs인 checkbox용
$('#batchjobuids_checkbox').click(function(event) {
if (this.checked) {
$('.batchjobuids_checkboxs').each(function() { //loop checkbox
$(this).prop('checked', true); //check
});
} else {
$('.batchjobuids_checkboxs').each(function() { //loop checkbox
$(this).prop('checked', false); //uncheck
});
}
});
//class가 select-field인 SelectBox용
$(".select-field").select2({
theme: "bootstrap-5",
});
//class가 editor인 textarea용
tinymce.init({
selector: '.editor',
theme: 'silver',
height: 500
});
});
</script>

View File

@ -1,4 +1,3 @@
<link href="/css/admin/header.css" media="screen" rel="stylesheet" type="text/css" /> <div class="head">
<div class="header"> <h4><i class="bi bi-cast"></i><?= $title ?></h4>
<div class="header-head"><h4><i class="fa fa-desktop"></i><?= $title ?></h4></div> </div>
<div class="header-body">

View File

@ -1,6 +1,6 @@
<li class="nav-item">검색어:<?= form_input('word', $word) ?></li> <li class="nav-item">검색어:<?= form_input('word', $word) ?></li>
<li class="nav-item">검색일: <li class="nav-item">검색일:
<?= form_input('start', $start, array("class" => "calender")) ?><?= form_input('end', $end, array("class" => "calender")) ?> <?= form_input('start', $start, array("class" => "calender")) ?><?= form_input('end', $end, array("class" => "calender")) ?>
<?= form_submit('', '검색', array("class" => "btn btn-outline btn-primary")); ?><?= anchor(current_url() . '/excel?' . $uri->getQuery(), ICONS['EXCEL'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?> <?= form_submit('', '검색', array("class" => "btn btn-outline btn-primary")); ?><?= anchor(current_url() . '/excel?' . $uri->getQuery(), '<i class="bi bi-file-excel"></i>', ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?>
</li> </li>
<li class="nav-item">page:<?= $page ?> / total:<?= $total_page ?> <?= form_dropdown('per_page', $pageOptions, $per_page, array('onChange' => 'this.form.submit()')) ?> / 총:<?= $total_count ?></li> <li class="nav-item">page:<?= $page ?> / total:<?= $total_page ?> <?= form_dropdown('per_page', $pageOptions, $per_page, array('onChange' => 'this.form.submit()')) ?> / 총:<?= $total_count ?></li>

View File

@ -47,24 +47,35 @@ a:visited { text-decoration: none; }
a:hover { text-decoration: underline; } a:hover { text-decoration: underline; }
a:active { text-decoration: underline; } a:active { text-decoration: underline; }
div#main{ #main{
padding-top:10px;
padding-bottom:10px;
/* border:1px solid blue; */ /* border:1px solid blue; */
margin-top:20px;
width:100%; width:100%;
} }
div#main div#content{ #main div.head{
padding-top:10px; padding:15px;
padding-left:30px; border-left:1px solid silver;
/* border:1px solid red; */ border-top:1px solid silver;
width:100%; border-right:1px solid silver;
border-radius: 10px 10px 0px 0px;
background-color:#efefef;
}
#main div.footer{
border-left:1px solid silver;
border-bottom:1px solid silver;
border-right:1px solid silver;
border-radius: 0px 0px 10px 10px;
} }
div.indexTable_wrapper{ div.indexTable_wrapper{
padding:10px;
border-left:1px solid silver;
border-right:1px solid silver;
width: 100%; width: 100%;
} }
div.indexTable_wrapper div.indexTable_head { div.indexTable_wrapper div.indexTable_head {
/* border:1px solid red; */
padding:5px 0; padding:5px 0;
} }
div.indexTable_wrapper div.indexTable_head ul.nav li.nav-item{ div.indexTable_wrapper div.indexTable_head ul.nav li.nav-item{
@ -93,7 +104,6 @@ div.indexTable_wrapper div.indexTable_body ul.nav li.nav-item{
margin-left:15px; margin-left:15px;
} }
div.indexTable_wrapper div.indexTable_tail { div.indexTable_wrapper div.indexTable_tail {
text-align:center; text-align:center;
} }

View File

@ -1,32 +1,24 @@
div#main div#left_menu{ div#left_menu{
position:fixed; position:fixed;
margin-top:139px; /* margin-top:139px;
z-index:100; z-index:100;
width:28px; width:28px;
border:1px solid #e7e7e7; border:1px solid #e7e7e7;
padding:0px; padding:0px; */
width: 160px;
border:1px solid silver;
} }
div#main div#left_menu div#menu div#menu_button{ div#left_menu div.accordion {
float:right; /* display:none; */
height: 100px;
width: 20px;
cursor: ew-resize;
border-radius: 0px 5px 5px 0px;
border: 1px solid silver;
background-color: #eaeaea;
padding:0px;
}
div#main div#left_menu div#menu div.accordion {
display:none;
background-color: white; background-color: white;
} }
div#main div#left_menu div#menu div.accordion div.accordion-item:hover { div#left_menu div.accordion div.accordion-item:hover {
background-color: #e7e7e7; background-color: #e7e7e7;
} }
div#main div#left_menu div#menu div.accordion div.accordion-item a{ div#left_menu div.accordion div.accordion-item a{
padding-left:20px; padding-left:10px;
} }
div#main div#left_menu div#menu div.accordion div.accordion-collapse a{ div#left_menu div.accordion div.accordion-collapse a{
padding-left:40px; padding-left:30px;
} }

View File

@ -0,0 +1,24 @@
div#right_menu{
position:fixed;
/* margin-top:139px;
z-index:100;
width:28px;
border:1px solid #e7e7e7;
padding:0px; */
width: 100px;
border:1px solid silver;
}
div#right_menu div.accordion {
/* display:none; */
background-color: white;
}
div#right_menu div.accordion div.accordion-item:hover {
background-color: #e7e7e7;
}
div#right_menu div.accordion div.accordion-item a{
padding-left:10px;
}
div#right_menu div.accordion div.accordion-collapse a{
padding-left:30px;
}

View File

@ -1,13 +1,21 @@
/* ------------------------------------------------------------ /* ------------------------------------------------------------
* Name : default.css * Name : admin.css
* Desc : GIGSNS Layout * Desc : Admin StyleSheet
* Created : 2012/07 GIGAKOREA by Donghee,kim * Created : 2016/9/11 Tri-aBility by Junheum,Choi
* Updated : * Updated :
------------------------------------------------------------ */ ------------------------------------------------------------ */
@charset "utf-8"; @charset "utf-8";
/*########################################################################################### /*###########################################################################################
#############################공통 레이아웃################################################### #############################공통 레이아웃###################################################
#############################################################################################*/ #############################################################################################*/
/* CSS Document */
/*
* * Start Bootstrap - SB Admin 2 Bootstrap Admin Theme (http://startbootstrap.com)
* * Code licensed under the Apache License v2.0.
* * For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/
* { * {
margin:0px; margin:0px;
@ -17,27 +25,24 @@
} }
body { body {
background-color: white; background-color: #eee;
} }
input[type=text],input[type=password]{ input[type=text],input[type=password]{
display: inline-block; display: inline-block;
width:300px;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
white-space: nowrap; white-space: nowrap;
} }
select,textarea,button { select,textarea,button {
display: inline-block; display: inline-block;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
white-space: nowrap; white-space: nowrap;
}
div.pagination {
text-align:center;
padding-top:5px;
} }
a:link { text-decoration: none; }
a:visited { text-decoration: none; }
a:hover { text-decoration: underline; }
a:active { text-decoration: underline; }

View File

@ -1,5 +1,5 @@
/* ------------------------------------------------------------ /* ------------------------------------------------------------
* Name : front.css * Name : admin.css
* Desc : Admin StyleSheet * Desc : Admin StyleSheet
* Created : 2016/9/11 Tri-aBility by Junheum,Choi * Created : 2016/9/11 Tri-aBility by Junheum,Choi
* Updated : * Updated :
@ -25,39 +25,89 @@
} }
body { body {
background-color: white; background-color: #eee;
} }
input[type=text],input[type=password]{ input[type=text],input[type=password]{
display: inline-block; display: inline-block;
width:100px;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
white-space: nowrap; white-space: nowrap;
} }
select,textarea,button { select,textarea,button {
display: inline-block; display: inline-block;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
white-space: nowrap; white-space: nowrap;
}
a:link { text-decoration: none; }
a:visited { text-decoration: none; }
a:hover { text-decoration: underline; }
a:active { text-decoration: underline; }
#main{
/* border:1px solid blue; */
margin-top:20px;
width:100%;
} }
a:hover, a:visited, a:link, a:active { #main div.head{
text-decoration: none !important; padding:15px;
border-left:1px solid silver;
border-top:1px solid silver;
border-right:1px solid silver;
border-radius: 10px 10px 0px 0px;
background-color:#efefef;
}
#main div.footer{
border-left:1px solid silver;
border-bottom:1px solid silver;
border-right:1px solid silver;
border-radius: 0px 0px 10px 10px;
} }
div.mainContent{ div.indexTable_wrapper{
border:1px solid red; padding:10px;
padding-top:20px; border-left:1px solid silver;
padding-left:30px; border-right:1px solid silver;
padding-right:10px; width: 100%;
}
div.indexTable_wrapper div.indexTable_head {
/* border:1px solid red; */
padding:5px 0;
}
div.indexTable_wrapper div.indexTable_head ul.nav li.nav-item{
/* border:1px solid red; */
margin-left:15px;
}
div.indexTable_wrapper div.indexTable_body {
width:100%;
overflow-x: auto;
padding-top:5px;
padding-bottom:5px;
}
div.indexTable_wrapper div.indexTable_body table.indexTable{
white-space: nowrap;
}
div.indexTable_wrapper div.indexTable_body table.indexTable th{
text-align:center;
font-size: 16px;
}
div.indexTable_wrapper div.indexTable_body table.indexTable td{
text-align:center;
} }
div.pagination { div.indexTable_wrapper div.indexTable_body ul.nav li.nav-item{
border: 1px solid blue; /* border:1px solid red; */
text-align:center; margin-left:15px;
padding-top:5px; }
div.indexTable_wrapper div.indexTable_tail {
text-align:center;
}
div.indexTable_wrapper div.indexTable_tail ul.justify-content-center {
/* border:1px solid red; */
margin-top:20px;
} }

14
public/js/side_menu.js Normal file
View File

@ -0,0 +1,14 @@
function sideMenuToggle (menu_id){
var accordion = $(".accordion")[0];
alert(accordion.clientWidth);
if (accordion.clientWidth == 0){
accordion.style.display = "block";
$("#"+menu_id).css({ "width": '200px' })
$("#button"+menu_id).html("메뉴닫기");
}
else {
accordion.style.display = "none";
$("#"+menu_id).css({"width":'28px'})
$("#button"+menu_id).html("메뉴열기");
}
}//toggleMenu