first
27
.gitignore
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
### macOS ###
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
.ftpconfig
|
||||||
|
phpinfo.php
|
||||||
|
|
||||||
|
_var/db.info.php
|
||||||
|
_var/install.txt
|
||||||
|
_var/php.version.txt
|
||||||
|
_var/project.key.txt
|
||||||
|
_var/table.info.php
|
||||||
|
_var/site/*
|
||||||
|
_var/bbs/*
|
||||||
|
_var/update/*
|
||||||
|
_tmp/widget/*
|
||||||
|
layouts/bs4-docs/*
|
||||||
|
modules/comment/action/a.oneline_regis.php
|
||||||
|
modules/comment/action/a.comment_regis.php
|
||||||
|
modules/member/admin/point_ori.php
|
||||||
|
modules/member/admin/point_ori.php
|
||||||
|
modules/shop/*
|
||||||
|
|
||||||
|
.vscode/*
|
||||||
|
.history/*
|
||||||
160
.htaccess
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
RewriteEngine On
|
||||||
|
RewriteBase /
|
||||||
|
#RewriteCond %{ENV:HTTPS} !=on
|
||||||
|
#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
|
||||||
|
|
||||||
|
#기본사이트
|
||||||
|
RewriteRule ^(admin)/?$ ./index.php?m=$1&pickmodule=dashboard&panel=Y [L]
|
||||||
|
RewriteRule ^(logout)/?$ ./index.php?a=logout [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(p)/([a-zA-Z0-9_\-]+)/?$ ./index.php?mod=$2&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(c)/([a-zA-Z0-9_\-\/]+)/?$ ./index.php?c=$2&%1 [L]
|
||||||
|
RewriteRule ^([0-9]+)/?$ ./index.php?m=bbs&uid=$1 [L]
|
||||||
|
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(post)/?$ ./index.php?m=post&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(post)/([0-9_]+)/?$ ./index.php?m=post&mod=view&cid=$2&%1 [L]
|
||||||
|
RewriteRule ^(post)/(write)/?$ ./index.php?m=post&mod=write [L]
|
||||||
|
RewriteRule ^(post)/(write)/([0-9_]+)/?$ ./index.php?m=post&mod=write&cid=$3 [L]
|
||||||
|
RewriteRule ^(post)/(category)/?$ ./index.php?m=post&mod=category [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(post)/(category)/([a-zA-Z0-9_\-]+)/?$ ./index.php?m=post&cat=$3&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(post)/(search)/?$ ./index.php?m=post&mod=keyword&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(list)/?$ ./index.php?m=post&mod=list&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(list)/([a-zA-Z0-9_\-]+)/?$ ./index.php?m=post&mod=list_view&listid=$2&%1 [L]
|
||||||
|
|
||||||
|
RewriteRule ^(b)/?$ ./index.php?m=bbs [L]
|
||||||
|
RewriteRule ^(b)/([a-zA-Z0-9_\-]+)/?$ ./index.php?m=bbs&bid=$2 [L]
|
||||||
|
RewriteRule ^(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/?$ ./index.php?m=bbs&bid=$2&uid=$3 [L]
|
||||||
|
RewriteRule ^(b)/([a-zA-Z0-9_\-]+)/write/?$ ./index.php?m=bbs&bid=$2&mod=write [L]
|
||||||
|
RewriteRule ^(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/s([0-9]+)/?$ ./index.php?m=bbs&bid=$2&uid=$3&s=$4 [L]
|
||||||
|
RewriteRule ^(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/([0-9]+)/?$ ./index.php?m=bbs&bid=$2&uid=$3&CMT=$4#CMT [L]
|
||||||
|
RewriteRule ^(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/([0-9]+)/s([0-9]+)/?$ ./index.php?m=bbs&bid=$2&uid=$3&CMT=$4&s=$5#CMT [L]
|
||||||
|
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(dashboard)/?$ ./index.php?mod=dashboard&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(feed)/?$ ./index.php?mod=feed&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(settings)/?$ ./index.php?mod=settings&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(noti)/?$ ./index.php?mod=noti&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(saved)/?$ ./index.php?mod=saved&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(search)/?$ ./index.php?m=search&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(feed)/?$ ./index.php?mod=feed&%1 [L]
|
||||||
|
|
||||||
|
#사이트코드 확장
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/?$ ./index.php?r=$1 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(admin)/?$ ./index.php?r=$1&m=$2&mdule=$2 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(p)/([a-zA-Z0-9_\-]+)/?$ ./index.php?r=$1&mod=$3&%1 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(c)/([a-zA-Z0-9_\-\/]+)/?$ ./index.php?r=$1&c=$3&%1 [L]
|
||||||
|
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/?$ ./index.php?r=$1&m=post&%1 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/(category)/?$ ./index.php?r=$1&m=post&mod=category [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/(category)/([a-zA-Z0-9_\-]+)/?$ ./index.php?r=$1&m=post&cat=$4&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/([0-9_]+)/?$ ./index.php?r=$1&m=post&mod=view&cid=$3&%1 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/(write)/?$ ./index.php?r=$1&m=post&mod=write [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/(search)/?$ ./index.php?m=post&mod=keyword&%1 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/write/?$ ./index.php?r=$1&m=post&mod=write [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(post)/(write)/([0-9_]+)/?$ ./index.php?r=$1&m=post&mod=write&cid=$4 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(list)/?$ ./index.php?r=$1&m=post&mod=list [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(list)/([a-zA-Z0-9_\-]+)/?$ ./index.php?r=$1&m=post&mod=list_view&listid=$3 [L]
|
||||||
|
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(b)/?$ ./index.php?r=$1&m=bbs [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(b)/([a-zA-Z0-9_\-]+)/?$ ./index.php?r=$1&m=bbs&bid=$3 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/?$ ./index.php?r=$1&m=bbs&bid=$3&uid=$4 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(b)/([a-zA-Z0-9_\-]+)/write/?$ ./index.php?r=$1&m=bbs&bid=$3&mod=write [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/s([0-9]+)/?$ ./index.php?r=$1&m=bbs&bid=$3&uid=$4&s=$5 [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/([0-9]+)/?$ ./index.php?r=$1&m=bbs&bid=$3&uid=$4&CMT=$5#CMT [L]
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(b)/([a-zA-Z0-9_\-]+)/([0-9]+)/([0-9]+)/s([0-9]+)/?$ ./index.php?r=$1&m=bbs&bid=$3&uid=$4&CMT=$5&s=$6#CMT [L]
|
||||||
|
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(dashboard)/?$ ./index.php?r=$1&mod=dashboard&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(feed)/?$ ./index.php?r=$1&mod=feed&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(settings)/?$ ./index.php?r=$1&mod=settings&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(noti)/?$ ./index.php?r=$1&mod=noti&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(saved)/?$ ./index.php?r=$1&mod=saved&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(search)/?$ ./index.php?r=$1&m=search&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(feed)/?$ ./index.php?r=$1&mod=feed&%1 [L]
|
||||||
|
|
||||||
|
#외부연결 콜백
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(oauth)/([a-zA-Z]+)/?$ ./index.php?r=$1&m=connect&a=connect&connectReturn=$3&%1 [L]
|
||||||
|
|
||||||
|
#회원 본인인증
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(auth)/([a-zA-Z]+)/?$ ./index.php?r=$1&m=member&front=$3&%1 [L]
|
||||||
|
|
||||||
|
#다운로드
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(download)/([a-zA-Z]+)/?$ ./index.php?r=$1&m=mediaset&a=download&uid=$3 [L]
|
||||||
|
|
||||||
|
#프로필
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(@)([a-z-A-Z-0-9_]+)/?$ ./index.php?mod=profile&mbrid=$2&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(@)([a-z-A-Z-0-9_]+)/([a-z-A-Z-0-9_]+)/?$ ./index.php?mod=profile&mbrid=$2&page=$3&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(@)([a-z-A-Z-0-9_]+)/(post)/([0-9_]+)/?$ ./index.php?m=post&mod=view&mbrid=$2&cid=$4&%1 [L]
|
||||||
|
RewriteRule ^(@)([a-z-A-Z-0-9_]+)/(list)/([a-z-A-Z-0-9_]+)/?$ ./index.php?m=post&mod=list_view&mbrid=$2&listid=$4 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(@)([a-z-A-Z-0-9_]+)/?$ ./index.php?r=$1&mod=profile&mbrid=$3&%1 [L]
|
||||||
|
|
||||||
|
#채널
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(channel)/([a-z-A-Z-0-9_]+)/?$ ./index.php?mod=channel&mbrid=$2&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(channel)/([a-z-A-Z-0-9_]+)/([a-z-A-Z-0-9_]+)/?$ ./index.php?mod=channel&mbrid=$2&page=$3&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(channel)/([a-z-A-Z-0-9_]+)/?$ ./index.php?r=$1&mod=channel&mbrid=$3&%1 [L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(channel)/([a-z-A-Z-0-9_]+)/([a-z-A-Z-0-9_]+)/?$ ./index.php?r=$1&mod=channel&mbrid=$3&page=$4&%1 [L]
|
||||||
|
|
||||||
|
#검색
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^([a-zA-Z0-9_\-]+)/(search)/?$ ./index.php?r=$1&m=search&%1 [L]
|
||||||
|
|
||||||
|
#timthumb
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(thumb)/(.*)x(.*)/u/(.*) ./_core/opensrc/timthumb/thumb.php?src=http://$4&h=$3&w=$2&s=1 [NC,L]
|
||||||
|
RewriteCond %{QUERY_STRING} ^(.*)$
|
||||||
|
RewriteRule ^(thumb-ssl)/(.*)x(.*)/u/(.*) ./_core/opensrc/timthumb/thumb.php?src=https://$4&h=$3&w=$2&s=1 [NC,L]
|
||||||
|
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_([0-9]+)x([0-9]+)\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$6&w=$4&h=$5&s=1 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_s\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=75&h=75&s=1 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_q\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=150&h=150&s=1 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_t\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=100&h=67&s=1 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_m\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=240&h=160&s=1 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_n\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=320&h=213&s=1 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_z\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=640&h=427&s=1 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_c\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=800&h=534 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_b\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=1024&h=683 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_h\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=1600&h=1068 [NC,L]
|
||||||
|
RewriteRule ^(files)/([a-zA-Z0-9_\-]+)/(.*)_k\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/$2/$3.$4&w=2048&h=1367 [NC,L]
|
||||||
|
RewriteRule ^(files)/(noimage)_([0-9]+)x([0-9]+)\.(png)$ ./_core/opensrc/timthumb/thumb.php?src=./_core/images/noimage.png&w=$3&h=$4&s=1 [NC,L]
|
||||||
|
RewriteRule ^(_core)/(images)/(touch)/(.*)-([0-9]+)x([0-9]+)\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./_core/images/touch/$4.$7&w=$5&h=$6&s=1 [NC,L]
|
||||||
|
RewriteRule ^(_var)/(site)/([a-zA-Z0-9_\-]+)/(.*)-([0-9]+)x([0-9]+)\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./_var/site/$3/$4.$7&w=$5&h=$6&s=1 [NC,L]
|
||||||
|
|
||||||
|
#avatar
|
||||||
|
RewriteRule ^(avatar)/(.*)_([0-9]+)x([0-9]+)\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/avatar/$2.$5&w=$3&h=$4&s=1 [NC,L]
|
||||||
|
|
||||||
|
#cover
|
||||||
|
RewriteRule ^(cover)/(.*)_([0-9]+)x([0-9]+)\.(jpg|jpeg|png|gif)$ ./_core/opensrc/timthumb/thumb.php?src=./files/cover/$2.$5&w=$3&h=$4&s=1 [NC,L]
|
||||||
62
LICENSE
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
RBL(Redblock License) 사용 동의서
|
||||||
|
|
||||||
|
kimsQ Rb 2.2.0 이후 버전(이하 소프트웨어)부터는 파머스코드(이하 회사)의 자체 라이선스인 RBL(이하 사용권)을 적용합니다.
|
||||||
|
본 소프트웨어는 회사의 자산으로 소프트웨어의 사용을 위해서는 사용권 취득이 필요하며, 사용권 취득이 확인되지 않는 경우 불법사용으로 간주 합니다.
|
||||||
|
|
||||||
|
목차
|
||||||
|
소프트웨어 사용
|
||||||
|
사용권 종류와 범위
|
||||||
|
사용권 취득 방법
|
||||||
|
사용권 취득 여부 확인 방법
|
||||||
|
사용권 명의 변경
|
||||||
|
소프트웨어 업그레이드 지원 및 보증
|
||||||
|
소프트웨어 사용지원
|
||||||
|
소프트웨어 개작
|
||||||
|
소프트웨어 소스코드 공개
|
||||||
|
기타 및 문의사항
|
||||||
|
|
||||||
|
소프트웨어의 사용
|
||||||
|
소프트웨어를 사용하기 위해서는 체험, 개발, 서비스의 목적을 포함하여 킴스큐 포털(kimsq.com, 이하 포털)에 프로젝트 생성으로 시작해야 합니다.
|
||||||
|
|
||||||
|
사용권 종류와 범위
|
||||||
|
스탠다드 사용권 : 소프트웨어 기본 패키지 , 스탠다드 확장 패키지
|
||||||
|
프리미엄 사용권 : 소프트웨어 기본 패키지 , 스탠다드/프리미엄 확장 패키지
|
||||||
|
|
||||||
|
소프트웨어 1카피 대한 사용권을 구매자에게 제공합니다.
|
||||||
|
|
||||||
|
사용권 취득 방법
|
||||||
|
스탠다드 라이선스 : 스탠다드 라이선스 구매
|
||||||
|
프리미엄 라이선스 : 프리미엄 라이선스 구매
|
||||||
|
|
||||||
|
사용권 취득여부 확인방법
|
||||||
|
포털의 개별 프로젝트의 프로젝트 주요이력과 구매내역을 통해 사용권 취득여부를 확인할 수 있습니다.
|
||||||
|
|
||||||
|
사용권 명의 변경
|
||||||
|
포털에서 제공하는 프로젝트의 소유자를 변경하는 것으로 사용권의 명의 변경을 할 수 있습니다.
|
||||||
|
|
||||||
|
소프트웨어 업그레이드 지원 및 보증
|
||||||
|
회사는 라이선스를 취득한 프로젝트 에게만 소프트웨어 업그레이드 지원 및 보증 의무가 있습니다.
|
||||||
|
|
||||||
|
소프트웨어의 업그레이드는 사용자가 직접 수행해야 하며, 회사는 상세한 업그레이드 가이드와 자동 업데이트 기능을 제공해야 합니다.
|
||||||
|
|
||||||
|
소프트웨어 사용에 있어 오류가 발견될 경우, 사용자는 포털의 지정된 게시판을 통해 오류사항을 등록해야 하며, 회사는 30일내에 패치를 제공해야 합니다.
|
||||||
|
|
||||||
|
소프트웨어 사용지원
|
||||||
|
회사는 현재 유료 라이선스를 취득 프로젝트의 소속원 에게만 소프트웨어에 대한 사용지원 의무가 있습니다.
|
||||||
|
회사는 Rb2 사용자 개별지원은 하지않는 것이 원칙 입니다.
|
||||||
|
오류가 발생한다면 회사에 문제의 원인을 찾을수 있도록 구체적으로 전후상황을 전달해 주어야 합니다. 문제원인을 파악할 수 없는 경우에는 대응하지 않습니다.
|
||||||
|
오류나 개선사항은 각종 이슈사항이 지식으로서 향후 재활용되고 재참조 될수 있도록 kimsq.com 질문 게시판을 이용 해주세요.
|
||||||
|
질문 및 개선사항에 대해서 포털의 관련 게시판을 통해서만 지원하며 전화를 통한 답변은 지원하지 않습니다.
|
||||||
|
사용자의 개별수정으로 발생한 오류 및 개선사항은 지원하지 않습니다.
|
||||||
|
문제의 원인을 파악하기 위해서 사용자 호스팅 계정이나 관리자 모드 접속정보를 요청할 수 있으며 소스코드 패치는 공식 업데이트를 통해서만 제공 합니다.
|
||||||
|
회사는 문서 및 동영상을 통해 사용자에게 소프트웨어 사용을 지원해야 합니다.
|
||||||
|
|
||||||
|
소프트웨어 개작
|
||||||
|
포털에서 제공하는 프로젝트 갤러리를 통해 공급된 기본/확장요소에 대하여 포털내에서 자유로운 개작 배포 및 마켓판매를 허용하며, 소스코드에 포함된 저작권 관련 문구는 삭제할 수 없습니다.
|
||||||
|
|
||||||
|
소프트웨어 소스코드 공개
|
||||||
|
소프트웨어의 기본 및 확장패키지의 모든 소스코드는 github.com 전용 저장소에 공개되어 있어 자유롭게 참조하실 수 있습니다.
|
||||||
|
https://github.com/kimsq/rb2/
|
||||||
|
|
||||||
|
기타 및 문의 사항
|
||||||
|
회사의 허가가 없는 소프트웨어의 재배포를 제한하며, 사용에 대한 기타 문의는 farmerscoding@gmail.com 으로 문의 주시기 바랍니다.
|
||||||
71
README.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
# kimsQ Rb2
|
||||||
|
|
||||||
|
## 개요
|
||||||
|
|
||||||
|
## 설치환경
|
||||||
|
|
||||||
|
- PHP 7 이상
|
||||||
|
- MySQL 5.5 이상 또는 mariadb-10.0.x 이상
|
||||||
|
- https
|
||||||
|
|
||||||
|
### 웹서버 설정
|
||||||
|
- CGI 사용안함
|
||||||
|
- htaccess 사용
|
||||||
|
- [git 설치](https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%84%A4%EC%B9%98)
|
||||||
|
|
||||||
|
|
||||||
|
### PHP 확장모듈
|
||||||
|
- CURL
|
||||||
|
- ZEND 2.x
|
||||||
|
- GD 2.x
|
||||||
|
- ICONV
|
||||||
|
- dom/xml
|
||||||
|
|
||||||
|
### PHP 설정
|
||||||
|
- allow_url_fopen : 허용안함
|
||||||
|
|
||||||
|
|
||||||
|
## 설치하기
|
||||||
|
|
||||||
|
### 터미널(SSH)을 통한 설치
|
||||||
|
1. <code>git init</code>
|
||||||
|
1. <code>git remote add origin https://github.com/kimsQ/rb2.git</code>
|
||||||
|
1. <code>git pull origin master</code>
|
||||||
|
1. 브라우저를 통해 index.php 를 호출합니다.
|
||||||
|
|
||||||
|
### 인스톨러를 통한 설치
|
||||||
|
1. rb-installer.zip 을 [다운](https://github.com/kimsQ/rb2/archive/installer.zip) 받습니다.
|
||||||
|
1. 압축해제 후, rb-installer 폴더 내부의 index.php 를 FTP를 이용하여 서버계정 폴더에 업로드 합니다.
|
||||||
|
1. 브라우저를 통해 index.php 를 호출합니다.
|
||||||
|
|
||||||
|
## 업데이트
|
||||||
|
원격 업데이트는 킴스큐의 기본 패키지 파일들을 항상 최신의 상태로 유지할 수 있는 시스템입니다.
|
||||||
|
킴스큐 Rb2 저장소 의 master 브랜치의 최신 코드가 적용됩니다.
|
||||||
|
수정하거나 추가한 코드가 있을 경우, 수정내역이 삭제되므로 업데이트 실행전 레이아웃 또는 테마를 별도저장 해주세요.
|
||||||
|
최신패치는 git을 통해 동작하며 명령어 실행을 위해서는 서버에 git이 설치되어 있어야 합니다.
|
||||||
|
|
||||||
|
### 관리자모드를 통한 업데이트
|
||||||
|
- 데스크탑 : 관리자 모드 > 시스템 > 업데이트
|
||||||
|
- 모바일 : 설정 > 소프트웨어 정보 > 업데이트
|
||||||
|
|
||||||
|
### 수동 업데이트
|
||||||
|
터미널 접속 후 아래의 명령어를 순차적으로 실행합니다.
|
||||||
|
1. <code>git reset --hard</code>
|
||||||
|
1. <code>git pull origin master</code>
|
||||||
|
|
||||||
|
### 업데이트시 특정 파일 제외 방법
|
||||||
|
터미널 접속 후 아래의 명령어를 실행합니다.
|
||||||
|
- 제외목록에 추가 : <code>git update-index --skip-worktree [file]</code>
|
||||||
|
- 제외목록에서 제외 : <code>git update-index --no-skip-worktree [file]</code>
|
||||||
|
|
||||||
|
## 메뉴얼
|
||||||
|
|
||||||
|
[메뉴얼 보기](http://kimsq.com/docs)
|
||||||
|
|
||||||
|
|
||||||
|
## 라이센스
|
||||||
|
- 체험 및 교육과 비영리 목적 으로만 무료사용을 허가 합니다.
|
||||||
|
- 개인과 기업의 영리목적 사용을 위해서는 도메인 단위로 라이센스를 구매 하셔야 합니다.
|
||||||
|
- 무단 재배포를 금지 합니다.
|
||||||
|
- 본 소프트웨어는 권기택에 저작권이 있습니다.
|
||||||
|
- 기타 문의 farmerscoding@gmail.com
|
||||||
302
_core/css/article.css
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
|
||||||
|
/* title */
|
||||||
|
.rb-article h2 {
|
||||||
|
display: block;
|
||||||
|
margin: -30px 0 0;
|
||||||
|
padding: 60px 0 36px;
|
||||||
|
border: 0;
|
||||||
|
font-size: 36px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 53px;
|
||||||
|
}
|
||||||
|
.rb-article h2 ~ h2{
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
.rb-article h3 {
|
||||||
|
display: block;
|
||||||
|
margin: 50px 0 11px;
|
||||||
|
padding-top: 60px;
|
||||||
|
border-top: 1px solid #e6e6e6;
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.rb-article h4 {
|
||||||
|
display: block;
|
||||||
|
margin: 52px 0 11px;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.rb-article p + h4 {
|
||||||
|
margin-top: 47px;
|
||||||
|
}
|
||||||
|
.rb-article h5 {
|
||||||
|
display: block;
|
||||||
|
margin: 24px 0 20px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 25px;
|
||||||
|
}
|
||||||
|
.rb-article p + .tit_depth4 {
|
||||||
|
margin-top: -9px;
|
||||||
|
}
|
||||||
|
.rb-article p.styled_tit {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
.rb-article h4 {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
margin: 44px 0 23px;
|
||||||
|
padding-left: 15px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 27px;
|
||||||
|
}
|
||||||
|
.rb-article h4 span {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #314ffe;
|
||||||
|
}
|
||||||
|
.rb-article p + h4 {
|
||||||
|
margin-top: 38px;
|
||||||
|
}
|
||||||
|
.rb-article h4:after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
left: 0;
|
||||||
|
width: 4px;
|
||||||
|
height: 20px;
|
||||||
|
background-color: #007bff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* link */
|
||||||
|
.rb-article a {
|
||||||
|
font-weight: 300;
|
||||||
|
color: #007bff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* desc div */
|
||||||
|
.rb-article p {
|
||||||
|
margin: 22px 0;
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 26px;
|
||||||
|
word-break: keep-all;
|
||||||
|
}
|
||||||
|
.rb-article p + p {
|
||||||
|
margin-top: -4px;
|
||||||
|
}
|
||||||
|
.rb-article p strong {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.rb-article h3 + p {
|
||||||
|
margin-top: 11px;
|
||||||
|
}
|
||||||
|
.rb-article h4 + p {
|
||||||
|
margin-top: 14px;
|
||||||
|
}
|
||||||
|
.rb-article h5 + p {
|
||||||
|
margin-top: -6px;
|
||||||
|
}
|
||||||
|
.rb-article .tit_info + p {
|
||||||
|
margin-top: -6px;
|
||||||
|
}
|
||||||
|
.rb-article ul + p {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
.rb-article pre + p {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* blockquote */
|
||||||
|
.rb-article blockquote {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* list */
|
||||||
|
.rb-article ul {
|
||||||
|
margin: 14px 0 0;
|
||||||
|
}
|
||||||
|
.rb-article ul li {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 26px;
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.rb-article ul li:after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 12px;
|
||||||
|
left: 0;
|
||||||
|
width: 3px;
|
||||||
|
height: 3px;
|
||||||
|
background-color: #222;
|
||||||
|
border-radius: 100%;
|
||||||
|
}
|
||||||
|
.rb-article ul li:last-child {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
.rb-article p + ul {
|
||||||
|
margin-top: -11px;
|
||||||
|
}
|
||||||
|
.rb-article p + .list_step {
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* block */
|
||||||
|
pre {
|
||||||
|
overflow-x: auto;
|
||||||
|
margin: 16px 0;
|
||||||
|
border: 1px solid #e6e6e6;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: 'Roboto Mono', 'NotoSans Light', monospace, 'Malgun Gothic',
|
||||||
|
'맑은 고딕', 'Apple SD Gothic Neo', '돋움', dotum, sans-serif;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #222;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 26px;
|
||||||
|
background-color: #f8f9f9;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
display: block;
|
||||||
|
padding: 13px 19px;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
pre + pre {
|
||||||
|
margin-top: 26px;
|
||||||
|
}
|
||||||
|
p + pre {
|
||||||
|
margin-top: -3px;
|
||||||
|
}
|
||||||
|
pre .hljs {
|
||||||
|
padding-bottom: 15px;
|
||||||
|
background-color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* table */
|
||||||
|
.rb-article figure.table table {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: -3px;
|
||||||
|
border-top: 1px solid #e6e6e6;
|
||||||
|
}
|
||||||
|
.rb-article figure.table table caption {
|
||||||
|
overflow: hidden;
|
||||||
|
width: 1px;
|
||||||
|
font-size: 1px;
|
||||||
|
line-height: 0;
|
||||||
|
text-indent: -9999px;
|
||||||
|
}
|
||||||
|
.rb-article figure.table table th,
|
||||||
|
.rb-article figure.table table td {
|
||||||
|
border: 1px solid #e6e6e6;
|
||||||
|
border-width: 0 0 1px 1px;
|
||||||
|
vertical-align: top;
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
.rb-article figure.table table tr th:first-child,
|
||||||
|
.rb-article figure.table table tr td:first-child {
|
||||||
|
border-left: 0;
|
||||||
|
}
|
||||||
|
.rb-article figure.table table th {
|
||||||
|
padding: 11px 0 13px 19px;
|
||||||
|
text-align: left;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 26px;
|
||||||
|
background-color: #f3f5fe;
|
||||||
|
}
|
||||||
|
.rb-article figure.table table td {
|
||||||
|
padding: 15px 20px 16px;
|
||||||
|
font-weight: 300;
|
||||||
|
word-break: keep-all;
|
||||||
|
}
|
||||||
|
.rb-article figure.table table td a {
|
||||||
|
font-size: 14px;
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* img */
|
||||||
|
.rb-article figure.image img {
|
||||||
|
display: block;
|
||||||
|
margin: 25px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-article ol {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.rb-article ol li {
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 6px;
|
||||||
|
background-color: #f8f9f9;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.rb-article ol li:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.rb-article ol strong {
|
||||||
|
display: block;
|
||||||
|
height: 60px;
|
||||||
|
font-weight: 400;
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 58px;
|
||||||
|
background-color: #f3f5fe;
|
||||||
|
}
|
||||||
|
.rb-article ol img {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
margin: 25px auto;
|
||||||
|
}
|
||||||
|
.rb-article ol p {
|
||||||
|
margin: 21px 0;
|
||||||
|
padding: 0 30px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.5;
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
.rb-article ol img + p {
|
||||||
|
margin-top: -4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* blank */
|
||||||
|
.rb-article .blank {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* label */
|
||||||
|
.rb-article p em,
|
||||||
|
.rb-article p var {
|
||||||
|
overflow: hidden;
|
||||||
|
display: inline-block;
|
||||||
|
height: 23px;
|
||||||
|
margin: 0 3px;
|
||||||
|
padding: 0 5px;
|
||||||
|
border: 1px solid #e6e6e6;
|
||||||
|
border-radius: 3px;
|
||||||
|
font-family: 'Roboto Mono', monospace, 'Malgun Gothic',
|
||||||
|
'맑은 고딕', 'Apple SD Gothic Neo', '돋움', dotum, sans-serif;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 22px;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #f9fafa;
|
||||||
|
}
|
||||||
|
.rb-article p em a,
|
||||||
|
.rb-article p var a {
|
||||||
|
color: #007bff;
|
||||||
|
}
|
||||||
700
_core/css/github-markdown.css
Normal file
@@ -0,0 +1,700 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: octicons-link;
|
||||||
|
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body {
|
||||||
|
-ms-text-size-adjust: 100%;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: #24292e;
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.5;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-c {
|
||||||
|
color: #6a737d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-c1,
|
||||||
|
.markdown-body .pl-s .pl-v {
|
||||||
|
color: #005cc5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-e,
|
||||||
|
.markdown-body .pl-en {
|
||||||
|
color: #6f42c1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-smi,
|
||||||
|
.markdown-body .pl-s .pl-s1 {
|
||||||
|
color: #24292e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-ent {
|
||||||
|
color: #22863a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-k {
|
||||||
|
color: #d73a49;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-s,
|
||||||
|
.markdown-body .pl-pds,
|
||||||
|
.markdown-body .pl-s .pl-pse .pl-s1,
|
||||||
|
.markdown-body .pl-sr,
|
||||||
|
.markdown-body .pl-sr .pl-cce,
|
||||||
|
.markdown-body .pl-sr .pl-sre,
|
||||||
|
.markdown-body .pl-sr .pl-sra {
|
||||||
|
color: #032f62;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-v,
|
||||||
|
.markdown-body .pl-smw {
|
||||||
|
color: #e36209;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-bu {
|
||||||
|
color: #b31d28;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-ii {
|
||||||
|
color: #fafbfc;
|
||||||
|
background-color: #b31d28;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-c2 {
|
||||||
|
color: #fafbfc;
|
||||||
|
background-color: #d73a49;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-c2::before {
|
||||||
|
content: "^M";
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-sr .pl-cce {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #22863a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-ml {
|
||||||
|
color: #735c0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-mh,
|
||||||
|
.markdown-body .pl-mh .pl-en,
|
||||||
|
.markdown-body .pl-ms {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #005cc5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-mi {
|
||||||
|
font-style: italic;
|
||||||
|
color: #24292e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-mb {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #24292e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-md {
|
||||||
|
color: #b31d28;
|
||||||
|
background-color: #ffeef0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-mi1 {
|
||||||
|
color: #22863a;
|
||||||
|
background-color: #f0fff4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-mc {
|
||||||
|
color: #e36209;
|
||||||
|
background-color: #ffebda;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-mi2 {
|
||||||
|
color: #f6f8fa;
|
||||||
|
background-color: #005cc5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-mdr {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #6f42c1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-ba {
|
||||||
|
color: #586069;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-sg {
|
||||||
|
color: #959da5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-corl {
|
||||||
|
text-decoration: underline;
|
||||||
|
color: #032f62;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .octicon {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: text-top;
|
||||||
|
fill: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body a {
|
||||||
|
background-color: transparent;
|
||||||
|
-webkit-text-decoration-skip: objects;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body a:active,
|
||||||
|
.markdown-body a:hover {
|
||||||
|
outline-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body strong {
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body strong {
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
margin: 0.67em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body img {
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body svg:not(:root) {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body code,
|
||||||
|
.markdown-body kbd,
|
||||||
|
.markdown-body pre {
|
||||||
|
font-family: monospace, monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body hr {
|
||||||
|
box-sizing: content-box;
|
||||||
|
height: 0;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body input {
|
||||||
|
font: inherit;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body input {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body [type="checkbox"] {
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body * {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body input {
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body a {
|
||||||
|
color: #0366d6;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body strong {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body hr {
|
||||||
|
height: 0;
|
||||||
|
margin: 15px 0;
|
||||||
|
overflow: hidden;
|
||||||
|
background: transparent;
|
||||||
|
border: 0;
|
||||||
|
border-bottom: 1px solid #dfe2e5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body hr::before {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body hr::after {
|
||||||
|
display: table;
|
||||||
|
clear: both;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body table {
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body td,
|
||||||
|
.markdown-body th {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1,
|
||||||
|
.markdown-body h2,
|
||||||
|
.markdown-body h3,
|
||||||
|
.markdown-body h4,
|
||||||
|
.markdown-body h5,
|
||||||
|
.markdown-body h6 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h3 {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h4 {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h5 {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h6 {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body p {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body blockquote {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body ul,
|
||||||
|
.markdown-body ol {
|
||||||
|
padding-left: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body ol ol,
|
||||||
|
.markdown-body ul ol {
|
||||||
|
list-style-type: lower-roman;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body ul ul ol,
|
||||||
|
.markdown-body ul ol ol,
|
||||||
|
.markdown-body ol ul ol,
|
||||||
|
.markdown-body ol ol ol {
|
||||||
|
list-style-type: lower-alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body dd {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body code {
|
||||||
|
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body pre {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .octicon {
|
||||||
|
vertical-align: text-bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-0 {
|
||||||
|
padding-left: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-1 {
|
||||||
|
padding-left: 4px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-2 {
|
||||||
|
padding-left: 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-3 {
|
||||||
|
padding-left: 16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-4 {
|
||||||
|
padding-left: 24px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-5 {
|
||||||
|
padding-left: 32px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .pl-6 {
|
||||||
|
padding-left: 40px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body::before {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body::after {
|
||||||
|
display: table;
|
||||||
|
clear: both;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body>*:first-child {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body>*:last-child {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body a:not([href]) {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .anchor {
|
||||||
|
float: left;
|
||||||
|
padding-right: 4px;
|
||||||
|
margin-left: -20px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .anchor:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body p,
|
||||||
|
.markdown-body blockquote,
|
||||||
|
.markdown-body ul,
|
||||||
|
.markdown-body ol,
|
||||||
|
.markdown-body dl,
|
||||||
|
.markdown-body table,
|
||||||
|
.markdown-body pre {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body hr {
|
||||||
|
height: 0.25em;
|
||||||
|
padding: 0;
|
||||||
|
margin: 24px 0;
|
||||||
|
background-color: #e1e4e8;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body blockquote {
|
||||||
|
padding: 0 1em;
|
||||||
|
color: #6a737d;
|
||||||
|
border-left: 0.25em solid #dfe2e5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body blockquote>:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body blockquote>:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body kbd {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 3px 5px;
|
||||||
|
font-size: 11px;
|
||||||
|
line-height: 10px;
|
||||||
|
color: #444d56;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #fafbfc;
|
||||||
|
border: solid 1px #c6cbd1;
|
||||||
|
border-bottom-color: #959da5;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: inset 0 -1px 0 #959da5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1,
|
||||||
|
.markdown-body h2,
|
||||||
|
.markdown-body h3,
|
||||||
|
.markdown-body h4,
|
||||||
|
.markdown-body h5,
|
||||||
|
.markdown-body h6 {
|
||||||
|
margin-top: 24px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1 .octicon-link,
|
||||||
|
.markdown-body h2 .octicon-link,
|
||||||
|
.markdown-body h3 .octicon-link,
|
||||||
|
.markdown-body h4 .octicon-link,
|
||||||
|
.markdown-body h5 .octicon-link,
|
||||||
|
.markdown-body h6 .octicon-link {
|
||||||
|
color: #1b1f23;
|
||||||
|
vertical-align: middle;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1:hover .anchor,
|
||||||
|
.markdown-body h2:hover .anchor,
|
||||||
|
.markdown-body h3:hover .anchor,
|
||||||
|
.markdown-body h4:hover .anchor,
|
||||||
|
.markdown-body h5:hover .anchor,
|
||||||
|
.markdown-body h6:hover .anchor {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1:hover .anchor .octicon-link,
|
||||||
|
.markdown-body h2:hover .anchor .octicon-link,
|
||||||
|
.markdown-body h3:hover .anchor .octicon-link,
|
||||||
|
.markdown-body h4:hover .anchor .octicon-link,
|
||||||
|
.markdown-body h5:hover .anchor .octicon-link,
|
||||||
|
.markdown-body h6:hover .anchor .octicon-link {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h1 {
|
||||||
|
padding-bottom: 0.3em;
|
||||||
|
font-size: 2em;
|
||||||
|
border-bottom: 1px solid #eaecef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h2 {
|
||||||
|
padding-bottom: 0.3em;
|
||||||
|
font-size: 1.5em;
|
||||||
|
border-bottom: 1px solid #eaecef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h3 {
|
||||||
|
font-size: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h4 {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h5 {
|
||||||
|
font-size: 0.875em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body h6 {
|
||||||
|
font-size: 0.85em;
|
||||||
|
color: #6a737d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body ul,
|
||||||
|
.markdown-body ol {
|
||||||
|
padding-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body ul ul,
|
||||||
|
.markdown-body ul ol,
|
||||||
|
.markdown-body ol ol,
|
||||||
|
.markdown-body ol ul {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body li>p {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body li+li {
|
||||||
|
margin-top: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body dl {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body dl dt {
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 16px;
|
||||||
|
font-size: 1em;
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body dl dd {
|
||||||
|
padding: 0 16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body table {
|
||||||
|
/* display: block; */
|
||||||
|
width: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body table th {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body table th,
|
||||||
|
.markdown-body table td {
|
||||||
|
padding: 6px 13px;
|
||||||
|
border: 1px solid #dfe2e5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body table tr {
|
||||||
|
background-color: #fff;
|
||||||
|
border-top: 1px solid #c6cbd1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body table tr:nth-child(2n) {
|
||||||
|
background-color: #f6f8fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body img {
|
||||||
|
max-width: 100%;
|
||||||
|
box-sizing: content-box;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body code {
|
||||||
|
padding: 0;
|
||||||
|
padding-top: 0.2em;
|
||||||
|
padding-bottom: 0.2em;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 85%;
|
||||||
|
background-color: rgba(27,31,35,0.05);
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body code::before,
|
||||||
|
.markdown-body code::after {
|
||||||
|
letter-spacing: -0.2em;
|
||||||
|
content: "\00a0";
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body pre {
|
||||||
|
word-wrap: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body pre>code {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
word-break: normal;
|
||||||
|
white-space: pre;
|
||||||
|
background: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .highlight {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .highlight pre {
|
||||||
|
margin-bottom: 0;
|
||||||
|
word-break: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .highlight pre,
|
||||||
|
.markdown-body pre {
|
||||||
|
padding: 16px;
|
||||||
|
overflow: auto;
|
||||||
|
font-size: 85%;
|
||||||
|
line-height: 1.45;
|
||||||
|
background-color: #f6f8fa;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body pre code {
|
||||||
|
display: inline;
|
||||||
|
max-width: auto;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
overflow: visible;
|
||||||
|
line-height: inherit;
|
||||||
|
word-wrap: normal;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body pre code::before,
|
||||||
|
.markdown-body pre code::after {
|
||||||
|
content: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .full-commit .btn-outline:not(:disabled):hover {
|
||||||
|
color: #005cc5;
|
||||||
|
border-color: #005cc5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body kbd {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 3px 5px;
|
||||||
|
font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||||
|
line-height: 10px;
|
||||||
|
color: #444d56;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #fafbfc;
|
||||||
|
border: solid 1px #d1d5da;
|
||||||
|
border-bottom-color: #c6cbd1;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: inset 0 -1px 0 #c6cbd1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body :checked+.radio-label {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
border-color: #0366d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .task-list-item {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .task-list-item+.task-list-item {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body .task-list-item input {
|
||||||
|
margin: 0 0.2em 0.25em -1.6em;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body hr {
|
||||||
|
border-bottom-color: #eee;
|
||||||
|
}
|
||||||
2569
_core/css/sys.css
Normal file
29
_core/engine/action.engine.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
if(!defined('__KIMS__')) exit;
|
||||||
|
|
||||||
|
$g['referer'] = $_SERVER['HTTP_REFERER'];
|
||||||
|
if (!$g['referer'] || !strpos($g['referer'],'&m=admin&'))
|
||||||
|
{
|
||||||
|
$_filterSet = array('nic','name','id');
|
||||||
|
foreach ($_filterSet as $_ft)
|
||||||
|
{
|
||||||
|
${$_ft} = preg_replace("(\.|\;|\\\)",'',strip_tags(${$_ft}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strpos(',join,',$a))
|
||||||
|
{
|
||||||
|
if (!$g['referer'] || !strpos($g['referer'],$_SERVER['HTTP_HOST'])) exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$g['act_module0'] = $g['dir_module'].$a.'.php';
|
||||||
|
$g['act_module1'] = $g['dir_module'].'action/'.(strpos($a,'/')?str_replace('/','/a.',$a):'a.'.$a).'.php';
|
||||||
|
$g['act_module2'] = $g['dir_module'].'action/a.'.$a.'.php';
|
||||||
|
$g['act_module3'] = $g['referer'] && strpos($g['referer'],'&m=admin&') ? ($_HMD['lang']?$_HMD['lang']:$d['admin']['syslang']) : ($_HS['lang']?$_HS['lang']:$d['admin']['syslang']);
|
||||||
|
|
||||||
|
include getLangFile($g['dir_module'].'language/',$g['act_module3'],'/lang.action.php');
|
||||||
|
|
||||||
|
if (is_file($g['act_module0'])) include $g['act_module0'];
|
||||||
|
if (is_file($g['act_module1'])) include $g['act_module1'];
|
||||||
|
if (is_file($g['act_module2'])) include $g['act_module2'];
|
||||||
|
?>
|
||||||
1900
_core/engine/adminpanel.engine.php
Normal file
1903
_core/engine/adminpanel/main.css
Normal file
0
_core/engine/adminpanel/main.js
Normal file
658
_core/engine/adminpanel/theme/kimsq-dark.css
Normal file
@@ -0,0 +1,658 @@
|
|||||||
|
body {
|
||||||
|
background-color: #343a40
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************** theme ******************/
|
||||||
|
|
||||||
|
.form-control,
|
||||||
|
.input-group-lg>.form-control {
|
||||||
|
border-radius: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.btn-light {
|
||||||
|
color: #24292e;
|
||||||
|
user-select: none;
|
||||||
|
background-color: #eff3f6;
|
||||||
|
background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
background-position: -1px -1px;
|
||||||
|
background-size: 110% 110%;
|
||||||
|
border: 1px solid rgba(27, 31, 35, 0.2);
|
||||||
|
border-radius: 0.25em;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: middle;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:hover,
|
||||||
|
.btn-light.hover {
|
||||||
|
background-color: #e6ebf1;
|
||||||
|
background-image: linear-gradient(-180deg, #f0f3f6 0%, #e6ebf1 90%);
|
||||||
|
background-position: 0 -0.5em;
|
||||||
|
border-color: rgba(27, 31, 35, 0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:active,
|
||||||
|
.btn-light.active,
|
||||||
|
.btn-light.selected {
|
||||||
|
background-color: #e9ecef !important;
|
||||||
|
background-image: none !important;
|
||||||
|
border-color: rgba(27, 31, 35, 0.35) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:disabled,
|
||||||
|
.btn-light.disabled {
|
||||||
|
color: rgba(36, 41, 46, 0.4);
|
||||||
|
background-color: #eff3f6;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid rgba(27, 31, 35, 0.2);
|
||||||
|
border-color: rgba(27, 31, 35, 0.2);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:focus,
|
||||||
|
.btn-light.focus {
|
||||||
|
box-shadow: 0 0 0 0.2em rgba(3, 102, 214, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .card-header a {
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .card-header.bg-primary a {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-toggle="buttons"].btn-group .btn-light {
|
||||||
|
color: #777 !important;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-toggle="buttons"].btn-group .btn-light.active,
|
||||||
|
[data-toggle="buttons"].btn-group .btn-light:active {
|
||||||
|
color: #eee !important;
|
||||||
|
background-color: rgba(0, 0, 0, .09) !important;
|
||||||
|
border-color: #222 !important;
|
||||||
|
-webkit-box-shadow: inset 1px 1px 3px #222;
|
||||||
|
-moz-box-shadow: inset 1px 1px 3px #222;
|
||||||
|
box-shadow: inset 1px 1px 3px #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sm {
|
||||||
|
padding: 3px 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.btn,
|
||||||
|
[role="button"] {
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger {
|
||||||
|
color: #cb2431;
|
||||||
|
border: 1px solid rgba(27, 31, 35, 0.2);
|
||||||
|
background-color: #fafbfc;
|
||||||
|
background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:hover {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #cb2431;
|
||||||
|
background-image: linear-gradient(-180deg, #de4450 0%, #cb2431 90%);
|
||||||
|
border-color: rgba(27, 31, 35, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-danger.active {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #b5202c;
|
||||||
|
background-image: none;
|
||||||
|
border-color: rgba(27, 31, 35, 0.5);
|
||||||
|
box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:disabled,
|
||||||
|
.btn-danger.disabled {
|
||||||
|
color: rgba(203, 36, 49, 0.4);
|
||||||
|
background-color: #eff3f6;
|
||||||
|
background-image: none;
|
||||||
|
border-color: rgba(27, 31, 35, 0.2);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*tooltip*/
|
||||||
|
.tooltip-inner {
|
||||||
|
background-color: #0366d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.bs-tooltip-top .arrow::before,
|
||||||
|
.tooltip.bs-tooltip-auto[x-placement^="top"] .arrow::before {
|
||||||
|
border-top-color: #0366d6
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*************** sidebar-inverse ******************/
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse {
|
||||||
|
display: block;
|
||||||
|
background-color: #343a40;
|
||||||
|
min-height: 100%;
|
||||||
|
border-right: 1px solid #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-system-admin .rb-system-sidebar.rb-inverse,
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse {
|
||||||
|
box-shadow: 1px 0 3px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin .btn-toolbar .btn {
|
||||||
|
color: #A8A8A8
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin .btn-toolbar .btn:hover {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin .btn-toolbar .btn:active {
|
||||||
|
color: #428BCA
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-buttons .rb-content-padded {
|
||||||
|
border-bottom: 1px solid #1A1817;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-buttons .rb-inner {
|
||||||
|
border-bottom: 1px solid #1A1817;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a:focus {
|
||||||
|
color: #c9c9c9
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active a,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active a:hover {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.open>a,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.open>a b {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin nav>ul li.active ul li.active>a {
|
||||||
|
background-color: #272c32
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li:hover .menu-item-parent {
|
||||||
|
color: #428bca;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active:hover .menu-item-parent {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a {
|
||||||
|
color: #a8a8a8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar-modules .list-group-item.active a {
|
||||||
|
background-color: #272c32;
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li .menu-item-parent {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a:focus {
|
||||||
|
color: #c9c9c9
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul ul {
|
||||||
|
/*background: rgba(69, 69, 69, .7);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul .active ul {
|
||||||
|
/*background: rgba(69, 69, 69, 1);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul>li>ul::before {
|
||||||
|
border-left: 1px dotted #7A7A7A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul li.active>a.collapsed:before {
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul li.active ul li.active>a:before {
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a:active {
|
||||||
|
background: #000 !important
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul ul li::before {
|
||||||
|
border-top: 1px dotted #7A7A7A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul>li>a>i>em {
|
||||||
|
background: #ED1C24;
|
||||||
|
color: #fff;
|
||||||
|
border: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*login-info*/
|
||||||
|
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .login-info a.rb-username {
|
||||||
|
color: #a8a8a8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .login-info>a:hover {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .login-info {
|
||||||
|
border-bottom: 1px solid #181818
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 992px) and (min-width: 768px) {
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* minified-sidebar */
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
|
||||||
|
background: transparent;
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-minify-sidebar:hover {
|
||||||
|
/*background: #646464;*/
|
||||||
|
color: #E4E4E4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-minify-sidebar {
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-inbox-badge {
|
||||||
|
background: #ED1C24;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>ul {
|
||||||
|
background: #ed1c24 !important
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>a>.menu-item-parent {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
color: #333 !important;
|
||||||
|
text-shadow: none;
|
||||||
|
-webkit-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
-moz-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
border-left: 1px solid #bfbfbf;
|
||||||
|
border-top: 1px solid #D8D4D4;
|
||||||
|
border-bottom: 1px solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul {
|
||||||
|
border: 1px solid #bfbfbf;
|
||||||
|
-webkit-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
-moz-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
background: #222222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li {
|
||||||
|
background-color: rgba(69, 69, 69, .9)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li>ul>li {
|
||||||
|
background-color: #484B50
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li {
|
||||||
|
border-bottom: 1px solid #1A1817;
|
||||||
|
border-top: 1px solid #525151
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* hide-sidebar */
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-hide-sidebar2 {
|
||||||
|
border-bottom: 1px solid #302F2F;
|
||||||
|
background: transparent;
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse {
|
||||||
|
-moz-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
|
||||||
|
-webkit-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
|
||||||
|
box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse .rb-hide-sidebar {
|
||||||
|
color: #333;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
border-color: #adadad;
|
||||||
|
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||||
|
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-system-site {
|
||||||
|
background-color: #343a40;
|
||||||
|
border-left: 1px solid #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .rb-panel-top {
|
||||||
|
background-color: #272c32 !important;
|
||||||
|
border-bottom: 1px solid #222;
|
||||||
|
color: #eee
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .rb-icon-hide {
|
||||||
|
color: #eee
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-system-site .rb-system-site .rb-icon-hide:hover .rb-icon:before,
|
||||||
|
.rb-system-site .rb-icon-hide:hover .rb-icon:before {
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tabs-below */
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs {
|
||||||
|
border-bottom: 1px solid #c9c9c9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li>a {
|
||||||
|
border: 1px solid #c9c9c9;
|
||||||
|
background: -moz-linear-gradient(top, #999 0%, #444 100%);
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #999), color-stop(100%, #444));
|
||||||
|
background: -webkit-linear-gradient(top, #999 0%, #444 100%);
|
||||||
|
background: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||||
|
background: -ms-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||||
|
background: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
||||||
|
filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#99999999', endColorstr='#44444444', GradientType=0);
|
||||||
|
-webkit-box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 1);
|
||||||
|
box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 1);
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li>a.active {
|
||||||
|
color: #eee;
|
||||||
|
background: #ffffff;
|
||||||
|
border: 1px solid #c9c9c9;
|
||||||
|
border-right: 1px solid transparent;
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li>a:hover {
|
||||||
|
color: #62aeef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li:last-child>a,
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li.last-child>a {
|
||||||
|
border-right: 1px solid #c9c9c9
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs {
|
||||||
|
border-color: #c5d0dc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:focus {
|
||||||
|
margin-left: -1px
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:focus {
|
||||||
|
box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.15);
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-main {
|
||||||
|
background-color: #343a40
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .list-group-item {
|
||||||
|
line-height: 1.2
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .custom-control-description {
|
||||||
|
line-height: 1.9
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-checkbox,
|
||||||
|
.custom-radio {
|
||||||
|
line-height: 1.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-control-label::before {
|
||||||
|
background-color: #1f2227;
|
||||||
|
border-radius: .15rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.rb-system-site .rb-content-padded {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .nav-tabs .nav-link {
|
||||||
|
border-radius: 0;
|
||||||
|
background-color: #272c32;
|
||||||
|
color: #999
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs {
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-item {
|
||||||
|
width: 25%
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link {
|
||||||
|
padding: .5rem;
|
||||||
|
border-right: 1px solid #222;
|
||||||
|
border-bottom: 1px solid #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link:hover {
|
||||||
|
border-color: #222;
|
||||||
|
border-top-color: transparent;
|
||||||
|
border-left-color: transparent
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link.active {
|
||||||
|
color: #eee;
|
||||||
|
background-color: inherit;
|
||||||
|
border: 1px solid #222;
|
||||||
|
border-top: 0;
|
||||||
|
border-bottom: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link.active:first-child {
|
||||||
|
border-left: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site fieldset[disabled] .btn-light,
|
||||||
|
.rb-system-site fieldset[disabled] .btn-light.active {
|
||||||
|
background-image: none;
|
||||||
|
background-color: inherit
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .card {
|
||||||
|
background-color: inherit;
|
||||||
|
color: #eee
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .form-control {
|
||||||
|
background-color: #1f2227;
|
||||||
|
color: #abafb5;
|
||||||
|
border-color: #272c31
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .form-control:focus {
|
||||||
|
color: #abafb5;
|
||||||
|
background-color: #1f2227;
|
||||||
|
border-color: #5792ef;
|
||||||
|
border-width: 1px;
|
||||||
|
outline: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-light {
|
||||||
|
background-color: rgba(0, 0, 0, .03) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn.btn-light {
|
||||||
|
background-color: #343a40;
|
||||||
|
background-image: none;
|
||||||
|
color: #ccc !important;
|
||||||
|
border-color: #181a1e;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn.btn-block {
|
||||||
|
border-radius: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-outline-primary {
|
||||||
|
color: #ccc;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-system-site .rb-system-site .rb-opener {
|
||||||
|
background-color: inherit;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
box-shadow: -1px 0 2px rgba(0, 0, 0, 0.5);
|
||||||
|
color: #9ea6b3;
|
||||||
|
display: block;
|
||||||
|
left: -20px;
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .custom-select {
|
||||||
|
background-color: #272c32;
|
||||||
|
display: inline-block;
|
||||||
|
max-width: 100%;
|
||||||
|
height: calc(2.25rem + 2px);
|
||||||
|
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
/*color: #495057;*/
|
||||||
|
vertical-align: middle;
|
||||||
|
background: #272c32 url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#abafb5' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;
|
||||||
|
background-size: 8px 10px;
|
||||||
|
border: 1px solid #222;
|
||||||
|
border-radius: 0.15rem;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .table td,
|
||||||
|
.rb-system-site .table th {
|
||||||
|
border-top: 1px solid #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .table {
|
||||||
|
color: #999
|
||||||
|
}
|
||||||
|
|
||||||
|
.table thead th {
|
||||||
|
border-bottom: 1px solid #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
#emuldevices {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#emuldevices .table th:first-child,
|
||||||
|
#emuldevices .table td:first-child {
|
||||||
|
padding-left: 15px
|
||||||
|
}
|
||||||
|
|
||||||
|
#emuldevices .table tbody tr.active td,
|
||||||
|
#emuldevices .table tbody tr.active th {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #007bff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*utility*/
|
||||||
|
/*color*/
|
||||||
|
.muted-link {
|
||||||
|
color: #ccc !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.muted-link:hover {
|
||||||
|
color: #eee !important;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-gray {
|
||||||
|
color: #586069 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-gray-light {
|
||||||
|
color: #959da5 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-gray-dark {
|
||||||
|
color: #24292e !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-gray {
|
||||||
|
color: #586069 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-gray-dark {
|
||||||
|
color: #24292e !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-gray-dark:hover {
|
||||||
|
color: #0366d6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-top {
|
||||||
|
border-top: 1px #e1e4e8 solid !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-gray-light {
|
||||||
|
border-color: #eaecef !important;
|
||||||
|
}
|
||||||
581
_core/engine/adminpanel/theme/kimsq-light.css
Normal file
@@ -0,0 +1,581 @@
|
|||||||
|
body {
|
||||||
|
background-color: #F4F4F4;
|
||||||
|
font-family: 'Noto Sans KR', sans-serif, '돋움', dotum, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************** theme ******************/
|
||||||
|
|
||||||
|
.form-control,
|
||||||
|
.input-group-lg>.form-control {
|
||||||
|
border-radius: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.btn-light {
|
||||||
|
color: #24292e;
|
||||||
|
user-select: none;
|
||||||
|
background-color: #F4F4F4;
|
||||||
|
border: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
border-radius: 0.25em;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: middle;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:hover,
|
||||||
|
.btn-light.hover {
|
||||||
|
background-color: #e6ebf1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:active,
|
||||||
|
.btn-light.active,
|
||||||
|
.btn-light.selected {
|
||||||
|
background-color: #e9ecef !important;
|
||||||
|
background-image: none !important;
|
||||||
|
border-color: rgba(27, 31, 35, 0.35) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:disabled,
|
||||||
|
.btn-light.disabled {
|
||||||
|
color: rgba(36, 41, 46, 0.4);
|
||||||
|
background-color: #eff3f6;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid rgba(27, 31, 35, 0.2);
|
||||||
|
border-color: rgba(27, 31, 35, 0.2);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-light:focus,
|
||||||
|
.btn-light.focus {
|
||||||
|
box-shadow: 0 0 0 0.2em rgba(3, 102, 214, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .card-header a {
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .card-header.bg-primary a {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-toggle="buttons"].btn-group .btn-light {
|
||||||
|
color: #999;
|
||||||
|
font-weight: normal;
|
||||||
|
background-color: #fff;
|
||||||
|
font-weight: 300
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-toggle="buttons"].btn-group .btn-light.active,
|
||||||
|
[data-toggle="buttons"].btn-group .btn-light:active {
|
||||||
|
color: #666 !important;
|
||||||
|
background-color: rgba(0, 0, 0, .05) !important;
|
||||||
|
border-color: rgba(0, 0, 0, .1) !important;
|
||||||
|
-webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .1);
|
||||||
|
-moz-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .1);
|
||||||
|
box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sm {
|
||||||
|
padding: 3px 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.btn,
|
||||||
|
[role="button"] {
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger {
|
||||||
|
color: #cb2431;
|
||||||
|
border: 1px solid rgba(27, 31, 35, 0.2);
|
||||||
|
background-color: #fafbfc;
|
||||||
|
background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:hover {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #cb2431;
|
||||||
|
background-image: linear-gradient(-180deg, #de4450 0%, #cb2431 90%);
|
||||||
|
border-color: rgba(27, 31, 35, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-danger.active {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #b5202c;
|
||||||
|
background-image: none;
|
||||||
|
border-color: rgba(27, 31, 35, 0.5);
|
||||||
|
box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:disabled,
|
||||||
|
.btn-danger.disabled {
|
||||||
|
color: rgba(203, 36, 49, 0.4);
|
||||||
|
background-color: #eff3f6;
|
||||||
|
background-image: none;
|
||||||
|
border-color: rgba(27, 31, 35, 0.2);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************** sidebar-inverse ******************/
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse {
|
||||||
|
display: block;
|
||||||
|
background-color: #F4F4F4;
|
||||||
|
min-height: 100%;
|
||||||
|
border-right: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-system-admin .rb-system-sidebar.rb-inverse,
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse {
|
||||||
|
box-shadow: 1px 0 3px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin .btn-toolbar .btn {
|
||||||
|
color: #666
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin .btn-toolbar .btn:hover {
|
||||||
|
color: #333
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin .btn-toolbar .btn:active {
|
||||||
|
color: #428BCA
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-buttons .rb-content-padded {
|
||||||
|
border-bottom: 1px solid #1A1817;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-buttons .rb-inner {
|
||||||
|
border-bottom: 1px solid #1A1817;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a:focus {
|
||||||
|
color: #c9c9c9
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin .rb-icon-minify:hover .rb-icon:before {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active a,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active a:hover {
|
||||||
|
color: #555
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.open>a,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.open>a b {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin nav>ul li.active ul li.active>a {
|
||||||
|
background-color: #D5D5D5
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-admin #sidebar-sites nav .list-group-item.active {
|
||||||
|
background-color: #D5D5D5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li:hover .menu-item-parent {
|
||||||
|
color: #428bca;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li.active:hover .menu-item-parent {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a {
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar-modules .list-group-item.active a {
|
||||||
|
background-color: #D5D5D5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li .menu-item-parent {
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a:focus {
|
||||||
|
/* color: #c9c9c9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul ul {
|
||||||
|
/*background: rgba(69, 69, 69, .7);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul .active ul {
|
||||||
|
/*background: rgba(69, 69, 69, 1);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul>li>ul::before {
|
||||||
|
border-left: 1px dotted #7A7A7A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul li.active>a.collapsed:before {
|
||||||
|
color: #D5D5D5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul li.active ul li.active>a:before {
|
||||||
|
color: #D5D5D5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav ul li a:active {
|
||||||
|
background: rgba(0, 0, 0, .04);
|
||||||
|
!important
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul ul li::before {
|
||||||
|
border-top: 1px dotted #7A7A7A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse nav>ul>li>a>i>em {
|
||||||
|
background: #ED1C24;
|
||||||
|
color: #fff;
|
||||||
|
border: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*login-info*/
|
||||||
|
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .login-info a.rb-username {
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .login-info>a:hover {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .login-info {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, .1)
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 992px) and (min-width: 768px) {
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* minified-sidebar */
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
|
||||||
|
background: transparent;
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-minify-sidebar:hover {
|
||||||
|
/*background: #646464;*/
|
||||||
|
color: #E4E4E4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-minify-sidebar {
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-inbox-badge {
|
||||||
|
background: #ED1C24;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>ul {
|
||||||
|
background: #ed1c24 !important
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>a>.menu-item-parent {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
color: #333 !important;
|
||||||
|
text-shadow: none;
|
||||||
|
-webkit-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
-moz-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
border-left: 1px solid #bfbfbf;
|
||||||
|
border-top: 1px solid #D8D4D4;
|
||||||
|
border-bottom: 1px solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul {
|
||||||
|
border: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
-webkit-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
-moz-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li {
|
||||||
|
background-color: #ffff
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li>ul>li {
|
||||||
|
background-color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, .1)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* hide-sidebar */
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .rb-hide-sidebar2 {
|
||||||
|
border-bottom: 1px solid #302F2F;
|
||||||
|
background: transparent;
|
||||||
|
color: #A8A8A8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse {
|
||||||
|
-moz-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
|
||||||
|
-webkit-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
|
||||||
|
box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse .rb-hide-sidebar {
|
||||||
|
color: #333;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
border-color: #adadad;
|
||||||
|
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||||
|
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-system-site {
|
||||||
|
background-color: #fff;
|
||||||
|
border-left: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .rb-panel-top {
|
||||||
|
background-color: #F4F4F4 !important;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
color: #eee
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .rb-icon-hide {
|
||||||
|
color: #999
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-system-site .rb-system-site .rb-icon-hide:hover .rb-icon:before,
|
||||||
|
.rb-system-site .rb-icon-hide:hover .rb-icon:before {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tabs-below */
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li>a {
|
||||||
|
border: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
color: #777;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li>a.active {
|
||||||
|
color: #444;
|
||||||
|
background: #ffffff;
|
||||||
|
border: 1px solid #c9c9c9;
|
||||||
|
border-right: 1px solid transparent;
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li>a:hover {
|
||||||
|
color: #62aeef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li:last-child>a,
|
||||||
|
.rb-system-sidebar.rb-inverse .nav-tabs>li.last-child>a {
|
||||||
|
border-right: 1px solid #c9c9c9
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs {
|
||||||
|
border-color: #c5d0dc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:focus {
|
||||||
|
margin-left: -1px
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:hover,
|
||||||
|
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:focus {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-main {
|
||||||
|
background-color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .list-group-item {
|
||||||
|
line-height: 1.2
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .custom-control-description {
|
||||||
|
line-height: 1.9
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-checkbox,
|
||||||
|
.custom-radio {
|
||||||
|
line-height: 1.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-control-label::before {
|
||||||
|
border-radius: .15rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.rb-system-site .rb-content-padded {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .nav-tabs .nav-link {
|
||||||
|
border-radius: 0;
|
||||||
|
color: #999
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs {
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-item {
|
||||||
|
width: 25%
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link {
|
||||||
|
padding: .5rem;
|
||||||
|
border-right: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link:hover {
|
||||||
|
border-color: rgba(0, 0, 0, .1);
|
||||||
|
border-top-color: transparent;
|
||||||
|
border-left-color: transparent
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link.active {
|
||||||
|
color: #444;
|
||||||
|
background-color: inherit;
|
||||||
|
border: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
border-top: 0;
|
||||||
|
border-bottom: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-sidebar .nav-tabs .nav-link.active:first-child {
|
||||||
|
border-left: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site fieldset[disabled] .btn-light,
|
||||||
|
.rb-system-site fieldset[disabled] .btn-light.active {
|
||||||
|
background-image: none;
|
||||||
|
background-color: inherit
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .card {
|
||||||
|
background-color: inherit;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn.btn-block {
|
||||||
|
border-radius: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-outline-primary {
|
||||||
|
color: #555;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-hidden-system-site .rb-system-site .rb-opener {
|
||||||
|
background-color: inherit;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
box-shadow: -1px 0 2px rgba(0, 0, 0, 0.5);
|
||||||
|
color: #9ea6b3;
|
||||||
|
display: block;
|
||||||
|
left: -20px;
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rb-system-site .table td,
|
||||||
|
.rb-system-site .table th {
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.table thead th {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#emuldevices {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#emuldevices .table th:first-child,
|
||||||
|
#emuldevices .table td:first-child {
|
||||||
|
padding-left: 15px
|
||||||
|
}
|
||||||
|
|
||||||
|
#emuldevices .table tbody tr.active td,
|
||||||
|
#emuldevices .table tbody tr.active th {}
|
||||||
|
|
||||||
|
|
||||||
|
/*utility*/
|
||||||
|
/*color*/
|
||||||
|
.muted-link {
|
||||||
|
color: #ccc !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.muted-link:hover {
|
||||||
|
color: #eee !important;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-gray {
|
||||||
|
color: #586069 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-gray-light {
|
||||||
|
color: #959da5 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-gray-dark {
|
||||||
|
color: #24292e !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-gray {
|
||||||
|
color: #586069 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-gray-dark {
|
||||||
|
color: #24292e !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-gray-dark:hover {
|
||||||
|
color: #0366d6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-top {
|
||||||
|
border-top: 1px #e1e4e8 solid !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-gray-light {
|
||||||
|
border-color: #eaecef !important;
|
||||||
|
}
|
||||||
79
_core/engine/content.engine.php
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
if(!defined('__KIMS__')) exit;
|
||||||
|
|
||||||
|
if (is_file($g['main']))
|
||||||
|
{
|
||||||
|
if (!$system)
|
||||||
|
{
|
||||||
|
if(!$g['mobile'] || $_SESSION['pcmode']=='Y')
|
||||||
|
{
|
||||||
|
if (!$g['head']['cod'])
|
||||||
|
{
|
||||||
|
$g['codhead'] = $g['path_page'].$r.'-menus/'.$_HM['id'].'.header.php';
|
||||||
|
if(is_file($g['codhead'])) include $g['codhead'];
|
||||||
|
}
|
||||||
|
if ($_HM['imghead'])
|
||||||
|
{
|
||||||
|
if (strstr($_HM['imghead'],'swf')) echo '<div><embed id="swf_menu_header" src="'.$g['s'].'/_var/menu/'.$_HM['imghead'].'"></embed></div>';
|
||||||
|
else echo '<div><img id="img_menu_header" src="'.$g['s'].'/_var/menu/'.$_HM['imghead'].'" alt="" /></div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$d['cachetime'] = file_exists($d['page']['cctime']) ? implode('',file($d['page']['cctime'])) : 0;
|
||||||
|
|
||||||
|
if ($d['cachetime'] && substr($d['page']['source'],0,8)=='./pages/')
|
||||||
|
{
|
||||||
|
$g['cache'] = str_replace('.php','.cache',$d['page']['source']);
|
||||||
|
$g['recache'] = true;
|
||||||
|
if(file_exists($g['cache']))
|
||||||
|
{
|
||||||
|
if(mktime() - filemtime($g['cache']) > $d['cachetime'] * 60) unlink($g['cache']);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
readfile($g['cache']);
|
||||||
|
$g['recache'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($g['recache'])
|
||||||
|
{
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
include $g['main'];
|
||||||
|
|
||||||
|
$g['buffer'] = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
echo $g['buffer'];
|
||||||
|
|
||||||
|
$fp = fopen($g['cache'],'w');
|
||||||
|
fwrite($fp,$g['buffer']);
|
||||||
|
fclose($fp);
|
||||||
|
@chmod($g['cache'],0707);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
include $g['main'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$g['mobile'] || $_SESSION['pcmode']=='Y')
|
||||||
|
{
|
||||||
|
if ($_HM['imgfoot'])
|
||||||
|
{
|
||||||
|
if (strstr($_HM['imgfoot'],'swf')) echo '<div><embed id="swf_menu_footer" src="'.$g['s'].'/_var/menu/'.$_HM['imgfoot'].'"></embed></div>';
|
||||||
|
else echo '<div><img id="img_menu_footer" src="'.$g['s'].'/_var/menu/'.$_HM['imgfoot'].'" alt="" /></div>';
|
||||||
|
}
|
||||||
|
if (!$g['foot']['cod'])
|
||||||
|
{
|
||||||
|
$g['codfoot'] = $g['path_page'].$r.'-menus/'.$_HM['id'].'.footer.php';
|
||||||
|
if(is_file($g['codfoot'])) include $g['codfoot'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
include $g['main'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getLink($g['s'].'/?r='.$r,'','','');
|
||||||
|
}
|
||||||
|
?>
|
||||||
75
_core/engine/cssjs.engine.php
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
if(!defined('__KIMS__')) exit;
|
||||||
|
$g['incdir'] = $g['incdir']?$g['incdir']:$g['path_layout'].$d['layout']['dir'].'/_includes/';
|
||||||
|
$g['wcache'] = $d['admin']['cache_flag']?'?nFlag='.$date[$d['admin']['cache_flag']]:'';
|
||||||
|
$g['cssset'] = array
|
||||||
|
(
|
||||||
|
$g['dir_module'].'_main'=>$g['url_module'].'/_main',
|
||||||
|
$g['dir_module_skin'].'_main'=>$g['url_module_skin'].'/_main',
|
||||||
|
$g['dir_module_comm']=>$g['url_module_comm'],
|
||||||
|
$g['dir_module_mode']=>$g['url_module_mode'],
|
||||||
|
$g['dir_module_admin']=>$g['url_module_admin'],
|
||||||
|
);
|
||||||
|
|
||||||
|
$NT_DATA = explode('|',$my['noticeconf']);
|
||||||
|
$nt_web = $NT_DATA[0];
|
||||||
|
$nt_email = $NT_DATA[1];
|
||||||
|
$nt_fcm = $NT_DATA[2];
|
||||||
|
?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var rooturl = '<?php echo $g['url_root']?>';
|
||||||
|
var rootssl = '<?php echo $g['ssl_root']?>';
|
||||||
|
var raccount= '<?php echo $r?>';
|
||||||
|
var moduleid= '<?php echo $m?>';
|
||||||
|
var memberid= '<?php echo $my['id']?>';
|
||||||
|
var is_admin= '<?php echo $my['admin']?>';
|
||||||
|
var num_mynoti = '<?php echo $my['num_notice']==0?'':$my['num_notice']?>';
|
||||||
|
var connect_naver= '<?php echo getConnectUrl('naver',$d['connect']['key_n'],$d['connect']['secret_n'],$g['url_root'].'/'.$r.'/oauth/naver',false)?>';
|
||||||
|
var connect_kakao= '<?php echo getConnectUrl('kakao',$d['connect']['key_k'],$d['connect']['secret_k'],$g['url_root'].'/'.$r.'/oauth/kakao',false)?>';
|
||||||
|
var connect_google= '<?php echo getConnectUrl('google',$d['connect']['key_g'],$d['connect']['secret_g'],$g['url_root'].'/'.$r.'/oauth/google',false)?>';
|
||||||
|
var connect_facebook= '<?php echo getConnectUrl('facebook',$d['connect']['key_f'],$d['connect']['secret_f'],$g['url_root'].'/'.$r.'/oauth/facebook',false)?>';
|
||||||
|
var connect_instagram= '<?php echo getConnectUrl('instagram',$d['connect']['key_i'],$d['connect']['secret_i'],$g['url_root'].'/'.$r.'/oauth/instagram',false)?>';
|
||||||
|
var nt_web = '<?php echo $nt_web ?>';
|
||||||
|
var nt_email = '<?php echo $nt_email ?>';
|
||||||
|
var nt_fcm = '<?php echo $nt_fcm ?>';
|
||||||
|
var broswer = '<?php echo $g['broswer'] ?>';
|
||||||
|
var deviceKind = '<?php echo $g['mobile'] ?>';
|
||||||
|
var deviceType = '<?php echo $g['deviceType'] ?>';
|
||||||
|
var kakao_jskey = '<?php echo $d['connect']['jskey_k'] ?>';
|
||||||
|
var post_skin_main = '<?php echo $d['post']['skin_main'] ?>';
|
||||||
|
var post_skin_mobile = '<?php echo $d['post']['skin_mobile'] ?>';
|
||||||
|
var ios_Token = window.localStorage.getItem('setTokenTolocal');
|
||||||
|
var is_pwa = navigator.share === undefined?1:'';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- is-loading : https://github.com/hekigan/is-loading-->
|
||||||
|
<?php getImport('is-loading','jquery.isloading.min','1.0.6','js')?>
|
||||||
|
|
||||||
|
<!-- js-cookie : https://github.com/js-cookie/js-cookie -->
|
||||||
|
<?php getImport('js-cookie','js.cookie.min','2.2.1','js')?>
|
||||||
|
|
||||||
|
<?php if (!$g['mobile'] && $_SESSION['pcmode'] == 'Y'): ?>
|
||||||
|
<!-- bootstrap-notify : https://github.com/mouse0270/bootstrap-notify -->
|
||||||
|
<?php getImport('bootstrap-notify','bootstrap-notify.min','3.1.3','js')?>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<link href="<?php echo $g['s']?>/_core/css/sys.css<?php echo $g['wcache']?>" rel="stylesheet">
|
||||||
|
<script src="<?php echo $g['s']?>/_core/js/sys.js<?php echo $g['wcache']?>"></script>
|
||||||
|
|
||||||
|
<?php if ($g['broswer']!='MSIE 10' && $g['broswer']!='MSIE 11'): ?>
|
||||||
|
<script src="<?php echo $g['s']?>/_core/js/ckeditor5.js<?php echo $g['wcache']?>"></script>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php foreach ($g['cssset'] as $_key => $_val):?>
|
||||||
|
<?php if (is_file($_key.'.css')):?>
|
||||||
|
<link href="<?php echo $_val?>.css<?php echo $g['wcache']?>" rel="stylesheet">
|
||||||
|
<?php endif?>
|
||||||
|
|
||||||
|
<?php if (is_file($_key.'.js')):?>
|
||||||
|
<script src="<?php echo $_val?>.js<?php echo $g['wcache']?>"></script>
|
||||||
|
<?php endif?>
|
||||||
|
<?php endforeach?>
|
||||||
|
|
||||||
|
<!-- 헤더 스위치 -->
|
||||||
|
<?php foreach($g['switch_2'] as $_switch) include $_switch ?>
|
||||||
96
_core/engine/foot.engine.php
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
<!-- 사이트 풋터 코드 -->
|
||||||
|
<?php echo $_HS['footercode'] ?>
|
||||||
|
|
||||||
|
<!-- 푸터 스위치 -->
|
||||||
|
<?php foreach($g['switch_3'] as $_switch) include $_switch ?>
|
||||||
|
|
||||||
|
<?php if($g['mobile']&&$_SESSION['pcmode']=='Y'&&$iframe!='Y'):?>
|
||||||
|
<div id="pctomobile" class="bg-faded" style="width:100%">
|
||||||
|
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&a=mobilemode" class="btn btn-block btn-secondary" style="font-size: 4rem;padding: 3rem">
|
||||||
|
<i class="fa fa-mobile fa-lg" aria-hidden="true"></i> 모바일 모드 전환
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<?php endif?>
|
||||||
|
|
||||||
|
<div id="_box_layer_"></div>
|
||||||
|
<div id="_action_layer_"></div>
|
||||||
|
<div id="_hidden_layer_"></div>
|
||||||
|
<div id="_overLayer_"></div>
|
||||||
|
|
||||||
|
<iframe hidden name="_action_frame_<?php echo $m?>" width="0" height="0" frameborder="0" scrolling="no" title="iframe"></iframe>
|
||||||
|
|
||||||
|
<!-- 알림처리 -->
|
||||||
|
<iframe hidden name="pushframe" src="" title="iframe"></iframe>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if ($g['mobile']&&$_SESSION['pcmode']!='Y') {
|
||||||
|
$g['wdgcod'] = $g['path_tmp'].'widget/c'.$_HM['uid'].'.p'.$_HP['uid'].'.mobile.cache';
|
||||||
|
} else {
|
||||||
|
$g['wdgcod'] = $g['path_tmp'].'widget/c'.$_HM['uid'].'.p'.$_HP['uid'].'.desktop.cache';
|
||||||
|
}
|
||||||
|
if(is_file($g['wdgcod'])) include $g['wdgcod'];
|
||||||
|
if($g['widget_cssjs']) include $g['path_core'].'engine/widget.cssjs.php';
|
||||||
|
if($my['uid']) include $g['path_core'].'engine/notification.engine.php';
|
||||||
|
?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
|
||||||
|
Iframely('oembed[url]') // oembed 미디어 변환
|
||||||
|
|
||||||
|
// 회원가입 작동중단 처리
|
||||||
|
<?php if (!$d['member']['join_enable']): ?>
|
||||||
|
$('#modal-join').on('show.<?php echo ($g['mobile']&&$_SESSION['pcmode']!='Y')?'rc':'bs' ?>.modal', function (e) {
|
||||||
|
alert('죄송합니다. 지금은 회원가입을 하실 수 없습니다.')
|
||||||
|
location.reload();
|
||||||
|
})
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
// 알림 기본 셋팅값 정의
|
||||||
|
<?php if ($g['mobile'] && $_SESSION['pcmode'] != 'Y'): ?>
|
||||||
|
$.notifyDefaults({
|
||||||
|
placement: {
|
||||||
|
from: "bottom",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
allow_dismiss: false,
|
||||||
|
offset: 20,
|
||||||
|
type: "default",
|
||||||
|
timer: 100,
|
||||||
|
delay: 1500,
|
||||||
|
animate: {
|
||||||
|
enter: "animated fadeInUp",
|
||||||
|
exit: "animated fadeOutDown"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
<?php else: ?>
|
||||||
|
$.notifyDefaults({
|
||||||
|
placement: {
|
||||||
|
from: "top",
|
||||||
|
align: "right"
|
||||||
|
},
|
||||||
|
allow_dismiss: false,
|
||||||
|
offset: 20,
|
||||||
|
type: "success",
|
||||||
|
timer: 100,
|
||||||
|
delay: 1500,
|
||||||
|
animate: {
|
||||||
|
enter: "animated fadeInDown",
|
||||||
|
exit: "animated fadeOutUp"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
<?php if($_HS['dtd']):?>
|
||||||
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||||
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||||
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||||
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||||
|
ga('create', '<?php echo $_HS['dtd']?>', 'auto');
|
||||||
|
ga('send', 'pageview');
|
||||||
|
<?php endif?>
|
||||||
|
|
||||||
|
</script>
|
||||||
431
_core/engine/main.engine.php
Normal file
@@ -0,0 +1,431 @@
|
|||||||
|
<?php
|
||||||
|
if(!defined('__KIMS__')) exit;
|
||||||
|
|
||||||
|
if ($d['admin']['ssl_type'] == 1)
|
||||||
|
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
|
||||||
|
|
||||||
|
$DB_CONNECT = isConnectedToDB($DB);
|
||||||
|
$g['mobile']= isMobileConnect($_SERVER['HTTP_USER_AGENT']);
|
||||||
|
$g['device']= $g['mobile'] && $_SESSION['pcmode'] != 'Y';
|
||||||
|
$g['broswer'] = getBrowzer($_SERVER['HTTP_USER_AGENT']);
|
||||||
|
$g['deviceType']=getDeviceKind($_SERVER['HTTP_USER_AGENT'],$g['mobile']);
|
||||||
|
$my = array();
|
||||||
|
$my['level'] = 0;
|
||||||
|
|
||||||
|
if ($_SESSION['mbr_uid'])
|
||||||
|
{
|
||||||
|
$my = array_merge(getUidData($table['s_mbrid'],$_SESSION['mbr_uid']),getDbData($table['s_mbrdata'],"memberuid='".$_SESSION['mbr_uid']."'",'*'));
|
||||||
|
if (!$my['uid'] || $my['pw'] != $_SESSION['mbr_pw']) { // 로그인 상태에서 관리자 회원삭제 된 경우
|
||||||
|
$_SESSION['mbr_uid'] = '';
|
||||||
|
$_SESSION['mbr_pw'] = '';
|
||||||
|
$_SESSION['mbr_logout'] = '1';
|
||||||
|
setAccessToken($my['uid'],'logout');
|
||||||
|
setrawcookie('site_common_result', rawurlencode('로그아웃 되었습니다.|danger'),time() + (60 * 30), '/');
|
||||||
|
getLink('reload','','','');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 로그인 상태 유지 프로세스 추가
|
||||||
|
if($_COOKIE[$DB['head'].'_token'])
|
||||||
|
{
|
||||||
|
$memberuid=getArrayCookie($_COOKIE[$DB['head'].'_token'],'|',0);
|
||||||
|
$access_token=getArrayCookie($_COOKIE[$DB['head'].'_token'],'|',1);
|
||||||
|
$_now=time();
|
||||||
|
$t_que="memberuid='".$memberuid."' and access_token='".$access_token."' and expire > '".$_now."' ";
|
||||||
|
$is_token=getDbData($DB['head'].'_s_mbrtoken',$t_que,'*');
|
||||||
|
if($is_token['uid']){
|
||||||
|
$my = array_merge(getUidData($table['s_mbrid'],$memberuid),getDbData($table['s_mbrdata'],"memberuid='".$memberuid."'",'*'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($r)
|
||||||
|
{
|
||||||
|
$_HS = getDbData($table['s_site'],"id='".$r."'",'*');
|
||||||
|
$s = $_HS['uid'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$s)
|
||||||
|
{
|
||||||
|
if ($g['mobile'])
|
||||||
|
{
|
||||||
|
$_HH = getDbData($table['s_mobile'],'','*');
|
||||||
|
if ($_HH['usemobile'] == 1) $_HS = getUidData($table['s_site'],$_HH['startsite']);
|
||||||
|
else if($_HH['usemobile'] == 2) if($g['url_host'] != $_HH['startdomain']) getLink($_HH['startdomain'],'','','');
|
||||||
|
}
|
||||||
|
if (!$_HS['uid'])
|
||||||
|
{
|
||||||
|
$_HD = getDbData($table['s_domain'],"name='".str_replace('www.','',$_SERVER['HTTP_HOST'])."'",'*');
|
||||||
|
if ($_HD['site']) $_HS = getUidData($table['s_site'],$_HD['site']);
|
||||||
|
else $_HS = db_fetch_array(getDbArray($table['s_site'],'','*','gid','asc',1,1));
|
||||||
|
}
|
||||||
|
$s = $_HS['uid'];
|
||||||
|
$r = $_HS['id'];
|
||||||
|
}
|
||||||
|
else $_HS = getUidData($table['s_site'],$s);
|
||||||
|
$_SEO = getDbData($table['s_seo'],'rel=0 and parent='.$_HS['uid'],'*');
|
||||||
|
include getLangFile($g['path_module'].'admin/language/',($_HS['lang']?$_HS['lang']:$d['admin']['syslang']),'/lang.function.php');
|
||||||
|
include getLangFile($g['path_module'].'admin/language/',($_HS['lang']?$_HS['lang']:$d['admin']['syslang']),'/lang.engine.php');
|
||||||
|
|
||||||
|
$_CA = array();
|
||||||
|
$date = getVDate($_HS['timecal']);
|
||||||
|
$g['s'] = str_replace('/index.php','',$_SERVER['SCRIPT_NAME']);
|
||||||
|
$g['r'] = $_HS['rewrite'] ? $g['s'].($_HS['usescode']?'/'.$r:'') : '.';
|
||||||
|
$g['img_core'] = $g['s'].'/_core/images';
|
||||||
|
$g['meta_tit'] = $_SEO['title'];
|
||||||
|
$g['meta_key'] = $_SEO['keywords'];
|
||||||
|
$g['meta_des'] = $_SEO['description'];
|
||||||
|
$g['meta_bot'] = $_SEO['classification'];
|
||||||
|
$g['meta_img'] = $_SEO['image_src']?getMetaImage($_SEO['image_src']):$g['img_core'].'/noimage_kimsq.png';
|
||||||
|
$g['sys_module'] = $d['admin']['sysmodule'];
|
||||||
|
$g['sys_action'] = $a && !$c ? true : false;
|
||||||
|
$m = $m && !strstr($m,'.') ? $m : $g['sys_module'];
|
||||||
|
$_m = $m;
|
||||||
|
$_mod = $mod;
|
||||||
|
|
||||||
|
if (!$g['sys_action'] && !$system)
|
||||||
|
{
|
||||||
|
if ($c)
|
||||||
|
{
|
||||||
|
$c=substr($c,-1)=='/'?str_replace('/','',$c):$c;
|
||||||
|
$_CA = explode('/',$c);
|
||||||
|
$_tmp['count'] = count($_CA);
|
||||||
|
$_tmp['id'] = $_CA[$_tmp['count']-1];
|
||||||
|
$_HM = getDbData($table['s_menu'],"id='".$_tmp['id']."' and site=".$s,'*');
|
||||||
|
if ($_tmp['count']>1) $_FHM = getDbData($table['s_menu'],"id='".$_CA[0]."' and site=".$s,'*');
|
||||||
|
else $_FHM = $_HM;
|
||||||
|
|
||||||
|
if ($_HM['reject']&&!$my['admin']) getLink('','',_LANG('em001','admin'),'-1');
|
||||||
|
if ($_HM['site']!=$_HS['uid']) getLink('','',_LANG('em002','admin'),'-1');
|
||||||
|
|
||||||
|
if($_HM['menutype']==1)
|
||||||
|
{
|
||||||
|
if ($_HM['redirect']) getLink($_HM['joint'],'','','');
|
||||||
|
$_tmpexp = explode('?',$_HM['joint']);
|
||||||
|
if ($_tmpexp[1])
|
||||||
|
{
|
||||||
|
$_tmparr = explode('&',$_tmpexp[1]);
|
||||||
|
foreach($_tmparr as $_tmpval)
|
||||||
|
{
|
||||||
|
if(!$_tmpval) continue;
|
||||||
|
$_tmparr = explode('=',$_tmpval);
|
||||||
|
${$_tmparr[0]} = $_tmparr[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($_HM['menutype']==3)
|
||||||
|
{
|
||||||
|
getLink(RW('c='.$_HM['joint']),'','','');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$c && $m == $g['sys_module'])
|
||||||
|
{
|
||||||
|
if (!$mod) $_HP = getUidData($table['s_page'],$g['mobile']&&$_SESSION['pcmode']!='Y'?($_HS['m_startpage']?$_HS['m_startpage']:$_HS['startpage']):$_HS['startpage']);
|
||||||
|
else $_HP = getDbData($table['s_page'],"id='".$mod."'",'*');
|
||||||
|
if($_HP['uid']) $_HM['layout'] = $_HP['layout'];
|
||||||
|
if ($_HP['pagetype']==1)
|
||||||
|
{
|
||||||
|
$_HM['layout'] = $_HP['layout'];
|
||||||
|
$_tmpexp = explode('?',$_HP['joint']);
|
||||||
|
if ($_tmpexp[1])
|
||||||
|
{
|
||||||
|
$_tmparr = explode('&',$_tmpexp[1]);
|
||||||
|
foreach($_tmparr as $_tmpval)
|
||||||
|
{
|
||||||
|
if(!$_tmpval) continue;
|
||||||
|
$_tmparr = explode('=',$_tmpval);
|
||||||
|
${$_tmparr[0]} = $_tmparr[1];
|
||||||
|
}
|
||||||
|
if ($_m == $g['sys_module']) $_mod = '';
|
||||||
|
if ($m != $g['sys_module']) $mod = $_mod;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($d['admin']['ssl_type'] == 2)
|
||||||
|
{
|
||||||
|
if ($_HP['uid'])
|
||||||
|
{
|
||||||
|
if (strpos(',,'.$d['admin']['ssl_page'].',',','.$_HP['id'].','))
|
||||||
|
{
|
||||||
|
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if($_SERVER['HTTPS'] == 'on') getLink(str_replace(':'.$d['admin']['ssl_port'],'',str_replace('https://','http://',$g['url_root'])).'/?'.$_SERVER['QUERY_STRING'],'','','');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($_HM['uid'])
|
||||||
|
{
|
||||||
|
if (strpos(',,'.$d['admin']['ssl_menu'].',',','.$_HM['id'].','))
|
||||||
|
{
|
||||||
|
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if($_SERVER['HTTPS'] == 'on') getLink(str_replace(':'.$d['admin']['ssl_port'],'',str_replace('https://','http://',$g['url_root'])).'/?'.$_SERVER['QUERY_STRING'],'','','');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (strpos(',,'.$d['admin']['ssl_module'].',',','.$m.','))
|
||||||
|
{
|
||||||
|
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if($_SERVER['HTTPS'] == 'on') getLink(str_replace(':'.$d['admin']['ssl_port'],'',str_replace('https://','http://',$g['url_root'])).'/?'.$_SERVER['QUERY_STRING'],'','','');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$_HMD = getDbData($table['s_module'],"id='".$m."'",'*');
|
||||||
|
|
||||||
|
$g['switch_1'] = getSwitchInc('top');
|
||||||
|
$g['switch_2'] = getSwitchInc('head');
|
||||||
|
$g['switch_3'] = getSwitchInc('foot');
|
||||||
|
$g['switch_4'] = getSwitchInc('end');
|
||||||
|
|
||||||
|
//사이트별 회원설정 변수
|
||||||
|
$g['memberVarForSite'] = $g['path_var'].'site/'.$r.'/member.var.php'; // 사이트 회원모듈 변수파일
|
||||||
|
include_once file_exists($g['memberVarForSite']) ? $g['memberVarForSite'] : $g['path_module'].'member/var/var.php';
|
||||||
|
|
||||||
|
//사이트별 포스트설정 변수
|
||||||
|
$g['postVarForSite'] = $g['path_var'].'site/'.$r.'/post.var.php';
|
||||||
|
include_once file_exists($g['postVarForSite']) ? $g['postVarForSite'] : $g['path_module'].'post/var/var.php';
|
||||||
|
|
||||||
|
$d['post']['writeperm'] = true;
|
||||||
|
$d['post']['categoryperm'] = true;
|
||||||
|
$d['post']['goodsperm'] = true;
|
||||||
|
|
||||||
|
if (!$my['admin']) {
|
||||||
|
if ($d['post']['perm_l_write'] > $my['level'] || strpos('_'.$d['post']['perm_g_write'],'['.$my['mygroup'].']') || !$my['uid']) {
|
||||||
|
$d['post']['writeperm'] = false;
|
||||||
|
}
|
||||||
|
if ($d['post']['perm_l_category'] > $my['level'] || strpos('_'.$d['post']['perm_g_category'],'['.$my['mygroup'].']') || !$my['uid']) {
|
||||||
|
$d['post']['categoryperm'] = false;
|
||||||
|
}
|
||||||
|
if ($d['post']['perm_l_goods'] > $my['level'] || strpos('_'.$d['post']['perm_g_goods'],'['.$my['mygroup'].']') || !$my['uid']) {
|
||||||
|
$d['post']['goodsperm'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//사이트별 게시판 공통설정 변수
|
||||||
|
$g['bbsVarForSite'] = $g['path_var'].'site/'.$r.'/bbs.var.php';
|
||||||
|
include_once file_exists($g['bbsVarForSite']) ? $g['bbsVarForSite'] : $g['path_module'].'bbs/var/var.php';
|
||||||
|
|
||||||
|
//사이트별 댓글설정 변수
|
||||||
|
$g['commentVarForSite'] = $g['path_var'].'site/'.$r.'/comment.var.php';
|
||||||
|
include_once file_exists($g['commentVarForSite']) ? $g['commentVarForSite'] : $g['path_module'].'comment/var/var.php';
|
||||||
|
|
||||||
|
// 회원가입을 위한 이메일/휴대폰 본인인증 후 관련세션 존재유무
|
||||||
|
if (isset($_SESSION['JOIN']['email']) || isset($_SESSION['JOIN']['phone'])) {
|
||||||
|
$call_modal_join_site=1; // 인증후,가입 모달 호출
|
||||||
|
}
|
||||||
|
|
||||||
|
//사이트별 외부연결 설정
|
||||||
|
if (file_exists($g['path_var'].'site/'.$r.'/connect.var.php')) {
|
||||||
|
include $g['path_var'].'site/'.$r.'/connect.var.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 푸시알림 지원여부
|
||||||
|
if ( $g['mobile']!='ipad' && $g['mobile']!='iphone') {
|
||||||
|
if ($g['broswer']!='MSIE 11' && $g['broswer']!='MSIE 10' && $g['broswer']!='MSIE 9' && $g['broswer']!='Safari') {
|
||||||
|
|
||||||
|
$g['pwa_supported']=1;
|
||||||
|
|
||||||
|
if (file_exists($g['path_var'].'fcm.info.js')) {
|
||||||
|
$g['push_active']=1;
|
||||||
|
} else {
|
||||||
|
$g['push_active']=2;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 포스트 공개관련
|
||||||
|
$d['displaySet'] = "||비공개,lock||일부공개,how_to_reg||미등록,insert_link||회원공개,people_alt||전체공개,public";
|
||||||
|
$g['displaySet']['label'] = [];
|
||||||
|
$g['displaySet']['icon'] = [];
|
||||||
|
$displaySet=explode('||',$d['displaySet']);
|
||||||
|
foreach ($displaySet as $displayLine) {
|
||||||
|
$dis=explode(',',$displayLine);
|
||||||
|
array_push($g['displaySet']['label'], $dis[0]);
|
||||||
|
array_push($g['displaySet']['icon'], $dis[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//소셜로그인 세션 존재유무
|
||||||
|
if(isset($_SESSION['SL']['naver'])||isset($_SESSION['SL']['kakao'])||isset($_SESSION['SL']['facebook'])||isset($_SESSION['SL']['google'])||isset($_SESSION['SL']['instagram'])||isset($_SESSION['SL']['twitter'])){
|
||||||
|
if (is_array($_SESSION['SL']['naver']) || is_array($_SESSION['SL']['kakao']) || is_array($_SESSION['SL']['facebook']) || is_array($_SESSION['SL']['google']) || is_array($_SESSION['SL']['instagram']) || is_array($_SESSION['SL']['twitter'])){
|
||||||
|
$is_socialUserinfoSession = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//소셜로그인을 사용할때
|
||||||
|
if ($d['member']['login_social'] || $d['member']['join_bySocial']) {
|
||||||
|
if ($is_socialUserinfoSession) {
|
||||||
|
if (isset($_SESSION['SL']['naver'])) {
|
||||||
|
$sns_code = 'n';
|
||||||
|
$sns_name = 'naver';
|
||||||
|
$sns_name_ko = '네이버';
|
||||||
|
$sns_access_token = $_SESSION['SL']['naver']['userinfo']['access_token']; //소셜미디어 접근토큰
|
||||||
|
$sns_refresh_token = $_SESSION['SL']['naver']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
|
||||||
|
$sns_expires_in = $_SESSION['SL']['naver']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
|
||||||
|
$snsuid = $_SESSION['SL']['naver']['userinfo']['uid']; //소셜미디어 고유번호
|
||||||
|
$name = $_SESSION['SL']['naver']['userinfo']['name'];
|
||||||
|
$email = $_SESSION['SL']['naver']['userinfo']['email'];
|
||||||
|
$_photo = $_SESSION['SL']['naver']['userinfo']['photo'];
|
||||||
|
}
|
||||||
|
if (isset($_SESSION['SL']['kakao'])) {
|
||||||
|
$sns_code = 'k';
|
||||||
|
$sns_name = 'kakao';
|
||||||
|
$sns_name_ko = '카카오';
|
||||||
|
$sns_access_token = $_SESSION['SL']['kakao']['userinfo']['access_token']; //소셜미디어 접근토큰
|
||||||
|
$sns_refresh_token = $_SESSION['SL']['kakao']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
|
||||||
|
$sns_expires_in = $_SESSION['SL']['kakao']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
|
||||||
|
$snsuid = $_SESSION['SL']['kakao']['userinfo']['uid']; //소셜미디어 고유번호
|
||||||
|
$name = $_SESSION['SL']['kakao']['userinfo']['name'];
|
||||||
|
$email = $_SESSION['SL']['kakao']['userinfo']['email'];
|
||||||
|
$_photo = $_SESSION['SL']['kakao']['userinfo']['photo'];
|
||||||
|
}
|
||||||
|
if (isset($_SESSION['SL']['facebook'])) {
|
||||||
|
$sns_code = 'f';
|
||||||
|
$sns_name = 'facebook';
|
||||||
|
$sns_name_ko = '페이스북';
|
||||||
|
$sns_access_token = $_SESSION['SL']['facebook']['userinfo']['access_token']; //소셜미디어 접근토큰
|
||||||
|
$sns_refresh_token = $_SESSION['SL']['facebook']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
|
||||||
|
$sns_expires_in = $_SESSION['SL']['facebook']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
|
||||||
|
$snsuid = $_SESSION['SL']['facebook']['userinfo']['uid']; //소셜미디어 고유번호
|
||||||
|
$name = $_SESSION['SL']['facebook']['userinfo']['name'];
|
||||||
|
$email = $_SESSION['SL']['facebook']['userinfo']['email'];
|
||||||
|
$_photo = $_SESSION['SL']['facebook']['userinfo']['photo'];
|
||||||
|
}
|
||||||
|
if (isset($_SESSION['SL']['google'])) {
|
||||||
|
$sns_code = 'g';
|
||||||
|
$sns_name = 'google';
|
||||||
|
$sns_name_ko = '구글';
|
||||||
|
$sns_access_token = $_SESSION['SL']['google']['userinfo']['access_token']; //소셜미디어 접근토큰
|
||||||
|
$sns_refresh_token = $_SESSION['SL']['google']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
|
||||||
|
$sns_expires_in = $_SESSION['SL']['google']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
|
||||||
|
$snsuid = $_SESSION['SL']['google']['userinfo']['uid']; //소셜미디어 고유번호
|
||||||
|
$name = $_SESSION['SL']['google']['userinfo']['name'];
|
||||||
|
$email = $_SESSION['SL']['google']['userinfo']['email'];
|
||||||
|
$_photo = $_SESSION['SL']['google']['userinfo']['photo'];
|
||||||
|
}
|
||||||
|
if (isset($_SESSION['SL']['instagram'])) {
|
||||||
|
$sns_code = 'i';
|
||||||
|
$sns_name = 'instagram';
|
||||||
|
$sns_name_ko = '인스타그램';
|
||||||
|
$sns_access_token = $_SESSION['SL']['instagram']['userinfo']['access_token']; //소셜미디어 접근토큰
|
||||||
|
$snsuid = $_SESSION['SL']['instagram']['userinfo']['uid']; //소셜미디어 고유번호
|
||||||
|
$name = $_SESSION['SL']['instagram']['userinfo']['name'];
|
||||||
|
$_photo = $_SESSION['SL']['instagram']['userinfo']['photo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$mbr_sns = getDbData($table['s_mbrsns'],'id='.$snsuid.' and sns="'.$sns_name.'"','mbruid');
|
||||||
|
$mbr_email = getDbData($table['s_mbremail'],"email='".$email."'",'*');
|
||||||
|
$d_regis = $date['totime'];
|
||||||
|
|
||||||
|
if ($my['uid']) {
|
||||||
|
|
||||||
|
// 개인정보관리 > 연결계정 > 추가 연결
|
||||||
|
if ($mbr_sns['mbruid'] && ($mbr_sns['mbruid'] != $my['uid'])) {
|
||||||
|
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 계정이 이미 다른계정에 연결되어 있습니다.|danger'),time() + (60 * 30), '/');
|
||||||
|
$_SESSION['SL'] = ''; // 세션비우기
|
||||||
|
getLink('reload','','','');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mbr_sns['mbruid']) {
|
||||||
|
$msg = ' 계정이 재인증 되었습니다.'; //개인정보관리 > 개인정보잠금 > 재인증
|
||||||
|
} else { //신규연결
|
||||||
|
$msg = ' 계정이 연결 되었습니다.'; // 개인정보관리 > 연결계정 > 추가 연결
|
||||||
|
getDbInsert($table['s_mbrsns'],'mbruid,sns,id,access_token,refresh_token,expires_in,d_regis',"'".$my['uid']."','".$sns_name."','$snsuid','$sns_access_token','$sns_refresh_token','$sns_expires_in','$d_regis'");
|
||||||
|
}
|
||||||
|
|
||||||
|
getDbUpdate($table['s_mbrdata'],"last_log='".$date['totime']."'",'memberuid='.$my['uid']);
|
||||||
|
setrawcookie('site_common_result', rawurlencode($sns_name_ko.$msg.'|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
|
||||||
|
$_SESSION['SL'] = ''; // 세션비우기
|
||||||
|
getLink('reload','','','');
|
||||||
|
|
||||||
|
} else { // 비로그인 상태
|
||||||
|
|
||||||
|
//결과값 못 받은 경우
|
||||||
|
if (!$name) {
|
||||||
|
$_SESSION['SL'] = '';
|
||||||
|
setrawcookie('site_common_result',rawurlencode($sns_name_ko.' 에서 정보를 수신하지 못했습니다.|danger'),time() + (60 * 30), '/');
|
||||||
|
getLink('reload','','','');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 정상 소셜로그인 (이미 연결된 소셜미디어 고유번호가 있을 경우, 해당회원 로그인 처리)
|
||||||
|
if ($mbr_sns['mbruid']) {
|
||||||
|
$M = getUidData($table['s_mbrid'],$mbr_sns['mbruid']);
|
||||||
|
getDbUpdate($table['s_mbrdata'],"tmpcode='',now_log=1,last_log='".$date['totime']."',sns='".$sns_name."'",'memberuid='.$M['uid']);
|
||||||
|
$_SESSION['mbr_uid'] = $M['uid'];
|
||||||
|
$_SESSION['mbr_pw'] = $M['pw'];
|
||||||
|
|
||||||
|
setAccessToken($mbr_sns['mbruid'],'login'); //로그인 유지 기본적용
|
||||||
|
|
||||||
|
setrawcookie('site_common_result',rawurlencode($sns_name_ko.' 계정으로 로그인 되었습니다.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
|
||||||
|
$_SESSION['SL'] = ''; //세션 비우기
|
||||||
|
getLink('reload','','','');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 소셜미디어에서 획득한 이메일이 기존 회원의 동일한 이메일에 있을 경우,
|
||||||
|
if ($mbr_email['mbruid']) {
|
||||||
|
|
||||||
|
if ($mbr_email['d_verified']) {
|
||||||
|
// 본인 인증된 메일일 경우, 자동 로그인 및 연결처리 (동일인 중복가입을 막기위해)
|
||||||
|
$M = getUidData($table['s_mbrid'],$mbr_email['mbruid']);
|
||||||
|
$d_regis = $date['totime'];
|
||||||
|
getDbUpdate($table['s_mbrdata'],"tmpcode='',now_log=1,last_log='".$date['totime']."',sns='".$sns_name."'",'memberuid='.$M['uid']);
|
||||||
|
getDbInsert($table['s_mbrsns'],'mbruid,sns,id,access_token,refresh_token,expires_in,d_regis',"'".$M['uid']."','".$sns_name."','$snsuid','$sns_access_token','$sns_refresh_token','$sns_expires_in','$d_regis'");
|
||||||
|
|
||||||
|
$_SESSION['mbr_uid'] = $M['uid'];
|
||||||
|
$_SESSION['mbr_pw'] = $M['pw'];
|
||||||
|
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 계정으로 로그인 되었습니다.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
|
||||||
|
$_SESSION['SL'] = ''; //세션 비우기
|
||||||
|
getLink('reload','','','');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// 계정연결 모달 호출
|
||||||
|
|
||||||
|
$is_sns = getDbData($table['s_mbrsns'],'mbruid="'.$mbr_email['mbruid'].'"','sns');
|
||||||
|
$has_sns = $is_sns['sns'];
|
||||||
|
|
||||||
|
if ($is_sns['sns']=='naver') $has_sns_ko = '네이버';
|
||||||
|
if ($is_sns['sns']=='kakao') $has_sns_ko = '카카오';
|
||||||
|
if ($is_sns['sns']=='google') $has_sns_ko = '구글';
|
||||||
|
if ($is_sns['sns']=='facebook') $has_sns_ko = '페이스북';
|
||||||
|
if ($is_sns['sns']=='instagram') $has_sns_ko = '인스타그램';
|
||||||
|
|
||||||
|
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 사용자 인증 되었습니다. 계정을 연결해 주세요.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
|
||||||
|
if ($m!='member' || $front!="login") {
|
||||||
|
$call_modal_combine=1; // 계정통합 모달 호출
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if ($d['member']['join_enable']) { // 회원가입 작동 중지
|
||||||
|
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 사용자 인증 되었습니다.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
|
||||||
|
if ($m!='member' || $front!="join") {
|
||||||
|
$call_modal_join_social=1; // 소셜로그인 인증후,가입 모달 호출
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$call_modal_join_social=0;
|
||||||
|
$_SESSION['SL'] = ''; //세션 비우기
|
||||||
|
setrawcookie('site_common_result', rawurlencode(' 죄송합니다. 지금은 회원가입을 하실 수 없습니다.|danger'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} //소셜미디어에서 확득한 사용자 정보배열 세션이 있을때 끝
|
||||||
|
|
||||||
|
// 연결계정 정보
|
||||||
|
$my_naver = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='naver'",'*');
|
||||||
|
$my_kakao = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='kakao'",'*');
|
||||||
|
$my_google = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='google'",'*');
|
||||||
|
$my_facebook = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='facebook'",'*');
|
||||||
|
$my_instagram = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='instagram'",'*');
|
||||||
|
}
|
||||||
|
?>
|
||||||
58
_core/engine/notification.engine.admin.php
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
if(!defined('__KIMS__')) exit;
|
||||||
|
|
||||||
|
$g['notiVarForSite'] = $g['path_var'].'site/'.$r.'/notification.var.php';
|
||||||
|
include_once file_exists($g['notiVarForSite']) ? $g['notiVarForSite'] : $g['path_module'].'notification/var/var.php';
|
||||||
|
|
||||||
|
$NT_DATA = explode('|',$my['noticeconf']);
|
||||||
|
?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$('.rb-notifications-toggle').on('click', function () {
|
||||||
|
if(getId('rb-notifications-layer'))
|
||||||
|
{
|
||||||
|
getId('rb-notifications-layer').innerHTML = getAjaxData('<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=notice_check¬icedata=Y');
|
||||||
|
setTimeout("loadNotification();",1000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('.rb-notifications-modal').on('click',function() {
|
||||||
|
modalSetting('modal_window','<?php echo getModalLink('&system=popup.notification')?>');
|
||||||
|
});
|
||||||
|
$('.rb-notifications-modal-view').on('click',function() {
|
||||||
|
modalSetting('modal_window','<?php echo getModalLink('&system=popup.notification&callMod=view')?>');
|
||||||
|
});
|
||||||
|
$('.rb-notifications-modal-config').on('click',function() {
|
||||||
|
modalSetting('modal_window','<?php echo getModalLink('&system=popup.notification&callMod=config')?>');
|
||||||
|
});
|
||||||
|
|
||||||
|
function pushNotification(num)
|
||||||
|
{
|
||||||
|
var _num = (num >= <?php echo $d['ntfc']['num']?> ? '+<?php echo $d['ntfc']['num']?>' : num);
|
||||||
|
if (parent.getId('rb-notification-name'))
|
||||||
|
{
|
||||||
|
parent.getId('rb-notification-name').innerHTML = _num;
|
||||||
|
parent.getId('rb-notification-name').className = 'badge rb-notification-layer rb-notification-active' + (num == 0 ? ' hidden':'');
|
||||||
|
parent.getId('rb-notification-badge').innerHTML = num;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getId('rb-notification-badge'))
|
||||||
|
{
|
||||||
|
getId('rb-notification-badge').innerHTML = _num;
|
||||||
|
getId('rb-notification-badge').className = getId('rb-notification-badge').className.replace(' rb-notification-active','') + (num == 0 ? '':' rb-notification-active');
|
||||||
|
}
|
||||||
|
if (getId('rb-notification-badge-other'))
|
||||||
|
{
|
||||||
|
getId('rb-notification-badge-other').innerHTML = _num;
|
||||||
|
getId('rb-notification-badge-other').className = getId('rb-notification-badge').className.replace(' rb-notification-active','') + (num == 0 ? '':' rb-notification-active');
|
||||||
|
}
|
||||||
|
<?php if($NT_DATA[1] && !$_SESSION['sh_notify_popup']):?>
|
||||||
|
|
||||||
|
<?php endif?>
|
||||||
|
}
|
||||||
|
function loadNotification()
|
||||||
|
{
|
||||||
|
frames._action_frame_<?php echo $m?>.location.href = '<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=notice_check';
|
||||||
|
}
|
||||||
|
setTimeout("loadNotification();",<?php echo $d['ntfc']['sec']?>000);
|
||||||
|
pushNotification(<?php echo $my['num_notice']?>);
|
||||||
|
</script>
|
||||||
30
_core/engine/notification.engine.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
if(!defined('__KIMS__')) exit;
|
||||||
|
|
||||||
|
$g['notiVarForSite'] = $g['path_var'].'site/'.$r.'/notification.var.php';
|
||||||
|
include_once file_exists($g['notiVarForSite']) ? $g['notiVarForSite'] : $g['path_module'].'notification/var/var.php';
|
||||||
|
|
||||||
|
$N = explode('|',$my['noticeconf']);
|
||||||
|
$send_email = $N[1]?1:0;
|
||||||
|
$send_push = $N[2]?1:0;
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php if ($my['uid'] && $g['push_active']==1): ?>
|
||||||
|
<!-- FCM -->
|
||||||
|
<script src="<?php echo $g['s']?>/_var/fcm.info.js"></script>
|
||||||
|
<script src="https://www.gstatic.com/firebasejs/5.2.0/firebase-app.js"></script>
|
||||||
|
<script src="https://www.gstatic.com/firebasejs/5.2.0/firebase-messaging.js"></script>
|
||||||
|
<script src="<?php echo $g['url_layout']?>/_js/noti.js"></script>
|
||||||
|
<div class="token" hidden></div>
|
||||||
|
|
||||||
|
<?php if (!$send_push): ?>
|
||||||
|
<script>
|
||||||
|
console.log('푸시알림이 비활성화 되어 <?php echo $d['ntfc']['sec']?>초 마다 알림사항을 체크합니다.')
|
||||||
|
setTimeout(function(){
|
||||||
|
var src = '<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=get_notiNum&browtitle=<?php echo $g['browtitle']?>'
|
||||||
|
$("iframe[name=pushframe]").attr('src',src)
|
||||||
|
}, <?php echo $d['ntfc']['sec']?>000);
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php endif; ?>
|
||||||
7
_core/engine/siteopen.engine.php
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
if(!defined('__KIMS__')) exit;
|
||||||
|
|
||||||
|
if ($m != 'admin' && (($_HS['open']==2&&!$my['admin'])||$_HS['open']==3)) $iframe = 'Y';
|
||||||
|
if ($_HS['open'] == 2) if (!$my['admin'] && $m != 'admin' && $system != 'guide.stopsite') getLink($g['s'].'/?r='.$r.'&system=guide.stopsite','','','');
|
||||||
|
if ($_HS['open'] == 3) if ($m != 'admin' && $system != 'guide.stopsite') getLink($g['s'].'/?r='.$r.'&system=guide.stopsite','','','');
|
||||||
|
?>
|
||||||
0
_core/engine/widget.cssjs.php
Normal file
0
_core/engine/widget.engine.php
Normal file
104
_core/function/db.mysql.func.php
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
<?php
|
||||||
|
function isConnectedToDB($db)
|
||||||
|
{
|
||||||
|
return mysqli_connect($db['host'],$db['user'],$db['pass'],$db['name']);
|
||||||
|
}
|
||||||
|
function db_query($sql,$con)
|
||||||
|
{
|
||||||
|
mysqli_query($con,'set names utf8mb4');
|
||||||
|
mysqli_query($con,'set sql_mode=\'\'');
|
||||||
|
return mysqli_query($con,$sql);
|
||||||
|
}
|
||||||
|
function db_fetch_array($que)
|
||||||
|
{
|
||||||
|
return @mysqli_fetch_array($que);
|
||||||
|
}
|
||||||
|
function db_fetch_assoc($que)
|
||||||
|
{
|
||||||
|
return mysqli_fetch_assoc($que);
|
||||||
|
}
|
||||||
|
function db_num_rows($que)
|
||||||
|
{
|
||||||
|
return mysqli_num_rows($que);
|
||||||
|
}
|
||||||
|
function db_info()
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
return mysqli_get_server_info($DB_CONNECT);
|
||||||
|
}
|
||||||
|
function db_error()
|
||||||
|
{
|
||||||
|
return mysqli_error();
|
||||||
|
}
|
||||||
|
function db_close($conn)
|
||||||
|
{
|
||||||
|
return mysqli_close($conn);
|
||||||
|
}
|
||||||
|
function db_insert_id($conn)
|
||||||
|
{
|
||||||
|
return mysqli_insert_id($conn);
|
||||||
|
}
|
||||||
|
//DB-UID데이터
|
||||||
|
function getUidData($table,$uid)
|
||||||
|
{
|
||||||
|
return getDbData($table,'uid='.(int)$uid,'*');
|
||||||
|
}
|
||||||
|
//DB데이터 1ROW
|
||||||
|
function getDbData($table,$where,$data)
|
||||||
|
{
|
||||||
|
$row = db_fetch_array(getDbSelect($table,getSqlFilter($where),$data));
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
//DB데이터 ARRAY
|
||||||
|
function getDbArray($table,$where,$data,$sort,$orderby,$recnum,$p)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
$rcd = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):'').' order by '.$sort.' '.$orderby.($recnum?' limit '.(($p-1)*$recnum).', '.$recnum:''),$DB_CONNECT);
|
||||||
|
return $rcd;
|
||||||
|
}
|
||||||
|
//DB데이터 NUM
|
||||||
|
function getDbRows($table,$where)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
$rows = db_fetch_array(db_query('select count(*) from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
|
||||||
|
return $rows[0] ? $rows[0] : 0;
|
||||||
|
}
|
||||||
|
//DB데이터 MAX
|
||||||
|
function getDbCnt($table,$type,$where)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
$cnts = db_fetch_array(db_query('select '.$type.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
|
||||||
|
return $cnts[0] ? $cnts[0] : 0;
|
||||||
|
}
|
||||||
|
//DB셀렉트
|
||||||
|
function getDbSelect($table,$where,$data)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
$r = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
//DB삽입
|
||||||
|
function getDbInsert($table,$key,$val)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
db_query("insert into ".$table." (".$key.")values(".$val.")",$DB_CONNECT);
|
||||||
|
}
|
||||||
|
//DB업데이트
|
||||||
|
function getDbUpdate($table,$set,$where)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
db_query("update ".$table." set ".$set.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
|
||||||
|
}
|
||||||
|
//DB삭제
|
||||||
|
function getDbDelete($table,$where)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
db_query("delete from ".$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
|
||||||
|
}
|
||||||
|
|
||||||
|
//SQL필터링
|
||||||
|
function getSqlFilter($sql)
|
||||||
|
{
|
||||||
|
return preg_replace("( union| update| insert| delete| drop|\/\*|\*\/|\\\|\;)",'',$sql);
|
||||||
|
}
|
||||||
|
?>
|
||||||
114
_core/function/dir.func.php
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
<?php
|
||||||
|
//디렉토리복사
|
||||||
|
function DirCopy($dir1 , $dir2)
|
||||||
|
{
|
||||||
|
$dirh = opendir($dir1);
|
||||||
|
while(false !== ($filename = readdir($dirh)))
|
||||||
|
{
|
||||||
|
if($filename != '.' && $filename != '..')
|
||||||
|
{
|
||||||
|
if(!is_file($dir1.'/'.$filename))
|
||||||
|
{
|
||||||
|
@mkdir($dir2.'/'.$filename , 0707);
|
||||||
|
@chmod($dir2.'/'.$filename , 0707);
|
||||||
|
DirCopy($dir1.'/'.$filename , $dir2.'/'.$filename);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@copy($dir1.'/'.$filename , $dir2.'/'.$filename);
|
||||||
|
@chmod($dir2.'/'.$filename , 0707);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dirh);
|
||||||
|
}
|
||||||
|
//디렉토리삭제
|
||||||
|
function DirDelete($t_dir)
|
||||||
|
{
|
||||||
|
$dirh = opendir($t_dir);
|
||||||
|
while(false !== ($filename = readdir($dirh)))
|
||||||
|
{
|
||||||
|
if($filename != '.' && $filename != '..')
|
||||||
|
{
|
||||||
|
if(!is_file($t_dir.'/'.$filename))
|
||||||
|
{
|
||||||
|
DirDelete($t_dir.'/'.$filename);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
@unlink($t_dir.'/'.$filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dirh);
|
||||||
|
@rmdir($t_dir);
|
||||||
|
}
|
||||||
|
//디렉토리사이즈/파일갯수
|
||||||
|
function DirSizeNum($t_dir)
|
||||||
|
{
|
||||||
|
$dirh = opendir($t_dir);
|
||||||
|
while(false !== ($filename = readdir($dirh)))
|
||||||
|
{
|
||||||
|
if($filename != '.' && $filename != '..')
|
||||||
|
{
|
||||||
|
if(!is_file($t_dir.'/'.$filename)) {
|
||||||
|
$s = DirSizeNum($t_dir.'/'.$filename);
|
||||||
|
$d['size'] += $s['size'];
|
||||||
|
$d['num'] += $s['num'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$d['size'] += filesize($t_dir.'/'.$filename);
|
||||||
|
$d['num']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dirh);
|
||||||
|
return $d;
|
||||||
|
}
|
||||||
|
//퍼미션변경
|
||||||
|
function DirChmod($t_dir,$mode)
|
||||||
|
{
|
||||||
|
$dirh = opendir($t_dir);
|
||||||
|
while(false !== ($filename = readdir($dirh)))
|
||||||
|
{
|
||||||
|
if($filename != '.' && $filename != '..')
|
||||||
|
{
|
||||||
|
if(!is_file($t_dir.'/'.$filename))
|
||||||
|
{
|
||||||
|
@chmod($t_dir.'/'.$filename,$mode);
|
||||||
|
DirChmod($t_dir.'/'.$filename,$mode);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
@chmod($t_dir.'/'.$filename,$mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dirh);
|
||||||
|
@chmod($t_dir,$mode);
|
||||||
|
}
|
||||||
|
//압축
|
||||||
|
function DirZip($t_dir,$n_dir,$zipfile)
|
||||||
|
{
|
||||||
|
$dirh = opendir($t_dir);
|
||||||
|
while(false !== ($filename = readdir($dirh)))
|
||||||
|
{
|
||||||
|
if($filename != '.' && $filename != '..')
|
||||||
|
{
|
||||||
|
if(!is_file($t_dir.'/'.$filename))
|
||||||
|
{
|
||||||
|
$zipfile -> add_file('',$n_dir.'/'.$filename.'/');
|
||||||
|
DirZip($t_dir.'/'.$filename,$n_dir.'/'.$filename,$zipfile);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$zipfile -> add_file($t_dir.'/'.$filename,$n_dir.'/'.$filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dirh);
|
||||||
|
}
|
||||||
|
//디렉토리생성
|
||||||
|
function DirMake($dir)
|
||||||
|
{
|
||||||
|
@mkdir($dir,0707);
|
||||||
|
@chmod($dir,0707);
|
||||||
|
}
|
||||||
|
?>
|
||||||
68
_core/function/email.func.php
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
//이메일전송
|
||||||
|
include_once $g['path_core'].'opensrc/aws-sdk-php/v3/aws-autoloader.php';
|
||||||
|
|
||||||
|
use Aws\Ses\SesClient;
|
||||||
|
use Aws\Exception\AwsException;
|
||||||
|
|
||||||
|
function getSendMail($to,$from,$subject,$content,$html) {
|
||||||
|
global $g,$d;
|
||||||
|
|
||||||
|
if ($html == 'TEXT') $content = nl2br(htmlspecialchars($content));
|
||||||
|
$to_exp = explode('|', $to);
|
||||||
|
$from_exp = explode('|', $from);
|
||||||
|
|
||||||
|
if ($d['admin']['mailer']=='ses') {
|
||||||
|
|
||||||
|
define('SES_KEY', $d['admin']['ses_key']); //발급받은 키.
|
||||||
|
define('SES_SEC', $d['admin']['ses_sec']); //발급받은 비밀번호.
|
||||||
|
define('SES_REGION', $d['admin']['ses_region']); //SES 버킷의 리전.
|
||||||
|
|
||||||
|
$SesClient = new SesClient([
|
||||||
|
'credentials' => [
|
||||||
|
'key' => SES_KEY,
|
||||||
|
'secret' => SES_SEC,
|
||||||
|
],
|
||||||
|
'region' => SES_REGION,
|
||||||
|
'version' => 'latest'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$To = $to_exp[1] ? "\"".utf8_encode($to_exp[1])."\" <$to_exp[0]>" : $to_exp[0];
|
||||||
|
$Frm = $from_exp[1] ? "\"".utf8_encode($from_exp[1])."\" <$from_exp[0]>" : $from_exp[0];
|
||||||
|
|
||||||
|
$char_set = 'UTF-8';
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = $SesClient->sendEmail([
|
||||||
|
'Destination' => [
|
||||||
|
'ToAddresses' => [$To],
|
||||||
|
],
|
||||||
|
'ReplyToAddresses' => [$Frm],
|
||||||
|
'Source' => $Frm,
|
||||||
|
'Message' => [
|
||||||
|
'Body' => [
|
||||||
|
'Html' => [
|
||||||
|
'Charset' => $char_set,
|
||||||
|
'Data' => $content,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'Subject' => [
|
||||||
|
'Charset' => $char_set,
|
||||||
|
'Data' => $subject,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
return true;
|
||||||
|
} catch (AwsException $e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$To = $to_exp[1] ? "\"".getUTFtoKR($to_exp[1])."\" <$to_exp[0]>" : $to_exp[0];
|
||||||
|
$Frm = $from_exp[1] ? "\"".getUTFtoKR($from_exp[1])."\" <$from_exp[0]>" : $from_exp[0];
|
||||||
|
$Header = "From:$Frm\nReply-To:$frm\nX-Mailer:PHP/".phpversion();
|
||||||
|
$Header.= "\nContent-Type:text/html;charset=EUC-KR\r\n";
|
||||||
|
return @mail($To,getUTFtoKR($subject),getUTFtoKR($content),$Header);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
53
_core/function/fcm.func.php
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
// FCM 알림전송
|
||||||
|
function getSendFCM($token,$title,$message,$avatar,$referer,$tag) {
|
||||||
|
global $g,$d,$r;
|
||||||
|
$url = 'https://fcm.googleapis.com/fcm/send';
|
||||||
|
|
||||||
|
$g['notiIconForSite'] = $g['path_var'].'site/'.$r.'/homescreen.png';
|
||||||
|
$g['url_notiIcon'] = $g['s'].'/_var/site/'.$r.'/homescreen-192x192.png';
|
||||||
|
$site_icon = file_exists($g['notiIconForSite']) ? $g['url_notiIcon'] : $g['img_core'].'/touch/homescreen-192x192.png';
|
||||||
|
$icon = $avatar?$avatar:$site_icon;
|
||||||
|
|
||||||
|
$headers = array(
|
||||||
|
'Authorization:key ='.$d['admin']['fcm_key'],
|
||||||
|
'Content-Type: application/json'
|
||||||
|
);
|
||||||
|
|
||||||
|
$fields = array (
|
||||||
|
'data' => array ("title" => $title),
|
||||||
|
'notification' => array (
|
||||||
|
"title" => $title,
|
||||||
|
"body" => $message,
|
||||||
|
"icon" => $icon,
|
||||||
|
"click_action" => $referer,
|
||||||
|
"tag" => $tag
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if(is_array($token)) {
|
||||||
|
$fields['registration_ids'] = $token;
|
||||||
|
} else {
|
||||||
|
$fields['to'] = $token;
|
||||||
|
}
|
||||||
|
|
||||||
|
$fields['priority'] = "high";
|
||||||
|
|
||||||
|
$fields = json_encode ($fields);
|
||||||
|
|
||||||
|
$ch = curl_init ();
|
||||||
|
curl_setopt ($ch, CURLOPT_URL, $url );
|
||||||
|
curl_setopt ($ch, CURLOPT_POST, true );
|
||||||
|
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers );
|
||||||
|
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
|
||||||
|
curl_setopt ($ch, CURLOPT_POSTFIELDS, $fields );
|
||||||
|
|
||||||
|
$result = curl_exec ($ch);
|
||||||
|
if ($result === FALSE) {
|
||||||
|
die('FCM Send Error: ' . curl_error($ch));
|
||||||
|
}
|
||||||
|
curl_close ($ch);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
106
_core/function/lib/getContent.lib.php
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// php-htmlpurfier-html5 : https://github.com/kennberg/php-htmlpurfier-html5
|
||||||
|
function load_htmlpurifier($allowed) {
|
||||||
|
global $g;
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
|
||||||
|
$config->set('CSS.AllowTricky', true);
|
||||||
|
$config->set('Cache.SerializerPath', $g['path_tmp'].'cache/HTMLPurifier');
|
||||||
|
// Allow iframes from:
|
||||||
|
// o YouTube.com
|
||||||
|
// o Vimeo.com
|
||||||
|
$config->set('HTML.SafeIframe', true);
|
||||||
|
$config->set('URI.SafeIframeRegexp', '%^(http:|https:)?//(www.youtube(?:-nocookie)?.com/embed/|player.vimeo.com/video/)%');
|
||||||
|
$config->set('HTML.Allowed', implode(',', $allowed));
|
||||||
|
// Set some HTML5 properties
|
||||||
|
$config->set('HTML.DefinitionID', 'html5-definitions'); // unqiue id
|
||||||
|
$config->set('HTML.DefinitionRev', 1);
|
||||||
|
if ($def = $config->maybeGetRawHTMLDefinition()) {
|
||||||
|
// http://developers.whatwg.org/sections.html
|
||||||
|
$def->addElement('section', 'Block', 'Flow', 'Common');
|
||||||
|
$def->addElement('nav', 'Block', 'Flow', 'Common');
|
||||||
|
$def->addElement('article', 'Block', 'Flow', 'Common');
|
||||||
|
$def->addElement('aside', 'Block', 'Flow', 'Common');
|
||||||
|
$def->addElement('header', 'Block', 'Flow', 'Common');
|
||||||
|
$def->addElement('footer', 'Block', 'Flow', 'Common');
|
||||||
|
$def->addElement('blockquote', 'Block', 'Flow', 'Common');
|
||||||
|
|
||||||
|
// Content model actually excludes several tags, not modelled here
|
||||||
|
$def->addElement('address', 'Block', 'Flow', 'Common');
|
||||||
|
$def->addElement('hgroup', 'Block', 'Required: h1 | h2 | h3 | h4 | h5 | h6', 'Common');
|
||||||
|
// http://developers.whatwg.org/grouping-content.html
|
||||||
|
$def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
|
||||||
|
$def->addElement('figcaption', 'Inline', 'Flow', 'Common');
|
||||||
|
|
||||||
|
// http://developers.whatwg.org/the-video-element.html#the-video-element
|
||||||
|
$def->addElement('video', 'Block', 'Optional: (source, Flow) | (Flow, source) | Flow', 'Common', array(
|
||||||
|
'src' => 'URI',
|
||||||
|
'type' => 'Text',
|
||||||
|
'width' => 'Length',
|
||||||
|
'height' => 'Length',
|
||||||
|
'poster' => 'URI',
|
||||||
|
'preload' => 'Enum#auto,metadata,none',
|
||||||
|
'controls' => 'Bool',
|
||||||
|
));
|
||||||
|
$def->addElement('oembed', 'Block', 'Flow', 'Common', array(
|
||||||
|
'url' => 'URI'
|
||||||
|
));
|
||||||
|
$def->addElement('source', 'Block', 'Flow', 'Common', array(
|
||||||
|
'src' => 'URI',
|
||||||
|
'type' => 'Text',
|
||||||
|
));
|
||||||
|
// http://developers.whatwg.org/text-level-semantics.html
|
||||||
|
$def->addElement('s', 'Inline', 'Inline', 'Common');
|
||||||
|
$def->addElement('var', 'Inline', 'Inline', 'Common');
|
||||||
|
$def->addElement('sub', 'Inline', 'Inline', 'Common');
|
||||||
|
$def->addElement('sup', 'Inline', 'Inline', 'Common');
|
||||||
|
$def->addElement('mark', 'Inline', 'Inline', 'Common');
|
||||||
|
$def->addElement('wbr', 'Inline', 'Empty', 'Core');
|
||||||
|
// http://developers.whatwg.org/edits.html
|
||||||
|
$def->addElement('ins', 'Block', 'Flow', 'Common', array('cite' => 'URI', 'datetime' => 'CDATA'));
|
||||||
|
$def->addElement('del', 'Block', 'Flow', 'Common', array('cite' => 'URI', 'datetime' => 'CDATA'));
|
||||||
|
// TinyMCE
|
||||||
|
$def->addAttribute('img', 'data-mce-src', 'Text');
|
||||||
|
$def->addAttribute('img', 'data-mce-json', 'Text');
|
||||||
|
// Others
|
||||||
|
$def->addAttribute('iframe', 'allowfullscreen', 'Bool');
|
||||||
|
$def->addAttribute('table', 'height', 'Text');
|
||||||
|
$def->addAttribute('td', 'border', 'Text');
|
||||||
|
$def->addAttribute('th', 'border', 'Text');
|
||||||
|
$def->addAttribute('tr', 'width', 'Text');
|
||||||
|
$def->addAttribute('tr', 'height', 'Text');
|
||||||
|
$def->addAttribute('tr', 'border', 'Text');
|
||||||
|
}
|
||||||
|
return new HTMLPurifier($config);
|
||||||
|
}
|
||||||
|
|
||||||
|
function LIB_getContents($str,$html) {
|
||||||
|
global $d,$g;
|
||||||
|
if ($html == 'HTML') {
|
||||||
|
|
||||||
|
$_atkParam = $pattern = explode(',',$d['admin']['secu_param']);
|
||||||
|
foreach($_atkParam as $_prm) $str = str_replace($_prm,'',$str);
|
||||||
|
|
||||||
|
// HTMLPurifier
|
||||||
|
require_once $g['path_core'].'opensrc/HTMLPurifier/4.10.0/HTMLPurifier.safe-includes.php';
|
||||||
|
$allowed = explode(',',$d['admin']['secu_tags']);
|
||||||
|
$purifier = load_htmlpurifier($allowed);
|
||||||
|
$str = $purifier->purify($str);
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$str = str_replace('<','<',$str);
|
||||||
|
$str = str_replace('>','>',$str);
|
||||||
|
$str = str_replace(' ','&nbsp;',$str);
|
||||||
|
$str = str_replace("\t",' ',$str);
|
||||||
|
$str = nl2br($str);
|
||||||
|
}
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIframes($str) {
|
||||||
|
preg_match_all("/<iframe[^>]*?>/si", $str, $mat);
|
||||||
|
return $mat[0];
|
||||||
|
}
|
||||||
|
?>
|
||||||
51
_core/function/lib/getLink.lib.php
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="<?php echo $GLOBALS['lang']['admin']['flag']?>">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="robots" content="noindex,nofollow">
|
||||||
|
<title></title>
|
||||||
|
<script>
|
||||||
|
var cHref = <?php if($target) echo $target?>location.href.split('#');
|
||||||
|
<?php $url = str_replace('&','&',$url)?>
|
||||||
|
<?php if($alert):?>alert('<?php echo $alert?>');<?php endif?>
|
||||||
|
<?php if(!strpos($url,'__target')):?>
|
||||||
|
<?php if($url=='reload'):?>
|
||||||
|
<?php if($_POST):?>
|
||||||
|
<?php if($target) echo $target?>location.replace(cHref[0]);
|
||||||
|
<?php else:?>
|
||||||
|
<?php if($target) echo $target?>location.reload();
|
||||||
|
<?php endif?>
|
||||||
|
<?php endif?>
|
||||||
|
|
||||||
|
<?php if($url&&$url!='reload'):?><?php if($target) echo $target?>location.href="<?php echo $url?>";<?php endif?>
|
||||||
|
<?php endif?>
|
||||||
|
<?php if($history=='close'):?>window.top.close();<?php endif?>
|
||||||
|
<?php if($history<0):?>history.go(<?php echo $history?>);<?php endif?>
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if (strpos($url,'__target')) :
|
||||||
|
$url_exp = explode('?',$url);
|
||||||
|
$par_exp = explode('&',$url_exp[1]);
|
||||||
|
?>
|
||||||
|
<form name="backForm" action="<?php echo $g['s']?>" method="get" target="">
|
||||||
|
<?php foreach($par_exp as $val):if(trim($val)=='')continue?>
|
||||||
|
<?php $_prm = explode('=',$val)?>
|
||||||
|
<?php if($_prm[0]=='__target'){$__target=$_prm[1];continue;}?>
|
||||||
|
<input type="hidden" name="<?php echo $_prm[0]?>" value="<?php echo $_prm[1]?>" />
|
||||||
|
<?php endforeach?>
|
||||||
|
</form>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
document.backForm.target = '<?php echo $__target?>';
|
||||||
|
document.backForm.submit();
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
<?php endif?>
|
||||||
|
|
||||||
|
<h1><a href="http://<?php echo $_SERVER['HTTP_HOST'] ?>/"><?php echo $_HS['title'] ?></a></h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<?php exit?>
|
||||||
27
_core/function/lib/getUploadImage.lib.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
function LIB_getUploadImage($upfiles,$d,$content,$ext)
|
||||||
|
{
|
||||||
|
$imgs = getImgs($content,$ext);
|
||||||
|
if ($imgs[0])
|
||||||
|
{
|
||||||
|
if (!$upfiles) return $imgs[0];
|
||||||
|
$basename = basename($imgs[0]);
|
||||||
|
$encname = md5($basename);
|
||||||
|
$folder = substr($d,0,4).'/'.substr($d,4,2).'/'.substr($d,6,2);
|
||||||
|
if (is_file($GLOBALS['g']['path_file'].$folder.'/'.$encname)) return str_replace($basename,'',$imgs[0]).$encname;
|
||||||
|
}
|
||||||
|
if ($upfiles)
|
||||||
|
{
|
||||||
|
$upArray = getArrayString($upfiles);
|
||||||
|
foreach($upArray['data'] as $_val)
|
||||||
|
{
|
||||||
|
$U = getUidData($GLOBALS['table']['s_upload'],$_val);
|
||||||
|
if (!$U['uid']) continue;
|
||||||
|
if (strpos('_jpg,gif,png',$U['ext']))
|
||||||
|
{
|
||||||
|
return $U['url'].$U['folder'].'/'.$U['thumbname'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
22
_core/function/lib/getWindow.lib.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="<?php echo $GLOBALS['lang']['admin']['flag']?>">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="robots" content="noindex,nofollow">
|
||||||
|
<title></title>
|
||||||
|
<script>
|
||||||
|
<?php $url = str_replace('&','&',$url)?>
|
||||||
|
<?php if($alert):?>alert('<?php echo $alert?>');<?php endif?>
|
||||||
|
<?php if($url):?>window.open('<?php echo $url?>','','<?php echo $option?>');<?php endif?>
|
||||||
|
<?php if($backurl=='reload'):?>
|
||||||
|
<?php if($_POST):?>
|
||||||
|
<?php if($target) echo $target?>location.replace(<?php if($target) echo $target?>location.href);
|
||||||
|
<?php else:?>
|
||||||
|
<?php if($target) echo $target?>location.reload();
|
||||||
|
<?php endif?>
|
||||||
|
<?php endif?>
|
||||||
|
<?php if($backurl&&$backurl!='reload'):?><?php if($target) echo $target?>location.href="<?php echo $backurl?>";<?php endif?>
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body></body>
|
||||||
|
</html>
|
||||||
18
_core/function/lib/page.lib.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
function LIB_getPageLink($lnum,$p,$tpage,$_N)
|
||||||
|
{
|
||||||
|
if (!$_N) $_N = $GLOBALS['g']['pagelink'].'&';
|
||||||
|
$g_q = $p > 1 ? '<li class="page-item"><a class="page-link" href="'.$_N.'p=1" data-toggle="tooltip" title="첫 페이지"><i class="fa fa-angle-double-left"></i></a></li>' : '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="First page"><i class="fa fa-angle-double-left"></i></a></li>';
|
||||||
|
if($p < $lnum+1) { $g_q .= '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="이전 페이지"><i class="fa fa-angle-left"></i></a></li>'; }
|
||||||
|
else{ $pp = (int)(($p-1)/$lnum)*$lnum; $g_q .= '<li class="page-item"><a class="page-link" href="'.$_N.'page='.$pp.'" data-toggle="tooltip" title="Previous page"><i class="fa fa-angle-left"></i></a></li>';}
|
||||||
|
$st1 = (int)(($p-1)/$lnum)*$lnum + 1;
|
||||||
|
$st2 = $st1 + $lnum;
|
||||||
|
for($jn = $st1; $jn < $st2; $jn++)
|
||||||
|
if ( $jn <= $tpage)
|
||||||
|
($jn == $p)? $g_q .= '<li class="page-item active"><span class="page-link">'.$jn.'</span></li>' : $g_q .= '<li class="page-item"><a class="page-link" href="'.$_N.'p='.$jn.'">'.$jn.'</a></li>';
|
||||||
|
if($tpage < $lnum || $tpage < $jn) { $g_q .= '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="Next page"><i class="fa fa-angle-right"></i></a></li>'; }
|
||||||
|
else{$np = $jn; $g_q .= '<li class="page-item"><a class="page-link" href="'.$_N.'p='.$np.'" data-toggle="tooltip" title="다음 페이지"><i class="fa fa-angle-right"></i></a></li>'; }
|
||||||
|
$g_q .= $tpage > $p ? '<li class="page-item"><a class="page-link" href="'.$_N.'p='.$tpage.'" data-toggle="tooltip" title="마지막 페이지('.$tpage.')"><i class="fa fa-angle-double-right"></i></a></li>' : '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="Last page('.$tpage.')"><i class="fa fa-angle-double-right"></i></a></li>';
|
||||||
|
return $g_q;
|
||||||
|
}
|
||||||
|
?>
|
||||||
55
_core/function/lib/searchsql.lib.php
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
//검색sql
|
||||||
|
function LIB_getSearchSql($w,$k,$ik,$h)
|
||||||
|
{
|
||||||
|
if($k==',' || (!$k&&$h=='not')) return '';
|
||||||
|
$k = $k ? urldecode($k) : '';
|
||||||
|
$ik= $ik? urldecode($ik) : '';
|
||||||
|
$h = $h ? $h : 'or';
|
||||||
|
$k = str_replace(' ', ',',$k);
|
||||||
|
$karr = explode(',' , $k);
|
||||||
|
$knm = count($karr);
|
||||||
|
|
||||||
|
$result = ' and (';
|
||||||
|
|
||||||
|
if ($h == 'not')
|
||||||
|
{
|
||||||
|
$h = 'and';
|
||||||
|
if (strstr($w,'|'))
|
||||||
|
{
|
||||||
|
$warr = explode('|' , $w);
|
||||||
|
$wnm = count($warr);
|
||||||
|
|
||||||
|
for ($j = 0; $j < $knm; $j++)
|
||||||
|
{
|
||||||
|
if (!$karr[$j]) continue;
|
||||||
|
|
||||||
|
for ($i = 0; $i < $wnm; $i++) if (strlen($karr[$j])>2) $result .= $warr[$i]."<>'".$karr[$j]."' ".$h.' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for ($i = 0; $i < $knm; $i++) if (strlen($karr[$i])>2) $result .= $w."<>'".$karr[$i]."' ".$h.' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (strstr($w,'|'))
|
||||||
|
{
|
||||||
|
$warr = explode('|' , $w);
|
||||||
|
$wnm = count($warr);
|
||||||
|
|
||||||
|
for ($j = 0; $j < $knm; $j++)
|
||||||
|
{
|
||||||
|
if (!$karr[$j]) continue;
|
||||||
|
|
||||||
|
for ($i = 0; $i < $wnm; $i++) if (strlen($karr[$j])>2) $result .= $warr[$i]." like '%".$karr[$j]."%' ".$h.' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for ($i = 0; $i < $knm; $i++) if (strlen($karr[$i])>2) $result .= $w." like '%".$karr[$i]."%' ".$h.' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result = substr($result,0,strlen($result)-4).')';
|
||||||
|
if($ik) $result .= getSearchSql($w,$ik,'',$h);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
?>
|
||||||
74
_core/function/menu.func.php
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
//메뉴출력
|
||||||
|
function getMenuShow($site,$table,$j,$parent,$depth,$uid,$CXA,$hidden)
|
||||||
|
{
|
||||||
|
global $cat,$g;
|
||||||
|
global $MenuOpen,$numhidden,$checkbox,$headfoot;
|
||||||
|
static $j;
|
||||||
|
|
||||||
|
$CD=getDbSelect($table,($site?'site='.$site.' and ':'').'depth='.($depth+1).' and parent='.$parent.($hidden ? ' and hidden=0':'').' order by gid asc','*');
|
||||||
|
while($C=db_fetch_array($CD))
|
||||||
|
{
|
||||||
|
$j++;
|
||||||
|
if(@in_array($C['uid'],$CXA)) $MenuOpen .= 'trees[0].tmB('.$j.');';
|
||||||
|
$numprintx = !$numhidden && $C['num'] ? '<span class="num">('.$C['num'].')</span>' : '';
|
||||||
|
$C['name'] = $headfoot && ($C['imghead']||$C['imgfoot']||$C['codhead']||$C['codfoot']) ? '<b>'.$C['name'].'<b>' : $C['name'];
|
||||||
|
$name = $C['uid'] != $cat ? addslashes($C['name']): '<span class="on">'.addslashes($C['name']).'</span>';
|
||||||
|
$name = '<span class="ticon tdepth'.$C['depth'].'"></span><span class="name'.($C['hidden']||$C['reject']?' hidden':'').' ndepth'.$C['depth'].'">'.$name.'</span>';
|
||||||
|
|
||||||
|
if($checkbox) $icon1 = '<input type="checkbox" name="members[]" value="'.$C['uid'].'" />';
|
||||||
|
$icon2 = $C['mobile'] ? ' <img src="'.$g['img_core'].'/_public/ico_mobile.gif" class="mobile" alt="" />' : '';
|
||||||
|
$icon3 = $C['reject'] ? ' <img src="'.$g['img_core'].'/_public/ico_hidden.gif" alt="" />' : '';
|
||||||
|
|
||||||
|
if ($C['is_child'])
|
||||||
|
{
|
||||||
|
echo "['".$icon1.$name.$icon2.$numprintx."','".$C['uid']."',";
|
||||||
|
getMenuShow($site,$table,$j,$C['uid'],$C['depth'],$uid,$CXA,$hidden);
|
||||||
|
echo "],\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
echo "['".$icon1.$name.$icon2.$icon3.$numprintx."','".$C['uid']."',''],\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//메뉴코드->경로
|
||||||
|
function getMenuCodeToPath($table,$cat,$j)
|
||||||
|
{
|
||||||
|
global $DB_CONNECT;
|
||||||
|
static $arr;
|
||||||
|
|
||||||
|
$R=getUidData($table,$cat);
|
||||||
|
if($R['parent'])
|
||||||
|
{
|
||||||
|
$arr[$j]['uid'] = $R['uid'];
|
||||||
|
$arr[$j]['id'] = $R['id'];
|
||||||
|
$arr[$j]['name']= $R['name'];
|
||||||
|
getMenuCodeToPath($table,$R['parent'],$j+1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$C=getUidData($table,$cat);
|
||||||
|
$arr[$j]['uid'] = $C['uid'];
|
||||||
|
$arr[$j]['id'] = $C['id'];
|
||||||
|
$arr[$j]['name']= $C['name'];
|
||||||
|
}
|
||||||
|
sort($arr);
|
||||||
|
reset($arr);
|
||||||
|
return $arr;
|
||||||
|
}
|
||||||
|
//메뉴코드->SQL
|
||||||
|
function getMenuCodeToSql($table,$cat,$f)
|
||||||
|
{
|
||||||
|
static $sql;
|
||||||
|
|
||||||
|
$R=getUidData($table,$cat);
|
||||||
|
if ($R['uid']) $sql .= $f.'='.$R['uid'].' or ';
|
||||||
|
if ($R['is_child'])
|
||||||
|
{
|
||||||
|
$RDATA=getDbSelect($table,'parent='.$R['uid'],'uid');
|
||||||
|
while($C=db_fetch_array($RDATA)) getMenuCodeToSql($table,$C['uid'],$f);
|
||||||
|
}
|
||||||
|
return substr($sql,0,strlen($sql)-4);
|
||||||
|
}
|
||||||
|
?>
|
||||||
38
_core/function/menu1.func.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
//카테고리출력
|
||||||
|
function getMenuShowSelect($site,$table,$j,$parent,$depth,$uid,$hidden,$id)
|
||||||
|
{
|
||||||
|
global $cat,$_isUid;
|
||||||
|
static $j;
|
||||||
|
|
||||||
|
$CD=getDbSelect($table,($site?'site='.$site.' and ':'').'depth='.($depth+1).' and parent='.$parent.($hidden ? ' and hidden=0':'').' order by gid asc','*');
|
||||||
|
while($C=db_fetch_array($CD))
|
||||||
|
{
|
||||||
|
$nId = ($id?$id.'/':'').$C[$_isUid.'id'];
|
||||||
|
$j++;
|
||||||
|
echo '<option class="selectcat'.$C['depth'].'" value="'.$nId.'"'.($nId==$cat?' selected':'').'>';
|
||||||
|
for($i=1;$i<$C['depth'];$i++) echo ' ';
|
||||||
|
if ($C['depth'] > 1) echo 'ㄴ';
|
||||||
|
echo $C['name'].($C['num']?' ('.$C['num'].')':'').'</option>';
|
||||||
|
if ($C['is_child']) getMenuShowSelect($site,$table,$j,$C['uid'],$C['depth'],$uid,$hidden,$nId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMenuShowSelectCode($site,$table,$j,$parent,$depth,$uid,$hidden,$id)
|
||||||
|
{
|
||||||
|
global $cat,$_isUid;
|
||||||
|
static $j;
|
||||||
|
|
||||||
|
$CD=getDbSelect($table,($site?'site='.$site.' and ':'').'depth='.($depth+1).' and parent='.$parent.($hidden ? ' and hidden=0':'').' order by gid asc','*');
|
||||||
|
while($C=db_fetch_array($CD))
|
||||||
|
{
|
||||||
|
$nId = $C[$_isUid.'id'];
|
||||||
|
$j++;
|
||||||
|
echo '<option class="selectcat'.$C['depth'].'" value="'.$nId.'"'.($nId==$cat?' selected':'').'>';
|
||||||
|
for($i=1;$i<$C['depth'];$i++) echo ' ';
|
||||||
|
if ($C['depth'] > 1) echo 'ㄴ';
|
||||||
|
echo $C['name'].($C['num']?' ('.$C['num'].')':'').'</option>';
|
||||||
|
if ($C['is_child']) getMenuShowSelectCode($site,$table,$j,$C['uid'],$C['depth'],$uid,$hidden,$nId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
82
_core/function/rss.func.php
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
function getUrlData($url,$sec)
|
||||||
|
{
|
||||||
|
$URL_parsed = parse_url($url);
|
||||||
|
$host = $URL_parsed['host'];
|
||||||
|
$port = $URL_parsed['port'];
|
||||||
|
$path = $URL_parsed['path'];
|
||||||
|
$query= $URL_parsed['query'];
|
||||||
|
$scheme= $URL_parsed['scheme'];
|
||||||
|
|
||||||
|
if (!$host) $host = $_SERVER['HTTP_HOST'];
|
||||||
|
|
||||||
|
$out = "GET ".$path.'?'.$query." HTTP/1.1\r\n";
|
||||||
|
$out .= "Host: ".$host."\r\n";
|
||||||
|
$out .= "Connection: Close\r\n\r\n";
|
||||||
|
|
||||||
|
if ($scheme == 'https') {
|
||||||
|
if (!$port) $port = 443;
|
||||||
|
$fp = fsockopen('ssl://'.$host,$port,$errno,$errstr,$sec);
|
||||||
|
} else {
|
||||||
|
if (!$port) $port = 80;
|
||||||
|
$fp = fsockopen($host,$port,$errno,$errstr,$sec);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$fp)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fputs($fp, $out);
|
||||||
|
$body = false;
|
||||||
|
while (!feof($fp)) {
|
||||||
|
$s = fgets($fp, 128);
|
||||||
|
if ( $body )
|
||||||
|
$in .= $s;
|
||||||
|
if ( $s == "\r\n" )
|
||||||
|
$body = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($fp);
|
||||||
|
return $in;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getRssArray($url,$tag)
|
||||||
|
{
|
||||||
|
return explode('<'.$tag.'>',getUrlData($url,10));
|
||||||
|
}
|
||||||
|
function getRssTagValue($str,$tag)
|
||||||
|
{
|
||||||
|
$str_exp = explode('<'.$tag.'>' , $str);
|
||||||
|
$str_exp = explode('</'.$tag.'>' , $str_exp[1]);
|
||||||
|
$result = getUTFtoUTF($str_exp[0]) == $str_exp[0] ? $str_exp[0] : getKRtoUTF($str_exp[0]);
|
||||||
|
return trim($result);
|
||||||
|
}
|
||||||
|
function getRssPageTitle($str,$tag)
|
||||||
|
{
|
||||||
|
return getRssTagValue($str,$tag);
|
||||||
|
}
|
||||||
|
function getRssContent($str,$tag)
|
||||||
|
{
|
||||||
|
$str = str_replace('>','>',$str);
|
||||||
|
$str = str_replace('<','<',$str);
|
||||||
|
$str = str_replace('"','"',$str);
|
||||||
|
$str = str_replace(''','\'',$str);
|
||||||
|
$str = getRssTagValue($str,$tag);
|
||||||
|
$str = str_replace(']]>','',$str);
|
||||||
|
$str = str_replace('<![CDATA[','',$str);
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
function getRssDomain($url)
|
||||||
|
{
|
||||||
|
$e = explode('/',str_replace('www.','',str_replace('http://','',$url)));
|
||||||
|
return $e[0];
|
||||||
|
}
|
||||||
|
function getJSONData($data,$f)
|
||||||
|
{
|
||||||
|
$arr1 = explode('"'.$f.'":"',str_replace(': "',':"',$data));
|
||||||
|
$arr2 = explode('"',$arr1[1]);
|
||||||
|
return $arr2[0];
|
||||||
|
}
|
||||||
|
?>
|
||||||
41
_core/function/search.func.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
function getAgoGrade($SR,$keyword,$d1,$d2)
|
||||||
|
{
|
||||||
|
global $date,$table,$DB_CONNECT,$s;
|
||||||
|
$d_regis1 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d1,substr($date['today'],0,4)));
|
||||||
|
$d_regis2 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d2,substr($date['today'],0,4)));
|
||||||
|
$WHEREIS = 'where (date between '.$d_regis1.' and '.$d_regis2.") and keyword='".$keyword."' and site=".$s;
|
||||||
|
$SCOUNT = db_fetch_array(db_query('SELECT sum(hit) FROM '.$table['s_inkey'].' '.$WHEREIS,$DB_CONNECT));
|
||||||
|
|
||||||
|
if (!$SCOUNT[0]) return -1;
|
||||||
|
$len = count($SR);
|
||||||
|
for($i = 0; $i < $len; $i++)
|
||||||
|
{
|
||||||
|
if ($SCOUNT[0] > $SR[$i]) break;
|
||||||
|
}
|
||||||
|
return $i;
|
||||||
|
}
|
||||||
|
function getGradeArr($d1,$d2)
|
||||||
|
{
|
||||||
|
global $date,$table,$DB_CONNECT,$s;
|
||||||
|
$d_regis1 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d1,substr($date['today'],0,4)));
|
||||||
|
$d_regis2 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d2,substr($date['today'],0,4)));
|
||||||
|
$WHEREIS = 'where (date between '.$d_regis1.' and '.$d_regis2.') and site='.$s;
|
||||||
|
$SCOUNT = db_query('SELECT sum(hit) as cnt FROM '.$table['s_inkey'].' '.$WHEREIS.' group by keyword order by cnt desc',$DB_CONNECT);
|
||||||
|
while($R=db_fetch_array($SCOUNT)) $ARR[] = $R['cnt'];
|
||||||
|
return $ARR;
|
||||||
|
}
|
||||||
|
function getSicon($n1,$n2)
|
||||||
|
{
|
||||||
|
if($n1 < 0) return 'new';
|
||||||
|
if($n1 > $n2) return 'up';
|
||||||
|
if($n1 < $n2) return 'down';
|
||||||
|
if($n1 ==$n2) return 'same';
|
||||||
|
}
|
||||||
|
function getNumChange($n1,$n2)
|
||||||
|
{
|
||||||
|
if($n1 < 0 || $n1 == $n2) return '';
|
||||||
|
if($n1 > $n2) return $n1 - $n2;
|
||||||
|
if($n1 < $n2) return $n2 - $n1;
|
||||||
|
}
|
||||||
|
?>
|
||||||
97
_core/function/sms.func.php
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
<?php
|
||||||
|
//SMS 전송
|
||||||
|
function getSendSMS($to,$from,$subject,$content,$type)
|
||||||
|
{
|
||||||
|
global $g,$d;
|
||||||
|
|
||||||
|
if ($html == 'TEXT') $content = nl2br(htmlspecialchars($content));
|
||||||
|
|
||||||
|
require $g['path_core'].'opensrc/snoopy/Snoopy.class.php';
|
||||||
|
|
||||||
|
$snoopy = new Snoopy;
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
// MMS일 경우 첨부파일 처리
|
||||||
|
// 서버&로컬 에 저장된 이미지 파일 읽어올때.
|
||||||
|
// 웹경로 ,로컬경로 모두 가능 합니다.
|
||||||
|
\*======================================================================*/
|
||||||
|
$img_source = 'http://websvc.nesolution.com/sms/MMSAttachFiles/M050085/20180510145947.jpg';
|
||||||
|
//$img_source = './img/test.jpg';
|
||||||
|
|
||||||
|
// $img = file_get_contents($img_source);
|
||||||
|
// $Base64files = base64_encode($img);
|
||||||
|
|
||||||
|
//"," 콤마로 구분 최대 3개.가능합니다.
|
||||||
|
$files = $Base64files .",".$Base64files .",".$Base64files ;
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
// MMS일 경우 첨부파일 처리
|
||||||
|
// 프론트에서 이미지 파일을 base64로 생성후 post로 받아 올때.
|
||||||
|
// POST 방식
|
||||||
|
\*======================================================================*/
|
||||||
|
/*
|
||||||
|
$files = $_POST["Base64files"];//MMS 발송시 첨부파일
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
// utf-8 인코딩을 사용할 경우
|
||||||
|
// POST 방식
|
||||||
|
\*======================================================================*/
|
||||||
|
|
||||||
|
$cmd = "SendSms";
|
||||||
|
$tran_phone = urlencode(iconv('UTF-8', 'EUC-KR', $to)); //받는사람 핸드폰 번호
|
||||||
|
$tran_callback = urlencode(iconv('UTF-8', 'EUC-KR', $from)); //보내는사람 핸드폰 번호
|
||||||
|
$tran_date = urlencode(iconv('UTF-8', 'EUC-KR', $date)); //예약전송 일시(생략시 즉시전송)
|
||||||
|
$tran_msg = urlencode(iconv('UTF-8', 'EUC-KR',$content)); //전송 메시지
|
||||||
|
$guest_no = urlencode(iconv('UTF-8', 'EUC-KR',$d['admin']['sms_id'])); //SMS 계정 아이디
|
||||||
|
$guest_key = urlencode(iconv('UTF-8', 'EUC-KR',$d['admin']['sms_key'])); //SMS 계정 인증키
|
||||||
|
$type = urlencode(iconv('UTF-8', 'EUC-KR',$type)); //발송구분
|
||||||
|
$subject = urlencode(iconv('UTF-8', 'EUC-KR',$subject)); //LMS / MMS 발송시 제목
|
||||||
|
$files = $_POST["Base64files"];//MMS 발송시 첨부파일
|
||||||
|
|
||||||
|
if($type != "MMS") {
|
||||||
|
/*======================================================================*\
|
||||||
|
// GET 으로 호출
|
||||||
|
이미지 첨부시 에러 발생함니다. post 로 전송하세요.
|
||||||
|
\*======================================================================*/
|
||||||
|
$method = "GET";
|
||||||
|
$url = "http://websvc.nesolution.com/SMS/SMS.aspx?cmd=$cmd&method=$method&";
|
||||||
|
$url = $url . "guest_no=$guest_no&guest_key=$guest_key&tran_phone=$tran_phone&";
|
||||||
|
$url = $url . "tran_callback=$tran_callback&tran_date=$tran_date&tran_msg=$tran_msg&";
|
||||||
|
$url = $url . "type=$type&subject=$subject"; // LMS 또는 MMS 일경우 제목 필수
|
||||||
|
|
||||||
|
$snoopy->fetchtext($url);
|
||||||
|
// 출력 페이지가 euc-kr 일때
|
||||||
|
//$send_result = $snoopy->results;
|
||||||
|
// 출력 페이지가 utf-8 일때
|
||||||
|
$send_result = iconv('EUC-KR', 'UTF-8', $snoopy->results);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*======================================================================*\
|
||||||
|
// $snoopy 사용 POST 발송(MMS 파일첨부시)
|
||||||
|
\*======================================================================*/
|
||||||
|
|
||||||
|
$formvars["cmd"] =$cmd;
|
||||||
|
$formvars["guest_no"] = $guest_no;
|
||||||
|
$formvars["guest_key"] = $guest_key;
|
||||||
|
$formvars["tran_phone"] = $tran_phone;
|
||||||
|
$formvars["tran_callback"] = $tran_callback;
|
||||||
|
$formvars["tran_date"] = $tran_date;
|
||||||
|
$formvars["tran_msg"] = $tran_msg;
|
||||||
|
$formvars["type"] = $type;
|
||||||
|
$formvars["subject"] = $subject;
|
||||||
|
$formvars["files"] = $files;
|
||||||
|
|
||||||
|
$snoopy->httpmethod = "POST";
|
||||||
|
$snoopy->submit("http://websvc.nesolution.com/SMS/SMS.aspx",$formvars );
|
||||||
|
|
||||||
|
//출력 페이지가 euc-kr 일때
|
||||||
|
//$send_result = $snoopy->results;
|
||||||
|
// 출력 페이지가 utf-8 일때
|
||||||
|
$send_result = iconv('EUC-KR', 'UTF-8', $snoopy->results);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $send_result;
|
||||||
|
}
|
||||||
|
?>
|
||||||
38
_core/function/string.func.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
//문자열형태소추출
|
||||||
|
function getSiKey($singer)
|
||||||
|
{
|
||||||
|
$singer_set1 = "ㄱ,ㄴ,ㄷ,ㄹ,ㅁ,ㅂ,ㅅ,ㅇ,ㅈ,ㅊ,ㅋ,ㅍ,ㅌ,ㅎ";
|
||||||
|
$singer_set2 = "가,나,다,라,마,바,사,아,자,차,카,타,파,하";
|
||||||
|
$singer_set3 = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
|
||||||
|
$singer_arr1 = explode(',' , $singer_set1);
|
||||||
|
$singer_arr2 = explode(',' , $singer_set2);
|
||||||
|
$singer_arr3 = explode(',' , $singer_set3);
|
||||||
|
|
||||||
|
$singer_sub = substr(strtoupper($singer) , 0 , 2);
|
||||||
|
$singer_ord = ord($singer_sub);
|
||||||
|
|
||||||
|
if ($singer_ord > 64 && $singer_ord < 91)
|
||||||
|
{ // 영문
|
||||||
|
|
||||||
|
for($i = 0; $i < 26; $i++)
|
||||||
|
{
|
||||||
|
if($singer_sub >= $singer_arr3[$i])
|
||||||
|
{
|
||||||
|
$key = $singer_arr3[$i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$key = "기타";
|
||||||
|
for($i = 0; $i < 14; $i++)
|
||||||
|
{
|
||||||
|
if ($singer_sub >= $singer_arr2[$i])
|
||||||
|
{
|
||||||
|
$key = $singer_arr1[$i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $key;
|
||||||
|
}
|
||||||
|
?>
|
||||||
36
_core/function/sys.class.php
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// 템플릿 파싱 및 데이타 치환
|
||||||
|
class skin {
|
||||||
|
var $filename;
|
||||||
|
|
||||||
|
public function __construct($filename) {
|
||||||
|
$this->filename = $filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function mk($filename) {
|
||||||
|
$this->filename = $filename;
|
||||||
|
return $this->make();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function make() {
|
||||||
|
global $g,$m,$theme;
|
||||||
|
$file = sprintf('./modules/'.$m.'/themes/'.$theme.'/_html/%s.html', $this->filename);
|
||||||
|
$fh_skin = fopen($file, 'r');
|
||||||
|
$skin = @fread($fh_skin, filesize($file));
|
||||||
|
fclose($fh_skin);
|
||||||
|
//return $skin;
|
||||||
|
return $this->parse($skin);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function parse($skin) {
|
||||||
|
global $TMPL, $LNG;
|
||||||
|
|
||||||
|
$skin = preg_replace_callback('/{\$lng->(.+?)}/i', create_function('$matches', 'global $LNG; return $LNG[$matches[1]];'), $skin);
|
||||||
|
$skin = preg_replace_callback('/{\$([a-zA-Z0-9_]+)}/', create_function('$matches', 'global $TMPL; return (isset($TMPL[$matches[1]])?$TMPL[$matches[1]]:"");'), $skin);
|
||||||
|
|
||||||
|
return $skin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
1195
_core/function/sys.func.php
Normal file
236
_core/function/thumb.func.php
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
<?php
|
||||||
|
@ini_set('memory_limit', '128M');
|
||||||
|
|
||||||
|
function ResizeWidth($picture,$smallfile,$rewidth)
|
||||||
|
{
|
||||||
|
$picsize=getimagesize($picture);
|
||||||
|
|
||||||
|
if ($picsize[0] <= $rewidth)
|
||||||
|
{
|
||||||
|
copy($picture,$smallfile);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
$reheight = intval(($rewidth * $picsize[1]) / $picsize[0]);
|
||||||
|
if($picsize[0]>$rewidth)
|
||||||
|
{
|
||||||
|
$width=$picsize[0]-$rewidth;
|
||||||
|
$aa=$width/$picsize[0];
|
||||||
|
$picsize[0]=intval($picsize[0]-$picsize[0]*$aa);
|
||||||
|
$picsize[1]=intval($picsize[1]-$picsize[1]*$aa);
|
||||||
|
}
|
||||||
|
if($picsize[1]>$reheight)
|
||||||
|
{
|
||||||
|
$height=$picsize[1]-$reheight;
|
||||||
|
$bb=$heigh/$picsize[1];
|
||||||
|
$picsize[0]=intval($picsize[0]-$picsize[0]*$bb);
|
||||||
|
$picsize[1]=intval($picsize[1]-$picsize[1]*$bb);
|
||||||
|
}
|
||||||
|
if($picsize[2]==1)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: imgage/gif");
|
||||||
|
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
|
||||||
|
$srcimg=@ImageCreateFromGIF($picture);
|
||||||
|
ImageCopyResized($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagegif($dstimg,$smallfile,100);
|
||||||
|
}
|
||||||
|
elseif($picsize[2]==2)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: images/jpeg");
|
||||||
|
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
|
||||||
|
$srcimg=ImageCreateFromJPEG($picture);
|
||||||
|
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagejpeg($dstimg,$smallfile,100);
|
||||||
|
}
|
||||||
|
elseif($picsize[2]==3)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: images/png");
|
||||||
|
$srcimg=ImageCreateFromPNG($picture);
|
||||||
|
$dstimg = imagecreatetruecolor($rewidth, $reheight);
|
||||||
|
imagealphablending($dstimg, false);
|
||||||
|
imagesavealpha($dstimg,true);
|
||||||
|
$transparent = imagecolorallocatealpha($dstimg, 255, 255, 255, 127);
|
||||||
|
imagefilledrectangle($dstimg, 0, 0, $rewidth, $reheight, $transparent);
|
||||||
|
imagecopyresampled($dstimg, $srcimg, 0, 0, 0, 0, $rewidth, $reheight, ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagepng($dstimg,$smallfile,0);
|
||||||
|
|
||||||
|
}
|
||||||
|
@ImageDestroy($dstimg);
|
||||||
|
@ImageDestroy($srcimg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ResizeHeight($picture,$smallfile,$reheight)
|
||||||
|
{
|
||||||
|
$picsize=getimagesize($picture);
|
||||||
|
|
||||||
|
if ($picsize[1] <= $reheight)
|
||||||
|
{
|
||||||
|
copy($picture,$smallfile);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
$rewidth = intval(($reheight * $picsize[0]) / $picsize[1]);
|
||||||
|
if($picsize[0]>$rewidth)
|
||||||
|
{
|
||||||
|
$width=$picsize[0]-$rewidth;
|
||||||
|
$aa=$width/$picsize[0];
|
||||||
|
$picsize[0]=intval($picsize[0]-$picsize[0]*$aa);
|
||||||
|
$picsize[1]=intval($picsize[1]-$picsize[1]*$aa);
|
||||||
|
}
|
||||||
|
if($picsize[1]>$reheight)
|
||||||
|
{
|
||||||
|
$height=$picsize[1]-$reheight;
|
||||||
|
$bb=$heigh/$picsize[1];
|
||||||
|
$picsize[0]=intval($picsize[0]-$picsize[0]*$bb);
|
||||||
|
$picsize[1]=intval($picsize[1]-$picsize[1]*$bb);
|
||||||
|
}
|
||||||
|
if($picsize[2]==1)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: imgage/gif");
|
||||||
|
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
|
||||||
|
$srcimg=@ImageCreateFromGIF($picture);
|
||||||
|
ImageCopyResized($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagegif($dstimg,$smallfile,100);
|
||||||
|
}
|
||||||
|
elseif($picsize[2]==2)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: images/jpeg");
|
||||||
|
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
|
||||||
|
$srcimg=ImageCreateFromJPEG($picture);
|
||||||
|
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagejpeg($dstimg,$smallfile,100);
|
||||||
|
}
|
||||||
|
elseif($picsize[2]==3)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: images/png");
|
||||||
|
$srcimg=ImageCreateFromPNG($picture);
|
||||||
|
$dstimg=imagecreate($rewidth,$reheight);
|
||||||
|
$black = imagecolorallocate($dstimg, 0x00, 0x00, 0x00);
|
||||||
|
$white = imagecolorallocate($dstimg, 0xFF, 0xFF, 0xFF);
|
||||||
|
$magenta = imagecolorallocate($dstimg, 0xFF, 0x00, 0xFF);
|
||||||
|
imagecolortransparent($dstimg,$black);
|
||||||
|
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagepng($dstimg,$smallfile,0);
|
||||||
|
}
|
||||||
|
@ImageDestroy($dstimg);
|
||||||
|
@ImageDestroy($srcimg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ResizeWidthHeight($picture,$smallfile,$rewidth,$reheight)
|
||||||
|
{
|
||||||
|
$picsize=getimagesize($picture);
|
||||||
|
|
||||||
|
if($picsize[2]==1)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: imgage/gif");
|
||||||
|
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
|
||||||
|
$srcimg=@ImageCreateFromGIF($picture);
|
||||||
|
ImageCopyResized($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagegif($dstimg,$smallfile,100);
|
||||||
|
}
|
||||||
|
elseif($picsize[2]==2)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: images/jpeg");
|
||||||
|
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
|
||||||
|
$srcimg=ImageCreateFromJPEG($picture);
|
||||||
|
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagejpeg($dstimg,$smallfile,100);
|
||||||
|
}
|
||||||
|
elseif($picsize[2]==3)
|
||||||
|
{
|
||||||
|
//@header("Content-Type: images/png");
|
||||||
|
$srcimg=ImageCreateFromPNG($picture);
|
||||||
|
$dstimg=imagecreate($rewidth,$reheight);
|
||||||
|
$black = imagecolorallocate($dstimg, 0x00, 0x00, 0x00);
|
||||||
|
$white = imagecolorallocate($dstimg, 0xFF, 0xFF, 0xFF);
|
||||||
|
$magenta = imagecolorallocate($dstimg, 0xFF, 0x00, 0xFF);
|
||||||
|
imagecolortransparent($dstimg,$black);
|
||||||
|
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
|
||||||
|
Imagepng($dstimg,$smallfile,0);
|
||||||
|
}
|
||||||
|
@ImageDestroy($dstimg);
|
||||||
|
@ImageDestroy($srcimg);
|
||||||
|
}
|
||||||
|
|
||||||
|
function overlay($backpic,$overpic,$x,$y,$w,$h)
|
||||||
|
{
|
||||||
|
$backsize=getimagesize($backpic);
|
||||||
|
$oversize=getimagesize($overpic);
|
||||||
|
|
||||||
|
if ($backsize[2] == 1)
|
||||||
|
{
|
||||||
|
$dstimg=ImageCreateFromGIF($backpic);
|
||||||
|
}
|
||||||
|
elseif ($backsize[2] == 2)
|
||||||
|
{
|
||||||
|
$dstimg=ImageCreateFromJPEG($backpic);
|
||||||
|
}
|
||||||
|
elseif ($backsize[2] == 3)
|
||||||
|
{
|
||||||
|
$dstimg=ImageCreateFromPNG($backpic);
|
||||||
|
}
|
||||||
|
if ($oversize[2] == 1)
|
||||||
|
{
|
||||||
|
$srcimg=ImageCreateFromGIF($overpic);
|
||||||
|
}
|
||||||
|
elseif ($oversize[2] == 2)
|
||||||
|
{
|
||||||
|
$srcimg=ImageCreateFromJPEG($overpic);
|
||||||
|
}
|
||||||
|
elseif ($oversize[2] == 3)
|
||||||
|
{
|
||||||
|
$srcimg=ImageCreateFromPNG($overpic);
|
||||||
|
}
|
||||||
|
Imagecopymerge($dstimg, $srcimg, $x, $y, 0, 0, $w, $h, 100);
|
||||||
|
if ($backsize[2] == 1)
|
||||||
|
{
|
||||||
|
Imagegif($dstimg,$backpic,100);
|
||||||
|
}
|
||||||
|
elseif ($backsize[2] == 2)
|
||||||
|
{
|
||||||
|
Imagejpeg($dstimg,$backpic,100);
|
||||||
|
}
|
||||||
|
elseif ($backsize[2] == 3)
|
||||||
|
{
|
||||||
|
Imagepng($dstimg,$backpic,0);
|
||||||
|
}
|
||||||
|
@ImageDestroy($dstimg);
|
||||||
|
@ImageDestroy($srcimg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 이미지 가로/세로 교정
|
||||||
|
function exifRotate($picture)
|
||||||
|
{
|
||||||
|
$exifData = @exif_read_data($picture);
|
||||||
|
if($exifData['Orientation'] == 6) {
|
||||||
|
$degree = 270; // 시계방향으로 90도 돌려줘야 정상인데 270도 돌려야 정상적으로 출력됨
|
||||||
|
}
|
||||||
|
else if($exifData['Orientation'] == 8) {
|
||||||
|
$degree = 90; // 반시계방향으로 90도 돌려줘야 정상
|
||||||
|
}
|
||||||
|
else if($exifData['Orientation'] == 3) {
|
||||||
|
$degree = 180;
|
||||||
|
}
|
||||||
|
if($degree) {
|
||||||
|
if($exifData['FileType'] == 1) {
|
||||||
|
$source = imagecreatefromgif($picture);
|
||||||
|
$source = imagerotate ($source , $degree, 0);
|
||||||
|
imagegif($source, $picture);
|
||||||
|
}
|
||||||
|
else if($exifData['FileType'] == 2) {
|
||||||
|
$source = imagecreatefromjpeg($picture);
|
||||||
|
$source = imagerotate ($source , $degree, 0);
|
||||||
|
imagejpeg($source, $picture);
|
||||||
|
}
|
||||||
|
else if($exifData['FileType'] == 3) {
|
||||||
|
$source = imagecreatefrompng($picture);
|
||||||
|
$source = imagerotate ($source , $degree, 0);
|
||||||
|
imagepng($source, $picture);
|
||||||
|
}
|
||||||
|
@ImageDestroy($source);
|
||||||
|
@ImageDestroy($source);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
168
_core/function/zip.class.php
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
<?php
|
||||||
|
class ZipFile
|
||||||
|
{
|
||||||
|
var $datasec = array();
|
||||||
|
var $ctrl_dir = array();
|
||||||
|
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
|
||||||
|
var $old_offset = 0;
|
||||||
|
var $proc_count=0;
|
||||||
|
var $makeDirCount;
|
||||||
|
|
||||||
|
function add_dir($name)
|
||||||
|
{
|
||||||
|
$name = str_replace("\\", "/", $name);
|
||||||
|
|
||||||
|
$fr = "\x50\x4b\x03\x04";
|
||||||
|
$fr .= "\x0a\x00";
|
||||||
|
$fr .= "\x00\x00";
|
||||||
|
$fr .= "\x00\x00";
|
||||||
|
$fr .= "\x00\x00\x00\x00";
|
||||||
|
|
||||||
|
$fr .= pack("V",0);
|
||||||
|
$fr .= pack("V",0);
|
||||||
|
$fr .= pack("V",0);
|
||||||
|
$fr .= pack("v", strlen($name) );
|
||||||
|
$fr .= pack("v", 0 );
|
||||||
|
$fr .= $name;
|
||||||
|
$fr .= pack("V", 0);
|
||||||
|
$fr .= pack("V", 0);
|
||||||
|
$fr .= pack("V", 0);
|
||||||
|
|
||||||
|
$this -> datasec[] = $fr;
|
||||||
|
$new_offset = strlen(implode("", $this->datasec));
|
||||||
|
|
||||||
|
$cdrec = "\x50\x4b\x01\x02";
|
||||||
|
$cdrec .="\x00\x00";
|
||||||
|
$cdrec .="\x0a\x00";
|
||||||
|
$cdrec .="\x00\x00";
|
||||||
|
$cdrec .="\x00\x00";
|
||||||
|
$cdrec .="\x00\x00\x00\x00";
|
||||||
|
$cdrec .= pack("V",0);
|
||||||
|
$cdrec .= pack("V",0);
|
||||||
|
$cdrec .= pack("V",0);
|
||||||
|
$cdrec .= pack("v", strlen($name) );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$ext = "\x00\x00\x10\x00";
|
||||||
|
$ext = "\xff\xff\xff\xff";
|
||||||
|
$cdrec .= pack("V", 16 );
|
||||||
|
$cdrec .= pack("V", $this -> old_offset );
|
||||||
|
$cdrec .= $name;
|
||||||
|
|
||||||
|
$this -> ctrl_dir[] = $cdrec;
|
||||||
|
$this -> old_offset = $new_offset;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_file($data, $name)
|
||||||
|
{
|
||||||
|
$fp = fopen($data,"r");
|
||||||
|
$data = fread($fp,filesize($data));
|
||||||
|
fclose($fp);
|
||||||
|
$name = str_replace("\\", "/", $name);
|
||||||
|
$unc_len = strlen($data);
|
||||||
|
$crc = crc32($data);
|
||||||
|
$zdata = gzcompress($data);
|
||||||
|
$zdata = substr ($zdata, 2, -4);
|
||||||
|
$c_len = strlen($zdata);
|
||||||
|
$fr = "\x50\x4b\x03\x04";
|
||||||
|
$fr .= "\x14\x00";
|
||||||
|
$fr .= "\x00\x00";
|
||||||
|
$fr .= "\x08\x00";
|
||||||
|
$fr .= "\x00\x00\x00\x00";
|
||||||
|
$fr .= pack("V",$crc);
|
||||||
|
$fr .= pack("V",$c_len);
|
||||||
|
$fr .= pack("V",$unc_len);
|
||||||
|
$fr .= pack("v", strlen($name) );
|
||||||
|
$fr .= pack("v", 0 );
|
||||||
|
$fr .= $name;
|
||||||
|
$fr .= $zdata;
|
||||||
|
$fr .= pack("V",$crc);
|
||||||
|
$fr .= pack("V",$c_len);
|
||||||
|
$fr .= pack("V",$unc_len);
|
||||||
|
|
||||||
|
$this -> datasec[] = $fr;
|
||||||
|
$new_offset = strlen(implode("", $this->datasec));
|
||||||
|
|
||||||
|
$cdrec = "\x50\x4b\x01\x02";
|
||||||
|
$cdrec .="\x00\x00";
|
||||||
|
$cdrec .="\x14\x00";
|
||||||
|
$cdrec .="\x00\x00";
|
||||||
|
$cdrec .="\x08\x00";
|
||||||
|
$cdrec .="\x00\x00\x00\x00";
|
||||||
|
$cdrec .= pack("V",$crc);
|
||||||
|
$cdrec .= pack("V",$c_len);
|
||||||
|
$cdrec .= pack("V",$unc_len);
|
||||||
|
$cdrec .= pack("v", strlen($name) );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$cdrec .= pack("v", 0 );
|
||||||
|
$cdrec .= pack("V", 32 );
|
||||||
|
$cdrec .= pack("V", $this -> old_offset );
|
||||||
|
|
||||||
|
$this -> old_offset = $new_offset;
|
||||||
|
|
||||||
|
$cdrec .= $name;
|
||||||
|
$this -> ctrl_dir[] = $cdrec;
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_files($files)
|
||||||
|
{
|
||||||
|
foreach($files as $file)
|
||||||
|
{
|
||||||
|
$file = str_replace("//", "/", $file);
|
||||||
|
if (is_file($file))
|
||||||
|
{
|
||||||
|
$this->add_file($file,$file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_dirs($dirs)
|
||||||
|
{
|
||||||
|
$files = $this->read_dir($dirs);
|
||||||
|
$this->add_files($files);
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_dir($dir)
|
||||||
|
{
|
||||||
|
$array = array();
|
||||||
|
$d = dir($dir);
|
||||||
|
while (false !== ($entry = $d->read()))
|
||||||
|
{
|
||||||
|
if($entry!='.' && $entry!='..')
|
||||||
|
{
|
||||||
|
$entry = $dir.'/'.$entry;
|
||||||
|
if(is_dir($entry))
|
||||||
|
{
|
||||||
|
$array[] = $entry;
|
||||||
|
$array = array_merge($array, $this->read_dir($entry));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$array[] = $entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$d->close();
|
||||||
|
return $array;
|
||||||
|
}
|
||||||
|
|
||||||
|
function file()
|
||||||
|
{
|
||||||
|
$data = implode('', $this -> datasec);
|
||||||
|
$ctrldir = implode('', $this -> ctrl_dir);
|
||||||
|
|
||||||
|
return
|
||||||
|
$data .
|
||||||
|
$ctrldir .
|
||||||
|
$this -> eof_ctrl_dir .
|
||||||
|
pack("v", sizeof($this -> ctrl_dir)) .
|
||||||
|
pack("v", sizeof($this -> ctrl_dir)) .
|
||||||
|
pack("V", strlen($ctrldir)) .
|
||||||
|
pack("V", strlen($data)) . "\x00\x00";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
BIN
_core/images/androidscroll.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
_core/images/black-1024x576.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
_core/images/blank.gif
Normal file
|
After Width: | Height: | Size: 43 B |
BIN
_core/images/file/big/ai.gif
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
_core/images/file/big/alz.gif
Normal file
|
After Width: | Height: | Size: 964 B |
BIN
_core/images/file/big/asf.gif
Normal file
|
After Width: | Height: | Size: 943 B |
BIN
_core/images/file/big/asp.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/asx.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
_core/images/file/big/avi.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
_core/images/file/big/bmp.gif
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
_core/images/file/big/cgi.gif
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
_core/images/file/big/class.gif
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
_core/images/file/big/css.gif
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
_core/images/file/big/db.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
_core/images/file/big/dir.gif
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
_core/images/file/big/dll.gif
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
_core/images/file/big/doc.gif
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
_core/images/file/big/eml.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/exe.gif
Normal file
|
After Width: | Height: | Size: 1019 B |
BIN
_core/images/file/big/fla.gif
Normal file
|
After Width: | Height: | Size: 839 B |
BIN
_core/images/file/big/flv.gif
Normal file
|
After Width: | Height: | Size: 939 B |
BIN
_core/images/file/big/gif.gif
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
_core/images/file/big/gz.gif
Normal file
|
After Width: | Height: | Size: 971 B |
BIN
_core/images/file/big/hlp.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/htm.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
_core/images/file/big/html.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
_core/images/file/big/hwp.gif
Normal file
|
After Width: | Height: | Size: 905 B |
BIN
_core/images/file/big/ico.gif
Normal file
|
After Width: | Height: | Size: 854 B |
BIN
_core/images/file/big/ini.gif
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
_core/images/file/big/java.gif
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
_core/images/file/big/jpeg.gif
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
_core/images/file/big/jpg.gif
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
_core/images/file/big/js.gif
Normal file
|
After Width: | Height: | Size: 946 B |
BIN
_core/images/file/big/jsp.gif
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
_core/images/file/big/mid.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/mov.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
_core/images/file/big/mp3.gif
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
_core/images/file/big/mpeg.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
_core/images/file/big/mpg.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
_core/images/file/big/pcx.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/php.gif
Normal file
|
After Width: | Height: | Size: 941 B |
BIN
_core/images/file/big/php3.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
_core/images/file/big/pl.gif
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
_core/images/file/big/png.gif
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
_core/images/file/big/ppj.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/ppt.gif
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
_core/images/file/big/psd.gif
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
_core/images/file/big/ra.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/ram.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/rar.gif
Normal file
|
After Width: | Height: | Size: 984 B |
BIN
_core/images/file/big/reg.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/swf.gif
Normal file
|
After Width: | Height: | Size: 970 B |
BIN
_core/images/file/big/tar.gif
Normal file
|
After Width: | Height: | Size: 999 B |
BIN
_core/images/file/big/tif.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
_core/images/file/big/trz.gif
Normal file
|
After Width: | Height: | Size: 983 B |
BIN
_core/images/file/big/txt.gif
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
_core/images/file/big/unknown.gif
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
_core/images/file/big/wav.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |