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 @@
= form_open_multipart(current_url(), $forms['attributes'], $forms['hiddens']) ?>
|
= getFieldLabel_BoardHelper($field, $fieldRules) ?>
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 @@
-
+ = $stylesheet ?>
-
+ = $javascript ?>
@@ -20,25 +20,32 @@
-
-
-
+
-
- renderSection('content') ?>
-
-
-
|