first
This commit is contained in:
3
layouts/bs4-default/LICENSE
Normal file
3
layouts/bs4-default/LICENSE
Normal file
@@ -0,0 +1,3 @@
|
||||
The RBL License
|
||||
|
||||
Copyright (c) 2020 Redblock, Inc.
|
||||
3
layouts/bs4-default/README.md
Normal file
3
layouts/bs4-default/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# 데스크탑 기본형 레이아웃
|
||||
|
||||
## 부트스트랩 4
|
||||
692
layouts/bs4-default/_css/article.css
Normal file
692
layouts/bs4-default/_css/article.css
Normal file
@@ -0,0 +1,692 @@
|
||||
@charset "utf-8";
|
||||
.rb-article {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
text-size-adjust: 100%;
|
||||
line-height: 1.6;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.rb-article a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.rb-article a:active,
|
||||
.rb-article a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.rb-article strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rb-article h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
.rb-article img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.rb-article hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.rb-article pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.rb-article code,
|
||||
.rb-article kbd,
|
||||
.rb-article pre {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.rb-article input {
|
||||
color: inherit;
|
||||
font: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.rb-article html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.rb-article input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.rb-article input[type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rb-article table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.rb-article td,
|
||||
.rb-article th {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rb-article * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rb-article input {
|
||||
font: 13px / 1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
}
|
||||
|
||||
.rb-article a {
|
||||
color: #4078c0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.rb-article a:hover,
|
||||
.rb-article a:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.rb-article hr {
|
||||
height: 0;
|
||||
margin: 15px 0;
|
||||
overflow: hidden;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.rb-article hr:before {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.rb-article hr:after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.rb-article h1,
|
||||
.rb-article h2,
|
||||
.rb-article h3,
|
||||
.rb-article h4,
|
||||
.rb-article h5,
|
||||
.rb-article h6 {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.rb-article h1 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.rb-article h2 {
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
.rb-article h3 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.rb-article h4 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.rb-article h5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.rb-article h6 {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.rb-article blockquote {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.rb-article ul,
|
||||
.rb-article ol {
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.rb-article ol ol,
|
||||
.rb-article ul ol {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
|
||||
.rb-article ul ul ol,
|
||||
.rb-article ul ol ol,
|
||||
.rb-article ol ul ol,
|
||||
.rb-article ol ol ol {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
.rb-article dd {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.rb-article code {
|
||||
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.rb-article pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
}
|
||||
|
||||
.rb-article .select::-ms-expand {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.rb-article .octicon {
|
||||
font: normal normal normal 16px/1 octicons-link;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.rb-article .octicon-link:before {
|
||||
content: '\f05c';
|
||||
}
|
||||
|
||||
.rb-article:before {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.rb-article:after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.rb-article>*:first-child {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.rb-article>*:last-child {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.rb-article a:not([href]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.rb-article .anchor {
|
||||
display: inline-block;
|
||||
padding-right: 2px;
|
||||
margin-left: -18px;
|
||||
}
|
||||
|
||||
.rb-article .anchor:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.rb-article h1,
|
||||
.rb-article h2,
|
||||
.rb-article h3,
|
||||
.rb-article h4,
|
||||
.rb-article h5,
|
||||
.rb-article h6 {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 16px;
|
||||
font-weight: bold;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.rb-article h1 .octicon-link,
|
||||
.rb-article h2 .octicon-link,
|
||||
.rb-article h3 .octicon-link,
|
||||
.rb-article h4 .octicon-link,
|
||||
.rb-article h5 .octicon-link,
|
||||
.rb-article h6 .octicon-link {
|
||||
color: #000;
|
||||
vertical-align: middle;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.rb-article h1:hover .anchor,
|
||||
.rb-article h2:hover .anchor,
|
||||
.rb-article h3:hover .anchor,
|
||||
.rb-article h4:hover .anchor,
|
||||
.rb-article h5:hover .anchor,
|
||||
.rb-article h6:hover .anchor {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.rb-article h1:hover .anchor .octicon-link,
|
||||
.rb-article h2:hover .anchor .octicon-link,
|
||||
.rb-article h3:hover .anchor .octicon-link,
|
||||
.rb-article h4:hover .anchor .octicon-link,
|
||||
.rb-article h5:hover .anchor .octicon-link,
|
||||
.rb-article h6:hover .anchor .octicon-link {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.rb-article h1 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 2.25em;
|
||||
line-height: 1.2;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.rb-article h1 .anchor {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.rb-article h2 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.75em;
|
||||
line-height: 1.225;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.rb-article h2 .anchor {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.rb-article h3 {
|
||||
font-size: 1.5em;
|
||||
line-height: 1.43;
|
||||
}
|
||||
|
||||
.rb-article h3 .anchor {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.rb-article h4 {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
.rb-article h4 .anchor {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.rb-article h5 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.rb-article h5 .anchor {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.rb-article h6 {
|
||||
font-size: 1em;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.rb-article h6 .anchor {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.rb-article p,
|
||||
.rb-article blockquote,
|
||||
.rb-article ul,
|
||||
.rb-article ol,
|
||||
.rb-article dl,
|
||||
.rb-article table,
|
||||
.rb-article pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 20px;
|
||||
line-height: 24px
|
||||
}
|
||||
|
||||
.rb-article hr {
|
||||
height: 4px;
|
||||
padding: 0;
|
||||
margin: 16px 0;
|
||||
background-color: #e7e7e7;
|
||||
border: 0 none;
|
||||
}
|
||||
|
||||
.rb-article ul,
|
||||
.rb-article ol {
|
||||
padding-left: 2em;
|
||||
}
|
||||
|
||||
.rb-article ul ul,
|
||||
.rb-article ul ol,
|
||||
.rb-article ol ol,
|
||||
.rb-article ol ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.rb-article li>p {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.rb-article dl {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rb-article dl dt {
|
||||
padding: 0;
|
||||
margin-top: 16px;
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rb-article dl dd {
|
||||
padding: 0 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.rb-article blockquote {
|
||||
padding: 0 15px;
|
||||
color: #333;
|
||||
border-left: 4px solid #ddd;
|
||||
}
|
||||
|
||||
.rb-article blockquote>:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.rb-article blockquote>:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.rb-article table {
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
word-break: normal;
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
.rb-article table th {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rb-article table th,
|
||||
.rb-article table td {
|
||||
padding: 6px 13px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.rb-article table tr {
|
||||
background-color: #fff;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.rb-article img {
|
||||
max-width: 100%;
|
||||
box-sizing: content-box;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.rb-article video,
|
||||
.rb-article audio {
|
||||
min-width: 100%;
|
||||
margin-bottom: 2rem;
|
||||
background-color: #ccc
|
||||
}
|
||||
|
||||
.rb-article video {
|
||||
background: #ccc url("video-box.png") no-repeat center center
|
||||
}
|
||||
|
||||
.rb-blog-view .rb-article video {
|
||||
background: #fff url("") no-repeat center center
|
||||
}
|
||||
|
||||
.rb-article video source::before {
|
||||
content: 'videos';
|
||||
text-align: center
|
||||
}
|
||||
|
||||
.rb-article code {
|
||||
padding: 0;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
margin: 0;
|
||||
font-size: 85%;
|
||||
background-color: rgba(0,0,0,0.04);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.rb-article code:before,
|
||||
.rb-article code:after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0";
|
||||
}
|
||||
|
||||
.rb-article pre>code {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
word-break: normal;
|
||||
white-space: pre;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.rb-article .highlight {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.rb-article .highlight pre,
|
||||
.rb-article pre {
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
font-size: 85%;
|
||||
line-height: 1.45;
|
||||
background-color: #f7f7f7;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.rb-article .highlight pre {
|
||||
margin-bottom: 0;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.rb-article pre {
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
||||
.rb-article pre code {
|
||||
display: inline;
|
||||
max-width: initial;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: initial;
|
||||
line-height: inherit;
|
||||
word-wrap: normal;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.rb-article pre code:before,
|
||||
.rb-article pre code:after {
|
||||
content: normal;
|
||||
}
|
||||
|
||||
.rb-article kbd {
|
||||
display: inline-block;
|
||||
padding: 3px 5px;
|
||||
font-size: 11px;
|
||||
line-height: 10px;
|
||||
color: #555;
|
||||
vertical-align: middle;
|
||||
background-color: #fcfcfc;
|
||||
border: solid 1px #ccc;
|
||||
border-bottom-color: #bbb;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #bbb;
|
||||
}
|
||||
|
||||
.rb-article .pl-c {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.rb-article .pl-c1,
|
||||
.rb-article .pl-s .pl-v {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.rb-article .pl-e,
|
||||
.rb-article .pl-en {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.rb-article .pl-s .pl-s1,
|
||||
.rb-article .pl-smi {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.rb-article .pl-ent {
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.rb-article .pl-k {
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.rb-article .pl-pds,
|
||||
.rb-article .pl-s,
|
||||
.rb-article .pl-s .pl-pse .pl-s1,
|
||||
.rb-article .pl-sr,
|
||||
.rb-article .pl-sr .pl-cce,
|
||||
.rb-article .pl-sr .pl-sra,
|
||||
.rb-article .pl-sr .pl-sre {
|
||||
color: #183691;
|
||||
}
|
||||
|
||||
.rb-article .pl-v {
|
||||
color: #ed6a43;
|
||||
}
|
||||
|
||||
.rb-article .pl-id {
|
||||
color: #b52a1d;
|
||||
}
|
||||
|
||||
.rb-article .pl-ii {
|
||||
background-color: #b52a1d;
|
||||
color: #f8f8f8;
|
||||
}
|
||||
|
||||
.rb-article .pl-sr .pl-cce {
|
||||
color: #63a35c;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rb-article .pl-ml {
|
||||
color: #693a17;
|
||||
}
|
||||
|
||||
.rb-article .pl-mh,
|
||||
.rb-article .pl-mh .pl-en,
|
||||
.rb-article .pl-ms {
|
||||
color: #1d3e81;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rb-article .pl-mq {
|
||||
color: #008080;
|
||||
}
|
||||
|
||||
.rb-article .pl-mi {
|
||||
color: #333;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.rb-article .pl-mb {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rb-article .pl-md {
|
||||
background-color: #ffecec;
|
||||
color: #bd2c00;
|
||||
}
|
||||
|
||||
.rb-article .pl-mi1 {
|
||||
background-color: #eaffea;
|
||||
color: #55a532;
|
||||
}
|
||||
|
||||
.rb-article .pl-mdr {
|
||||
color: #795da3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rb-article .pl-mo {
|
||||
color: #1d3e81;
|
||||
}
|
||||
|
||||
.rb-article kbd {
|
||||
display: inline-block;
|
||||
padding: 3px 5px;
|
||||
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
line-height: 10px;
|
||||
color: #555;
|
||||
vertical-align: middle;
|
||||
background-color: #fcfcfc;
|
||||
border: solid 1px #ccc;
|
||||
border-bottom-color: #bbb;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #bbb;
|
||||
}
|
||||
|
||||
.rb-article .task-list-item {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.rb-article .task-list-item+.task-list-item {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.rb-article .task-list-item input {
|
||||
margin: 0 0.35em 0.25em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.rb-article :checked+.radio-label {
|
||||
z-index: 1;
|
||||
position: relative;
|
||||
border-color: #4078c0;
|
||||
}
|
||||
|
||||
|
||||
/*추가함*/
|
||||
|
||||
.rb-article .rb-media {
|
||||
margin: 0;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.rb-article .rb-media figcaption {
|
||||
margin-top: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
font-size: 14px;
|
||||
color: #777;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.rb-article .rb-media figcaption:before {
|
||||
padding-right: 7px;
|
||||
content: '▲';
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.rb-article figure {
|
||||
margin: 0 0 2rem;
|
||||
}
|
||||
1365
layouts/bs4-default/_css/style.css
Normal file
1365
layouts/bs4-default/_css/style.css
Normal file
File diff suppressed because it is too large
Load Diff
BIN
layouts/bs4-default/_images/icon/favicon.ico
Normal file
BIN
layouts/bs4-default/_images/icon/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
layouts/bs4-default/_images/icon/homescreen.png
Normal file
BIN
layouts/bs4-default/_images/icon/homescreen.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
layouts/bs4-default/_images/icon/ico_facebook.webp
Normal file
BIN
layouts/bs4-default/_images/icon/ico_facebook.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 558 B |
BIN
layouts/bs4-default/_images/icon/ico_instagram.webp
Normal file
BIN
layouts/bs4-default/_images/icon/ico_instagram.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
BIN
layouts/bs4-default/_images/icon/ico_nblog.webp
Normal file
BIN
layouts/bs4-default/_images/icon/ico_nblog.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 894 B |
BIN
layouts/bs4-default/_images/icon/ico_youtube.png
Normal file
BIN
layouts/bs4-default/_images/icon/ico_youtube.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
41
layouts/bs4-default/_includes/_import.control.php
Normal file
41
layouts/bs4-default/_includes/_import.control.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
//사이트별 레이아웃 설정 변수
|
||||
$layout = dirname($_HS['layout']);
|
||||
$g['layoutVarForSite'] = $g['dir_var_site'].'layout.'.$layout.'.var.php';
|
||||
include is_file($g['layoutVarForSite']) ? $g['layoutVarForSite'] : $g['dir_layout'].'_var/_var.php';
|
||||
|
||||
//사이트 부가정보 변수
|
||||
$g['siteinfo'] = $g['dir_var_site'].'siteinfo.php';
|
||||
if (is_file($g['siteinfo'])) include $g['siteinfo'];
|
||||
|
||||
//사이트별 웹앱 매니페스트
|
||||
$g['manifestForSite'] = $g['dir_var_site'].'manifest.json';
|
||||
$g['url_manifest'] = $g['url_var_site'].'/manifest.json';
|
||||
$manifestForSite = file_exists($g['manifestForSite']) ? $g['url_manifest'] : $g['path_module'].'site/var/manifest.json';
|
||||
|
||||
// 레이아웃 내장 메인페이지에 home 레이아웃 적용
|
||||
if (strstr($g['main'],$g['dir_layout']) && !$prelayout && !$layoutPage) {
|
||||
$d['layout']['php'] = $d['layout']['dir'].'/home.php';
|
||||
}
|
||||
|
||||
if (isset($layoutPage)){
|
||||
$g['dir_module_mode'] = $g['dir_layout'].'/_pages/'.$layoutPage;
|
||||
$g['url_module_mode'] = $g['url_layout'].'/_pages/'.$layoutPage;
|
||||
$g['main'] = $g['dir_layout'].'/_pages/'.$layoutPage.'.php';
|
||||
}
|
||||
|
||||
function getLayoutLogo($layout,$mod) {
|
||||
if ($mod=='header') {
|
||||
if ($layout['header_logo']) {
|
||||
return '<a class="navbar-brand p-0" href="'.RW(0).'" style="background-image:url('.$GLOBALS['g']['url_var_site'].'/'.$layout['header_logo'].$GLOBALS['g']['wcache'].');background-size:'.$layout['header_logo_size'].'%;background-position:'.$layout['header_logo_position'].'% 50%"></a>';
|
||||
} else {
|
||||
return '<a class="navbar-brand p-0" href="'.RW(0).'">'.$layout['header_title'].'</a>';
|
||||
}
|
||||
} elseif ($mod=='footer' && $layout['footer_logo']) {
|
||||
return '<div class="footer-logo" style="background-image:url('.$GLOBALS['g']['url_var_site'].'/'.$layout['footer_logo'].$GLOBALS['g']['wcache'].');background-size:'.$layout['footer_logo_size'].'%;'.($layout['footer_logo_gray']=='true'?'filter: grayscale(100%)':'').'"></div>';
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
53
layouts/bs4-default/_includes/_import.foot.php
Normal file
53
layouts/bs4-default/_includes/_import.foot.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<!-- 엔진코드:삭제하지마세요 -->
|
||||
<?php include $g['path_core'].'engine/foot.engine.php'?>
|
||||
|
||||
<!-- 포토모달 : photoswipe http://photoswipe.com/documentation/getting-started.html -->
|
||||
<?php getImport('photoswipe','photoswipe','4.1.1','css') ?>
|
||||
<?php getImport('photoswipe','default-skin/default-skin','4.1.1','css') ?>
|
||||
<?php getImport('photoswipe','photoswipe.min','4.1.1','js') ?>
|
||||
<?php getImport('photoswipe','photoswipe-ui-default.min','4.1.1','js') ?>
|
||||
<script src="<?php echo $g['url_layout']?>/_js/photoswipe.js"></script>
|
||||
|
||||
<!-- 소셜공유시 URL 클립보드저장 : clipboard.js : https://github.com/zenorocha/clipboard.js-->
|
||||
<?php getImport('clipboard','clipboard.min','2.0.4','js') ?>
|
||||
|
||||
<!-- 입력 textarea 자동확장 -->
|
||||
<?php getImport('autosize','autosize.min','3.0.14','js')?>
|
||||
|
||||
<!-- markjs js : https://github.com/julmot/mark.js -->
|
||||
<?php getImport('markjs','jquery.mark.min','8.11.1','js')?>
|
||||
|
||||
<!-- linkifyjs : https://github.com/Soapbox/linkifyjs -->
|
||||
<?php getImport('linkifyjs','linkify.min','2.1.8','js')?>
|
||||
<?php getImport('linkifyjs','linkify-string.min','2.1.8','js')?>
|
||||
|
||||
<!-- bootstrap-notify : https://github.com/mouse0270/bootstrap-notify -->
|
||||
<?php getImport('bootstrap-notify','bootstrap-notify.min','3.1.3','js')?>
|
||||
|
||||
<!-- 댓글출력시 필요 -->
|
||||
<?php if ($g['broswer']!='MSIE 11' && $g['broswer']!='MSIE 10' && $g['broswer']!='MSIE 9'): ?>
|
||||
<?php if ($mod!='write' && $my['uid']): ?>
|
||||
<script src="https://cdn.ckeditor.com/ckeditor5/21.0.0/decoupled-document/ckeditor.js"></script>
|
||||
<script src="https://cdn.ckeditor.com/ckeditor5/21.0.0/decoupled-document/translations/ko.js"></script>
|
||||
<?php endif; ?>
|
||||
<script src="<?php echo $g['url_root']?>/modules/comment/lib/Rb.comment.js<?php echo $g['wcache']?>"></script>
|
||||
<?php else: ?>
|
||||
<script src="<?php echo $g['url_root']?>/modules/comment/lib/Rb.comment.old.js"></script>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
<!-- 레이아웃 공용 스크립트 -->
|
||||
<script src="<?php echo $g['url_layout']?>/_js/main.js<?php echo $g['wcache']?>"></script>
|
||||
|
||||
<?php if($_SERVER['HTTPS'] == 'on' && $g['broswer']!='MSIE 10' && $g['broswer']!='MSIE 11'):?>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator && 'PushManager' in window) {
|
||||
console.log('서비스워커와 푸시가 지원되는 브라우저 입니다.');
|
||||
window.addEventListener('load', () => {
|
||||
navigator.serviceWorker.register('<?php echo $g['s']?>/sw.js');
|
||||
});
|
||||
} else {
|
||||
console.warn('푸시 메시징이 지원되지 않는 브라우저 입니다.');
|
||||
}
|
||||
</script>
|
||||
<?php endif?>
|
||||
74
layouts/bs4-default/_includes/_import.head.php
Normal file
74
layouts/bs4-default/_includes/_import.head.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Seo -->
|
||||
<meta name="robots" content="<?php echo strip_tags($g['meta_bot'])?>">
|
||||
<meta name="title" content="<?php echo strip_tags($g['meta_tit'])?>">
|
||||
<meta name="keywords" content="<?php echo strip_tags($g['meta_key'])?>">
|
||||
<meta name="description" content="<?php echo strip_tags($g['meta_des'])?>">
|
||||
<meta name="author" content="<?php echo $_HS['name'] ?>">
|
||||
|
||||
<link rel="image_src" href="<?php echo strip_tags($g['meta_img'])?>">
|
||||
<link rel="canonical" href="<?php echo strip_tags($g['url_root'].$_SERVER['REQUEST_URI'])?>">
|
||||
|
||||
<meta property="og:site_name" content="<?php echo $_HS['name'] ?>">
|
||||
<meta property="og:locale" content="ko_KR">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="<?php echo strip_tags($g['url_root'].$_SERVER['REQUEST_URI'])?>">
|
||||
<meta property="og:title" content="<?php echo strip_tags($g['meta_tit'])?>">
|
||||
<meta property="og:description" content="<?php echo strip_tags($g['meta_des'])?>">
|
||||
<meta property="og:image" content="<?php echo strip_tags($g['meta_img'])?>">
|
||||
|
||||
<title><?php echo $g['browtitle']?></title>
|
||||
|
||||
<!-- 파비콘 -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="<?php echo $g['img_layout']?>/icon/homescreen.png">
|
||||
<link rel="shortcut icon" href="<?php echo $g['img_layout']?>/icon/favicon.ico">
|
||||
|
||||
<!-- 웹앱 매니페스트 -->
|
||||
<link rel="manifest" href="<?php echo $manifestForSite?>">
|
||||
|
||||
<!-- 사이트 헤드 코드 -->
|
||||
<?php echo $_HS['headercode']?>
|
||||
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
|
||||
<!-- bootstrap css -->
|
||||
<?php getImport('bootstrap','css/bootstrap.min','4.4.1','css')?>
|
||||
|
||||
<!-- jQuery -->
|
||||
<?php getImport('jquery','jquery.min','3.3.1','js')?>
|
||||
|
||||
<?php getImport('popper.js','umd/popper.min','1.14.0','js')?>
|
||||
|
||||
<!-- bootstrap js -->
|
||||
<?php getImport('bootstrap','js/bootstrap.min','4.4.1','js')?>
|
||||
|
||||
<!-- 시스템 폰트 -->
|
||||
<?php getImport('font-awesome','css/font-awesome','4.7.0','css')?>
|
||||
<?php getImport('font-kimsq','css/font-kimsq',false,'css')?>
|
||||
|
||||
<!-- anchorjs : https://github.com/bryanbraun/anchorjs -->
|
||||
<?php getImport('anchorjs','anchor.min','4.2.0','js')?>
|
||||
|
||||
<!-- smooth-scroll: https://github.com/cferdinandi/smooth-scroll -->
|
||||
<?php getImport('smooth-scroll','smooth-scroll.polyfills.min','16.1.0','js') ?>
|
||||
|
||||
<!-- 엔진코드:삭제하지마세요 -->
|
||||
<?php include $g['path_core'].'engine/cssjs.engine.php' ?>
|
||||
|
||||
<!-- 레이아웃 스타일 -->
|
||||
<link href="<?php echo $g['url_layout']?>/_css/style.css<?php echo $g['wcache']?>" rel="stylesheet">
|
||||
|
||||
<!-- 레이아웃 본문 컨텐츠 스타일 -->
|
||||
<link href="<?php echo $g['s']?>/_core/css/article.css<?php echo $g['wcache']?>" rel="stylesheet">
|
||||
|
||||
<?php
|
||||
if (file_exists($g['dir_layout'].'/_css/custom.css')) {
|
||||
echo '<link href="'.$g['url_layout'].'/_css/custom.css'.$g['wcache'].'" rel="stylesheet">'; // 커스텀 레이아웃 스타일
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- timeago : 상대시간 표기 -->
|
||||
<?php getImport('jquery-timeago','jquery.timeago','1.6.7','js')?>
|
||||
<?php getImport('jquery-timeago','locales/jquery.timeago.ko','1.6.7','js')?>
|
||||
58
layouts/bs4-default/_includes/_linkshare.php
Normal file
58
layouts/bs4-default/_includes/_linkshare.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
// seo 데이타 -- 전송되는 타이틀 추출
|
||||
|
||||
$_MSEO = getDbData($table['s_seo'],'rel=1 and parent='.$_HM['uid'],'*');
|
||||
$_PSEO = getDbData($table['s_seo'],'rel=2 and parent='.$_HP['uid'],'*');
|
||||
$_WTIT=strip_tags($g['meta_tit']);
|
||||
|
||||
//$_link_domain = 'http'.($_SERVER['HTTPS']=='on'?'s':'').'://';
|
||||
//$_link_url = $_link_domain.$_SERVER['REQUEST_URI']; // URL
|
||||
$_link_url=$g['url_root'].$_SERVER['REQUEST_URI'];
|
||||
|
||||
?>
|
||||
|
||||
<ul class="list-inline mb-3">
|
||||
<li data-toggle="tooltip" title="페이스북" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/facebook.png" alt="페이스북공유" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="카카오스토리" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/kakaostory.png" alt="카카오스토리" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="네이버" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/naver.png" alt="네이버" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="트위터" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/twitter.png" alt="트위터" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="메일보내기" class="list-inline-item">
|
||||
<a href="mailto:<?php if($my['uid']):?><?php echo $my['email']?><?php endif?>?subject=경기방송%20기사공유-<?php echo $_WTIT?>&body=<?php echo $_link_url?>">
|
||||
<img src="<?php echo $g['img_core']?>/sns/mail.png" alt="메일" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<script type="text/javascript">
|
||||
// sns 이벤트
|
||||
function snsWin(sns)
|
||||
{
|
||||
var snsset = new Array();
|
||||
var enc_tit = "<?php echo urlencode($_HS['title'])?>";
|
||||
var enc_sbj = "<?php echo urlencode($_WTIT)?>";
|
||||
var enc_url = "<?php echo urlencode($_link_url)?>";
|
||||
var enc_tag = "<?php echo urlencode(str_replace(',',' ',$R['tag']))?>";
|
||||
snsset['t'] = 'https://twitter.com/intent/tweet?url=' + enc_url + '&text=' + enc_sbj;
|
||||
snsset['f'] = 'http://www.facebook.com/sharer.php?u=' + enc_url;
|
||||
snsset['n'] = 'http://share.naver.com/web/shareView.nhn?url=' + enc_url + '&title=' + enc_sbj;
|
||||
snsset['ks'] = 'https://story.kakao.com/share?url=' + enc_url + '&title=' + enc_sbj;
|
||||
window.open(snsset[sns]);
|
||||
}
|
||||
</script>
|
||||
13
layouts/bs4-default/_includes/breadcrumb.type1.php
Normal file
13
layouts/bs4-default/_includes/breadcrumb.type1.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<nav aria-label="breadcrumb" class="border-bottom">
|
||||
<div class="<?php echo $d['layout']['sub_container'] ?> px-0">
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<ol class="breadcrumb mb-0">
|
||||
<?php echo $g['location']?>
|
||||
</ol>
|
||||
<div class="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
7
layouts/bs4-default/_includes/breadcrumb.type2.php
Normal file
7
layouts/bs4-default/_includes/breadcrumb.type2.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<div class="d-flex d-flex justify-content-end">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb mb-0 py-0">
|
||||
<?php echo $g['location']?>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
349
layouts/bs4-default/_includes/component.php
Normal file
349
layouts/bs4-default/_includes/component.php
Normal file
@@ -0,0 +1,349 @@
|
||||
<!--
|
||||
컴포넌트 모음
|
||||
|
||||
1. 일반모달 : 회원가입
|
||||
2. 일반모달 : 로그인
|
||||
3. 일반모달 : 알림
|
||||
4. 일반모달 : 게시물 보기
|
||||
5. 일반모달 : 게시물 쓰기
|
||||
6. 포토모달 : 댓글형
|
||||
7. 포토모달 : 갤러리형
|
||||
8. 마크업 참조: 링크공유
|
||||
-->
|
||||
|
||||
<!-- 1. 일반모달 : 회원가입 -->
|
||||
<?php include_once $g['path_module'].'member/themes/'.$d['member']['theme_main'].'/join/component.php'; ?>
|
||||
|
||||
<!-- 2. 일반모달 : 로그인 -->
|
||||
<?php include_once $g['path_module'].'member/themes/'.$d['member']['theme_main'].'/login/component.php'; ?>
|
||||
|
||||
<!-- 3. 일반모달 : 알림 -->
|
||||
<?php include_once $g['path_module'].'member/themes/'.$d['member']['theme_main'].'/noti/component.php'; ?>
|
||||
|
||||
<!-- 4. 일반모달 : 게시물 보기-->
|
||||
<div class="modal" id="modal-bbs-view" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<input type="hidden" name="bid" value="">
|
||||
<input type="hidden" name="uid" value="">
|
||||
<div class="modal-dialog modal-lg" role="document" style="max-width: 95%">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" data-role="title">게시물 보기</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close" data-toggle="tooltip" title="닫기(Esc)">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body p-0">
|
||||
|
||||
<div class="row no-gutters">
|
||||
<main class="col-7">
|
||||
<div data-role="article"></div>
|
||||
</main>
|
||||
<aside class="col-5 border-left">
|
||||
<div class="commentting-container" data-role="comment-area"></div>
|
||||
<div data-role="comment-alert" class="d-none">
|
||||
<div class="d-flex align-items-center justify-content-center text-muted" style="height: calc(100vh - 9.5rem);">
|
||||
댓글이 지원되지 않습니다.
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div><!-- /.row -->
|
||||
|
||||
</div><!-- /.modal-body -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 5. 일반모달 : 게시물 쓰기 -->
|
||||
<?php
|
||||
if ($m=='bbs') {
|
||||
$bbs_component = $g['path_module'].'bbs/themes/'.$d['bbs']['skin'].'/component.php';
|
||||
if (file_exists($bbs_component)) include_once $bbs_component;
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- 6. 포토모달 : 댓글형 -->
|
||||
<div class="pswp pswp-comment" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<input type="hidden" name="uid" value="">
|
||||
<input type="hidden" name="bid" value="">
|
||||
<div class="pswp__bg"></div>
|
||||
|
||||
<!-- Slides wrapper with overflow:hidden. -->
|
||||
<div class="pswp__scroll-wrap">
|
||||
|
||||
<!-- Container that holds slides.
|
||||
PhotoSwipe keeps only 3 of them in the DOM to save memory.
|
||||
Don't modify these 3 pswp__item elements, data is added later on. -->
|
||||
<div class="pswp__container">
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
</div>
|
||||
|
||||
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
|
||||
<div class="pswp__ui pswp__ui--hidden">
|
||||
|
||||
<div class="pswp__top-bar">
|
||||
|
||||
<!-- Controls are self-explanatory. Order can be changed. -->
|
||||
<div class="pswp__subject">
|
||||
<span data-role="category" class="text-primary"></span>
|
||||
<span data-role="subject"></span>
|
||||
</div>
|
||||
<div class="pswp__counter"></div>
|
||||
<button class="pswp__button pswp__button--fs" data-toggle="tooltip" title="전체 화면으로 보기"></button>
|
||||
|
||||
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
|
||||
<!-- element will get class pswp__preloader-active when preloader is running -->
|
||||
<div class="pswp__preloader">
|
||||
<div class="pswp__preloader__icn">
|
||||
<div class="pswp__preloader__cut">
|
||||
<div class="pswp__preloader__donut"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
|
||||
<div class="pswp__share-tooltip"></div>
|
||||
</div>
|
||||
|
||||
<button class="pswp__button pswp__button--arrow--left" title="이전">
|
||||
</button>
|
||||
|
||||
<button class="pswp__button pswp__button--arrow--right" title="다음">
|
||||
</button>
|
||||
|
||||
<div class="pswp__caption">
|
||||
<div class="pswp__caption__center"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rb__area">
|
||||
<div data-role="article"></div>
|
||||
<div class="commentting-container mt-4" data-role="comment-area"></div>
|
||||
<div data-role="comment-alert" class="d-none">
|
||||
<div class="d-flex align-items-center justify-content-center text-muted" style="height: calc(100vh - 27.5rem);">
|
||||
댓글이 지원되지 않습니다.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="pswp__button pswp__button--close" data-toggle="tooltip" title="닫기(Esc)"></button>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 7. 포토모달 : 갤러리형 -->
|
||||
<div class="pswp pswp-gallery" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
|
||||
<!-- Background of PhotoSwipe.
|
||||
It's a separate element, as animating opacity is faster than rgba(). -->
|
||||
<div class="pswp__bg"></div>
|
||||
|
||||
<!-- Slides wrapper with overflow:hidden. -->
|
||||
<div class="pswp__scroll-wrap">
|
||||
|
||||
<!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. -->
|
||||
<!-- don't modify these 3 pswp__item elements, data is added later on. -->
|
||||
<div class="pswp__container">
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
</div>
|
||||
|
||||
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
|
||||
<div class="pswp__ui pswp__ui--hidden">
|
||||
|
||||
<div class="pswp__top-bar">
|
||||
|
||||
<!-- Controls are self-explanatory. Order can be changed. -->
|
||||
|
||||
<div class="pswp__counter"></div>
|
||||
|
||||
<button class="pswp__button pswp__button--close" title="닫기 (Esc)"></button>
|
||||
|
||||
<button class="pswp__button pswp__button--fs" title="전체화면 보기"></button>
|
||||
|
||||
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
|
||||
|
||||
<!-- Preloader demo https://codepen.io/dimsemenov/pen/yyBWoR -->
|
||||
<!-- element will get class pswp__preloader-active when preloader is running -->
|
||||
<div class="pswp__preloader">
|
||||
<div class="pswp__preloader__icn">
|
||||
<div class="pswp__preloader__cut">
|
||||
<div class="pswp__preloader__donut"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
|
||||
<div class="pswp__share-tooltip"></div>
|
||||
</div>
|
||||
|
||||
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
|
||||
</button>
|
||||
|
||||
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
|
||||
</button>
|
||||
|
||||
<div class="pswp__caption">
|
||||
<div class="pswp__caption__center"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 8. 마크업 참조 : 링크공유 -->
|
||||
<div id="rb-share" hidden>
|
||||
<ul class="share list-inline mt-2 mb-0 mx-2">
|
||||
<li class="list-inline-item text-center">
|
||||
<a href="" role="button" data-role="facebook" target="_blank" class="muted-link">
|
||||
<img src="<?php echo $g['img_core']?>/sns/facebook.png" alt="페이스북공유" class="rounded-circle" style="width: 50px">
|
||||
<p><small>페이스북</small></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item text-center">
|
||||
<a href="" role="button" data-role="kakaostory" target="_blank" class="muted-link">
|
||||
<img src="<?php echo $g['img_core']?>/sns/kakaostory.png" alt="카카오스토리" class="rounded-circle" style="width: 50px">
|
||||
<p><small>카카오스토리</small></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item text-center">
|
||||
<a href="" role="button" data-role="naver" target="_blank" class="muted-link">
|
||||
<img src="<?php echo $g['img_core']?>/sns/naver.png" alt="네이버" class="rounded-circle" style="width: 50px">
|
||||
<p><small>네이버</small></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item text-center">
|
||||
<a href="" role="button" data-role="twitter" target="_blank" class="muted-link">
|
||||
<img src="<?php echo $g['img_core']?>/sns/twitter.png" alt="트위터" class="rounded-circle" style="width: 50px">
|
||||
<p><small>트위터</small></p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="input-group input-group-sm mb-2" hidden>
|
||||
<input type="text" class="form-control" value="" readonly data-role="share" id="share-input">
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-light" type="button"
|
||||
data-plugin="clipboard"
|
||||
data-clipboard-target="#share-input"
|
||||
data-toggle="tooltip" title="클립보드 복사">
|
||||
<i class="fa fa-clipboard"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 레이아웃 위젯 찾아보기 -->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="modal-widget-selector">
|
||||
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">위젯 찾아보기 <span class="badge badge-secondary align-middle"><?php echo $d['layout']['dir'] ?></span></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 400px">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<div class="form-group">
|
||||
<label class="small text-muted">레이아웃 위젯목록</label>
|
||||
<select class="form-control custom-select" name="widget_selector" data-area="">
|
||||
<option>선택하세요.</option>
|
||||
<?php include $g['dir_layout'].'_var/_var.config.php'; ?>
|
||||
<?php $_i=1;foreach($d['layout']['widget'] as $_key => $_val):$__i=sprintf('%02d',$_i)?>
|
||||
<optgroup label="<?php echo $_val[0]?>">
|
||||
<?php foreach($_val[1] as $_v):?>
|
||||
<option value="<?php echo $_key ?>/<?php echo $_v[0]?>"><?php echo $_v[1]?></option>
|
||||
<?php endforeach?>
|
||||
</optgroup>
|
||||
<?php $_i++;endforeach?>
|
||||
|
||||
</select>
|
||||
</div><!-- /.form-group -->
|
||||
|
||||
<div data-role="readme"></div>
|
||||
</div>
|
||||
<div class="col-8 text-center">
|
||||
<div data-role="none">
|
||||
<div class="d-flex justify-content-center align-items-center bg-light" style="height:370px">
|
||||
<div class="text-muted">
|
||||
<i class="fa fa-puzzle-piece" aria-hidden="true" style="color: #ccc;font-size: 100px"></i>
|
||||
<p>위젯을 선택해주세요.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="" alt="" data-role="thumb" class="img-fluid d-none">
|
||||
</div>
|
||||
</div><!-- /.row -->
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-white" data-dismiss="modal">취소</button>
|
||||
<button type="button" class="btn btn-primary" data-act="submit">적용</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 메인화면 꾸미기 게시판생성 -->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="modal-widget-makebbs">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">새 게시판</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label>게시판 아이디</label>
|
||||
<input type="text" class="form-control" name="id" autocomplete="off">
|
||||
<div class="invalid-feedback"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>게시판 이름</label>
|
||||
<input type="text" class="form-control" name="name" autocomplete="off">
|
||||
<div class="invalid-feedback"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-link" data-dismiss="modal">취소</button>
|
||||
<button type="button" class="btn btn-primary" data-act="submit">만들기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 메인화면 꾸미기 리스트 생성 -->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="modal-widget-makelist">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">새 리스트</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label>리스트 이름</label>
|
||||
<input type="text" class="form-control" name="name" autocomplete="off">
|
||||
<div class="invalid-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-link" data-dismiss="modal">취소</button>
|
||||
<button type="button" class="btn btn-primary" data-act="submit">만들기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
83
layouts/bs4-default/_includes/footer.type1.php
Normal file
83
layouts/bs4-default/_includes/footer.type1.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<footer class="footer footer-<?php echo $d['layout']['footer_theme'] ?> mt-auto">
|
||||
|
||||
<div class="<?php echo $d['layout']['footer_container'] ?> px-0">
|
||||
<div class="d-flex justify-content-between">
|
||||
|
||||
<div class="">
|
||||
<?php echo getLayoutLogo($d['layout'],'footer')?>
|
||||
<p>
|
||||
<?php echo $d['layout']['company_name'] ?> <span class="split">|</span> 대표이사 : <?php echo $d['layout']['company_ceo'] ?> <span class="split">|</span> 개인정보 보호 최고책임자 : <?php echo $d['layout']['company_manager'] ?> <br>
|
||||
사업자등록번호 : <?php echo $d['layout']['company_num'] ?> <span class="split">|</span> 통신판매업신고번호 <?php echo $d['layout']['company_num2'] ?> <br>
|
||||
주소 : <?php echo $d['layout']['company_addr'] ?><br>
|
||||
메일 : <?php echo $d['layout']['contact_email'] ?>
|
||||
| 전화 : <?php echo $d['layout']['contact_tel'] ?>
|
||||
<?php echo $d['layout']['contact_fax']?'| 팩스 : '.$d['layout']['contact_fax']:'' ?><br>
|
||||
© <?php echo $d['layout']['company_name']?$d['layout']['company_name']:'company' ?> <?php echo $date['year']?></p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="text-right footer-contact">
|
||||
|
||||
<strong><?php echo $d['layout']['contact_tel'] ?></strong>
|
||||
<p><?php echo $d['layout']['contact_hours'] ?></p>
|
||||
<div class="sns">
|
||||
|
||||
<?php if ($d['layout']['sns_youtube']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_youtube'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_youtube.png" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['layout']['sns_instagram']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_instagram'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_instagram.webp" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['layout']['sns_facebook']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_facebook'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_facebook.webp" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['layout']['sns_nblog']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_nblog'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_nblog.webp" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer-quick">
|
||||
<div class="<?php echo $d['layout']['footer_container'] ?> px-0">
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
|
||||
<ul class="list-inline mb-0">
|
||||
<li class="list-inline-item">
|
||||
<a href="<?php echo RW('mod=policy')?>" class="muted-link">이용약관</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a href="<?php echo RW('mod=privacy')?>" class="muted-link">개인정보취급방침</a>
|
||||
</li>
|
||||
<?php if ($d['layout']['footer_link']) getWidget('bs4-default/site/menu/quickmenu/list-inline',array('smenu'=>$d['layout']['footer_link']));?>
|
||||
</ul>
|
||||
|
||||
<!-- 스탠다드 라이센스 없이는 아래 킴스큐 로고를 삭제할 수 없습니다. -->
|
||||
<div class="text-muted small">
|
||||
powered by <a href="https://kimsq.com" target="_blank" class="text-reset ml-1"><i class="kf kf-bi-01 text-reset"></i></a>
|
||||
</div>
|
||||
|
||||
<?php if ($d['layout']['footer_family']) getWidget('bs4-default/site/menu/quickmenu/dropdown-joint',array('smenu'=>$d['layout']['footer_family']));?>
|
||||
|
||||
</div><!-- /.d-flex -->
|
||||
|
||||
</div><!-- /.container -->
|
||||
</div><!-- /.quick-menu -->
|
||||
|
||||
</footer>
|
||||
85
layouts/bs4-default/_includes/footer.type2.php
Normal file
85
layouts/bs4-default/_includes/footer.type2.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<footer class="footer footer-<?php echo $d['layout']['footer_theme'] ?> mt-auto">
|
||||
|
||||
<div class="<?php echo $d['layout']['footer_container'] ?> px-0">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
|
||||
<?php echo getLayoutLogo($d['layout'],'footer') ?>
|
||||
|
||||
<div class="<?php echo $d['layout']['footer_logo']?'text-center':'' ?>">
|
||||
<ul class="list-inline mb-3">
|
||||
<li class="list-inline-item">
|
||||
<a href="<?php echo RW('mod=policy')?>" class="muted-link">이용약관</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a href="<?php echo RW('mod=privacy')?>" class="muted-link">개인정보취급방침</a>
|
||||
</li>
|
||||
<?php if ($d['layout']['footer_link']) getWidget('bs4-default/site/menu/quickmenu/list-inline',array('smenu'=>$d['layout']['footer_link']));?>
|
||||
</ul>
|
||||
<p>
|
||||
<?php echo $d['layout']['company_name'] ?> <span class="split">|</span> 대표이사 : <?php echo $d['layout']['company_ceo'] ?> <span class="split">|</span> 개인정보 보호 최고책임자 : <?php echo $d['layout']['company_manager'] ?> <br>
|
||||
사업자등록번호 : <?php echo $d['layout']['company_num'] ?> <span class="split">|</span> 통신판매업신고번호 <?php echo $d['layout']['company_num2'] ?> <br>
|
||||
주소 : <?php echo $d['layout']['company_addr'] ?><br>
|
||||
메일 : <?php echo $d['layout']['contact_email'] ?>
|
||||
| 전화 : <?php echo $d['layout']['contact_tel'] ?>
|
||||
<?php echo $d['layout']['contact_fax']?'| 팩스 : '.$d['layout']['contact_fax']:'' ?><br>
|
||||
|
||||
<span class="d-block text-muted mt-2">© <?php echo $d['layout']['company_name']?$d['layout']['company_name']:'company' ?> <?php echo $date['year']?></span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="text-right footer-contact">
|
||||
|
||||
<div class="sns">
|
||||
|
||||
<?php if ($d['layout']['sns_youtube']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_youtube'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_youtube.png" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['layout']['sns_instagram']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_instagram'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_instagram.webp" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['layout']['sns_facebook']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_facebook'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_facebook.webp" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['layout']['sns_nblog']): ?>
|
||||
<a href="<?php echo $d['layout']['sns_nblog'] ?>" target="_blank">
|
||||
<img src="<?php echo $g['img_layout']?>/icon/ico_nblog.webp" alt="">
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
|
||||
<?php if ($d['layout']['footer_family']): ?>
|
||||
<!-- 패밀리 사이트 -->
|
||||
<div class="mt-4">
|
||||
<?php getWidget('bs4-default/site/menu/quickmenu/dropdown-joint',array('smenu'=>$d['layout']['footer_family']));?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 스탠다드 라이센스 없이는 아래 킴스큐 로고를 삭제할 수 없습니다. -->
|
||||
<div class="footer-quick">
|
||||
<div class="<?php echo $d['layout']['footer_container'] ?> px-0">
|
||||
<div class="text-center">
|
||||
<div class="text-muted small">
|
||||
powered by <a href="https://kimsq.com" target="_blank" class="text-reset ml-1"><i class="kf kf-bi-01 text-reset"></i></a>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /.container -->
|
||||
</div><!-- /.quick-menu -->
|
||||
|
||||
</footer>
|
||||
44
layouts/bs4-default/_includes/footer.type3.php
Normal file
44
layouts/bs4-default/_includes/footer.type3.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<footer class="footer footer-<?php echo $d['layout']['footer_theme'] ?> mt-auto border-top-0">
|
||||
|
||||
<div class="footer-quick">
|
||||
<div class="<?php echo $d['layout']['footer_container'] ?> px-0">
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
|
||||
<ul class="list-inline mb-0">
|
||||
<li class="list-inline-item">
|
||||
<a href="<?php echo RW('mod=policy')?>" class="muted-link">이용약관</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a href="<?php echo RW('mod=privacy')?>" class="muted-link">개인정보취급방침</a>
|
||||
</li>
|
||||
<?php if ($d['layout']['footer_link']) getWidget('bs4-default/site/menu/quickmenu/list-inline',array('smenu'=>$d['layout']['footer_link']));?>
|
||||
</ul>
|
||||
|
||||
<!-- 스탠다드 라이센스 없이는 아래 킴스큐 로고를 삭제할 수 없습니다. -->
|
||||
<div class="text-muted">
|
||||
© <?php echo $d['layout']['company_name']?$d['layout']['company_name']:'company' ?> <?php echo $date['year']?>
|
||||
</div>
|
||||
|
||||
<?php if ($d['layout']['footer_family']): ?>
|
||||
<!-- 패밀리 사이트 -->
|
||||
<?php getWidget('bs4-default/site/menu/quickmenu/dropdown-joint',array('smenu'=>$d['layout']['footer_family']));?>
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.d-flex -->
|
||||
|
||||
</div><!-- /.container -->
|
||||
</div><!-- /.quick-menu -->
|
||||
|
||||
<!-- 스탠다드 라이센스 없이는 아래 킴스큐 로고를 삭제할 수 없습니다. -->
|
||||
<div class="footer-quick">
|
||||
<div class="<?php echo $d['layout']['footer_container'] ?> px-0">
|
||||
<div class="text-center">
|
||||
<div class="text-muted small">
|
||||
powered by <a href="https://kimsq.com" target="_blank" class="text-reset ml-1"><i class="kf kf-bi-01 text-reset"></i></a>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /.container -->
|
||||
</div><!-- /.quick-menu -->
|
||||
|
||||
</footer>
|
||||
41
layouts/bs4-default/_includes/header.docs.php
Normal file
41
layouts/bs4-default/_includes/header.docs.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<header class="header">
|
||||
|
||||
<div class="container-fluid px-0">
|
||||
<div class="d-flex justify-content-between align-items-center navbar p-0">
|
||||
|
||||
<h1 class="my-0 h5 font-weight-normal">
|
||||
<a class="navbar-brand" href="<?php echo RW(0) ?>"
|
||||
style="background-image:url(<?php echo $d['layout']['header_logo']?$g['url_var_site'].'/'.$d['layout']['header_logo'].$g['wcache']:''?>);background-size:<?php echo $d['layout']['header_logo_size'] ?>%">
|
||||
<?php echo !$d['layout']['header_logo']?$d['layout']['header_title'] :'' ?>
|
||||
</a>
|
||||
</h1>
|
||||
|
||||
<div class="form-inline">
|
||||
<?php if ($d['layout']['header_search']=='true'):?>
|
||||
<form action="<?php echo $_HS['rewrite']? RW('m=search'):$g['s'].'/'?>" role="search">
|
||||
<?php if (!$_HS['rewrite']): ?>
|
||||
<input type="hidden" name="r" value="<?php echo $r ?>">
|
||||
<input type="hidden" name="m" value="search">
|
||||
<?php endif; ?>
|
||||
<input class="form-control mr-sm-2" type="search" placeholder="통합검색" aria-label="Search" name="q" value="<?php echo $q ?>" autocomplete="off">
|
||||
</form>
|
||||
<?php endif?>
|
||||
|
||||
<ul class="nav">
|
||||
<?php if ($my['uid']): ?>
|
||||
|
||||
<?php else: ?>
|
||||
<?php if ($d['layout']['login_type']=='modal'): ?>
|
||||
<a class="nav-link" href="#modal-login" data-toggle="modal">로그인</a>
|
||||
<?php else: ?>
|
||||
<a class="nav-link" href="<?php echo RW('mod=login')?>">로그인</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /.container -->
|
||||
|
||||
</header>
|
||||
107
layouts/bs4-default/_includes/header.type1.php
Normal file
107
layouts/bs4-default/_includes/header.type1.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<header class="header">
|
||||
|
||||
<div class="<?php echo $d['layout']['header_container'] ?> px-0">
|
||||
<div class="d-flex align-items-center navbar p-0">
|
||||
|
||||
<?php echo getLayoutLogo($d['layout'],'header')?>
|
||||
|
||||
<div class="inner mr-auto flex-fill">
|
||||
|
||||
<ul class="nav" data-role="menu">
|
||||
<?php if ($d['layout']['header_allcat']=='true'): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/c/1">
|
||||
<i class="material-icons align-text-bottom">menu</i>
|
||||
전체 카테고리
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php getWidget('bs4-default/site/menu/navbar/'.$d['layout']['header_menu'],array('smenu'=>'0','limit'=>$d['layout']['header_menu_limit'],'dropdown'=>'1',));?>
|
||||
</ul>
|
||||
|
||||
<?php if ($d['layout']['header_search']=='button'):?>
|
||||
<form class="form-inline" action="<?php echo $_HS['rewrite']? RW('m=search'):$g['s'].'/'?>" role="search" data-role="searchbox">
|
||||
<?php if (!$_HS['rewrite']): ?>
|
||||
<input type="hidden" name="r" value="<?php echo $r ?>">
|
||||
<input type="hidden" name="m" value="search">
|
||||
<?php endif; ?>
|
||||
<div class="input-group input-group-lg dropdown border-0 w-100">
|
||||
<input type="text" name="q" class="form-control bg-white border-0 rounded-0" value="<?php echo $q ?>" data-plugin="autocomplete" autocomplete="off" required="" placeholder="검색어를 입력해주세요.">
|
||||
</div>
|
||||
</form>
|
||||
<?php endif?>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-inline">
|
||||
|
||||
<?php if ($d['layout']['header_search']=='input'):?>
|
||||
<form action="<?php echo $_HS['rewrite']? RW('m=search'):$g['s'].'/'?>" role="search">
|
||||
<?php if (!$_HS['rewrite']): ?>
|
||||
<input type="hidden" name="r" value="<?php echo $r ?>">
|
||||
<input type="hidden" name="m" value="search">
|
||||
<?php endif; ?>
|
||||
<input class="form-control mr-sm-2" type="search" placeholder="통합검색" aria-label="Search" name="q" value="<?php echo $q ?>" autocomplete="off">
|
||||
</form>
|
||||
<?php elseif ($d['layout']['header_search']=='button'): ?>
|
||||
<button type="button" class="btn btn-link text-muted" data-toggle="searchbox">
|
||||
<i class="fa fa-search fa-lg" aria-hidden="true"></i>
|
||||
</button>
|
||||
<?php endif?>
|
||||
|
||||
<?php if ($d['layout']['header_login']=='true'): ?>
|
||||
<ul class="nav">
|
||||
<?php if ($my['uid']): ?>
|
||||
<div class="dropdown">
|
||||
<button class="nav-link btn btn-link dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $my['email'] ?>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
||||
<span class="dropdown-menu-arrow"></span>
|
||||
<h6 class="dropdown-header"><?php echo $my['nic'] ?> 님</h6>
|
||||
|
||||
<?php if ($d['post']['writeperm']): ?>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('m=post&mod=write')?>">
|
||||
새 포스트
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('mod=dashboard')?>">
|
||||
대시보드
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo getProfileLink($my['uid'])?>">
|
||||
프로필
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('mod=settings')?>">
|
||||
설정
|
||||
</a>
|
||||
<button class="dropdown-item" type="button" data-act="logout" role="button">
|
||||
로그아웃
|
||||
</button>
|
||||
<?php if ($my['admin']): ?>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="/admin" target="_top">관리자모드</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<?php if ($d['layout']['login_type']=='modal'): ?>
|
||||
<a class="nav-link" href="#modal-login" data-toggle="modal">로그인</a>
|
||||
<?php else: ?>
|
||||
<a class="nav-link" href="<?php echo RW('mod=login')?>">로그인</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /.container -->
|
||||
|
||||
</header>
|
||||
123
layouts/bs4-default/_includes/header.type2.php
Normal file
123
layouts/bs4-default/_includes/header.type2.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<header class="header">
|
||||
|
||||
<div class="border-bottom position-relative">
|
||||
<div class="<?php echo $d['layout']['header_container'] ?> px-0">
|
||||
<div class="d-flex justify-content-between align-items-center py-1">
|
||||
<div class=""></div>
|
||||
<div class="">
|
||||
<nav class="nav top-nav">
|
||||
|
||||
<?php if ($d['layout']['header_login']=='true'): ?>
|
||||
|
||||
<?php if (!$my['uid']): ?>
|
||||
|
||||
<?php if ($d['layout']['login_type']=='modal'): ?>
|
||||
<a class="nav-link" href="#modal-login" data-toggle="modal">로그인</a>
|
||||
<?php else: ?>
|
||||
<a class="nav-link" href="<?php echo RW('mod=login')?>">로그인</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<a class="nav-link" href="#modal-join" data-toggle="modal" data-backdrop="static">회원가입</a>
|
||||
<?php else: ?>
|
||||
|
||||
<div class="dropdown">
|
||||
<button class="nav-link btn btn-link dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $my['email'] ?>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
||||
<span class="dropdown-menu-arrow"></span>
|
||||
<h6 class="dropdown-header"><?php echo $my['nic'] ?> 님</h6>
|
||||
|
||||
<?php if ($d['post']['writeperm']): ?>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('m=post&mod=write')?>">
|
||||
새 포스트
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('mod=dashboard')?>">
|
||||
대시보드
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo getProfileLink($my['uid'])?>">
|
||||
프로필
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('mod=settings')?>">
|
||||
설정
|
||||
</a>
|
||||
<button class="dropdown-item" type="button" data-act="logout" role="button">
|
||||
로그아웃
|
||||
</button>
|
||||
<?php if ($my['admin']): ?>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="/admin" target="_top">관리자모드</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<a class="nav-link" href="<?php echo RW('mod=cscenter')?>">고객센터</a>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="<?php echo $d['layout']['header_container'] ?> px-0">
|
||||
<div class="d-flex align-items-center navbar p-0">
|
||||
|
||||
<?php echo getLayoutLogo($d['layout'],'header')?>
|
||||
|
||||
<div class="inner mr-auto flex-fill">
|
||||
|
||||
<ul class="nav" data-role="menu">
|
||||
<?php if ($d['layout']['header_allcat']=='true'): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/c/1">
|
||||
<i class="material-icons align-text-bottom">menu</i>
|
||||
전체 카테고리
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php getWidget('bs4-default/site/menu/navbar/'.$d['layout']['header_menu'],array('smenu'=>'0','limit'=>$d['layout']['header_menu_limit'],'dropdown'=>'1',));?>
|
||||
</ul>
|
||||
|
||||
<?php if ($d['layout']['header_search']=='button'):?>
|
||||
<form class="form-inline" action="<?php echo $_HS['rewrite']? RW('m=search'):$g['s'].'/'?>" role="search" data-role="searchbox">
|
||||
<?php if (!$_HS['rewrite']): ?>
|
||||
<input type="hidden" name="r" value="<?php echo $r ?>">
|
||||
<input type="hidden" name="m" value="search">
|
||||
<?php endif; ?>
|
||||
<div class="input-group input-group-lg dropdown border-0 w-100">
|
||||
<input type="text" name="q" class="form-control bg-white border-0 rounded-0" value="<?php echo $q ?>" data-plugin="autocomplete" autocomplete="off" required="" placeholder="검색어를 입력해주세요.">
|
||||
</div>
|
||||
</form>
|
||||
<?php endif?>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-inline">
|
||||
<?php if ($d['layout']['header_search']=='input'):?>
|
||||
<form action="<?php echo $_HS['rewrite']? RW('m=search'):$g['s'].'/'?>" role="search">
|
||||
<?php if (!$_HS['rewrite']): ?>
|
||||
<input type="hidden" name="r" value="<?php echo $r ?>">
|
||||
<input type="hidden" name="m" value="search">
|
||||
<?php endif; ?>
|
||||
<input class="form-control mr-sm-2" type="search" placeholder="통합검색" aria-label="Search" name="q" value="<?php echo $q ?>" autocomplete="off">
|
||||
</form>
|
||||
<?php elseif ($d['layout']['header_search']=='button'): ?>
|
||||
<button type="button" class="btn btn-link text-muted" data-toggle="searchbox">
|
||||
<i class="fa fa-search fa-lg" aria-hidden="true"></i>
|
||||
</button>
|
||||
<?php endif?>
|
||||
</div>
|
||||
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /.container -->
|
||||
|
||||
</header>
|
||||
112
layouts/bs4-default/_includes/header.type3.php
Normal file
112
layouts/bs4-default/_includes/header.type3.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<header class="header">
|
||||
|
||||
<div class="<?php echo $d['layout']['header_container'] ?> px-0">
|
||||
<div class="d-flex justify-content-between align-items-center pt-1">
|
||||
<div class=""></div>
|
||||
<div class="">
|
||||
<nav class="nav top-nav">
|
||||
|
||||
<?php if (!$my['uid']): ?>
|
||||
|
||||
<?php if ($d['layout']['login_type']=='modal'): ?>
|
||||
<a class="nav-link" href="#modal-login" data-toggle="modal">로그인</a>
|
||||
<?php else: ?>
|
||||
<a class="nav-link" href="<?php echo RW('mod=login')?>">로그인</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<a class="nav-link" href="#modal-join" data-toggle="modal" data-backdrop="static">회원가입</a>
|
||||
<?php else: ?>
|
||||
<div class="dropdown">
|
||||
<button class="nav-link btn btn-link dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $my['email'] ?>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
||||
<span class="dropdown-menu-arrow"></span>
|
||||
<h6 class="dropdown-header"><?php echo $my['nic'] ?> 님</h6>
|
||||
|
||||
<?php if ($d['post']['writeperm']): ?>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('m=post&mod=write')?>">
|
||||
새 포스트
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('mod=dashboard')?>">
|
||||
대시보드
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo getProfileLink($my['uid'])?>">
|
||||
프로필
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo RW('mod=settings')?>">
|
||||
설정
|
||||
</a>
|
||||
<button class="dropdown-item" type="button" data-act="logout" role="button">
|
||||
로그아웃
|
||||
</button>
|
||||
<?php if ($my['admin']): ?>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="/admin" target="_top">관리자모드</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<a class="nav-link" href="<?php echo RW('mod=cscenter')?>">고객센터</a>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="<?php echo $d['layout']['header_container'] ?> px-0">
|
||||
<div class="d-flex justify-content-start align-items-center navbar p-0">
|
||||
|
||||
<?php echo getLayoutLogo($d['layout'],'header')?>
|
||||
|
||||
<div class="ml-3" >
|
||||
<form class="form-inline" action="<?php echo $_HS['rewrite']? RW('m=search'):$g['s'].'/'?>" role="search" data-role="searchform">
|
||||
<?php if (!$_HS['rewrite']): ?>
|
||||
<input type="hidden" name="r" value="<?php echo $r ?>">
|
||||
<input type="hidden" name="m" value="search">
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="input-group input-group-lg dropdown shadow-sm">
|
||||
<input type="search" name="q" class="form-control bg-white border-0 rounded-0" value="<?php echo $q ?>" data-plugin="autocomplete" autocomplete="off" required="">
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-white border-0 rounded-0" type="submit"><i class="fa fa-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto">
|
||||
<a href="https://pf.kakao.com/_XrQxkM" taget="_blank">
|
||||
<img src="https://t1.daumcdn.net/daumtop_deco/banner/corona19_G.png" width="260" height="84" class="img_thumb" alt="광고 신종코로나바이러스감염증 예방수칙">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /.container -->
|
||||
|
||||
<section class="border-top" style="margin-left:-15px;margin-right:-15px">
|
||||
<div class="inner">
|
||||
<div class="<?php echo $d['layout']['header_container'] ?> px-0">
|
||||
<ul class="nav nav-fill" data-role="menu">
|
||||
<?php if ($d['layout']['header_allcat']=='true'): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/c/1">
|
||||
<i class="material-icons align-text-bottom">menu</i>
|
||||
전체 카테고리
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php getWidget('bs4-default/site/menu/navbar/'.$d['layout']['header_menu'],array('smenu'=>'0','limit'=>$d['layout']['header_menu_limit'],'dropdown'=>'1',));?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
57
layouts/bs4-default/_includes/linkshare.php
Normal file
57
layouts/bs4-default/_includes/linkshare.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
// seo 데이타 -- 전송되는 타이틀 추출
|
||||
|
||||
$_MSEO = getDbData($table['s_seo'],'rel=1 and parent='.$_HM['uid'],'*');
|
||||
$_PSEO = getDbData($table['s_seo'],'rel=2 and parent='.$_HP['uid'],'*');
|
||||
$_WTIT=strip_tags($g['meta_tit']);
|
||||
|
||||
//$_link_domain = 'http'.($_SERVER['HTTPS']=='on'?'s':'').'://';
|
||||
//$_link_url = $_link_domain.$_SERVER['REQUEST_URI']; // URL
|
||||
$_link_url=$g['url_root'].$_SERVER['REQUEST_URI'];
|
||||
|
||||
?>
|
||||
|
||||
<ul class="list-inline mb-3">
|
||||
<li data-toggle="tooltip" title="페이스북" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/facebook.png" alt="페이스북공유" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="카카오스토리" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/kakaostory.png" alt="카카오스토리" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="네이버" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/naver.png" alt="네이버" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="트위터" class="list-inline-item">
|
||||
<a href="" role="button">
|
||||
<img src="<?php echo $g['img_core']?>/sns/twitter.png" alt="트위터" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" title="메일보내기" class="list-inline-item">
|
||||
<a href="mailto:<?php if($my['uid']):?><?php echo $my['email']?><?php endif?>?subject=경기방송%20기사공유-<?php echo $_WTIT?>&body=<?php echo $_link_url?>">
|
||||
<img src="<?php echo $g['img_core']?>/sns/mail.png" alt="메일" class="rounded-circle" width="48">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
// sns 이벤트
|
||||
function snsWin(sns)
|
||||
{
|
||||
var snsset = new Array();
|
||||
var enc_tit = "<?php echo urlencode($_HS['title'])?>";
|
||||
var enc_sbj = "<?php echo urlencode($_WTIT)?>";
|
||||
var enc_url = "<?php echo urlencode($_link_url)?>";
|
||||
var enc_tag = "<?php echo urlencode(str_replace(',',' ',$R['tag']))?>";
|
||||
snsset['t'] = 'https://twitter.com/intent/tweet?url=' + enc_url + '&text=' + enc_sbj;
|
||||
snsset['f'] = 'http://www.facebook.com/sharer.php?u=' + enc_url;
|
||||
snsset['n'] = 'http://share.naver.com/web/shareView.nhn?url=' + enc_url + '&title=' + enc_sbj;
|
||||
snsset['ks'] = 'https://story.kakao.com/share?url=' + enc_url + '&title=' + enc_sbj;
|
||||
window.open(snsset[sns]);
|
||||
}
|
||||
12
layouts/bs4-default/_includes/permissionAlert.php
Normal file
12
layouts/bs4-default/_includes/permissionAlert.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<!-- 알림수신을 위한 권한요청 (권한이 설정되지 않은 경우만 표시) -->
|
||||
<div class="alert alert-light mb-0 rounded-0" role="alert" id="permission_alert" style="display: none">
|
||||
<div class="d-flex justify-content-between">
|
||||
<p class="f13 mb-0">
|
||||
<i class="fa fa-bell fa-fw text-primary" aria-hidden="true"></i> 데스크탑 푸시알림을 수신하면 공지사항은 물론 회원님이 게시글에 대한 피드백 또는 내가 언급된 글에 대한 정보들을 실시간으로 받아보실 수 있습니다.
|
||||
<a href="#" class="alert-link" onclick="requestPermission()"><u>권한 설정</u></a>
|
||||
</p>
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close" title="나중에 하기">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
93
layouts/bs4-default/_includes/sidebar-dashboard.php
Normal file
93
layouts/bs4-default/_includes/sidebar-dashboard.php
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
$levelnum = getDbData($table['s_mbrlevel'],'gid=1','*');
|
||||
$levelname= getDbData($table['s_mbrlevel'],'uid='.$my['level'],'*');
|
||||
?>
|
||||
|
||||
<section class="pt-4 px-3">
|
||||
<div class="text-reset text-center">
|
||||
<a href="<?php echo getProfileLink($my['uid'])?>" class="d-inline-block" target="_blank">
|
||||
<img src="<?php echo getAvatarSrc($my['uid'],'60') ?>" width="60" height="60" alt="" class="rounded-circle border">
|
||||
</a>
|
||||
<span class="d-block f16 mt-2">
|
||||
<?php echo $my['nic'] ?>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<ul class="nav flex-column mt-3 py-3 border-top">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link d-flex justify-content-between py-1 px-2 f13 text-reset" href="<?php echo RW('mod=dashboard&page=point')?>">
|
||||
<span>포인트</span>
|
||||
<span>
|
||||
<strong class="text-primary"><?php echo number_format($my['point'])?> </strong> P
|
||||
<i class="fa fa-angle-right text-muted ml-2" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link d-flex justify-content-between py-1 px-2 f13 text-reset" href="<?php echo RW('mod=dashboard&page=point')?>">
|
||||
<span>등급</span>
|
||||
<span>
|
||||
<?php echo $levelname['name']?>
|
||||
<small>(<?php echo $my['level']?>/<?php echo $levelnum['uid']?>)</small>
|
||||
<i class="fa fa-angle-right text-muted ml-2" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
|
||||
<ul class="nav nav-menu flex-column border-bottom">
|
||||
<li class="nav-item<?php echo $page=='main'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard')?>">대시보드</a>
|
||||
</li>
|
||||
<li class="nav-item<?php echo $page=='feed' || $page=='follower' ?' active':'' ?>">
|
||||
<a class="nav-link d-flex justify-content-between align-items-center" href="<?php echo RW('mod=dashboard&page=feed')?>">
|
||||
피드 <i class="fa fa-plus mr-4" aria-hidden="true"></i>
|
||||
</a>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item<?php echo $page=='feed'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=feed')?>">피드</a>
|
||||
</li>
|
||||
<li class="nav-item<?php echo $page=='follower'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=follower')?>">구독자 관리</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<?php if ($d['post']['writeperm']): ?>
|
||||
<li class="nav-item<?php echo $page=='post'|| $page=='list' || $page=='list_view'?' active':'' ?>">
|
||||
<a class="nav-link d-flex justify-content-between align-items-center" href="<?php echo RW('mod=dashboard&page=post')?>">
|
||||
포스트 관리 <i class="fa fa-plus mr-4" aria-hidden="true"></i>
|
||||
</a>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item<?php echo $page=='post'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=post')?>">포스트 관리</a>
|
||||
</li>
|
||||
<li class="nav-item<?php echo $page=='list' || $page=='list_view'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=list')?>">리스트 관리</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<?php else: ?>
|
||||
<li class="nav-item<?php echo $page=='list' || $page=='list_view'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=list')?>">리스트 관리</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<li class="nav-item<?php echo $page=='noti'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=noti')?>">알림내역</a>
|
||||
</li>
|
||||
<li class="nav-item<?php echo $page=='saved'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=saved')?>">저장내역</a>
|
||||
</li>
|
||||
<li class="nav-item<?php echo $page=='point'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=point')?>">포인트내역</a>
|
||||
</li>
|
||||
<li class="nav-item d-none<?php echo $page=='order'?' active':'' ?>">
|
||||
<a class="nav-link" href="<?php echo RW('mod=dashboard&page=order')?>">구매내역 <span class="badge badge-pill badge-light">준비중</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo RW('mod=settings')?>">설정</a>
|
||||
</li>
|
||||
</ul>
|
||||
6
layouts/bs4-default/_includes/submenutitle.type1.php
Normal file
6
layouts/bs4-default/_includes/submenutitle.type1.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="">
|
||||
<h3 class="tit_subject"><?php echo $_HM['name'] ?></h3>
|
||||
<?php if ($_HM['addinfo']): ?>
|
||||
<p class="tit_desc"><?php echo $_HM['addinfo'] ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
6
layouts/bs4-default/_includes/submenutitle.type2.php
Normal file
6
layouts/bs4-default/_includes/submenutitle.type2.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="border-bottom mb-4">
|
||||
<h3 class="tit_subject pb-2"><?php echo $_HM['name'] ?></h3>
|
||||
<?php if ($_HM['addinfo']): ?>
|
||||
<p class="tit_desc"><?php echo $_HM['addinfo'] ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
34
layouts/bs4-default/_includes/subnav.php
Normal file
34
layouts/bs4-default/_includes/subnav.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php $_MENUS2=getDbSelect($table['s_menu'],'site='.$s.' and parent='.$_FHM['uid'].' and hidden=0 and depth=2 order by gid asc','*')?>
|
||||
<?php $_MENUSN=db_num_rows($_MENUS2)?>
|
||||
<?php if($_MENUN || $_CA[0]):?>
|
||||
|
||||
<?php if ($d['layout']['sidebar_titlebar']=='false'): ?>
|
||||
<h3 class="page-nav-title bg-secondary text-white"><?php echo $_FHM['name'] ?></h3>
|
||||
<?php endif; ?>
|
||||
|
||||
<ul class="nav flex-column">
|
||||
<?php $_i=0;while($_M2=db_fetch_array($_MENUS2)):$_i++?>
|
||||
<li class="nav-item<?php if($_MENUSN==$_i):?> _last<?php endif?>">
|
||||
<a class="nav-link<?php if($_M2['id']==$_CA[1]):?> active<?php endif?>" href="<?php echo RW('c='.$_CA[0].'/'.$_M2['id'])?>" target="<?php echo $_M2['target']?>">
|
||||
<?php echo $_M2['name']?>
|
||||
</a>
|
||||
<?php if(($_HM['uid']==$_M2['uid']||$_HM['parent']==$_M2['uid'])&&$_M2['is_child']):?>
|
||||
<ul class="nav flex-column ml-2">
|
||||
<?php $_MENUS3=getDbSelect($table['s_menu'],'site='.$s.' and parent='.$_M2['uid'].' and hidden=0 and depth=3 order by gid asc','*')?>
|
||||
<?php while($_M3=db_fetch_array($_MENUS3)):?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link<?php if($_M3['uid']==$_HM['uid']):?> active<?php endif?>" href="<?php echo RW('c='.$_CA[0].'/'.$_CA[1].'/'.$_M3['id'])?>" target="<?php echo $_M3['target']?>">
|
||||
<?php echo $_M3['name']?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endwhile?>
|
||||
</ul>
|
||||
<?php endif?>
|
||||
</li>
|
||||
<?php endwhile?>
|
||||
<?php if(!$_MENUSN):?>
|
||||
<li class="text-muted text-center p-5 border">서브메뉴가 없습니다.</li>
|
||||
<?php endif?>
|
||||
</ul>
|
||||
|
||||
<?php endif?>
|
||||
12
layouts/bs4-default/_includes/subtitlebar.type1.php
Normal file
12
layouts/bs4-default/_includes/subtitlebar.type1.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<section class="bg-light">
|
||||
<div class="<?php echo $d['layout']['main_container'] ?> px-0">
|
||||
|
||||
<div class="py-5">
|
||||
<h3 class="tit_subject"><?php echo $_FHM['name'] ?></h3>
|
||||
<?php if ($_FHM['addinfo']): ?>
|
||||
<p class="tit_desc"><?php echo $_FHM['addinfo'] ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
13
layouts/bs4-default/_includes/subtitlebar.type2.php
Normal file
13
layouts/bs4-default/_includes/subtitlebar.type2.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<section class="bg-light">
|
||||
<div class="<?php echo $d['layout']['main_container'] ?> px-0">
|
||||
|
||||
<div class="py-5">
|
||||
<h3 class="tit_subject"><?php echo $_HM['name'] ?></h3>
|
||||
<?php if ($_HM['addinfo']): ?>
|
||||
<p class="tit_desc"><?php echo $_HM['addinfo'] ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
161
layouts/bs4-default/_js/main.js
Normal file
161
layouts/bs4-default/_js/main.js
Normal file
@@ -0,0 +1,161 @@
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* kimsQ Rb v2.4 데스크탑 시작하기 레이아웃 스크립트 (bs4-starter)
|
||||
* Homepage: http://www.kimsq.com
|
||||
* Licensed under RBL
|
||||
* Copyright 2019 redblock inc
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
var noti_sort = 'uid';
|
||||
var noti_orderby = 'desc';
|
||||
var noti_recnum = '10';
|
||||
|
||||
$('[data-plugin="timeago"]').timeago(); // 상대시간 플러그인 초기화
|
||||
|
||||
// 사용자 액션에 대한 피드백 메시지 제공을 위해 액션 실행후 쿠키에 저장된 결과 메시지를 출력시키고 초기화 시킵니다.
|
||||
putCookieAlert('site_common_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
// navbar dropdown 로그인 - 실행
|
||||
$('#popover-loginform').submit(function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
var form = $(this)
|
||||
siteLogin(form)
|
||||
});
|
||||
|
||||
// navbar dropdown 로그인 - 로그인 영역 내부 클릭시 dropdown 닫히지 않도록
|
||||
$(document).on('click', '#navbarPopoverLogin .dropdown-menu', function (e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// navbar dropdown 로그인 - dropdown 열릴때
|
||||
$('#navbarPopoverLogin').on('shown.bs.dropdown', function () {
|
||||
$(this).find('[name=id]').focus() // 아이디 focus
|
||||
$(this).find('.form-control').val('').removeClass('is-invalid') //에러이력 초기화
|
||||
})
|
||||
$(document).on('keyup','#popover-loginform .form-control',function(){
|
||||
$(this).removeClass('is-invalid') //에러 흔적 초기화
|
||||
});
|
||||
|
||||
// navbar dropdown 내알림보기 - dropdown 열릴때
|
||||
$('#navbarPopoverNoti').on('show.bs.dropdown', function () {
|
||||
var dropdown = $(this)
|
||||
var mobile = ''
|
||||
$('.js-tooltip').tooltip('hide')
|
||||
dropdown.attr('data-original-title','')
|
||||
dropdown.find('[data-role="noti-list"]').isLoading({
|
||||
text: "불러오는중...",
|
||||
position: "inside"
|
||||
});
|
||||
$.post(rooturl+'/?r='+raccount+'&m=notification&a=get_notiList',{
|
||||
sort: noti_sort,
|
||||
orderby: noti_orderby,
|
||||
recnum: noti_recnum,
|
||||
callMod: 'unread'
|
||||
},function(response){
|
||||
var result = $.parseJSON(response);
|
||||
var content=result.content;
|
||||
dropdown.find('[data-role="noti-list"]').html(content);
|
||||
dropdown.find('[data-plugin="timeago"]').timeago();
|
||||
dropdown.find('[data-role="noti-status"]').text('');
|
||||
});
|
||||
})
|
||||
|
||||
// navbar dropdown 알림보기 - dropdown 닫힐때
|
||||
$('#navbarPopoverNoti').on('hidden.bs.dropdown', function () {
|
||||
var dropdown = $(this)
|
||||
dropdown.attr('data-original-title','알림')
|
||||
dropdown.find('[data-role="noti-list"]').html('');
|
||||
})
|
||||
|
||||
//modal 로그인 - 실행
|
||||
$('#modal-login').find('form').submit(function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
var form = $(this)
|
||||
siteLogin(form)
|
||||
});
|
||||
|
||||
// modal 로그인 - modal 열릴때
|
||||
$('#modal-login').on('shown.bs.modal', function () {
|
||||
$(this).find('[name=id]').focus() // 아이디 focus
|
||||
$(this).find('.form-control').val('').removeClass('is-invalid') //에러 흔적 초기화
|
||||
})
|
||||
|
||||
$("#modal-login").find('.form-control').keyup(function() {
|
||||
$(this).removeClass('is-invalid') //에러 흔적 초기화
|
||||
});
|
||||
|
||||
//modal 변경
|
||||
$(document).on('click','[data-toggle="changeModal"]', function (e) {
|
||||
var $this = $(this)
|
||||
var href = $this.attr('href')
|
||||
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, '')))
|
||||
var $start = $($this.closest('.modal'))
|
||||
if ($this.is('a')) e.preventDefault()
|
||||
$start.modal('hide')
|
||||
setTimeout(function(){ $target.modal({show:true,backdrop:'static'}); }, 300);
|
||||
});
|
||||
|
||||
$('[data-toggle="tooltip"]').tooltip() // 툴팁 플러그인 초기화
|
||||
$('.js-tooltip').tooltip();
|
||||
|
||||
initPhotoSwipeFromDOM('[data-plugin="photoswipe"]'); // 포토갤러리 초기화
|
||||
|
||||
//외부서비스 사용자 인증요청
|
||||
$('[data-connect]').on("click", function(){
|
||||
var provider = $(this).data('connect')
|
||||
|
||||
// /core/engine/cssjs.engine.php 참고
|
||||
if (provider=='naver') var target = connect_naver
|
||||
if (provider=='kakao') var target = connect_kakao
|
||||
if (provider=='google') var target = connect_google
|
||||
if (provider=='facebook') var target = connect_facebook
|
||||
if (provider=='instagram') var target = connect_instagram
|
||||
var referer = window.location.href // 연결후, 원래 페이지 복귀를 위해
|
||||
|
||||
$("body").isLoading({
|
||||
text: "연결 중..",
|
||||
position: "overlay"
|
||||
});
|
||||
$.post(rooturl+'/?r='+raccount+'&m=connect&a=save_referer',{
|
||||
referer : referer
|
||||
},function(response,status){
|
||||
|
||||
if(status=='success'){
|
||||
document.location = target;
|
||||
}else{
|
||||
alert(status);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 로그아웃
|
||||
$('[data-act="logout"]').click(function(){
|
||||
$('body').isLoading({
|
||||
position: 'inside',
|
||||
text: '<div class="d-flex justify-content-center align-items-center"><div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div></div>',
|
||||
});
|
||||
getIframeForAction('');
|
||||
setTimeout(function(){
|
||||
frames.__iframe_for_action__.location.href = '/?r=home&m=site&a=logout';
|
||||
}, 100);
|
||||
});
|
||||
|
||||
// history.back
|
||||
$(document).on('click','[data-history="back"]',function(){
|
||||
window.history.back();
|
||||
});
|
||||
|
||||
$('[data-toggle="searchbox"]').click(function(){
|
||||
$('.header').toggleClass('searching')
|
||||
$('.header [data-role="searchbox"] input').val('').focus()
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
})
|
||||
271
layouts/bs4-default/_js/noti.js
Normal file
271
layouts/bs4-default/_js/noti.js
Normal file
@@ -0,0 +1,271 @@
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* FCM(Firebase 클라우드 메시징)을 활용한 포그라운드 알림 처리 (데스크탑 전용)
|
||||
* 참조코드 : https://github.com/firebase/quickstart-js/tree/master/messaging
|
||||
* Licensed under an Apache-2 license.
|
||||
* Firebase Quickstart Samples for Web https://firebase.google.com
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
firebase.initializeApp({'messagingSenderId': fcmSenderId});
|
||||
|
||||
const messaging = firebase.messaging();
|
||||
|
||||
messaging.usePublicVapidKey(fcmVAPID); //FCM 웹 푸시 인증서 키쌍(VAPID)
|
||||
|
||||
const permissionDivId = 'permission_div';
|
||||
const permissionAlertId = 'permission_alert';
|
||||
const tokenDivId = 'token_div';
|
||||
const pushSettingId = 'push_setting';
|
||||
const pushDisabledId = 'push_disabled';
|
||||
const modalNoti = $('#modal-noti');
|
||||
|
||||
if (isNewUser(memberid)) {
|
||||
console.log('새 사용자로 로그인 되었습니다.')
|
||||
deleteToken() // 기존 토큰 삭제
|
||||
window.localStorage.clear(); // 로컬 스토리지 초기화
|
||||
}
|
||||
|
||||
// 인스턴스 ID 토큰이 업데이트되면 콜백이 시작됩니다.
|
||||
messaging.onTokenRefresh(function() {
|
||||
messaging.getToken().then(function(refreshedToken) {
|
||||
console.log('토큰이 새로고침 되었습니다.'); // 새 인스턴스 ID 토큰이 아직 전송되지 않았 음을 나타냅니다.
|
||||
setTokenSentToServer(false);
|
||||
sendTokenToServer(refreshedToken); // 인스턴스 ID 토큰을 앱 서버로 전송합니다.
|
||||
resetNotiUI(); // 새로운 인스턴스 ID 토큰을 표시하고 모든 이전 메시지의 UI를 지웁니다.
|
||||
}).catch(function(err) {
|
||||
console.log('새로 변경된 토큰을 검색 할 수 없습니다. ', err);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// - 앱에 포커스가 있는 동안 메시지가 수신됩니다.
|
||||
messaging.onMessage(function(payload) {
|
||||
console.log('메시지가 도착했습니다. ', payload);
|
||||
|
||||
var result = JSON.stringify(payload, null, 2);
|
||||
var msg = JSON.parse(result);
|
||||
var title=msg.notification.title;
|
||||
var mbody=msg.notification.body;
|
||||
var icon=msg.notification.icon;
|
||||
var _mbody = mbody.replace(/(\n|\r\n)/g, '<br>');
|
||||
console.log(_mbody)
|
||||
|
||||
$.notify({
|
||||
icon: icon,
|
||||
title: title,
|
||||
message: mbody
|
||||
}, {
|
||||
type: 'media',
|
||||
delay: 3000,
|
||||
icon_type: 'image',
|
||||
template: '<div data-notify="container" class="col-xs-11 col-sm-3 alert alert-{0}" role="alert">' +
|
||||
'<img data-notify="icon" class="img-circle pull-left">' +
|
||||
'<span data-notify="title">{1}</span>' +
|
||||
'<span data-notify="message">{2}</span>' +
|
||||
'</div>'
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function resetNotiUI() {
|
||||
clearMessages();
|
||||
showToken('처리중...');
|
||||
setMemberId(memberid) // 로그인 사용자의 아이디를 로컬 스토리지에 저장
|
||||
|
||||
// Get Instance ID token. Initially this makes a network call, once retrieved
|
||||
// subsequent calls to getToken will return from cache. 이후의 getToken의 호출은 캐쉬로부터 돌아옵니다.
|
||||
messaging.getToken().then(function(currentToken) {
|
||||
if (currentToken) {
|
||||
sendTokenToServer(currentToken);
|
||||
updateUIForPushEnabled(currentToken);
|
||||
} else {
|
||||
// Show permission request.
|
||||
if (!isRequestPermission()) {
|
||||
setRequestPermission(false)
|
||||
}
|
||||
console.log('사용할수 있는 인스턴스 ID 토큰이 없습니다. 알림권한을 요청하십시오.');
|
||||
// 알림권한요청 UI 를 보여줌.
|
||||
|
||||
setTimeout(function(){
|
||||
updateUIForPushPermissionRequired();
|
||||
}, 1000);
|
||||
setTokenSentToServer(false);
|
||||
}
|
||||
}).catch(function(err) {
|
||||
console.log('알림권한이 없거나 토큰을 검색하는 중 오류가 발생했습니다. ', err);
|
||||
updateUIForPushDisabled()
|
||||
setRequestPermission(false)
|
||||
});
|
||||
}
|
||||
|
||||
function showToken(currentToken) {
|
||||
// 콘솔과 페이지에서 토큰을 보여줌
|
||||
var tokenElement = document.querySelector('.token');
|
||||
if (tokenElement) {
|
||||
tokenElement.textContent = currentToken;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Rb2에 인스턴스 ID 토큰을 보내세요.:
|
||||
// - 이 앱으로 메시지를 다시 보내세요.
|
||||
// - 주제 토큰 구독 / 탈퇴
|
||||
function sendTokenToServer(currentToken) {
|
||||
if (!isTokenSentToServer()) {
|
||||
console.log('Rb2 서버에 토큰 보내기 중 ...');
|
||||
|
||||
var agent = navigator.userAgent, match;
|
||||
var browser, version;
|
||||
|
||||
if((match = agent.match(/MSIE ([0-9]+)/)) || (match = agent.match(/Trident.*rv:([0-9]+)/))) browser = 'Internet Explorer';
|
||||
else if(match = agent.match(/Chrome\/([0-9]+)/)) browser = 'Chrome';
|
||||
else if(match = agent.match(/Firefox\/([0-9]+)/)) browser = 'Firefox';
|
||||
else if(match = agent.match(/Safari\/([0-9]+)/)) browser = 'Safari';
|
||||
else if((match = agent.match(/OPR\/([0-9]+)/)) || (match = agent.match(/Opera\/([0-9]+)/))) browser = 'Opera';
|
||||
else browser = 'Unknown';
|
||||
|
||||
if(browser !== 'Unknown') version = match[1];
|
||||
|
||||
$.post(rooturl+'/?r='+raccount+'&m=notification&a=save_token',{
|
||||
browser : browser,
|
||||
version : version,
|
||||
token : currentToken
|
||||
},function(response){
|
||||
var result = $.parseJSON(response);
|
||||
console.log('토큰이 저장되었습니다.' + currentToken)
|
||||
});
|
||||
setTokenSentToServer(true);
|
||||
} else {
|
||||
console.log('토큰이 이미 서버에 전송 되었으므로 토큰이 변경되지 않는한 재전송되지 않습니다.');
|
||||
}
|
||||
}
|
||||
|
||||
function isTokenSentToServer() {
|
||||
return window.localStorage.getItem('sentToServer') == 1;
|
||||
}
|
||||
|
||||
function setTokenSentToServer(sent) {
|
||||
window.localStorage.setItem('sentToServer', sent ? 1 : 0);
|
||||
}
|
||||
|
||||
function isRequestPermission() {
|
||||
return window.localStorage.getItem('setRequestPermission') == 1;
|
||||
}
|
||||
|
||||
function setRequestPermission(allow) {
|
||||
window.localStorage.setItem('setRequestPermission', allow ? 1 : 0);
|
||||
}
|
||||
|
||||
function isNewUser(memberid) {
|
||||
return window.localStorage.getItem('setMemberId') != memberid;
|
||||
}
|
||||
|
||||
function setMemberId(memberid) {
|
||||
window.localStorage.setItem('setMemberId', memberid ? memberid : 0);
|
||||
}
|
||||
|
||||
function showHideDiv(divId, show) {
|
||||
const div = document.querySelector('#' + divId);
|
||||
|
||||
if (div) {
|
||||
if (show) {
|
||||
div.style = 'display: visible';
|
||||
} else {
|
||||
div.style = 'display: none';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function requestPermission() {
|
||||
console.log('권한 요청 중 ...');
|
||||
messaging.requestPermission().then(function() {
|
||||
var nt_web = ''; //알림수신
|
||||
var nt_fcm = '1'; //푸시 알림수신
|
||||
console.log('알림권한이 부여 되었습니다.');
|
||||
$.notify({message: '알림권한이 부여 되었습니다.'});
|
||||
resetNotiUI();
|
||||
|
||||
$.post(rooturl+'/?r='+raccount+'&m=notification&a=notice_config_user',{
|
||||
sendAjax : true,
|
||||
nt_web : nt_web,
|
||||
nt_email : nt_email,
|
||||
nt_fcm : nt_fcm
|
||||
},function(response){
|
||||
var result = $.parseJSON(response);
|
||||
var error=result.error;
|
||||
if (!error) console.log('웹알림/푸시알림 수신처리 되었습니다.')
|
||||
});
|
||||
|
||||
}).catch(function(err) {
|
||||
var nt_fcm = '';
|
||||
showHideDiv(permissionAlertId, false);
|
||||
showHideDiv(permissionDivId, false);
|
||||
showHideDiv(pushDisabledId, true);
|
||||
console.log('알림을 실행 할수있는 권한이 없습니다.', err);
|
||||
$.notify({message: '알림 권한이 차단 되었습니다.'},{type: 'danger'});
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
function deleteToken() {
|
||||
// 인스턴스 ID 토큰 삭제.
|
||||
// [START delete_token]
|
||||
messaging.getToken().then(function(currentToken) {
|
||||
messaging.deleteToken(currentToken).then(function() {
|
||||
console.log('토큰이 삭제 되었습니다.');
|
||||
setTokenSentToServer(false);
|
||||
// [START_EXCLUDE]
|
||||
// 토큰이 삭제되면 관련 UI를 업데이트 합니다..
|
||||
resetNotiUI();
|
||||
// [END_EXCLUDE]
|
||||
}).catch(function(err) {
|
||||
console.log('토큰을 삭제할 수 없습니다. ', err);
|
||||
});
|
||||
// [END delete_token]
|
||||
}).catch(function(err) {
|
||||
console.log('인스턴스 ID 토큰을 가져 오는 중 오류가 발생했습니다. ', err);
|
||||
});
|
||||
}
|
||||
|
||||
// 메시지 모달을 닫고 내용을 초기화 합니다.
|
||||
function clearMessages() {
|
||||
modalNoti.modal('hide')
|
||||
}
|
||||
|
||||
function updateUIForPushEnabled(currentToken) {
|
||||
showHideDiv(permissionAlertId, false);
|
||||
showHideDiv(tokenDivId, true);
|
||||
showHideDiv(pushSettingId, true);
|
||||
showHideDiv(permissionDivId, false);
|
||||
showToken(currentToken);
|
||||
}
|
||||
|
||||
function updateUIForPushDisabled() {
|
||||
showHideDiv(pushDisabledId, true);
|
||||
showHideDiv(permissionAlertId, false);
|
||||
}
|
||||
|
||||
function updateUIForPushPermissionRequired() {
|
||||
if (!isRequestPermission()) {
|
||||
console.log('브라우저 알림 권한요청 이력이 없음')
|
||||
if (!nt_web) {
|
||||
showHideDiv(permissionAlertId, true);
|
||||
} else {
|
||||
console.log('사용자의 모든 알림수신을 차단하였습니다.')
|
||||
}
|
||||
} else {
|
||||
console.log('브라우저 알림 권한요청 이력이 있음')
|
||||
showHideDiv(permissionDivId, true);
|
||||
}
|
||||
}
|
||||
|
||||
//알림권한 요청 alert가 닫혔을때(나중에 설정)
|
||||
$('#permission_alert').on('closed.bs.alert', function () {
|
||||
$.notify({message: '설정 페이지에서 다시 권한설정 할 수 있습니다.'},{type: 'primary'});
|
||||
setRequestPermission(true) // 요청이력을 로컬 스토리지에 저장하여 이후에 띄우지 않음
|
||||
showHideDiv(permissionDivId, true);
|
||||
})
|
||||
|
||||
resetNotiUI();
|
||||
199
layouts/bs4-default/_js/photoswipe.js
Normal file
199
layouts/bs4-default/_js/photoswipe.js
Normal file
@@ -0,0 +1,199 @@
|
||||
/*! PhotoSwipe
|
||||
* http://photoswipe.com
|
||||
* Copyright (c) 2017 Dmitry Semenov; */
|
||||
|
||||
|
||||
var initPhotoSwipeFromDOM = function(gallerySelector) {
|
||||
|
||||
// parse slide data (url, title, size ...) from DOM elements
|
||||
// (children of gallerySelector)
|
||||
var parseThumbnailElements = function(el) {
|
||||
var thumbElements = el.childNodes,
|
||||
numNodes = thumbElements.length,
|
||||
items = [],
|
||||
figureEl,
|
||||
linkEl,
|
||||
size,
|
||||
item;
|
||||
|
||||
for(var i = 0; i < numNodes; i++) {
|
||||
|
||||
figureEl = thumbElements[i]; // <figure> element
|
||||
|
||||
// include only element nodes
|
||||
if(figureEl.nodeType !== 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
linkEl = figureEl.children[0]; // <a> element
|
||||
|
||||
size = linkEl.getAttribute('data-size').split('x');
|
||||
|
||||
// create slide object
|
||||
item = {
|
||||
src: linkEl.getAttribute('href'),
|
||||
w: parseInt(size[0], 10),
|
||||
h: parseInt(size[1], 10)
|
||||
};
|
||||
|
||||
|
||||
|
||||
if(figureEl.children.length > 1) {
|
||||
// <figcaption> content
|
||||
item.title = figureEl.children[1].innerHTML;
|
||||
}
|
||||
|
||||
if(linkEl.children.length > 0) {
|
||||
// <img> thumbnail element, retrieving thumbnail url
|
||||
item.msrc = linkEl.children[0].getAttribute('src');
|
||||
}
|
||||
|
||||
item.el = figureEl; // save link to element for getThumbBoundsFn
|
||||
items.push(item);
|
||||
}
|
||||
|
||||
return items;
|
||||
};
|
||||
|
||||
// find nearest parent element
|
||||
var closest = function closest(el, fn) {
|
||||
return el && ( fn(el) ? el : closest(el.parentNode, fn) );
|
||||
};
|
||||
|
||||
// triggers when user clicks on thumbnail
|
||||
var onThumbnailsClick = function(e) {
|
||||
e = e || window.event;
|
||||
e.preventDefault ? e.preventDefault() : e.returnValue = false;
|
||||
|
||||
var eTarget = e.target || e.srcElement;
|
||||
|
||||
// find root element of slide
|
||||
var clickedListItem = closest(eTarget, function(el) {
|
||||
return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');
|
||||
});
|
||||
|
||||
if(!clickedListItem) {
|
||||
return;
|
||||
}
|
||||
|
||||
// find index of clicked item by looping through all child nodes
|
||||
// alternatively, you may define index via data- attribute
|
||||
var clickedGallery = clickedListItem.parentNode,
|
||||
childNodes = clickedListItem.parentNode.childNodes,
|
||||
numChildNodes = childNodes.length,
|
||||
nodeIndex = 0,
|
||||
index;
|
||||
|
||||
for (var i = 0; i < numChildNodes; i++) {
|
||||
if(childNodes[i].nodeType !== 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(childNodes[i] === clickedListItem) {
|
||||
index = nodeIndex;
|
||||
break;
|
||||
}
|
||||
nodeIndex++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(index >= 0) {
|
||||
// open PhotoSwipe if valid index found
|
||||
openPhotoSwipe( index, clickedGallery );
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
// parse picture index and gallery index from URL (#&pid=1&gid=2)
|
||||
var photoswipeParseHash = function() {
|
||||
var hash = window.location.hash.substring(1),
|
||||
params = {};
|
||||
|
||||
if(hash.length < 5) {
|
||||
return params;
|
||||
}
|
||||
|
||||
var vars = hash.split('&');
|
||||
for (var i = 0; i < vars.length; i++) {
|
||||
if(!vars[i]) {
|
||||
continue;
|
||||
}
|
||||
var pair = vars[i].split('=');
|
||||
if(pair.length < 2) {
|
||||
continue;
|
||||
}
|
||||
params[pair[0]] = pair[1];
|
||||
}
|
||||
|
||||
if(params.gid) {
|
||||
params.gid = parseInt(params.gid, 10);
|
||||
}
|
||||
|
||||
return params;
|
||||
};
|
||||
|
||||
var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) {
|
||||
var pswpElement = document.querySelectorAll('.pswp-gallery')[0],
|
||||
gallery,
|
||||
options,
|
||||
items;
|
||||
|
||||
items = parseThumbnailElements(galleryElement);
|
||||
|
||||
// define options (if needed)
|
||||
options = {
|
||||
|
||||
// define gallery index (for URL)
|
||||
galleryUID: galleryElement.getAttribute('data-pswp-uid'),
|
||||
|
||||
|
||||
};
|
||||
|
||||
// PhotoSwipe opened from URL
|
||||
if(fromURL) {
|
||||
if(options.galleryPIDs) {
|
||||
// parse real index when custom PIDs are used
|
||||
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
|
||||
for(var j = 0; j < items.length; j++) {
|
||||
if(items[j].pid == index) {
|
||||
options.index = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// in URL indexes start from 1
|
||||
options.index = parseInt(index, 10) - 1;
|
||||
}
|
||||
} else {
|
||||
options.index = parseInt(index, 10);
|
||||
}
|
||||
|
||||
// exit if index not found
|
||||
if( isNaN(options.index) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(disableAnimation) {
|
||||
options.showAnimationDuration = 0;
|
||||
}
|
||||
|
||||
// Pass data to PhotoSwipe and initialize it
|
||||
gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
|
||||
gallery.init();
|
||||
};
|
||||
|
||||
// loop through all gallery elements and bind events
|
||||
var galleryElements = document.querySelectorAll( gallerySelector );
|
||||
|
||||
for(var i = 0, l = galleryElements.length; i < l; i++) {
|
||||
galleryElements[i].setAttribute('data-pswp-uid', i+1);
|
||||
galleryElements[i].onclick = onThumbnailsClick;
|
||||
}
|
||||
|
||||
// Parse URL and open gallery if it contains #&pid=3&gid=1
|
||||
var hashData = photoswipeParseHash();
|
||||
if(hashData.pid && hashData.gid) {
|
||||
openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true );
|
||||
}
|
||||
};
|
||||
13
layouts/bs4-default/_pages/main.php
Normal file
13
layouts/bs4-default/_pages/main.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
if ($my['uid'] && $d['layout']['main_dashboard']=='true') getLink('/dashboard','','','');
|
||||
|
||||
$g['layoutPageVForSite'] = $g['path_var'].'site/'.$r.'/layout.'.$layout.'.main.php'; // 레이아웃 메인페이지 웨젯설정
|
||||
include is_file($g['layoutPageVForSite']) ? $g['layoutPageVForSite'] : $g['dir_layout'].'_var/_var.main.php';
|
||||
getWidgetList($d['layout']['main_widgets']);
|
||||
?>
|
||||
|
||||
<?php if (!$d['layout']['main_widgets'] && $my['admin']): ?>
|
||||
<div class="alert alert-danger text-center border-0 rounded-0" role="alert">
|
||||
메인 꾸미기가 필요합니다.
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
174
layouts/bs4-default/_var/_var.config.php
Normal file
174
layouts/bs4-default/_var/_var.config.php
Normal file
@@ -0,0 +1,174 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
//***********************************************************************************
|
||||
// 여기에 이 레이아웃에서 사용할 변수들을 정의합니다.
|
||||
// 변수 작성법은 매뉴얼을 참고하세요.
|
||||
//***********************************************************************************
|
||||
|
||||
$d['layout']['show'] = true; // 관리패널에 레이아웃 관리탭을 보여주기
|
||||
$d['layout']['date'] = false; // 데이트픽커 사용
|
||||
|
||||
//***********************************************************************************
|
||||
// 설정배열
|
||||
//***********************************************************************************
|
||||
|
||||
$d['layout']['dom'] = array (
|
||||
|
||||
/* 헤더 */
|
||||
'header' => array(
|
||||
'헤더',
|
||||
'',
|
||||
array(
|
||||
array('type','select','헤더 타입','타입1=type1,타입2=type2,타입3=type3'),
|
||||
array('title','input','사이트 제목',''),
|
||||
array('logo','file','이미지 로고',''),
|
||||
array('logo_size','input','이미지 로고 크기 (1~100% 숫자만)','84'),
|
||||
array('logo_position','select','이미지 로고 정렬','왼쪽=0,가운데=50,오른쪽=100','50'),
|
||||
array('position','select','헤더 고정','고정안함=static,고정함=fixed'),
|
||||
array('container','select','헤더 가로폭','보통(1000px)=container,넓게(1140px)=container-lg,아주넓게(1200px)=container-xl,와이드(100%)=container-fluid,좁게(940px)=container-sm,아주좁게(860px)=container-xs'),
|
||||
array('menu','select','메뉴','dropdown-hover=dropdown-hover,mega-3depth=mega-3depth,출력안함=false'),
|
||||
array('menu_limit','select','메뉴레벨','1차메뉴=1,2차메뉴=2,3차메뉴=3,출력안함=false','3'),
|
||||
array('allcat','select','전체 카테고리','출력=true,미출력=false'),
|
||||
array('search','select','검색 출력','입력형=input,버튼형=button,미출력=false'),
|
||||
array('login','select','로그인폼 출력','예=true,아니오=false'),
|
||||
),
|
||||
),
|
||||
|
||||
'footer' => array(
|
||||
'풋터',
|
||||
'',
|
||||
array(
|
||||
array('container','select','가로폭','보통(1000px)=container,넓게(1140px)=container-lg,아주넓게(1200px)=container-xl,와이드(100%)=container-fluid,좁게(940px)=container-sm,아주좁게(860px)=container-xs'),
|
||||
array('type','select','타입','타입1=type1,타입2=type2,타입3=type3'),
|
||||
array('logo','file','이미지 로고',''),
|
||||
array('logo_size','input','이미지 로고 크기 (1~100% 숫자만)','84'),
|
||||
array('logo_gray','select','로고 흑백처리','처리함=true,처리안함=false','true'),
|
||||
array('link','menu','하단링크',''),
|
||||
array('family','menu','패밀리 사이트','')
|
||||
),
|
||||
),
|
||||
|
||||
/* 메인 페이지 */
|
||||
'home' => array(
|
||||
'home',
|
||||
'데스크탑 메인페이지 설정을 관리합니다.',
|
||||
array(
|
||||
array('type','select','타입','기본=postAllFeed,직접 꾸미기=widget'),
|
||||
array('container','select','가로폭','보통(1000px)=container,넓게(1140px)=container-lg,아주넓게(1200px)=container-xl,와이드(100%)=container-fluid,좁게(940px)=container-sm,아주좁게(860px)=container-xs'),
|
||||
array('dashboard','select','로그인 후 대시보드 이동','아니오=false,예=true'),
|
||||
),
|
||||
),
|
||||
|
||||
'default' => array(
|
||||
'default',
|
||||
'데스크탑 레이아웃 설정을 관리합니다.',
|
||||
array(
|
||||
array('container','select','가로폭','보통(1000px)=container,넓게(1140px)=container-lg,아주넓게(1200px)=container-xl,와이드(100%)=container-fluid,좁게(940px)=container-sm,아주좁게(860px)=container-xs'),
|
||||
array('bgcolor','select','배경색','흰색=bg-white,밝은회색=bg-light'),
|
||||
array('breadcrumb','select','경로표시','미출력=false,타입1=type1,타입2=type2'),
|
||||
array('titlebar','select','타이틀바','타입1=type1,타입2=type2,출력안함=false'),
|
||||
array('menutitle','select','메뉴 타이틀','타입1=type1,타입2=type2,출력안함=false'),
|
||||
),
|
||||
),
|
||||
|
||||
'sidebar' => array(
|
||||
'sidebar',
|
||||
'데스크탑 레이아웃 설정을 관리합니다.',
|
||||
array(
|
||||
array('container','select','가로폭','보통(1000px)=container,넓게(1140px)=container-lg,아주넓게(1200px)=container-xl,와이드(100%)=container-fluid,좁게(940px)=container-sm,아주좁게(860px)=container-xs'),
|
||||
array('bgcolor','select','배경색','흰색=bg-white,밝은회색=bg-light'),
|
||||
array('breadcrumb','select','경로표시','미출력=false,타입1=type1,타입2=type2'),
|
||||
array('titlebar','select','타이틀바','타입1=type1,타입2=type2,출력안함=false'),
|
||||
array('menutitle','select','메뉴 타이틀','타입1=type1,타입2=type2,출력안함=false'),
|
||||
),
|
||||
),
|
||||
|
||||
'docs' => array(
|
||||
'docs',
|
||||
'데스크탑 레이아웃 설정을 관리합니다.',
|
||||
array(
|
||||
array('container','select','가로폭','보통(1000px)=container,넓게(1140px)=container-lg,아주넓게(1200px)=container-xl,와이드(100%)=container-fluid,좁게(940px)=container-sm,아주좁게(860px)=container-xs'),
|
||||
array('bgcolor','select','배경색','흰색=bg-white,밝은회색=bg-light'),
|
||||
array('footer','select','전용풋터','타입1=type1,타입2=type2,타입3=type3'),
|
||||
),
|
||||
),
|
||||
|
||||
'company' => array(
|
||||
'기업정보',
|
||||
'',
|
||||
array(
|
||||
array('name','input','회사명',''),
|
||||
array('ceo','input','대표자',''),
|
||||
array('num','input','사업자등록번호',''),
|
||||
array('num2','input','통신판매업 신고번호',''),
|
||||
array('manager','input','개인정보보호책임자',''),
|
||||
array('addr','textarea','주소','3'),
|
||||
),
|
||||
),
|
||||
|
||||
'contact' => array(
|
||||
'고객센터',
|
||||
'',
|
||||
array(
|
||||
array('tel','input','전화번호',''),
|
||||
array('email','input','이메일',''),
|
||||
array('fax','input','팩스',''),
|
||||
array('hours','input','업무시간',''),
|
||||
),
|
||||
),
|
||||
|
||||
'sns' => array(
|
||||
'소셜미디어',
|
||||
'URL을 입력하세요.',
|
||||
array(
|
||||
array('youtube','input','유튜브',''),
|
||||
array('instagram','input','인스타그램',''),
|
||||
array('facebook','input','페이스북',''),
|
||||
array('nblog','input','네이버블로그',''),
|
||||
),
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
$d['layout']['widget'] = array (
|
||||
|
||||
'post' => array(
|
||||
'포스트',
|
||||
array(
|
||||
array('bs4-default/post/post/best/card-default','기간별 추천 포스트'),
|
||||
array('bs4-default/post/post/new/card-default','최근 포스트'),
|
||||
array('bs4-default/post/post/tag/card-default','특정 키워드'),
|
||||
array('bs4-default/post/post/cat/card-default','특정 카테고리'),
|
||||
array('bs4-default/post/list/new/card-default','최근 리스트'),
|
||||
array('bs4-default/post/list/view/card-default','특정 리스트'),
|
||||
),
|
||||
),
|
||||
|
||||
'bbs' => array(
|
||||
'게시판',
|
||||
array(
|
||||
array('bs4-default/bbs/all/list-default','최근 리스트 기본'),
|
||||
array('bs4-default/bbs/all/gallery-default','최근 갤러리 기본'),
|
||||
),
|
||||
),
|
||||
|
||||
'mediaset' => array(
|
||||
'미디어셋',
|
||||
array(
|
||||
array('bs4-default/mediaset/banner/carousel-jumbo','배너 캐러셀 점보'),
|
||||
array('bs4-default/mediaset/banner/grid-default','배너 그리드 기본형'),
|
||||
),
|
||||
),
|
||||
|
||||
'profile' => array(
|
||||
'채널',
|
||||
array(
|
||||
array('bs4-default/profile/best/card-default','기간별 추천채널')
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
//***********************************************************************************
|
||||
?>
|
||||
3
layouts/bs4-default/_var/_var.main.php
Normal file
3
layouts/bs4-default/_var/_var.main.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
$d['layout']['main_widgets'] = "";
|
||||
?>
|
||||
47
layouts/bs4-default/_var/_var.php
Normal file
47
layouts/bs4-default/_var/_var.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
$d['layout']['header_type'] = "type1";
|
||||
$d['layout']['header_title'] = "마이홈";
|
||||
$d['layout']['header_logo'] = "";
|
||||
$d['layout']['header_logo_size'] = "70";
|
||||
$d['layout']['header_logo_position'] = "0";
|
||||
$d['layout']['header_position'] = "static";
|
||||
$d['layout']['header_container'] = "container";
|
||||
$d['layout']['header_menu'] = "dropdown-hover";
|
||||
$d['layout']['header_menu_limit'] = "3";
|
||||
$d['layout']['header_allcat'] = "false";
|
||||
$d['layout']['header_search'] = "button";
|
||||
$d['layout']['header_login'] = "true";
|
||||
$d['layout']['footer_container'] = "container";
|
||||
$d['layout']['footer_type'] = "type1";
|
||||
$d['layout']['footer_theme'] = "white";
|
||||
$d['layout']['home_type'] = "postAllFeed";
|
||||
$d['layout']['home_container'] = "container";
|
||||
$d['layout']['home_dashboard'] = "false";
|
||||
$d['layout']['default_container'] = "container";
|
||||
$d['layout']['default_bgcolor'] = "bg-white";
|
||||
$d['layout']['default_breadcrumb'] = "false";
|
||||
$d['layout']['default_titlebar'] = "type1";
|
||||
$d['layout']['default_menutitle'] = "type1";
|
||||
$d['layout']['sidebar_container'] = "container";
|
||||
$d['layout']['sidebar_bgcolor'] = "bg-white";
|
||||
$d['layout']['sidebar_breadcrumb'] = "false";
|
||||
$d['layout']['sidebar_titlebar'] = "false";
|
||||
$d['layout']['sidebar_menutitle'] = "type1";
|
||||
$d['layout']['docs_container'] = "container";
|
||||
$d['layout']['docs_bgcolor'] = "bg-light";
|
||||
$d['layout']['docs_footer'] = "type3";
|
||||
$d['layout']['company_name'] = "(주)우리회사";
|
||||
$d['layout']['company_ceo'] = "홍길동";
|
||||
$d['layout']['company_num'] = "000-00-00000";
|
||||
$d['layout']['company_num2'] = "서울강남001";
|
||||
$d['layout']['company_manager'] = "김길동";
|
||||
$d['layout']['company_addr'] = "서울시 성동구 0000 1층";
|
||||
$d['layout']['contact_tel'] = "1234-1234";
|
||||
$d['layout']['contact_email'] = "test@test.com";
|
||||
$d['layout']['contact_fax'] = "02-123-4567";
|
||||
$d['layout']['contact_hours'] = "월-금 9:00-18:00 / 주말, 공휴일 휴무";
|
||||
$d['layout']['sns_youtube'] = "";
|
||||
$d['layout']['sns_instagram'] = "";
|
||||
$d['layout']['sns_facebook'] = "";
|
||||
$d['layout']['sns_nblog'] = "";
|
||||
?>
|
||||
1
layouts/bs4-default/_var/nopanel.txt
Normal file
1
layouts/bs4-default/_var/nopanel.txt
Normal file
@@ -0,0 +1 @@
|
||||
nopanel.txt
|
||||
16
layouts/bs4-default/blank.php
Normal file
16
layouts/bs4-default/blank.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.head.php' ?>
|
||||
</head>
|
||||
<body class="rb-layout-blank">
|
||||
|
||||
<main role="main">
|
||||
<?php include __KIMS_CONTENT__ ?>
|
||||
</main><!-- /.container -->
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/component.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.foot.php'?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
180
layouts/bs4-default/dashboard.php
Normal file
180
layouts/bs4-default/dashboard.php
Normal file
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
if (!$my['uid']) getLink('/','','','');
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?php echo $lang['xlayout']['lang']?>" class="h-100">
|
||||
<head>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.head.php' ?>
|
||||
|
||||
<!-- Chart.js : https://github.com/chartjs/Chart.js/ -->
|
||||
<?php getImport('Chart.js','Chart','2.8.0','css') ?>
|
||||
|
||||
</head>
|
||||
<body class="rb-layout-dashboard d-flex flex-column h-100<?php echo $page=='main'?' bg-light':'' ?>" style="padding-top:67px">
|
||||
|
||||
<nav class="navbar fixed-top navbar-expand navbar-light bg-white border-bottom shadow-sm">
|
||||
<div class="container-fluid">
|
||||
|
||||
<?php echo getLayoutLogo($d['layout'],'header')?>
|
||||
|
||||
<form name="PostSearchForm" class="mr-auto ml-3 w-50" action="<?php echo $_HS['rewrite']? RW('mod=dashboard&page=post'):$g['s'].'/'?>"role="form" data-role="searchform">
|
||||
<?php if (!$_HS['rewrite']): ?>
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="mod" value="dashboard">
|
||||
<?php endif; ?>
|
||||
<input type="hidden" name="page" value="post">
|
||||
<input class="form-control" name="keyword" type="search" placeholder="내 포스트 검색" aria-label="Search" data-plugin="autocomplete" value="<?php echo $keyword ?>">
|
||||
</form>
|
||||
|
||||
<div class="">
|
||||
|
||||
<ul class="navbar-nav">
|
||||
<?php if ($my['uid']): ?>
|
||||
|
||||
<?php if ($d['post']['writeperm']): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-primary" href="<?php echo RW('m=post&mod=write')?>">새 포스트</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<li class="nav-item dropdown js-tooltip mr-2" title="알림" id="navbarPopoverNoti">
|
||||
<a class="nav-link notification-indicator" href="/" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="badge badge-danger noti-status" data-role="noti-status"><?php echo $my['num_notice']==0?'':$my['num_notice']?></span>
|
||||
<strong>새 알림</strong>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right py-0" >
|
||||
|
||||
<h6 class="dropdown-header d-flex justify-content-between align-items-center py-2 f13">
|
||||
<strong>새 알림</strong>
|
||||
<ul class="list-inline small">
|
||||
<li class="list-inline-item">
|
||||
<span role="presentation" aria-hidden="true"> · </span>
|
||||
<a href="/?r=<?php echo $r ?>&mod=settings&page=noti" class="muted-link">설정</a>
|
||||
</li>
|
||||
</ul>
|
||||
</h6>
|
||||
|
||||
<div class="list-group list-group-flush" data-role="noti-list" style="max-height: 435px;overflow: auto;">
|
||||
<!-- 드롭다운이 열릴때, 여기에 알림정보를 받아옴 -->
|
||||
</div><!-- /.list-group -->
|
||||
|
||||
<a class="btn btn-block btn-link muted-link f13 py-2 border-top" href="<?php echo RW('mod=noti')?>">모두보기</a>
|
||||
|
||||
</div><!-- /.dropdown-menu -->
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-role="tooltip" title="프로필보기 및 회원계정관리">
|
||||
<?php echo $my['email']?$my['email']:$my['phone'] ?>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<h6 class="dropdown-header"><?php echo $my['nic'] ?> 님</h6>
|
||||
<div class="dropdown-divider"></div>
|
||||
<h6 class="dropdown-header">포스트</h6>
|
||||
<a class="dropdown-item" href="<?php echo RW('m=post&mod=write')?>">
|
||||
<i class="fa fa-pencil fa-fw" aria-hidden="true"></i> 새 포스트
|
||||
</a>
|
||||
|
||||
<button class="dropdown-item" type="button" data-act="logout" role="button">
|
||||
<i class="fa fa-sign-out fa-fw" aria-hidden="true"></i> 로그아웃
|
||||
</button>
|
||||
<?php if ($my['admin']): ?>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item text-danger" href="/?m=admin&pickmodule=site&panel=Y" target="_top">관리자모드</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php else: ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#modal-join" data-toggle="modal" data-backdrop="static">회원가입</a>
|
||||
</li>
|
||||
<li class="nav-item position-relative" id="navbarPopoverLogin">
|
||||
<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="드롭다운형 로그인">
|
||||
로그인
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div><!-- /.container -->
|
||||
</nav>
|
||||
|
||||
<nav class="sidebar d-print-none">
|
||||
<?php include $g['dir_layout'].'/_includes/sidebar-dashboard.php' ?>
|
||||
</nav>
|
||||
|
||||
<main role="main">
|
||||
|
||||
<!-- 알림수신을 위한 권한요청 (권한이 설정되지 않은 경우만 표시) -->
|
||||
<div class="alert alert-light mb-0 rounded-0 border-bottom" role="alert" id="permission_alert" style="display: none">
|
||||
<div class="d-flex justify-content-between">
|
||||
<p class="f13 mb-0">
|
||||
<i class="fa fa-bell fa-fw text-primary" aria-hidden="true"></i> 데스크탑 푸시알림을 수신하면 공지사항은 물론 회원님이 게시글에 대한 피드백 또는 내가 언급된 글에 대한 정보들을 실시간으로 받아보실 수 있습니다.
|
||||
<a href="#" class="alert-link" onclick="requestPermission()"><u>권한 설정</u></a>
|
||||
</p>
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close" title="나중에 하기">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include __KIMS_CONTENT__ ?>
|
||||
|
||||
</main>
|
||||
|
||||
<!-- Chart.js : https://github.com/chartjs/Chart.js/ -->
|
||||
<?php getImport('Chart.js','Chart.bundle.min','2.8.0','js') ?>
|
||||
|
||||
<!-- jQuery-Autocomplete : https://github.com/devbridge/jQuery-Autocomplete -->
|
||||
<?php getImport('jQuery-Autocomplete','jquery.autocomplete.min','1.3.0','js') ?>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
document.title = '대시보드 · <?php echo $my['nic'] ?> ';
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
||||
$('body').on('click','[data-act="newNoti"]',function(){
|
||||
var new_noti = getAjaxData('<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=notice_check¬icedata=Y');
|
||||
$("#rb-alert-desk .alert").alert('close')
|
||||
$("#rb-noti-timeline").prepend(new_noti)
|
||||
$(".navbar").find('.mail-status').removeClass('unread')
|
||||
$(".blankslate").addClass('d-none')
|
||||
document.title = '킴스큐';
|
||||
});
|
||||
|
||||
$('[data-plugin="autocomplete"]').autocomplete({
|
||||
width : 625,
|
||||
lookup: function (query, done) {
|
||||
|
||||
$.getJSON(rooturl+"/?m=post&a=search_data", {q: query}, function(res){
|
||||
var sg_post = [];
|
||||
var data_arr = res.postlist.split(',');//console.log(data.usernames);
|
||||
$.each(data_arr,function(key,post){
|
||||
var postData = post.split('|');
|
||||
var subject = postData[0];
|
||||
var cid = postData[1];
|
||||
sg_post.push({"value":subject,"data":cid});
|
||||
});
|
||||
var result = {
|
||||
suggestions: sg_post
|
||||
};
|
||||
done(result);
|
||||
});
|
||||
},
|
||||
onSelect: function (suggestion) {
|
||||
if ($('[data-plugin="autocomplete"]').val().length >= 1) {
|
||||
location.href = suggestion.data;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/component.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.foot.php' ?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
34
layouts/bs4-default/default.php
Normal file
34
layouts/bs4-default/default.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko" class="h-100">
|
||||
<head>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.head.php' ?>
|
||||
</head>
|
||||
<body class="rb-layout-default d-flex flex-column h-100 <?php echo 'header-'.$d['layout']['header_position'] ?> <?php echo 'header-'.$d['layout']['header_type'] ?>">
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/permissionAlert.php' ?>
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/header.'.$d['layout']['header_type'].'.php' ?>
|
||||
|
||||
<?php if ($c && $d['layout']['default_breadcrumb']!='false') include $g['dir_layout'].'/_includes/breadcrumb.'.$d['layout']['default_breadcrumb'].'.php' ?>
|
||||
|
||||
<?php if ($c && $d['layout']['default_titlebar']!='false') include $g['dir_layout'].'/_includes/subtitlebar.'.$d['layout']['default_titlebar'].'.php' ?>
|
||||
|
||||
<main role="main" class="<?php echo $d['layout']['default_bgcolor'] ?>">
|
||||
<div class="<?php echo $d['layout']['default_container'] ?> py-4">
|
||||
|
||||
<?php if ($c && $d['layout']['default_menutitle']!='false')
|
||||
include $g['dir_layout'].'/_includes/submenutitle.'.$d['layout']['default_menutitle'].'.php' ?>
|
||||
|
||||
<article>
|
||||
<?php include __KIMS_CONTENT__ ?>
|
||||
</article>
|
||||
|
||||
</div><!-- /.container -->
|
||||
</main>
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/footer.'.$d['layout']['footer_type'].'.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/component.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.foot.php'?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
21
layouts/bs4-default/docs.php
Normal file
21
layouts/bs4-default/docs.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.head.php' ?>
|
||||
</head>
|
||||
<body class="rb-layout-docs d-flex flex-column h-100">
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/header.docs.php' ?>
|
||||
|
||||
<main role="main" class="<?php echo $d['layout']['docs_container'] ?> px-0 py-4 rb-article">
|
||||
<article class="rb-article">
|
||||
<?php include __KIMS_CONTENT__ ?>
|
||||
</article>
|
||||
</main><!-- /.container -->
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/footer.'.$d['layout']['docs_footer'].'.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/component.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.foot.php'?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
21
layouts/bs4-default/home.php
Normal file
21
layouts/bs4-default/home.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko" class="h-100">
|
||||
<head>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.head.php' ?>
|
||||
</head>
|
||||
<body class="rb-layout-home d-flex flex-column h-100 <?php echo 'header-'.$d['layout']['header_position'] ?> <?php echo 'header-'.$d['layout']['header_type'] ?>">
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/permissionAlert.php' ?>
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/header.'.$d['layout']['header_type'].'.php' ?>
|
||||
|
||||
<main role="main" class="<?php echo $d['layout']['home_container'] ?>">
|
||||
<?php include __KIMS_CONTENT__ ?>
|
||||
</main><!-- /.container -->
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/footer.'.$d['layout']['footer_type'].'.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/component.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.foot.php'?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1
layouts/bs4-default/name.txt
Normal file
1
layouts/bs4-default/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
데스크탑 기본
|
||||
42
layouts/bs4-default/sidebar.php
Normal file
42
layouts/bs4-default/sidebar.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.head.php' ?>
|
||||
</head>
|
||||
<body class="rb-layout-sidebar d-flex flex-column h-100 <?php echo 'header-'.$d['layout']['header_position'] ?> <?php echo 'header-'.$d['layout']['header_type'] ?>">
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/header.'.$d['layout']['header_type'].'.php' ?>
|
||||
|
||||
<?php if ($c && $d['layout']['sidebar_titlebar']!='false') include $g['dir_layout'].'/_includes/subtitlebar.'.$d['layout']['sidebar_titlebar'].'.php' ?>
|
||||
|
||||
<main role="main" class="py-3 <?php echo $d['layout']['sidebar_bgcolor'] ?>">
|
||||
<div class="<?php echo $d['layout']['sidebar_container'] ?>">
|
||||
<div class="page-wrapper row">
|
||||
|
||||
<nav class="page-nav col bg-white pl-0">
|
||||
<?php include $g['dir_layout'].'/_includes/subnav.php' ?>
|
||||
</nav><!-- /.page-nav -->
|
||||
|
||||
<div class="page-main col bg-white py-3 px-4">
|
||||
<?php if ($c && $d['layout']['sidebar_breadcrumb']!='false')
|
||||
include $g['dir_layout'].'/_includes/breadcrumb.'.$d['layout']['sidebar_breadcrumb'].'.php' ?>
|
||||
|
||||
<?php if ($c && $d['layout']['sidebar_menutitle']!='false')
|
||||
include $g['dir_layout'].'/_includes/submenutitle.'.$d['layout']['sidebar_menutitle'].'.php' ?>
|
||||
|
||||
<article>
|
||||
<?php include __KIMS_CONTENT__ ?>
|
||||
</article>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
|
||||
</div><!-- /.page-wrapper -->
|
||||
</div><!-- /.container -->
|
||||
</main>
|
||||
|
||||
<?php include $g['dir_layout'].'/_includes/footer.'.$d['layout']['footer_type'].'.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/component.php' ?>
|
||||
<?php include $g['dir_layout'].'/_includes/_import.foot.php'?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user