Compare commits
97 Commits
d5bd7d2948
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| b4b7a452fc | |||
| e703314c7f | |||
| d51528e407 | |||
| 6f7a292259 | |||
| 04f6e919f0 | |||
| 123853df5c | |||
| d2b916b985 | |||
| c51cf9dc87 | |||
| 01a0a60ef6 | |||
| 70ca13999e | |||
| ebfaf799eb | |||
| 7df4c3405f | |||
| 1afcb2364e | |||
| 699db96d26 | |||
| 9363b3bb4f | |||
| 043b3ac069 | |||
| 0068d20a12 | |||
| ac2717b077 | |||
| 603d024af3 | |||
| 1dbf988073 | |||
| 60823b0aab | |||
| 942aeafb60 | |||
| 75a641ab40 | |||
| 3f57e61be2 | |||
| 546d4b6f95 | |||
| d0ee976b0c | |||
| e6c4947c75 | |||
| 6233a30284 | |||
| 2ad52e7ce8 | |||
| 587cdd5420 | |||
| a289d69a6b | |||
| 91941d7c14 | |||
| af6f1eff2e | |||
| 8c42d57fcd | |||
| 6876ab2bd3 | |||
| 4a4c3177a9 | |||
| b6d1297a20 | |||
| 4a6b814426 | |||
| 4d67725ea8 | |||
| caa5828511 | |||
| 1dda5db73b | |||
| 971a23ae2a | |||
| 060e3643ea | |||
| 1c2c38a8bb | |||
| e8e9f7c382 | |||
| 5529e9ff1f | |||
| 30ebfb6644 | |||
| 3137a8226b | |||
| a399a7bedd | |||
| fe6ba5b1a0 | |||
| d20a20684d | |||
| dd8de9838f | |||
| 1b461f0e86 | |||
| ef51a9d6f4 | |||
| 34275ed7b7 | |||
| 0c8e3258c4 | |||
| 3a257c411e | |||
| 7857cc0422 | |||
| dbeda7da6d | |||
| 66344ad5c6 | |||
| ae9d94330f | |||
| 84731fc375 | |||
| e60866c99f | |||
| 1315df5ebb | |||
| c3c4efd679 | |||
| 961e92b965 | |||
| cc0f195bee | |||
| 9bdd0e435a | |||
| 7299751c83 | |||
| e41fa9b5b1 | |||
| dccf38d6d3 | |||
| 48c9cba704 | |||
| 6ee294d14b | |||
| 4e9930841c | |||
| fb29ea215a | |||
| eee07fab6b | |||
| f567aed4da | |||
| 90e1a88461 | |||
| cea5665f51 | |||
| f0628c310c | |||
| 9737f4ed81 | |||
| f66da1b416 | |||
| ce9710c758 | |||
| fe7ddf826e | |||
| 6415cca99f | |||
| 7b96c6d976 | |||
| 615e36647a | |||
| d71cbe3065 | |||
| d9094447c8 | |||
| edee2ad3d8 | |||
| da868053ca | |||
| d33bec681f | |||
| 5cf4155fcc | |||
| 10b1b7da6e | |||
| 8679b320e1 | |||
| 14ef2c1610 | |||
| 91d317607a |
1
.gitignore
vendored
@@ -2,3 +2,4 @@ package/vendor
|
||||
package/composer.lock
|
||||
.idea
|
||||
|
||||
node_modules/
|
||||
|
||||
BIN
assets/images/avatars/1.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
assets/images/avatars/10.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/images/avatars/2.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
assets/images/avatars/3.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/images/avatars/4.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
assets/images/avatars/5.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
assets/images/avatars/6.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
assets/images/avatars/7.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/images/avatars/8.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
assets/images/avatars/9.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 26 KiB |
BIN
assets/images/logo_hura8.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
@@ -1,44 +0,0 @@
|
||||
|
||||
const RowExpand = (function (){
|
||||
|
||||
const $status_expand_all = $("#js-row-expand-all");
|
||||
|
||||
let track_open_rows = [];
|
||||
|
||||
function open_child_row(child_class_name){
|
||||
const $children = $(`.${child_class_name}`);
|
||||
|
||||
if(!track_open_rows.includes(child_class_name)) {
|
||||
$children.css('display', 'table-row');
|
||||
track_open_rows.push(child_class_name);
|
||||
}else{
|
||||
$children.css('display', 'none');
|
||||
track_open_rows = [...Util.removeItemFromArray(track_open_rows, child_class_name)];
|
||||
}
|
||||
}
|
||||
|
||||
function open_all_row(){
|
||||
if(!track_open_rows.includes('expand_all')) {
|
||||
$(".row").css('display', 'table-row');
|
||||
track_open_rows.push('expand_all');
|
||||
|
||||
$status_expand_all.html("[-]");
|
||||
|
||||
}else{
|
||||
// collapse all
|
||||
$(".row").css('display', 'none');
|
||||
// open only first parent
|
||||
$(".parent_0").css('display', 'table-row');
|
||||
|
||||
track_open_rows = [];
|
||||
|
||||
$status_expand_all.html("[+]");
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
open_child: open_child_row,
|
||||
open_all: open_all_row
|
||||
}
|
||||
|
||||
})();
|
||||
7308
assets/script/hura-lib.css
Normal file
252
assets/script/hura.global.css
Normal file
@@ -0,0 +1,252 @@
|
||||
/* ===========================
|
||||
FONT IMPORT (Dùng chung)
|
||||
=========================== */
|
||||
@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@100;200;300;400;500;600;700;800;900;1000&display=swap";
|
||||
@import "https://fonts.googleapis.com/css2?family=Wix+Madefor+Text:wght@400;500;600;700;800;1000&display=swap";
|
||||
@import "https://fonts.googleapis.com/css2?family=Inclusive+Sans:wght@400;500;600;700;800;900;1000&display=swap";
|
||||
@import "https://fonts.googleapis.com/css2?family=AR+One+Sans:wght@400;500;600;700;800;1000&display=swap";
|
||||
|
||||
@layer properties {
|
||||
:root {
|
||||
--font-sans: "Inclusive Sans", sans-serif;
|
||||
--text-base: 16px;
|
||||
--bg-body: #fafbfd;
|
||||
--color-hura: #0041e8;
|
||||
--color-header: #002bb5;
|
||||
--text-base--line-height: 1.5;
|
||||
--color-black: #000;
|
||||
--color-white: #fff;
|
||||
--spacing: 0.25rem;
|
||||
--layout-topbar-background: #fff;
|
||||
--menu-active: #e9f2ff;
|
||||
--menu-text: #177bff;
|
||||
--menu-sub-bg: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
@layer base {
|
||||
html,
|
||||
body {
|
||||
font-family: var(--font-sans);
|
||||
font-size: var(--text-base);
|
||||
line-height: var(--text-base--line-height);
|
||||
}
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
#layout-topbar {
|
||||
background: var(--layout-topbar-background);
|
||||
top: calc(var(--spacing) * 0);
|
||||
z-index: 10;
|
||||
transition-property: top, margin, border-radius;
|
||||
transition-timing-function: var(
|
||||
--tw-ease,
|
||||
var(--default-transition-timing-function)
|
||||
);
|
||||
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
||||
--tw-duration: 0.3s;
|
||||
transition-duration: 0.3s;
|
||||
position: sticky;
|
||||
border-bottom-style: solid;
|
||||
border-bottom-width: 1px;
|
||||
border-color: var(--color-base-300);
|
||||
}
|
||||
#layout-content {
|
||||
padding: calc(var(--spacing) * 6);
|
||||
transition-property: all;
|
||||
transition-timing-function: var(
|
||||
--tw-ease,
|
||||
var(--default-transition-timing-function)
|
||||
);
|
||||
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
||||
flex-grow: 1;
|
||||
background: var(--bg-body);
|
||||
}
|
||||
.bg-menu {
|
||||
background-color: var(--color-header);
|
||||
}
|
||||
/* menu */
|
||||
.menu {
|
||||
& {
|
||||
--menu-active-bg: #e9f2ff;
|
||||
}
|
||||
}
|
||||
.menu-horizontal {
|
||||
display: inline-flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.menu-horizontal li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* ACTIVE STATE (LEVEL 1) */
|
||||
.menu-horizontal li.active {
|
||||
background: var(--menu-active);
|
||||
}
|
||||
|
||||
.menu-horizontal li.active .grow,
|
||||
.menu-horizontal li.active svg {
|
||||
color: var(--menu-text);
|
||||
}
|
||||
|
||||
/* ACTIVE STATE (LEVEL 2) */
|
||||
.menu-horizontal li.active ul li.active {
|
||||
background: var(--color-hura);
|
||||
}
|
||||
|
||||
.menu-horizontal li.active ul li.active a {
|
||||
color: #fff;
|
||||
}
|
||||
/* HOVER LEVEL 1 */
|
||||
|
||||
.menu-horizontal li:hover {
|
||||
background: var(--menu-active);
|
||||
}
|
||||
|
||||
.menu-horizontal li:hover .grow,
|
||||
.menu-horizontal li:hover svg {
|
||||
color: var(--color-hura);
|
||||
}
|
||||
|
||||
/* Dải hover giữ submenu không bị mất */
|
||||
.menu-horizontal li::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: -18px;
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.menu-horizontal li:hover::before {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* ==========================
|
||||
SUBMENU (UL)
|
||||
========================== */
|
||||
.menu-horizontal li .submenu {
|
||||
position: absolute !important;
|
||||
top: 125%;
|
||||
left: 0;
|
||||
background: var(--menu-sub-bg);
|
||||
margin-left: 0 !important;
|
||||
padding: 0.5rem;
|
||||
z-index: 999;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||
max-height: 500px;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
display: none;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
/* DaisyUI details submenu spacing */
|
||||
.menu-horizontal > li:not(.menu-title) > details > ul {
|
||||
margin-top: 1rem;
|
||||
padding-inline-end: 0.5rem;
|
||||
}
|
||||
|
||||
/* SHOW SUBMENU ON HOVER */
|
||||
.menu-horizontal li:hover .submenu,
|
||||
.menu-horizontal li:hover > details > ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Remove extra before from DaisyUI */
|
||||
.menu-horizontal > li > details > ul:before {
|
||||
content: none;
|
||||
}
|
||||
/* ==========================
|
||||
SUBMENU HOVER ITEMS
|
||||
========================== */
|
||||
.menu-horizontal li ul li:hover {
|
||||
background: var(--color-hura);
|
||||
}
|
||||
|
||||
.menu-horizontal li ul li:hover a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.menu-horizontal li ul li:hover::before {
|
||||
display: none;
|
||||
}
|
||||
/* Font weight chung */
|
||||
.menu-horizontal .grow {
|
||||
font-weight: 500;
|
||||
}
|
||||
.menu-icon-color {
|
||||
color: #838383;
|
||||
}
|
||||
.card-body {
|
||||
padding: calc(var(--spacing) * 4);
|
||||
}
|
||||
.choices {
|
||||
margin-top: calc(var(--spacing) * 2);
|
||||
--tw-shadow:
|
||||
0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)),
|
||||
0 1px 2px -1px var(--tw-shadow-color, #0000001a);
|
||||
box-shadow:
|
||||
var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
|
||||
var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
.choices__inner {
|
||||
background: #fff !important;
|
||||
min-height: 38px !important;
|
||||
padding: 5px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@layer hura {
|
||||
.hura-btn-active {
|
||||
--btn-bg: var(--color-hura);
|
||||
--btn-fg: #ffffff;
|
||||
--btn-border: var(--color-hura);
|
||||
color: var(--color-white);
|
||||
}
|
||||
.hura-btn-active:hover {
|
||||
--btn-bg: #002bb5;
|
||||
--btn-border: #002bb5;
|
||||
}
|
||||
.hura-btn-outline {
|
||||
background: #f5f7ff;
|
||||
color: var(--color-hura);
|
||||
border: 1px solid var(--color-hura);
|
||||
}
|
||||
.hura-btn-outline:hover {
|
||||
background: var(--color-hura);
|
||||
color: #fff;
|
||||
}
|
||||
.hura-checkbox:checked,
|
||||
.hura-checkbox[aria-checked="true"] {
|
||||
background: var(--color-hura);
|
||||
color: #fff;
|
||||
}
|
||||
.hura-radio:checked,
|
||||
.hura-radio[aria-checked="true"] {
|
||||
border-color: var(--color-hura);
|
||||
}
|
||||
.hura-radio:checked::before,
|
||||
.hura-radio[aria-checked="true"]::before {
|
||||
background-color: var(--color-hura);
|
||||
}
|
||||
.hura-text-blue {
|
||||
color: var(--color-hura);
|
||||
}
|
||||
.hura-bg-blue {
|
||||
background: var(--color-hura);
|
||||
}
|
||||
.hura-shadow-blue {
|
||||
box-shadow:
|
||||
0 10px 15px -3px rgb(var(--color-hura) / 0.35),
|
||||
0 4px 6px -4px rgb(var(--color-hura) / 0.25);
|
||||
}
|
||||
}
|
||||
2
assets/script/jquery.js
vendored
Normal file
2
assets/script/tailwind-daisyui.css
Normal file
@@ -0,0 +1,2 @@
|
||||
@import "tailwindcss";
|
||||
@plugin "daisyui";
|
||||
32
assets/typescript/main.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
"use strict";
|
||||
|
||||
interface AdminFunctions {
|
||||
addProductToCategory(productId: string): void;
|
||||
markProductAsHot(productId: string): void;
|
||||
}
|
||||
|
||||
const AdminFunctions: AdminFunctions = (() => {
|
||||
|
||||
function addProductToCategory(productId: string): void {
|
||||
const statusElement = $('#status_' + productId);
|
||||
statusElement.html('<span class="loading loading-bars loading-sm"></span><span class="ml-[3px]">Processing...</span>');
|
||||
setTimeout(() => {
|
||||
statusElement.html('');
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function markProductAsHot(productId: string): void {
|
||||
const statusElement = $('#js-status-hottype-' + productId);
|
||||
statusElement.html('<span class="loading loading-bars loading-sm"></span><span class="ml-[3px]">Processing...</span>');
|
||||
setTimeout(() => {
|
||||
statusElement.html('');
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
return {
|
||||
addProductToCategory,
|
||||
markProductAsHot
|
||||
};
|
||||
})();
|
||||
|
||||
export default AdminFunctions;
|
||||
1
data/admin/admin_log_product.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/admin/department.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/admin/department_add.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/admin/department_entity_permission.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/admin/department_menu_permission.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/admin/login_log.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/distributor/form.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/distributor/home.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/job/home.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/media/category.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/media/upload.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
@@ -24,18 +24,35 @@ function _get_menu_list() {
|
||||
$item_menu = include_once __DIR__."/menu_item/".$item.".php";
|
||||
|
||||
// skip not enabled
|
||||
if(!$item_menu['enable']) continue;
|
||||
if(!$item_menu['enable']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// skip not enabled children
|
||||
$item_menu_children_enabled = array_filter($item_menu['menu'], function ($menu_child) { return $menu_child['enable'];});
|
||||
if(!sizeof($item_menu_children_enabled)) continue;
|
||||
if(!sizeof($item_menu_children_enabled)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// reset menu for $item_menu
|
||||
$item_menu['menu'] = $item_menu_children_enabled;
|
||||
|
||||
$menu_list[$item] = $item_menu;
|
||||
$menu_list[] = [
|
||||
'id' => $item,
|
||||
'name' => $item_menu['name'],
|
||||
'icon_class' => $item_menu['icon_class'] ?? '',
|
||||
'url' => $item_menu['url'],
|
||||
'menu' => array_map(function ($menu_child) {
|
||||
return [
|
||||
//'module' => $menu_child['module'],
|
||||
//'view' => $menu_child['view'],
|
||||
'id' => $menu_child['id'],
|
||||
'name' => $menu_child['name'],
|
||||
'icon_class' => $menu_child['icon_class'] ?? '',
|
||||
'url' => $menu_child['url'],
|
||||
];
|
||||
}, $item_menu_children_enabled),
|
||||
];
|
||||
}
|
||||
|
||||
//debug_var($menu_list);
|
||||
|
||||
return $menu_list;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Nội dung",
|
||||
"icon_class" => 'users',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
|
||||
@@ -12,6 +13,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'article/home',
|
||||
'name' => 'Tin bài',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/article',
|
||||
),
|
||||
|
||||
@@ -21,6 +23,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'media/home',
|
||||
'name' => 'Thư viện file Media',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/media',
|
||||
),
|
||||
|
||||
@@ -30,6 +33,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'page/home',
|
||||
'name' => 'Nội dung cố định',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/page',
|
||||
),
|
||||
|
||||
@@ -39,6 +43,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'album/home',
|
||||
'name' => 'Thư viện ảnh',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/album',
|
||||
),
|
||||
|
||||
@@ -48,6 +53,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'video/home',
|
||||
'name' => 'Video',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/video',
|
||||
),
|
||||
),
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
return array(
|
||||
'enable' => true ,
|
||||
|
||||
"name" => "Khách hàng",
|
||||
"icon_class" => 'user',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
@@ -12,6 +12,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'customer/home',
|
||||
'name' => 'Danh sách khách hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/customer',
|
||||
),
|
||||
|
||||
@@ -21,6 +22,7 @@ return array(
|
||||
'view' => 'customer-group',
|
||||
'id' => 'customer/customer-group',
|
||||
'name' => 'Nhóm khách hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/customer/customer-group',
|
||||
),*/
|
||||
|
||||
@@ -30,6 +32,7 @@ return array(
|
||||
'view' => 'customer-contact',
|
||||
'id' => 'customer/customer-contact',
|
||||
'name' => 'Khách hàng liên hệ',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/customer/customer-contact',
|
||||
),
|
||||
|
||||
@@ -39,6 +42,7 @@ return array(
|
||||
'view' => 'comment',
|
||||
'id' => 'customer/comment',
|
||||
'name' => 'Tổng hợp trao đổi',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/customer/comment',
|
||||
),
|
||||
|
||||
@@ -48,6 +52,7 @@ return array(
|
||||
'view' => 'review',
|
||||
'id' => 'customer/review',
|
||||
'name' => 'Tổng hợp Đánh giá',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/customer/review',
|
||||
),
|
||||
|
||||
@@ -57,6 +62,7 @@ return array(
|
||||
'view' => 'customer-review',
|
||||
'id' => 'customer/customer-review',
|
||||
'name' => 'Khách hàng góp ý',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/customer/customer-review',
|
||||
),
|
||||
|
||||
@@ -66,6 +72,7 @@ return array(
|
||||
'view' => 'customer-newsletter',
|
||||
'id' => 'customer/customer-newsletter',
|
||||
'name' => 'Khách hàng nhận bản tin',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/customer/customer-newsletter',
|
||||
),
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Đại lý",
|
||||
"icon_class" => 'shopping-bag',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
0 => array(
|
||||
@@ -11,6 +12,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'distributor/home',
|
||||
'name' => 'Danh sách',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/distributor',
|
||||
),
|
||||
),
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Tuyển dụng",
|
||||
"icon_class" => 'megaphone',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Marketing",
|
||||
"icon_class" => 'newspaper',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
@@ -11,6 +12,7 @@ return array(
|
||||
'view' => 'promotion',
|
||||
'id' => 'marketing/promotion',
|
||||
'name' => 'Khuyến mại theo sản phẩm',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/promotion',
|
||||
),
|
||||
|
||||
@@ -20,6 +22,7 @@ return array(
|
||||
'view' => 'coupon',
|
||||
'id' => 'marketing/coupon',
|
||||
'name' => 'Phiếu giảm giá - Voucher',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/coupon',
|
||||
),
|
||||
|
||||
@@ -29,6 +32,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'banner/home',
|
||||
'name' => 'Danh sách banner',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/banner',
|
||||
),
|
||||
|
||||
@@ -38,6 +42,7 @@ return array(
|
||||
'view' => 'store-design',
|
||||
'id' => 'system/store-design',
|
||||
'name' => 'Banner pop-up',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/store-design?section=popup',
|
||||
),
|
||||
|
||||
@@ -47,6 +52,7 @@ return array(
|
||||
'view' => 'poster-upload',
|
||||
'id' => 'marketing/poster-upload',
|
||||
'name' => 'Poster',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/poster-upload',
|
||||
),
|
||||
|
||||
@@ -56,6 +62,7 @@ return array(
|
||||
'view' => 'store-design',
|
||||
'id' => 'system/store-design',
|
||||
'name' => 'Hình nền website',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/store-design?section=background',
|
||||
),*/
|
||||
|
||||
@@ -65,6 +72,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'email/home',
|
||||
'name' => 'Email',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/email',
|
||||
),*/
|
||||
|
||||
@@ -74,6 +82,7 @@ return array(
|
||||
'view' => 'meta-list',
|
||||
'id' => 'url/meta-list',
|
||||
'name' => 'Sửa thông tin URL',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/url/meta-list',
|
||||
),
|
||||
|
||||
@@ -83,6 +92,7 @@ return array(
|
||||
'view' => 'url-seo',
|
||||
'id' => 'url/url-seo',
|
||||
'name' => 'Link SEO',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/url/url-seo',
|
||||
),
|
||||
|
||||
@@ -92,6 +102,7 @@ return array(
|
||||
'view' => 'feed',
|
||||
'id' => 'marketing/feed',
|
||||
'name' => 'Facebook/Google Feed',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/feed',
|
||||
),
|
||||
|
||||
@@ -101,6 +112,7 @@ return array(
|
||||
'view' => 'product-offer',
|
||||
'id' => 'marketing/product-offer',
|
||||
'name' => 'Cài biểu tượng giảm giá',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/product-offer',
|
||||
),
|
||||
|
||||
@@ -119,6 +131,7 @@ return array(
|
||||
'view' => 'program',
|
||||
'id' => 'marketing/program',
|
||||
'name' => 'Chương trình khuyến mại',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/program',
|
||||
),
|
||||
|
||||
@@ -128,6 +141,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'deal/home',
|
||||
'name' => 'Deal/giờ vàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/deal',
|
||||
),
|
||||
|
||||
@@ -137,6 +151,7 @@ return array(
|
||||
'view' => 'combo-deal',
|
||||
'id' => 'marketing/combo-deal',
|
||||
'name' => 'Bán Combo',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/combo-deal',
|
||||
),
|
||||
|
||||
@@ -146,6 +161,7 @@ return array(
|
||||
'view' => 'conditional-promotion',
|
||||
'id' => 'marketing/conditional-promotion',
|
||||
'name' => 'Khuyến mại BuildPC',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/conditional-promotion',
|
||||
),
|
||||
|
||||
@@ -155,6 +171,7 @@ return array(
|
||||
'view' => 'live-support-per-category',
|
||||
'id' => 'marketing/live-support-per-category',
|
||||
'name' => 'Hỗ trợ theo từng danh mục',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/marketing/live-support-per-category',
|
||||
),
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Bán hàng",
|
||||
"icon_class" => "store",
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
@@ -11,6 +12,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'order/home',
|
||||
'name' => 'Danh sách đơn hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/order', // &list=new
|
||||
),
|
||||
|
||||
@@ -20,6 +22,7 @@ return array(
|
||||
'view' => 'bargain',
|
||||
'id' => 'order/bargain',
|
||||
'name' => 'Mặc cả giá',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/order/bargain',
|
||||
),
|
||||
|
||||
@@ -29,16 +32,17 @@ return array(
|
||||
'view' => 'wait-order',
|
||||
'id' => 'order/wait-order',
|
||||
'name' => 'Chờ mua sản phẩm',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/order/wait-order',
|
||||
),
|
||||
|
||||
|
||||
array(
|
||||
'enable' => true ,
|
||||
'module' => 'order',
|
||||
'view' => 'paygate',
|
||||
'id' => 'order/paygate',
|
||||
'name' => 'Thanh toán qua cổng dịch vụ',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/order/paygate',
|
||||
),
|
||||
|
||||
@@ -48,6 +52,7 @@ return array(
|
||||
'view' => 'price-quote',
|
||||
'id' => 'order/price-quote',
|
||||
'name' => 'Lập báo giá',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/order/price-quote',
|
||||
),
|
||||
),
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Trả góp",
|
||||
"icon_class" => "handshake",
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
return array(
|
||||
'enable' => true ,
|
||||
|
||||
"name" => "Xây dựng máy tính",
|
||||
"icon_class" => 'monitor-smartphone',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Sản phẩm",
|
||||
"icon_class" => 'package',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
@@ -13,6 +14,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'product/home',
|
||||
'name' => 'Sản phẩm',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product',
|
||||
),
|
||||
|
||||
@@ -49,6 +51,7 @@ return array(
|
||||
'view' => 'category',
|
||||
'id' => 'product/category',
|
||||
'name' => 'Danh mục',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/category',
|
||||
),
|
||||
array(
|
||||
@@ -57,6 +60,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'brand/home',
|
||||
'name' => 'Thương hiệu',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/brand',
|
||||
),
|
||||
array(
|
||||
@@ -65,6 +69,7 @@ return array(
|
||||
'view' => 'attribute',
|
||||
'id' => 'product/attribute',
|
||||
'name' => 'Thuộc tính ',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/attribute',
|
||||
),
|
||||
array(
|
||||
@@ -73,6 +78,7 @@ return array(
|
||||
'view' => 'collection',
|
||||
'id' => 'product/collection',
|
||||
'name' => 'Bộ sưu tập',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/collection',
|
||||
),
|
||||
|
||||
@@ -82,6 +88,7 @@ return array(
|
||||
'view' => 'product-wait-list',
|
||||
'id' => 'product/product-wait-list',
|
||||
'name' => 'Chờ mua sản phẩm',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/product-wait-list',
|
||||
),
|
||||
|
||||
@@ -91,6 +98,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'addon/home',
|
||||
'name' => 'SP/Dịch vụ mua kèm',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/addon',
|
||||
),
|
||||
|
||||
@@ -100,6 +108,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'config_group/home',
|
||||
'name' => 'Nhóm cấu hình',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/config_group',
|
||||
),
|
||||
|
||||
@@ -109,6 +118,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'supplier/home',
|
||||
'name' => 'Nhà cung cấp',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/supplier',
|
||||
),*/
|
||||
|
||||
@@ -118,6 +128,7 @@ return array(
|
||||
'view' => 'set-promotion-price',
|
||||
'id' => 'product/set-promotion-price',
|
||||
'name' => 'Cài đặt giá khuyến mại',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/set-promotion-price',
|
||||
),*/
|
||||
|
||||
@@ -127,6 +138,7 @@ return array(
|
||||
'view' => 'product-per-customer-group',
|
||||
'id' => 'product/product-per-customer-group',
|
||||
'name' => 'Giá theo nhóm khách hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/product-per-customer-group',
|
||||
),*/
|
||||
|
||||
@@ -136,6 +148,7 @@ return array(
|
||||
'view' => 'set',
|
||||
'id' => 'product/set',
|
||||
'name' => 'Set sản phẩm',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/set',
|
||||
),
|
||||
|
||||
@@ -145,6 +158,7 @@ return array(
|
||||
'view' => 'spec-group',
|
||||
'id' => 'product/spec-group',
|
||||
'name' => 'Nhóm thông số kỹ thuật',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/spec-group',
|
||||
),
|
||||
|
||||
@@ -154,6 +168,7 @@ return array(
|
||||
'view' => 'list-competitor',
|
||||
'id' => 'product/list-competitor',
|
||||
'name' => 'So sánh giá đối thủ',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/product/list-competitor',
|
||||
),
|
||||
),
|
||||
|
||||
@@ -4,6 +4,7 @@ return array(
|
||||
'enable' => true ,
|
||||
|
||||
"name" => "Thống kê",
|
||||
"icon_class" => 'pie-chart',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
@@ -12,6 +13,7 @@ return array(
|
||||
'view' => 'visitor',
|
||||
'id' => 'report/visitor',
|
||||
'name' => 'Thống kê truy cập',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/visitor',
|
||||
),
|
||||
|
||||
@@ -21,6 +23,7 @@ return array(
|
||||
'view' => 'customer',
|
||||
'id' => 'report/customer',
|
||||
'name' => 'Thống kê khách hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/customer',
|
||||
),
|
||||
|
||||
@@ -30,6 +33,7 @@ return array(
|
||||
'view' => 'order',
|
||||
'id' => 'report/order',
|
||||
'name' => 'Thống kê đơn hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/order',
|
||||
),
|
||||
|
||||
@@ -39,6 +43,7 @@ return array(
|
||||
'view' => 'product-buy',
|
||||
'id' => 'report/product-buy',
|
||||
'name' => 'Sản phẩm mua nhiều',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/product-buy',
|
||||
),
|
||||
|
||||
@@ -48,6 +53,7 @@ return array(
|
||||
'view' => 'product-visit',
|
||||
'id' => 'report/product-visit',
|
||||
'name' => 'Sản phẩm xem nhiều',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/product-visit',
|
||||
),
|
||||
|
||||
@@ -57,6 +63,7 @@ return array(
|
||||
'view' => 'referer',
|
||||
'id' => 'report/referer',
|
||||
'name' => 'Web giới thiệu',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/referer',
|
||||
),
|
||||
|
||||
@@ -66,6 +73,7 @@ return array(
|
||||
'view' => 'search',
|
||||
'id' => 'report/search',
|
||||
'name' => 'Từ khóa tìm kiếm',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/search',
|
||||
),
|
||||
|
||||
@@ -75,6 +83,7 @@ return array(
|
||||
'view' => 'error-page',
|
||||
'id' => '',
|
||||
'name' => 'Lỗi website',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report/error-page',
|
||||
),
|
||||
),
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
'enable' => true ,
|
||||
"name" => "Hệ thống",
|
||||
"icon_class" => 'settings',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
array(
|
||||
@@ -11,6 +12,7 @@ return array(
|
||||
'view' => 'settings',
|
||||
'id' => 'system/settings',
|
||||
'name' => 'Cài đặt chung',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/settings',
|
||||
),
|
||||
|
||||
@@ -20,6 +22,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'template/home',
|
||||
'name' => 'Sửa file template',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/template',
|
||||
),
|
||||
|
||||
@@ -29,6 +32,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => '',
|
||||
'name' => 'Quản trị viên',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/admin',
|
||||
),
|
||||
|
||||
@@ -38,6 +42,7 @@ return array(
|
||||
'view' => 'store-address',
|
||||
'id' => '',
|
||||
'name' => 'Địa chỉ cửa hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/store-address',
|
||||
),
|
||||
|
||||
@@ -47,6 +52,7 @@ return array(
|
||||
'view' => 'domain',
|
||||
'id' => 'system/domain',
|
||||
'name' => 'Cài đặt tên miền',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/domain',
|
||||
),
|
||||
|
||||
@@ -56,6 +62,7 @@ return array(
|
||||
'view' => 'ban-ip',
|
||||
'id' => '',
|
||||
'name' => 'Chặn IP truy cập website',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/ban-ip',
|
||||
),
|
||||
|
||||
@@ -65,10 +72,11 @@ return array(
|
||||
'view' => 'change-info',
|
||||
'id' => '',
|
||||
'name' => 'Thông tin website',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/change-info',
|
||||
),
|
||||
|
||||
|
||||
|
||||
|
||||
array(
|
||||
'enable' => true ,
|
||||
@@ -76,6 +84,7 @@ return array(
|
||||
'view' => 'province-list',
|
||||
'id' => '',
|
||||
'name' => 'Cài đặt tỉnh thành',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/province-list',
|
||||
),
|
||||
|
||||
@@ -85,6 +94,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => '',
|
||||
'name' => 'Tình trạng đơn hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/order-status',
|
||||
),
|
||||
|
||||
@@ -94,6 +104,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => '',
|
||||
'name' => 'Hỗ trợ bán hàng',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/online_support',
|
||||
),
|
||||
|
||||
@@ -103,6 +114,7 @@ return array(
|
||||
'view' => 'country',
|
||||
'id' => '',
|
||||
'name' => 'Quốc gia',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/country',
|
||||
),
|
||||
|
||||
@@ -112,6 +124,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => '',
|
||||
'name' => 'Cài đặt thông báo ngoài',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/report_out',
|
||||
),
|
||||
|
||||
@@ -121,6 +134,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => '',
|
||||
'name' => 'Cài đặt phí vận chuyển',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/shipping2',
|
||||
),
|
||||
|
||||
@@ -130,6 +144,7 @@ return array(
|
||||
'view' => 'redirect',
|
||||
'id' => 'url/redirect',
|
||||
'name' => 'Url Redirect',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/url/redirect',
|
||||
),
|
||||
|
||||
@@ -139,17 +154,10 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'tool/home',
|
||||
'name' => 'Công cụ',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/tool',
|
||||
),
|
||||
|
||||
array(
|
||||
'enable' => true ,
|
||||
'module' => 'civi',
|
||||
'view' => 'home',
|
||||
'id' => '',
|
||||
'name' => 'Civi Affiliate',
|
||||
'url' => '/admin/civi',
|
||||
),
|
||||
|
||||
array(
|
||||
'enable' => true ,
|
||||
@@ -157,6 +165,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'menu/home',
|
||||
'name' => 'Quản trị menu',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/menu',
|
||||
),
|
||||
|
||||
@@ -166,6 +175,7 @@ return array(
|
||||
'view' => 'keyword-suggest',
|
||||
'id' => 'system/keyword-suggest',
|
||||
'name' => 'Từ khóa gợi ý',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/system/keyword-suggest',
|
||||
),
|
||||
|
||||
@@ -175,6 +185,7 @@ return array(
|
||||
'view' => 'home',
|
||||
'id' => 'tag/home',
|
||||
'name' => 'Quản trị Tag',
|
||||
"icon_class" => '',
|
||||
'url' => '/admin/tag',
|
||||
),
|
||||
),
|
||||
|
||||
@@ -4,6 +4,7 @@ return array(
|
||||
'enable' => true ,
|
||||
|
||||
"name" => "Bảo hành sản phẩm",
|
||||
"icon_class" => '',
|
||||
"url" => "",
|
||||
"menu" => array(
|
||||
/*0 => array(
|
||||
|
||||
@@ -37,7 +37,7 @@ $objAOrderController = new AOrderController();
|
||||
$totalResults = $objAOrderController->getTotal($conditions);
|
||||
$item_list = $objAOrderController->getList($conditions);
|
||||
|
||||
debug_var($item_list);
|
||||
//debug_var($item_list);
|
||||
|
||||
list($page_collection, $tb_page, $total_pages) = Paging::paging_template($totalResults, $numPerPage);
|
||||
|
||||
|
||||
1
data/page/category.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/page/category_add.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/page/form.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/page/home.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/payinstall/add_company.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/payinstall/add_period.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/payinstall/add_upfront.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/payinstall/category.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/payinstall/home.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/payinstall/order.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/payinstall/order_detail.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/pcbuilder/config_edit.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/pcbuilder/home.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/pcbuilder/part_relation.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
@@ -28,8 +28,8 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
|
||||
$stt ++;
|
||||
$imgUrl = (strlen($cat_info["thumbnail"]) > 2) ? " <img src=\"".$cat_info["thumbnail"]."\" style=\"max-width:30px; max-height:30px;\" />" : "";
|
||||
|
||||
if($cat_info["status"]) $status = "<a href=\"javascript:update_status(".$cat_id.",'off')\" class='w-[30px] h-[30px] border-[1px] border-[#9E9E9E] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='fa-regular fa-eye-slash text-[#9E9E9E]'></i></a>";
|
||||
else $status = "<a href=\"javascript:update_status(".$cat_id.",'on')\" class='w-[30px] h-[30px] border-[1px] border-[#0041E8] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='fa-regular fa-eye text-[#0041E8]'></i></a>";
|
||||
if($cat_info["status"]) $status = "<a href=\"javascript:update_status(".$cat_id.",'off')\" class='btn btn-soft btn-xs btn-outline btn-square'><i data-lucide='eye-off' class='size-3'></i></a>";
|
||||
else $status = "<a href=\"javascript:update_status(".$cat_id.",'on')\" class='btn btn-soft btn-xs btn-outline btn-square'><i data-lucide='eye' class='size-3'></i></a>";
|
||||
|
||||
$edit_link ="/admin/product/category-form?id=".$cat_id;
|
||||
|
||||
@@ -42,7 +42,7 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
|
||||
}
|
||||
|
||||
if($cat_info['is_parent']) {
|
||||
$show_category_name = "<a href=\"javascript:;\" onclick=\"RowExpand.open_child('parent_".$cat_id."')\">".$show_category_name."</a>";
|
||||
$show_category_name = "<a href=\"javascript:;\" class='link-active' onclick=\"RowExpand.open_child('parent_".$cat_id."')\">".$show_category_name."</a>";
|
||||
}
|
||||
|
||||
$categoryTree .= "
|
||||
@@ -50,22 +50,22 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
|
||||
onmouseover=\"this.className='row-hover parent_".$parentId."'\" onmouseout=\"this.className='parent_".$parentId."'\">
|
||||
|
||||
<td>
|
||||
<a name='cat_".$cat_id."'></a>
|
||||
<a class='link-active' name='cat_".$cat_id."'></a>
|
||||
". $extra_space . $prefix . $stt.". ". $show_category_name . $imgUrl."
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<a href='".$cat_info['request_path']."' title='Mở tại website' target='_blank'>Xem trang</a>
|
||||
<a href='".$cat_info['request_path']."' class='link-active' title='Mở tại website' target='_blank'>Xem trang</a>
|
||||
</td>
|
||||
|
||||
<td>".$cat_id."</td>
|
||||
<td>413787</td>
|
||||
<td><a href='/admin/product?category=".$cat_id."'>1292</a></td>
|
||||
<td class='whitespace-nowrap'>413787</td>
|
||||
<td><a class='link-active' href='/admin/product?category=".$cat_id."'>1292</a></td>
|
||||
<td>
|
||||
<input type=text id=order_".$cat_id." value='".$cat_info["ordering"]."' size=2 onchange=\"update_order(".$cat_id.",this.value)\" />
|
||||
<input class='input' type=text id=order_".$cat_id." value='".$cat_info["ordering"]."' size=2 onchange=\"update_order(".$cat_id.",this.value)\" />
|
||||
<span class='status-ordering-".$cat_id."'></span>
|
||||
</td>
|
||||
<td>
|
||||
<td class='whitespace-nowrap'>
|
||||
SP + Danh mục con
|
||||
</td>
|
||||
|
||||
@@ -77,11 +77,11 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
|
||||
<a href='/admin/product/category-attribute?id=".$cat_id."&popup=1' class='pop-up'>Tổng</a> (".$cat_info['attribute_count'].")
|
||||
</td>
|
||||
<td>
|
||||
<div class='list-btn flex items-center'>
|
||||
<a href=\"".$edit_link."\" class='w-[30px] h-[30px] border-[1px] border-[#0041E8] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='icons icon-edit'></i></a>
|
||||
<a class='w-[30px] h-[30px] border-[1px] border-[#0041E8] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]' href='javascript:set_category_feature(.$cat_id.,'off')'><i class='icons icon-feature'></i></a>
|
||||
<div class='list-btn flex items-center gap-3'>
|
||||
<a href=\"".$edit_link."\" class='btn btn-soft btn-xs btn-square btn-outline btn-view'><i data-lucide='pencil' class='size-3'></i></a>
|
||||
<a class='btn btn-soft btn-xs btn-square btn-outline btn-view' href='javascript:set_category_feature(.$cat_id.,'off')'><i data-lucide='crown' class='size-3'></i></a>
|
||||
<span id=status-".$cat_id.">".$status."</span>
|
||||
<span class='status-delete-".$cat_id."'><a href=\"javascript:deleteThis(".$cat_id.")\" class='w-[30px] h-[30px] border-[1px] border-[#9E9E9E] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='icons icon-remove'></i></a></span>
|
||||
<span class='status-delete-".$cat_id."'><a href=\"javascript:deleteThis(".$cat_id.")\" class='btn btn-soft btn-xs btn-square btn-error btn-outline '><i data-lucide='trash-2' class='size-3'></i></a></span>
|
||||
</div>
|
||||
</td>
|
||||
";
|
||||
@@ -89,7 +89,7 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
|
||||
}else{
|
||||
$categoryTree .= "
|
||||
<td>
|
||||
<a href=\"".$edit_link."\"><i class='icons icon-edit'></i></a>
|
||||
<a href=\"".$edit_link."\"><i data-lucide='pencil' class='size-3'></i></a>
|
||||
</td>
|
||||
";
|
||||
}
|
||||
|
||||
1
data/product/collection.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/product/collection_add.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/product/set.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/product/set_form.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/product/set_product.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/report/customer.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/report/order.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/report/product_buy.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/report/product_visit.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/report/referer.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/report/search.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/shipping2/fee.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/shipping2/home.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/shipping2/setting.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/system/ban_ip.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/system/email.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/system/settings.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/system/setup.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/system/store_address.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/system/store_design.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/tag/add.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/tag/home.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
1
data/template/edit_template.php
Normal file
@@ -0,0 +1 @@
|
||||
<?php
|
||||
@@ -10,8 +10,28 @@ function debug_var($input) {
|
||||
}
|
||||
|
||||
function init_autoload(){
|
||||
$classLoader = require_once ROOT_DIR . '/package/vendor/autoload.php';
|
||||
$classLoader->add("Hura8", ROOT_DIR . '/inc' );
|
||||
$candidates = [
|
||||
ROOT_DIR . '/package/vendor/autoload.php',
|
||||
ROOT_DIR . '/vendor/autoload.php'
|
||||
];
|
||||
|
||||
$autoload = null;
|
||||
foreach ($candidates as $file) {
|
||||
if (file_exists($file)) {
|
||||
$autoload = $file;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$autoload) {
|
||||
$paths = implode("', '", $candidates);
|
||||
trigger_error("Composer autoload not found. Expected one of: '" . $paths . "'.\nRun 'composer install' in the 'package' directory (or the project root) to install dependencies.", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$classLoader = require_once $autoload;
|
||||
if (is_object($classLoader) && method_exists($classLoader, 'add')) {
|
||||
$classLoader->add("Hura8", ROOT_DIR . '/inc');
|
||||
}
|
||||
|
||||
return $classLoader;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
return [
|
||||
'main' => [
|
||||
'host' => '150.95.108.46',
|
||||
'host' => '150.95.115.129',
|
||||
'user' => 'hura8_devr',
|
||||
'pass' => 'aEEfaffs@12563',
|
||||
'db' => 'hura8',
|
||||
|
||||
27
notes/header.md
Normal file
@@ -0,0 +1,27 @@
|
||||
## Header
|
||||
|
||||
### 1. Tìm kiếm
|
||||
|
||||
Khi click tìm kiếm sẽ ra modal có:
|
||||
|
||||
- Thanh tìm kiếm: từ khóa + lựa chọn loại nội dung cần tìm (đơn hàng, khách hàng, sản phẩm, bài viết, v.v.)
|
||||
- Có danh sách các từ khóa tìm kiếm gần đây bên dưới thanh tìm kiếm để người dùng dễ dàng chọn lại.
|
||||
- Danh sách các link nhanh đến các mục phổ biến như: Quản lý đơn hàng, Quản lý khách hàng, Quản lý sản phẩm, v.v.
|
||||
|
||||
Về cơ bản là gần giống như chức năng hiện tại, chỉ chỉnh sửa lại và thay nội dung cho phù hợp hơn.
|
||||
|
||||
### 2. Thông báo
|
||||
|
||||
Bỏ các tab, chỉ giữ lại 1 tab duy nhất và có phần "Xem hết"
|
||||
|
||||
Khi click xem hết sẽ ra trang Modal riêng hiển thị tất cả thông báo với các bộ lọc và tùy chọn đánh dấu đã đọc/chưa đọc.
|
||||
|
||||
### 3. Tài khoản người dùng
|
||||
- Hiển thị thông tin cơ bản của người dùng (ảnh đại diện, tên, vai trò).
|
||||
- Menu thả xuống với các tùy chọn:
|
||||
- Hồ sơ cá nhân: Xem và chỉnh sửa thông tin cá nhân.
|
||||
- Cài đặt tài khoản: Thay đổi mật khẩu, cài đặt bảo mật.
|
||||
- Đăng xuất: Đăng xuất khỏi hệ thống.
|
||||
|
||||
### 4. Cài đặt hệ thống (biểu tượng bánh răng)
|
||||
- Chỉ hiển thị với người dùng có quyền quản trị cao nhất
|
||||
92
notes/home.md
Normal file
@@ -0,0 +1,92 @@
|
||||
## Mục tiêu của trang chủ:
|
||||
|
||||
Chỉ gồm những thông tin quan trọng nhất mang tính chất: **Chỉ báo việc cần xử lý** và **Tóm tắt thông tin**
|
||||
|
||||
## Cột 1:
|
||||
|
||||
### 1. Việc cần xử lý:
|
||||
|
||||
- Đơn hàng mới
|
||||
- Liên hệ mới của khách hàng
|
||||
- Comment mới chưa duyệt
|
||||
- Lỗi web
|
||||
- Đơn hàng chưa xử lý xong
|
||||
- Đơn trả góp mới
|
||||
- ... Các chỉ báo khác
|
||||
|
||||
Mặc định sẽ hiển thị 3 chỉ báo. Khách hàng có thể click vào lựa chọn **Thêm chỉ báo** để tích chọn hiển thị thêm chỉ báo từ danh sách các chỉ báo được lập sẵn bởi hệ thống.
|
||||
|
||||
Các thể hiện của chỉ báo:
|
||||
|
||||
- Dạng thẻ: Hiển thị tên chỉ báo + số lượng mục cần xử lý
|
||||
Ví dụ:
|
||||
- [Đơn hàng mới] 15
|
||||
- [Liên hệ mới của khách hàng] 8
|
||||
- [Comment mới chưa duyệt] 5
|
||||
|
||||
### 2. Tóm tắt thông tin:
|
||||
|
||||
Có 2 dạng tóm tắt là **Chỉ số** và **Biểu đồ**
|
||||
|
||||
#### Chỉ số:
|
||||
|
||||
- Doanh thu trong ngày/tuần/tháng/năm
|
||||
- Lợi nhuận trong ngày/tuần/tháng/năm
|
||||
- Số đơn hàng trong ngày/tuần/tháng/năm
|
||||
- Số khách hàng mới trong ngày/tuần/tháng/năm
|
||||
- Số sản phẩm đã bán trong ngày/tuần/tháng/năm
|
||||
- ... Các chỉ số khác
|
||||
|
||||
Cách thể hiện về cơ bản là như hiện tại.
|
||||
|
||||
#### Biểu đồ:
|
||||
|
||||
- Biểu đồ doanh thu theo ngày/tuần/tháng/năm
|
||||
- Biểu đồ số đơn hàng theo ngày/tuần/tháng/năm
|
||||
- Biểu đồ số khách hàng mới theo ngày/tuần/tháng/năm
|
||||
- Biểu đồ lượt truy cập web theo ngày/tuần/tháng/năm
|
||||
- ... Các biểu đồ khác
|
||||
|
||||
Khách hàng có thể tùy chọn hiển thị các chỉ số và biểu đồ mong muốn từ danh sách các chỉ số và biểu đồ được lập sẵn bởi hệ thống.
|
||||
|
||||
Cách thể hiện về cơ bản là như hiện tại.
|
||||
|
||||
### 3. Stream thông tin / thông báo:
|
||||
|
||||
Hiển thị các thông tin, thông báo liên quan tới hoạt động của cửa hàng như: cập nhật đơn hàng, phản hồi khách hàng, cảnh báo lỗi hệ thống, tin tức mới từ ngành hàng, v.v.
|
||||
|
||||
Ví dụ:
|
||||
|
||||
- [Vừa xong] Đơn hàng #12345 đã được xử lý.
|
||||
- [3 phút trước] Khách hàng Nguyễn Văn A đã gửi phản hồi.
|
||||
- [4 phút trước] Hệ thống đã phát hiện lỗi kết nối với cổng thanh toán.
|
||||
- [5 phút trước] Tin tức mới: Xu hướng mua sắm trực tuyến năm 2024.
|
||||
- [12 phút trước] Quản trị viên B đã đăng nhập vào hệ thống.
|
||||
- [33 phút trước] Cập nhật sản phẩm mới: Sản phẩm XYZ đã được thêm vào kho hàng.
|
||||
- ... Các thông tin, thông báo khác
|
||||
|
||||
## Cột 2: Vùng làm việc cá nhân (fix cứng độ rộng = 450px)
|
||||
|
||||
Khu vực này dành cho người dùng thực hiện các tác vụ cá nhân như:
|
||||
|
||||
### 1. To-do list cá nhân:
|
||||
|
||||
- Danh sách công việc cá nhân cần hoàn thành.
|
||||
- Tùy chọn đánh dấu công việc đã hoàn thành.
|
||||
- Tùy chọn thêm, sửa, xóa công việc.
|
||||
|
||||
### 2. Ghi chú nhanh:
|
||||
|
||||
- Khu vực để người dùng ghi chú nhanh các ý tưởng, thông tin quan trọng.
|
||||
- Tùy chọn lưu, chỉnh sửa, xóa ghi chú.
|
||||
|
||||
### 3. Ticket hỗ trợ từ HuraSoft:
|
||||
|
||||
- Hiển thị danh sách các ticket hỗ trợ mà người dùng đã gửi đến HuraSoft.
|
||||
- Tùy chọn xem chi tiết, cập nhật trạng thái ticket.
|
||||
- Tùy chọn tạo ticket hỗ trợ mới.
|
||||
|
||||
### 4. Liên kết nhanh:
|
||||
|
||||
- Danh sách các liên kết nhanh đến các trang quản trị quan trọng như: Quản lý sản phẩm, Quản lý đơn hàng, Quản lý khách hàng, Báo cáo doanh thu, Cài đặt hệ thống, v.v.
|
||||
- Tùy chọn thêm, sửa, xóa liên kết nhanh.
|
||||
BIN
old/assets/images/arrow.png
Normal file
|
After Width: | Height: | Size: 166 B |
BIN
old/assets/images/avatars/1.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
old/assets/images/avatars/10.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
old/assets/images/avatars/2.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
old/assets/images/avatars/3.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
old/assets/images/avatars/4.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
old/assets/images/avatars/5.png
Normal file
|
After Width: | Height: | Size: 19 KiB |