diff --git a/app/Config/Constants.php b/app/Config/Constants.php index d92f34f..2c4143c 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -109,8 +109,8 @@ define('LAYOUTS', [ 'stylesheets' => [ '', '', + '', '', - '', ], 'javascripts' => [ '', @@ -123,8 +123,8 @@ define('LAYOUTS', [ 'stylesheets' => [ '', '', + '', '', - '', ], 'javascripts' => [ '', @@ -178,14 +178,29 @@ foreach (PATHS as $key => $path) { //아이콘 및 Sound관련 define('ICONS', [ - 'NEW' => '', - 'REPLY' => '', - 'DELETE' => '', - 'RELOAD' => '', - 'SETTING' => '', - 'FLAG' => '', - 'EXCEL' => '', - 'IMAGE_FILE' => '', + 'LOGIN' => '', + 'LOGOUT' => '', + 'LOCK' => '', + 'NEW' => '', + 'REPLY' => '', + 'DELETE' => '', + 'RELOAD' => '', + 'SETUP' => '', + 'FLAG' => '', + 'SEARCH' => '', + 'EXCEL' => '', + 'IMAGE_FILE' => '', +]); +define('CLASS_ICONS', [ + 'USER' => '', + 'USERSNS' => '', + 'BOARD_CONFIG' => '', + 'BOARD' => '', + 'CATEGORY' => '', + 'PRODUCT' => '', + 'CART' => '', + 'ORDER' => '', + 'BILLING' => '', ]); define('AUDIOS', [ 'Alram_GetEmail' => '', diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 4c66ea4..1a51480 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -41,9 +41,6 @@ $routes->get('/signup/(:alpha)', 'AuthController::signup/$1'); $routes->get('/logout', 'AuthController::logout'); $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에 선언한 이름이어야 함 $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master,director,cloudflare,manager'], static function ($routes) { $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->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 diff --git a/app/Controllers/Admin/AdminController.php b/app/Controllers/Admin/AdminController.php index 46ce858..052a00f 100644 --- a/app/Controllers/Admin/AdminController.php +++ b/app/Controllers/Admin/AdminController.php @@ -12,7 +12,7 @@ class AdminController extends BASEController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->_viewPath = strtolower('Admin/'); + $this->_viewPath .= strtolower('Admin/'); $this->_viewDatas['layout'] = LAYOUTS['admin']; $this->_viewDatas['title'] = "관리자페이지"; } diff --git a/app/Controllers/Admin/AdminHierarchyController.php b/app/Controllers/Admin/AdminHierarchyController.php index 6d5f9ed..18a5501 100644 --- a/app/Controllers/Admin/AdminHierarchyController.php +++ b/app/Controllers/Admin/AdminHierarchyController.php @@ -5,6 +5,7 @@ namespace App\Controllers\Admin; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; +use App\Libraries\Log\Log; abstract class AdminHierarchyController extends AdminController { diff --git a/app/Controllers/Front/BoardController.php b/app/Controllers/Front/BoardController.php new file mode 100644 index 0000000..96b5af9 --- /dev/null +++ b/app/Controllers/Front/BoardController.php @@ -0,0 +1,74 @@ +_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); + } +} diff --git a/app/Controllers/Front/FrontController.php b/app/Controllers/Front/FrontController.php index 6c64e8e..af77a1e 100644 --- a/app/Controllers/Front/FrontController.php +++ b/app/Controllers/Front/FrontController.php @@ -12,7 +12,7 @@ class FrontController extends BASEController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->_viewPath = strtolower('Front/'); + $this->_viewPath .= strtolower('Front/'); $this->_viewDatas['layout'] = LAYOUTS['front']; $this->_viewDatas['title'] = "사용자페이지"; } diff --git a/app/Controllers/Front/FrontHierarchyController.php b/app/Controllers/Front/FrontHierarchyController.php new file mode 100644 index 0000000..67950b9 --- /dev/null +++ b/app/Controllers/Front/FrontHierarchyController.php @@ -0,0 +1,63 @@ +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 . "
\n{$e->getMessage()}"); + } + } +} diff --git a/app/Controllers/Front/UserController.php b/app/Controllers/Front/UserController.php new file mode 100644 index 0000000..dfe72be --- /dev/null +++ b/app/Controllers/Front/UserController.php @@ -0,0 +1,37 @@ +_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']; + } +} diff --git a/app/Database/base.sql b/app/Database/base.sql index b311e5e..2225dbb 100644 --- a/app/Database/base.sql +++ b/app/Database/base.sql @@ -79,7 +79,8 @@ CREATE TABLE servermgr.tw_board ( uid int(10) UNSIGNED NOT NULL AUTO_INCREMENT, grpno int(10) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group번호: 상위가없을시 기본 uid와 같음,항상 숫자여야함', 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 '작성자 정보', title varchar(255) NOT NULL COMMENT '제목', content text NOT NULL COMMENT '내용', diff --git a/app/Helpers/Board_helper.php b/app/Helpers/Board_helper.php index 23cfb3b..7ad917c 100644 --- a/app/Helpers/Board_helper.php +++ b/app/Helpers/Board_helper.php @@ -110,7 +110,7 @@ function getFieldIndex_Row_BoardHelper($field, $entity, array $fieldFilters, $fi ), anchor( current_url() . '/reply/' . $entity->getPrimaryKey(), - ICONS["REPLY"], + ICONS['REPLY'], ["target" => "_self"] ) ); diff --git a/app/Helpers/Common_helper.php b/app/Helpers/Common_helper.php index 632d39d..2f47bd2 100644 --- a/app/Helpers/Common_helper.php +++ b/app/Helpers/Common_helper.php @@ -143,4 +143,4 @@ function alert_CommonHelper($msg, $url = false) break; } return ''; -}// \ No newline at end of file +} // diff --git a/app/Language/kr/Board.php b/app/Language/kr/Board.php index c5d19a3..a08d63d 100644 --- a/app/Language/kr/Board.php +++ b/app/Language/kr/Board.php @@ -1,6 +1,6 @@ "게시판 정보", + 'title' => "게시판 정보", 'label' => [ 'uid' => "번호", 'grpno' => "그룹번호", diff --git a/app/Language/kr/BoardConfig.php b/app/Language/kr/BoardConfig.php index bef8822..6d49c20 100644 --- a/app/Language/kr/BoardConfig.php +++ b/app/Language/kr/BoardConfig.php @@ -1,6 +1,6 @@ "게시판설정 정보", + 'title' => "게시판설정 정보", 'label' => [ 'uid' => "번호", 'name' => "게시판제목", diff --git a/app/Views/admin/board/insert.php b/app/Views/admin/board/insert.php index 67c5325..fc53595 100644 --- a/app/Views/admin/board/insert.php +++ b/app/Views/admin/board/insert.php @@ -4,6 +4,7 @@ +
diff --git a/app/Views/layouts/admin.php b/app/Views/layouts/admin.php index 1881ce6..71f0ddf 100644 --- a/app/Views/layouts/admin.php +++ b/app/Views/layouts/admin.php @@ -6,10 +6,10 @@ - + - + @@ -20,25 +20,32 @@ - <?php echo $title ?> + <?= $title ?> - include($layout['path'] . '/top_menu'); ?> + include($layout['path'] . '/top_menu'); ?> -
-
- - include($layout['path'] . '/left_menu'); ?> - -
-
- - renderSection('content') ?> - -
-
+ + + + + + +
+ + include($layout['path'] . '/left_menu'); ?> + + + + renderSection('content') ?> + + + + include($layout['path'] . '/right_menu'); ?> + +
\ No newline at end of file diff --git a/app/Views/layouts/admin/left_menu.php b/app/Views/layouts/admin/left_menu.php index 1ce48b4..7ebd6ca 100644 --- a/app/Views/layouts/admin/left_menu.php +++ b/app/Views/layouts/admin/left_menu.php @@ -1,11 +1,10 @@ - - - - - - - - + + \ No newline at end of file + //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 + }); + }); + \ No newline at end of file diff --git a/app/Views/templates/admin/header.php b/app/Views/templates/admin/header.php index bbdb992..eb6eb47 100644 --- a/app/Views/templates/admin/header.php +++ b/app/Views/templates/admin/header.php @@ -1,4 +1,3 @@ - -
-

-
\ No newline at end of file +
+

+
\ No newline at end of file diff --git a/app/Views/templates/admin/index_head.php b/app/Views/templates/admin/index_head.php index f934d2c..c164f33 100644 --- a/app/Views/templates/admin/index_head.php +++ b/app/Views/templates/admin/index_head.php @@ -1,6 +1,6 @@ \ No newline at end of file diff --git a/public/css/admin.css b/public/css/admin.css index 6e25e12..e67273a 100644 --- a/public/css/admin.css +++ b/public/css/admin.css @@ -47,24 +47,35 @@ a:visited { text-decoration: none; } a:hover { text-decoration: underline; } a:active { text-decoration: underline; } -div#main{ - padding-top:10px; - padding-bottom:10px; +#main{ /* border:1px solid blue; */ + margin-top:20px; width:100%; } -div#main div#content{ - padding-top:10px; - padding-left:30px; - /* border:1px solid red; */ - width:100%; +#main div.head{ + 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.indexTable_wrapper{ + padding:10px; + border-left:1px solid silver; + border-right:1px solid silver; 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{ @@ -93,7 +104,6 @@ div.indexTable_wrapper div.indexTable_body ul.nav li.nav-item{ margin-left:15px; } - div.indexTable_wrapper div.indexTable_tail { text-align:center; } diff --git a/public/css/admin/left_menu.css b/public/css/admin/left_menu.css index bf294e8..4eee71e 100644 --- a/public/css/admin/left_menu.css +++ b/public/css/admin/left_menu.css @@ -1,32 +1,24 @@ -div#main div#left_menu{ +div#left_menu{ position:fixed; - margin-top:139px; + /* margin-top:139px; z-index:100; width:28px; border:1px solid #e7e7e7; - padding:0px; + padding:0px; */ + width: 160px; + border:1px solid silver; } -div#main div#left_menu div#menu div#menu_button{ - float:right; - 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; +div#left_menu div.accordion { + /* display:none; */ 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; } -div#main div#left_menu div#menu div.accordion div.accordion-item a{ - padding-left:20px; +div#left_menu div.accordion div.accordion-item a{ + padding-left:10px; } -div#main div#left_menu div#menu div.accordion div.accordion-collapse a{ - padding-left:40px; +div#left_menu div.accordion div.accordion-collapse a{ + padding-left:30px; } \ No newline at end of file diff --git a/public/css/admin/right_menu.css b/public/css/admin/right_menu.css new file mode 100644 index 0000000..b7e2eab --- /dev/null +++ b/public/css/admin/right_menu.css @@ -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; +} \ No newline at end of file diff --git a/public/css/empty.css b/public/css/empty.css index e373fed..df6d2a2 100644 --- a/public/css/empty.css +++ b/public/css/empty.css @@ -1,43 +1,48 @@ /* ------------------------------------------------------------ - * Name : default.css - * Desc : GIGSNS Layout - * Created : 2012/07 GIGAKOREA by Donghee,kim - * Updated : + * Name : admin.css + * Desc : Admin StyleSheet + * Created : 2016/9/11 Tri-aBility by Junheum,Choi + * Updated : ------------------------------------------------------------ */ + @charset "utf-8"; /*########################################################################################### #############################공통 레이아웃################################################### #############################################################################################*/ +/* CSS Document */ -* { - margin:0px; - padding:0px; - border:0px; +/* + * * 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; + padding:0px; + border:0px; font-size:14px; } body { - background-color: white; + background-color: #eee; } input[type=text],input[type=password]{ display: inline-block; - width:300px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; - white-space: nowrap; + white-space: nowrap; } - select,textarea,button { display: inline-block; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; - white-space: nowrap; -} - -div.pagination { - text-align:center; - padding-top:5px; + white-space: nowrap; } +a:link { text-decoration: none; } +a:visited { text-decoration: none; } +a:hover { text-decoration: underline; } +a:active { text-decoration: underline; } \ No newline at end of file diff --git a/public/css/front.css b/public/css/front.css index 5959ae7..e67273a 100644 --- a/public/css/front.css +++ b/public/css/front.css @@ -1,5 +1,5 @@ /* ------------------------------------------------------------ - * Name : front.css + * Name : admin.css * Desc : Admin StyleSheet * Created : 2016/9/11 Tri-aBility by Junheum,Choi * Updated : @@ -17,47 +17,97 @@ * * For details, see http://www.apache.org/licenses/LICENSE-2.0. */ -* { - margin:0px; - padding:0px; - border:0px; +* { + margin:0px; + padding:0px; + border:0px; font-size:14px; } body { - background-color: white; + background-color: #eee; } input[type=text],input[type=password]{ display: inline-block; - width:100px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; - white-space: nowrap; + white-space: nowrap; } - select,textarea,button { display: inline-block; border: 1px solid #ccc; border-radius: 4px; 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 { - text-decoration: none !important; +#main div.head{ + 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{ - border:1px solid red; - padding-top:20px; - padding-left:30px; - padding-right:10px; +div.indexTable_wrapper{ + padding:10px; + border-left:1px solid silver; + border-right:1px solid silver; + 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 { - border: 1px solid blue; - text-align:center; - padding-top:5px; +div.indexTable_wrapper div.indexTable_body ul.nav li.nav-item{ + /* border:1px solid red; */ + margin-left:15px; +} + +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; } diff --git a/public/js/side_menu.js b/public/js/side_menu.js new file mode 100644 index 0000000..a592c6f --- /dev/null +++ b/public/js/side_menu.js @@ -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 \ No newline at end of file