servermgrv2 init...

This commit is contained in:
최준흠git config git config --helpgit config --global user.name 최준흠 2023-08-06 22:40:31 +09:00
parent 8b92a2090c
commit 7add84d1f1
1035 changed files with 444 additions and 499 deletions

5
.gitignore vendored
View File

@ -133,4 +133,7 @@ nb-configuration.xml
#mapurl 결과물
public/mapurl/index.html
public/uploads/*
#upload 파일
public/uploads/*
public/upload_images/*

View File

@ -99,7 +99,7 @@ define('LAYOUTS', [
'stylesheets' => [
'<link rel="icon" href="/favicon.ico">',
'<link href="//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">',
'<link rel="stylesheet" href="css/style.css" />',
'<link rel="stylesheet" href="/css/style.css" />',
],
'javascripts' => [
'<script src="//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>',
@ -115,7 +115,7 @@ define('LAYOUTS', [
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css">',
'<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/boxicons@latest/css/boxicons.min.css" />',
'<link rel="stylesheet" href="css/style.css" />',
'<link rel="stylesheet" href="/css/style.css" />',
],
'javascripts' => [
'<script src="//cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>',
@ -135,7 +135,7 @@ define('LAYOUTS', [
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css">',
'<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/boxicons@latest/css/boxicons.min.css" />',
'<link rel="stylesheet" href="css/style.css" />',
'<link rel="stylesheet" href="/css/style.css" />',
],
'javascripts' => [
'<script src="//cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>',
@ -161,7 +161,7 @@ define('CATEGORY_ROLE_FIELDS', [
'WRITE' => 'iswrite',
'REPLY' => 'isreply',
'UPLOAD' => 'isupload',
'DOWNLOAD' => 'isdownload',
'DONWLOAD' => 'isdownload',
]);
//인증 관련
@ -183,7 +183,7 @@ define('AUTH_ADAPTERS', [
define('PATHS', [
'EXCEL' => WRITEPATH . "excel/",
'UPLOAD' => WRITEPATH . "uploads/",
'UPLOAD_PHOTO' => FCPATH . 'upload_images/',
'UPLOAD_IMAGE' => FCPATH . 'upload_images/',
'DOWNLOAD' => WRITEPATH . "download/",
'API' => WRITEPATH . "api/",
]);

View File

@ -42,7 +42,7 @@ $routes->get('/logout', 'AuthController::logout');
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
});
// 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:manager'], static function ($routes) {
$routes->get('/', 'Home::index');
$routes->group('user', static function ($routes) {
$routes->get('', 'UserController::index');
@ -53,16 +53,16 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$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->get('toggle/(:uuid)/(:hash)', 'UserController::toggle/$1/$2', ['filter' => 'authFilter:master']);
$routes->post('batchjob', 'UserController::batchjob', ['filter' => 'authFilter:master']);
});
$routes->group('usersns', static function ($routes) {
$routes->get('', 'UserSNSController::index');
$routes->get('excel', 'UserSNSController::excel');
$routes->get('view/(:num)', 'UserSNSController::view/$1');
$routes->get('delete/(:num)', 'UserSNSController::delete/$1');
$routes->get('toggle/(:num)/(:hash)', 'UserSNSController::toggle/$1/$2');
$routes->post('batchjob', 'UserSNSController::batchjob');
$routes->get('delete/(:num)', 'UserSNSController::delete/$1', ['filter' => 'authFilter:master']);
$routes->get('toggle/(:num)/(:hash)', 'UserSNSController::toggle/$1/$2', ['filter' => 'authFilter:master']);
$routes->post('batchjob', 'UserSNSController::batchjob', ['filter' => 'authFilter:master']);
});
$routes->group('category', static function ($routes) {
$routes->get('', 'CategoryController::index');
@ -95,7 +95,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
});
});
$routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($routes) {
$routes->group('user', ['namespace' => 'App\Controllers\Front', 'filter' => 'authFilter:master,director,cloudflare,manager,gold,silver,brone,vip,user'], static function ($routes) {
$routes->group('user', ['namespace' => 'App\Controllers\Front', 'filter' => 'authFilter:user'], static function ($routes) {
$routes->get('update/(:uuid)', 'UserController::update_form/$1');
$routes->post('update/(:uuid)', 'UserController::update/R1');
$routes->get('view/(:uuid)', 'UserController::view/$1');
@ -110,7 +110,7 @@ $routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($rou
$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('delete/(:num)', 'BoardController::delete/$1');
$routes->get('download/(:any)/(:num)', 'BoardController::download/$1/$2');
});
});

View File

@ -6,9 +6,11 @@ use App\Models\BoardModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Controllers\Trait\UpDownloadTrait;
class BoardController extends AdminController
{
use UpDownloadTrait;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
$this->_model = new BoardModel();

View File

@ -21,8 +21,12 @@ class UserController extends AdminController
{
switch ($field) {
case 'passwd':
$this->_viewDatas['fieldDatas'][$field] = $this->request->getVar($field);
$this->_viewDatas['fieldDatas']['confirmpassword'] = $this->request->getVar('confirmpassword');
$passwd = $this->request->getVar($field) ?: false;
$confirmpassword = $this->request->getVar('confirmpassword') ?: false;
if ($passwd && $confirmpassword) {
$this->_viewDatas['fieldDatas'][$field] = $passwd;
$this->_viewDatas['fieldDatas']['confirmpassword'] = $confirmpassword;
}
break;
default:
return parent::getFieldFormData($field, $entity);
@ -62,6 +66,7 @@ class UserController extends AdminController
foreach ($this->_viewDatas['fieldRules'] as $field => $rule) {
switch ($field) {
case 'role':
//checkbox형태로 들어오면 $fieldDatas['role']가 array이기때문에
$rules[$field . '.*'] = $rule;
break;
default:
@ -69,14 +74,6 @@ class UserController extends AdminController
break;
}
}
//fieldData Rule 검사
if (!$this->validate($rules)) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field);
}
parent::insert_validate();
}
}

View File

@ -5,7 +5,6 @@ namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\CLIRequest;
use CodeIgniter\HTTP\Files\UploadedFile;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
@ -37,7 +36,7 @@ abstract class BaseController extends Controller
*
* @var array
*/
protected $helpers = ['Common', 'Base'];
protected $helpers = ['Common'];
/**
* Be sure to declare properties for any property fetch you initialized.
@ -94,58 +93,6 @@ abstract class BaseController extends Controller
return $this->_viewDatas['fieldDatas'];
}
//Upload FIle관련
private function upload_file_process(UploadedFile $upfile)
{
$fileName = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$originName = $upfile->getName();
$upfile->move(PATHS['UPLOAD'], $upfile->getRandomName());
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
$fileName = $originName . DEFAULTS['DELIMITER_FILE'] . $upfile->getName();
}
return $fileName;
}
private function upload_image_process(UploadedFile $upfile, $sizeX = 100, $sizeY = 100)
{
//참고:https://www.positronx.io/codeigniter-resize-image-with-image-manipulation-tutorial/
$fileName = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$originName = $upfile->getName();
$fileName = $upfile->getRandomName();
$image = \Config\Services::image();
$image->withFile($upfile)
->resize($sizeX, $sizeY, true, 'height')
->save(PATHS['UPLOAD_PHOTO'] . $fileName);
$upfile->move(PATHS['UPLOAD_PHOTO'], "original_" . $fileName);
$fileName = $originName . DEFAULTS['DELIMITER_FILE'] . $fileName;
}
return $fileName;
}
protected function upload_file_procedure(string $field)
{
return $this->upload_file_process($this->request->getFile($field));
}
protected function upload_photo_procedure(string $field, $sizeX = 100, $sizeY = 100)
{
return $this->upload_image_process($this->request->getFile($field), $sizeX, $sizeY);
}
protected function upload_multiple_file_process(string $field): array
{
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
$fileNames = array();
if ($upfiles = $this->request->getFiles()) {
foreach ($upfiles[$field] as $upfile) {
if ($upfile->isValid() && !$upfile->hasMoved()) {
$fileName = $this->upload_file_process($upfile);
array_push($this->_viewDatas['fieldDatas'][$field], $fileName);
}
}
}
return $fileNames;
}
//초기화
final public function init(string $action, $fields = null)
{
@ -259,10 +206,13 @@ abstract class BaseController extends Controller
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
log_message(
"info",
"{$field} : {$entity->$field} => " . var_export($this->_viewDatas['fieldDatas'][$field])
);
//보안문제,사용자정보의 update시 암호를 변경하지 않느경우를 위해
if ($field != 'passwd') {
log_message(
"info",
"{$field} : {$entity->$field} => " . var_export($this->_viewDatas['fieldDatas'][$field])
);
}
}
}
protected function update_process($entity)
@ -635,11 +585,11 @@ abstract class BaseController extends Controller
throw new \Exception("첨부파일이 확인되지 않습니다.");
}
$entity = $this->download_process($entity);
list($origin_filename, $filename) = explode(DEFAULTS['DELIMITER_FILE'], $entity->$field);
if (is_file(WRITEPATH . PATHS['UPLOAD'] . "/" . $origin_filename)) {
throw new \Exception("파일이 확인되지 않습니다.");
list($filename, $uploaded_filename) = explode(DEFAULTS['DELIMITER_FILE'], $entity->$field);
if (!is_file(PATHS['UPLOAD'] . "/" . $uploaded_filename)) {
throw new \Exception("파일이 확인되지 않습니다.\n" . PATHS['UPLOAD'] . "/" . $uploaded_filename);
}
return $this->response->download(WRITEPATH . PATHS['UPLOAD'] . "/" . $filename, null)->setFileName(date("YmdHms") . '_' . $origin_filename);
return $this->response->download(PATHS['UPLOAD'] . "/" . $uploaded_filename, null)->setFileName(date("Ymd") . '_' . $filename);
} catch (\Exception $e) {
return redirect()->to($this->_session->getFlashdata(SESSION_NAMES['RETURN_URL']) ?: "/")->with('return_message', $e->getMessage());
}

View File

@ -9,17 +9,15 @@ use Psr\Log\LoggerInterface;
class BoardController extends FrontController
{
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
$this->_model = new BoardModel($this->getFields());
parent::initController($request, $response, $logger);
$this->_viewPath .= strtolower($this->_model->getClassName());
}
public function getFields(string $action = ""): array
{
$fields = ['title', "board_file", "passwd", "content"];
$fields = ['title', "passwd", "content"];
switch ($action) {
case "index":
case "excel":
@ -49,9 +47,6 @@ class BoardController extends FrontController
$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->upload_file_procedure($field);
break;
default:
return parent::getFieldFormData($field, $entity);
break;
@ -136,7 +131,7 @@ class BoardController extends FrontController
public function download_process($entity)
{
//권한체크
$this->isRole('download');
return $entity;
$this->isRole('download', $entity);
return parent::download_process($entity);
}
}

View File

@ -55,6 +55,12 @@ abstract class FrontController extends BaseController
$this->_viewDatas['category'],
$category_field,
)) {
echo var_export($this->_viewDatas['currentRoles'], true);
echo "<HR>";
echo var_export($this->_viewDatas['category'], true);
echo "<HR>";
echo "field->", $action . ":" . $category_field;
exit;
throw new \Exception("고객님은 " . lang($this->getCategoryModel()->getClassName() . ".label." . $category_field) . "이 없습니다.");
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace App\Controllers\Trait;
use CodeIgniter\HTTP\Files\UploadedFile;
trait UpDownloadTrait
{
//Upload FIle관련
private function upDownload_file_process(UploadedFile $upfile): string
{
$filename = null;
$uploaded_filename = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$filename = $upfile->getName();
$uploaded_filename = $upfile->getRandomName();
$upfile->move(PATHS['UPLOAD'], $uploaded_filename);
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
$uploaded_filename = $upfile->getName();
}
return $filename . DEFAULTS['DELIMITER_FILE'] . $uploaded_filename;
}
public function upload_file_procedure(string $field): string
{
return $this->upload_file_process($this->request->getFile($field));
}
public function upload_multiple_file_procedure(string $field): array
{
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
$files = array();
if ($upfiles = $this->request->getFiles()) {
foreach ($upfiles[$field] as $upfile) {
if ($upfile->isValid() && !$upfile->hasMoved()) {
array_push($files, $this->upload_file_process($upfile));
}
}
}
return $files;
}
private function image_resize_process(UploadedFile $upfile, $uploaded_filename, $x = 25, $y = 25)
{
$image = \Config\Services::image();
$image->withFile($upfile)
->resize($x, $y, true, 'height')
->save(PATHS['UPLOAD_IMAGE'] . $uploaded_filename);
}
private function upload_image_process(UploadedFile $upfile): string
{
//참고:https://www.positronx.io/codeigniter-resize-image-with-image-manipulation-tutorial/
$filename = null;
$uploaded_filename = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$filename = $upfile->getName();
$uploaded_filename = $upfile->getRandomName();
$this->image_resize_process($upfile, "small_" . $uploaded_filename);
$this->image_resize_process($upfile, "middle_" . $uploaded_filename, 50, 50);
$this->image_resize_process($upfile, "large_" . $uploaded_filename, 100, 100);
$upfile->move(PATHS['UPLOAD_IMAGE'], $uploaded_filename);
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
$uploaded_filename = $upfile->getName();
}
return $filename . DEFAULTS['DELIMITER_FILE'] . $uploaded_filename;
}
public function upload_image_procedure(string $field): string
{
return $this->upload_image_process($this->request->getFile($field));
}
public function upload_multiple_image_procedure(string $field): array
{
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
$filenames = array();
if ($upfiles = $this->request->getFiles()) {
foreach ($upfiles[$field] as $upfile) {
if ($upfile->isValid() && !$upfile->hasMoved()) {
array_push($files, $this->upload_image_process($upfile));
}
}
}
return $filenames;
}
}

View File

@ -8,5 +8,4 @@ abstract class BaseEntity extends Entity
{
abstract public function getPrimaryKey();
abstract public function getTitle(): string;
abstract public function getStatus(): string;
}

View File

@ -39,4 +39,12 @@ class BoardEntity extends BaseHierarchyEntity
{
return $this->attributes['view_cnt'];
}
public function getBoardFile()
{
return $this->attributes['board_file'];
}
public function getBoardFileName()
{
return explode(DEFAULTS['DELIMITER_FILE'], $this->getBoardFile())[1];
}
}

View File

@ -2,6 +2,8 @@
namespace App\Entities;
use App\Entities\Trait\HierarchyTrait;
class CategoryEntity extends BaseHierarchyEntity
{
protected $datamap = [];

View File

@ -64,13 +64,14 @@ function getFieldView_BoardHelper($field, $entity, array $viewDatas)
$value = $entity->$field ?: DEFAULTS['EMPTY'];
switch ($field) {
case 'category_uid':
$categorys = array();
foreach (array_values($viewDatas['fieldFormOptions'][$field]) as $category_2depth) {
foreach ($category_2depth as $key => $label) {
$categorys[$key] = $label;
foreach (array_values($viewDatas['fieldFormOptions'][$field]) as $category_2depths) {
foreach ($category_2depths as $key => $label) {
if ($key == $value) {
return $label;
}
}
}
return $categorys[$value];
return $value;
break;
case 'title':
case 'name':

View File

@ -133,7 +133,7 @@ function getFieldIndex_Row_UserSNSHelper_Admin($field, $entity, array $viewDatas
$field,
$field
);
return getFieldForm_UserSNSHelper($field, $entity->field, $viewDatas, $attributes);
return getFieldForm_UserSNSHelper($field, $entity->$field, $viewDatas, $attributes);
}
return getFieldView_UserSNSHelper($field, $entity, $viewDatas);
break;

View File

@ -21,7 +21,17 @@ function getFieldForm_UserHelper($field, $value, array $viewDatas, array $attrib
// return form_dropdown($field, $viewDatas['fieldFormOptions'][$field], $value, [...$attributes, 'class' => "select-field"]);
// return form_multiselect($field, $fieldFormOptions[$field], is_array($value) ? [...$value] : [$value], [...$attributes]);
foreach ($viewDatas['fieldFormOptions'][$field] as $key => $label) {
$checkboxs[] = form_checkbox("{$field}[]", $key, in_array($key, explode(DEFAULTS["DELIMITER_ROLE"], $value))) . $label;
$checkboxs[] = form_checkbox(
"{$field}[]",
$key,
in_array(
$key,
is_array($value) ? $value : explode(
DEFAULTS["DELIMITER_ROLE"],
$value
)
)
) . $label;
}
return implode("&nbsp;", $checkboxs);
break;
@ -139,7 +149,7 @@ function getFieldIndex_Row_UserHelper_Admin($field, $entity, array $viewDatas):
$field,
$field
);
return getFieldForm_UserHelper($field, $entity->field, $viewDatas, $attributes);
return getFieldForm_UserHelper($field, $entity->$field, $viewDatas, $attributes);
}
return getFieldView_UserHelper($field, $entity, $viewDatas);
break;

View File

@ -21,7 +21,7 @@ class LocalAdapter extends Adapter
if (!isset($formDatas['id']) || !$formDatas['id'] || !isset($formDatas['passwd']) || !$formDatas['passwd']) {
throw new \Exception("ID 나 암호의 값이 없습니다.");
}
$entity = $this->getUserModel()->getEntity(['id' => $formDatas['id']]);
$entity = $this->getUserModel()->getEntity(['id' => $formDatas['id'], 'status' => DEFAULTS['STATUS']]);
if (!password_verify($formDatas['passwd'], $entity->passwd)) {
throw new \Exception("암호가 맞지않습니다.");
}

View File

@ -67,7 +67,7 @@ abstract class BaseModel extends Model
abstract public function getTitleField(): string;
public function getEntity($conditions): BaseEntity
{
return $this->where($conditions)->first() ?: throw new \Exception(__FUNCTION__ . "에서 {$this->getClassName()}의 해당 데이터가 없습니다.\n" . var_export($conditions, true));
return $this->where($conditions)->first() ?: throw new \Exception(__FUNCTION__ . "에서 {$this->getClassName()}의 해당 데이터가 없습니다.");
}
public function getEntitys(array $conditions = array()): array
{
@ -94,9 +94,6 @@ abstract class BaseModel extends Model
case "view_cnt":
$rules[$field] = "if_exist|numeric";
break;
case "upload_file": //uploaded[{$field}] == requried와 같은의미
$rules[$field] = !$action ? "if_exist|string" : "is_image[{$field}]|mime_in[{$field},image/jpg,image/jpeg,image/gif,image/png,image/webp]|max_size[{$field},100]|max_dims[{$field},1024,768]";
break;
case "updated_at":
case "created_at":
case "deleted_at":
@ -194,7 +191,7 @@ abstract class BaseModel extends Model
}
break;
case "user_uid": //입력데이터로 있을시 관리툴에서 (사용자,등)추가, 없을시는 입력의 경우에만 자동(장바구니,등)으로 추가
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
//관리툴 USERSNS에서 사용자 연동 시 추가기능등에 사용
$entity->$field = $formDatas[$field];
} elseif ($action == 'create' && $this->_session->get(SESSION_NAMES["ISLOGIN"])) {
@ -204,19 +201,17 @@ abstract class BaseModel extends Model
}
break;
case "passwd":
// echo var_export($this->validationRules, true);
// exit;
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
$entity->$field = password_hash($formDatas[$field], PASSWORD_DEFAULT);
}
break;
case "content":
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
$entity->$field = htmlentities($formDatas[$field]);
}
break;
default:
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
$entity->$field = $formDatas[$field];
}
break;

View File

@ -39,7 +39,7 @@ class BoardModel extends BaseHierarchyModel
$rules[$field] = "required|string";
break;
case "board_file": //uploaded[{$field}] == requried와 같은의미
$rules[$field] = !$action ? "if_exist|string" : "is_image[{$field}]|mime_in[{$field},image/jpg,image/jpeg,image/gif,image/png,image/webp]|max_size[{$field},100]|max_dims[{$field},1024,768]";
$rules[$field] = "if_exist|string";
break;
case "view_cnt":
$rules[$field] = "if_exist|numeric";

View File

@ -75,13 +75,13 @@ class CategoryModel extends BaseHierarchyModel
case "isreply":
case "isupload":
case "isdownload":
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
$entity->$field = is_array($formDatas[$field]) ? implode(DEFAULTS['DELIMITER_ROLE'], $formDatas[$field]) : $formDatas[$field];
}
break;
case "head":
case "tail":
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
$entity->$field = htmlentities($formDatas[$field]);
}
break;

View File

@ -31,9 +31,10 @@ class UserModel extends BaseModel
$rules[$field] .= $action == "insert" ? "|is_unique[{$this->table}.{$field}]" : "";
break;
case "passwd":
$rules[$field] = "required|trim|string";
$rules[$field] = "if_exist|trim|string";
if ($action != "") {
$rules["confirmpassword"] = "required|trim|string|matches[passwd]";
$rules[$field] = $action == "insert" ? "required|trim|string" : "if_exist|trim|string";
$rules["confirmpassword"] = $action == "insert" ? "required|trim|string|matches[passwd]" : "if_exist|trim|string|matches[passwd]";
}
break;
case $this->getTitleField():
@ -54,20 +55,6 @@ class UserModel extends BaseModel
}
return $rules;
}
//Form 선택용 Options Data용
public function getOptions_TEST(array $conditions = array(), $options = array()): array
{
foreach ($this->getEntitys($conditions) as $entity) {
// STATUS가 use가 아닐때 option을 disabled되게 하기위함
if ($entity->getStatus() != DEFAULTS['STATUS']) {
$options[$entity->getPrimaryKey() . "\" disabled=\"disabled"] = $entity->getTitle();
} else {
$options[$entity->getPrimaryKey()] = $entity->getTitle();
}
}
return $options;
}
public function getEntity($conditions): UserEntity
{
return parent::getEntity($conditions);
@ -77,13 +64,13 @@ class UserModel extends BaseModel
{
switch ($field) {
case "role":
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
$entity->$field = is_array($formDatas[$field]) ? implode(DEFAULTS['DELIMITER_ROLE'], $formDatas[$field]) : $formDatas[$field];
}
break;
case "head":
case "tail":
if (array_key_exists($field, $formDatas) && !is_null($formDatas[$field])) {
if (array_key_exists($field, $formDatas)) {
$entity->$field = htmlentities($formDatas[$field]);
}
break;

View File

@ -11,25 +11,29 @@
</div>
<?= form_open(current_url() . '/batchjob', $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
<table class="table table-bordered table-hover table-striped">
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_BoardHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_BoardHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
<thead>
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_BoardHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</thead>
<tbody>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_BoardHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</tbody>
</table>
<div class="bottom">
<ul class="nav justify-content-center">

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -11,25 +11,29 @@
</div>
<?= form_open(current_url() . '/batchjob', $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
<table class="table table-bordered table-hover table-striped">
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_CategoryHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_CategoryHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
<thead>
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_CategoryHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</thead>
<tbody>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_CategoryHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</tbody>
</table>
<div class="bottom">
<ul class="nav justify-content-center">

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -11,25 +11,29 @@
</div>
<?= form_open(current_url() . '/batchjob', $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
<table class="table table-bordered table-hover table-striped">
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_UserHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_UserHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
<thead>
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_UserHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</thead>
<tbody>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_UserHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
</tr>
</tbody>
<?php $cnt++ ?>
<?php endforeach ?>
</table>
<div class="bottom">
<ul class="nav justify-content-center">

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -11,25 +11,29 @@
</div>
<?= form_open(current_url() . '/batchjob', $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
<table class="table table-bordered table-hover table-striped">
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_UserSNSHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_UserSNSHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
<thead>
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_UserSNSHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</thead>
<tbody>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<?= form_checkbox(["id" => "checkbox_uid_{$entity->getPrimaryKey()}", "name" => "batchjob_uids[]", "value" => $entity->getPrimaryKey(), "class" => "batchjobuids_checkboxs"]); ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_UserSNSHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td><?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?></td>
</tr>
</tbody>
<?php $cnt++ ?>
<?php endforeach ?>
</table>
<div class="bottom">
<ul class="nav justify-content-center">

View File

@ -12,34 +12,38 @@
</div>
<?= form_open(current_url() . '/batchjob', $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
<table class="table table-bordered table-hover table-striped">
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_BoardHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<!-- 사용자가 자신의 작성한것인지 확인되면 update 가능-->
<?php if ($viewDatas[SESSION_NAMES['ISLOGIN']] && $entity->getUser_Uid() == $viewDatas['auth'][AUTH_FIELDS['ID']]) : ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
<?php else : ?>
<?= $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt) ?>
<?php endif ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_BoardHelper_Admin($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td>
<!-- 사용자가 자신의 작성한것인지 확인되면 delete 가능-->
<?php if ($viewDatas[SESSION_NAMES['ISLOGIN']] && $entity->getUser_Uid() == $viewDatas['auth'][AUTH_FIELDS['ID']]) : ?>
<?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?>
<?php endif ?>
</td>
<thead>
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_BoardHelper($field, $viewDatas) ?></th><?php endforeach ?>
<th>작업</th>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</thead>
<tbody>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entitys'] as $entity) : ?>
<tr id="<?= $entity->getPrimaryKey() ?>" <?= $entity->getStatus() != DEFAULTS['STATUS'] ? 'class="table-danger" rowcolor="red"' : 'rowcolor="red"' ?> onClick="indexRowCheckBoxToggle(this)">
<td>
<!-- 사용자가 자신의 작성한것인지 확인되면 update 가능-->
<?php if ($viewDatas[SESSION_NAMES['ISLOGIN']] && $entity->getUser_Uid() == $viewDatas['auth'][AUTH_FIELDS['ID']]) : ?>
<?= anchor(current_url() . '/update/' . $entity->getPrimaryKey(), $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt), ["target" => "_self"]) ?>
<?php else : ?>
<?= $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt) ?>
<?php endif ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_BoardHelper($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td>
<!-- 사용자가 자신의 작성한것인지 확인되면 delete 가능-->
<?php if ($viewDatas[SESSION_NAMES['ISLOGIN']] && $entity->getUser_Uid() == $viewDatas['auth'][AUTH_FIELDS['ID']]) : ?>
<?= anchor(current_url() . '/delete/' . $entity->getPrimaryKey(), ICONS['DELETE'], ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self"]) ?>
<?php endif ?>
</td>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</tbody>
</table>
<div class="bottom">
<ul class="nav justify-content-center">

View File

@ -1,4 +1,4 @@
<?= $this->extend('layouts/admin') ?>
<?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?>
<div class="content">
<div><?= html_entity_decode($viewDatas['category']->getHead()) ?></div>

View File

@ -1,4 +1,4 @@
<?= $this->extend('layouts/admin') ?>
<?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?>
<div class="content">
<div><?= html_entity_decode($viewDatas['category']->getHead()) ?></div>

View File

@ -1,4 +1,4 @@
<?= $this->extend('layouts/admin') ?>
<?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?>
<div class="content">
<div><?= html_entity_decode($viewDatas['category']->getHead()) ?></div>

View File

@ -1,4 +1,4 @@
<?= $this->extend('layouts/admin') ?>
<?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?>
<div class="content">
<div><?= html_entity_decode($viewDatas['category']->getHead()) ?></div>

View File

@ -25,7 +25,7 @@
<?php endif ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_UserHelper_Admin($field, $entity, $viewDatas) ?></td>
<td nowrap><?= getFieldIndex_Row_UserHelper($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
<td>
<!-- 사용자가 자신의 작성한것인지 확인되면 delete 가능-->

View File

@ -1,4 +1,4 @@
<?= $this->extend('layouts/admin') ?>
<?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?>
<div class="content">
<?= form_open_multipart(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -16,6 +16,6 @@
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>
</div>
<?= form_close(); ?>
<?= $this->endSection() ?>

View File

@ -1,4 +1,4 @@
<?= $this->extend('layouts/admin') ?>
<?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?>
<div class="content">
<table class="form table table-bordered table-hover table-striped">

View File

@ -12,8 +12,8 @@
<?= $javascript ?>
<?php endforeach; ?>
<link href="/css/front.css" media="screen" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/front.js"></script>
<link href="/css/admin.css" media="screen" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/admin.js"></script>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
@ -24,12 +24,10 @@
</head>
<body>
<div id="head" class="row">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu'); ?>
</div>
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator'); ?>
<table id="layout">
<tr>
<td id="left" valign="top" width="160">
<td id="left" valign="top" width="180">
<?= $this->include($viewDatas['layout']['path'] . '/left_menu'); ?>
</td>
<td id="body" valign="top" width="*">
@ -37,12 +35,8 @@
<?= $this->renderSection('content') ?>
<?= $this->include('templates/admin/footer'); ?>
</td>
<td id="right" valign="top" width="50">
<?= $this->include($viewDatas['layout']['path'] . '/right_menu'); ?>
</td>
</tr>
</table>
<div id="tail" class="row"></div>
</body>
</html>

View File

@ -1,7 +0,0 @@
<!-- 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 +0,0 @@
<nav class="navbar navbar-expand-lg bg-light" style="border-bottom:1px solid silver;">
<div class="container-fluid">
<a href="/admin" class="navbar-brand">BaseProject 관리 Site</a>
<div class="input-group custom-search-form" style="width:270px;">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu/search'); ?>
</div>
<div class="input-group custom-search-form" style="width:270px;">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu/make_password'); ?>
</div>
<div style="float: right;">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu/member_link'); ?>
</div>
</div>
</nav>

View File

@ -1,3 +0,0 @@
<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

@ -1,16 +0,0 @@
<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 ($viewDatas['session']->get(SESSION_NAMES['ISLOGIN'])) : ?>
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<?= ICONS['LOGIN'] ?><?= $viewDatas['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/<?= $viewDatas['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

@ -1,4 +0,0 @@
<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,20 @@
<nav class="navbar navbar-expand-lg navbar-light" style="background-color: #e3f2fd;">
<div id="head" class="container-fluid">
<nav class="nav">
<a class="navbar-brand" href="#">관리페이지</a>
</nav>
<ul class="nav justify-content-center">
<li class="nav-item">
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator/make_password'); ?>
</li>
<li class="nav-item">
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator/search'); ?>
</li>
</ul>
<ul class="nav justify-content-end">
<li class="nav-item">
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator/member_link'); ?>
</li>
</ul>
</div>
</nav>

View File

@ -0,0 +1,5 @@
<ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
<li class="nav-item"><?= ICONS['LOCK'] ?></li>
<li class="nav-item"><input type="text" class="form-control" value="<?= getPasswordString_CommonHelper() ?>" id="makePassword"></li>
<li class="nav-item"><button class="btn btn-default border border-dark" type="button" id="totSearchBtn" onClick="window.location.reload();"><?= ICONS['SEARCH'] ?></button></li>
</ul>

View File

@ -0,0 +1,14 @@
<li class="nav-item dropdown">
<?php if ($viewDatas[SESSION_NAMES['ISLOGIN']]) : ?>
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<?= ICONS['LOGIN'] ?><?= $viewDatas['session']->get(SESSION_NAMES['AUTH'])[AUTH_FIELDS['TITLE']] ?>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="/front/user/update/<?= $viewDatas['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>

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

@ -24,26 +24,19 @@
</head>
<body>
<div id="head" class="row">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu'); ?>
</div>
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator'); ?>
<table id="layout">
<tr>
<td id="left" valign="top" width="160">
<td id="left" valign="top" width="180">
<?= $this->include($viewDatas['layout']['path'] . '/left_menu'); ?>
</td>
<td id="body" valign="top" width="*">
<?= $this->include('templates/front/header'); ?>
<?= $this->renderSection('content') ?>
<?= $this->include('templates/front/footer'); ?>
<?= $this->include($viewDatas['layout']['path'] . '/copyright'); ?>
</td>
<td id="right" valign="top" width="50">
<?= $this->include($viewDatas['layout']['path'] . '/right_menu'); ?>
</td>
</tr>
</table>
<div id="tail" class="row"></div>
</body>
</html>

View File

@ -1,19 +0,0 @@
<!-- 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

@ -1,5 +0,0 @@
<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

@ -1,8 +0,0 @@
<!-- 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

@ -1,8 +0,0 @@
<!-- 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

@ -1,13 +0,0 @@
<!-- 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

@ -1,5 +0,0 @@
<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

@ -1,16 +0,0 @@
<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

@ -1,14 +0,0 @@
<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,19 +1,11 @@
<!-- Copyright 시작-->
<div style="margin-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 id="tail">
<div class="foot-logo"><img src="../images/common/foot_logo.png" alt="IT Solution"></div>
<div class="foot-info">
<address>
社名 : 株式会社 DUNAMIS <span class="bar"></span> 代表者 : <span class="bar"></span> 住所 : 東京都江東区亀戸5丁-1-2 <span class="bar"></span> 事業者登録番号 : 0400-01-082327 <span class="bar"></span> Tel : 1661-0577 <br>
Copyright by 2018 ()ITSolution. All Right Reserved.
</address>
</div>
</div>
<!-- Copyright -->

View File

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

View File

@ -1,6 +1,6 @@
<div class="accordion-item">
<h2><a href="/front/board?category=3"><?= CLASS_ICONS['BOARD'] ?>공지사항</a></h2>
<h2><a href="/front/board?category=2"><?= CLASS_ICONS['BOARD'] ?>공지사항</a></h2>
</div>
<div class="accordion-item">
<h2><a href="/front/board?category=4"><?= CLASS_ICONS['BOARD'] ?>FAQ</a></h2>
<h2><a href="/front/board?category=3"><?= CLASS_ICONS['BOARD'] ?>FAQ</a></h2>
</div>

View File

@ -1,9 +0,0 @@
<div class="accordion-item">
<h2><a href="/front/product"><?= CLASS_ICONS['PRODUCT'] ?>상품 관리</a></h2>
</div>
<div class="accordion-item">
<h2><a href="/front/order"><?= CLASS_ICONS['ORDER'] ?></i>주문 관리</a></h2>
</div>
<div class="accordion-item">
<h2><a href="/front/billing"><?= CLASS_ICONS['BILLING'] ?></i>결제 관리</a></h2>
</div>

View File

@ -1,7 +0,0 @@
<!-- 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 +0,0 @@
<nav class="navbar navbar-expand-lg bg-light" style="border-bottom:1px solid silver;">
<div class="container-fluid">
<a href="/admin" class="navbar-brand">BaseProject 관리 Site</a>
<div class="input-group custom-search-form" style="width:270px;">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu/search'); ?>
</div>
<div class="input-group custom-search-form" style="width:270px;">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu/make_password'); ?>
</div>
<div style="float: right;">
<?= $this->include($viewDatas['layout']['path'] . '/top_menu/member_link'); ?>
</div>
</div>
</nav>

View File

@ -1,3 +0,0 @@
<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

@ -1,16 +0,0 @@
<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 ($viewDatas['session']->get(SESSION_NAMES['ISLOGIN'])) : ?>
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<?= ICONS['LOGIN'] ?><?= $viewDatas['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/<?= $viewDatas['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

@ -1,4 +0,0 @@
<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,18 @@
<nav class="navbar navbar-expand-lg navbar-light" style="background-color: #e3f2fd;">
<div id="head" class="container-fluid">
<nav class="nav">
<a class="navbar-brand" href="#">Logo</a>
</nav>
<ul class="nav justify-content-center">
<li class="nav-item">
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator/top_center'); ?>
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator/search'); ?>
</li>
</ul>
<ul class="nav justify-content-end">
<li class="nav-item">
<?= $this->include($viewDatas['layout']['path'] . '/top_navigator/member_link'); ?>
</li>
</ul>
</div>
</nav>

View File

@ -0,0 +1,14 @@
<li class="nav-item dropdown">
<?php if ($viewDatas[SESSION_NAMES['ISLOGIN']]) : ?>
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<?= ICONS['LOGIN'] ?><?= $viewDatas['session']->get(SESSION_NAMES['AUTH'])[AUTH_FIELDS['TITLE']] ?>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="/front/user/update/<?= $viewDatas['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>

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,2 @@
<span><strong>고객센터</strong> 1661-0577 (365 24시간)</span>
<span><img src="/images/common/top_skype.png" alt="스카이프">itsolution-idc@outlook.kr</span>

View File

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

View File

@ -14,18 +14,12 @@
width:100%;
background-color:#efefef
}
#layout #left {
width:160px;
/* border:1px solid yellow; */
}
/* #layout #left {
} */
#layout #body{
padding-left:10px;
padding-right:10px;
}
#layout #right{
width: 50px;
/* border:1px solid orange; */
}
#layout #body div.header{
/*content 상단라인*/

View File

@ -2,7 +2,6 @@ div#left_menu{
position:fixed;
z-index:100;
width:160px;
margin-left:5px;
border:1px solid silver;
}

View File

@ -14,17 +14,13 @@
width:100%;
background-color:#efefef
}
#layout #left {
width:160px;
/* border:1px solid yellow; */
}
/* #layout #left {
} */
#layout #body{
padding-left:10px;
padding-right:10px;
}
#layout #right{
width: 50px;
/* border:1px solid orange; */
background-color:white;
/* border:1px solid red; */
}
#layout #body div.header{

View File

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

View File

@ -0,0 +1,3 @@
#id li.dropdown:hover ul.dropdown-menu {
display: block;
}

View File

@ -14,7 +14,7 @@
}
body {
background-color: #eee;
background-color: white;
}
input[type=text],input[type=password]{

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Some files were not shown because too many files have changed in this diff Show More