shoppingmall init...
This commit is contained in:
parent
cfd25d8f1c
commit
d711bfc01a
@ -46,7 +46,7 @@ $routes->group('ecommerce', ['namespace' => 'App\Controllers'], static function
|
||||
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
|
||||
});
|
||||
// authGuard는 App\Config\Filters.php의 $aliases에 선언한 이름이어야 함
|
||||
$routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:manager'], static function ($routes) {
|
||||
$routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master,director,cloudflare,manager'], static function ($routes) {
|
||||
$routes->get('/', 'Home::index');
|
||||
$routes->group('user', static function ($routes) {
|
||||
$routes->get('', 'UserController::index');
|
||||
@ -93,7 +93,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
|
||||
$routes->get('delete/(:num)', 'BoardController::delete/$1', ['filter' => 'authFilter:master']);
|
||||
$routes->get('toggle/(:num)/(:hash)', 'BoardController::toggle/$1/$2');
|
||||
$routes->post('batchjob', 'BoardController::batchjob');
|
||||
$routes->get('download/(:any)/(:uuid)', 'ProductController::download/$1/$2');
|
||||
$routes->get('download/(:any)/(:num)', 'BoardController::download/$1/$2');
|
||||
});
|
||||
$routes->group('category', static function ($routes) {
|
||||
$routes->get('', 'CategoryController::index');
|
||||
@ -132,9 +132,9 @@ $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->get('update', 'UserController::update_form');
|
||||
$routes->post('update', 'UserController::update');
|
||||
$routes->get('view', 'UserController::view');
|
||||
$routes->get('update/(:uuid)', 'UserController::update_form/$1');
|
||||
$routes->post('update/(:uuid)', 'UserController::update/R1');
|
||||
$routes->get('view/(:uuid)', 'UserController::view/$1');
|
||||
});
|
||||
$routes->group('board', static function ($routes) {
|
||||
$routes->get('', 'BoardController::index');
|
||||
@ -157,7 +157,7 @@ $routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($rou
|
||||
$routes->group('order', static function ($routes) {
|
||||
$routes->get('', 'OrderController::index');
|
||||
$routes->get('view/(:uuid)', 'OrderController::view/$1');
|
||||
});;
|
||||
});
|
||||
});
|
||||
/*
|
||||
* --------------------------------------------------------------------
|
||||
|
||||
@ -132,9 +132,9 @@ $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->get('update', 'UserController::update_form');
|
||||
$routes->post('update', 'UserController::update');
|
||||
$routes->get('view', 'UserController::view');
|
||||
$routes->get('update/(:uuid)', 'UserController::update_form/$1');
|
||||
$routes->post('update/(:uuid)', 'UserController::update/R1');
|
||||
$routes->get('view/(:uuid)', 'UserController::view/$1');
|
||||
});
|
||||
$routes->group('board', static function ($routes) {
|
||||
$routes->get('', 'BoardController::index');
|
||||
@ -157,7 +157,7 @@ $routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($rou
|
||||
$routes->group('order', static function ($routes) {
|
||||
$routes->get('', 'OrderController::index');
|
||||
$routes->get('view/(:uuid)', 'OrderController::view/$1');
|
||||
});;
|
||||
});
|
||||
});
|
||||
/*
|
||||
* --------------------------------------------------------------------
|
||||
|
||||
84
app/Controllers/Front/UserController.php
Normal file
84
app/Controllers/Front/UserController.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers\Front;
|
||||
|
||||
use App\Models\UserModel;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class UserController extends FrontController
|
||||
{
|
||||
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||
{
|
||||
$this->_model = new UserModel();
|
||||
parent::initController($request, $response, $logger);
|
||||
$this->_viewDatas['title'] = lang($this->_model->getClassName() . '.title');
|
||||
$this->_viewPath .= strtolower($this->_model->getClassName());
|
||||
helper($this->_model->getClassName());
|
||||
}
|
||||
|
||||
//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'];
|
||||
}
|
||||
|
||||
public function getFields(string $action = ""): array
|
||||
{
|
||||
$fields = ["id", "passwd", 'name', "email", "role", "status"];
|
||||
switch ($action) {
|
||||
case "index":
|
||||
case "excel":
|
||||
return ["id", 'name', "email", "role", "status", 'created_at'];
|
||||
break;
|
||||
case "view":
|
||||
return ["id", 'name', "email", "role", "status", 'updated_at', 'created_at'];
|
||||
break;
|
||||
default:
|
||||
return $fields;
|
||||
break;
|
||||
}
|
||||
}
|
||||
public function getFieldFilters(): array
|
||||
{
|
||||
return ["role", "status"];
|
||||
}
|
||||
public function getFieldBatchFilters(): array
|
||||
{
|
||||
return parent::getFieldBatchFilters();
|
||||
}
|
||||
|
||||
protected function insert_validate()
|
||||
{
|
||||
$rules = [];
|
||||
foreach ($this->_viewDatas['fieldRules'] as $field => $rule) {
|
||||
switch ($field) {
|
||||
case 'role':
|
||||
$rules[$field . '.*'] = $rule;
|
||||
break;
|
||||
default:
|
||||
$rules[$field] = $rule;
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
45
app/Views/front/user/index.php
Normal file
45
app/Views/front/user/index.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?= $this->extend('layouts/admin') ?>
|
||||
<?= $this->section('content') ?>
|
||||
<div class="content">
|
||||
<div class="top">
|
||||
<?= form_open(current_url(), array("method" => "get")) ?>
|
||||
<ul class="nav">
|
||||
조건검색:<?php foreach ($fieldFilters as $field) : ?><li class="nav-item"><?= getFieldFilter_UserHelper($field, $$field, $fieldFormOptions) ?></li><?php endforeach; ?>
|
||||
<?= $this->include('templates/admin/index_head'); ?>
|
||||
</ul>
|
||||
<?= form_close(); ?>
|
||||
</div>
|
||||
<?= form_open(current_url() . '/batchjob', $forms['attributes'], $forms['hiddens']) ?>
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<?php foreach ($fields as $field) : ?><th><?= getFieldIndex_Column_UserHelper($field, $order_field, $order_value) ?></th><?php endforeach; ?>
|
||||
<th>작업</th>
|
||||
</tr>
|
||||
<?php $i = 0; ?>
|
||||
<?php foreach ($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(), $total_count - (($page - 1) * $per_page + $i), ["target" => "_self"]) ?>
|
||||
</td>
|
||||
<?php foreach ($fields as $field) : ?>
|
||||
<td nowrap><?= getFieldIndex_Row_UserHelper_Admin($field, $entity, $fieldFilters, $fieldFormOptions) ?></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 $i++; ?>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
<div class="bottom">
|
||||
<ul class="nav justify-content-center">
|
||||
<li class="nav-item"><?= form_checkbox(array("id" => "batchjobuids_checkbox")) ?>ALL</li>
|
||||
<?php foreach ($batchjobFilters as $field) : ?><li class="nav-item"><?= getFieldFilter_UserHelper($field, DEFAULTS['EMPTY'], $fieldFormOptions) ?></li><?php endforeach; ?>
|
||||
<li class="nav-item"><?= form_submit('', '일괄처리', array("class" => "btn btn-outline btn-warning")); ?></li>
|
||||
<li class="nav-item"><?= anchor(current_url() . '/insert', '입력', ["class" => "btn btn-sm btn-primary btn-circle", "target" => "_self"]) ?></li>
|
||||
</ul>
|
||||
<?= $pagination ?>
|
||||
</div>
|
||||
<?= form_close(); ?>
|
||||
</div>
|
||||
<?= $this->endSection() ?>
|
||||
21
app/Views/front/user/update.php
Normal file
21
app/Views/front/user/update.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?= $this->extend('layouts/admin') ?>
|
||||
<?= $this->section('content') ?>
|
||||
<div class="content">
|
||||
<?= form_open_multipart(current_url(), $forms['attributes'], $forms['hiddens']) ?>
|
||||
<table class="form table table-bordered table-hover table-striped">
|
||||
<?php foreach ($fields as $field) : ?>
|
||||
<tr>
|
||||
<td class="label"><?= getFieldLabel_UserHelper($field, $fieldRules) ?></td>
|
||||
<td class="column">
|
||||
<?= getFieldForm_UserHelper($field, old($field, $entity->$field), $fieldFormOptions) ?>
|
||||
<?= validation_show_error($field); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<tr>
|
||||
<td valign="bottom" colspan="2"><?= form_submit('', '수정', array("class" => "btn btn-outline btn-primary")); ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<?= form_close(); ?>
|
||||
<?= $this->endSection() ?>
|
||||
16
app/Views/front/user/view.php
Normal file
16
app/Views/front/user/view.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?= $this->extend('layouts/admin') ?>
|
||||
<?= $this->section('content') ?>
|
||||
<div class="content">
|
||||
<table class="form table table-bordered table-hover table-striped">
|
||||
<?php foreach ($fields as $field) : ?>
|
||||
<tr>
|
||||
<td class="label"><?= getFieldLabel_UserHelper($field, $fieldRules) ?></td>
|
||||
<td class="column">
|
||||
<?= getFieldView_UserHelper($field, $entity, $fieldFilters, $fieldFormOptions) ?>
|
||||
<?= validation_show_error($field); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
<?= $this->endSection() ?>
|
||||
@ -5,6 +5,5 @@
|
||||
<div class="accordion accordion-flush">
|
||||
<?= $this->include($layout['path'] . '/left_menu/base'); ?>
|
||||
<?= $this->include($layout['path'] . '/left_menu/board'); ?>
|
||||
<?= $this->include($layout['path'] . '/left_menu/shoppingmall'); ?>
|
||||
</div>
|
||||
</div>
|
||||
56
public/css/front/top_banner.css
Normal file
56
public/css/front/top_banner.css
Normal file
@ -0,0 +1,56 @@
|
||||
@CHARSET "UTF-8";
|
||||
|
||||
/* jssor slider bullet navigator skin 05 css */
|
||||
/*
|
||||
.jssorb05 div (normal)
|
||||
.jssorb05 div:hover (normal mouseover)
|
||||
.jssorb05 .av (active)
|
||||
.jssorb05 .av:hover (active mouseover)
|
||||
.jssorb05 .dn (mousedown)
|
||||
*/
|
||||
.jssorb05 {
|
||||
position: absolute;
|
||||
}
|
||||
.jssorb05 div, .jssorb05 div:hover, .jssorb05 .av {
|
||||
position: absolute;
|
||||
/* size of bullet elment */
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: url('/js/slider/img/b05.png') no-repeat;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
}
|
||||
.jssorb05 div { background-position: -7px -7px; }
|
||||
.jssorb05 div:hover, .jssorb05 .av:hover { background-position: -37px -7px; }
|
||||
.jssorb05 .av { background-position: -67px -7px; }
|
||||
.jssorb05 .dn, .jssorb05 .dn:hover { background-position: -97px -7px; }
|
||||
|
||||
/* jssor slider arrow navigator skin 22 css */
|
||||
/*
|
||||
.jssora22l (normal)
|
||||
.jssora22r (normal)
|
||||
.jssora22l:hover (normal mouseover)
|
||||
.jssora22r:hover (normal mouseover)
|
||||
.jssora22l.jssora22ldn (mousedown)
|
||||
.jssora22r.jssora22rdn (mousedown)
|
||||
.jssora22l.jssora22lds (disabled)
|
||||
.jssora22r.jssora22rds (disabled)
|
||||
*/
|
||||
.jssora22l, .jssora22r {
|
||||
display: block;
|
||||
position: absolute;
|
||||
/* size of arrow element */
|
||||
width: 40px;
|
||||
height: 58px;
|
||||
cursor: pointer;
|
||||
background: url('/js/slider/img/a22.png') center center no-repeat;
|
||||
overflow: hidden;
|
||||
}
|
||||
.jssora22l { background-position: -10px -31px; }
|
||||
.jssora22r { background-position: -70px -31px; }
|
||||
.jssora22l:hover { background-position: -130px -31px; }
|
||||
.jssora22r:hover { background-position: -190px -31px; }
|
||||
.jssora22l.jssora22ldn { background-position: -250px -31px; }
|
||||
.jssora22r.jssora22rdn { background-position: -310px -31px; }
|
||||
.jssora22l.jssora22lds { background-position: -10px -31px; opacity: .3; pointer-events: none; }
|
||||
.jssora22r.jssora22rds { background-position: -70px -31px; opacity: .3; pointer-events: none; }
|
||||
25
public/css/front/welcome_left_banner.css
Normal file
25
public/css/front/welcome_left_banner.css
Normal file
@ -0,0 +1,25 @@
|
||||
@CHARSET "UTF-8";
|
||||
div#left_menu_slideshow {
|
||||
position: relative;
|
||||
width: 352px;
|
||||
height: 296px;
|
||||
}
|
||||
|
||||
div#left_menu_slideshow > div {
|
||||
top:9px;
|
||||
left:53px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
/*npy-scorecount.js용*/
|
||||
#event_alarm { position:relative; width:100%; max-width:1081px; }
|
||||
#event_alarm .npy-scwrap { position:absolute !important; top:0; left:0; width:100%; height:100%; }
|
||||
#event_alarm .npy-scdigit { position:absolute !important; top:24.95%; }
|
||||
#event_alarm .npy-scdigit._0 { left:18.36%; }
|
||||
#event_alarm .npy-scdigit._1 { left:28.12%; }
|
||||
#event_alarm .npy-scdigit._2 { left:40.53%; }
|
||||
#event_alarm .npy-scdigit._3 { left:50.35%; }
|
||||
#event_alarm .npy-scdigit._4 { left:62.72%; }
|
||||
#event_alarm .npy-scdigit._5 { left:72.53%; }
|
||||
/*npy-scorecount.js용*/
|
||||
41
public/css/front/welcome_partner_banner.css
Normal file
41
public/css/front/welcome_partner_banner.css
Normal file
@ -0,0 +1,41 @@
|
||||
@CHARSET "UTF-8";
|
||||
.partner_banner{
|
||||
position:relative;
|
||||
//border:1px solid red;
|
||||
margin:0 auto;
|
||||
width:1165px;
|
||||
}
|
||||
.partner_banner > .RollDiv{
|
||||
margin:0 auto;
|
||||
width:1165px;
|
||||
height:60px;
|
||||
overflow:hidden;
|
||||
}
|
||||
.partner_banner > .RollDiv > div{
|
||||
overflow:hidden;
|
||||
height:60px;
|
||||
width:1200px}
|
||||
.partner_banner > .RollDiv > div > a{
|
||||
float:left;
|
||||
display:block;
|
||||
}
|
||||
.partner_banner > .RollDiv > div > a > img{
|
||||
width:180px;
|
||||
height:60px;
|
||||
margin-right:10px;
|
||||
}
|
||||
.partner_banner > .btn_left{
|
||||
position:absolute;
|
||||
left:0;
|
||||
top:0;
|
||||
background:blue;
|
||||
height:100%;
|
||||
width:25px;
|
||||
}
|
||||
.partner_banner > .btn_right{
|
||||
position:absolute;
|
||||
right:0;top:0;
|
||||
background:blue;
|
||||
height:100%;
|
||||
width:25px;
|
||||
}
|
||||
54
public/css/front/zeta-menu.css
Normal file
54
public/css/front/zeta-menu.css
Normal file
@ -0,0 +1,54 @@
|
||||
@CHARSET "UTF-8";
|
||||
|
||||
.zeta-menu-bar {
|
||||
position:relative;
|
||||
z-index:100;
|
||||
background: #eee;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
|
||||
/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#efefef+7,c8c8c8+56,c3c3c3+58,c3c3c3+58,c8c8c8+72,c8c8c8+75,c8c8c8+75,dadada+100 */
|
||||
background: rgb(239,239,239); /* Old browsers */
|
||||
background: -moz-linear-gradient(top, rgba(239,239,239,1) 7%, rgba(200,200,200,1) 56%, rgba(195,195,195,1) 58%, rgba(195,195,195,1) 58%, rgba(200,200,200,1) 72%, rgba(200,200,200,1) 75%, rgba(200,200,200,1) 75%, rgba(218,218,218,1) 100%); /* FF3.6-15 */
|
||||
background: -webkit-linear-gradient(top, rgba(239,239,239,1) 7%,rgba(200,200,200,1) 56%,rgba(195,195,195,1) 58%,rgba(195,195,195,1) 58%,rgba(200,200,200,1) 72%,rgba(200,200,200,1) 75%,rgba(200,200,200,1) 75%,rgba(218,218,218,1) 100%); /* Chrome10-25,Safari5.1-6 */
|
||||
background: linear-gradient(to bottom, rgba(239,239,239,1) 7%,rgba(200,200,200,1) 56%,rgba(195,195,195,1) 58%,rgba(195,195,195,1) 58%,rgba(200,200,200,1) 72%,rgba(200,200,200,1) 75%,rgba(200,200,200,1) 75%,rgba(218,218,218,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#dadada',GradientType=0 );
|
||||
}
|
||||
.zeta-menu { margin: 0px; padding: 0px; }
|
||||
.zeta-menu li {
|
||||
float: left;
|
||||
list-style:none;
|
||||
position: relative;
|
||||
}
|
||||
.zeta-menu li:hover { background: #ddd; }
|
||||
.zeta-menu li:hover>a { color: black; }
|
||||
.zeta-menu a {
|
||||
color: black;
|
||||
display: block;
|
||||
padding: 10px 20px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.zeta-menu ul {
|
||||
background: #eee;
|
||||
border: 1px solid silver;
|
||||
display: none;
|
||||
padding: 0px;
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 100%;
|
||||
width: 180px;
|
||||
}
|
||||
.zeta-menu ul li {
|
||||
float: none;
|
||||
/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#efefef+7,c8c8c8+56,c3c3c3+58,c3c3c3+58,c8c8c8+72,c8c8c8+75,c8c8c8+75,dadada+100 */
|
||||
background: rgb(239,239,239); /* Old browsers */
|
||||
background: -moz-linear-gradient(top, rgba(239,239,239,1) 7%, rgba(200,200,200,1) 56%, rgba(195,195,195,1) 58%, rgba(195,195,195,1) 58%, rgba(200,200,200,1) 72%, rgba(200,200,200,1) 75%, rgba(200,200,200,1) 75%, rgba(218,218,218,1) 100%); /* FF3.6-15 */
|
||||
background: -webkit-linear-gradient(top, rgba(239,239,239,1) 7%,rgba(200,200,200,1) 56%,rgba(195,195,195,1) 58%,rgba(195,195,195,1) 58%,rgba(200,200,200,1) 72%,rgba(200,200,200,1) 75%,rgba(200,200,200,1) 75%,rgba(218,218,218,1) 100%); /* Chrome10-25,Safari5.1-6 */
|
||||
background: linear-gradient(to bottom, rgba(239,239,239,1) 7%,rgba(200,200,200,1) 56%,rgba(195,195,195,1) 58%,rgba(195,195,195,1) 58%,rgba(200,200,200,1) 72%,rgba(200,200,200,1) 75%,rgba(200,200,200,1) 75%,rgba(218,218,218,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#dadada',GradientType=0 );
|
||||
}
|
||||
.zeta-menu ul li:hover { background: #ddd; }
|
||||
.zeta-menu ul li:hover a { color: black; }
|
||||
.zeta-menu ul a { color: black; }
|
||||
.zeta-menu ul ul { left: 100%; top: 0; }
|
||||
.zeta-menu ul ul li {float:left; margin-right:10px;}
|
||||
Loading…
Reference in New Issue
Block a user